- Tripwire scans execFileSync too (ceiling 8: two more grep-needle string
exemptions); merge-introduced timeout-less spawnSync in
question-preference-hook fixed — the tripwire caught a site that landed
on main AFTER the sweep, on its first day.
- gstack-detach gains TWO watchdog kill regression tests: TERM-immune
grandchild (the killpg-after-grace escalation) and the leader-dies
variant (the pgid-at-spawn fix — the case the first test cannot see).
- eval-flake-rank gets its unit suite (final-attempt accounting, artifact
exclusion, shard recursion, recency bound).
- Groupkill/startup-grace shim markers are per-run unique (pid-suffixed
sleep durations): sibling Conductor worktrees run free suites with no
machine lock, and fixed markers let one run pgrep/pkill the other's
shims — a cross-run flake inside the anti-flake tests.
- flake-ledger test pins the project-scoped local default; stale empty
section headers in touchfiles-data deleted (they invited entries under
deliberately retired categories).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The single spawn-armed timer charged API queue latency to the work budget:
the recurring '0 turns / $0.00 / x3 attempts' failure with four budget-bump
receipts (180->300s, 240->360s, 300->420s, 90->300s). Split: startup phase
(no NDJSON byte yet) kills EARLY at min(grace, timeout) with the distinct
exitReason 'timeout_startup' — an availability verdict, not transcript
archaeology — and the work phase arms on the first byte for the REMAINING
budget, so total wall never exceeds the timeout (tier envelopes are
margin-free: tests pass timeout: CAPTURE_MS and bun-budget the same tier).
Local grace 90s (observed queue latency 60-90s), CI floor 300s (TODOS-filed;
shared runners queue harder), both pinned by the new grace tests with fake
-claude shims covering the late-first-byte and silent-API paths.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>