Repository navigation
🤖 refactor: split createUnderTaskTreeLifecycleLock, part 4: launch and materialize - #7705
Conversation
…d materialize Moves the direct launch of TaskService.createUnderTaskTreeLifecycleLock into launchTask, and the materialize closure into materializeTaskCheckout with three plain helpers: shareParentCheckout (isolation: none), buildTaskForkOptions (the orchestrateFork options) and appendLaunchedTaskEntry (the persist edit). materializeTaskCheckout keeps every await of the closure (orchestrateFork, the base-SHA read, editConfig, the parent emit) in its own body, so beginOwnedTaskAttempt still runs in the editConfig continuation. launchTask still passes the materialize call to reserveTaskDesktop and runs failTaskLaunch only after the desktop gate settles. The method calls `return await this.launchTask`, 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. Keep them coming! 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.4k tokens (27% cached) All 14 tests in 9 files
e2e 0.20.0 · 1m 17s · web · run artifacts 🟢 e2e Electron stories (Haiku): 3 passed3 agent steps · 3 model calls · 8.0k tokens (32% cached) All 3 tests in 3 files
e2e 0.20.0 · 20.3s · 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. Already looking forward to the next diff. 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. More of your lovely PRs please. 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 4 of 5: splits the launch branch and the
materializeclosure ofTaskService.createUnderTaskTreeLifecycleLockin place, with no behaviour change. The method drops from CC 78 to CC 61. On top of part 3. 440 changed lines.Steps in this part
launchTaskkeeps thereserveTaskDesktop(materialize)call shape, so the desktop gate ends beforefailTaskLaunchruns.materializeTaskCheckoutkeeps every await of the old closure in its own body. It returns the whole checkout record, which has 3 more fields than before. Nothing reads them.shareParentCheckoutandbuildTaskForkOptionsprepare the checkout.appendLaunchedTaskEntryis the config-edit callback. After theeditConfigawait,beginOwnedTaskAttemptruns in the same continuation, as before.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