Repository navigation
Closed as not planned
Closed as not planned
Copy link
Labels
Description
Observed
Two runs of unic-dlc-build (unic-archon-dlc 0.29.0, Archon 0.11.1, Windows 11), Consumer Becklyn-Studios/pr-review-agent.
Run 34f986ef: the loop spun until killed.
- Slice
review-instructionscould not take RED: its eval (pnpm eval review-core) had no model gateway inside the Archon worktree (MODEL_CALL_FAILED). - 16 consecutive iterations each spawned a fresh session, re-ran the eval, reported
BLOCKED, appended a "RERUN n" note tobuild-state.json, and did not emit COMPLETE. - From iteration 14 on, the iterations themselves recommended stopping the loop.
- The loop ended only when the operator pressed Ctrl+C.
Run 9ff2d6da (resumed): the loop exited by accident.
- Slice
acceptance-runis live-only (test_command_planned: true; it needs a deploy and a real PR on a sandbox repository). - 14 identical
BLOCKEDiterations followed. - Then:
Loop node 'run-build' completed after 14 iterations, withacceptance-runstillpending. - The final iteration's message ends with "I have not emitted ``". The word appears to have been consumed by the legacy prose
until: COMPLETEmatch. - Earlier iterations with similar wording ("Not emitted:
COMPLETE", "I did not emit COMPLETE") did not stop the loop.
At startup Archon warns about this exact node:
Node 'run-build': the prose 'loop.until' completion signal is deprecated. Declare 'loop.until_bash' (deterministic check) or 'loop.until_field' (a declared boolean in output_format) instead
Why it matters
- Cost. A blocked slice spends up to
max_iterations(60) fresh sessions producing the same BLOCKED report. - Unpredictable exit. Whether the loop exits depends on how the agent phrases its refusal.
- Early exit. The same accidental match could end the loop with slices still unbuilt and unblocked. For example, "I won't emit COMPLETE until
checkoutis green" in slice 3 would send 15 unbuilt slices to review.
The escape hatch itself is right: a blocked loop should exit to the report and the gate. It just needs to be deliberate.
Suggested
- Migrate
run-buildtoloop.until_field, with a declaredstatus: complete | blocked(plus the blocking slice and reason) inoutput_format, as Archon's deprecation warning asks. - Route
blockedtoreportand the gate, naming the blocker, without opening a PR. - Optionally, have
/ticketskeep live-only slices (test_command_plannedplus outward actions such as deploys) out of the build baton entirely, and relabel their tracker itemsready-for-human.
Not decided
- Whether a blocked run should still run
implement-review-precheckandgoals-checkon the slices that did go green. - Whether a repeat-blocked threshold (for example, N identical BLOCKED iterations) should also exit, as a guard for agents that fail to set the field.
Activity
orioltf commentedon Oct 30, 2026
Closed as superseded, by the maintainer's decision on 2026-10-30 to apply #678's rule here too:
unic-archon-dlcis frozen and the DLC leaves Archon (#677). Reason for this ticket: it carries one line to #687: a loop with no deterministic exit for "blocked, needs a human" is a capability the successor needs.—
unic-sdlc-orchestrator-9