Skip to content

v1.6.12

Choose a tag to compare

@noderaven noderaven released this 04 Nov 10:42
· 33 commits to main since this release
3efc4fc

This release finishes autopsy's "each second once" accounting. The relaunch row was the last exception: it charged the whole of an earlier launch to the relaunch, including every task that finished there and carried over, and it overlapped every other row in that launch. It now costs only the agent work that a later launch ran again. Each launch reports how much of its work was kept and how much was redone. And autopsy no longer reports a run as rejected without saying that the user accepted it afterwards.

Built with subagents (a fresh implementer and a fresh 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 fixed

  • A relaunch costs the redone work only. An agent of an earlier launch counts as redone when a later launch ran the same work again: an agent with a task when a later launch ran that task in the same role (a later review of a blocked task does not make its earlier implementation redone), an agent without a task (pre-flight, integrate, verify, a final review lens, final fix) when a later launch ran that role. Everything else carried over. The relaunch row now holds the redone agents' time and is charged with the other rows, after them, so an agent that was both retried and redone is counted once. A redone agent without timestamps makes the cost unavailable, never a partial sum; an earlier launch that lost no work still shows its relaunch, at 0.
  • Kept and redone per launch. Each launch in autopsy.json gains kept_agents, redone_agents, kept_s, redone_s (the wall time those agents covered) and redone_agent_s (their summed agent time). With more than one launch, autopsy.md's Time section opens with a launches table, and the summary says earlier launches: kept N agents, redid M (X of agent time).
  • Acceptance by the user. When the user accepts a run with ledger accept at the delivered head, done.acceptance.accepted_by_user is true and the acceptance line ends with ; accepted by the user at the delivered head. The match is the same one audit uses. The acceptance note itself, which can name a person, is never copied. history.md's Acceptance column says (accepted by user) for such runs, and history.json carries the flag. The steps after ledger accept now rerun autopsy with archive-run, audit and tool-outcomes, so the archived report shows the acceptance at once.
  • Smaller fixes from the 1.6.11 review. The turn grouping no longer reuses a turn number when a message id reappears; a fold tie is decided at millisecond precision, so the earlier row wins as documented; tool_slowdowns and the waits block share one pass over background commands; an extra_review_round, retry or escalation of an agent without timestamps says unavailable for its cost kind as well as its cost; the summary reads (agent time unavailable) when the redone time is unknown; and several rules gained the tests they lacked.

Measured on the run history

autopsy 1.6.11 and 1.6.12 over the same copy of 38 archived runs (parallel-lanes' own builds and runs on other projects), each run analysed once by each version:

  • relaunch: 12 rows in 6 runs, 46,704.6 s before, 14,457.6 s after (32,247.0 s less). Every other kind is unchanged.
  • All slowdowns: 166,705.9 s before, 134,458.9 s after. With relaunch charged like the other rows, the per-kind stakes add up to the total for every kind, relaunch included.
  • The 12 earlier launches: 152 agents kept (35,487.2 s of wall time) and 46 redone (13,072.8 s of wall time, 15,206.1 s of agent time).
  • Open questions: the old relaunch row hid every long gap in an earlier launch; with it gone, autopsy lists 150 unexplained spans instead of 146.
  • Acceptance: 2 runs that the user accepted after a rejection now say so.

Testing

  • New tests, each failing before its change: the redone rule by task and role, an untimed redone agent, an earlier launch with nothing redone, a retried and redone agent, a single launch, the launches table and summary line; user acceptance at the delivered head, at another head, with several events, without a ledger or a _run.jsonl, with a short or non-hex delivered sha, and the note never copied; the turn counter, the fold tie, the cost kind of an untimed whole-agent row. Pins for the rules 1.6.11 left untested.
  • A real-transcript fixture from a parallel-lanes build that was relaunched after its first launch stopped: the relaunch costs the two agents the second launch ran again (796.3 s) instead of the whole first launch (2,325.7 s).
  • Tests: full suite on Windows (Python 3.15) at the release head: 1923 tests (1907 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

  • autopsy_version is 9; history reruns autopsy on every archived run with an older autopsy.json.
  • A relaunch row's cost_s is the redone agent time, charged after the other rows; its covers are agents, not the launch window.
  • launches[] entries gain five fields; done.acceptance gains accepted_by_user.
  • Long gaps inside earlier launches can now appear under Open questions.

Upgrade

In your clone:

git pull && bash install.sh