Repository navigation
Retire optional project operations before archive and deletion - #10633
PhilipJohnBasile wants to merge 4 commits into
Conversation
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. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 31327e51f7
ℹ️ 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".
|
The lifecycle entry point in studio/backend/core/project_retirement.py only ever resolves to the no-feature path here, since core/agent_workspace does not exist on main yet, and it also turns any RuntimeError or OSError from the project upsert into a 409. Could you land it together with the first consumer, or narrow the new except clause so unrelated write failures keep their current status? |
|
Sure! Here to help :)Sent from my iPhoneOn Sep 9, 2026, at 7:03 PM, Daniel Han ***@***.***> wrote:danielhanchen left a comment (unslothai/unsloth#10633)
The lifecycle entry point in studio/backend/core/project_retirement.py only ever resolves to the no-feature path here, since core/agent_workspace does not exist on main yet, and it also turns any RuntimeError or OSError from the project upsert into a 409. Could you land it together with the first consumer, or narrow the new except clause so unrelated write failures keep their current status?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: ***@***.***>
|
Project archive and deletion must wait for optional project operations to retire before removing their workspace or database record. Add one lifecycle entry point that drains tasks first, then chooses the installed Git retirement owner or verification retirement when Git is absent, releasing admission after success or failure.
With no optional feature installed, archive/delete behavior remains available. Retirement refusal alone maps to HTTP 409 and preserves the project. POST/PATCH storage failures retain their existing server-error behavior; unrelated RuntimeError/OSError exceptions from upsert/update are not converted to conflicts. The existing project-folder error handling is preserved. POST archive acquires retirement before its upsert, including newly created IDs, and holds it through the write.
This extracts the shared chat-history integration requested in #10594 and #10585. It adds no Git, task or verification execution. Optional task draining precedes Git's exclusive fence so active tasks can finish their current Git operations.
At head
10eec87e411ee03fed1999fd3df3971bf0c8d632, 63 standalone lifecycle/chat-route tests passed, including POST/PATCH storage failures for active and archived projects and fence release after failed writes. The updated head is also pinned in the full task/command native compositions (#10658 and #10672), which exercise active task/worktree retirement. Formatting and diff checks passed.