Repository navigation
🤖 refactor: split createUnderTaskTreeLifecycleLock, part 1: queued branch - #7702
Conversation
…anch Moves the queued branch of TaskService.createUnderTaskTreeLifecycleLock into createQueuedTask and its config edit into appendQueuedTaskEntry. The reserveDesktop closure becomes reserveTaskDesktop. The decided values travel in one readonly TaskCreatePlan record (stage interfaces TaskCreateRequest, TaskCreateParent and TaskCreatePlacement for the later parts). The method still holds the global mutex and calls `return await this.createQueuedTask`, so the lock releases only after the queued result settles. No behaviour change: same awaits, same calls in the same order.
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 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.3k tokens (28% cached) All 14 tests in 9 files
e2e 0.20.0 · 1m 12s · 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 · 18.6s · 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 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 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. Breezy! 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 1 of 5: splits the queued branch of
TaskService.createUnderTaskTreeLifecycleLockin place into named steps, with no behaviour change. The method drops from CC 122 to CC 113. On top of the test PR #7701. 329 changed lines.The parts go from the end of the method to its start, as in the
drainTerminalAttentionsplit (#7697 to #7699). The code that stays inline must be the start of the method. If a part split the start first, the whole remaining tail had to move into one new step, and the CRAP gate refuses a new function above CC 8.Steps in this part
createQueuedTaskpersists the queued row, announces the task and schedules the queue.appendQueuedTaskEntryis the config-edit callback, now a method.reserveTaskDesktopis the closure that reserves the desktop owner, now a method.TaskCreateRequest,TaskCreateParent,TaskCreatePlacementandTaskCreatePlan. Each one builds on the last with spread.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