Skip to content

v0.7.0 — The Scripted Write Path

Choose a tag to compare

@Atri10 Atri10 released this 05 Oct 16:20
· 45 commits to main since this release
7784af7

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 name

Added

  • 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/redispatch rewrites revived-rvN cells and enforces EXEC_MAX_REVIVE itself.
  • exec-seen, exec-heartbeat — the two liveness witnesses that exec-supervise actually 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; --write stamps .executor/RESUME.md so 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-step verbs — RUN-START, REVIEW, FIX, CRITIQUE; REPORT narrows 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 WAIT indefinitely instead of three identical REPORTs and an ADJUDICATE loop on a healthy run.
  • Worker status routing — report result: frontmatter routes blocked → 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-gate check mode — no longer mutates the phase log it claims to inspect.
  • bash 3.2 parse — exec-graph's case inside $( ) 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/bash 3.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 emit WAIT).