# Re-audit of every source line ref in the thin PR, at the NEW base `6e075f7e`

hertz, 2026-09-07 13:2xZ. Discharges the RE-AUDIT DEBT recorded when the base was still
`f3c8495b`. Read-only; no build, no product change.

## Why a re-audit was owed at all

A line ref is a claim about a file AT A SHA. The thin PR's refs were verified at two different
shas — ir79/ir80/ir81/ir82's at `f3c8495b`, `PID-KILL-CENSUS.md`'s at `main ff4b405d` (its own
header says so, and that is CORRECT: `git merge-base origin/main ff4b405d == ff4b405d`, so
ff4b405d is on main; I doubted it and the measurement refuted the doubt). The base then moved to
`6e075f7e`. A ref that was right at one sha and is quoted at another is the mixed read that already
cost this lane once — IR-82's `cli.rs` numbers came from the WORKING TREE while every `daemon.rs`
number agreed, and it was that PARTIAL agreement that made the mixed read dangerous.

## Method, and its limit stated up front

**Line numbers cannot move in a file the diff does not touch.** So the audit is a diff over the
ref population's files, from EACH prior verification sha to the new base, plus a direct read of
every ref in a file that DID change. That is exhaustive over movement and cheaper than re-reading
50 lines.

**The limit:** this proves the refs still LAND where they landed; it inherits, and does not
re-prove, the original readings at `f3c8495b` / `ff4b405d`. Where a file changed, the direct read
below re-proves the reading too.

## Leg 1 — `f3c8495b` → `6e075f7e` (the ir79–ir83 population)

    git diff --name-only f3c8495b 6e075f7e
    crates/spt-daemon/src/dispatch.rs      (+59 -0)
    crates/spt-net/src/net/webmsg.rs       (+44 -8)

Two files, and **neither appears anywhere in the ref population.** Every ir79/ir80/ir81 ref
(`broker.rs:8102`, `proc.rs:430`, `servicehost.rs:651`, `brainproc.rs:1224`, `brainproc.rs:1359`)
therefore holds unchanged. VERIFIED by construction.

## Leg 2 — `ff4b405d` → `6e075f7e` (the PID-KILL-CENSUS population)

Of the census's spt-core files, exactly two differ:

    crates/spt-daemon/src/livehost.rs   (+85 -0)
    crates/spt/src/cli.rs

Everything else in the census — `broker.rs:8102/:9736/:11860`, `daemon.rs:3472/:3525`,
`servicehost.rs:651/:3544`, `shellhost.rs:639`, `proc.rs:46/:430` — sits in files the diff does not
touch. VERIFIED by construction.

## Leg 3 — direct reads, every ref in a file that changed (and IR-82's core refs)

| ref @ `6e075f7e` | line reads | verdict |
|---|---|---|
| `crates/spt-daemon/src/livehost.rs:1135` | `spt_store::proc::kill_pid_tree(pid);` under the POSITIVE-match comment | **HOLDS** — byte-identical to `ff4b405d`; the +85 lines do not shift it |
| `crates/spt/src/cli.rs:8581` | `std::fs::read_to_string(spt_daemon::daemon_pid_path())` inside `running.then(|| {` | **HOLDS** — the `running`-gated reader, as IR-82 claims |
| `crates/spt/src/cli.rs:8754` | `let pid = std::fs::read_to_string(spt_daemon::daemon_pid_path())` under `if running {` | **HOLDS** — the second `running`-gated reader |
| `crates/spt-daemon/src/daemon.rs:471` | `let _ = std::fs::write(daemon_pid_path(), std::process::id().to_string());` | **HOLDS** — the unconditional clobber IR-82 is about |
| `crates/spt-daemon/src/endpoint.rs:81` | `pub fn daemon_pid_path() -> PathBuf {` | **HOLDS** |

## Leg 4 — the refs that are NOT spt-core paths, and which repo each one IS in

