[
  {
    "pair": 1,
    "a": "REQ-ACL-ACCESS-REFRESH-VERB",
    "b": "REQ-ACL-NODE-VIEW",
    "a_title": "`spt api access-refresh` is MINTED THIS WAVE BUT REFUSES \u2014 the verb exists, parses and is documented, and its refusal names why: the capture-refresh i",
    "b_title": "`spt daemon access` is the node-tier roster: the entities the node-scope rules name (node and subnet-wildcard subjects \u2014 a node-scope sender-endpoint ",
    "overlap_pct": 7.792207792207792,
    "a_full": "`spt api access-refresh` is minted this wave but refuses \u2014 the verb exists, parses and is documented, and its refusal names why: the capture-refresh is engine-room-only, and engine-room enforcement (a",
    "b_full": "`spt daemon access` is the node-tier roster: the entities the node-scope rules name (node and subnet-wildcard subjects \u2014 a node-scope sender-endpoint rule cannot exist by schema), this machine's own m"
  },
  {
    "pair": 2,
    "a": "REQ-ACL-MODE-ADVISORY-GOSSIP",
    "b": "REQ-MESH-5",
    "a_title": "A subnet-mode change gossips ADVISORILY \u2014 it produces a notification and nothing else. An existing member's EFFECTIVE posture never changes remotely: ",
    "b_title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration \u2014 expendable test fleet, re-pairs fresh under th",
    "overlap_pct": 0.0,
    "a_full": "a subnet-mode change gossips advisorily \u2014 it produces a notification and nothing else. an existing member's effective posture never changes remotely: the captured mode (req-acl-subnet-mode-capture) is",
    "b_full": "hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration \u2014 expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). warn-on-ch"
  },
  {
    "pair": 3,
    "a": "REQ-ACL-RC-VIEW-SPLIT",
    "b": "REQ-ACL-SUBJECT-CHAIN",
    "a_title": "Watching an endpoint's terminal and DRIVING it are separately grantable: attach gates on the request's AttachIntent \u2014 Viewer -> RC_VIEW, Control/Take ",
    "b_title": "One FIRST-MATCH-WINS subject chain decides every access question, with an implicit-open bottom that preserves current fleet behavior. Order: per-endpo",
    "overlap_pct": 8.095238095238095,
    "a_full": "watching an endpoint's terminal and driving it are separately grantable: attach gates on the request's attachintent \u2014 viewer -> rc_view, control/take -> rc_attach. before this, one access_check(endpoi",
    "b_full": "one first-match-wins subject chain decides every access question, with an implicit-open bottom that preserves current fleet behavior. order: per-endpoint sender-endpoint rule -> per-endpoint node rule"
  },
  {
    "pair": 4,
    "a": "REQ-ACTIVITY-LINK-PUSH",
    "b": "REQ-IDLE-PARKED-DELIVERY",
    "a_title": "An owned Shell observes its owner's busy/idle transitions as an activity frame on the EXISTING shell-link event stream (ADR-0048 decisions 1-3; perri ",
    "b_title": "W5 (LIFECYCLE-TRUTH): a message QUEUED to an ALREADY-idle spt-hosted endpoint is delivered without an operator poke. ROOT (live during the milestone d",
    "overlap_pct": 1.7857142857142856,
    "a_full": "an owned shell observes its owner's busy/idle transitions as an activity frame on the existing shell-link event stream (adr-0048 decisions 1-3; perri contract-lock 2026-07-24). link-scoped (owner impl",
    "b_full": "w5 (lifecycle-truth): a message queued to an already-idle spt-hosted endpoint is delivered without an operator poke. root (live during the milestone dispatch 2026-07-07): the idle-edge drain (f-023 le"
  },
  {
    "pair": 5,
    "a": "REQ-ADAPTER-FLOOR-ENFORCE",
    "b": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
    "a_title": "F-5 (REMOTE-TRUTH triage \u00a7F-5 + doyle rulings 2026-07-05): BOTH adapter acquisition verbs (spt adapter add + spt adapter update) REFUSE when the insta",
    "b_title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) ",
    "overlap_pct": 0.3731343283582089,
    "a_full": "f-5 (remote-truth triage \u00a7f-5 + doyle rulings 2026-07-05): both adapter acquisition verbs (spt adapter add + spt adapter update) refuse when the installed spt-core is below the adapter's declared [ada",
    "b_full": "per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded llm call (echo-commune summarizer, psyche turn) runs off the shared scheduler so one slow/hung cal"
  },
  {
    "pair": 6,
    "a": "REQ-ADAPTER-LIVE-UPDATE",
    "b": "REQ-ADAPTER-UPDATE-MESSAGE",
    "a_title": "An adapter update is live and daemon-coordinated (the adapter analog of brain self-update, ADR-0004): for an endpoint with a running RESIDENT adapter ",
    "b_title": "An adapter manifest may declare `[update].message` \u2014 a plain (multi-line) human notice surfaced to stdout, markdown-rendered (the v0.13.0 helpfmt pros",
    "overlap_pct": 5.58659217877095,
    "a_full": "an adapter update is live and daemon-coordinated (the adapter analog of brain self-update, adr-0004): for an endpoint with a running resident adapter binary (today the `[message-idle-translation-binar",
    "b_full": "an adapter manifest may declare `[update].message` \u2014 a plain (multi-line) human notice surfaced to stdout, markdown-rendered (the v0.13.0 helpfmt prose path), only when `spt adapter update` actually a"
  },
  {
    "pair": 7,
    "a": "REQ-ADAPTER-MULTIPLATFORM-SPT",
    "b": "REQ-SEAM-UPDATE",
    "a_title": "A `.spt` adapter archive may pack multiple platforms in one signed asset: shared `manifest.toml` + `strings/` at the root, role binaries under per-Rus",
    "b_title": "Adapter-update avenue (file-pull / delegated command)",
    "overlap_pct": 0.0,
    "a_full": "a `.spt` adapter archive may pack multiple platforms in one signed asset: shared `manifest.toml` + `strings/` at the root, role binaries under per-rust-target-triple subdirectories (adr-0016 triple vo",
    "b_full": "adapter-update avenue (file-pull / delegated command) "
  },
  {
    "pair": 8,
    "a": "REQ-ADAPTER-TEMPLATE-KEY-VALIDATION",
    "b": "REQ-SESSIONS-LOG-ENDPOINT-ATTRIBUTION",
    "a_title": "P-1 core half (WORKER-TRUTH triage): `adapter add`/`adapter update` validate every declared role template \u2014 command, cwd, and [env] inject values \u2014 ag",
    "b_title": "C2 (F028, infra; ROOT-CAUSED + severity-upgraded doyle RCA 2026-07-03): cross-endpoint perch contamination \u2014 a foreign psyche's SessionStart hook REBI",
    "overlap_pct": 0.6993006993006993,
    "a_full": "p-1 core half (worker-truth triage): `adapter add`/`adapter update` validate every declared role template \u2014 command, cwd, and [env] inject values \u2014 against the substitution-key catalog (spt-runtime ba",
    "b_full": "c2 (f028, infra; root-caused + severity-upgraded doyle rca 2026-07-03): cross-endpoint perch contamination \u2014 a foreign psyche's sessionstart hook rebinds a victim perch's identity, not merely its ledg"
  },
  {
    "pair": 9,
    "a": "REQ-ADAPTER-UPDATE-INPLACE",
    "b": "REQ-INST-14",
    "a_title": "Bug #18: spt adapter update fails at re-register with os error 2 because it derives the install dir from the update repo NAME (_github/<safe>) instead",
    "b_title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
    "overlap_pct": 2.1052631578947367,
    "a_full": "bug #18: spt adapter update fails at re-register with os error 2 because it derives the install dir from the update repo name (_github/<safe>) instead of updating in place at the adapter record source",
    "b_full": "resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated resource advertisement (subnet resource registry)**: a per-endpoint *"
  },
  {
    "pair": 10,
    "a": "REQ-ADAPTER-UPDATE-INPLACE",
    "b": "REQ-UPDATE-RUNNING-IMAGE-SURFACE",
    "a_title": "Bug #18: spt adapter update fails at re-register with os error 2 because it derives the install dir from the update repo NAME (_github/<safe>) instead",
    "b_title": "`spt` surfaces the RUNNING broker image version beside the on-disk version so an updated-looking node reveals broker-side dormancy. ROOT (F-025): `spt",
    "overlap_pct": 2.7777777777777777,
    "a_full": "bug #18: spt adapter update fails at re-register with os error 2 because it derives the install dir from the update repo name (_github/<safe>) instead of updating in place at the adapter record source",
    "b_full": "`spt` surfaces the running broker image version beside the on-disk version so an updated-looking node reveals broker-side dormancy. root (f-025): `spt update apply` restarts the brain only (adr-0018 d"
  },
  {
    "pair": 11,
    "a": "REQ-ADAPTER-UPDATE-MESSAGE",
    "b": "REQ-UPDATE-RUNNING-IMAGE-SURFACE",
    "a_title": "An adapter manifest may declare `[update].message` \u2014 a plain (multi-line) human notice surfaced to stdout, markdown-rendered (the v0.13.0 helpfmt pros",
    "b_title": "`spt` surfaces the RUNNING broker image version beside the on-disk version so an updated-looking node reveals broker-side dormancy. ROOT (F-025): `spt",
    "overlap_pct": 3.7735849056603774,
    "a_full": "an adapter manifest may declare `[update].message` \u2014 a plain (multi-line) human notice surfaced to stdout, markdown-rendered (the v0.13.0 helpfmt prose path), only when `spt adapter update` actually a",
    "b_full": "`spt` surfaces the running broker image version beside the on-disk version so an updated-looking node reveals broker-side dormancy. root (f-025): `spt update apply` restarts the brain only (adr-0018 d"
  },
  {
    "pair": 12,
    "a": "REQ-API-2",
    "b": "REQ-START-3",
    "a_title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
    "b_title": "spt-hosted startup: spawn-session then api bind (no file)",
    "overlap_pct": 0.0,
    "a_full": "the api subcommand surface (bind/listen/poll/state/worker/boundary/...) ",
    "b_full": "spt-hosted startup: spawn-session then api bind (no file) "
  },
  {
    "pair": 13,
    "a": "REQ-ATTACH-IDEMPOTENT-REPLAY",
    "b": "REQ-HAZARD-ATTACH-WEDGE",
    "a_title": "The equal-generation lease rung is idempotent for the same connection. (ADR-0047 decision 3, AMENDING ADR-0044's ladder inside the equal-gen rung; her",
    "b_title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harne",
    "overlap_pct": 1.7006802721088436,
    "a_full": "the equal-generation lease rung is idempotent for the same connection. (adr-0047 decision 3, amending adr-0044's ladder inside the equal-gen rung; hertz v0.39.4 field bug 4, pinned via obs breadcrumbs",
    "b_full": "a legitimately dead pty child (real crash/kill) + an undrained operator pump must not wedge the broker for all other clients. root (v0.12.0 real-harness defect): loopback attach output is a blocking w"
  },
  {
    "pair": 14,
    "a": "REQ-BIND-HONEST-SELF-STAMP",
    "b": "REQ-CONN-POISON-ATTRIBUTION",
    "a_title": "C2-ROOT (F028, doyle RCA 2026-07-03): the identity-attribution ROOT behind REQ-SESSIONS-LOG-ENDPOINT-ATTRIBUTION \u2014 three composing defects let a psych",
    "b_title": "MSG-IDENTITY W6 / F-039 legs b-d (doyle W6 LOCK 2026-07-10, minted per amendment 3): every broker-conn lifecycle record is ATTRIBUTABLE \u2014 the W6 RCA's",
    "overlap_pct": 2.4489795918367347,
    "a_full": "c2-root (f028, doyle rca 2026-07-03): the identity-attribution root behind req-sessions-log-endpoint-attribution \u2014 three composing defects let a psyche-hosted sessionstart hook stamp a foreign perch: ",
    "b_full": "msg-identity w6 / f-039 legs b-d (doyle w6 lock 2026-07-10, minted per amendment 3): every broker-conn lifecycle record is attributable \u2014 the w6 rca's terminal undecidability (per-line 1:1 conn_write_"
  },
  {
    "pair": 15,
    "a": "REQ-BIND-PSYCHE-CUSTODY-SQUAT-GUARD",
    "b": "REQ-HAZARD-PSYCHE-RESIDENCY-EXPECTATION",
    "a_title": "MSG-IDENTITY W1 / F-036 leg c (perri field RCA, doyle ACCEPTED defense-in-depth): a bind whose --set-session-id equals a NESTED psyche perch's own cus",
    "b_title": "W3 (F030 hazard; paid-for: hall-bf churn ordinal 6491+ + adapter v0.13.2 bad-ship brick 2026-07-04): a psyche failure of ANY shape must NOT remove or ",
    "overlap_pct": 3.2085561497326207,
    "a_full": "msg-identity w1 / f-036 leg c (perri field rca, doyle accepted defense-in-depth): a bind whose --set-session-id equals a nested psyche perch's own custody sid is definitionally wrong and must be refus",
    "b_full": "w3 (f030 hazard; paid-for: hall-bf churn ordinal 6491+ + adapter v0.13.2 bad-ship brick 2026-07-04): a psyche failure of any shape must not remove or alter the parent endpoint's ready/hosted state, an"
  },
  {
    "pair": 16,
    "a": "REQ-BRAIN-HASH-ONCE",
    "b": "REQ-SUBNET-STATUS-MODES",
    "a_title": "REGISTRY-LIFECYCLE W1 (ADR-0040 rider; dropped THE-FORKENING W4 rider escalated \u2014 hertz re-measured live 2026-07-17: 61.29 MiB/s predicted vs 63.91 ob",
    "b_title": "`spt subnet status <name>` states the subnet's three mode facts (surface ruled 2026-07-30 \u2014 the per-subnet view is `subnet status`, no near-synonym `s",
    "overlap_pct": 2.73972602739726,
    "a_full": "registry-lifecycle w1 (adr-0040 rider; dropped the-forkening w4 rider escalated \u2014 hertz re-measured live 2026-07-17: 61.29 mib/s predicted vs 63.91 observed, 15.5%/core): the brain executable self-has",
    "b_full": "`spt subnet status <name>` states the subnet's three mode facts (surface ruled 2026-07-30 \u2014 the per-subnet view is `subnet status`, no near-synonym `show` verb minted): the mode the subnet declares as"
  },
  {
    "pair": 17,
    "a": "REQ-BRAIN-RESUME-NO-CONTROL-STEAL",
    "b": "REQ-HAZARD-RC-ATTACH-TRUTH",
    "a_title": "UPDATE-WEDGE round 2 (v0.30.4, doyle-ruled 2026-07-09 \u2014 field incident on the counter-54 fetch--apply): a brain-respawn must NEVER steal, then stall-e",
    "b_title": "RC-RENDER-TRUTH W1 (KNOWN-HAZARDS 7.46 \u2014 umbrella conformance seam for ADR-0042): an rc surface answers from live session authority, never a stale per",
    "overlap_pct": 3.35195530726257,
    "a_full": "update-wedge round 2 (v0.30.4, doyle-ruled 2026-07-09 \u2014 field incident on the counter-54 fetch--apply): a brain-respawn must never steal, then stall-evict, the controller of a broker pty session the d",
    "b_full": "rc-render-truth w1 (known-hazards 7.46 \u2014 umbrella conformance seam for adr-0042): an rc surface answers from live session authority, never a stale persisted projection; a resuming perch is unbound, no"
  },
  {
    "pair": 18,
    "a": "REQ-BRAIN-UPDATE-RESTART-CLEAN-CLOSE",
    "b": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
    "a_title": "SEED (DEFERRED, doyle 2026-07-09 \u2014 post-counter-54 root-hardening for UPDATE-WEDGE; mint now, impl a FUTURE milestone): on a PLANNED brain-restart (`B",
    "b_title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter ",
    "overlap_pct": 2.9962546816479403,
    "a_full": "seed (deferred, doyle 2026-07-09 \u2014 post-counter-54 root-hardening for update-wedge; mint now, impl a future milestone): on a planned brain-restart (`brain_update_restart`, the seamless update-apply br",
    "b_full": "b2 keystone: a daemon-hosted (spt-hosted) endpoint's info.json status is reconciled to real liveness, not left latched online. the broker exit-waiter (broker.rs:889-910) reaps its in-mem session table"
  },
  {
    "pair": 19,
    "a": "REQ-BROKER-ATTACH-JOURNAL-RESILIENT",
    "b": "REQ-UPDATE-RESTART-SAFE-SWAP",
    "a_title": "A poisoned EffectJournal mutex or a sick NetHost runtime must NOT permanently brick all future attaches. Bug #16 (URGENT): a live spt-hosted endpoint ",
    "b_title": "THE-FORKENING W4 (operator-grilled 2026-07-14; RETIRES findings-backlog seed #12 REQ-UPDATE-ONE-STEP-SAFE-SWAP): `spt update --restart` = the one-step",
    "overlap_pct": 1.8691588785046727,
    "a_full": "a poisoned effectjournal mutex or a sick nethost runtime must not permanently brick all future attaches. bug #16 (urgent): a live spt-hosted endpoint (eel-a) attach fails with 'brain ipc read deadline",
    "b_full": "the-forkening w4 (operator-grilled 2026-07-14; retires findings-backlog seed #12 req-update-one-step-safe-swap): `spt update --restart` = the one-step ergonomic path to the safe full-cycle swap \u2014 fetc"
  },
  {
    "pair": 20,
    "a": "REQ-CI-FREE-SPACE-PREFLIGHT",
    "b": "REQ-INFRA-1",
    "a_title": "Every CI job on a shared self-hosted runner FAILS LOUD AND FIRST on insufficient free disk, never obscurely on a downstream timing/space symptom: a pr",
    "b_title": "GitHub issue tracking for v1; tangled.org as migration target",
    "overlap_pct": 0.0,
    "a_full": "every ci job on a shared self-hosted runner fails loud and first on insufficient free disk, never obscurely on a downstream timing/space symptom: a preflight step asserts a free-space floor on the wor",
    "b_full": "github issue tracking for v1; tangled.org as migration target "
  },
  {
    "pair": 21,
    "a": "REQ-CLI-1",
    "b": "REQ-ENDPOINT-LIST-NODE-IDENT",
    "a_title": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + descri",
    "b_title": "Bug #5: spt endpoint list local section header is the hardcoded literal LOCAL (this node) (render_local_section cli.rs:4359). Change to 'This node: <n",
    "overlap_pct": 1.9607843137254901,
    "a_full": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + description (ex-resources blurb; bare=show, set=author);",
    "b_full": "bug #5: spt endpoint list local section header is the hardcoded literal local (this node) (render_local_section cli.rs:4359). change to 'this node: <node-id>' using the existing node-ident idiom (os_h"
  },
  {
    "pair": 22,
    "a": "REQ-CLI-4",
    "b": "REQ-ENDPOINT-LIST-MERGE-LOCAL",
    "a_title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter update/list/use) render friendly prose instead of raw CODE:RESULT markers",
    "b_title": "`spt endpoint list` always merges this node's LOCAL (unadvertised) perches into the view; the `--local` flag is REMOVED (operator decision 2026-06-17)",
    "overlap_pct": 1.9736842105263157,
    "a_full": "user-facing cli output is human-readable: direct-user commands (e.g. adapter update/list/use) render friendly prose instead of raw code:result markers \u2014 \"claude-spt is up to date (0.2.0).\" not \"adapte",
    "b_full": "`spt endpoint list` always merges this node's local (unadvertised) perches into the view; the `--local` flag is removed (operator decision 2026-06-17). rationale: `spt whoami` is a thin alias of `endp"
  },
  {
    "pair": 23,
    "a": "REQ-CLI-HELP-MARKDOWN",
    "b": "REQ-CLI-JSON",
    "a_title": "`spt --help` (and every subcommand --help) renders the inline Markdown authored in the clap doc-comments as terminal styling, never as literal markers",
    "b_title": "A global `--json` flag (clap global=true) honored by the READ/STATUS command set: endpoint list/whoami, daemon status, subnet status/show-code, endpoi",
    "overlap_pct": 0.6060606060606061,
    "a_full": "`spt --help` (and every subcommand --help) renders the inline markdown authored in the clap doc-comments as terminal styling, never as literal markers: `**bold**` \u2192 ansi bold, `` `code` `` \u2192 ansi cyan",
    "b_full": "a global `--json` flag (clap global=true) honored by the read/status command set: endpoint list/whoami, daemon status, subnet status/show-code, endpoint description/role, adapter list/version, notif l"
  },
  {
    "pair": 24,
    "a": "REQ-CLI-WIN-VT-ENABLE",
    "b": "REQ-RESIDENT-SERVICE",
    "a_title": "A7 (F028, operator, Win10 conhost): ANSI emitted without VT enable \u2192 garbled console. Evidence (raw PowerShell 7, Win10 conhost): literal `\u2190[36m` in `",
    "b_title": "ResidentService substrate (ADR-0049, design ratified 2026-07-26): a daemon-supervised binary an adapter declares via a `[service]` manifest section \u2014 ",
    "overlap_pct": 1.3513513513513513,
    "a_full": "a7 (f028, operator, win10 conhost): ansi emitted without vt enable \u2192 garbled console. evidence (raw powershell 7, win10 conhost): literal `\u2190[36m` in `endpoint list` + `--help`. root: enable_virtual_te",
    "b_full": "residentservice substrate (adr-0049, design ratified 2026-07-26): a daemon-supervised binary an adapter declares via a `[service]` manifest section \u2014 core-owned from birth, no perch/identity/address. "
  },
  {
    "pair": 25,
    "a": "REQ-CONN-POISON-DIAL-SCOPE",
    "b": "REQ-HAZARD-SEEDMAP-CONNECT-UNBOUNDED",
    "a_title": "MSG-IDENTITY W6 / F-039 (deployah field-acceptance follow-up 2026-07-10, RCA-FIRST \u2014 mint per the v0.30.6 PASS handoff): ambient CONN_WRITE_POISONED l",
    "b_title": "SEED (doyle-filed, 2026-07-05, from the REQ-HAZARD-DAEMON-STOP-BARRIER B2 fix): the PRODUCTION seedmap connect callers (put / take / is_running) inher",
    "overlap_pct": 3.508771929824561,
    "a_full": "msg-identity w6 / f-039 (deployah field-acceptance follow-up 2026-07-10, rca-first \u2014 mint per the v0.30.6 pass handoff): ambient conn_write_poisoned log-churn correlates 1:1 with pump_peer_fail submit",
    "b_full": "seed (doyle-filed, 2026-07-05, from the req-hazard-daemon-stop-barrier b2 fix): the production seedmap connect callers (put / take / is_running) inherit the same interprocess waitnamedpipew-forever ha"
  },
  {
    "pair": 26,
    "a": "REQ-CONTROL-STAMP-CONVERGENCE",
    "b": "REQ-HAZARD-REDISPATCH-CONTROL-STEAL",
    "a_title": "REGISTRY-LIFECYCLE W2 (ADR-0041 decision 4, emphasys C3 P1): control-stamp writes are session/generation-VALIDATED (or per-endpoint stamp transitions ",
    "b_title": "REDISPATCH-TRUTH W1 (KNOWN-HAZARDS 7.41, hertz field RCA 2026-07-16 \u2014 4/5 endpoints frozen per brain cycle): a fresh dispatcher must NEVER re-serve a ",
    "overlap_pct": 5.116279069767442,
    "a_full": "registry-lifecycle w2 (adr-0041 decision 4, emphasys c3 p1): control-stamp writes are session/generation-validated (or per-endpoint stamp transitions serialized) so a pre-reap kind_sessions snapshot c",
    "b_full": "redispatch-truth w1 (known-hazards 7.41, hertz field rca 2026-07-16 \u2014 4/5 endpoints frozen per brain cycle): a fresh dispatcher must never re-serve a terminal stream \u2014 a replayed historical attach mus"
  },
  {
    "pair": 27,
    "a": "REQ-CRC-SWAP-OLD-DISPLACE",
    "b": "REQ-HAZARD-SHAREDSEND-NO-BLOCKING-WRITE-UNDER-LOCK",
    "a_title": "C1 (F028, infra; memory crc-swap-old-litter-brick, RCA'd ENLYZEAM + confirmed systemic): crc_swap `.old`-litter bricks every subsequent adapter update",
    "b_title": "UPDATE-WEDGE round-4 (hertz RCA, root reproduced + source-pinned on Windows 2026-07-09): EVERY write on a physical broker connection rides ONE bounded",
    "overlap_pct": 2.1621621621621623,
    "a_full": "c1 (f028, infra; memory crc-swap-old-litter-brick, rca'd enlyzeam + confirmed systemic): crc_swap `.old`-litter bricks every subsequent adapter update. apply_crc_swap phase-3 `let _ = remove_file(.old",
    "b_full": "update-wedge round-4 (hertz rca, root reproduced + source-pinned on windows 2026-07-09): every write on a physical broker connection rides one bounded + cancelable + poison-on-failure framed-write pri"
  },
  {
    "pair": 28,
    "a": "REQ-DAEMON-4",
    "b": "REQ-ENSURE-DAEMON-STOP-INHIBIT",
    "a_title": "Honor every KNOWN-HAZARDS invariant",
    "b_title": "An operator stop outranks every implicit daemon ensure. (ADR-0047 decision 2, AMENDING REQ-DAEMON-3's anchor; hertz v0.39.4 field bug 2, RCA accepted ",
    "overlap_pct": 0.5747126436781609,
    "a_full": "honor every known-hazards invariant ",
    "b_full": "an operator stop outranks every implicit daemon ensure. (adr-0047 decision 2, amending req-daemon-3's anchor; hertz v0.39.4 field bug 2, rca accepted 2026-07-22.) today: every `spt api` invocation run"
  },
  {
    "pair": 29,
    "a": "REQ-DAEMON-5",
    "b": "REQ-WAKE-RESUME-LEG",
    "a_title": "Pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in REQ-CLI-2/REQ-SUBNET-8",
    "b_title": "A-2 (REMOTE-TRUTH triage \u00a7A-2 + ADR-0033): the daemon reconcile gains a WAKE-RESUME LEG \u2014 an endpoint whose rest INTENT is Active but whose harness se",
    "overlap_pct": 1.5957446808510638,
    "a_full": "pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in req-cli-2/req-subnet-8); the daemon supervises the pump task \u2014 a panic i",
    "b_full": "a-2 (remote-truth triage \u00a7a-2 + adr-0033): the daemon reconcile gains a wake-resume leg \u2014 an endpoint whose rest intent is active but whose harness session is cold (status != online) is resumed by the"
  },
  {
    "pair": 30,
    "a": "REQ-DAEMON-7",
    "b": "REQ-ENSURE-DAEMON-STOP-INHIBIT",
    "a_title": "`daemon run` is foreground-consistent on every platform: the invoking process IS the daemon, blocks until signalled, never auto-detaches or respawns i",
    "b_title": "An operator stop outranks every implicit daemon ensure. (ADR-0047 decision 2, AMENDING REQ-DAEMON-3's anchor; hertz v0.39.4 field bug 2, RCA accepted ",
    "overlap_pct": 3.4482758620689653,
    "a_full": "`daemon run` is foreground-consistent on every platform: the invoking process is the daemon, blocks until signalled, never auto-detaches or respawns into an invisible background task. the detached/de-",
    "b_full": "an operator stop outranks every implicit daemon ensure. (adr-0047 decision 2, amending req-daemon-3's anchor; hertz v0.39.4 field bug 2, rca accepted 2026-07-22.) today: every `spt api` invocation run"
  },
  {
    "pair": 31,
    "a": "REQ-DAEMON-9",
    "b": "REQ-UPDATE-RUNNING-IMAGE-SURFACE",
    "a_title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed \u2014 e.g. the systemd unit autostarted before the network/DNS stack",
    "b_title": "`spt` surfaces the RUNNING broker image version beside the on-disk version so an updated-looking node reveals broker-side dormancy. ROOT (F-025): `spt",
    "overlap_pct": 6.382978723404255,
    "a_full": "net-bind boot-race resilience: a daemon that comes up net-less (nethost::start failed \u2014 e.g. the systemd unit autostarted before the network/dns stack was ready, `failed to create an address lookup se",
    "b_full": "`spt` surfaces the running broker image version beside the on-disk version so an updated-looking node reveals broker-side dormancy. root (f-025): `spt update apply` restarts the brain only (adr-0018 d"
  },
  {
    "pair": 32,
    "a": "REQ-DAEMON-REFRESH",
    "b": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
    "a_title": "THE-FORKENING W4 (operator add 2026-07-14): `spt daemon refresh` \u2014 restart the daemon BRAIN without a binary swap and WITHOUT touching the broker: exa",
    "b_title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-00",
    "overlap_pct": 4.482758620689655,
    "a_full": "the-forkening w4 (operator add 2026-07-14): `spt daemon refresh` \u2014 restart the daemon brain without a binary swap and without touching the broker: exactly the apply_staged brain-cycle path (brain stop",
    "b_full": "spine invariant (v0.13.0 keystone): the broker must accept injected keystrokes into an spt-hosted pty (the v0.11.0 raw direct-inject today; the adr-0022 translation-binary choreography tomorrow) while"
  },
  {
    "pair": 33,
    "a": "REQ-DAEMON-SERVICE-INSTALL",
    "b": "REQ-INST-3",
    "a_title": "F-038 RIDER (flynn nice-to-have, QUEUED not activated): a documented OS-service registration recipe or `spt daemon install-service` verb so the daemon",
    "b_title": "Dormant (warm) / suspended (cold) resting states",
    "overlap_pct": 0.0,
    "a_full": "f-038 rider (flynn nice-to-have, queued not activated): a documented os-service registration recipe or `spt daemon install-service` verb so the daemon itself survives box reboot (flynn's box runs mana",
    "b_full": "dormant (warm) / suspended (cold) resting states dormancy resource budget (d9-3 \u2014 adr-0003 red-team #9)"
  },
  {
    "pair": 34,
    "a": "REQ-DIGEST-CURSOR",
    "b": "REQ-DIGEST-GENERATION-SUPERSEDE",
    "a_title": "`spt endpoint digest` gains incremental turn-end consumption (extends REQ-TERM-4/5): `--last <N>` = the last N TURNS (the digest's natural unit; --las",
    "b_title": "W3 (LIFECYCLE-TRUTH, digest projection truth \u2014 flynn filing spt-mobile d0aa3f4): a one-shot `endpoint digest --json` snapshot must return each logical",
    "overlap_pct": 7.232704402515723,
    "a_full": "`spt endpoint digest` gains incremental turn-end consumption (extends req-term-4/5): `--last <n>` = the last n turns (the digest's natural unit; --last 1 = the latest turn = turn-end output); a per-en",
    "b_full": "w3 (lifecycle-truth, digest projection truth \u2014 flynn filing spt-mobile d0aa3f4): a one-shot `endpoint digest --json` snapshot must return each logical activity row once across a checkpoint/resume, not"
  },
  {
    "pair": 35,
    "a": "REQ-DIGEST-GENERATION-SUPERSEDE",
    "b": "REQ-PSYCHE-STAMP-CLEAR-ANY-SUCCESS",
    "a_title": "W3 (LIFECYCLE-TRUTH, digest projection truth \u2014 flynn filing spt-mobile d0aa3f4): a one-shot `endpoint digest --json` snapshot must return each logical",
    "b_title": "W1 (LIFECYCLE-TRUTH): EVERY successful psyche operation clears psyche_host_error \u2014 not just the pulse-loop leg. ROOT (three field confirmations, perri",
    "overlap_pct": 1.7857142857142856,
    "a_full": "w3 (lifecycle-truth, digest projection truth \u2014 flynn filing spt-mobile d0aa3f4): a one-shot `endpoint digest --json` snapshot must return each logical activity row once across a checkpoint/resume, not",
    "b_full": "w1 (lifecycle-truth): every successful psyche operation clears psyche_host_error \u2014 not just the pulse-loop leg. root (three field confirmations, perri): the stamp clears only via note_turn_outcome's o"
  },
  {
    "pair": 36,
    "a": "REQ-DOC-ECHO-COMMUNE-CONTRACT",
    "b": "REQ-RESUME-ADAPTER-FOLLOWS-SESSION",
    "a_title": "W6 (LIFECYCLE-TRUTH, docs \u2014 this gap cost a full outage night, priority slot): publish the [session.echo_commune] I/O contract on the docs-site: key c",
    "b_title": "D-2 (REMOTE-TRUTH triage \u00a7D-2 + operator Q5 @c248afc): a resume-from-history restores the RECORDED session adapter (REQ-SESSION-ADAPTER-RECORDED) \u2014 th",
    "overlap_pct": 1.4925373134328357,
    "a_full": "w6 (lifecycle-truth, docs \u2014 this gap cost a full outage night, priority slot): publish the [session.echo_commune] i/o contract on the docs-site: key catalog core fills; core does not stdin-feed [histo",
    "b_full": "d-2 (remote-truth triage \u00a7d-2 + operator q5 @c248afc): a resume-from-history restores the recorded session adapter (req-session-adapter-recorded) \u2014 the resumed harness is the one the session ran under"
  },
  {
    "pair": 37,
    "a": "REQ-DOCS-RELEASE-ASSET",
    "b": "REQ-INSTALL-13",
    "a_title": "THE-FORKENING W2 (ADR-0036 \u00a74): every release ships a platform-independent docs bundle `spt-docs.tar.gz` (BUILT mdbook output: HTML + llms.txt + llms-",
    "b_title": "Adapter add is non-destructive & idempotent-safe (F-018): `spt adapter add --github|--release` REFUSES when the target `_github/<safe>` home already b",
    "overlap_pct": 1.809954751131222,
    "a_full": "the-forkening w2 (adr-0036 \u00a74): every release ships a platform-independent docs bundle `spt-docs.tar.gz` (built mdbook output: html + llms.txt + llms-full.txt + raw .md + manifest.schema.json) as a re",
    "b_full": "adapter add is non-destructive & idempotent-safe (f-018): `spt adapter add --github|--release` refuses when the target `_github/<safe>` home already backs an active registered record \u2014 emitting an act"
  },
  {
    "pair": 38,
    "a": "REQ-ECHO-DROP-DIR-RESOLVE",
    "b": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
    "a_title": "W1 (LIFECYCLE-TRUTH): fire_echo resolves the manifest commune_dir through the SAME resolver its siblings use before any write. ROOT (pinned): fire_ech",
    "b_title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped \u2014 not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips ",
    "overlap_pct": 2.4096385542168677,
    "a_full": "w1 (lifecycle-truth): fire_echo resolves the manifest commune_dir through the same resolver its siblings use before any write. root (pinned): fire_echo (spt-daemon lifecycle.rs:790) passes the raw man",
    "b_full": "on un-host, the detached `{id}-psyche` harness process is reaped \u2014 not just its in-brain pulse-driver thread. today stop_host (livehost.rs:203) trips the hostedlife stop flag + joins the driver thread"
  },
  {
    "pair": 39,
    "a": "REQ-ENDPOINT-AUTOSTART",
    "b": "REQ-ENDPOINT-ONLINE-TRUTH",
    "a_title": "MSG-IDENTITY W5 / F-038 (flynn operator-directed ask 2026-07-10, SPT-CORE-NEEDS #7 + deployah field-confirm same day: mobile-gw alive=false after the ",
    "b_title": "REGISTRY-LIFECYCLE W2 (ADR-0041 decisions 1+2, emphasys C1 P0): ONLINE is earned, not declared \u2014 cmd_listen stamps status=online only from actual pers",
    "overlap_pct": 4.25531914893617,
    "a_full": "msg-identity w5 / f-038 (flynn operator-directed ask 2026-07-10, spt-core-needs #7 + deployah field-confirm same day: mobile-gw alive=false after the v0.30.6 full daemon restart = this feature's absen",
    "b_full": "registry-lifecycle w2 (adr-0041 decisions 1+2, emphasys c1 p0): online is earned, not declared \u2014 cmd_listen stamps status=online only from actual persisted state + hosting authority, never from manife"
  },
  {
    "pair": 40,
    "a": "REQ-ENDPOINT-CYCLE-HONEST",
    "b": "REQ-ENDPOINT-TEARDOWN-AUTHORITY",
    "a_title": "REGISTRY-LIFECYCLE W3 (ADR-0041 decision 6, operator deployah stop/run wedge): cycle verbs share ONE liveness authority \u2014 the ALREADY_LIVE dup-guard l",
    "b_title": "TEARDOWN-AUTHORITY W1 (ADR-0045; two hertz field RCAs 2026-07-19, doyle code-verified + ruled): ONE shared topology-aware broker-teardown primitive be",
    "overlap_pct": 6.682577565632458,
    "a_full": "registry-lifecycle w3 (adr-0041 decision 6, operator deployah stop/run wedge): cycle verbs share one liveness authority \u2014 the already_live dup-guard liveness-probes the claimed session client tree bef",
    "b_full": "teardown-authority w1 (adr-0045; two hertz field rcas 2026-07-19, doyle code-verified + ruled): one shared topology-aware broker-teardown primitive behind both `endpoint shutdown` and `endpoint stop`."
  },
  {
    "pair": 41,
    "a": "REQ-ENDPOINT-LIST-NODE-GROUPED",
    "b": "REQ-SHELL-PERCH-DIR",
    "a_title": "spt endpoint list is node-grouped over unique INSTANCES, not subnet-grouped over duplicated rows: one row per (id,node) instance \u2014 subnet duplication ",
    "b_title": "A shell binary can mechanically resolve where its files land. (flynn spt-alchemy clean-room audit 2026-07-21, doyle code-verified, seed pair item 2, P",
    "overlap_pct": 2.527075812274368,
    "a_full": "spt endpoint list is node-grouped over unique instances, not subnet-grouped over duplicated rows: one row per (id,node) instance \u2014 subnet duplication collapsed (adr-0006 \u00a71: subnet is never an identit",
    "b_full": "a shell binary can mechanically resolve where its files land. (flynn spt-alchemy clean-room audit 2026-07-21, doyle code-verified, seed pair item 2, p1 \u2014 hard-gates flynn's alchemy w4.) today: `spt sh"
  },
  {
    "pair": 42,
    "a": "REQ-ENDPOINT-LIST-PALETTE",
    "b": "REQ-PICKER-3",
    "a_title": "Bugs #11 + #15 (display): spt endpoint list renders status as plain text while the picker turns the same ResourceRow into the W5 colored EpDisplay pal",
    "b_title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is sel",
    "overlap_pct": 4.838709677419355,
    "a_full": "bugs #11 + #15 (display): spt endpoint list renders status as plain text while the picker turns the same resourcerow into the w5 colored epdisplay palette. fix: extract one shared resourcerow-to-epdis",
    "b_full": "a self-owned subnet row reconciles its status to the live roster: a subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square"
  },
  {
    "pair": 43,
    "a": "REQ-ENDPOINT-LIST-RENDER-POLISH",
    "b": "REQ-ENDPOINT-LIST-REST-FILTER",
    "a_title": "A6 (F028, operator, 4 asks): `spt endpoint list` render polish. (a) the 'Shared subnets' line is NOT dim \u2014 LIGHT_GRAY = \"37\" (cli.rs:3019) is standard",
    "b_title": "spt endpoint list hides SUSPENDED instances by default; a new --show-all flag reveals them. Status-first row ordering with fixed precedence ONLINE > C",
    "overlap_pct": 3.7593984962406015,
    "a_full": "a6 (f028, operator, 4 asks): `spt endpoint list` render polish. (a) the 'shared subnets' line is not dim \u2014 light_gray = \"37\" (cli.rs:3019) is standard-palette white, indistinguishable from row text; u",
    "b_full": "spt endpoint list hides suspended instances by default; a new --show-all flag reveals them. status-first row ordering with fixed precedence online > controlled > unbound > suspended (when shown) > cor"
  },
  {
    "pair": 44,
    "a": "REQ-ENDPOINT-LIST-REST-FILTER",
    "b": "REQ-LIST-JSON-LIVENESS-PARITY",
    "a_title": "spt endpoint list hides SUSPENDED instances by default; a new --show-all flag reveals them. Status-first row ordering with fixed precedence ONLINE > C",
    "b_title": "GATEWAY-LIVENESS (flynn field bug 2026-07-09, RCA reader-divergence root): `spt endpoint list` (human) and `endpoint list --json` MUST report an IDENT",
    "overlap_pct": 3.286384976525822,
    "a_full": "spt endpoint list hides suspended instances by default; a new --show-all flag reveals them. status-first row ordering with fixed precedence online > controlled > unbound > suspended (when shown) > cor",
    "b_full": "gateway-liveness (flynn field bug 2026-07-09, rca reader-divergence root): `spt endpoint list` (human) and `endpoint list --json` must report an identical status for a locally-hosted endpoint \u2014 especi"
  },
  {
    "pair": 45,
    "a": "REQ-ENDPOINT-ONLINE-TRUTH",
    "b": "REQ-ENDPOINT-STOP-OFFLINE",
    "a_title": "REGISTRY-LIFECYCLE W2 (ADR-0041 decisions 1+2, emphasys C1 P0): ONLINE is earned, not declared \u2014 cmd_listen stamps status=online only from actual pers",
    "b_title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + u",
    "overlap_pct": 2.027027027027027,
    "a_full": "registry-lifecycle w2 (adr-0041 decisions 1+2, emphasys c1 p0): online is earned, not declared \u2014 cmd_listen stamps status=online only from actual persisted state + hosting authority, never from manife",
    "b_full": "h3: `spt endpoint stop <id>` marks the endpoint offline (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does not set status off"
  },
  {
    "pair": 46,
    "a": "REQ-ENDPOINT-STOP-OFFLINE",
    "b": "REQ-HAZARD-BOUNDARY-READY-STRAND",
    "a_title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + u",
    "b_title": "C-2 (F029, SEAM-2 pinned \u2014 B6's SECOND HALF, the live-wake blocker; perri wakep9 vs wakep4 gate-state dump + doyle code trace): at a /clear, CC fires ",
    "overlap_pct": 6.106870229007633,
    "a_full": "h3: `spt endpoint stop <id>` marks the endpoint offline (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does not set status off",
    "b_full": "c-2 (f029, seam-2 pinned \u2014 b6's second half, the live-wake blocker; perri wakep9 vs wakep4 gate-state dump + doyle code trace): at a /clear, cc fires sessionend(reason=clear) for the departing session"
  },
  {
    "pair": 47,
    "a": "REQ-ENDPOINT-STOP-RESOLVES",
    "b": "REQ-LIVENESS-ORACLE-SOUND",
    "a_title": "`spt endpoint stop <id>` REFUSES an id that nothing on the node knows, instead of stamping success on a no-op \u2014 an unconditional-success verb is a lyi",
    "b_title": "TEARDOWN-AUTHORITY W2 (todlando W1 gate-round-0 finding, doyle-scoped from the LANDED W1 code 2026-07-19): 'does this pid still exist' has ONE answer ",
    "overlap_pct": 5.818965517241379,
    "a_full": "`spt endpoint stop <id>` refuses an id that nothing on the node knows, instead of stamping success on a no-op \u2014 an unconditional-success verb is a lying instrument (find: liam via flynn's discriminati",
    "b_full": "teardown-authority w2 (todlando w1 gate-round-0 finding, doyle-scoped from the landed w1 code 2026-07-19): 'does this pid still exist' has one answer in spt-core and it is derived from the os process "
  },
  {
    "pair": 48,
    "a": "REQ-ENDPOINT-UNBOUND-ATTACH",
    "b": "REQ-RC-RECONNECT-TRUTH",
    "a_title": "An spt-hosted endpoint is ATTACHABLE between spawn and bind: gate the attach on the broker SESSION being attachable (session+PTY+OutputLog exist at sp",
    "b_title": "W3 (LIFECYCLE-TRUTH): rc reconnect never auto-starts a daemon and never hangs forever. ROOTS rig-proven (the operator's long-standing 'stop 2-4 times'",
    "overlap_pct": 1.2738853503184715,
    "a_full": "an spt-hosted endpoint is attachable between spawn and bind: gate the attach on the broker session being attachable (session+pty+outputlog exist at spawn, before bind), not on perch status_online (bin",
    "b_full": "w3 (lifecycle-truth): rc reconnect never auto-starts a daemon and never hangs forever. roots rig-proven (the operator's long-standing 'stop 2-4 times' bug): (a) an rc client's reconnect loop auto-laun"
  },
  {
    "pair": 49,
    "a": "REQ-EP-4",
    "b": "REQ-PSYCHE-LEGACY-RESIDENT-SWEEP",
    "a_title": "PresenceChannel broker endpoint (seam day-one)",
    "b_title": "W5 (F030; doyle+perri 2026-07-04): a dirty daemon upgrade from <=v0.24.0 strands a RESIDENT psyche wrapper the OLD daemon spawned \u2014 and F-030 W4's nes",
    "overlap_pct": 0.0,
    "a_full": "presencechannel broker endpoint (seam day-one) ",
    "b_full": "w5 (f030; doyle+perri 2026-07-04): a dirty daemon upgrade from <=v0.24.0 strands a resident psyche wrapper the old daemon spawned \u2014 and f-030 w4's nested-`ready` resolution fix converted that wrapper'"
  },
  {
    "pair": 50,
    "a": "REQ-ER-BRINGUP-ATTEMPT-BOUND",
    "b": "REQ-ER-CONTROLLER-BOUND-POSTURE",
    "a_title": "The engine-room bring-up gate is bounded by ONE shared failure ledger with exponential backoff, not by a per-secret count (doyle ruling 2026-07-29 on ",
    "b_title": "The engine room is empowered ONLY while a controller is attached, and losing that controller drops its POSTURE \u2014 not its process (ADR-0052 decision 3,",
    "overlap_pct": 6.870229007633588,
    "a_full": "the engine-room bring-up gate is bounded by one shared failure ledger with exponential backoff, not by a per-secret count (doyle ruling 2026-07-29 on adr-0052 decision 2). accepting either the member ",
    "b_full": "the engine room is empowered only while a controller is attached, and losing that controller drops its posture \u2014 not its process (adr-0052 decision 3, as amended 2026-07-29 on todlando's finding). rea"
  },
  {
    "pair": 51,
    "a": "REQ-ER-BRINGUP-TOTP-GATE",
    "b": "REQ-SUBNET-ADMIN-CODE-JOIN",
    "a_title": "Bringing the engine room online \u2014 and attaching a controller to it \u2014 requires a same-node CLI call PLUS a member-or-admin TOTP for its home subnet, an",
    "b_title": "The join ceremony accepts EITHER subnet code: the SPAKE2 responder computes the member-key TOTP and the admin-key TOTP and admits a joiner proving eit",
    "overlap_pct": 11.41304347826087,
    "a_full": "bringing the engine room online \u2014 and attaching a controller to it \u2014 requires a same-node cli call plus a member-or-admin totp for its home subnet, and never os elevation (adr-0052 decision 2). the ga",
    "b_full": "the join ceremony accepts either subnet code: the spake2 responder computes the member-key totp and the admin-key totp and admits a joiner proving either (adr-0051 decision 1 \u2014 'an admin key is a memb"
  },
  {
    "pair": 52,
    "a": "REQ-ER-NOT-ADVERTISED",
    "b": "REQ-ER-RC-INTENT-LOCKS",
    "a_title": "The engine room is NOT registry-advertised by default, and is advertised only to endpoints it has whitelisted (ADR-0052 decision 3). An advertised gov",
    "b_title": "The engine room's attach surface is locked by INTENT: rc --view is denied even same-node, remote attach of any intent is denied, and local --take is a",
    "overlap_pct": 14.096916299559473,
    "a_full": "the engine room is not registry-advertised by default, and is advertised only to endpoints it has whitelisted (adr-0052 decision 3). an advertised governance surface is a discoverable one, and discove",
    "b_full": "the engine room's attach surface is locked by intent: rc --view is denied even same-node, remote attach of any intent is denied, and local --take is allowed (adr-0052 decision 3). viewing is denied be"
  },
  {
    "pair": 53,
    "a": "REQ-GOSSIP-ADAPTER-PROJECTS",
    "b": "REQ-GOSSIP-CONTROLLED-ANY",
    "a_title": "#4: remote endpoint details (harness + project history) are gossiped, not faked. Today from_resource_row (crates/spt/src/picker/model.rs:340) hardcode",
    "b_title": "Bug #3: a locally-controlled endpoint gossips controller_node = None so remote viewers show it free to control. Root: driven_by is stamped Some(node) ",
    "overlap_pct": 4.040404040404041,
    "a_full": "#4: remote endpoint details (harness + project history) are gossiped, not faked. today from_resource_row (crates/spt/src/picker/model.rs:340) hardcodes project_history=vec::new() for every remote row ",
    "b_full": "bug #3: a locally-controlled endpoint gossips controller_node = none so remote viewers show it free to control. root: driven_by is stamped some(node) only for a remote wan attach (attach.rs:337); a lo"
  },
  {
    "pair": 54,
    "a": "REQ-HAZARD-ADAPTER-APPLY-SILENT-NOOP",
    "b": "REQ-HAZARD-COMMUNE-INGEST-BLACKHOLE",
    "a_title": "A DELEGATED live adapter apply MUST NEVER report success without performing the swap, and the live-update seam MUST use ONE parent-aware adapter match",
    "b_title": "F-032 (perri field finding 2026-07-08, LEGACY-SPT-PARITY-GAP, data-loss): commune/signoff ingest MUST NOT delete a drop until its content is DURABLY C",
    "overlap_pct": 3.4013605442176873,
    "a_full": "a delegated live adapter apply must never report success without performing the swap, and the live-update seam must use one parent-aware adapter matcher across all its comparators. two defects made th",
    "b_full": "f-032 (perri field finding 2026-07-08, legacy-spt-parity-gap, data-loss): commune/signoff ingest must not delete a drop until its content is durably committed to every applicable tier \u2014 a slice that c"
  },
  {
    "pair": 55,
    "a": "REQ-HAZARD-ADAPTER-PROFILE-STAMP-CLOBBER",
    "b": "REQ-UPDATE-ADAPTERS-VERB",
    "a_title": "A-4 (F029, operator regression): the picker/confirm views drop an endpoint's adapter `:profile` (showed `claude-spt` where `claude-spt:ccs` was create",
    "b_title": "THE-FORKENING W4 (operator-grilled 2026-07-14): `spt update adapters [<a>[,<b>...]]` = thin ALIAS over the existing `spt adapter update` engine (cli.r",
    "overlap_pct": 1.0256410256410255,
    "a_full": "a-4 (f029, operator regression): the picker/confirm views drop an endpoint's adapter `:profile` (showed `claude-spt` where `claude-spt:ccs` was created). root: stamp_creation_fields (spt-store/home.rs",
    "b_full": "the-forkening w4 (operator-grilled 2026-07-14): `spt update adapters [<a>[,<b>...]]` = thin alias over the existing `spt adapter update` engine (cli.rs:748 gh_release avenue; the old verb stays \u2014 publ"
  },
  {
    "pair": 56,
    "a": "REQ-HAZARD-ATTACH-WEDGE",
    "b": "REQ-PRESENCE-LIVENESS-TRUTH",
    "a_title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harne",
    "b_title": "A node's gossiped per-endpoint registry Status reflects real liveness, so a remote viewer never paints a DEAD endpoint as ONLINE. ROOT (confirmed + ga",
    "overlap_pct": 4.089219330855019,
    "a_full": "a legitimately dead pty child (real crash/kill) + an undrained operator pump must not wedge the broker for all other clients. root (v0.12.0 real-harness defect): loopback attach output is a blocking w",
    "b_full": "a node's gossiped per-endpoint registry status reflects real liveness, so a remote viewer never paints a dead endpoint as online. root (confirmed + gated vs context.md): registryhost.rs:397-405 advert"
  },
  {
    "pair": 57,
    "a": "REQ-HAZARD-BIND-CWD-UNSET",
    "b": "REQ-STORE-CONTEXT-BRANCH-FILL",
    "a_title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears under its own project tab. ROOT (found, v0.13.0): `info.cwd` is NEVER ",
    "b_title": "#1 SI-1 (RCA, operator-promoted 2026-07-03): the context store (tracked/.seed.git) holds ZERO p-* branches on a box with months of live-agent use, whi",
    "overlap_pct": 3.870967741935484,
    "a_full": "a bound endpoint's `info.cwd` is set at bind so a freshly-created perch appears under its own project tab. root (found, v0.13.0): `info.cwd` is never set on bind \u2014 `cmd_bind` (spt-hosted) and `bind_fr",
    "b_full": "#1 si-1 (rca, operator-promoted 2026-07-03): the context store (tracked/.seed.git) holds zero p-* branches on a box with months of live-agent use, while kitsubito/enlyzeam stores carry them. context c"
  },
  {
    "pair": 58,
    "a": "REQ-HAZARD-BOUNDARY-READY-STRAND",
    "b": "REQ-HAZARD-SESSION-PIN-WEDGE",
    "a_title": "C-2 (F029, SEAM-2 pinned \u2014 B6's SECOND HALF, the live-wake blocker; perri wakep9 vs wakep4 gate-state dump + doyle code trace): at a /clear, CC fires ",
    "b_title": "A perch PINNED to a DEAD session-id self-heals instead of wedging forever. authenticate() (spt/src/api/auth.rs:78) gates api poll/state/boundary on pr",
    "overlap_pct": 6.462585034013606,
    "a_full": "c-2 (f029, seam-2 pinned \u2014 b6's second half, the live-wake blocker; perri wakep9 vs wakep4 gate-state dump + doyle code trace): at a /clear, cc fires sessionend(reason=clear) for the departing session",
    "b_full": "a perch pinned to a dead session-id self-heals instead of wedging forever. authenticate() (spt/src/api/auth.rs:78) gates api poll/state/boundary on proof-sid == info.json.session_id; if one boundary r"
  },
  {
    "pair": 59,
    "a": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
    "b": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
    "a_title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resu",
    "b_title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter ",
    "overlap_pct": 8.235294117647058,
    "a_full": "b4 (deepest): a bare brain restart (broker survives) rehydrates the live-agent lifecycle so post-restart endpoints are hosted + attachable. today resume_sessions (brainproc.rs:186, brain.rs:797-809) r",
    "b_full": "b2 keystone: a daemon-hosted (spt-hosted) endpoint's info.json status is reconciled to real liveness, not left latched online. the broker exit-waiter (broker.rs:889-910) reaps its in-mem session table"
  },
  {
    "pair": 60,
    "a": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
    "b": "REQ-TRANSLATE-BINARY-LIVENESS-DECAY",
    "a_title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resu",
    "b_title": "SUPERSEDED by REQ-TRANSLATE-COMMIT-MISS-TOLERANCE (F029 C-1). B6 (F028, perri F-e) was ROOT-PINNED as the commit-deadline-miss fault: at a checkpoint ",
    "overlap_pct": 1.5037593984962405,
    "a_full": "b4 (deepest): a bare brain restart (broker survives) rehydrates the live-agent lifecycle so post-restart endpoints are hosted + attachable. today resume_sessions (brainproc.rs:186, brain.rs:797-809) r",
    "b_full": "superseded by req-translate-commit-miss-tolerance (f029 c-1). b6 (f028, perri f-e) was root-pinned as the commit-deadline-miss fault: at a checkpoint clear boundary the clear-only inject's {commit} wa"
  },
  {
    "pair": 61,
    "a": "REQ-HAZARD-BROKER-FLOOR-LOCK-POISON",
    "b": "REQ-HAZARD-INFO-RMW-LOST-UPDATE",
    "a_title": "B-1 (REMOTE-TRUTH triage \u00a7B-1, PIVOTED @e5eb99a): NO bare `.lock().unwrap()` on a broker-resident lock reachable from serve/dispatch \u2014 a brain-only se",
    "b_title": "Concurrent info.json writers must serialize under the per-perch lock (5.16): an unlocked whole-record write racing a locked RMW is a silent lost updat",
    "overlap_pct": 1.4925373134328357,
    "a_full": "b-1 (remote-truth triage \u00a7b-1, pivoted @e5eb99a): no bare `.lock().unwrap()` on a broker-resident lock reachable from serve/dispatch \u2014 a brain-only self-update keeps the broker + all its mutexes alive",
    "b_full": "concurrent info.json writers must serialize under the per-perch lock (5.16): an unlocked whole-record write racing a locked rmw is a silent lost update 5.16 unlocked whole-record info.json write races"
  },
  {
    "pair": 62,
    "a": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
    "b": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
    "a_title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does NOT take effect until a DELIBERATE full broker restart: the broker serv",
    "b_title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) ",
    "overlap_pct": 2.112676056338028,
    "a_full": "a daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic seed) does not take effect until a deliberate full broker restart: the broker serves the seed-control channel and is resident across",
    "b_full": "per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded llm call (echo-commune summarizer, psyche turn) runs off the shared scheduler so one slow/hung cal"
  },
  {
    "pair": 63,
    "a": "REQ-HAZARD-CASCADE-WIPE-GUARD",
    "b": "REQ-TEARDOWN-UNCOOPERATIVE-HOST",
    "a_title": "No hard-delete of a parent hosting non-empty children (6.3)",
    "b_title": "TEARDOWN-AUTHORITY W1 (ADR-0045 decision 4): the teardown kill NEVER depends on harness cooperation \u2014 no graceful-input path, no waiting on PTY EOF, n",
    "overlap_pct": 0.0,
    "a_full": "no hard-delete of a parent hosting non-empty children (6.3) ",
    "b_full": "teardown-authority w1 (adr-0045 decision 4): the teardown kill never depends on harness cooperation \u2014 no graceful-input path, no waiting on pty eof, no ask-it-to-exit-first step. a wedged host is the "
  },
  {
    "pair": 64,
    "a": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
    "b": "REQ-MESH-6",
    "a_title": "A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile f",
    "b_title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY \u2014 total wall-time bounded by the",
    "overlap_pct": 1.639344262295082,
    "a_full": "a surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, adr",
    "b_full": "concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (req-subnet-5) concurrently \u2014 total wall-time bounded by the single-probe ceiling (~3s), never k\u00d7ceiling. the "
  },
  {
    "pair": 65,
    "a": "REQ-HAZARD-CONTROL-STAMP-CONVERGENCE",
    "b": "REQ-PRESENCE-CONTROL-REAP-ON-EXIT",
    "a_title": "Control/viewer stamps must CONVERGE to broker session-table truth for every session-backed endpoint, not merely edge-trigger \u2014 the UPWARD companion to",
    "b_title": "B3 (F028, hall-b diagnosis + deferred #11 seed; BROADENED perri F-b CONFIRMED): dead-pid ONLINE decay window + sticky CONTROLLED stamp. Repro: /exit -",
    "overlap_pct": 5.5045871559633035,
    "a_full": "control/viewer stamps must converge to broker session-table truth for every session-backed endpoint, not merely edge-trigger \u2014 the upward companion to the downward edge-clear req-hazard-control-stamp-",
    "b_full": "b3 (f028, hall-b diagnosis + deferred #11 seed; broadened perri f-b confirmed): dead-pid online decay window + sticky controlled stamp. repro: /exit -> all endpoint processes dead -> `endpoint list` s"
  },
  {
    "pair": 66,
    "a": "REQ-HAZARD-CONTROLLER-GAP-RESUME",
    "b": "REQ-HAZARD-VIEWER-STARVE-UNDER-CONTROLLER-BACKPRESSURE",
    "a_title": "A serving CONTROLLER whose serve-brain hits a b4 drop-don't-block FORWARD output gap must RESUME-FROM-FLOOR (re-subscribe from delivered_through and r",
    "b_title": "A SLOW controller must not starve a concurrent `rc --view` VIEWER. W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST) moved the controller SOCKET WRITE off the dr",
    "overlap_pct": 10.181818181818182,
    "a_full": "a serving controller whose serve-brain hits a b4 drop-don't-block forward output gap must resume-from-floor (re-subscribe from delivered_through and re-fetch the dropped frames from the ring), not sna",
    "b_full": "a slow controller must not starve a concurrent `rc --view` viewer. w1 (req-hazard-inject-control-coexist) moved the controller socket write off the drain thread onto controller_writer, but left the bo"
  },
  {
    "pair": 67,
    "a": "REQ-HAZARD-CONTROLLER-RETAKE-FLOOR",
    "b": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
    "a_title": "`become_controller` should STRUCTURALLY refuse a controller re-take whose `from_seq` falls below the connection's already-delivered contiguous floor \u2014",
    "b_title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-00",
    "overlap_pct": 6.0606060606060606,
    "a_full": "`become_controller` should structurally refuse a controller re-take whose `from_seq` falls below the connection's already-delivered contiguous floor \u2014 making the p1c reorder invariant un-reintroducibl",
    "b_full": "spine invariant (v0.13.0 keystone): the broker must accept injected keystrokes into an spt-hosted pty (the v0.11.0 raw direct-inject today; the adr-0022 translation-binary choreography tomorrow) while"
  },
  {
    "pair": 68,
    "a": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
    "b": "REQ-HAZARD-DAEMON-STOP-REAP",
    "a_title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2",
    "b_title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned \u2014 no orphaned psyche/harness processes. Today a stop leaves ~8 orphaned claude-spt-p",
    "overlap_pct": 4.918032786885246,
    "a_full": "daemon-hosted perches (psyche, spt-hosted self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5) ",
    "b_full": "breap: `spt daemon stop` reaps the spt-hosted children it spawned \u2014 no orphaned psyche/harness processes. today a stop leaves ~8 orphaned claude-spt-psyche.exe + spt.exe: psyches are spawned detached "
  },
  {
    "pair": 69,
    "a": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
    "b": "REQ-TRANSLATE-BINARY-LIVENESS-DECAY",
    "a_title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2",
    "b_title": "SUPERSEDED by REQ-TRANSLATE-COMMIT-MISS-TOLERANCE (F029 C-1). B6 (F028, perri F-e) was ROOT-PINNED as the commit-deadline-miss fault: at a checkpoint ",
    "overlap_pct": 1.3333333333333335,
    "a_full": "daemon-hosted perches (psyche, spt-hosted self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5) ",
    "b_full": "superseded by req-translate-commit-miss-tolerance (f029 c-1). b6 (f028, perri f-e) was root-pinned as the commit-deadline-miss fault: at a checkpoint clear boundary the clear-only inject's {commit} wa"
  },
  {
    "pair": 70,
    "a": "REQ-HAZARD-DAEMON-STOP-BARRIER",
    "b": "REQ-HAZARD-TRANSLATE-FAULT-PERMANENT-DEATH",
    "a_title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race \u2014 stop fully completes before it returns. Today request_stop (seedmap.rs:240-",
    "b_title": "C-1 hazard (F029; paid-for: B6 + three-version checkpoint-wake breakage): a REAL translation fault (binary death \u2014 stdin write fail / stdout disconnec",
    "overlap_pct": 0.9433962264150944,
    "a_full": "b3: `spt daemon stop` then an immediate `spt daemon start` does not race \u2014 stop fully completes before it returns. today request_stop (seedmap.rs:240-255) returns on the kind_stopping ack (sent seedma",
    "b_full": "c-1 hazard (f029; paid-for: b6 + three-version checkpoint-wake breakage): a real translation fault (binary death \u2014 stdin write fail / stdout disconnect \u2014 or strike-budget exhaustion) must get a bounde"
  },
  {
    "pair": 71,
    "a": "REQ-HAZARD-DEFERRED-MANIFEST",
    "b": "REQ-INST-1",
    "a_title": "A pointer-mode (delegated / GhReleaseManaged) adapter whose binary/manifest is not yet extracted is reported with a CLEAR diagnostic, never silently d",
    "b_title": "endpoint ID vs instance split (adapter-agnostic ID)",
    "overlap_pct": 0.0,
    "a_full": "a pointer-mode (delegated / ghreleasemanaged) adapter whose binary/manifest is not yet extracted is reported with a clear diagnostic, never silently dropped. today such an adapter reads its manifest l",
    "b_full": "endpoint id vs instance split (adapter-agnostic id) "
  },
  {
    "pair": 72,
    "a": "REQ-HAZARD-DELIVERY-STARVATION",
    "b": "REQ-RELAY-NO-BUSY-DELIVER",
    "a_title": "A NON-DEFERRED message that has REACHED a node's spool (WAN-arrived or locally spooled-while-active) is NEVER dependent on an adapter HOOK-POLL cadenc",
    "b_title": "MSG-IDENTITY W4 (operator self-send probe 2026-07-09, companion leg): the relay/idle-inject carrier MUST NOT fire for an ACTIVE endpoint \u2014 the daemon ",
    "overlap_pct": 6.278026905829597,
    "a_full": "a non-deferred message that has reached a node's spool (wan-arrived or locally spooled-while-active) is never dependent on an adapter hook-poll cadence for its eventual delivery to an spt-hosted (rela",
    "b_full": "msg-identity w4 (operator self-send probe 2026-07-09, companion leg): the relay/idle-inject carrier must not fire for an active endpoint \u2014 the daemon already guards send-time (daemon.stderr.log: 'endp"
  },
  {
    "pair": 73,
    "a": "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT",
    "b": "REQ-LIST-JSON-LIVENESS-PARITY",
    "a_title": "An spt-hosted endpoint driven by a REMOTE controller whose remote is gone but whose broker connection stays OPEN (a wedged/lost pump that never delive",
    "b_title": "GATEWAY-LIVENESS (flynn field bug 2026-07-09, RCA reader-divergence root): `spt endpoint list` (human) and `endpoint list --json` MUST report an IDENT",
    "overlap_pct": 2.6415094339622645,
    "a_full": "an spt-hosted endpoint driven by a remote controller whose remote is gone but whose broker connection stays open (a wedged/lost pump that never delivers the detach) and whose session is idle (no outpu",
    "b_full": "gateway-liveness (flynn field bug 2026-07-09, rca reader-divergence root): `spt endpoint list` (human) and `endpoint list --json` must report an identical status for a locally-hosted endpoint \u2014 especi"
  },
  {
    "pair": 74,
    "a": "REQ-HAZARD-EBUSY-RENAME",
    "b": "REQ-HAZARD-INFO-JSON-TORN-READ",
    "a_title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
    "b_title": "State-file reads tolerate concurrent writes (1.2)",
    "overlap_pct": 0.0,
    "a_full": "tmp-write + atomic-rename + retry on windows ebusy (5.2) ",
    "b_full": "state-file reads tolerate concurrent writes (1.2) "
  },
  {
    "pair": 75,
    "a": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
    "b": "REQ-HAZARD-SUDO-SECURE-PATH",
    "a_title": "The daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (Windows: UA",
    "b_title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin \u00b7 ~/.cargo/bin is not on sudo's secure_path,",
    "overlap_pct": 1.8867924528301887,
    "a_full": "the daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (windows: uac linked token via createprocesswithtokenw; linux:",
    "b_full": "elevation guidance on unix names the binary's absolute path under sudo (a user-local install ~/.local/bin \u00b7 ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gat"
  },
  {
    "pair": 76,
    "a": "REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT",
    "b": "REQ-PSYCHE-ROLE-OPTIONAL-SKIP",
    "a_title": "A clean `spt rc` attach to a LIVE spt-hosted (`endpoint run`) harness must DELIVER the harness's PTY output. KEYSTONE \u2014 the operator's central 'attach",
    "b_title": "W1 (LIFECYCLE-TRUTH): a manifest with NO [session.echo_commune] role SKIPS commune-sync (debug-level note, no strike) instead of hard-failing the turn",
    "overlap_pct": 1.2269938650306749,
    "a_full": "a clean `spt rc` attach to a live spt-hosted (`endpoint run`) harness must deliver the harness's pty output. keystone \u2014 the operator's central 'attach shows no output' symptom, reproduced on the real ",
    "b_full": "w1 (lifecycle-truth): a manifest with no [session.echo_commune] role skips commune-sync (debug-level note, no strike) instead of hard-failing the turn. root (perri filing, recovered): missing role -> "
  },
  {
    "pair": 77,
    "a": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
    "b": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
    "a_title": "Envelope decode order, ampersand decoded last (4.1)",
    "b_title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
    "overlap_pct": 1.7241379310344827,
    "a_full": "envelope decode order, ampersand decoded last (4.1) decode order is binding.** decode a *body* as: `<br>` \u2192 `\\n` **first**, then `&lt;`/`&gt;`/`&quot;`, then `&amp;` \u2192 `&` **last**. decode an attribut",
    "b_full": "two-slice envelope parser is panic-free and tolerant (4.2) "
  },
  {
    "pair": 78,
    "a": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
    "b": "REQ-PICKER-3",
    "a_title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter ",
    "b_title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is sel",
    "overlap_pct": 4.968944099378882,
    "a_full": "b2 keystone: a daemon-hosted (spt-hosted) endpoint's info.json status is reconciled to real liveness, not left latched online. the broker exit-waiter (broker.rs:889-910) reaps its in-mem session table",
    "b_full": "a self-owned subnet row reconciles its status to the live roster: a subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square"
  },
  {
    "pair": 79,
    "a": "REQ-HAZARD-INBOX-NO-DOUBLE",
    "b": "REQ-MSG-DELIVERY-AXES",
    "a_title": "No double-delivery via legacy inbox (4.5)",
    "b_title": "Activity-gated inbound delivery + per-message send control as THREE ORTHOGONAL AXES plus opaque metadata (ADR-0028; grilled w/ operator 2026-06-23). S",
    "overlap_pct": 0.0,
    "a_full": "no double-delivery via legacy inbox (4.5) ",
    "b_full": "activity-gated inbound delivery + per-message send control as three orthogonal axes plus opaque metadata (adr-0028; grilled w/ operator 2026-06-23). substrate (the legacy-spt parity gap, scaffolded-bu"
  },
  {
    "pair": 80,
    "a": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
    "b": "REQ-HAZARD-PTY-INPUT-WRITER-WEDGE",
    "a_title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-00",
    "b_title": "Pasting into an `spt rc` session WEDGES the broker \u2014 after a paste the operator can no longer type AND can no longer attach to NEW or EXISTING session",
    "overlap_pct": 8.761329305135952,
    "a_full": "spine invariant (v0.13.0 keystone): the broker must accept injected keystrokes into an spt-hosted pty (the v0.11.0 raw direct-inject today; the adr-0022 translation-binary choreography tomorrow) while",
    "b_full": "pasting into an `spt rc` session wedges the broker \u2014 after a paste the operator can no longer type and can no longer attach to new or existing sessions (`brain ipc read deadline`). root (doyle /diagno"
  },
  {
    "pair": 81,
    "a": "REQ-HAZARD-INPUT-ACK-BACKPRESSURE",
    "b": "REQ-HAZARD-VIEWER-RING-ROLL-SNAP",
    "a_title": "A FLOOD of operator input on one brain\u2194broker connection deadlocks the broker PERMANENTLY (entire broker \u2014 no new/existing attach; the controller stay",
    "b_title": "A read-only rc --view VIEWER whose serving brain falls behind the live ring under a hard flood and receives a FORWARD Output seq gap (the ring rolled ",
    "overlap_pct": 4.69208211143695,
    "a_full": "a flood of operator input on one brain\u2194broker connection deadlocks the broker permanently (entire broker \u2014 no new/existing attach; the controller stays latched because the per-conn handler can't proce",
    "b_full": "a read-only rc --view viewer whose serving brain falls behind the live ring under a hard flood and receives a forward output seq gap (the ring rolled frames out between reads, before any channel-overf"
  },
  {
    "pair": 82,
    "a": "REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE",
    "b": "REQ-HAZARD-THRASH-GUARD-BLIND",
    "a_title": "B5: `spt daemon start` does NOT revive phantom Psyches for dead-but-online-latched perches. Today reconcile_once (livehost.rs:285) spawns a Psyche per",
    "b_title": "W3 (F030 hazard; paid-for: evidence #6, hall-bf ~12/min re-host NEVER tripped the C3(b) thrash guard \u2014 boot records were not ledger boundaries to the ",
    "overlap_pct": 4.444444444444445,
    "a_full": "b5: `spt daemon start` does not revive phantom psyches for dead-but-online-latched perches. today reconcile_once (livehost.rs:285) spawns a psyche per status=online live_agent perch at boot without ve",
    "b_full": "w3 (f030 hazard; paid-for: evidence #6, hall-bf ~12/min re-host never tripped the c3(b) thrash guard \u2014 boot records were not ledger boundaries to the guard): the failure budget must count real attempt"
  },
  {
    "pair": 83,
    "a": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
    "b": "REQ-OPID-MINTER-NAMESPACE",
    "a_title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the R",
    "b_title": "A-4a (REMOTE-TRUTH triage \u00a7A + ADR-0034 Decision 1 + Amendments 1 & 2): the broker effect journal's dedup key gains a minter dimension so ops minted b",
    "overlap_pct": 0.9966777408637874,
    "a_full": "a daemon-hosted psyche that spawns then exits immediately is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the req-hazard-livehost-boot-race signal stamps `psyche",
    "b_full": "a-4a (remote-truth triage \u00a7a + adr-0034 decision 1 + amendments 1 & 2): the broker effect journal's dedup key gains a minter dimension so ops minted by independent counters can never collide. root (hi"
  },
  {
    "pair": 84,
    "a": "REQ-HAZARD-PAIR-SEED-ROTATION",
    "b": "REQ-SUBNET-ADMIN-CODE-JOIN",
    "a_title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the see",
    "b_title": "The join ceremony accepts EITHER subnet code: the SPAKE2 responder computes the member-key TOTP and the admin-key TOTP and admits a joiner proving eit",
    "overlap_pct": 1.7857142857142856,
    "a_full": "removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is not revocation because the seed is replicated to every trusted node (adr-0005 #1",
    "b_full": "the join ceremony accepts either subnet code: the spake2 responder computes the member-key totp and the admin-key totp and admits a joiner proving either (adr-0051 decision 1 \u2014 'an admin key is a memb"
  },
  {
    "pair": 85,
    "a": "REQ-HAZARD-PSYCHE-RESIDENCY-EXPECTATION",
    "b": "REQ-PSYCHE-CRASHLOOP-BACKOFF-SHUTDOWN",
    "a_title": "W3 (F030 hazard; paid-for: hall-bf churn ordinal 6491+ + adapter v0.13.2 bad-ship brick 2026-07-04): a psyche failure of ANY shape must NOT remove or ",
    "b_title": "C3 (F028, perri F-h): psyche wrapper crash-loop has no backoff, and `endpoint shutdown` misses a wedged wrapper. A probe psyche crash-looped ~3 boots/",
    "overlap_pct": 4.191616766467066,
    "a_full": "w3 (f030 hazard; paid-for: hall-bf churn ordinal 6491+ + adapter v0.13.2 bad-ship brick 2026-07-04): a psyche failure of any shape must not remove or alter the parent endpoint's ready/hosted state, an",
    "b_full": "c3 (f028, perri f-h): psyche wrapper crash-loop has no backoff, and `endpoint shutdown` misses a wedged wrapper. a probe psyche crash-looped ~3 boots/sec for ~30min (cc died instantly on the untrusted"
  },
  {
    "pair": 86,
    "a": "REQ-HAZARD-RC-ATTACH-FAILFAST",
    "b": "REQ-HAZARD-REDISPATCH-CONTROL-STEAL",
    "a_title": "B1: `spt rc <id>` to a DEAD or non-streaming session fails fast with a clear message, never an INFINITE blank screen. Today rc.rs run_attach (209-231)",
    "b_title": "REDISPATCH-TRUTH W1 (KNOWN-HAZARDS 7.41, hertz field RCA 2026-07-16 \u2014 4/5 endpoints frozen per brain cycle): a fresh dispatcher must NEVER re-serve a ",
    "overlap_pct": 4.285714285714286,
    "a_full": "b1: `spt rc <id>` to a dead or non-streaming session fails fast with a clear message, never an infinite blank screen. today rc.rs run_attach (209-231) + pump spawns pump_ipc_reader and blocks: the pol",
    "b_full": "redispatch-truth w1 (known-hazards 7.41, hertz field rca 2026-07-16 \u2014 4/5 endpoints frozen per brain cycle): a fresh dispatcher must never re-serve a terminal stream \u2014 a replayed historical attach mus"
  },
  {
    "pair": 87,
    "a": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
    "b": "REQ-SUBNET-ADMIN-RESURFACE",
    "a_title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the hosted TUI (Claude Code) deletes ONE character \u2014 never a whole word. ",
    "b_title": "Rotation re-surfaces the NEW admin key exactly once, to the human who just proved the OLD one, via a PARKED pending seed (ADR-0051 \u00a72a + the parked-pe",
    "overlap_pct": 2.3346303501945527,
    "a_full": "an `spt rc` session forwards the backspace key as the vt del byte (0x7f), so the hosted tui (claude code) deletes one character \u2014 never a whole word. symptom (operator dogfooding): backspace in an rc ",
    "b_full": "rotation re-surfaces the new admin key exactly once, to the human who just proved the old one, via a parked pending seed (adr-0051 \u00a72a + the parked-pending-key ruling, ff grill 2026-07-30). choreograp"
  },
  {
    "pair": 88,
    "a": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
    "b": "REQ-HAZARD-TEARDOWN-DEADEND",
    "a_title": "Registry rows must decay (no immortal rows) via TWO triggers: (a) NODE-SILENCE \u2014 evict rows whose author node has not been heard (admitted inbound fee",
    "b_title": "TEARDOWN-AUTHORITY W1 HAZARD (ADR-0045 decision 8; hertz RCA 2 \u2014 hit doyle's OWN live production endpoint, recoverable only by out-of-band scoped kill",
    "overlap_pct": 5.369127516778524,
    "a_full": "registry rows must decay (no immortal rows) via two triggers: (a) node-silence \u2014 evict rows whose author node has not been heard (admitted inbound feed) within the eviction window, so a vanished node'",
    "b_full": "teardown-authority w1 hazard (adr-0045 decision 8; hertz rca 2 \u2014 hit doyle's own live production endpoint, recoverable only by out-of-band scoped kill): `endpoint stop` followed by `endpoint run --id "
  },
  {
    "pair": 89,
    "a": "REQ-HAZARD-RING-PERCH-ADOPTION",
    "b": "REQ-HAZARD-TEARDOWN-DEADEND",
    "a_title": "A ring NEVER adopts \u2014 and therefore never deletes \u2014 a perch directory it did not create in THIS invocation (3.4). The twin of REQ-HAZARD-EPHEMERAL-CLE",
    "b_title": "TEARDOWN-AUTHORITY W1 HAZARD (ADR-0045 decision 8; hertz RCA 2 \u2014 hit doyle's OWN live production endpoint, recoverable only by out-of-band scoped kill",
    "overlap_pct": 7.20524017467249,
    "a_full": "a ring never adopts \u2014 and therefore never deletes \u2014 a perch directory it did not create in this invocation (3.4). the twin of req-hazard-ephemeral-cleanup, which guarded the leak direction only: clean",
    "b_full": "teardown-authority w1 hazard (adr-0045 decision 8; hertz rca 2 \u2014 hit doyle's own live production endpoint, recoverable only by out-of-band scoped kill): `endpoint stop` followed by `endpoint run --id "
  },
  {
    "pair": 90,
    "a": "REQ-HAZARD-SESSION-PIN-WEDGE",
    "b": "REQ-HAZARD-VIEWER-RING-ROLL-SNAP",
    "a_title": "A perch PINNED to a DEAD session-id self-heals instead of wedging forever. authenticate() (spt/src/api/auth.rs:78) gates api poll/state/boundary on pr",
    "b_title": "A read-only rc --view VIEWER whose serving brain falls behind the live ring under a hard flood and receives a FORWARD Output seq gap (the ring rolled ",
    "overlap_pct": 2.793296089385475,
    "a_full": "a perch pinned to a dead session-id self-heals instead of wedging forever. authenticate() (spt/src/api/auth.rs:78) gates api poll/state/boundary on proof-sid == info.json.session_id; if one boundary r",
    "b_full": "a read-only rc --view viewer whose serving brain falls behind the live ring under a hard flood and receives a forward output seq gap (the ring rolled frames out between reads, before any channel-overf"
  },
  {
    "pair": 91,
    "a": "REQ-HAZARD-SHAREDSEND-NO-BLOCKING-WRITE-UNDER-LOCK",
    "b": "REQ-MSG-INJECT-LEG-DROP-VISIBLE",
    "a_title": "UPDATE-WEDGE round-4 (hertz RCA, root reproduced + source-pinned on Windows 2026-07-09): EVERY write on a physical broker connection rides ONE bounded",
    "b_title": "SEED (inactive \u2014 observability): a silently-dropped delivery leg must be DISTINGUISHABLE from an honestly-offline endpoint on a status surface. The sp",
    "overlap_pct": 3.389830508474576,
    "a_full": "update-wedge round-4 (hertz rca, root reproduced + source-pinned on windows 2026-07-09): every write on a physical broker connection rides one bounded + cancelable + poison-on-failure framed-write pri",
    "b_full": "seed (inactive \u2014 observability): a silently-dropped delivery leg must be distinguishable from an honestly-offline endpoint on a status surface. the spt-hosted inject leg (spt-daemon inject.rs `try_spt"
  },
  {
    "pair": 92,
    "a": "REQ-HAZARD-SINGLE-PATH-SOURCE",
    "b": "REQ-REGISTRY-REPLAY-BOUNDED",
    "a_title": "Single path/registry source of truth; no layout ambiguity (6.1)",
    "b_title": "REGISTRY-LIFECYCLE W1 (ADR-0040 decision 4, hertz defect B leg 4, defense-in-depth behind REQ-ONEWAY-STREAM-TERMINAL): a deadline-poisoned one-way (Re",
    "overlap_pct": 0.0,
    "a_full": "single path/registry source of truth; no layout ambiguity (6.1) ",
    "b_full": "registry-lifecycle w1 (adr-0040 decision 4, hertz defect b leg 4, defense-in-depth behind req-oneway-stream-terminal): a deadline-poisoned one-way (registry) replay carries a per-stream strike budget;"
  },
  {
    "pair": 93,
    "a": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
    "b": "REQ-HOST-RUN-1",
    "a_title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING",
    "b_title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, b",
    "overlap_pct": 3.6585365853658534,
    "a_full": "command-template substitution fills argv elements, not a re-tokenized string: spt-core currently `fill_template`s {key} values into the command string and then `tokenize`s the filled string (runtime.r",
    "b_full": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held pty (the spawn-session seam, brain.rs spawn_session_pid \u2014 same broker path shell"
  },
  {
    "pair": 94,
    "a": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
    "b": "REQ-HAZARD-WORKER-PATH",
    "a_title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped \u2014 not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips ",
    "b_title": "Single source of truth for Worker/Psyche perch location (1.5)",
    "overlap_pct": 1.0869565217391304,
    "a_full": "on un-host, the detached `{id}-psyche` harness process is reaped \u2014 not just its in-brain pulse-driver thread. today stop_host (livehost.rs:203) trips the hostedlife stop flag + joins the driver thread",
    "b_full": "single source of truth for worker/psyche perch location (1.5) "
  },
  {
    "pair": 95,
    "a": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
    "b": "REQ-RC-RECONNECT",
    "a_title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach ONLY the `spt rc` attach pump \u2014 the d",
    "b_title": "B-3 (REMOTE-TRUTH triage \u00a7B-3, the operator-asked UX): the rc attach viewport RECONNECTS on a severed transport instead of print-and-exit. Pre-fix rc ",
    "overlap_pct": 3.881278538812785,
    "a_full": "a view is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach only the `spt rc` attach pump \u2014 the daemon-hosted harness keeps running and stays re-at",
    "b_full": "b-3 (remote-truth triage \u00a7b-3, the operator-asked ux): the rc attach viewport reconnects on a severed transport instead of print-and-exit. pre-fix rc was one-shot (resolve\u2192dial\u2192attach\u2192pump\u2192parting lin"
  },
  {
    "pair": 96,
    "a": "REQ-HAZARD-WMI-DAEMON-WINDOW",
    "b": "REQ-PICKER-ADAPTER-DESCRIPTION",
    "a_title": "`spt daemon start` launches the daemon with NO visible console window. REGRESSION (v0.12.1 L1.5): the WMI job-neutral launch (spawn_daemon_via_wmi) se",
    "b_title": "The Create-new adapter-CHOICE screen of `spt endpoint run`'s picker shows a right-hand Description panel (like the Pick-existing endpoint picker's two",
    "overlap_pct": 1.0309278350515463,
    "a_full": "`spt daemon start` launches the daemon with no visible console window. regression (v0.12.1 l1.5): the wmi job-neutral launch (spawn_daemon_via_wmi) set create_no_window on the launching powershell but",
    "b_full": "the create-new adapter-choice screen of `spt endpoint run`'s picker shows a right-hand description panel (like the pick-existing endpoint picker's two-pane) surfacing per-adapter detail: install date,"
  },
  {
    "pair": 97,
    "a": "REQ-HOST-RUN-1",
    "b": "REQ-PSYCHE-EPHEMERAL-DRIVER",
    "a_title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, b",
    "b_title": "W1 (F030, design \u00a73): each psyche-relevant event runs exactly ONE bounded per-event turn through the existing driver stack (psyche_turn_and_relay for ",
    "overlap_pct": 1.0204081632653061,
    "a_full": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held pty (the spawn-session seam, brain.rs spawn_session_pid \u2014 same broker path shell",
    "b_full": "w1 (f030, design \u00a73): each psyche-relevant event runs exactly one bounded per-event turn through the existing driver stack (psyche_turn_and_relay for outbound-intent events / resume_psyche for session"
  },
  {
    "pair": 98,
    "a": "REQ-IDLE-PARKED-DELIVERY",
    "b": "REQ-RUN-PICKER",
    "a_title": "W5 (LIFECYCLE-TRUTH): a message QUEUED to an ALREADY-idle spt-hosted endpoint is delivered without an operator poke. ROOT (live during the milestone d",
    "b_title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-",
    "overlap_pct": 1.7167381974248928,
    "a_full": "w5 (lifecycle-truth): a message queued to an already-idle spt-hosted endpoint is delivered without an operator poke. root (live during the milestone dispatch 2026-07-07): the idle-edge drain (f-023 le",
    "b_full": "interactive `spt endpoint run` picker (ratatui tui): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the req-host-run-1 non-interactive path, untouched). layer"
  },
  {
    "pair": 99,
    "a": "REQ-INST-10",
    "b": "REQ-RUN-SHORTCUT",
    "a_title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
    "b_title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basenam",
    "overlap_pct": 0.0,
    "a_full": "qualified addressing [subnet:]id[@node] + ambiguity forces qualification ",
    "b_full": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, m12-w2-t2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the c"
  },
  {
    "pair": 100,
    "a": "REQ-INST-13",
    "b": "REQ-INSTALL-13",
    "a_title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
    "b_title": "Adapter add is non-destructive & idempotent-safe (F-018): `spt adapter add --github|--release` REFUSES when the target `_github/<safe>` home already b",
    "overlap_pct": 0.0,
    "a_full": "subnet-exclusive sync + per-endpoint subnet-membership list ",
    "b_full": "adapter add is non-destructive & idempotent-safe (f-018): `spt adapter add --github|--release` refuses when the target `_github/<safe>` home already backs an active registered record \u2014 emitting an act"
  },
  {
    "pair": 101,
    "a": "REQ-INST-2",
    "b": "REQ-MIGRATE-1",
    "a_title": "Per-node files, synced Psyche mind",
    "b_title": "Auto-detect and migrate a legacy claude_skill_owl install",
    "overlap_pct": 0.0,
    "a_full": "per-node files, synced psyche mind ",
    "b_full": "auto-detect and migrate a legacy claude_skill_owl install "
  },
  {
    "pair": 102,
    "a": "REQ-INST-4",
    "b": "REQ-RUN-PICKER",
    "a_title": "active to dormant/suspended fires a transition echo commune",
    "b_title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-",
    "overlap_pct": 0.0,
    "a_full": "active to dormant/suspended fires a transition echo commune ",
    "b_full": "interactive `spt endpoint run` picker (ratatui tui): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the req-host-run-1 non-interactive path, untouched). layer"
  },
  {
    "pair": 103,
    "a": "REQ-INST-7",
    "b": "REQ-RELEASE-MUSL-ARTIFACT",
    "a_title": "Subnet registry + bare-id resolution policy",
    "b_title": "MUSL-TIER W3 (CI build + signed release + update-set publish + self-update E2E): release.yml gains a musl matrix entry (build on kitsubito; install mu",
    "overlap_pct": 0.0,
    "a_full": "subnet registry + bare-id resolution policy ",
    "b_full": "musl-tier w3 (ci build + signed release + update-set publish + self-update e2e): release.yml gains a musl matrix entry (build on kitsubito; install musl-tools+cmake+target in-job, cc_x86_64_unknown_li"
  },
  {
    "pair": 104,
    "a": "REQ-INSTALL-1",
    "b": "REQ-UPDATE-FETCH-APPLY-FLAG",
    "a_title": "Two install paths (harness-bootstrapped calls into standalone); OS-service registration deferred. HISTORY: originally 'signed one-line script' \u2014 the h",
    "b_title": "`spt update fetch --apply` is the one-shot get-to-latest: fetch, then INSTALL the staged update REGARDLESS of whether the fetch itself staged anything",
    "overlap_pct": 0.7042253521126761,
    "a_full": "two install paths (harness-bootstrapped calls into standalone); os-service registration deferred. history: originally 'signed one-line script' \u2014 the hosted one-liner retired as the public install surf",
    "b_full": "`spt update fetch --apply` is the one-shot get-to-latest: fetch, then install the staged update regardless of whether the fetch itself staged anything new \u2014 so the brittle `fetch && apply` chain (whic"
  },
  {
    "pair": 105,
    "a": "REQ-INSTALL-13",
    "b": "REQ-UPDATE-FETCH-CURRENT-UX",
    "a_title": "Adapter add is non-destructive & idempotent-safe (F-018): `spt adapter add --github|--release` REFUSES when the target `_github/<safe>` home already b",
    "b_title": "`spt update fetch` reports an already-staged / already-applied latest as an ACTIONABLE human outcome (exit 0), not a Debug-formatted error. ROOT: cmd_",
    "overlap_pct": 3.0303030303030303,
    "a_full": "adapter add is non-destructive & idempotent-safe (f-018): `spt adapter add --github|--release` refuses when the target `_github/<safe>` home already backs an active registered record \u2014 emitting an act",
    "b_full": "`spt update fetch` reports an already-staged / already-applied latest as an actionable human outcome (exit 0), not a debug-formatted error. root: cmd_update_fetch (cli.rs) sets the rollback floor = st"
  },
  {
    "pair": 106,
    "a": "REQ-INSTALL-6",
    "b": "REQ-UPDATE-FETCH-CURRENT-UX",
    "a_title": "Linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) ",
    "b_title": "`spt update fetch` reports an already-staged / already-applied latest as an ACTIONABLE human outcome (exit 0), not a Debug-formatted error. ROOT: cmd_",
    "overlap_pct": 0.8771929824561403,
    "a_full": "linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) so sudo spt resolves; first sudo spt detects eleva",
    "b_full": "`spt update fetch` reports an already-staged / already-applied latest as an actionable human outcome (exit 0), not a debug-formatted error. root: cmd_update_fetch (cli.rs) sets the rollback floor = st"
  },
  {
    "pair": 107,
    "a": "REQ-JOIN-DEFERRED-ELEVATION",
    "b": "REQ-SUBNET-4",
    "a_title": "W2 (JOIN-TRUTH, operator UX ruling verbatim): 'if --code was not supplied, don't spawn the elevated subnet-join window until a target machine is disco",
    "b_title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
    "overlap_pct": 1.8867924528301887,
    "a_full": "w2 (join-truth, operator ux ruling verbatim): 'if --code was not supplied, don't spawn the elevated subnet-join window until a target machine is discovered \u2192 just in time for the code prompt.' when --",
    "b_full": "subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment) product-surface amendment (2026-06-05 \u2014 m7 d3)"
  },
  {
    "pair": 108,
    "a": "REQ-LISTEN-PRESERVES-HOSTING-TOPOLOGY",
    "b": "REQ-SOFT-END-PRESERVES-LIVE-LISTENER",
    "a_title": "`api listen` must not ASSERT hosting topology it does not know. (hertz v0.39.0 field RCA 2026-07-21, doyle re-grounded at source.) OBSERVED: the publi",
    "b_title": "F-2 (REMOTE-TRUTH triage \u00a7F-2, field-repro'd hall-bf 2026-07-04): a /clear must not sever a SURVIVING poll listener's relay address \u2014 post-clear owl-p",
    "overlap_pct": 5.0,
    "a_full": "`api listen` must not assert hosting topology it does not know. (hertz v0.39.0 field rca 2026-07-21, doyle re-grounded at source.) observed: the published adapter sequence `api bind` then identity-pre",
    "b_full": "f-2 (remote-truth triage \u00a7f-2, field-repro'd hall-bf 2026-07-04): a /clear must not sever a surviving poll listener's relay address \u2014 post-clear owl-path send hit no_perch while ready was present and "
  },
  {
    "pair": 109,
    "a": "REQ-LIVE-AGENT-NO-INJECT-DELIVERY",
    "b": "REQ-STREAM-OPENER-DURABLE",
    "a_title": "F-033 RE-SCOPED (doyle re-ruling 2026-07-10 after the #82 gate falsified the original premise \u2014 the hosting-mode class split is BINDING context): 'sta",
    "b_title": "REDISPATCH-TRUTH W1 (ADR-0038, hertz fix B): stream classification identity is RESTART-DURABLE and independent of the evictable data ring \u2014 today reco",
    "overlap_pct": 2.5179856115107913,
    "a_full": "f-033 re-scoped (doyle re-ruling 2026-07-10 after the #82 gate falsified the original premise \u2014 the hosting-mode class split is binding context): 'state:live_agent has a self-delivery reader' conflate",
    "b_full": "redispatch-truth w1 (adr-0038, hertz fix b): stream classification identity is restart-durable and independent of the evictable data ring \u2014 today reconstruction classifies via peek_first_line from rin"
  },
  {
    "pair": 110,
    "a": "REQ-MANIFEST-4",
    "b": "REQ-MANIFEST-SUBST",
    "a_title": "Keyword hints \u2014 [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-",
    "b_title": "Manifest substitution primitives for resolve-not-execute (ADR-0029, supersedes a rejected `spt api run-hook`): (1) two adapter-static substitution key",
    "overlap_pct": 3.508771929824561,
    "a_full": "keyword hints \u2014 [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles over",
    "b_full": "manifest substitution primitives for resolve-not-execute (adr-0029, supersedes a rejected `spt api run-hook`): (1) two adapter-static substitution keys `{adapter_dir}` (the registry record's precise s"
  },
  {
    "pair": 111,
    "a": "REQ-MANIFEST-SUBST",
    "b": "REQ-PROJECT-INDEX-STORE",
    "a_title": "Manifest substitution primitives for resolve-not-execute (ADR-0029, supersedes a rejected `spt api run-hook`): (1) two adapter-static substitution key",
    "b_title": "PROJECT-INDEX W1 (ADR-0037, RCA .claude/reports/2026-07-10-hertz-session/03): spt-store owns the VERSIONED materialized project-index format + read pa",
    "overlap_pct": 1.4634146341463417,
    "a_full": "manifest substitution primitives for resolve-not-execute (adr-0029, supersedes a rejected `spt api run-hook`): (1) two adapter-static substitution keys `{adapter_dir}` (the registry record's precise s",
    "b_full": "project-index w1 (adr-0037, rca .claude/reports/2026-07-10-hertz-session/03): spt-store owns the versioned materialized project-index format + read path. reader contract: read one compact versioned in"
  },
  {
    "pair": 112,
    "a": "REQ-MSG-3",
    "b": "REQ-RC-DISPLAY-SOLE-WRITER",
    "a_title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
    "b_title": "TEARDOWN-AUTHORITY W5 (hertz RCA 3 bug 1, 2026-07-19 \u2014 REPRODUCED on 0.38.1 CLI + 0.38.1 broker; doyle ruled, and it CORRECTS an incomplete v0.38.1 ca",
    "overlap_pct": 0.0,
    "a_full": "ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown ",
    "b_full": "teardown-authority w5 (hertz rca 3 bug 1, 2026-07-19 \u2014 reproduced on 0.38.1 cli + 0.38.1 broker; doyle ruled, and it corrects an incomplete v0.38.1 call of doyle's own): while `spt rc` owns the termin"
  },
  {
    "pair": 113,
    "a": "REQ-MSG-DELIVERY-AXES",
    "b": "REQ-SEND-SPT-HOSTED",
    "a_title": "Activity-gated inbound delivery + per-message send control as THREE ORTHOGONAL AXES plus opaque metadata (ADR-0028; grilled w/ operator 2026-06-23). S",
    "b_title": "An inbound `spt send` is DELIVERED to an spt-hosted endpoint (brought up via `spt endpoint run` \u2192 `api bind`, broker holds its PTY, NO `api listen` re",
    "overlap_pct": 4.744525547445255,
    "a_full": "activity-gated inbound delivery + per-message send control as three orthogonal axes plus opaque metadata (adr-0028; grilled w/ operator 2026-06-23). substrate (the legacy-spt parity gap, scaffolded-bu",
    "b_full": "an inbound `spt send` is delivered to an spt-hosted endpoint (brought up via `spt endpoint run` \u2192 `api bind`, broker holds its pty, no `api listen` relay). today cmd_bind\u2192establish_perch (api/startup."
  },
  {
    "pair": 114,
    "a": "REQ-MSG-SENDER-STAMP",
    "b": "REQ-SEC-1",
    "a_title": "Daemon-stamped authenticated sender: a NEW additive `WanMessage.sender_proven` field (serde-default) carrying the SESSION-PROVEN sender endpoint id, w",
    "b_title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
    "overlap_pct": 1.6611295681063125,
    "a_full": "daemon-stamped authenticated sender: a new additive `wanmessage.sender_proven` field (serde-default) carrying the session-proven sender endpoint id, which lights up the req-acl-subject-chain tier-1 se",
    "b_full": "per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants "
  },
  {
    "pair": 115,
    "a": "REQ-NOTIF-COALESCE",
    "b": "REQ-NOTIF-UPDATE-ROW-VERSION-RETIRE",
    "a_title": "Coalesce-key supersession: producer-stamped key REQUIRED in namespaced form <owner>:<key> (e.g. spt-core:update-staged) \u2014 the produce front door rejec",
    "b_title": "An update-available notif row minted by a node running PRE-0.40.0 spt is retired on the version the running node has ALREADY reached \u2014 because the key",
    "overlap_pct": 3.515625,
    "a_full": "coalesce-key supersession: producer-stamped key required in namespaced form <owner>:<key> (e.g. spt-core:update-staged) \u2014 the produce front door rejects un-namespaced keys; producing a new row with th",
    "b_full": "an update-available notif row minted by a node running pre-0.40.0 spt is retired on the version the running node has already reached \u2014 because the keyed catch-up dismissal is structurally blind to it."
  },
  {
    "pair": 116,
    "a": "REQ-ONEWAY-STREAM-TERMINAL",
    "b": "REQ-STREAMLOG-SUBSCRIBER-DISCIPLINE",
    "a_title": "REGISTRY-LIFECYCLE W1 (ADR-0040 decision 1, hertz defect B leg 1): a one-way fire-and-forget stream family is TERMINAL at successful FIN, sender-side ",
    "b_title": "REDISPATCH-STALL W1 (ADR-0038 Amendment, fixes 2+3+4): StreamLog subscriber write discipline \u2014 (a) replay and live fan-out HALT at the first failed su",
    "overlap_pct": 2.4154589371980677,
    "a_full": "registry-lifecycle w1 (adr-0040 decision 1, hertz defect b leg 1): a one-way fire-and-forget stream family is terminal at successful fin, sender-side \u2014 the registry pump retires its own feed row after",
    "b_full": "redispatch-stall w1 (adr-0038 amendment, fixes 2+3+4): streamlog subscriber write discipline \u2014 (a) replay and live fan-out halt at the first failed subscriber write and the failed subscriber is remove"
  },
  {
    "pair": 117,
    "a": "REQ-PEER-PUMP-CHURN-STALL",
    "b": "REQ-PUMP-PEER-ISOLATION",
    "a_title": "B5 (F028, perri F-a; DEFECT daemon, OBSERVED-ONCE, HIGH): the peer pump STALLS under rapid rc attach/EOF-detach/--take churn. Fresh 0.22.0 daemon ~10m",
    "b_title": "PUMP-TRUTH W2 (architectural, operator ruling 2026-07-08): one peer must NOT block or poison all others -- peer discovery is async / per-peer-independ",
    "overlap_pct": 3.488372093023256,
    "a_full": "b5 (f028, perri f-a; defect daemon, observed-once, high): the peer pump stalls under rapid rc attach/eof-detach/--take churn. fresh 0.22.0 daemon ~10min after restart, during rapid rc cycling: `peer p",
    "b_full": "pump-truth w2 (architectural, operator ruling 2026-07-08): one peer must not block or poison all others -- peer discovery is async / per-peer-independent. two coupled defects in run_peer_pump: (1) seq"
  },
  {
    "pair": 118,
    "a": "REQ-PICKER-1",
    "b": "REQ-WORKER-PICKER-EXCLUDED",
    "a_title": "The picker renders a FOUR-state endpoint status (extending the W2 online/offline duality): the list-item square AND a color-coded STATUS line at the t",
    "b_title": "V-2 (WORKER-TRUTH triage, operator rider): non-drivable endpoint classes never render as `spt endpoint run` picker rows \u2014 a worker perch cannot be dri",
    "overlap_pct": 1.574803149606299,
    "a_full": "the picker renders a four-state endpoint status (extending the w2 online/offline duality): the list-item square and a color-coded status line at the top of the pick-existing right-side details both sh",
    "b_full": "v-2 (worker-truth triage, operator rider): non-drivable endpoint classes never render as `spt endpoint run` picker rows \u2014 a worker perch cannot be driven, instantiated, or controlled; offering it is a"
  },
  {
    "pair": 119,
    "a": "REQ-PICKER-3",
    "b": "REQ-PICKER-RESUME-CONTEXT-PANEL",
    "a_title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is sel",
    "b_title": "#6: the 'Resume from history' view keeps the endpoint's 'Confirm selection' top panel and swaps ONLY the bottom panel to 'Resume from a prior session'",
    "overlap_pct": 1.0752688172043012,
    "a_full": "a self-owned subnet row reconciles its status to the live roster: a subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square",
    "b_full": "#6: the 'resume from history' view keeps the endpoint's 'confirm selection' top panel and swaps only the bottom panel to 'resume from a prior session' \u2014 the user stays contextually informed about what"
  },
  {
    "pair": 120,
    "a": "REQ-PICKER-5",
    "b": "REQ-PICKER-FORK-LABEL-CWD",
    "a_title": "`spt endpoint list` (bare/subnet view) renders an ALIGNED table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` TAB separat",
    "b_title": "B-3 (F029, operator): the confirm-panel `Fork endpoint` option label is static and says nothing about WHERE the fork lands. A fork runs in the picker'",
    "overlap_pct": 2.2900763358778624,
    "a_full": "`spt endpoint list` (bare/subnet view) renders an aligned table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` tab separators (cli.rs:~1651-1662) so variable-width endpoint",
    "b_full": "b-3 (f029, operator): the confirm-panel `fork endpoint` option label is static and says nothing about where the fork lands. a fork runs in the picker's launch cwd (run_cwd); the label must state that "
  },
  {
    "pair": 121,
    "a": "REQ-PICKER-BACK-NAV",
    "b": "REQ-PICKER-HISTORY-FRESH",
    "a_title": "C-4 (REMOTE-TRUTH triage \u00a7C-4 #9): Backspace is a back() ALIAS across the picker \u2014 one keypress backs out one screen along the SAME reverse map Esc wa",
    "b_title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint show",
    "overlap_pct": 1.8181818181818181,
    "a_full": "c-4 (remote-truth triage \u00a7c-4 #9): backspace is a back() alias across the picker \u2014 one keypress backs out one screen along the same reverse map esc walks (model back(), complete for all screens incl. ",
    "b_full": "the `spt endpoint run` picker shows project history for fresh endpoints (operator-raised v0.12.0 real-harness finding). symptom: a fresh endpoint shows no project history in the picker. root tbd \u2014 inv"
  },
  {
    "pair": 122,
    "a": "REQ-PICKER-CHANGE-ADAPTER-FLOW",
    "b": "REQ-SEAM-UPDATE",
    "a_title": "B-2 (F029, operator; LARGEST item): `ConfirmOption::ChangeAdapter` wrongly routes into the CREATE flow (Screen::CreateAdapter \u2192 CreateId \u2192 CreateHome ",
    "b_title": "Adapter-update avenue (file-pull / delegated command)",
    "overlap_pct": 0.0,
    "a_full": "b-2 (f029, operator; largest item): `confirmoption::changeadapter` wrongly routes into the create flow (screen::createadapter \u2192 createid \u2192 createhome \u2192 start, reenter_create(true)) \u2014 it re-prompts id ",
    "b_full": "adapter-update avenue (file-pull / delegated command) "
  },
  {
    "pair": 123,
    "a": "REQ-PICKER-CONTROL-LINE-STATUS-GATE",
    "b": "REQ-SUBNET-DISPLAY-PARITY",
    "a_title": "A2 (F028, operator #2): the picker confirm-panel 'controlled locally' line renders for OFFLINE endpoints. view.rs:425-436 builds control_line from ep.",
    "b_title": "The `spt endpoint run` picker renders endpoint state IDENTICALLY for local and remote (subnet) rows \u2014 bound/unbound, controlled (+driver node), and ha",
    "overlap_pct": 3.9473684210526314,
    "a_full": "a2 (f028, operator #2): the picker confirm-panel 'controlled locally' line renders for offline endpoints. view.rs:425-436 builds control_line from ep.controlled with no status gate; an offline endpoin",
    "b_full": "the `spt endpoint run` picker renders endpoint state identically for local and remote (subnet) rows \u2014 bound/unbound, controlled (+driver node), and harness-only are all visible across the subnet, not "
  },
  {
    "pair": 124,
    "a": "REQ-PICKER-HISTORY-FRESH",
    "b": "REQ-PICKER-ONLINE-ACTION",
    "a_title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint show",
    "b_title": "The `spt endpoint run` picker shows the correct action for an ALREADY-ONLINE endpoint \u2014 Attach, NOT 'Start now' (operator-raised v0.12.0 real-harness ",
    "overlap_pct": 24.193548387096776,
    "a_full": "the `spt endpoint run` picker shows project history for fresh endpoints (operator-raised v0.12.0 real-harness finding). symptom: a fresh endpoint shows no project history in the picker. root tbd \u2014 inv",
    "b_full": "the `spt endpoint run` picker shows the correct action for an already-online endpoint \u2014 attach, not 'start now' (operator-raised v0.12.0 real-harness finding). symptom: the picker offers 'start now' f"
  },
  {
    "pair": 125,
    "a": "REQ-PICKER-OFFLINE-NO-VIEW",
    "b": "REQ-PICKER-PROJECT-HISTORY-TRUTH",
    "a_title": "A3 (F028, operator #3): 'View now (read-only)' is offered for OFFLINE endpoints. model.rs:1030 offline branch of confirm_options is vec![Start, View] ",
    "b_title": "#1: picker project history is derived from sessions.log cwds (newest->oldest, deduped by project_id_for_dir) UNION context-store branches, EXCLUDING o",
    "overlap_pct": 0.0,
    "a_full": "a3 (f028, operator #3): 'view now (read-only)' is offered for offline endpoints. model.rs:1030 offline branch of confirm_options is vec![start, view] \u2014 view is meaningless with no live pty. fix: offli",
    "b_full": "#1: picker project history is derived from sessions.log cwds (newest->oldest, deduped by project_id_for_dir) union context-store branches, excluding owlery-internal paths (any cwd under spt_home()/owl"
  },
  {
    "pair": 126,
    "a": "REQ-PICKER-PROJECT-HISTORY-TRUTH",
    "b": "REQ-PICKER-RESUME-CONTEXT-PANEL",
    "a_title": "#1: picker project history is derived from sessions.log cwds (newest->oldest, deduped by project_id_for_dir) UNION context-store branches, EXCLUDING o",
    "b_title": "#6: the 'Resume from history' view keeps the endpoint's 'Confirm selection' top panel and swaps ONLY the bottom panel to 'Resume from a prior session'",
    "overlap_pct": 3.4482758620689653,
    "a_full": "#1: picker project history is derived from sessions.log cwds (newest->oldest, deduped by project_id_for_dir) union context-store branches, excluding owlery-internal paths (any cwd under spt_home()/owl",
    "b_full": "#6: the 'resume from history' view keeps the endpoint's 'confirm selection' top panel and swaps only the bottom panel to 'resume from a prior session' \u2014 the user stays contextually informed about what"
  },
  {
    "pair": 127,
    "a": "REQ-PICKER-RESUME-CONTEXT-PANEL",
    "b": "REQ-SESSION-RESUME-TEMPLATE",
    "a_title": "#6: the 'Resume from history' view keeps the endpoint's 'Confirm selection' top panel and swaps ONLY the bottom panel to 'Resume from a prior session'",
    "b_title": "Resuming an endpoint session that HAS conversation history brings up a BLANK session. ROOT (doyle, code-grounded + CONTEXT \u2014 case-3 spt-core MISSING f",
    "overlap_pct": 1.809954751131222,
    "a_full": "#6: the 'resume from history' view keeps the endpoint's 'confirm selection' top panel and swaps only the bottom panel to 'resume from a prior session' \u2014 the user stays contextually informed about what",
    "b_full": "resuming an endpoint session that has conversation history brings up a blank session. root (doyle, code-grounded + context \u2014 case-3 spt-core missing feature, not a perri docs-miss): context l127-129 a"
  },
  {
    "pair": 128,
    "a": "REQ-PRESENCE-CONTROL-REAP-ON-EXIT",
    "b": "REQ-SESSIONS-LOG-ENDPOINT-ATTRIBUTION",
    "a_title": "B3 (F028, hall-b diagnosis + deferred #11 seed; BROADENED perri F-b CONFIRMED): dead-pid ONLINE decay window + sticky CONTROLLED stamp. Repro: /exit -",
    "b_title": "C2 (F028, infra; ROOT-CAUSED + severity-upgraded doyle RCA 2026-07-03): cross-endpoint perch contamination \u2014 a foreign psyche's SessionStart hook REBI",
    "overlap_pct": 4.516129032258064,
    "a_full": "b3 (f028, hall-b diagnosis + deferred #11 seed; broadened perri f-b confirmed): dead-pid online decay window + sticky controlled stamp. repro: /exit -> all endpoint processes dead -> `endpoint list` s",
    "b_full": "c2 (f028, infra; root-caused + severity-upgraded doyle rca 2026-07-03): cross-endpoint perch contamination \u2014 a foreign psyche's sessionstart hook rebinds a victim perch's identity, not merely its ledg"
  },
  {
    "pair": 129,
    "a": "REQ-PSYCHE-CONTEXT-FILE-INDIRECTION",
    "b": "REQ-PSYCHE-STAMP-CLEAR-ANY-SUCCESS",
    "a_title": "W4 (F030; doyle Q2 ruling + perri file-always freeze, 2026-07-04): the composed psyche mind ({psyche_context}) rides the SHIM argv today \u2014 a real ~20K",
    "b_title": "W1 (LIFECYCLE-TRUTH): EVERY successful psyche operation clears psyche_host_error \u2014 not just the pulse-loop leg. ROOT (three field confirmations, perri",
    "overlap_pct": 1.1363636363636365,
    "a_full": "w4 (f030; doyle q2 ruling + perri file-always freeze, 2026-07-04): the composed psyche mind ({psyche_context}) rides the shim argv today \u2014 a real ~20kb doyle psyche-download exceeds the win32 createpr",
    "b_full": "w1 (lifecycle-truth): every successful psyche operation clears psyche_host_error \u2014 not just the pulse-loop leg. root (three field confirmations, perri): the stamp clears only via note_turn_outcome's o"
  },
  {
    "pair": 130,
    "a": "REQ-PSYCHE-LEGACY-RESIDENT-SWEEP",
    "b": "REQ-PUMP-PEER-ISOLATION",
    "a_title": "W5 (F030; doyle+perri 2026-07-04): a dirty daemon upgrade from <=v0.24.0 strands a RESIDENT psyche wrapper the OLD daemon spawned \u2014 and F-030 W4's nes",
    "b_title": "PUMP-TRUTH W2 (architectural, operator ruling 2026-07-08): one peer must NOT block or poison all others -- peer discovery is async / per-peer-independ",
    "overlap_pct": 3.3962264150943398,
    "a_full": "w5 (f030; doyle+perri 2026-07-04): a dirty daemon upgrade from <=v0.24.0 strands a resident psyche wrapper the old daemon spawned \u2014 and f-030 w4's nested-`ready` resolution fix converted that wrapper'",
    "b_full": "pump-truth w2 (architectural, operator ruling 2026-07-08): one peer must not block or poison all others -- peer discovery is async / per-peer-independent. two coupled defects in run_peer_pump: (1) seq"
  },
  {
    "pair": 131,
    "a": "REQ-PSYCHE-ROLE-OPTIONAL-SKIP",
    "b": "REQ-WORKER-SID-SYMMETRIC-AUTH",
    "a_title": "W1 (LIFECYCLE-TRUTH): a manifest with NO [session.echo_commune] role SKIPS commune-sync (debug-level note, no strike) instead of hard-failing the turn",
    "b_title": "W-2 (WORKER-TRUTH triage, operator-ruled 2026-07-06): worker verbs go sid-symmetric with every sibling id-scoped verb \u2014 worker-start mints NO token an",
    "overlap_pct": 2.586206896551724,
    "a_full": "w1 (lifecycle-truth): a manifest with no [session.echo_commune] role skips commune-sync (debug-level note, no strike) instead of hard-failing the turn. root (perri filing, recovered): missing role -> ",
    "b_full": "w-2 (worker-truth triage, operator-ruled 2026-07-06): worker verbs go sid-symmetric with every sibling id-scoped verb \u2014 worker-start mints no token and worker-stop takes none (token custody is undue a"
  },
  {
    "pair": 132,
    "a": "REQ-PUMP-DIAL-FASTFAIL",
    "b": "REQ-PUMP-STAGE-TRUTH",
    "a_title": "PUMP-TRUTH W1 (RE-SCOPED post round-2 empirical lock \u2014 the DIAL is EXONERATED, healthy ~100ms): a pump worker-leg PEER-REPLY read to a connect-then-si",
    "b_title": "MESH-RECOVERY W1 (ADR-0039, RCA wave 3 \u2014 the acceptance surface, same contract): peer-failure telemetry is STAGE-SPLIT and health is USER-MEANINGFUL. ",
    "overlap_pct": 4.301075268817205,
    "a_full": "pump-truth w1 (re-scoped post round-2 empirical lock \u2014 the dial is exonerated, healthy ~100ms): a pump worker-leg peer-reply read to a connect-then-silent / half-alive peer must drop that peer as an o",
    "b_full": "mesh-recovery w1 (adr-0039, rca wave 3 \u2014 the acceptance surface, same contract): peer-failure telemetry is stage-split and health is user-meaningful. the single 10s pump_peer_fail token splits into at"
  },
  {
    "pair": 133,
    "a": "REQ-RC-DISPLAY-SOLE-WRITER",
    "b": "REQ-RUN-EMPTY-CREATE",
    "a_title": "TEARDOWN-AUTHORITY W5 (hertz RCA 3 bug 1, 2026-07-19 \u2014 REPRODUCED on 0.38.1 CLI + 0.38.1 broker; doyle ruled, and it CORRECTS an incomplete v0.38.1 ca",
    "b_title": "`spt endpoint run` / bare `spt` routes a TOTALLY-EMPTY scope straight to the endpoint-creation flow: when gather_endpoints() is empty (nothing attacha",
    "overlap_pct": 2.1551724137931036,
    "a_full": "teardown-authority w5 (hertz rca 3 bug 1, 2026-07-19 \u2014 reproduced on 0.38.1 cli + 0.38.1 broker; doyle ruled, and it corrects an incomplete v0.38.1 call of doyle's own): while `spt rc` owns the termin",
    "b_full": "`spt endpoint run` / bare `spt` routes a totally-empty scope straight to the endpoint-creation flow: when gather_endpoints() is empty (nothing attachable, local or subnet) pickermodel::new opens on sc"
  },
  {
    "pair": 134,
    "a": "REQ-RC-RECONNECT",
    "b": "REQ-RESUME-ROW-PER-PROJECT",
    "a_title": "B-3 (REMOTE-TRUTH triage \u00a7B-3, the operator-asked UX): the rc attach viewport RECONNECTS on a severed transport instead of print-and-exit. Pre-fix rc ",
    "b_title": "A5 (F028, operator #6): resume-from-history labels EVERY session with the endpoint's newest project. data.rs:480-496 resume_rows_for clones project_hi",
    "overlap_pct": 3.2653061224489797,
    "a_full": "b-3 (remote-truth triage \u00a7b-3, the operator-asked ux): the rc attach viewport reconnects on a severed transport instead of print-and-exit. pre-fix rc was one-shot (resolve\u2192dial\u2192attach\u2192pump\u2192parting lin",
    "b_full": "a5 (f028, operator #6): resume-from-history labels every session with the endpoint's newest project. data.rs:480-496 resume_rows_for clones project_history.first() onto every resumerow (line 481/488),"
  },
  {
    "pair": 135,
    "a": "REQ-REDISPATCH-FINISHED-RETIRE",
    "b": "REQ-STREAM-LEASE-CLASSES",
    "a_title": "REDISPATCH-TRUTH W1 (ADR-0038, hertz fix A): finished/terminal stream rows are RETIRED from redispatch eligibility \u2014 NetShared.streams today has NO re",
    "b_title": "REGISTRY-LIFECYCLE W2 (ADR-0040 decision 6 + ADR-0041, emphasys C2 P0): streams declare a lifetime class at open \u2014 RC attach/view streams are Connecti",
    "overlap_pct": 6.363636363636363,
    "a_full": "redispatch-truth w1 (adr-0038, hertz fix a): finished/terminal stream rows are retired from redispatch eligibility \u2014 netshared.streams today has no removal path (single insert nethost.rs ~649; streaml",
    "b_full": "registry-lifecycle w2 (adr-0040 decision 6 + adr-0041, emphasys c2 p0): streams declare a lifetime class at open \u2014 rc attach/view streams are connectionbound (opener conn eof means the target sees fin"
  },
  {
    "pair": 136,
    "a": "REQ-RELEASE-CHANNEL-PRIVATE",
    "b": "REQ-UPDATE-FINISH-COMMUNE-FLUSH",
    "a_title": "THE-FORKENING W2 (ADR-0036 \u00a72): the publish pipeline targets `BigscreenVR/spt-bs-releases` \u2014 release.yml assemble/draft/flip retargeted (draft lands o",
    "b_title": "DEFERRED (post-LIFECYCLE-TRUTH, operator-ruled 2026-07-07 \u2014 mint now, impl a FUTURE milestone): make the update swap LOSSLESS for live hosted endpoint",
    "overlap_pct": 1.530612244897959,
    "a_full": "the-forkening w2 (adr-0036 \u00a72): the publish pipeline targets `bigscreenvr/spt-bs-releases` \u2014 release.yml assemble/draft/flip retargeted (draft lands on the bs releases repo, untagged, per the existing",
    "b_full": "deferred (post-lifecycle-truth, operator-ruled 2026-07-07 \u2014 mint now, impl a future milestone): make the update swap lossless for live hosted endpoints by flushing a final echo-commune per endpoint be"
  },
  {
    "pair": 137,
    "a": "REQ-RESUME-ADAPTER-FOLLOWS-SESSION",
    "b": "REQ-UPDATE-APPLY-RESTART-NOTICE",
    "a_title": "D-2 (REMOTE-TRUTH triage \u00a7D-2 + operator Q5 @c248afc): a resume-from-history restores the RECORDED session adapter (REQ-SESSION-ADAPTER-RECORDED) \u2014 th",
    "b_title": "`spt update apply` prints a LOUD restart-required notice whenever the surviving broker will keep running the pre-apply image (which, until broker-rest",
    "overlap_pct": 2.5380710659898478,
    "a_full": "d-2 (remote-truth triage \u00a7d-2 + operator q5 @c248afc): a resume-from-history restores the recorded session adapter (req-session-adapter-recorded) \u2014 the resumed harness is the one the session ran under",
    "b_full": "`spt update apply` prints a loud restart-required notice whenever the surviving broker will keep running the pre-apply image (which, until broker-restart choreography exists, is always on a successful"
  },
  {
    "pair": 138,
    "a": "REQ-RESUME-HARNESS-SESSION-ID",
    "b": "REQ-WHOAMI-IDENTITY-ONLY",
    "a_title": "B2 (F028, hall-b diagnosis, verified 0.22.0): respawn/`--resume` feeds the SPT session id to `claude -r`. After the 02:05 daemon bounce respawn built ",
    "b_title": "PROJECT-INDEX W1 (F-040, perri filing claude-spt docs/SPT-CORE-FINDINGS.md @d775b38; correctness-critical opener \u2014 the 2026-07-15 message-bodies incid",
    "overlap_pct": 2.4752475247524752,
    "a_full": "b2 (f028, hall-b diagnosis, verified 0.22.0): respawn/`--resume` feeds the spt session id to `claude -r`. after the 02:05 daemon bounce respawn built `claude.exe -r 70b5bfa40901b7d4` \u2014 an spt session ",
    "b_full": "project-index w1 (f-040, perri filing claude-spt docs/spt-core-findings.md @d775b38; correctness-critical opener \u2014 the 2026-07-15 message-bodies incident root): a core identity-only resolution \u2014 sessi"
  },
  {
    "pair": 139,
    "a": "REQ-RUN-PICKER",
    "b": "REQ-RUN-SHORTCUT",
    "a_title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-",
    "b_title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basenam",
    "overlap_pct": 4.294478527607362,
    "a_full": "interactive `spt endpoint run` picker (ratatui tui): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the req-host-run-1 non-interactive path, untouched). layer",
    "b_full": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, m12-w2-t2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the c"
  },
  {
    "pair": 140,
    "a": "REQ-SEAM-SPAWN",
    "b": "REQ-SELF-ID-TRUST-INJECTED-ENV",
    "a_title": "spawn-session seam",
    "b_title": "DEFERRED to a followup vX.X.n sprint (post-LIFECYCLE-TRUTH, operator-ruled 2026-07-07): self-identity resolution must trust the harness-injected autho",
    "overlap_pct": 0.0,
    "a_full": "spawn-session seam ",
    "b_full": "deferred to a followup vx.x.n sprint (post-lifecycle-truth, operator-ruled 2026-07-07): self-identity resolution must trust the harness-injected authoritative id and detect a stomped perch instead of "
  },
  {
    "pair": 141,
    "a": "REQ-SESSION-ADAPTER-RECORDED",
    "b": "REQ-START-2",
    "a_title": "D-2 (REMOTE-TRUTH triage \u00a7D-2 + operator Q5 @c248afc): the session ledger records the adapter[:profile] a session ran under, so a later resume can res",
    "b_title": "Harness-hosted startup: api seed then listen",
    "overlap_pct": 0.0,
    "a_full": "d-2 (remote-truth triage \u00a7d-2 + operator q5 @c248afc): the session ledger records the adapter[:profile] a session ran under, so a later resume can restore the harness the session actually used (not me",
    "b_full": "harness-hosted startup: api seed then listen "
  },
  {
    "pair": 142,
    "a": "REQ-SOFT-END-PRESERVES-LIVE-LISTENER",
    "b": "REQ-WHOAMI-1",
    "a_title": "F-2 (REMOTE-TRUTH triage \u00a7F-2, field-repro'd hall-bf 2026-07-04): a /clear must not sever a SURVIVING poll listener's relay address \u2014 post-clear owl-p",
    "b_title": "The `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after t",
    "overlap_pct": 2.0325203252032518,
    "a_full": "f-2 (remote-truth triage \u00a7f-2, field-repro'd hall-bf 2026-07-04): a /clear must not sever a surviving poll listener's relay address \u2014 post-clear owl-path send hit no_perch while ready was present and ",
    "b_full": "the `endpoint list` self pin carries the self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state; whoami stays a top-level hot-pa"
  },
  {
    "pair": 143,
    "a": "REQ-SUBNET-ADMIN-CODE-JOIN",
    "b": "REQ-SUBNET-ADMIN-SEED-REPLICATION",
    "a_title": "The join ceremony accepts EITHER subnet code: the SPAKE2 responder computes the member-key TOTP and the admin-key TOTP and admits a joiner proving eit",
    "b_title": "Every member node holds BOTH subnet seeds \u2014 the admin seed replicates at join exactly as the member seed does \u2014 because empower verification and admin",
    "overlap_pct": 11.11111111111111,
    "a_full": "the join ceremony accepts either subnet code: the spake2 responder computes the member-key totp and the admin-key totp and admits a joiner proving either (adr-0051 decision 1 \u2014 'an admin key is a memb",
    "b_full": "every member node holds both subnet seeds \u2014 the admin seed replicates at join exactly as the member seed does \u2014 because empower verification and admin-code joins are local operations any member node m"
  },
  {
    "pair": 144,
    "a": "REQ-TRANSLATE-BINARY-LIVENESS-DECAY",
    "b": "REQ-TRANSLATE-COMMIT-MISS-TOLERANCE",
    "a_title": "SUPERSEDED by REQ-TRANSLATE-COMMIT-MISS-TOLERANCE (F029 C-1). B6 (F028, perri F-e) was ROOT-PINNED as the commit-deadline-miss fault: at a checkpoint ",
    "b_title": "C-1 (F029, B6 ROOT \u2014 rescope of REQ-TRANSLATE-BINARY-LIVENESS-DECAY, now PINNED): at a checkpoint clear boundary the clear-only inject drives `/clear`",
    "overlap_pct": 20.161290322580644,
    "a_full": "superseded by req-translate-commit-miss-tolerance (f029 c-1). b6 (f028, perri f-e) was root-pinned as the commit-deadline-miss fault: at a checkpoint clear boundary the clear-only inject's {commit} wa",
    "b_full": "c-1 (f029, b6 root \u2014 rescope of req-translate-binary-liveness-decay, now pinned): at a checkpoint clear boundary the clear-only inject drives `/clear`; its `{commit}` is never observed within inject_c"
  },
  {
    "pair": 145,
    "a": "REQ-UPD-4",
    "b": "REQ-UPDATE-ONE-SHOT-FINISH",
    "a_title": "Update gated on user confirmation by default; opt-in full-auto",
    "b_title": "W3 (LIFECYCLE-TRUTH): update apply works daemonless and one command finishes the cycle. ROOT (operator wart): update fetch/apply run ensure_daemon_ann",
    "overlap_pct": 1.5873015873015872,
    "a_full": "update gated on user confirmation by default; opt-in full-auto ",
    "b_full": "w3 (lifecycle-truth): update apply works daemonless and one command finishes the cycle. root (operator wart): update fetch/apply run ensure_daemon_announced (cli.rs:4386) -> on a stopped box they boot"
  },
  {
    "pair": 146,
    "a": "REQ-UPD-9",
    "b": "REQ-UPDATE-ADAPTERS-VERB",
    "a_title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`,",
    "b_title": "THE-FORKENING W4 (operator-grilled 2026-07-14): `spt update adapters [<a>[,<b>...]]` = thin ALIAS over the existing `spt adapter update` engine (cli.r",
    "overlap_pct": 3.418803418803419,
    "a_full": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional ed25519 `signin",
    "b_full": "the-forkening w4 (operator-grilled 2026-07-14): `spt update adapters [<a>[,<b>...]]` = thin alias over the existing `spt adapter update` engine (cli.rs:748 gh_release avenue; the old verb stays \u2014 publ"
  },
  {
    "pair": 147,
    "a": "REQ-UPDATE-FETCH-CURRENT-UX",
    "b": "REQ-UPDATE-RUNNING-IMAGE-SURFACE",
    "a_title": "`spt update fetch` reports an already-staged / already-applied latest as an ACTIONABLE human outcome (exit 0), not a Debug-formatted error. ROOT: cmd_",
    "b_title": "`spt` surfaces the RUNNING broker image version beside the on-disk version so an updated-looking node reveals broker-side dormancy. ROOT (F-025): `spt",
    "overlap_pct": 2.4,
    "a_full": "`spt update fetch` reports an already-staged / already-applied latest as an actionable human outcome (exit 0), not a debug-formatted error. root: cmd_update_fetch (cli.rs) sets the rollback floor = st",
    "b_full": "`spt` surfaces the running broker image version beside the on-disk version so an updated-looking node reveals broker-side dormancy. root (f-025): `spt update apply` restarts the brain only (adr-0018 d"
  }
]