---
name: v0121-release
description: "v0.12.1 release driven through by doyle — tagged @86f20ac, CI green, draft built, deployah signing (counter ~26)"
metadata: 
  node_type: memory
  type: project
  originSessionId: bfe20bf0-7829-4d00-b1b1-052a9c66e85b
---

v0.12.1 (patch) — operator-directed doyle to drive the FULL release 2026-06-18. Real-harness lifecycle fixes (L0 attach-output keystone, L2 wedge, L1.5 viewer-close-detach via WMI job-neutral launch) + Wave3/4 picker + endpoint-list + help-md, all gated. Version 0.12.0→0.12.1 (operator chose PATCH despite --local removal being breaking; pre-GA internal CLI, zero external consumers). Cargo.lock: 11 first-party bumped, block-buffer/netlink-proto left at 0.12.0.

**PUBLISHED 2026-06-19** (counter 26, PATCH, no retag). doyle drove changelog→bump→merge→green-CI→tag @86f20ac; deployah signed (rel-primary-2026, update-set v26 "0.12.1" both platforms, draft→public, 8 assets). Counter confirmed 26 (v0.12.0=25, monotonic floor accepted). Hashes: linux `fa6a3cdfdd7555d08fcabc7df4c3350aee94568c423d155302a067d330c82b35`, win `2c5ca121ed14c20b8b9ff578f3bfd65ff0a28a82d7d482fd19a5f2f35bed62b8`. https://github.com/SaberMage/spt-releases/releases/tag/v0.12.1 — publisher leg proven 20× (counter 7-26). deployah had the seed; doyle cannot sign.

CI-INFRA SAGA (2 self-hosted-runner blockers, NOT v0.12.1 code — cost ~5 red runs):
1. **Linux clippy dead-trait** (REAL, my-merge-adjacent): job_escape_e2e's `mod win` is #[cfg(windows)]; on Linux `CommandNoWindowExt` was dead → `-D warnings` fail. Our local clippy ALL ran on Windows → never caught it. FIX @185eaee: `#[cfg(windows)] mod common;`. LESSON: cfg(unix) clippy lints are invisible to Windows-only local clippy — CI Linux is the only catch; expect a round-trip on cfg-gated code.
2. **Windows breakaway-test false-fail** @185eaee: `breakaway_spawn_escapes_a_kill_on_close_job` asserted escape but hfenduleam's job confounds breakaway (`gc_in_any_job=1`, spawn SUCCEEDS but no escape) — added a 2nd skip path (sibling of the ACCESS_DENIED skip). The exact breakaway-unreliability WMI exists to avoid.
3. **Windows exe-lock** (the big one) @86f20ac: `job_escape_e2e` launches the daemon via WMI = JOB-NEUTRAL by design, so the CI's end-of-job JobObject kill CAN'T reap it. The test reaped only brain_pid; the BROKER (separate spt.exe, pid in `<SPT_HOME>/daemon.pid`) SUPERVISES the brain → brain-only kill respawned a fresh brain (the "pairs"), and the broker lingered as a WmiPrvSE descendant holding `target\debug\spt.exe` → next checkout `EPERM unlink spt.exe`. todlando FIX: reap broker TREE via `taskkill /F /T` (reaps brain + defeats respawn) + `tree_reaped` hygiene assert (both pids gone before return). doyle repro'd: broker_pid≠brain_pid, post-test spt.exe back to baseline (zero strays). **LESSON: any WMI/job-neutral test daemon must reap the BROKER TREE (daemon.pid), not just brain — CI job-cleanup can't, by design.**

BOX CLEANUP: hfenduleam C: hit 100% mid-session (todlando 307GB target, cargo clean'd). 2 stray WMI brokers (runner-service acct, PIDs 113864/62384) held the exe — doyle NOT admin, couldn't kill; OPERATOR admin-killed them. kitsubito (ssh reavus@kitsubito, sudo): HEALTHY (828G, 1 PTY, daemon not leaking) — its `spawn_env_reaches_child` failure was a pure LOAD-FLAKE during the heavy session, passed clean on retry. See [[no-machinewide-killon-shared-runner]] [[ci-clippy-preflight-workspace]] [[v0121-help-md]].
