Repository navigation
Runner split seams 6–10: claude sessions, verify gate, quota, notices, permissions (#1447, stacked on #1458) - #1459
Merged
Conversation
Deny, refused decisions, stale ids, stopRun, restart, cross-thread and changed-patch approvals all leave the merge blocked with nothing landed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mock.timers drives the 30-minute window; no product seam needed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A merge that fails after the gate (pre-commit hook) consumes the approval; the identical retry raises a fresh card instead of reusing it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…#1447) Seam 6. claudeSessions, the CLAUDE_* constants, disposeClaudeSession, retireClaudeSession and scheduleClaudeIdleReap move verbatim. startClaudeRun and stopAll keep reading claudeSessions and CLAUDE_ACK_MS through the factory's return; finishRunningSubagents reaches the factory via ctx. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…-gate.js (#1447) Seam 7. shouldVerify, worktreeHeadSha, lastRunIdFor, nextVerifyAttempt, settleVerifyCrash, runVerifyGate, afterFailedTurn, afterSuccessfulTurn and finishSuccessfulTurn move verbatim. startRun, maybeDrainQueued, queueOrchNotice, flushOrchNotices and sweepDoneWorkers are read lazily from ctx. finishSuccessfulTurn is set on ctx right after the factory so createAskRuns still destructures it eagerly. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#1447) Seam 8. quotaTimers, cancelQuotaWake, lastUserOnThread, tryQuotaFailover, scheduleFailoverResume, fireFailoverResume, scheduleQuotaWake, fireQuotaWake, resumeQuotaWait, refreshQuotaWait and refreshAllQuotaWaits move verbatim; startRun is read lazily from ctx. markRunFailed stays in runner.js and calls tryQuotaFailover / scheduleQuotaWake from the factory's return. stopAll clears the timers through cancelAll(), and the boot refreshAllQuotaWaits() still runs after the factory is built. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…r-orch-notices.js (#1447) Seam 9. orchNotices, autoTurns, recentlyReleasedCodex, codexReleaseFlush, codexParkNotified, the notice and Codex park/release functions, sweepCrew, sweepDoneWorkers, stopCrew and isAutoTurn move verbatim, together with MAX_WORKERS_PER_ORCHESTRATOR and the CODEX_* notice constants (used only here). startRun is read lazily from ctx; every setTimeout/clearTimeout is unchanged. clearRun keeps calling noteCodexRelease and startRun keeps reading autoTurns/codexSessionHeld via the factory's return; stopAll clears the timers and Maps through cancelAll(). The factory runs before the boot sweepCrew loop, and queueOrchNotice/flushOrchNotices/sweepDoneWorkers are put on ctx for the verify gate's lazy reads. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…er-permissions.js (#1447) Seam 10. ciWorkflowSignOffs, planPromptHandled, getPendingPermission, pendingPlanAsPermission, handleCodexServerRequest, respondCodexPermission, respondPermission, askUser, requestCiWorkflowSignOff, clearQuestion, maybePersistPlanApproval and respondPersistedPlan move verbatim, with PLAN_STORE (used only here). No body edits. pushDetail resolves getPendingPermission and startRun reads ciWorkflowSignOffs through the factory's return, bound in createRunner scope before any of them can run. isAutoTurn comes from the notices factory via ctx. The sign-off Map stays private to createRunner and keeps failing closed (mutation-checked against ci-workflow-signoff.test.js). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
This was referenced Oct 5, 2026
currentbits
changed the base branch from
coder/runner-split-steps-2-5-dfc14a
to
main
October 5, 2026 11:02
…s (incl. the auto-turn case from #1457) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Round 3, seams 6–10 of the
createRunnersplit (#1447), followingdocs/superpowers/specs/2026-10-04-runner-split-design.mdand the seam convention inelectron/runner-watchdogs.js.Stacked on #1458, which is stacked on #1456 and #1454. The base of this branch also carries the three safety-test commits from #1457 (cherry-picked), so the moved code was under those tests throughout. Merge #1457 first; the duplicate commits then merge as identical content.
One commit per seam; the full electron suite passed after each.
runner-claude-sessions.jsclaudeSessions, theCLAUDE_*constantsrunner-verify-gate.jsrunner-quota-wait.jsquotaTimers,cancelAll()runner-orch-notices.jsorchNotices,autoTurns, Codex park/release Maps,cancelAll()runner-permissions.jsciWorkflowSignOffs,planPromptHandledrunner.js: 8,345 → 6,738 lines. It started at 9,321 before round 3.Checked
ctx.startRun,ctx.flushOrchNotices,ctx.queueOrchNotice,ctx.sweepDoneWorkers,ctx.maybeDrainQueued. They're attached viaObject.assign(ctx, …)andctx.x = x, plus the twocancelAll()wrappers.const {…} = ctxexists on ctx at the factory call (checked by script).ctx.isAutoTurnis attached before the permissions factory, so the CI sign-off check always has the real function.stopAll: the only change is callingcancelAllQuotaWakes()andcancelAllOrchNotices(). Those run the exact loops and.clear()calls that used to be inline, in the same order.refreshAllQuotaWaits().runner-permissions.js/runner-claude-sessions.jsand reverted:deleteremovedisAutoTurncheck removed1095b192), which this PR picks up once #1457 is on main.npm run typecheckis clean.Next: seam 11, the per-provider runs (about 4,200 lines).
🤖 Generated with Claude Code