Every ref below answers ABSENT to `git cat-file -e 6e075f7e:<path>`, and no file of those names
exists anywhere in this tree. **This is not an error and must not be "fixed".**
`PID-KILL-CENSUS.md` is explicitly a CROSS-REPO census: its adapter half is a table keyed BY REPO,
and the `spt-claude-code` sites sit under that repo's own heading. The refs are correct as scoped
and are out of scope for a re-audit against an spt-core sha.

**Ruled by doyle 13:19Z: every census row carries its repo HERE, on the row, not in a heading
above it.** The reason is exactly what this leg measured — re-derived at an spt-core sha, seven
correct refs answer seven confident ABSENTs, and a repo named only in a section heading does not
travel with the row when the row is quoted, greppped, or pasted into a PR.

| ref | repo | census verdict |
|---|---|---|
| `tests/spt_int.rs:47` | **`spt-alchemy`** | owned handle — safe by construction |
| `host/src/follow.rs:70` | **`spt-mobile`** | owned handle — safe by construction |
| `rust/link-client/tests/host_link.rs:36` | **`spt-mobile`** | owned handle — safe by construction |
| `ci/psyche/live-relay-int.sh:78` | **`spt-claude-code`** | UNGUARDED — kills every `claude-spt.exe` on the box, no run scoping |
| `ci/launcher/bind-int.sh:50` | **`spt-claude-code`** | GUARDED — `commandline like '%$ID%'` |
| `ci/subnet/multi-subnet-bringup-int.sh:117` | **`spt-claude-code`** | GUARDED — same idiom, scoped by `$C3_ID` |
| `ci/idle-translate/wake-survival-int.sh:64` | **`spt-claude-code`** | GUARDED — `CommandLine -match '$PROBE'` |
| `bind-int.sh:47`, `multi-subnet-bringup-int.sh:114`, `live-relay-int.sh:77` | **`spt-claude-code`** | NARROW — remembered `RUNPID` killed `//T //F`, no identity re-check |

`spt-pacer-tool` has ZERO termination sites and `omp-spt`'s two (`:989`, `:997`) are owned handles;
neither contributes a line ref to re-audit.

## Verdict

**Every ref in the thin PR holds at `6e075f7e`.** Nothing to correct. If the base moves again,
re-run leg 1 and leg 2 with the new sha — the two-line diff is the whole audit whenever the moving
commits miss the ref population, which is the ordinary case.

## Re-run at the LANDED base `bccfaee8` (2026-09-08 10:42Z)

W2 shipped: PR #199 merged 2026-09-08T07:50:31Z at head `bccfaee8`, and `origin/main` ==
`origin/build/ws272-w2` == `bccfaee8` (ff-only, tested sha == merged sha). The thin PR's base is
therefore main @ `bccfaee8`, not `6e075f7e`. The audit is re-run rather than assumed — that is the
whole point of a method cheap enough to repeat.

**Leg 1, `f3c8495b` → `bccfaee8`:**

    crates/spt-daemon/src/dispatch.rs        (+59 -0)
    crates/spt-daemon/tests/twohost_web.rs   (+92 -0)   <- the F19 rig fix, this lane's own commit
    crates/spt-net/src/net/webmsg.rs         (+44 -8)

Three files, and **none of them appears in the ref population.** The one addition since `6e075f7e`
is my own test-only F19 commit, which touches a test file no ref points into.

**Leg 2, `ff4b405d` → `bccfaee8`, restricted to the census's spt-core files:** the same two as
before — `livehost.rs` and `cli.rs`. Both are ABSENT from leg 1, so they are byte-identical from
`f3c8495b` through `6e075f7e` to `bccfaee8`, and the leg-3 direct reads recorded above still stand
unchanged at the landed base. No re-read was needed and none is claimed.

**Verdict at `bccfaee8`: every ref in the thin PR holds.** The filename still names the first base
it was run against; the audit itself now covers `f3c8495b`, `6e075f7e` and `bccfaee8`.
