---
name: leaked-daemons-from-e2e-batteries-break-the-next-build-as-exit-101
description: hertz + todlando 2026-09-08 — every battery that runs a daemon-launching spt e2e cell leaves spt.exe holders in the pool (16, then 16 more, then 8); the NEXT build in that pool fails "failed to remove target\debug\spt.exe / Access is denied (os error 5)" and writes exit 101 — indistinguishable from a compile error at the exit-file surface; guard: kill own-tree spt.exe by per-pid verified ExecutablePath BEFORE any cargo, refuse with its own exit (5)
metadata:
  type: feedback
---

Three times on 2026-09-08 (#272 respin): hertz's lane-2 build leg exited 101 with `failed to remove file target\debug\spt.exe / Access is denied (os error 5)` — sixteen spt.exe born from his own morning gate; killed; then SIXTEEN NEW ones born from the void run's quickstart and io_events legs; todlando reaped EIGHT under 272-splice before his worktree removal would go. Every battery that runs a daemon-launching cell in `crates/spt/tests` leaves daemons that outlive their cells and pin the exe the next build must overwrite.

**Why:** cargo writes 101 for the failed remove exactly as it writes 101 for a compile error, so at the exit-file surface a holder IS a build red — an obstruction rendering as a verdict, the day's rule in another face. Reading build.raw is the only thing that separates them, and nobody reads build.raw on a green.

**How to apply (the standing driver form, hertz's `.spt-r2repin3.sh` / my `.spt-gate-r2l2.sh`):** BEFORE any cargo, enumerate spt.exe, verify EACH pid's ExecutablePath against THIS tree's target (never a path match on a listing; the fleet daemon and other trees' daemons stay untouched), kill only those, re-census, and REFUSE with a distinct exit (5, `VOID:holders-in-pool`) unless the count is zero. Fire the guard once as a positive control (killed_mine / left_not_mine / remaining printed). The leak itself is a test-suite hygiene defect for the register (cells that start daemons must stop them, or the rig reaps them at cell end). Related: [[pre-seed-the-exit-file-with-a-void-sentinel-before-the-leg-starts]], [[a-path-predicate-builder-census-is-intermittently-blind]].
