Repository navigation
v1.5.0
This release adds run tools: every run can explain itself afterwards, every launch is checked first, and finished runs are tidied without losing the way back. An outside review before release found ten defects, plus two more found while verifying them; all are fixed here with regression tests.
Highlights
-
scripts/doctorruns before every launch. Hard failures stop the flow: no git identity, a base branch that is behind or diverged from its upstream (or cannot be compared) on a new run, no usable Python, a dirty checkout, a broken shadow repo. Warnings go in the dry-run header: memory, disk, a Python alias, heavy processes, other active runs, Defender coverage of the work folders, and concurrency. It never writes or fetches. -
scripts/autopsyexplains one archived run. It writesautopsy.jsonandautopsy.mdand prints a short summary:- what got done, and time by phase, lane and agent, with tool time as a union of spans and the critical path labelled an estimate;
- check executions, named by check id (
test#1,<lane>.test#1), each markedranorinferreddepending on whether the shell control flow proves it ran; full-suite totals count only proven runs; - tokens, with buckets that have no usage data shown as unavailable rather than zero;
- slowdowns from structured evidence, with a suggestion for each, and unexplained time as open questions.
It writes no command text, prompts or tool output. Background runs end only at Claude Code's own completion notice or a terminal poll result, as an upper bound; notification-shaped text an agent reads from a file never counts. Agents with lost tool results are marked partial, not idle.
-
scripts/archive-runandscripts/history. Runs are copied into one history folder (PL_HISTORY_DIR, default<config dir>/parallel-lanes/history) with anindex.json;--reindexrebuilds the index, imported layouts included.historycompares runs: recurring slowdowns, token trends and runs with too little data. The index is guarded by an OS-level lock that is released when its holder exits, so a crashed archive-run never leaves a lock to take over. -
scripts/cleanuptidies a finished, archived run. It plans by default and acts only with--yes:- it first writes a verified restore point (refs, a checked git bundle, and the restore commands);
- it removes only run-owned worktrees and branches, never with
--forceor-D; - it holds the run's lock and the main checkout's lock while it acts, and rechecks each item right before removing it;
- after the PR merges, it switches the main checkout to the base and fast-forwards it.
-
scripts/run-checkstimes each command (started,ended,duration_s). check-verify still compares only group, command and exit.
Fixes from the pre-release review
- cleanup, and the integration step's lane cleanup, could delete untracked files hidden by
status.showUntrackedFiles=no. Every cleanliness check and removal now sees all untracked files, and a failedgit statuskeeps the item. - autopsy copied configured check commands into its reports; checks are now named by id.
- Text that only mentioned a check (an echo, a grep, a heredoc body, a parser probe) counted as a test run; only commands in executable position count now.
- A background run's first mention counted as its measured end, missing tool results became zero tool time, a later failure in a compound command was blamed on an earlier heredoc write, a needed rerun after a Bash edit was called redundant, and a run with no usage data showed zero tokens. Each now reports partial, unavailable or nothing, rather than a guess.
- The history index's stale-lock takeover could admit two writers; it is replaced by an OS lock.
Behaviour to know
- Ignored files (build output,
node_modules, an ignored.env) do not keep a worktree, andgit worktree removedeletes them. Copy any ignored file you still need out of a worktree beforecleanup --yes. - autopsy counts are lower bounds: checks run through a wrapper (
bash -c, a script) are not seen, and inferred runs may not have happened.
Testing
node tests/run-tests.mjs: 1004 tests, 990 pass, 14 skipped, 0 fail on Windows locally; CI passed on Ubuntu (Node 22 and 24), macOS and Windows.- Built by parallel-lanes run r150 (1.4.4 engine): 15 tasks in 5 lanes, 44 agents, 134 min, accepted with check-verify
match. The review fixes were built by run r151 (1.4.4 engine): 8 tasks in 4 lanes, 25 agents, about 79 min, every task approved in its first review, 19 final-review findings fixed, accepted with check-verifymatch. - The corrected autopsy and history were rerun on a copy of 21 archived runs: no command text in any output.
Compatibility
- New scripts only add behaviour; run-report's output is unchanged.
- autopsy's own format is new in this release (
autopsy_version3).
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.