Repository navigation
🤖 refactor: split createUnderTaskTreeLifecycleLock, part 3: sanitize, announce and send - #7704
Conversation
… announce and send Moves the launch tail of TaskService.createUnderTaskTreeLifecycleLock, after the checkout materialized, into a chain of three steps: sanitizeTaskLaunchCheckout, announceAndInitTask and sendTaskLaunchPrompt. The materialized checkout travels in a readonly TaskLaunchCheckout record. Each step starts the next in the same tick as its own last await, so the sanitize still ends before the metadata emit, and the send admission still runs in the same continuation as registerExternalBackgroundInit. The method calls `return await this.sanitizeTaskLaunchCheckout`, so the global mutex releases only after the launch result settles.
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 review |
|
Codex Review: Didn't find any major issues. Nice work! 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. |
🟢 e2e stories (Haiku): 14 passed22 agent steps · 7 replayed from cache · 15 model calls · 46.5k tokens (27% cached) All 14 tests in 9 files
e2e 0.20.0 · 1m 14s · web · run artifacts 🟢 e2e Electron stories (Haiku): 3 passed3 agent steps · 3 model calls · 7.9k tokens (33% cached) All 3 tests in 3 files
e2e 0.20.0 · 19.1s · electron · run artifacts 🟢 e2e agent repros (Haiku): no tests selectedSpend: $0.00 of the $1.00 cap (proxy ledger) e2e 0.20.0 · 5.3s · 2 targets (web, phone) · run artifacts |
|
@codex review |
|
Codex Review: Didn't find any major issues. 👍 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. |
|
@codex review |
|
Codex Review: Didn't find any major issues. 👍 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. |
Summary
Part 3 of 5: splits sanitize, announce and the launch send out of
TaskService.createUnderTaskTreeLifecycleLockin place, with no behaviour change. The method drops from CC 88 to CC 78. On top of part 2. 94 changed lines. The moved code keeps its indentation, so git sees few changes.Steps in this part
sanitizeTaskLaunchCheckoutstill runs before the metadata emit.announceAndInitTaskemits the metadata, reads the secrets, then callsregisterExternalBackgroundInit.sendTaskLaunchPromptmakes the send admission with no await before it, in the same continuation asregisterExternalBackgroundInit.Rules every part keeps
await using _lock = await this.mutex.acquire(). Inside that scope, a barereturn promisereleases the global mutex before the promise settles. So every call from the method to a step isawaitorreturn await, and no step acquires the mutex, which is not reentrant.make crap-checkagainst the parent commit reports 0 violations, with and without coverage. Every new function scores CC 8 or less.bun teston the taskService, ledger, workspaceTurnManager, workflows, tools and workspaceService suites: 4,968 pass, 0 fail. These suites include the 27 tests from 🤖 tests: cover createUnderTaskTreeLifecycleLock paths before the split #7701.Generated with
xum• Model:anthropic:claude-opus-5-5• Thinking:high• Cost:$182.90