> PROJECT index (all agents here load it). Keep under ~17KB — past the read limit the TAIL IS
> SILENTLY DROPPED. Compacted 2026-08-03: 37.5KB->25.6KB->19.7KB->here, NO topic file deleted;
> 41 entries lost their index LINE, then 11 were RESTORED (doyle's mechanism-not-event test: a
> write-up whose MECHANISM can recur is a hazard wearing a date and keeps its pointer). 30 stay
> dropped, all closed events. 194 files in this dir have no index line — 153 orphaned by EARLIER
> passes and never mechanism-tested. Grep this dir; do not assume the index is the population.

- 🔎 [HAZARD-INDEX.md](HAZARD-INDEX.md) — defect/mechanism sub-index, read when HUNTING a symptom: attach wedges, apply/adapter defects, Windows traps, rig traps, + a RETIRED list you must NOT act on. This file = RULES you obey; that = MECHANISMS you consult. Neither is the population.

## Judgement rules (binding)
- [operator delegates drive-to-publish](operator-delegates-drive-to-publish.md) ⭐⭐ 2026-09-15: rule known-mechanism / rig / resource reds yourself and record them; refer only NEW classes of decision.
- [measure, don't direct](report-measurement-never-issue-direction.md) ⚖ doyle gates; agreeing IS direction.
- [a refusal NAMING an identity is not a grant of it](refusal-naming-an-identity-is-not-a-grant.md) ⭐⭐ `AUTH_REFUSED:<name>` = denied, not assigned; `spt whoami` BEFORE the first send.
- [one nonce = ONE execution](handoff-nonce-is-one-execution.md) ⭐⭐ re-send is RE-DELIVERY; check the receipt ON DISK — a context clear erases that you ran it.
- [restating a defect reissues it](restating-a-defect-reissues-it.md) ⭐⭐ a wrong claim written in the indicative becomes fact; quotative frame in the SAME sentence, not the next one.
- [incidental property is not a gate](incidental-property-is-not-a-gate.md) ⭐⭐ "identical bytes prove no build ran" — usually true, never guaranteed; capture as evidence, gate on a pinned negative control.
- [precise > vague](precise-claim-is-falsifiable-vague-is-useless.md) ⭐⭐ · [rig red on purpose](make-a-new-rig-red-on-purpose.md) ⭐⭐ negative control FIRST · [verify the SUBJECT](verify-the-subject-not-just-the-measurement.md) ⭐⭐ ancestry before ANY green.
- [a shell PATH probe ≠ what the PROGRAM spawns](shell-path-probe-does-not-measure-a-spawned-tool.md) ⭐⭐ Windows searches System32 BEFORE PATH; spawn it the way the program does, or it is a hypothesis.
- [probe an UNMODIFIED subject](probe-an-unmodified-subject-needs-no-baseline.md) ⭐⭐ references nothing you edited ⇒ measures the TOOL, no baseline arm, no shared-checkout mutation.
- [predicate needs its tool](a-predicate-without-its-tool-is-not-evidence.md) ⭐⭐ root+dialect+tool+**population** · [probe competence](verdict-from-probe-competence.md) ⭐⭐ a filter that can't express the hunt returns a clean zero.
- [verified members ≠ the population](verified-members-are-not-an-enumerated-population.md) ⭐⭐ a peer-filed set you check member-by-member still has NO measured count; enumerate with your own predicate before "exactly N".
- [a baseline YOU lack may still exist](a-baseline-you-lack-may-still-exist.md) ⭐⭐ publish the current measurement + name the gap; mtimes are NOT integrity evidence.
- [absence needs a sibling probe](absence-needs-sibling-probe.md) · [one sample ≠ negative](one-sample-is-not-a-negative.md) · [cancelled = labelled hole](cancelled-measurement-leaves-labelled-hole.md) · [start event ≠ nothing ran](start-event-is-not-proof-nothing-ran.md) · [exit not silence](verdict-from-exit-not-from-silence.md).
- [audit boring claims](audit-the-boring-claims.md) ⚖ discipline skipped where you expect AGREEMENT · [name file AND sha](name-the-file-and-sha-a-condition-came-from.md) ⭐⭐ a shared noun ≠ a shared claim.
- [hedge ≠ grounding](hedging-classification-is-not-grounding-the-observation.md) · [intermittent green = zero info](intermittent-green-is-zero-information.md) · [ruling rests on a premise](ruling-rests-on-a-premise.md) · [no post-op sha = prediction](confirmation-without-postop-sha.md) · [no version floor pre-ship](no-version-floor-before-it-ships.md).
- [guard anchored to a live lookup](guard-anchored-to-a-reusable-lookup.md) ⭐⭐ pid-reuse guard reading its reference FROM the reusable table; anchor on the captured value, and near ≠ exact.
- [cfg-gated is invisible to the other gate](cfg-gated-code-is-invisible-to-the-other-platform-gate.md) ⭐⭐ not compiled on Windows; prove the REACHING mutation on box 2.
- [process-global bystander](bystander-test-reads-process-global.md) · [two locks one env var](two-locks-one-env-var.md) · [unknown polarity](containment-ownership-and-unknown-polarity.md) · [stacked defects](stacked-defects-mask-each-other.md) · [premature closure](premature-closure-guards.md) · [sweep site counts](sweep-dispatch-site-counts.md) · [dispatch on overlap](dispatch-on-overlap-not-on-merge.md).
- [measure what costs one command](measure-what-costs-one-command.md) · [name the environment](tool-claim-must-name-its-environment.md) · [load axes](load-claim-needs-measured-axes.md) · [window load](window-assertion-load-direction.md) · [rig inherits the defect](rig-inherits-the-defect-it-studies.md) · [remedy from refusal state](remedy-must-run-from-refusal-state.md).
- [rule failed its author → mechanism](rule-failed-its-author-needs-a-mechanism.md) · [prompt ≠ boundary](prompt-prohibition-is-not-a-boundary.md) · [ground don't assume](ground-dont-assume-on-incidents.md) · [measure box before instrument](measure-the-box-before-the-instrument.md) · [lead with the boxless defect](lead-with-the-defect-that-needs-no-box.md) · [survive re-derivation](structural-fact-must-survive-rederivation.md) · [cite the contract](clean-room-evidence-cite-contract.md) · [no value expansion](secret-env-probe-no-value-expansion.md) · [your cadence blocks](your-cadence-can-be-the-blocker.md).

## Record hygiene
- [audit whole file](doc-audit-reads-whole-file.md) · [amendment falsifies more](amendment-falsifies-more-than-named.md) · [correct by replacement](correct-by-replacement-not-annotation.md) · [stale carried-forward](stale-carried-forward-sentence.md) · [retraction sweeps STRINGS](retraction-sweeps-diagnostic-strings.md) · [docs positive framing](docs-positive-framing.md) must-DO not must-NOT; upstream in experimplate.
- [shortform tags can silently not dispatch](shortform-tag-silent-nondispatch-after-recharge.md) ⭐⭐ no DISPATCH_RESULTS in the next briefing = UNSENT; audit io-events MSG_OUT; rulings/GOs go by `spt send` (echoes SENT/QUEUED).
- [commune stale by one msg](commune-stale-by-inflight-message.md) ⭐⭐ replay io-events before claiming "never received" · [commune = testimony](commune-is-testimony-not-an-artifact.md) · [ingest dies silently](commune-ingest-dies-silently.md) can resume you STALE · [drops are box-wide](commune-drops-orphaned-box-wide.md) ⭐⭐ · [two roots diverged](two-memory-roots-diverged.md) ⭐⭐ session root picks which loads; ⛔ the compaction nag on THIS file is wrong — do not comply · [infra register ruling](infra-register-ruling.md) infra/CI debt → INFRA-REGISTER.md.

## Gate & test craft
- [background Bash lacks jq](background-bash-lacks-jq.md) ⭐⭐ a `while … jq …` waiter spins forever on "command not found"; use `gh --jq`, test the predicate once in the background first.
- [Start-Process -ArgumentList joins tokens UNQUOTED](start-process-argumentlist-unquoted-c-payload.md) ⭐⭐ `@('-c','bash /path …')` reaches bash as `-c bash` = interactive shell, script becomes $0, zero receipts; self-quote the payload token and read the child's CommandLine.
- [redirected Start-Process dies with the tool call](redirected-start-process-dies-with-tool-call.md) ⭐⭐ `-Redirect*` = inherited console ⇒ rustc `0xc000013a` STATUS_CONTROL_C_EXIT when the call ends; detach `-WindowStyle Hidden`, no redirects, driver Tees its own logs.
- [elevated spt verb pauses on a fresh console](elevated-spt-verb-pauses-on-fresh-console.md) ⭐⭐ `GetConsoleProcessList()==1` ⇒ blocks on stdin; UAC relaunch hangs an unattended leg, mutex still held.
- [discarded drain result passes a TRUNCATED capture](discarded-drain-result-passes-truncated-capture.md) ⭐⭐ `[void]$t.Wait(ms)` eats timeout+fault; require both drains to SUCCEED before parsing.
- [logger-teeing helper can't return a value](logger-teeing-helper-cannot-return-a-value.md) ⭐⭐ `record` tees, so `x=$(f)` eats the log — IR-123: the gate was unpassable on the ACCEPTED path · [powershell.exe arg/exit traps](powershell-exe-arg-and-exit-traps.md) ⭐⭐ `-File` collapses arrays; no `exit $LASTEXITCODE` launders 2→1; unresolvable path = exit 0 · [TaskStop ≠ tree dead](taskstop-does-not-reap-the-tree.md) survivor ate a later run's evidence.
- [bg waiter KILLED by box memory pressure](background-waiter-killed-by-box-memory-pressure.md) ⭐ "killed: low on memory" ≠ the event; re-read the subject, prefer paced foreground checks; pre-clear zombies die the same way.
- [bg subagent SURVIVES recharge, arrives late](background-agent-survives-recharge-arrives-late.md) ⭐⭐ absent file at wake ≠ dead agent (30 min later it overwrote the path I had re-authored); give a delegate its OWN output path, check /tasks before re-doing its work.
- [rig mechanisms not memory](gate-rig-mechanisms-not-remembered-steps.md) leg 0 = throwaway target; sweep exes before EVERY cargo · [disposal is a rig STEP](gate-target-disposal-is-a-rig-step.md) · [isolated worktree](gate-clean-target-not-incremental.md) · [int via nextest](gate-int-tests-with-nextest-not-bare-cargo-test.md) · [clippy --workspace](ci-clippy-preflight-workspace.md) · [gate vs documented design](gate-against-documented-design.md) · [cross-platform leg](gate-cross-platform-leg.md).
- [wrapper-reserved destination self-refuses](wrapper-reserved-destination-self-refusal.md) ⭐⭐ L2 publishes RecordFile before its subject; absence checks dry-only, run REQUIRES the reservation.
- [helper picks FIRST ⇒ re-serves a RETIRED resource](helper-finds-first-reserves-retired.md) ⭐⭐ arm 2+ replays arm 1's ring, real viewport unserved, later arms NEVER execute; tell = an id repeating where the allocator is monotonic.
- [non-pump read is UNBOUNDED](nonpump-brain-read-is-unbounded.md) ⭐⭐ `cold_start` ⇒ io_timeout None ⇒ `call_deadline()` None; a waiting arm hangs to nextest terminate-after, not a red — and the red you just fixed may have been the loop's only exit.
- [behavior → grep tests](behavior-change-grep-tests-not-comments.md) · [shared seam → ALL seam tests](shared-seam-change-run-all-seam-tests.md) · [seam red needs repeat-proof](seam-touched-red-needs-repeat-proof.md) · [main baseline](main-baseline-procedure.md) · [twohost window](twohost-run-window-discipline.md) · [unmergeable PR blocks CI](unmergeable-pr-blocks-ci.md).
- [toml tail-union drops the shared header](toml-tail-union-drops-shared-header.md) ⭐⭐ HEAD+THEIRS union inside the markers loses the `[[requirements]]` above them; assert header count == id count after any toml merge.
- [count the string you REPLACE](scripted-edit-zero-match-refusal.md) ⭐⭐ ASCII-only anchors · [restore presumes a baseline](restore-step-presumes-committed-baseline.md) `git checkout --` DELETES uncommitted work · [correct fix deletes mitigation](correct-fix-deletes-accidental-mitigation.md).
- Real-harness escapes — [mock-gating escape](v0121-realharness-reopen.md) ⭐⭐ green on mocks + in-proc reconcile, broken in the real harness · [source-read PASS refuted](v013-forkpty-groundtruth.md) code-gate PASS ≠ integration; Linux forkpty RED.
- [journaled seq reuse replays the retired stream](journaled-op-seq-reuse-replays-retired-stream.md) ⭐⭐ EffectKey has no conn/stream; same MintedOp seq twice on one broker = old id, "no such stream", fake product red — grep the test before granting a window.
- [discriminator question](discriminator-question.md) · [external observable](outcome-discriminates-what-instrument-cannot.md) · [refuse mechanism first](refuse-mechanism-until-something-discriminates.md) · [instrument soundness](instrument-soundness-guards.md) · [is this red mine](is-this-red-mine-delta-test.md).
- [a nextest GREEN discards your trace](nextest-green-discards-your-trace.md) ⭐⭐ passing output is printed NOWHERE; structural predictions need `--success-output immediate` in the FIRST producer.
- [count predicate needs its own positive control](count-predicate-needs-its-own-positive-control.md) ⭐⭐ correct filter + dead counting grep = same clean zero; negative control reading 0 too = dead instrument; binary() vs test() names.
- Filters reading as absent — [positive control](zero-match-filter-reads-as-absent.md) · [nextest matches names](nextest-zero-match-filter-trap.md) · ["1 test run"](nextest-singular-summary-parse.md) · [absence proxy](absence-proxy-breaks-when-success-writes.md).
- Coverage gaps — [uniform-table](uniform-table-blindness-sweep.md) · [every return arm](every-return-arm-is-a-copy.md) · [setup suppresses the arm](setup-suppresses-failing-arm.md) · [wrong population](gate-population-excludes-consumers.md) · [miss the CALLERS](gate-population-covers-consumers.md).
- [full disk fabricates an EMPTY safety net](full-disk-manufactures-empty-safety-artifact.md) ⭐⭐ `git diff > patch` at ENOSPC = 0-line file reading "nothing to preserve"; reap own build output FIRST, verify nets by wc -l + apply --check.
- [Git Bash tar reads `C:` as a remote host](git-bash-tar-reads-drive-letter-as-remote-host.md) ⭐ `--force-local` or bsdtar; a Bash-side archive check reds on the PATH, not the bundle.
- [pipefail masks/fabricates](render-not-read-pipefail.md) · [SIGPIPE 141](shell-bash-adds-pipefail-sigpipe.md) · [seed descent from dead parent](seed-descent-from-dead-parent.md) · [torn window reachability](torn-window-needs-reachability.md) · [reap duration ≠ window](reap-step-duration-is-not-the-window.md) · [husk reads as default](husk-reads-as-default-defeats-durability.md) · [stale-snapshot proxy](stale-snapshot-equality-proxy.md) · [tick granularity](pair-test-tick-granularity.md) · [fixture ripple](liveness-aware-derivation-fixture-ripple.md) · [a2 r2 specimens](a2-golden-r2-specimens.md).
- [bootstrap-firewall 3 s cap vs rule-heavy host](bootstrap-firewall-3s-cap-fails-on-rule-heavy-host.md) ⭐⭐ v0.70.0 pre-write snapshot killed at 3000 ms on a 1014-rule box ⇒ no rule written; count the store + time the query before any LAN field window.
- [live capture read needs ReadWrite share](live-capture-read-needs-readwrite-share.md) ⭐⭐ ReadAllText/Get-Content on a file a live subject writes = 0x80070020 both ways; open ReadWrite|Delete; daemon stderr lives in SPT_HOME\logs\daemon.stderr.log.
- [census readability ≠ admission](process-census-readability-is-not-an-admission-predicate.md) ⭐⭐ live-fleet box always has unreadable-path spt.exe (elevated perches + CLI children); 12/12 refusal; discriminate by creation time + re-read.
- [consumer leg must carry golden's ENV block](consumer-leg-must-carry-golden-env-block.md) ⭐⭐ scrub-then-add-nothing = stricter than golden; deadline-named red ⇒ check the knob before the mechanism; two cohort arms.
- [live-agent env leaks into test legs](live-agent-env-leaks-into-test-legs.md) ⭐⭐ OWL_SESSION_ID inherited by a driver reaches auth/self-resolution, not just the stop guard — attempt VOID; scrub + record env before cargo.
- [two-daemon one-box](two-daemon-one-box-rig.md) · [isolated home/socket](isolated-home-isolates-broker-socket.md) · [resident-broker repro](isolated-resident-broker-field-repro.md) · [daemon lib tests deadlock](daemon-lib-tests-deadlock-on-live-host.md) · [verification gates](spt-verification-gates.md) · [alarm every run](alarm-every-test-run.md) · [delegate to spt-test-engineer](delegate-tests-to-spt-test-engineer.md) · [subagent stalls](test-subagent-stalls-on-hanging-test.md).
- [cargo builds pkg bins for int tests](cargo-builds-package-bins-for-integration-tests.md) ⭐⭐ same-package fixtures ALREADY guaranteed; env! adds NO edge — gap is cross-package + UNIT tests; bindeps needs nightly, nextest needs the config form.
- [activation is yours, evidence may not be](activation-is-yours-evidence-may-not-be.md) ⭐⭐ a missing_stage finding belongs to the commit that ACTIVATED it, not the lane holding the files; "my diff never touches it" is the wrong test.
- [grep REQ tags](grep-req-tags-to-find-impl.md) · [per-wave activation](traceable-per-wave-activation.md) · [seed leaks](experimplate-traceable-seed-leaks.md) · [checker version = CI pin](checker-version-must-match-ci-pin.md) ⭐⭐ 0.2.0 vs 0.4.0 both read green, both wrong · [CI install cache](traceable-reqs-ci-install-cache.md) ⭐⭐ `TRACEABLE_REQS_TOKEN` is DEAD CODE · [spt is binary-only](spt-crate-is-binary-only-no-lib.md) use `--bins` · [never cargo fmt](no-cargo-fmt-in-spt-core.md).
- [check branch](check-branch-before-commit-shared-checkout.md) · [no add -A](no-git-add-a-shared-checkout.md) · [no reset --hard](no-reset-hard-with-uncommitted-work.md) · [worktrees under root](worktrees-under-project-root.md) · [audit watchers](audit-live-watchers-before-rearming.md) survive /clear · [quiet window](quiet-window-predicate.md) gh-only is blind to local builds.
- [lane across boxes = bundle](cross-box-lane-transfer-by-bundle.md) ref not sha; prereq the RECEIVER holds; sha256 both ends; list-heads before build.
- [gh run status freezes](gh-run-status-field-freezes.md) + [poll --json jobs](gh-run-poll-jobs-not-status.md) ⭐⭐ VIEW: `--json jobs` never `status`; ⚠ LIST REJECTS `jobs` · [jobs snapshot ≠ workflow](gh-run-jobs-snapshot-is-not-the-workflow.md) ⭐⭐ `needs:` jobs appear only when eligible; derive the job set from golden.yml at the sha · [gh api leading slash](gh-api-leading-slash-msys-rewrite.md) · [bg cd-relative](background-cd-relative-trap.md).

## Boxes / CI / infra
- [ENLYZEAM daemon lifecycle authorized](enlyzeam-daemon-lifecycle-authorized.md) ⭐⭐ operator 2026-09-17: doyle may stop/start it over ssh; live-hosting node ⇒ `daemon stop` REFUSES, pair is `node stop --force`/`node start`; EncodedCommand recipe + guard-hook trap.
- [CLIXML over ssh hides the error stream](powershell-clixml-over-ssh-hides-error-stream.md) ⭐⭐ grepping `<Objs` away deletes the failure; fold `2>&1 | % {"$_"}` + `EXIT=$LASTEXITCODE` remote-side.
- [milestone add refuses the whole batch on one pre-attached member](milestone-add-batch-refuses-on-one-preattached-member.md) ⭐ 422; read sub_issues first — operator may have bagged members before intake.
- [alchemy create body cap + shell send is an ARGUMENT](alchemy-create-body-cap-and-stage-accumulation.md) ⭐⭐ create ≤1600 chars, detail in `comment #N`; failed `--file` stages ACCUMULATE; stdin pipe = USAGE, nothing sent; cmd tails = ONE quoted string.
- [kitsubito 15 GB: build overlap OOMs the RUNNER](kitsubito-15gb-build-overlap-ooms-the-runner.md) ⭐⭐ slack there is MEMORY not minutes; oomd killed the user slice + operator session, runner OFFLINE; `sudo -n systemctl restart actions.runner…kitsubito` restores; kill by /proc cwd never pkill -f.
- [local cargo overlap VOIDS a runner leg at timeout-minutes](local-cargo-overlap-voids-runner-leg-at-timeout.md) ⭐⭐ Windows unit ~34 min vs 40 cap; a concurrent local build cancels it = VOID not red; overlap only with >15 min slack (2 instances 2026-09-18).
- [merge-push RE-OCCUPIES the box](merge-push-reoccupies-the-box.md) ⭐⭐ the ff-push CONCLUDING a golden STARTS the automatic post-merge ci run on this box's runner — "golden green, box is free" is FALSE for minutes after the merge; it empties after the POST-MERGE run. Runner builds into its OWN target ⇒ CPU contention only, no pool at risk. Parent-chain a stray cargo to `Runner.Worker.exe`; sequence around it, never relocate the runner.
- [seedmap = STARVATION](seedmap-test-collides-live-daemon.md) gate box AND runner · [runner deaf](runner-online-but-deaf.md) · [disk-full CI](hfenduleam-disk-full-ci.md) · [flynn shares it](hfenduleam-hosts-flynn.md) · [leaked daemons](e2e-leaked-daemons-shared-box.md) · [no machine-wide kill](no-machinewide-killon-shared-runner.md) · [which is the listener](spt-daemon-is-live-infra.md) · [reap only your own](rig-ownership-reap-only-your-own.md) · [authenticated ancestry](reap-root-needs-authenticated-ancestry.md).
- [reap YOUR pool at lane close, not at the next refusal](reap-your-pool-at-handoff-not-at-the-next-refusal.md) ⭐⭐ a gater's full build is a lane too; 82.8 GB gate pool redded golden #318 at the 128 GiB Windows floor.
- [new test racing a product budget reds under load](new-test-racing-a-product-budget-reds-under-runner-load.md) ⭐⭐ wait() against a 500 ms product constant = measures the box; assert STATE; land the test fix before rerunning.
- [pool reap reads the OWNER STAMP, not a census](pool-reap-reads-owner-stamp-not-census.md) ⭐⭐ a pool can be RELOCATED between census and reap; read POOL-OWNER.json at reap time — I deleted the only warm pool on the box (2026-09-18).
- Pools — [stale false-green](shared-target-stale-false-green.md) tell = test COUNT · [two live trees](shared-target-two-live-trees.md) · [sccache keys on path](sccache-target-path-in-key.md) · [preflight hang](delegate-build-preflight-hang.md).
- Teardown — [classify first](gate-worktree-target-disk.md) · [junction FIRST](worktree-target-junction.md) · [never into scratchpad](scratchpad-target-trees-eat-the-box.md) · [no inbound link](in-tree-target-has-no-inbound-link.md) · [subtree not session dir](reap-subtree-not-session-dir.md).
- [worktree gitdir BACKSLASH refuses remove](worktree-gitdir-backslash-refuses-remove.md) ⭐ `.git/worktrees/<n>/gitdir` backslash path ⇒ `git worktree remove` refuses; rewrite yours to `/`, retry, prune.
- Pins — [orphan or own cwd](worktree-pin-holder-triage.md) · [pool-claim false orphan](worktree-pool-claim-false-orphan.md) · [orphan conhost](orphan-conhost-cwd-pins-worktree.md) · [husk cleanup](wt-single-process-husk-cleanup.md).
- [full disk FORGES an empty backup](full-disk-forges-empty-preservation-artifact.md) ⭐⭐ `cmd > file` on a full disk exits 128 AND leaves a ZERO-LINE file — the patch you write before deleting reads as "nothing to preserve". Verify a backup by CONTENT; reap what has nothing to preserve FIRST.
- [free-space floor](free-space-floor-blocks-golden.md) 32GB, LNK1318, resource red = UNTESTED · [serial legs share workdir](serial-legs-share-runner-workdir.md) · [two runs per sha](two-runs-per-sha-notification-trap.md) · [thin lane skips int](thin-lane-ci-skips-integration-tests.md) · [opt-in legs skip silently](opt-in-ci-legs-skip-silently.md) skipped = SILENCE · [traceability gate](ci-traceability-gate.md) · [no internal codes](public-help-no-internal-codes-gate.md).
- [tailnet block is NOT rule shape](hfenduleam-program-scoped-firewall-rules-do-not-admit-tailnet.md) ⭐⭐ ⚠ REFUTED 2026-09-12: port+remote scope does NOT admit either; `Tailscale-In` is a host-fw blanket admit AT the tailnet address. ACL verdict unsettled (UDP 7470 arrived).
- [watchdog reports a kill it never made](watchdog-reports-a-kill-it-never-made.md) ⭐⭐ unconditional "stopped" echo + `pkill` ABSENT on msys = guard logs success, arm runs on. Assert the post-state; a SIGKILL mid-compile is a VOID arm, not a red.
- [firewall census clean zeros](windows-firewall-census-clean-zeros.md) ⭐⭐ `Get-NetFirewallPortFilter -All` = Access-denied unelevated; `netsh show rule` omits Program without `verbose` — both fabricate blanket counts. Controls: port 5470 AND spt.exe must both appear.
- [self-host migration](ci-selfhost-migration.md) · [kitsubito speedup](ci-kitsubito-speedup-plan.md) · [kitsubito rig](kitsubito-linux-rig.md) · [wifi-only QUIC seam](kitsubito-wifi-only-quic-seam.md) · [linux runner](linux-runner-migration.md) · [cross-machine rig](cross-machine-test-rig.md) · [gravity deploy](gravity-deploy-procedure.md) · [mirror CI dead](mirror-repo-ci-dead.md).
- [unit-lane isolation](unit-lane-inprocess-isolation.md) · [fixture bins](spt-bin-lane-fixture-bins.md) · [bin-name collision](workspace-bin-name-collision.md) · [libsqlite3-sys corruption](libsqlite3-sys-artifact-corruption.md) · [UAC 740](windows-uac-binary-name-740.md) · same mechanism, second write-up [uac740 dup](win-update-exe-uac740.md) · [PATHEXT shim](ccs-win-pty-program-resolve.md) bare node CLI → os error 193 · [console flash](translation-binary-console-window-bug.md) new spawn site missed CREATE_NO_WINDOW · [IPv6 poisons iroh](broken-ipv6-poisons-iroh-discovery.md) · [service-detection](daemon-service-detection-gotcha.md) · [Linux SPT_HOME no-bug](linux-spt-home-no-bug.md).

## Release
- [ledger](v0121-published.md) — latest **v0.72.0 c108 @`73f19d51`** ([note](v0720-published.md) — #318 HANDED-FILE, golden attempt 2 9/9 after a resource red doyle caused; tested==tagged==main) · [v0.71.0](v0710-published.md) c107 · [v0.70.0](v0700-published.md) c106 · [v0.69.0](v0690-published.md) c105, 3 reds shipped on record · [v0.60.0](v0600-published.md) TURNKEY #212; re-derive via `gh release list --repo BigscreenVR/spt-bs-releases`.
- [v0.52.0](v0520-published.md) five uncancelled reds, tagged≠tested · [v0.51.0](v0510-published.md) `acceptance` cascades, `done` never · [v0.50.0](v0500-published.md) cross-repo never auto-close · [v0.49.0](v0490-published.md) bump-in-PR refusal · [v0.47.0](v0470-published.md) thin-red vs golden-green = stop-and-refer · [v0.46.0](v0460-published.md).
- [standard](release-standard-bump-in-pr.md) ⚖ tested==shipped OUTRANKS bump-in-PR · [counter](release-counter-from-published.md) · [changelog scope](changelog-scope-vs-commit-range.md) · [end-user voice](release-notes-enduser-voice.md) · [--repo required](release-queries-need-repo-flag.md) empty at EXIT 0 on the wrong repo.
- [partial-milestone golden = the REJECTED alternative](partial-milestone-golden-is-rejected-alternative.md) ⭐⭐ "tranche" renames ADR-0050's eject-and-proceed; parity from `gh api …/sub_issues`, FULFILMENT not presence, release-shape unrepairable post-run.
- [co-author trailer loss](co-author-trailer-attribution-loss.md) ⚠ escaped-vs-real BYTES; fix the BUILDER · [golden respin](golden-respin-test.md) · [wave-gap riders](wave-gap-fixes-in-milestone.md) · [scope-strip](milestone-scope-strip-protocol.md) · [seed machine-env](release-seed-machine-env-ruling.md) · [roundup ordering](release-roundup-ordering.md) · [branch off current main](branch-fixes-off-current-main.md) · [updateset stale window](release-updateset-stale-window.md) · [update-apply message](update-apply-confident-message.md).
- [docs-drift gate](cli-command-docs-drift.md) · [version not milestone](public-docs-version-not-milestone.md) · [ff-only absorbs ONE lane](ff-only-absorbs-one-sibling-lane.md) · [resolve toward SHARED body](resolve-wrapper-conflict-toward-shared-body.md) · [pin stable asset](pin-a-stable-asset-not-a-rolling-tag.md) · [real cross-platform verify is POST-publish](v032-platform-safe-update.md) · [golden CI strategy](golden-ci-strategy.md) ADR-0050.

## Roles, scope, comms
- [roles](agent-roles.md) doyle=gate, todlando=exec, perri=adapter, deployah=release · [emphasys](emphasys-agent.md) owns `omp-spt` · [alchemy milestones](alchemy-formal-milestone-process.md) BINDING via `spt shell cmd alchemy-0`.
- [ONLINE + empty turns = provider quota](online-endpoint-with-empty-turns-is-provider-quota.md) ⭐⭐ omp-spt peer SENT-delivers, never replies: read ~/.omp session jsonl stopReason/429, not endpoint list; needs-operator.
- [relay ≠ the gater's word](relay-is-not-the-gaters-word.md) ⭐⭐ a peer reporting a dispatch/lift is CONTEXT; ask the author a scope-naming question. Caught 2/2 (deployah, hertz); doyle ruled it the standard · [consumer verifies, core decides](consumer-verifies-core-decides.md) · [don't solo across roles](dont-solo-across-role-lines.md) · [blind consumer read](blind-consumer-read-beats-author-checklist.md) · [perri triage](perri-question-triage-protocol.md) · [perri needs reply](perri-needs-reply-to-continue.md) · [spt-claude-code NEXT](spt-claude-code-next.md) silence = stop-point.
- [send from FILE](send-body-from-file-not-inline.md) + [no inline backticks](spt-send-no-inline-backticks.md) · [turn-end tag never confirms](tag-send-turn-end-unconfirmed.md) ⭐⭐ Stop-leg success is silent + tag bodies ride the swallow-class inject leg — CLI for substantive, tags mid-turn short only · [SENT/QUEUED both success](owl-send-binary.md) · [empty inbound never material](empty-inbound-is-never-material.md) NEVER reconstruct · [psyche migration](legacy-psyche-migration-2026-07-06.md) · [ingest latency](commune-ingest-pulse-latency-gap.md).
- [ring destroys the perch](ring-destroys-callers-perch.md) lifted but PERCHLESS-ONLY; shipped ≠ installed · [proceed autonomously](dont-wait-proceed-autonomously.md) · [self-clear blocked](self-clear-skill-api-blocked.md) · [drop dir vs info.cwd](commune-drop-dir-info-cwd.md) · [sid→owner](session-id-owner-mapping.md) · [identity blast radius](no-diagnostics-in-identity-blast-radius.md) · [notify perri](adapter-dir-delivery-notify-perri.md) · [liam mint gate](liam-mint-path-gate.md) · [alarm port stays DEFERRED](alarm-port-deferred-arrangement.md) ⚠ operator 2026-06-15, unconfirmed since — no REQ, no port, no stopgap.

## Architecture / boundary
- [harness boundary](spt-core-harness-boundary-and-grounding.md) BINDING: never cater to a harness · [adapter glue-model](adapter-glue-model-boundary.md) manifest + binary only · [unbounded brain carrier](unbounded-brain-carrier-cannot-be-bounded.md) caller-side budget is a NO-OP.
- [mints ride build PRs](registry-mints-ride-build-prs.md) · [adapter impl triage](adapter-impl-question-triage.md) fix the PUBLIC contract · [adapter-agnostic resolution](harness-adapter-agnostic-resolution.md) · [plugin name](sptc-plugin-name-ruling.md) · [--release archive](adapter-add-release-archive.md) · [tips → published docs](adapter-tips-published-docs.md) · [cplugs publish](cplugs-publish-mechanics.md).
- [local rc rides NetHost 2-worker runtime](local-rc-rides-nethost-two-worker-runtime.md) ⭐⭐ rc bytes both directions share the runtime the pump's dead-peer dials starve; #302 candidate #1 — check runtime occupancy before PTY locks.
- [broker is state anchor](broker-is-daemon-state-anchor.md) · [QUIC deadline](v083-broker-quic-deadline.md) · [pump IPC deadline](pump-ipc-deadline-fix.md) · [boot-race self-heal](boot-race-self-heal.md) · [EVENT envelope](event-envelope-reply-to-removal.md) · [F-007 relay](f007-live-relay-acceptance.md).

## Change-shape traps
- [declare ≠ enforce site](declare-site-is-not-enforce-site.md) · [seat edge erases the grant](grant-erased-by-seat-edge.md) · [key rides the artifact](key-must-ride-the-crossing-artifact.md) · [single-source discriminant](single-source-discriminant-marker.md) · [forward ref squats](forward-ref-squats-positional-key.md) · [redirect folded seeds](redirect-folded-req-seeds.md).
- [one composer two renderers](one-composer-two-renderers.md) · [condition ≠ cadence](surfaced-payload-names-its-cadence.md) · [ladder per machine](refusal-ladder-fires-per-machine.md) · [CRC-swap blindness](crc-swap-metadata-blindness.md) · [cross-wave needs assembled head](cross-wave-claims-need-assembled-head.md) · [lock delta edge diff](lock-delta-needs-edge-diff.md) · [assemble onto the repair tip](assemble-onto-the-repair-tip-not-a-sibling.md) ⭐⭐ assert by BLOB.

## Runtime defects
- Windows liveness — [only the process table](derived-view-vs-on-disk-record.md) · [pid reuse](pid-reuse-across-reboot.md) ⭐⭐ MEASURED same-boot recycle in 30s, both user-owned; bare-pid probe unsound, needs `pid_started_at` · [stale-breadcrumb tree-kill](stale-breadcrumb-tree-kill-class.md) · [breadcrumb pid hazard](breadcrumb-pid-tree-kill-hazard.md) exit 101=assertion, 1=terminated.
- [gc spin #125](swarm-discovery-gc-spin.md) · [autostart inherits job-escape](autostart-inherits-job-escaped-daemon.md) · [agents lock spt.exe](live-agents-lock-target-debug-spt-exe.md) reap BY PATH · [spt home](spt-home-is-localappdata-spt-core.md) + [legacy vs live](owlery-home-legacy-vs-live.md) ⭐⭐ `\spt` is DEAD; wrong root = "never existed".
- Pump / wedge mechanisms — [dial does NOT fast-fail](subnet-peer-pump-stall-rca.md) offline-but-resolvable peer blocks past the 30s bound · [io_timeout ≠ connect bound](cold-start-pump-iotimeout-not-connect.md) misread 3× · [broker alive, brain gone](update-wedge-rca-v53.md) no rc countdown = frozen PTYs, not a crash · [resume steals the controller](update-wedge-2-resume-steal.md) · [poison churn is benign](v0306-poison-log-churn.md) else it reads as the wedge recurring · [inline deliver starves the viewer](v013-rc-attach-flood-wedge.md) drain thread throttled.
- [psyche failure is SELF-only](psyche-host-failure-is-self-only.md) ⭐⭐ file-ingest and summariser-spawn are SEPARATE · [fail log](psyche-fail-log-instrument.md) · [spend limit](psyche-ccs-bigscreen-spend-limit.md) · [visibility lease](subnet-visibility-lease-regression.md).

## Active work / project state
- [Milestone A golden](milestone-a-golden-landed.md) v0.46.0 @`8f3e10b`, two-host PROVEN; ⚠ A not done (W4/W5) · [next-batch v0.46.1](next-batch-register-v0461.md) 11 items, ⚠ group A UNVERIFIED · [findings backlog](spt-core-findings-backlog.md).
- [W3 engine-room](w3-engine-room-progress.md) + [recon](w3-engine-room-recon.md) ⭐⭐ 2 ADR-0052 clauses FALSE vs code · [W2 subnet](w2-two-key-subnet-progress.md) ⚠ rate limiter load-bearing for security · [W-SPEC](wspec-access-model.md) DISCHARGED @`f54bd7b`.
- [access-control grill](access-control-grill-2026-07.md) adversary = agents · [REQ confusion audit](req-confusion-audit-run.md) ⭐⭐ a PRE-FILTERED pool kills the low-end reference class · [TLA+ pilot](tla-spec-pilot-progress.md) · [battery disposal leg](gate-battery-disposal-leg.md).
- [emphasys endpoint loss](emphasys-endpoint-loss-incident.md) · [summarizer invented a roster](commune-summarizer-invented-peer-roster.md) ⭐ durable identity is GENERATED · [IR-18 + (b) split](ir18-lane-and-b-split-assignment.md) · [IR-15 oracle](ir15-test-liveness-oracle.md) · [bench wiring](bench-wiring-landed.md) · [hertz queued](hertz-queued-post-W4.md) · [attractor harness](attractor-build-harness.md).
- 🏁 [FIELD-TRUTH](field-truth-w1-progress.md) · [RESIDENT-SERVICE](resident-service-w1-gate.md) · [IDLE-EDGE](idle-edge-w1-progress.md) · [DAEMON-LIFECYCLE](daemon-lifecycle-progress.md) · [NOTIF-TRUTH](notif-truth-plan.md) · [TEARDOWN-AUTHORITY](teardown-authority-progress.md) · [RC-RENDER-TRUTH](rc-render-truth-progress.md) · [THE-FORKENING](the-forkening-plan.md) · [SHELL-LAUNCH](shell-launch-truth-seed.md) · [claude-spawn](hfenduleam-daemon-path-claude-spawn.md) · [W2-C2 streams](w2-c2-stream-lifetime-design.md) · [v0.39.4 RCA](v0394-field-bugs-hertz-rca.md) · [psyche-download gap](omp-spt-psyche-download-gap.md) · [frames encoding](frames-encoding-docs-defect.md).
- [msys grep strips CR](msys-grep-strips-cr-clean-zero.md) ⭐ CRLF-count probes on grep read 0 on a CRLF file; use tr -dc + wc, positive control first.
- [wall without exit+post-state is not a measurement](wall-needs-exit-code-and-post-state.md) ⭐⭐ a parse failure is the FASTEST run; rank by wall alone and the broken script wins.
- [Windows refused = ~2.05 s](windows-client-refused-connect-costs-2s.md) ⭐⭐ 5 SYNs flat ~511 ms through RSTs, 2 Win versions, Linux ~0; WHY unmeasured — never bound a Win-client connect < ~2.1 s and read the timeout as a face.
- [outcomes must be exclusive](preregistered-outcomes-must-be-exclusive.md) ⭐ mechanism × locus overlap confirms either way; numbers on a named mechanism are UNKNOWN until read; flush a -w pcap before reading.
- [trace records only UPS](trace-records-only-ups-routinely.md) ⭐⭐ every other hook writes only on exceptional branches ⇒ trace can never witness its own instrument; UPS probes are {YES,VOID}, never NO.
- [admission probe needs same-host admitted-port control](firewall-admission-probe-needs-same-host-admitted-port-control.md) ⭐⭐ timeout = listener down OR path blocked OR rule dead; local triple + Dropbox 17500/Steam 27036 from the same client discriminate; tailnet arm never does on HFENDULEAM.
- [EnforcementStatus read raw CIM](netsecurity-enforcementstatus-read-raw-cim.md) adapted view = display strings ("Enforced", "ProfileInactive", "NoLocalUser"); read CimInstanceProperties UInt16[]; [5,20] ⇒ PrimaryStatus Inactive ⇒ not admitting.
- [alchemy create cap 1600 + stages ACCUMULATE](alchemy-create-body-cap-and-stage-accumulation.md) ⭐⭐ failed create keeps the --file stage; send text is an ARG not stdin; cmd tails = ONE quoted string; --file on comment ATTACHES.
- [security-filter raw CIM keys are PLURAL](netsecurity-security-filter-raw-cim-keys-are-plural.md) ⭐⭐ LocalUsers/RemoteUsers/RemoteMachines; singular = null under strict mode; ENFORCED = OK + 1∈raw + 20∉raw.
