Repository navigation
Conversation
projects archive and projects unarchive reach the SDK's ArchiveProject and UnarchiveProject, the project endpoints recordings archive doesn't use. They answer 403 where the admin pro pack restricts archiving, and unarchive also restores from the trash, answering 507 at the account's project limit.
|
🤖 @codex review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
🛡️ Codex Security Review · Automatically triggeredSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4451495f8c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
unarchive also restores from the trash, and archiving a project it brought back from there would not put it back. archive still offers unarchive.
|
🤖 @codex review |
|
Codex Review: Didn't find any major issues. Can't wait for the next one! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
🛡️ Codex Security Review · Automatically triggeredSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
|
🤖 Converged on
|
basecamp projects archive <id>takes a project off the active list, andbasecamp projects unarchive <id>brings it back.Why
[CLI] Archive and unarchive a project: the SDK has had these two operations since basecamp-sdk#679, and the coverage report (basecamp-sdk#1055) lists them as unreached by the CLI.
recordings archivegoes through the genericArchiveRecording, not the project endpoints, which are the ones that answer 403 where the admin pro pack restricts archiving.What changed
ArchiveProjectbasecamp projects archive <id>UnarchiveProjectbasecamp projects unarchive <id>{id, status}. Each offersprojects showas a follow-up, andarchivealso offersprojects unarchiveto undo it, carrying--profileand--accountwhere the run needed them.unarchiveoffers no undo, because the project may have come from the trash and archiving it wouldn't put it back. The endpoints return 204 with no body, so neither re-reads the project;projects deleteanswers the same way.unarchivealso restores a project from the trash, as the API does, and fails withlimit_exceededat the account's project limit. Its help and agent notes say both, as doarchive's for the admin pro pack's 403..surface, anAPI-COVERAGE.mdrow with the summary counts, and a short note inskills/basecamp/SKILL.md. That note is two lines because the skill has a 16 KB limit and was 156 bytes under it; the rest is in leaf help.Builds on
Main at
5f88c4f2, whose pinned SDK (v0.33.0) has both operations. No bump in this PR.Left out
ArchiveRecording, the third operation the planner found on the card: main already reaches it throughrecordings archive.Tests
internal/commands/projects_archive_test.go): the request each command sends, its output and follow-ups (none offeringarchiveafterunarchive), follow-ups keeping scope, the 403 and the 507 reported as errors with nothing on stdout, a bad ID refused before any request.e2e/projects.bats): missing and non-numeric IDs, the help text on restoring from the trash.e2e/smoke/smoke_projects_write.bats): archive then unarchive in the project lifecycle, checked withprojects show. Written but not run: smoke needs a live account.make -k checkon thelio passes everything exceptTestHardenConfigDirininternal/cli(symlinked ancestor is not followed,regular file is not chmod'd). Those two subtests fail the same way on a clean checkout of5f88c4f2on that machine, this PR touches nothing there, and main's CI is green, so remote CI on this PR is the check for them. They're worth a separate look: the test exists to prove hardening doesn't follow a symlinked ancestor or chmod a regular file.Gap card
https://app.basecamp.com/2914079/buckets/48521764/card_tables/cards/10447983764