# Open-PR backlog triage — spt-bs-core, measured 2026-09-24 (doyle)

Measured against main `437562d9`. 12 PRs were open, none touched since 2026-09-10 and most since
July/August. Nobody had ruled the backlog; this is that ruling.

## Method (one command per verdict, with a control)

- **Landed by sha:** `git merge-base --is-ancestor <head> origin/main`.
- **Landed by patch-id:** `git cherry origin/main <head>` — every commit marked `-`, **exit 0 on a
  complete object store**. A `git cherry` zero is only as good as the store under it; on a partial
  store it can print a clean result beside a fatal, so the exit is read, not just the marks.
- **Negative control:** #156's head is NOT an ancestor of main while #146–#150's are, so the
  ancestor predicate discriminates rather than answering true for everything.
- The large diffs against main (8k+/128k) are **drift** — main has moved ~690 commits since August
   — not outstanding work. Reading the shortstat as scope is the trap this method avoids.

## CLOSED as landed (7)

| PR | Proof |
|---|---|
| #146 NAMEPLATE W2 | head `af8e5778` ancestor of main |
| #147 NAMEPLATE W3 | head `f1a560fc` ancestor of main |
| #148 NAMEPLATE W4 | head `d9eb7d43` ancestor of main |
| #149 NAMEPLATE W5 | head `2bd36f1d` ancestor of main |
| #150 DISCOVER advert repin | head `f27cb610` ancestor of main |
| #219 IR-93/94/95 register | all 3 commits `-`; main carries all three `### IR-93/94/95` headings |
| #156 wax-seal W1 | commit `0244c5d2` `-`; `sealsync.rs` + `pump/seal.rs` on main, seal verbs live in the field |

Each close carries its own measurement in the PR comment, so the verdict is checkable without this file.

## REFERRED — destructive if merged (1)

**#135 golden-head intake.** NOT a stale-but-harmless PR: main already carries a `### Golden-head
intake` section, landed **2026-08-02 in `c19bd1b7`**, and it is a **superset**. The two-dot diff
`origin/main..pr135` on that file is **-275/+42**. Merging would delete ruled discipline that is not
in the branch — the **snapshot-at-greenlight** baseline (record the milestone's live sub-issue set
the day it is greenlit rather than reconstructing at hand-off, which is exactly what v0.46.0 paid
for) and the **release-shaped head** leg with its two checked commands. The conflict is the symptom;
resolving it in the branch's favour is the destructive outcome.

Commented with the measurement and recommended close. The close itself is referred to the operator
because the PR is theirs and the stipulation at `4669460` is cited in my own live-role.

**Trap worth keeping:** my first read of this used `git diff origin/main...pr135` (three dots) and
showed the section as a clean +37 addition — because three dots diffs from the MERGE BASE, not from
main. That reads a superseded PR as a missing feature. Two dots for "what does this branch have that
main does not".

## LIVE — real unlanded work, needs a decision (3)

**#151 fixture prebuild hardening** (2026-08-18, 2 commits, both `+`). Files: `golden.yml`,
`engine_room_bringup_e2e.rs`, `docs/FLAKE-LEDGER.md`, `docs/INFRA-REGISTER.md`. Note the split:
IR-42 IS on main, but by a **different patch**, so the register half landed as a rewrite while the
CI/test half never did. Main's `golden.yml` has since been reworked around the same area (a "Build
workspace fixture binaries" step with fixture-precondition comments at ~391–408). **Routed to
hertz** — CI/test craft is his lane, and the question is whether the defect still reproduces against
current `golden.yml`, not whether the old patch still applies.

**#122 brain_handoff TLA+ pilot** (2026-07-29, 7 commits, all `+`). Entirely unlanded, and larger
than a lane: `ADR-0035` is **absent from main**, neither `REQ-SPEC-BRAIN-HANDOFF` nor
`REQ-SPEC-REGISTRY-CONVERGENCE` is in the registry, and `docs/plans/` and `docs/process/` (a docs
reorg this PR performs) do not exist. **`ADR-0035` is a HOLE in the ADR sequence** — 0034 and 0036
both exist, highest is 0061, and nothing else claimed 0035. So the number is still this PR's: it
either lands and fills the gap, or it is retired and the gap needs a tombstone, because a missing
number with no reason is a question every later reader re-asks. **Referred to the operator** — a
two-month-old spec pilot touching `AGENTS.md`, `CONTEXT.md`, `ROADMAP.md` and a docs reorganisation
is a scope decision, not a gater's housekeeping call. Board path is alchemy if it revives.

**#185 W2 rig instrumentation** (2026-09-06, head `afa5af35`, +241/-22). Files: exactly the four of
the detached `hertz-w2-proof` worktree (`activity_link_push_e2e.rs`, `reap-census.sh`,
`reap-census-selftest.sh`, `golden.yml`). This is a later push of that same lane, and its body
records verification the worktree read could not see: **Windows `activity_link_push_e2e` 3/3 in
11.94s**, plus a Linux kitsubito run.

**This is a correction to my own Tier 3 reap ruling of the same day.** I ruled that work DEAD DIAG
partly because it "touches golden.yml on an unproven rig premise" — it was proven — and partly on
its age as an orphan commit, when it is an open PR. hertz classified a detached **worktree**; I
ruled on that classification; **neither of us enumerated open PRs**. A worktree census is not a
census of the work. The fault is the ruling's, not the census's: the ruling is where the population
should have been questioned. The reap itself stands (tree only, patch preserved, commit survives),
and hertz will report whether #185 still applies to current main so it can be triaged as a live lane.

## Standing lesson

A PR backlog rots into three different things that look identical from the list view — landed
residue, a merge button that silently reverts main, and real unlanded work. Ancestor and patch-id
separate them in one command each; the shortstat against a moved main separates nothing.
