Repository navigation
v1.6.16
This release makes audit.md shorter to read without dropping a fact. Most of an audit's evidence gaps were one cause repeated under every task, and the plan and spec hashes printed once per task although they belong to the run. The gap list now names each cause once, with the tasks it covers; the hashes print once, in Checks; and each task block lists its own open minors.
Built with subagents (a research pass over the code and all 39 archive folders, two adversarial reviews of the design, an implementer and a reviewer per task, then a whole-branch review), without a parallel-lanes run, and released without a validation run on a real project.
What's changed
- Evidence gaps by cause. The Evidence gaps section prints one line per cause: the pointer with its array indices as
N, the state, the note, and the tasks it covers,(tasks A1, A2, ...), or(run)for a run-level cause, with its values. The header, the Summary and the bottom line say<G> evidence gap(s) in <C> cause(s). When a cause's gaps carry different notes (two shas, say), the line prints the note with its shas as<sha>, so it is true for every task it lists. audit.json keepsgapsvalue for value and addsgap_causes. - The plan and spec hashes once. They print in Checks, labelled by setup event and ledger line, instead of under every task as "launch i". The plan copy note for the section hashes prints there too. Everything that decides a task's committed, reviewed, verified or accepted state stays under the task.
- Open minors per task. A task block ends with
open minors: <id>, <id>for the open task minors whose id names that task, carried minors included. A minor whose id names a batch unit, no task, or more than one task stays under Open work only. When the run's engine records no minors, Open work says so once:open task minors: not recorded by this run's engine. - Plainer counts. The final findings read
<open> open and <declined> declined final finding(s), no longer one sum. A lower bound readsM open task minor(s) listed (more may be missing)in audit and autopsy, in place of "at least M". Results from older engines with no list of open findings readunavailable open, not 0; the same holds for cannot-verify items. The stdout tasks line uses the bottom line's counts. - The override. For a run the user accepted, audit.json's acceptance gains
verdict_without_overrideandverdict_rule_without_override: the verdict audit would give without the override. When it differs from the run's own verdict, the bottom line names it (accepted by user (over unverified: gate mismatch)), and Acceptance adds a line for it. - "No final review" prints only when there is none; when audit cannot tell which launch is the latest, Open work says only that.
Measured on the run history
Shipped 1.6.15's audit and this release's audit over fresh copies of the same 39 archive folders:
- Gaps: 2,740 -> 2,438. The per-task copies of the plan and spec hashes and of the section-hash plan note (336) become 34 run-level gaps; every other gap is the same, value for value.
- Evidence gaps lines: 2,740 -> 392, one per cause (206 run-level, 186 per task).
- audit.md: 33,610 -> 29,874 lines over the 39 folders (-11%); the Tasks sections 21,046 -> 19,470.
- Open minors: all 140 archived open task minors land in their task's block (16 runs); none is left under Open work only. 15 runs say once that their engine recorded none.
- Older results: 13 runs from engines whose results list no open findings read
unavailable open; 1.6.15 printed one open-or-declined count for them. - Verdict lines: the same in all 39 runs.
Testing
- New tests, each failing before its change (or pinning behaviour that was right already, where noted): causes in every task, in some tasks and at run level, with repeated values; a cause with different notes; the moved hashes printed once in Checks and in no task block; open minors placed by id prefix, an exact match over
T<id>, the snapshot's task for a carried id, batch units and unknown ids under Open work only; "not recorded" once; no final review and an unknown launch order; the lower-bound form in audit and autopsy; open and declined apart; unavailable counts from an older result; the override with a gate mismatch and with the gate unavailable; a reviewed task with no plan section and an unreadable plan copy (both already right). - Tests: full suite on Windows (Python 3.15) at the release head: 1970 tests (1954 pass, 16 skipped, 0 fail).
- CI: passes on Ubuntu (Node 24, and Node 24 with Python 3.15), macOS (Node 24) and Windows (Node 24, Python 3.12).
- Not run: a parallel-lanes run with this release installed.
Compatibility
audit_versionis 2: audit.json gainsgap_causes,run.checks.plan_hash,spec_hashandsection_hash,acceptance.verdict_without_overrideandverdict_rule_without_override, andopen_work.final.value.carried_minor_tasksandnot_recorded; a task'srequirement.section_hashis gone.gapskeeps its shape. It counts fewer gaps for older runs (the moved hashes), sotool-outcomesreports smaller gap counts for audits made with this release.autopsy_versionis 13;historyreruns autopsy on every archived run. autopsy.json's fields are unchanged.- Archived audits are not regenerated; run
auditagain on a run to get the new report.
Upgrade
In your clone:
git pull && bash install.sh