- session-runner: exit-labeling keys off 'exit', not 'close' — an orphan
holding the pipes could relabel a REAL exit (auth failure) as
'timeout_startup' availability noise; the kill path still always
group-kills and cancels the reader (labeling and unblocking are separate
concerns). Work phase arms on a flag, not firstResponseMs===0 (a same-ms
first byte left the startup timer live all run). The CI startup grace is
now a real FLOOR (Math.max), matching its name and pinning test.
- gstack-detach: pgid captured AT SPAWN (== child pid under
start_new_session) — resolving it after the grace raised ESRCH once the
leader died on SIGTERM, orphaning TERM-immune grandchildren forever.
- test-free-shards: ledger entries carry branch + git_sha (rev-parse split:
'--abbrev-ref HEAD HEAD' printed the branch twice and recorded it as the
sha); local ledger default is per-PROJECT, not the machine-global tmpdir.
- eval-flake-rank: per-LINE ledger parse (one torn JSONL line vanished the
whole series), 60-day recency bound (transcript-bearing files are MBs),
shared isFinalizedEvalResultFile predicate (the artifact-taxonomy rule
lived in three places); eval-store exports the predicate and finalize
stops computing flakyRetries twice; paid-shards cleanup uses async rm
(a SIGKILLed shard's git-workspace teardown blocked every sibling's
stream classification on the parent event loop).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Aggregates per-test series across every finalized eval-store run (shard
dirs included) plus the free flake ledger: runs, fails, RETRIED PASSES
(the flake signature), avg duration — ranked retries-first. This is the
readable dial behind two policies: a flaky pass never blocks a merge but
is always ranked here, and the WS16 required-check promotion needs weeks
of clean flake-rank, not vibes. --json for machines, --dir for downloaded
CI artifacts.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>