Commit 277a0b3
task-11(v3.0): rationale record — the v2.18 arm/disarm wiring (diff landed in 3c15b8c)
EMPTY BY NECESSITY, not by choice. This job's four files were staged when a
concurrent commit in the same working tree (3c15b8c, the r7 spec commit) ran
`git commit` and swept the index, so the diff is already in history under an
unrelated message. Nothing is amended — that commit also carries another agent's
work. This records the WHY the swept commit does not.
WHY THIS JOB EXISTS: v2.18 shipped the mechanism and left the surface unwired.
`--arm-goal`, `--disarm-goal` and `--goal-status` exist in
scripts/compound-v-epic-state.py and hooks/epic-goal-stop.sh reads them, but no
command ever CALLED them — an armed goal was reachable only by hand-running the
script. Feature F's headless shim was likewise an orphan, referenced by README and
CI and invoked by nothing. A mechanism nothing invokes is prose with a test suite,
which is the exact defect this release exists to remove.
WHAT LANDED:
- commands/v-epic.md — §0d arms the goal (offered, never silent): session id from
the harness, refuse rather than invent one when it is empty, the two shipping
conditions, max_continues > 0 with `0` stated as invalid, the §9 commit rule, and
a hook-store check that can FALSIFY the arm rather than assume it took. §0e prints
the shim artifact and installs nothing, never pre-filling --allow-build. "Goal
disarm" pops the record at every terminal exit and takes its wording from `met`,
never from "the hook stopped blocking".
- commands/v-status.md — an armed-goal column off the read-only --goal-status,
degrading to an em-dash on every failure path. Continuations are always "—": that
counter lives in the hook's own store keyed on a session id this command does not
have, and a guessed count is the fabricated metric the charter forbids.
- commands/v-init.md — `enforcement.*` seeded OFF as a MAP of named gates, so 3.0's
triage_gate joins 2.18's pipeline_bypass by adding a key, not by changing shape.
/v:init never offers to turn one on: a false positive costs every teammate a
blocked turn. Also amends Iron Invariant #4 to its v3.0 wording at the three sites
here that still asserted the deleted absolute (coordinator hand-off from task-5).
- skills/compound-v/epic-mode.md — the armed-goal lifecycle, one armed epic per
project (per-file refusal plus fail-open cross-file discovery), session_id
matching, and the distinction that pays for all of it: a terminal-but-unmet epic
yields "do not continue", not "met". Calling a stopped epic finished is a
fabricated completion claim, and should_continue is not a completion answer.
Every flag documented was run before it was written about, and the
terminal-but-unmet JSON quoted in epic-mode.md is a real probe, not an example.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>1 parent 3c15b8c commit 277a0b3
0 file changed
0 commit comments