Repository navigation
v1.5.1
This release keeps the conditions each launch started under. doctor's result is saved with the launch it was checked for, autopsy shows it beside the slowdowns, and the hand-back gets a one-line summary of the run tools, kept apart from whether the work was accepted.
Highlights
- doctor records every check's outcome (
checks: passed, warning, failed or skipped) withobserved_at,doctor_versionandrun_id. A check that recorded nothing shows as skipped (not_recorded), never as passed.--save FILEkeeps the JSON result; a save that is refused (a path inside the project) or fails prints "result not saved" and never changes doctor's exit code. ledger conditionsbinds a saved doctor result to one launch asdoctor-<wf>.jsonin the run's ledger, with the launch's wf id and setup ordinal. It refuses a reused observation, a second snapshot for one setup, a rebinding with other content, a file that is not a doctor result, and a ledger with no setup. No ledger event is added, so status and resume behave as before.- autopsy shows "Launch conditions" per launch (
autopsy_version4, keyslaunch_conditionsandorphan_snapshots):- worded as observed before the launch; a warning beside a related slowdown is a "possible contributor", never a cause;
- a snapshot that cannot be trusted (wrong run, observed after the launch started or before the previous launch ended, duplicate setup, unreadable) is reported as inconsistent and never shown as a condition;
- details are rebuilt from fixed patterns only, so no path, URL, file name or command reaches the report; a reading doctor could not take is "could not be read" and is never a contributor;
- runs archived before 1.5.1 say "launch conditions unavailable".
scripts/tool-outcomesprints the hand-back's "Run tools" line (doctor, archive, autopsy, cleanup). It takes doctor's part from autopsy's checked binding, so it never shows conditions under the wrong launch, and it never mentions acceptance.--jsongives fixed states.- Task briefs accept bold
**Consumes:**/**Produces:**labels, the forms derive-lanes already accepted. Before, a plan with bold labels got the right lanes but briefs without the Produces blocks of the tasks they consume.
Behaviour to know
- A transient relaunch now runs doctor first. A hard failure there turns the stop into a real stop (the spend is recorded and the lock released). In git mode with
status.showUntrackedFiles=no, untracked files left by the run's own checks now stop the relaunch at doctor instead of producing an unverified run. - The session binds the snapshot right after the Workflow call, using the real launch's wf id (never the dry run's). A refusal never stops the run; the hand-back line says why the conditions were not recorded.
Smaller changes
- autopsy parses each configured check command once instead of on every call.
- One shared
holdLocktest helper. - Real-transcript regression fixtures (from r150 and r142, trimmed and scrubbed) for the three autopsy false positives fixed around 1.5.0.
Testing
node tests/run-tests.mjs: 1065 tests, 1051 pass, 14 skipped, 0 fail on Windows locally; CI passed on Ubuntu (Node 22 and 24), macOS and Windows.- The new and changed test files also pass on Python 3.8.20 (176 pass, 1 skipped).
- Built by parallel-lanes run r152 (1.5.0 engine): 9 tasks in 5 lanes plus 2 join tasks (one an end-to-end test of the whole chain), 26 agents, 59 min, no rulings, every task approved in its first review, 16 final-review findings fixed and none open, accepted with check-verify
match.
Compatibility
- Additive: doctor's existing JSON keys and exit codes,
ledger status, resume and run-report's output are unchanged. - autopsy's format moves to
autopsy_version4;historyredoes older autopsies automatically.
Upgrade
In your clone:
git pull && bash install.shThen start a new session, or run /clear, so the skill and hooks reload. Do not install while a parallel-lanes run is in progress: its agents use the installed helper scripts.