[
  {
    "a": "REQ-ARCH-2",
    "b": "REQ-INST-1",
    "a_title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
    "b_title": "endpoint ID vs instance split (adapter-agnostic ID)"
  },
  {
    "a": "REQ-HAZARD-CONTROL-STAMP-LIFETIME",
    "b": "REQ-HAZARD-REGISTRY-STALL",
    "a_title": "#2: a control/viewer stamp never outlives its session — every teardown path clea",
    "b_title": "REGISTRY-LIFECYCLE W1 (KNOWN-HAZARDS 7.44, hertz post-close v0.36 RCA — the umbr"
  },
  {
    "a": "REQ-LISTEN-PRESERVES-HOSTING-TOPOLOGY",
    "b": "REQ-START-1",
    "a_title": "`api listen` must not ASSERT hosting topology it does not know. (hertz v0.39.0 f",
    "b_title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only"
  },
  {
    "a": "REQ-ECHO-DROP-DIR-RESOLVE",
    "b": "REQ-HAZARD-RESUME-CUSTODY-ABA",
    "a_title": "W1 (LIFECYCLE-TRUTH): fire_echo resolves the manifest commune_dir through the SA",
    "b_title": "KNOWN-HAZARDS 7.51: process custody is an identity, never a bare PID — a recycle"
  },
  {
    "a": "REQ-DOCS-6",
    "b": "REQ-MANIFEST-4",
    "a_title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quic",
    "b_title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --sessi"
  },
  {
    "a": "REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE",
    "b": "REQ-HAZARD-RESTART-IDEMPOTENT",
    "a_title": "W2 (LIFECYCLE-TRUTH, KNOWN-HAZARDS, flagship — the update wedge): PTY viewer fan",
    "b_title": "Idempotent/exactly-once delivery across brain restart at every broker boundary ("
  },
  {
    "a": "REQ-DAEMON-9",
    "b": "REQ-NET-FAMILY-GATE",
    "a_title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start f",
    "b_title": "spt-core binds only IP families that are actually REACHABLE (ADR-0030), so a hal"
  },
  {
    "a": "REQ-CONN-POISON-ATTRIBUTION",
    "b": "REQ-HAZARD-RC-ATTACH-TRUTH",
    "a_title": "MSG-IDENTITY W6 / F-039 legs b-d (doyle W6 LOCK 2026-07-10, minted per amendment",
    "b_title": "RC-RENDER-TRUTH W1 (KNOWN-HAZARDS 7.46 — umbrella conformance seam for ADR-0042)"
  },
  {
    "a": "REQ-ENDPOINT-LIST-REST-FILTER",
    "b": "REQ-PICKER-KEY-GATE-LAUNCH-CAPABLE",
    "a_title": "spt endpoint list hides SUSPENDED instances by default; a new --show-all flag re",
    "b_title": "B-1 (F029, operator): the `h` (headless start) / `s` (shortcut) keybinds fire fr"
  },
  {
    "a": "REQ-HAZARD-INBOX-NO-DOUBLE",
    "b": "REQ-HAZARD-RESTART-IDEMPOTENT",
    "a_title": "No double-delivery via legacy inbox (4.5)",
    "b_title": "Idempotent/exactly-once delivery across brain restart at every broker boundary ("
  },
  {
    "a": "REQ-HAZARD-PSYCHE-RESIDENCY-EXPECTATION",
    "b": "REQ-HAZARD-TEARDOWN-DEADEND",
    "a_title": "W3 (F030 hazard; paid-for: hall-bf churn ordinal 6491+ + adapter v0.13.2 bad-shi",
    "b_title": "TEARDOWN-AUTHORITY W1 HAZARD (ADR-0045 decision 8; hertz RCA 2 — hit doyle's OWN"
  },
  {
    "a": "REQ-HAZARD-RESUME-CUSTODY-ABA",
    "b": "REQ-RESUME-ADAPTER-FOLLOWS-SESSION",
    "a_title": "KNOWN-HAZARDS 7.51: process custody is an identity, never a bare PID — a recycle",
    "b_title": "D-2 (REMOTE-TRUTH triage §D-2 + operator Q5 @c248afc): a resume-from-history res"
  },
  {
    "a": "REQ-ARCH-1",
    "b": "REQ-ARCH-2",
    "a_title": "Many small acyclically-layered crates",
    "b_title": "Public SDK surface is spt-proto, spt-runtime, spt-msg"
  },
  {
    "a": "REQ-DOCS-4",
    "b": "REQ-DOCS-NO-INTERNAL-CODES",
    "a_title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
    "b_title": "Public CLI --help (the clap `///` doc-comments) and the generated `docs-site/src"
  },
  {
    "a": "REQ-HAZARD-SHAREDSEND-NO-BLOCKING-WRITE-UNDER-LOCK",
    "b": "REQ-PEER-PUMP-CHURN-STALL",
    "a_title": "UPDATE-WEDGE round-4 (hertz RCA, root reproduced + source-pinned on Windows 2026",
    "b_title": "B5 (F028, perri F-a; DEFECT daemon, OBSERVED-ONCE, HIGH): the peer pump STALLS u"
  },
  {
    "a": "REQ-INST-13",
    "b": "REQ-RUN-PICKER-HOME",
    "a_title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
    "b_title": "Home-subnet selection LAYER in the `spt endpoint run` ratatui Create-new picker "
  },
  {
    "a": "REQ-RESUME-UNBOUND-STAMP",
    "b": "REQ-SELF-ID-TRUST-INJECTED-ENV",
    "a_title": "RC-RENDER-TRUTH W1 (ADR-0042 decision 2, operator-spotted second root seam): res",
    "b_title": "DEFERRED to a followup vX.X.n sprint (post-LIFECYCLE-TRUTH, operator-ruled 2026-"
  },
  {
    "a": "REQ-EP-3",
    "b": "REQ-PSYCHE-STAMP-CLEAR-ANY-SUCCESS",
    "a_title": "Messaging payloads carry typed operation commands + file blobs",
    "b_title": "W1 (LIFECYCLE-TRUTH): EVERY successful psyche operation clears psyche_host_error"
  },
  {
    "a": "REQ-ENDPOINT-MESSAGE-ONLY-DISPLAY",
    "b": "REQ-RUN-ID-REUSES-ADAPTER",
    "a_title": "An online agent-family endpoint with NO session surface reads as message-reachab",
    "b_title": "D-1 (REMOTE-TRUTH triage §D-1): `spt endpoint run --id <id>` with NO --adapter, "
  },
  {
    "a": "REQ-HAZARD-CONTROLLER-GAP-RESUME",
    "b": "REQ-LIVE-AGENT-NO-INJECT-DELIVERY",
    "a_title": "A serving CONTROLLER whose serve-brain hits a b4 drop-don't-block FORWARD output",
    "b_title": "F-033 RE-SCOPED (doyle re-ruling 2026-07-10 after the #82 gate falsified the ori"
  },
  {
    "a": "REQ-HAZARD-RENDER-LIFECYCLE",
    "b": "REQ-HAZARD-VIEWER-STARVE-UNDER-CONTROLLER-BACKPRESSURE",
    "a_title": "RC-RENDER-TRUTH W3 (KNOWN-HAZARDS 7.47 — umbrella conformance seam for ADR-0043)",
    "b_title": "A SLOW controller must not starve a concurrent `rc --view` VIEWER. W1 (REQ-HAZAR"
  },
  {
    "a": "REQ-HAZARD-STALE-INDEX-LOCK",
    "b": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
    "a_title": "Sweep stale lockfiles on daemon boot (1.3)",
    "b_title": "Stale registry entries degrade to fallback, never hard-fail (4.3)"
  },
  {
    "a": "REQ-HAZARD-CONTROL-STAMP-CONVERGENCE",
    "b": "REQ-WAKE-RESUME-LEG",
    "a_title": "Control/viewer stamps must CONVERGE to broker session-table truth for every sess",
    "b_title": "A-2 (REMOTE-TRUTH triage §A-2 + ADR-0033): the daemon reconcile gains a WAKE-RES"
  },
  {
    "a": "REQ-PSYCHE-SID-CUSTODY",
    "b": "REQ-SESSION-ADAPTER-RECORDED",
    "a_title": "W2 (F030, design §3): the psyche mints and keeps its OWN session id, stored in t",
    "b_title": "D-2 (REMOTE-TRUTH triage §D-2 + operator Q5 @c248afc): the session ledger record"
  },
  {
    "a": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
    "b": "REQ-SPAWN-COLLISION-GUARD-LIVE-DUP",
    "a_title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCI",
    "b_title": "W4 (LIFECYCLE-TRUTH): single-flight wake per endpoint — the WAKE/RESUME respawn "
  },
  {
    "a": "REQ-ENDPOINT-LIST-REST-FILTER",
    "b": "REQ-PICKER-CHOOSE-DEDUP-ALL",
    "a_title": "spt endpoint list hides SUSPENDED instances by default; a new --show-all flag re",
    "b_title": "A4 (F028, operator #5): choose-project duplicate rows. model.rs:314-337 build_pr"
  },
  {
    "a": "REQ-DAEMON-BITS-AMBIGUITY",
    "b": "REQ-SUBNET-5",
    "a_title": "SEED (inactive, RCA-first — do NOT close on agreement): nothing on a node surfac",
    "b_title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--sav"
  },
  {
    "a": "REQ-HAZARD-ATTACH-WEDGE",
    "b": "REQ-HAZARD-DRIVEN-BY-SELFHEAL",
    "a_title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump mus",
    "b_title": "An spt-hosted endpoint's ONLINE+CONTROLLED state (`driven_by`) must CLEAR even w"
  },
  {
    "a": "REQ-ATTACH-SEED-REQUEST-DOUBLE-SERVE",
    "b": "REQ-LISTEN-SEED-CONSUME-AFTER-BIND",
    "a_title": "A dispatcher-SEEDED attach Request is honored ONCE — the wire replay's copy of t",
    "b_title": "F-034 leg b (perri/hertz field finding 2026-07-09, hertz's HEADLINE): `api liste"
  },
  {
    "a": "REQ-RC-DISPLAY-SOLE-WRITER",
    "b": "REQ-RC-RESIZE-PRESENTATION-BARRIER",
    "a_title": "TEARDOWN-AUTHORITY W5 (hertz RCA 3 bug 1, 2026-07-19 — REPRODUCED on 0.38.1 CLI ",
    "b_title": "During a resize transition, LIVE DELIVERY is barriered along with the grid parse"
  },
  {
    "a": "REQ-RC-RECONNECT-TRUTH",
    "b": "REQ-TERM-4",
    "a_title": "W3 (LIFECYCLE-TRUTH): rc reconnect never auto-starts a daemon and never hangs fo",
    "b_title": "Live activity buffer (session digest): projection of normalized session logs, sn"
  },
  {
    "a": "REQ-HAZARD-INBOX-NO-DOUBLE",
    "b": "REQ-RELAY-NO-BUSY-DELIVER",
    "a_title": "No double-delivery via legacy inbox (4.5)",
    "b_title": "MSG-IDENTITY W4 (operator self-send probe 2026-07-09, companion leg): the relay/"
  },
  {
    "a": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
    "b": "REQ-RC-HARNESS-ONLY-REFUSAL",
    "a_title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCI",
    "b_title": "RC-RENDER-TRUTH W1 (ADR-0042 decision 3, hertz elevated-endpoints RCA core leg 1"
  },
  {
    "a": "REQ-CLI-4",
    "b": "REQ-DIGEST-CROSS-NODE-PULL",
    "a_title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter upd",
    "b_title": "The digest SNAPSHOT PULL crosses nodes: `spt endpoint digest <[subnet:]id@node>`"
  },
  {
    "a": "REQ-DOC-DELIVERY-VOCAB",
    "b": "REQ-DOCS-3",
    "a_title": "W6 (LIFECYCLE-TRUTH, docs — remaining flynn/perri gaps folded): publish the full",
    "b_title": "Diátaxis structure; one canonical way to do X"
  },
  {
    "a": "REQ-UPDATE-GH-TRANSPORT",
    "b": "REQ-UPDATE-RESTART-SAFE-SWAP",
    "a_title": "THE-FORKENING W1 (ADR-0036, operator-ruled 2026-07-14): the release channel is P",
    "b_title": "THE-FORKENING W4 (operator-grilled 2026-07-14; RETIRES findings-backlog seed #12"
  },
  {
    "a": "REQ-HAZARD-DAEMON-STOP-BARRIER",
    "b": "REQ-STAMP-CONVERGENCE-ORDER",
    "a_title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop ",
    "b_title": "RETIRED at W2 verify-first (doyle 2026-07-22): the C3 poll-vs-reap ordering race"
  },
  {
    "a": "REQ-PICKER-CHOOSE-DEDUP-ALL",
    "b": "REQ-UPDATE-DEFAULT-COMPOSITE",
    "a_title": "A4 (F028, operator #5): choose-project duplicate rows. model.rs:314-337 build_pr",
    "b_title": "THE-FORKENING W4 (operator-grilled 2026-07-14): plain `spt update` = `update fet"
  },
  {
    "a": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
    "b": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
    "a_title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the",
    "b_title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped — not just its "
  },
  {
    "a": "REQ-ENSURE-DAEMON-STOP-INHIBIT",
    "b": "REQ-SEAT-LIFETIME-BOUNDED",
    "a_title": "An operator stop outranks every implicit daemon ensure. (ADR-0047 decision 2, AM",
    "b_title": "REGISTRY-LIFECYCLE W1 (ADR-0040 decision 5, hertz defect B leg 5 CROSS-FAMILY pe"
  },
  {
    "a": "REQ-DAEMON-3",
    "b": "REQ-INSTALL-10",
    "a_title": "Any api invocation auto-starts the daemon if absent",
    "b_title": "Windows at-logon autostart runs the daemon in the background with no persistent "
  },
  {
    "a": "REQ-MANIFEST-5",
    "b": "REQ-UPD-5",
    "a_title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be a",
    "b_title": "spt-core ripple-updates registered adapters"
  },
  {
    "a": "REQ-CLI-JSON",
    "b": "REQ-DIGEST-JSON-SELF-CONTAINED",
    "a_title": "A global `--json` flag (clap global=true) honored by the READ/STATUS command set",
    "b_title": "TEARDOWN-AUTHORITY W4 (perri adapter-surface finding 2026-07-19, doyle-grounded "
  },
  {
    "a": "REQ-HAZARD-DEFERRED-DRAIN",
    "b": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
    "a_title": "Deferred spool rows excluded from the event-stream drain (1.4)",
    "b_title": "Deferred rows survive poll drain (4.4)"
  },
  {
    "a": "REQ-RESUME-REAP-PRIOR-HARNESS",
    "b": "REQ-SEAM-RESUME",
    "a_title": "B4 (F028, hall-b diagnosis, verified 0.22.0): `--resume` respawns a SECOND harne",
    "b_title": "resume-session seam (fresh-with-preload / continue-existing)"
  },
  {
    "a": "REQ-HAZARD-REDISPATCH-STALL",
    "b": "REQ-PUMP-PEER-ISOLATION",
    "a_title": "REDISPATCH-STALL W1 (KNOWN-HAZARDS 7.43, hertz v0.34 field RCA 2026-07-16 — recu",
    "b_title": "PUMP-TRUTH W2 (architectural, operator ruling 2026-07-08): one peer must NOT blo"
  },
  {
    "a": "REQ-API-3",
    "b": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
    "a_title": "commune/signoff are file-drops, not commands",
    "b_title": "Two-slice envelope parser is panic-free and tolerant (4.2)"
  },
  {
    "a": "REQ-API-4",
    "b": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
    "a_title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name",
    "b_title": "Stale registry entries degrade to fallback, never hard-fail (4.3)"
  },
  {
    "a": "REQ-HAZARD-VIEWER-ISOLATION",
    "b": "REQ-RUN-PICKER",
    "a_title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, o",
    "b_title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no"
  },
  {
    "a": "REQ-ENDPOINT-CYCLE-HONEST",
    "b": "REQ-HOSTING-AUTHORITY-CONTROLLABLE",
    "a_title": "REGISTRY-LIFECYCLE W3 (ADR-0041 decision 6, operator deployah stop/run wedge): c",
    "b_title": "RC-RENDER-TRUTH v0.38.1 fast-follow leg 3 (hertz todlando immortal-hybrid trace,"
  },
  {
    "a": "REQ-INST-12",
    "b": "REQ-INST-14",
    "a_title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + ",
    "b_title": "Resource advertisement (subnet resource registry): free-text blurb, both-authore"
  },
  {
    "a": "REQ-STAMP-CONVERGENCE-ORDER",
    "b": "REQ-SUBNET-2",
    "a_title": "RETIRED at W2 verify-first (doyle 2026-07-22): the C3 poll-vs-reap ordering race",
    "b_title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing respon"
  },
  {
    "a": "REQ-RUN-MULTISUBNET-HOME",
    "b": "REQ-SUBNET-5",
    "a_title": "`spt endpoint run` resolves the home subnet at the skeleton-create step and pre-",
    "b_title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--sav"
  },
  {
    "a": "REQ-EP-1",
    "b": "REQ-EP-2",
    "a_title": "Day-one endpoint types; open type system",
    "b_title": "Agent endpoints vs Shells distinction in the type model"
  },
  {
    "a": "REQ-HAZARD-VIEWER-RING-ROLL-SNAP",
    "b": "REQ-STREAM-LIFETIME-CLASS",
    "a_title": "A read-only rc --view VIEWER whose serving brain falls behind the live ring unde",
    "b_title": "RESCOPED at W2 activation 2026-07-22 (doyle verify-first, C3-retirement preceden"
  },
  {
    "a": "REQ-PICKER-CHOOSE-DEDUP-ALL",
    "b": "REQ-PICKER-REMOTE-WAKE",
    "a_title": "A4 (F028, operator #5): choose-project duplicate rows. model.rs:314-337 build_pr",
    "b_title": "C-2 (REMOTE-TRUTH triage §C-2 #4 + addendum @3442ce5): a REMOTE suspended picker"
  },
  {
    "a": "REQ-HAZARD-RC-EOF",
    "b": "REQ-PEER-PUMP-CHURN-STALL",
    "a_title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a",
    "b_title": "B5 (F028, perri F-a; DEFECT daemon, OBSERVED-ONCE, HIGH): the peer pump STALLS u"
  },
  {
    "a": "REQ-DAEMON-1",
    "b": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
    "a_title": "One per-machine spt-daemon owning all per-machine state",
    "b_title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents:"
  },
  {
    "a": "REQ-ADAPTER-FLOOR-ENFORCE",
    "b": "REQ-MANIFEST-1",
    "a_title": "F-5 (REMOTE-TRUTH triage §F-5 + doyle rulings 2026-07-05): BOTH adapter acquisit",
    "b_title": "Per-adapter manifest with adapter_name and min_spt_core_version"
  },
  {
    "a": "REQ-EP-3",
    "b": "REQ-WAN-SEND-DELIVERY",
    "a_title": "Messaging payloads carry typed operation commands + file blobs",
    "b_title": "Bug #9/#10: cross-node spt send reports SENT(WAN) but does not deliver, even on "
  },
  {
    "a": "REQ-HAZARD-CONPTY-DSR",
    "b": "REQ-HAZARD-EBUSY-RENAME",
    "a_title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
    "b_title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)"
  },
  {
    "a": "REQ-HAZARD-BIND-REST-STATE-CARRY",
    "b": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
    "a_title": "GATEWAY-LIVENESS DEFECT A (flynn field bug 2026-07-09, confirmed independent): a",
    "b_title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and ru"
  },
  {
    "a": "REQ-HAZARD-ENDPOINT-LIFECYCLE",
    "b": "REQ-SOFT-END-PRESERVES-LIVE-LISTENER",
    "a_title": "REGISTRY-LIFECYCLE W2 (KNOWN-HAZARDS 7.45 — the umbrella conformance seam for AD",
    "b_title": "F-2 (REMOTE-TRUTH triage §F-2, field-repro'd hall-bf 2026-07-04): a /clear must "
  },
  {
    "a": "REQ-PSYCHE-SID-CUSTODY",
    "b": "REQ-SELF-ID-TRUST-INJECTED-ENV",
    "a_title": "W2 (F030, design §3): the psyche mints and keeps its OWN session id, stored in t",
    "b_title": "DEFERRED to a followup vX.X.n sprint (post-LIFECYCLE-TRUTH, operator-ruled 2026-"
  },
  {
    "a": "REQ-HAZARD-DAEMON-STOP-REAP",
    "b": "REQ-REST-TERMINAL-NORMALIZE",
    "a_title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned ",
    "b_title": "REGISTRY-LIFECYCLE W2 (ADR-0041 decision 3, rest-normalize P0): definitive hoste"
  },
  {
    "a": "REQ-DISPATCH-HYGIENE-TELEMETRY",
    "b": "REQ-HAZARD-VIEWER-STARVE-UNDER-CONTROLLER-BACKPRESSURE",
    "a_title": "REDISPATCH-STALL W1 (ADR-0038 Amendment, fixes 7+8+9): dispatcher hygiene + keye",
    "b_title": "A SLOW controller must not starve a concurrent `rc --view` VIEWER. W1 (REQ-HAZAR"
  },
  {
    "a": "REQ-ADAPTER-GH-TRANSPORT",
    "b": "REQ-WAN-SEND-DELIVERY",
    "a_title": "The `gh_release` avenue (and `spt adapter add --release`) gain a fetch `transpor",
    "b_title": "Bug #9/#10: cross-node spt send reports SENT(WAN) but does not deliver, even on "
  },
  {
    "a": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
    "b": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
    "a_title": "Drop files are daemon-owned single-writer (6.4)",
    "b_title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)"
  },
  {
    "a": "REQ-DISPATCH-CLAIM-RETRY",
    "b": "REQ-SERVE-OWNERSHIP-GENERATION",
    "a_title": "REDISPATCH-TRUTH W1 (ADR-0038, hertz fix C): dispatcher claims are RETRYABLE and",
    "b_title": "REDISPATCH-STALL W1 (ADR-0038 Amendment, fix 6): terminal-exclusion enforced PRE"
  },
  {
    "a": "REQ-ENDPOINT-MESSAGE-ONLY-DISPLAY",
    "b": "REQ-PICKER-CONTROLLED-LOCAL",
    "a_title": "An online agent-family endpoint with NO session surface reads as message-reachab",
    "b_title": "#3 local half: a LOCALLY-controlled endpoint renders CONTROLLED in its own node'"
  },
  {
    "a": "REQ-INST-12",
    "b": "REQ-LIST-JSON-LIVENESS-PARITY",
    "a_title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + ",
    "b_title": "GATEWAY-LIVENESS (flynn field bug 2026-07-09, RCA reader-divergence root): `spt "
  },
  {
    "a": "REQ-MANIFEST-7",
    "b": "REQ-PICKER-WINDOW-TITLE",
    "a_title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] sh",
    "b_title": "B-5 (F029, operator): `spt endpoint run`'s interactive picker window/tab is unti"
  },
  {
    "a": "REQ-CI-DOCS-ONLY-THIN",
    "b": "REQ-DOCS-1",
    "a_title": "CI (operator-ruled 2026-07-16, from PR #8 review): a PR whose ENTIRE diff is Mar",
    "b_title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths"
  },
  {
    "a": "REQ-LISTEN-SESSION-ID-FALLBACK",
    "b": "REQ-REST-TERMINAL-NORMALIZE",
    "a_title": "F-034 leg c (perri/hertz field finding 2026-07-09): a session that goes live LAT",
    "b_title": "REGISTRY-LIFECYCLE W2 (ADR-0041 decision 3, rest-normalize P0): definitive hoste"
  },
  {
    "a": "REQ-HAZARD-PAIR-SEED-ROTATION",
    "b": "REQ-INSTALL-9",
    "a_title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed can",
    "b_title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo"
  },
  {
    "a": "REQ-DAEMON-9",
    "b": "REQ-PEER-ROUTE-CHAIN",
    "a_title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start f",
    "b_title": "MESH-RECOVERY W1 (ADR-0039, RCA wave 1): dial-address resolution is the ROUTE CH"
  },
  {
    "a": "REQ-ATTACH-SEED-REQUEST-DOUBLE-SERVE",
    "b": "REQ-DISPATCH-CLAIM-RETRY",
    "a_title": "A dispatcher-SEEDED attach Request is honored ONCE — the wire replay's copy of t",
    "b_title": "REDISPATCH-TRUTH W1 (ADR-0038, hertz fix C): dispatcher claims are RETRYABLE and"
  },
  {
    "a": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
    "b": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
    "a_title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
    "b_title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)"
  },
  {
    "a": "REQ-DAEMON-BITS-AMBIGUITY",
    "b": "REQ-MANIFEST-3",
    "a_title": "SEED (inactive, RCA-first — do NOT close on agreement): nothing on a node surfac",
    "b_title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the p"
  },
  {
    "a": "REQ-PROJECT-INDEX-STORE",
    "b": "REQ-SPAWN-FRESH-TRUTHFUL",
    "a_title": "PROJECT-INDEX W1 (ADR-0037, RCA .claude/reports/2026-07-10-hertz-session/03): sp",
    "b_title": "REGISTRY-LIFECYCLE W3 (ADR-0041 decision 5, spawn-fresh): endpoint create is TRU"
  },
  {
    "a": "REQ-LIVEHOST-RECONCILE-TRIAL-SILENT",
    "b": "REQ-UPD-3",
    "a_title": "SEED (DEFERRED investigation, doyle 2026-07-09 — UPDATE-WEDGE follow-up): determ",
    "b_title": "No endpoint process terminates/suspends during self-update"
  },
  {
    "a": "REQ-IDLE-PARKED-DELIVERY",
    "b": "REQ-WAN-SPT-HOSTED-DELIVERY",
    "a_title": "W5 (LIFECYCLE-TRUTH): a message QUEUED to an ALREADY-idle spt-hosted endpoint is",
    "b_title": "A WAN-ARRIVED `spt send` is DELIVERED to an spt-hosted endpoint (broker holds it"
  },
  {
    "a": "REQ-ENDPOINT-UNBOUND-ATTACH",
    "b": "REQ-IDLE-PARKED-DELIVERY",
    "a_title": "An spt-hosted endpoint is ATTACHABLE between spawn and bind: gate the attach on ",
    "b_title": "W5 (LIFECYCLE-TRUTH): a message QUEUED to an ALREADY-idle spt-hosted endpoint is"
  },
  {
    "a": "REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE",
    "b": "REQ-HAZARD-SEEDMAP-CONNECT-UNBOUNDED",
    "a_title": "The effect journal serializes EVERY PTY effect under one mutex held ACROSS two f",
    "b_title": "SEED (doyle-filed, 2026-07-05, from the REQ-HAZARD-DAEMON-STOP-BARRIER B2 fix): "
  },
  {
    "a": "REQ-RC-CROSS-NODE-ATTACH",
    "b": "REQ-RC-DISPLAY-SOLE-WRITER",
    "a_title": "Bug #4: spt rc to a remote endpoint fails with 'no live session' though endpoint",
    "b_title": "TEARDOWN-AUTHORITY W5 (hertz RCA 3 bug 1, 2026-07-19 — REPRODUCED on 0.38.1 CLI "
  },
  {
    "a": "REQ-EP-8",
    "b": "REQ-SHELL-5",
    "a_title": "AlwaysOnEndpoint: a resident, addressable, mindless endpoint whose adapter binar",
    "b_title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spaw"
  },
  {
    "a": "REQ-HAZARD-SOFT-CLEANUP",
    "b": "REQ-HAZARD-EPHEMERAL-CLEANUP",
    "a_title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
    "b_title": "Ephemeral perch cleanup on every ring exit path (3.1)"
  },
  {
    "a": "REQ-RELAY-NO-BUSY-DELIVER",
    "b": "REQ-SEAM-ACTIVITY",
    "a_title": "MSG-IDENTITY W4 (operator self-send probe 2026-07-09, companion leg): the relay/",
    "b_title": "Activity/idle reported via api sentinels, not PTY quiescence"
  },
  {
    "a": "REQ-MSG-3",
    "b": "REQ-PRESENCE-CONTROL-REAP-ON-EXIT",
    "a_title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) ",
    "b_title": "B3 (F028, hall-b diagnosis + deferred #11 seed; BROADENED perri F-b CONFIRMED): "
  },
  {
    "a": "REQ-SEAM-POSTSPAWN",
    "b": "REQ-TERM-1",
    "a_title": "post-spawn / api bind seam with boot nonce",
    "b_title": "Process-supervisor terminal wrapper hosting broker PTYs"
  },
  {
    "a": "REQ-HAZARD-WAN-ORIGIN-AUTH",
    "b": "REQ-WHOAMI-EXPLICIT-SID-REFUSAL",
    "a_title": "WAN-inbound origin is transport truth, never payload: the access gate's subject ",
    "b_title": "RULED DESIGN, delivery unowned (doyle 2026-07-26): when a caller hands identity "
  },
  {
    "a": "REQ-HAZARD-REGISTRY-STALL",
    "b": "REQ-HAZARD-ROSTER-GHOST",
    "a_title": "REGISTRY-LIFECYCLE W1 (KNOWN-HAZARDS 7.44, hertz post-close v0.36 RCA — the umbr",
    "b_title": "A LOCAL subnet roster entry whose backing perch is erased does NOT keep advertis"
  },
  {
    "a": "REQ-BROKER-OUTPUT-BEFORE-EXIT",
    "b": "REQ-HAZARD-PTY-INPUT-WRITER-WEDGE",
    "a_title": "RC-RENDER-TRUTH W3 (ADR-0043 decision 1, hertz stale-glyphs RCA leg 1 P0): the P",
    "b_title": "Pasting into an `spt rc` session WEDGES the broker — after a paste the operator "
  },
  {
    "a": "REQ-ENDPOINT-LIST-NODE-GROUPED",
    "b": "REQ-INST-9",
    "a_title": "spt endpoint list is node-grouped over unique INSTANCES, not subnet-grouped over",
    "b_title": "Multi-subnet membership (same-user N subnets; cross-user seam)"
  },
  {
    "a": "REQ-LISTEN-PRESERVES-HOSTING-TOPOLOGY",
    "b": "REQ-MANIFEST-5",
    "a_title": "`api listen` must not ASSERT hosting topology it does not know. (hertz v0.39.0 f",
    "b_title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be a"
  },
  {
    "a": "REQ-HAZARD-BIND-CWD-UNSET",
    "b": "REQ-HAZARD-SINGLE-PATH-SOURCE",
    "a_title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears ",
    "b_title": "Single path/registry source of truth; no layout ambiguity (6.1)"
  },
  {
    "a": "REQ-HAZARD-RC-EOF",
    "b": "REQ-STREAM-INFOS-SERVER-FILTER",
    "a_title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a",
    "b_title": "REGISTRY-LIFECYCLE W1 (ADR-0040 decision 2, hertz defect B leg 2): broker stream"
  },
  {
    "a": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
    "b": "REQ-TERM-1",
    "a_title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpo",
    "b_title": "Process-supervisor terminal wrapper hosting broker PTYs"
  },
  {
    "a": "REQ-RESUME-CUSTODY-IDENTITY",
    "b": "REQ-WHOAMI-EXPLICIT-SID-REFUSAL",
    "a_title": "Resume custody is an identity pair (pid + process creation time), never a bare P",
    "b_title": "RULED DESIGN, delivery unowned (doyle 2026-07-26): when a caller hands identity "
  },
  {
    "a": "REQ-DAEMON-RESTART-SELF-INTERRUPTION",
    "b": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
    "a_title": "SEED (inactive — operator-workflow trap, field-paid 2026-07-25): an spt-hosted c",
    "b_title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does N"
  },
  {
    "a": "REQ-SHELL-5",
    "b": "REQ-TERM-1",
    "a_title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spaw",
    "b_title": "Process-supervisor terminal wrapper hosting broker PTYs"
  },
  {
    "a": "REQ-ADAPTER-LIVE-UPDATE",
    "b": "REQ-MANIFEST-4",
    "a_title": "An adapter update is live and daemon-coordinated (the adapter analog of brain se",
    "b_title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --sessi"
  },
  {
    "a": "REQ-BRAIN-RESUME-NO-CONTROL-STEAL",
    "b": "REQ-SERVE-OWNERSHIP-GENERATION",
    "a_title": "UPDATE-WEDGE round 2 (v0.30.4, doyle-ruled 2026-07-09 — field incident on the co",
    "b_title": "REDISPATCH-STALL W1 (ADR-0038 Amendment, fix 6): terminal-exclusion enforced PRE"
  },
  {
    "a": "REQ-DAEMON-3",
    "b": "REQ-HAZARD-DAEMON-STOP-BARRIER",
    "a_title": "Any api invocation auto-starts the daemon if absent",
    "b_title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop "
  },
  {
    "a": "REQ-RUN-NO-DUP-SESSION",
    "b": "REQ-UPDATE-FINISH-ENDPOINT-SURVIVAL",
    "a_title": "B1 (F028, hall-b diagnosis, verified 0.22.0): `endpoint run --id X --create` on ",
    "b_title": "W3 (LIFECYCLE-TRUTH): daemon restart no longer massacres hosted endpoints — daem"
  },
  {
    "a": "REQ-HAZARD-MESH-BOOTSTRAP-TRAP",
    "b": "REQ-PEERADDR-INVARIANT",
    "a_title": "MESH-RECOVERY W1 (KNOWN-HAZARDS 7.42, hertz field RCA 2026-07-10 — HFENDULEAM+EN",
    "b_title": "MESH-RECOVERY W1 (ADR-0039, RCA wave 2): the peer-addrs cache INVARIANT — outer "
  },
  {
    "a": "REQ-INST-4",
    "b": "REQ-UPDATE-FINISH-COMMUNE-FLUSH",
    "a_title": "active to dormant/suspended fires a transition echo commune",
    "b_title": "DEFERRED (post-LIFECYCLE-TRUTH, operator-ruled 2026-07-07 — mint now, impl a FUT"
  },
  {
    "a": "REQ-PICKER-KEY-GATE-LAUNCH-CAPABLE",
    "b": "REQ-PLATFORM-MUSL",
    "a_title": "B-1 (F029, operator): the `h` (headless start) / `s` (shortcut) keybinds fire fr",
    "b_title": "MUSL-TIER W2 (register the musl platform, self-IDENTIFY): add x86_64-unknown-lin"
  },
  {
    "a": "REQ-SEAM-SPAWN",
    "b": "REQ-START-3",
    "a_title": "spawn-session seam",
    "b_title": "spt-hosted startup: spawn-session then api bind (no file)"
  },
  {
    "a": "REQ-HAZARD-RC-ATTACH-ONLINE-RACE",
    "b": "REQ-RC-QUALIFIED-TARGET-CANONICAL",
    "a_title": "`spt endpoint run` in an ATTACH/VIEW terminal action attaches BEFORE the freshly",
    "b_title": "RC-RENDER-TRUTH W1 (ADR-0042 decision 4, hertz elevated-endpoints RCA core leg 2"
  },
  {
    "a": "REQ-ENDPOINT-MESSAGE-ONLY-DISPLAY",
    "b": "REQ-PICKER-UX-V013",
    "a_title": "An online agent-family endpoint with NO session surface reads as message-reachab",
    "b_title": "`spt endpoint run` picker UX (v0.13.0 operator dogfooding): (1) SKIP the first s"
  },
  {
    "a": "REQ-CLI-WIN-VT-ENABLE",
    "b": "REQ-JOIN-DEFERRED-ELEVATION",
    "a_title": "A7 (F028, operator, Win10 conhost): ANSI emitted without VT enable → garbled con",
    "b_title": "W2 (JOIN-TRUTH, operator UX ruling verbatim): 'if --code was not supplied, don't"
  },
  {
    "a": "REQ-HAZARD-WORKER-PATH",
    "b": "REQ-WORKER-PICKER-EXCLUDED",
    "a_title": "Single source of truth for Worker/Psyche perch location (1.5)",
    "b_title": "V-2 (WORKER-TRUTH triage, operator rider): non-drivable endpoint classes never r"
  },
  {
    "a": "REQ-PICKER-PROJECT-DISPLAY-NAME",
    "b": "REQ-PSYCHE-LEGACY-RESIDENT-SWEEP",
    "a_title": "A1 (F028, operator #1/#4/#6-display): `github-com-*` 'ghost' project entries are",
    "b_title": "W5 (F030; doyle+perri 2026-07-04): a dirty daemon upgrade from <=v0.24.0 strands"
  },
  {
    "a": "REQ-INSTALL-8",
    "b": "REQ-TERM-ECHO-CLAMP-WINDOW",
    "a_title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER",
    "b_title": "SEED (DAEMON-LIFECYCLE W3 rideout, field-grounded 2026-07-22): the hosted-TUI ec"
  },
  {
    "a": "REQ-UPDATE-FINISH-ENDPOINT-SURVIVAL",
    "b": "REQ-UPDATE-ONE-SHOT-FINISH",
    "a_title": "W3 (LIFECYCLE-TRUTH): daemon restart no longer massacres hosted endpoints — daem",
    "b_title": "W3 (LIFECYCLE-TRUTH): update apply works daemonless and one command finishes the"
  },
  {
    "a": "REQ-HAZARD-CASCADE-WIPE-GUARD",
    "b": "REQ-HAZARD-SINGLE-PATH-SOURCE",
    "a_title": "No hard-delete of a parent hosting non-empty children (6.3)",
    "b_title": "Single path/registry source of truth; no layout ambiguity (6.1)"
  },
  {
    "a": "REQ-ACTIVITY-LIST-JSON",
    "b": "REQ-ENDPOINT-LIST-REST-FILTER",
    "a_title": "`spt endpoint list --json` carries a per-endpoint `activity` (busy|idle) key, fo",
    "b_title": "spt endpoint list hides SUSPENDED instances by default; a new --show-all flag re"
  },
  {
    "a": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
    "b": "REQ-INST-12",
    "a_title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdou",
    "b_title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + "
  },
  {
    "a": "REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP",
    "b": "REQ-HAZARD-RESTART-IDEMPOTENT",
    "a_title": "A bare brain restart leaves EXACTLY ONE `{id}-psyche` process per endpoint — no ",
    "b_title": "Idempotent/exactly-once delivery across brain restart at every broker boundary ("
  },
  {
    "a": "REQ-MSG-SELF-DETECT-ANCESTRY",
    "b": "REQ-WHOAMI-EXPLICIT-SID-REFUSAL",
    "a_title": "#9 (F026, operator field bug): a perch-owned `spt send` from an endpoint's OWN s",
    "b_title": "RULED DESIGN, delivery unowned (doyle 2026-07-26): when a caller hands identity "
  },
  {
    "a": "REQ-DAEMON-STOP-LIVE-SESSION-WARN",
    "b": "REQ-HAZARD-DAEMON-STOP-REAP",
    "a_title": "W3 (LIFECYCLE-TRUTH, promoted old follow-wave seed): `daemon stop` with live hos",
    "b_title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned "
  },
  {
    "a": "REQ-PICKER-WINDOW-TITLE",
    "b": "REQ-RUN-PICKER-HOME",
    "a_title": "B-5 (F029, operator): `spt endpoint run`'s interactive picker window/tab is unti",
    "b_title": "Home-subnet selection LAYER in the `spt endpoint run` ratatui Create-new picker "
  },
  {
    "a": "REQ-CONTROL-STAMP-CONVERGENCE",
    "b": "REQ-UPDATE-TRIAL-DRAIN-DRIVE",
    "a_title": "REGISTRY-LIFECYCLE W2 (ADR-0041 decision 4, emphasys C3 P1): control-stamp write",
    "b_title": "UPDATE-WEDGE (counter-54, doyle-ruled 2026-07-09 — regression of the v0.29.0 sea"
  },
  {
    "a": "REQ-MSG-1",
    "b": "REQ-MSG-INJECT-LEG-DROP-VISIBLE",
    "a_title": "Local message delivery: TCP-first to a registered address, spool fallback when o",
    "b_title": "SEED (inactive — observability): a silently-dropped delivery leg must be DISTING"
  },
  {
    "a": "REQ-DAEMON-STATUS-JSON-TRUTH",
    "b": "REQ-HAZARD-RC-ATTACH-TRUTH",
    "a_title": "D2 (F028, perri F-d): `daemon status --json` truth drift. managed_by/managed_act",
    "b_title": "RC-RENDER-TRUTH W1 (KNOWN-HAZARDS 7.46 — umbrella conformance seam for ADR-0042)"
  },
  {
    "a": "REQ-DAEMON-STDERR-PERSIST",
    "b": "REQ-HAZARD-DETACHED-DAEMON-STDIO",
    "a_title": "W3 (LIFECYCLE-TRUTH, observability): broker + brain stderr tee to a rotating siz",
    "b_title": "A daemon DETACHED-IN-FACT (no interactive console, or an inherited stderr PIPE n"
  },
  {
    "a": "REQ-ADAPTER-UPDATE-INPLACE",
    "b": "REQ-HAZARD-ADAPTER-PROFILE-STAMP-CLOBBER",
    "a_title": "Bug #18: spt adapter update fails at re-register with os error 2 because it deri",
    "b_title": "A-4 (F029, operator regression): the picker/confirm views drop an endpoint's ada"
  },
  {
    "a": "REQ-RC-1",
    "b": "REQ-RC-WIN-PASTE",
    "a_title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusin",
    "b_title": "In an `spt rc` session neither ctrl+V nor right-click pastes (CC explicitly supp"
  },
  {
    "a": "REQ-ARCH-3",
    "b": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
    "a_title": "Wire-protocol version independent of crate semver, N-1 compat window",
    "b_title": "Broker/brain IPC + handoff argv version-tolerant (2.3)"
  },
  {
    "a": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
    "b": "REQ-TERM-1",
    "a_title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
    "b_title": "Process-supervisor terminal wrapper hosting broker PTYs"
  },
  {
    "a": "REQ-GOSSIP-CONTROLLED-CROSS-NODE",
    "b": "REQ-HAZARD-CONTROLLER-LEASE",
    "a_title": "B7 (F028, operator, cross-node): a remote endpoint's CONTROLLED state is not ren",
    "b_title": "RC-RENDER-TRUTH W2 (KNOWN-HAZARDS 7.48 — umbrella conformance seam for ADR-0044)"
  }
]