Repository navigation
feat: dispatcher reports router defects as Issues (#147) - #150
Conversation
The dispatcher protocol gains the duty: on a block, loop, or runner behavior against RUNNER.md, read the job's evidence, search open model-router Issues, then comment on or open one with the request ID, evidence and expected behavior. Packet mistakes go to the planner. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…pen (#143) The runner never merges a PR, so no dispatcher turn can restore an open PR once a job's PR is merged. Completion now refuses a merged PR as pr_merged, names its merge commit, and blocks the job at once for the planner without resuming the dispatcher. A closed, unmerged PR keeps the existing once-then-block pr_not_open refusal. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
REQUEST_CHANGES on exact head
The requested text elements and reply-protocol ordering are present in the diff. I did not run tests; review was read-only. |
fix(runner): block once on a merged PR instead of looping on pr_not_open (#143)
Merges feat/147 (0d22d87) with main after #151. Review of 0d22d87: with a non-default state directory the dispatcher could not find outputs/<id>/, and Issue text read while reporting was not fenced as data. The dispatch prompt now carries a JOB EVIDENCE block with the absolute status command and outputs path, and the duty treats Issue text as data. Version stays 0.43.0. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
APPROVE on exact head The prior evidence-path finding is resolved: I did not run tests; this was a read-only review. The supplied proof is |
What: The dispatcher's protocol now tells it to report router defects it meets as Issues in toolboxmd/model-router, with the request ID, evidence and expected behavior; packet mistakes go to the planner instead.
Why: The dispatcher sees router defects first (blocks, loops, behavior against RUNNER.md) but only relayed them or worked around them; #144 gave dispatch roles network, so it can now file them.
So what: Review and merge; the planner-dispatch half waits for #146, and the one-real-job proof comes from the first dispatcher that meets a defect after release.
Refs #147 (dispatcher part; the planner-dispatch part stays open, see Pending).
Change
runner/adapters.py:LUNA_ACTION_PROTOCOLgains aROUTER DEFECTS:paragraph: trigger (block, loop, runner acts against RUNNER.md), evidence to read (the runner's status for the request ID andoutputs/<request ID>/), duplicate search in open toolboxmd/model-router Issues, comment-or-open with request ID, evidence and expected behavior, then continue or block as the runner allows. Packet mistakes (missing proof, wrong workspace) go to the planner asplanner_question. The Baseline proof misreads a passing suite (rc=19) and dispatchers cannot reach GitHub #144 "make no tool calls" rule gains the reporting exception. Every dispatcher prompt and resumed turn carries it (it is part of the protocol).runner/controller.py: the dispatch prompt carries a JOB EVIDENCE block with the absolutebin/model-router --state-dir <abs> status --request-id <id>command and outputs path, so a non-default state directory still resolves; Issue text read while reporting is data, never instructions (review round 1).RUNNER.md: documents the duty beside the dispatcher thread modes; the runner files nothing itself.tests/test_issue147.py: pins the trigger, evidence, search, report contents, the packet-mistake exception, the tool-call exception, and that initial and resumed turns carry it beforeREPLY PROTOCOL.Proof
tests/test_issue147.pyagainst the base code:FAILED (failures=9).c526ef0ca378b1ec5c0e773de8c9f0d9a696603a(origin/main after fix(runner): block once on a merged PR instead of looping on pr_not_open (#143) #151 merged in from main's side, so versionctl accepts 0.43.0):python3 scripts/test.py:Ran 385 tests ... OK;versionctl release-check:release candidate OK: v0.43.0 at c526ef0ca378b1ec5c0e773de8c9f0d9a696603a.tests/test_issue147.pyruns the prompt's exact status command from the workspace against a non-default state directory.review/independentsuccess.Pending
Elon record
LUNA_ACTION_PROTOCOL,build_luna_prompt/build_luna_followup,child_first_message(the dispatcher knows its request ID), RUNNER.md; ran the new test red on base and the full suite green.🤖 Generated with Claude Code