Skip to content

v7.1.0

Choose a tag to compare

@LordKuper LordKuper released this 08 Sep 23:55
· 18 commits to main since this release
28343c3

Remediation of every problem the sprint 008 retrospective identified. The theme this time is one-sided obligations: a rule that told one party what to do while the party who had to act read a different file, or read nothing at all. Reviews gain an evidence path for a dispatch that returns after its replacement, a correlated-interruption branch so one session-wide failure is recorded once rather than N times, and an outcome contract that forbids External Review returning nothing. The coverage manifest now carries the row vocabulary a reviewer must satisfy, published from the same constant the validator enforces. Nothing in consumer state changes shape; update through /asd-update, no migration script.

Added

  • Manifest vocabulary (review-policy.md "Coverage ledger", runtime.js): the allowed statuses per row type and the p/f placement rule now travel inside the manifest a reviewer is handed, instead of living only in prose it had to recall. Values come from one exported constant shared by the emitter and the validator, so published and enforced vocabulary cannot drift. Required in every manifest a phase workflow emits; optional to validate-ledger, which validates a manifest predating the field exactly as before and rejects one whose vocabulary diverges.
  • An outcome contract for External Review (external-review.md "Outcome contract"): exactly two permitted returns — a verdict, or an availability skip naming its cause. Any inability to complete returns the skip, so the wrapper awaits the wrapped CLI inside its own dispatch and never backgrounds it; a return that is neither is not permitted and not a verdict, and its disposal is imported whole from the interrupted-dispatch rule. The agent's FAILED signal is gone, and ABORT is scoped to a precondition missing before any invocation.
  • A late-returning dispatch may now be recorded (review-policy.md "Late duplicate return"): when a replaced dispatch delivers after its replacement's verdict was recorded, and carries an at-or-above-floor finding contradicting it, the phase workflow verifies that finding against source and records the more severe token. It holds for any replaced dispatch, External Review included. Previously the interrupted verdict never counted, which is right for bookkeeping and wrong for evidence.
  • Correlated interruption (review-policy.md): one cause taking every dispatch in flight is recorded once as an iteration-level event, rather than arming the split trigger once per reviewer.
  • Criterion cost surfacing (checkpoints.md): at the gates that already exist, a criterion's running cost is stated with the decision — iterations charged and fix rounds charged, both derived at read time from the review files and the decisions log, with no new state and no stored counter.
  • A conditional Reachability: line in the plan format (sprint-lifecycle.md, t_plan.md): a task whose value depends on two phases agreeing names which two and on what, checked at plan approval. Absent means the task has no cross-phase dependency — deliberately not Material risk's fail-closed semantics, and never input to routing.
  • Scope-time re-verification (sprint-lifecycle.md, asd-phase-scope.md): a retrospective-derived acceptance criterion is checked against current HEAD before it becomes an AC-N, and the verification is recorded in decisions-log.md. A retrospective is written against the HEAD of the sprint that produced it and carries no evidence that its rows are still unresolved when a later sprint picks them up.

Changed

  • Staging and commit ownership is stated whole (git-strategy.md): a dispatched agent stages only the paths it authored and commits every path it authored before signalling completion. The rule previously stated only the negative half, and asd-dev was granted no git command at all — so the agent it governs could not follow it. That grant is now in the agent's tool policy, alongside the tester's.
  • Fix rounds run as one ordered chain, dev chain before tester chain, never concurrently (asd-phase-impl.md): exactly one agent is in flight across a whole round. Parallel fix rounds each cost a review iteration in sprint 008 by introducing cross-file contradictions; initial-mode parallelism is unchanged.
  • A reviewer's proposed fix is verified against source before it is applied (review-policy.md "Autofix vs escalation"). A prescription is a claim about source, not an instruction; an equivalent correct fix stays permitted, an unverified transcription does not.
  • Agent memory is single-homed and in the review surface in both modes (artifact-layout.md "Agent memory"): the property was stated four times inside self-hosting carve-outs and nowhere for consumers. It is now stated once and cited, and the diff-reachability half names who commits a reviewer's memory writes so they reach a reviewed diff at all — a reviewer holds no commit tool.
  • Line-ending guidance is platform-neutral and the pre-commit lint form is named (code-style.md §19): a scripted edit anchors on the file's actual EOL, a whole-file diff for a small edit is the symptom, and the check is git diff --cached --check — the bare form exits 0 once the damage is staged, so a stage-then-lint-then-commit sequence passed blind.
  • coverageManifestDigest digests the manifest exactly as written; manifest-digest --write stamps the vocabulary into the file before digesting it. An earlier shape injected the vocabulary at digest time, which moved the identity of every manifest stamped before the field existed.
  • Test coverage grew from 160 to 171 checks, and three existing assertions were re-pinned after going red on correct edits — a copy count became a single-owner-plus-citations property, an ordinal became a citation, and a header quotation became the delegation rule it was really about.