This repository was archived by the owner on Oct 13, 2026. It is now read-only.
Repository navigation
fix: self-contained dispatch packet, dispatcher network, safe baseline proof (#144) - #145
Merged
Merged
Conversation
lukemaj
force-pushed
the
fix/144-routing-only-dispatch
branch
from
September 29, 2026 14:20
4cf075e to
4616eca
Compare
…e proof (#144) - submit fetches the Issues a task names (with comments) into the dispatcher prompt, between the task and the reply protocol; the dispatcher makes no tool calls unless a routing fact is missing. A resubmit never replaces the stored context; Issues over the limit are named; the block is fenced as data, not instructions. AgentsMD instructions and skills are unchanged. - Dispatcher and reviewer threads run full-access: T3 auto is Codex workspace-write without network, and an unanswered approval on OpenCode and Grok. - The baseline proof leaves release-check steps out of a plain && chain (task or dispatcher proof); candidates still run the full command. - Tests pin exit-status classification of the baseline. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
lukemaj
force-pushed
the
fix/144-routing-only-dispatch
branch
from
September 29, 2026 14:25
4616eca to
4097455
Compare
Keep 0.42.0 as the next minor above main's 0.41.1 and keep both CHANGELOG entries. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This was referenced Sep 29, 2026
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
What: Prism dispatch starts its first worker in 26 s instead of 16 min on a small real job, dispatchers and reviewers can reach GitHub, and the baseline proof no longer runs release checks.
Why: Dispatchers had no network (T3
auto= Codexworkspace-write, network off), so they spent minutes onghfailures, tool discovery, and target-repo reads; a dispatcher-chosen baseline proof includedrelease-check, which cannot pass on a WIP base (the #164 rc=19 block).So what: The user decides whether dispatch and review keep
full-accessor move to a Chromeria network-onlyauto(open Luna P1), then merges and installs 0.42.0; AgentsMD role scoping is separate planner work.Part of #144 (not #143; its cause is stated below).
Changes
submitfetches every Issue the task names (owner/repo#N, Issue URL,gh issue view N -R owner/repo) with comments intooutputs/<id>/issue-context.md. The dispatcher prompt carries it between TASK and the reply protocol. The protocol says to use it and make no tool calls unless a routing fact is missing. AgentsMD instructions and skills are untouched.runner/t3exec.pyT3_RUNTIME_MODESfordispatchandreviewmoves fromautotofull-access. Evidence from the T3 fork (chromeriamain + PR Make release proof independent of installed agent plugins #70):auto-> threadworkspace-write, approvalon-request,auto_review, turn policy{type: "workspaceWrite"}whosenetworkAccessdefaults to false (CodexSessionRuntime.ts:522-547, 570-580; generated schemanetworkAccess ... default: false). It overridessandbox_mode = "danger-full-access"in~/.codex/config.toml.auto-> permission modeauto(classifier), network works (ClaudeAdapter.ts:4867-4871).auto-> everybash,webfetch,websearchisask, with no reviewer (opencodeRuntime.ts:504-538), soghwaits on an approval nobody grants.full-accessauto-approves;autosends every permission request to a person (GrokAdapter.ts:1166).readOnly+networkAccessexists in the schema, but T3'sapproval-requiredmaps toreadOnlywithout network and withuntrustedapprovals). So the smallest fix isfull-access, as workers already run. Both roles are told not to edit, and the review gate already discards a verdict whose reviewer changed the workspace.release-checksteps out of a plain&&chain (task or dispatcher-bound proof; recorded asexcluded); every candidate still runs the full command. Baseline ordering is unchanged: it already runs before dispatch when the task carriesproof. Classification was already exit-status based; new tests pin it (the rc=19 wasversionctl release-checkfailingTAG_CONFLICTafter 311 tests passed, not a misread).<<<ISSUES>>>...<<<END_ISSUES>>>) as GitHub data, not instructions; Issue text cannot close the fence.Proof
python3 scripts/test.pyon4097455:Ran 374 tests ... OK;python3 -m compileall -q runner scripts tests: OK; CIproofpasses.tests/test_issue144.py: exit-status classification (warnings plus OK is pass; OK then exit 19 isfailedrc 19; failure text with exit 0 is pass),release-checkexclusion for task and dispatcher-bound proofs (the #164 shape passes with the release step excluded), Issue refs, fetched Issue body and comments in the prompt before the protocol, unreadable Issue recorded, resubmit keeps context, over-limit Issues named, and full-access for dispatch and review.Submit-to-first-worker timing, one small real job
Same plain-text packet (one sentence in
RUNNER.md, referencing #144), lanesmall, dispatchert3:codex:gpt-6-luna@maxboth times. Each job was cancelled once its first worker thread started. The disposable worktrees were removed, and nothing was pushed.measure-144-beforeproject-direction inspect, hashes,gh issue view(no network), operations refs, VISION/MISSION/OBJECTIVE, repo workflows,git ls-remotemeasure-144-after2A first after run (
measure-144-after) had the Issues after the protocol. There, the dispatcher routed in 40 s, but twice in a row it ended its envelope with a stray}(luna_missing_action: Extra data), a failure never recorded in the runner DB before. Moving the Issues ahead of the protocol fixed it in the timed run. This is one sample per side, so the timings are indicative, not a median. The after run used an intermediate build that also read aProof:text line, so its 1.6 s baseline ran before dispatch; that parsing was later dropped from scope. It accounts for about 2 s, not the gap.Not fixed here: #143 cause
runner/core.py:3293verify_pr_for_completionrefuses every PR whose live state is notOPEN("only an open PR completes a job"). Task completion requirements know onlydraft_pr_allowedand have no notion of merge authority, so an authorized merge can never complete.Review
Luna max (
gpt-6-luna, reviewer thread) on4cf075e: REQUEST_CHANGES._resume_luna_via_t3only posts into the same saved dispatcher thread (never forks), so the first prompt with the Issues stays in its history, like the task text.full-accessallows external side effects that the workspace check cannot see (P1). Workers already runfull-accessover the same diff, so the added exposure is small. The tighter alternative is a Chromeria change (auto->workspaceWritewithnetworkAccess: true), which covers Codex only; OpenCode and Grok would still wait on approvals.Luna max re-review on
4616eca: REQUEST_CHANGES. It cleared both fixes, the resume disposition, and the reviewer tradeoff as described. One P1 is open: fetched Issue text reaches afull-accessdispatcher, and the only boundary is prompt text.4097455adds the data fence, which is still prompt-level. A technical boundary needs a network-without-writes mode in Chromeria (Codex only). That is a user decision between:full-accessfor dispatch and review, as workers already run over the same Issue and diff; orautogetsnetworkAccess: trueand revert these roles toauto, leaving OpenCode and Grok dispatchers waiting on approvals.Not re-reviewed after
4097455pending that decision.Elon record
ghwithout network; baseline before dispatch without final-candidate checks (user correction); keep AgentsMD on the dispatcher and keep effort at max (user corrections).proof); review routing and merge handling; a Chromeria change for a network-only mode.release-checkexit 19), tracedautothrough the T3 fork's four adapters, confirmed the after dispatcher's Codex session reportsdanger-full-accessand made 0 tool calls, timed both runs fromjobs.dbevents, and ran the full suite.🤖 Generated with Claude Code