Repository navigation
v0.7.0 — The Scripted Write Path
Every state mutation the controller used to perform by hand is now a script call behind one exec front door. The engine's core claim — the controller holds no state and makes no judgment — now holds on the write path, not just the read path.
The front door
exec # resume digest: every in-flight run, its next verb, open rows, store drift
exec verbs # the decision table, generated from the machine-readable registry
exec step # any exec-* script by nameAdded
exec-dispatch— one locked act: mints the agent ID, builds the role's input file, marks the ledger, appends the dispatches.md row, renders a bracket-clean prompt.exec-ladder—revive/redispatchrewritesrevived-rvNcells and enforcesEXEC_MAX_REVIVEitself.exec-seen,exec-heartbeat— the two liveness witnesses thatexec-superviseactually consumes.exec-prompt— renders any role template; refuses while a[UPPER_SNAKE]bracket remains unfilled.exec-adjudicate— assembles the adjudication evidence pack mechanically, then dispatches SUPERVISOR. The adjudicated party no longer selects the adjudicator's evidence.exec-present— the fixed-shape gate card for PHASE-GATE; artifact bytes never enter the pump's context.exec-status— one-file resume digest;--writestamps.executor/RESUME.mdso a cold agent reorients in one read.exec-graph check— every verb has exactly one actuator row, every ledger file has a script writer, every role template resolves, every ID grammar carries placeholders, every reference resolves. A dangling reference is a FAIL, not a NOTE.exec-stepverbs —RUN-START,REVIEW,FIX,CRITIQUE;REPORTnarrows to verdict-clean; every emit carries a(wake on …)condition.exec-initiative phase … check— dry-run gate validation that writes nothing.
Fixed
- REPORT livelock — a report with a reviewer in flight emits
WAITindefinitely instead of three identicalREPORTs and anADJUDICATE loopon a healthy run. - Worker status routing — report
result:frontmatter routesblocked→ ADJUDICATE,needs-context→ ASK. A finished worker can no longer silently burn revive rungs. exec_product_exists— crashed BSD/bash-3.2 runs on glob specs; supervisor zombies now report instead of dying.exec-report— refreshes the registry's Tasks cell inside its own store lock (the header had always claimed it did; it never did).exec-gatecheck mode — no longer mutates the phase log it claims to inspect.- bash 3.2 parse —
exec-graph'scaseinside$( )was a syntax error on the stock macOS shell; hoisted out, with a permanent parse gate in the suite.
Verified
scripts/test-executor.sh: 142 passed, 0 failed — under bash 5.3 and under/bin/bash3.2 (the macOS floor).exec-graph check: 50 checks green.- End-to-end on a scratch initiative:
dispatch → heartbeat → suspect → revive → redispatch → report → review → verdict → commit → gate → DONE, with the REPORT livelock proven dead (five consecutive folds during a live review emitWAIT).