﻿2026-06-10T22:49:39.5444371Z Current runner version: '2.334.0'
2026-06-10T22:49:39.5449725Z Runner name: 'kitsubito'
2026-06-10T22:49:39.5450454Z Runner group name: 'Default'
2026-06-10T22:49:39.5451219Z Machine name: 'KITSUBITO'
2026-06-10T22:49:39.5453591Z ##[group]GITHUB_TOKEN Permissions
2026-06-10T22:49:39.5455557Z Contents: read
2026-06-10T22:49:39.5456090Z Metadata: read
2026-06-10T22:49:39.5456549Z Packages: read
2026-06-10T22:49:39.5457077Z ##[endgroup]
2026-06-10T22:49:39.5459390Z Secret source: Actions
2026-06-10T22:49:39.5460499Z Prepare workflow directory
2026-06-10T22:49:39.5919477Z Prepare all required actions
2026-06-10T22:49:39.5947627Z Getting action download info
2026-06-10T22:49:40.5251004Z Download action repository 'actions/checkout@v5' (SHA:93cb6efe18208431cddfb8368fd83d5badbf9bfd)
2026-06-10T22:49:41.3340692Z Complete job name: traceability
2026-06-10T22:49:41.4232240Z ##[group]Run actions/checkout@v5
2026-06-10T22:49:41.4233418Z with:
2026-06-10T22:49:41.4234123Z   repository: SaberMage/spt-core
2026-06-10T22:49:41.4242007Z   token: ***
2026-06-10T22:49:41.4242723Z   ssh-strict: true
2026-06-10T22:49:41.4243453Z   ssh-user: git
2026-06-10T22:49:41.4244187Z   persist-credentials: true
2026-06-10T22:49:41.4244989Z   clean: true
2026-06-10T22:49:41.4245717Z   sparse-checkout-cone-mode: true
2026-06-10T22:49:41.4246585Z   fetch-depth: 1
2026-06-10T22:49:41.4247294Z   fetch-tags: false
2026-06-10T22:49:41.4248020Z   show-progress: true
2026-06-10T22:49:41.4248756Z   lfs: false
2026-06-10T22:49:41.4249523Z   submodules: false
2026-06-10T22:49:41.4250261Z   set-safe-directory: true
2026-06-10T22:49:41.4251274Z ##[endgroup]
2026-06-10T22:49:41.5131937Z Syncing repository: SaberMage/spt-core
2026-06-10T22:49:41.5134566Z ##[group]Getting Git version info
2026-06-10T22:49:41.5135946Z Working directory is '/home/reavus/actions-runner/_work/spt-core/spt-core'
2026-06-10T22:49:41.5138036Z [command]/usr/bin/git version
2026-06-10T22:49:41.5138937Z git version 2.43.0
2026-06-10T22:49:41.5142555Z ##[endgroup]
2026-06-10T22:49:41.5151297Z Temporarily overriding HOME='/home/reavus/actions-runner/_work/_temp/9ec1f4d2-3e84-4466-9154-6f8c6cf76e68' before making global git config changes
2026-06-10T22:49:41.5153876Z Adding repository directory to the temporary git global config as a safe directory
2026-06-10T22:49:41.5155970Z [command]/usr/bin/git config --global --add safe.directory /home/reavus/actions-runner/_work/spt-core/spt-core
2026-06-10T22:49:41.5188809Z [command]/usr/bin/git config --local --get remote.origin.url
2026-06-10T22:49:41.5211117Z https://github.com/SaberMage/spt-core
2026-06-10T22:49:41.5222327Z ##[group]Removing previously created refs, to avoid conflicts
2026-06-10T22:49:41.5224765Z [command]/usr/bin/git rev-parse --symbolic-full-name --verify --quiet HEAD
2026-06-10T22:49:41.5252299Z refs/heads/main
2026-06-10T22:49:41.5258924Z [command]/usr/bin/git checkout --detach
2026-06-10T22:49:41.5384435Z HEAD is now at 04fd322 feat(daemon): restoration D7-2 — new-brain × old-broker N-1 verb-surface gate (V6)
2026-06-10T22:49:41.5419902Z [command]/usr/bin/git branch --delete --force main
2026-06-10T22:49:41.5449470Z Deleted branch main (was 04fd322).
2026-06-10T22:49:41.5490443Z ##[endgroup]
2026-06-10T22:49:41.5491424Z [command]/usr/bin/git submodule status
2026-06-10T22:49:41.5670942Z ##[group]Cleaning the repository
2026-06-10T22:49:41.5672201Z [command]/usr/bin/git clean -ffdx
2026-06-10T22:49:44.0130942Z Removing target/
2026-06-10T22:49:44.0141956Z [command]/usr/bin/git reset --hard HEAD
2026-06-10T22:49:44.0237632Z HEAD is now at 04fd322 feat(daemon): restoration D7-2 — new-brain × old-broker N-1 verb-surface gate (V6)
2026-06-10T22:49:44.0241569Z ##[endgroup]
2026-06-10T22:49:44.0243017Z ##[group]Disabling automatic garbage collection
2026-06-10T22:49:44.0245896Z [command]/usr/bin/git config --local gc.auto 0
2026-06-10T22:49:44.0270479Z ##[endgroup]
2026-06-10T22:49:44.0270978Z ##[group]Setting up auth
2026-06-10T22:49:44.0275870Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-06-10T22:49:44.0303192Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
2026-06-10T22:49:44.0494272Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
2026-06-10T22:49:44.0521797Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :"
2026-06-10T22:49:44.0704697Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
2026-06-10T22:49:44.0730309Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
2026-06-10T22:49:44.0918019Z [command]/usr/bin/git config --local http.https://github.com/.extraheader AUTHORIZATION: basic ***
2026-06-10T22:49:44.0949155Z ##[endgroup]
2026-06-10T22:49:44.0949680Z ##[group]Fetching the repository
2026-06-10T22:49:44.0955164Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +d239ae418c6352f4f3a32d5ec6d365cc2a8a3180:refs/remotes/origin/main
2026-06-10T22:49:44.5762229Z From https://github.com/SaberMage/spt-core
2026-06-10T22:49:44.5762859Z  + 04fd322...d239ae4 d239ae418c6352f4f3a32d5ec6d365cc2a8a3180 -> origin/main  (forced update)
2026-06-10T22:49:44.5781765Z ##[endgroup]
2026-06-10T22:49:44.5782303Z ##[group]Determining the checkout info
2026-06-10T22:49:44.5784274Z ##[endgroup]
2026-06-10T22:49:44.5793534Z [command]/usr/bin/git sparse-checkout disable
2026-06-10T22:49:44.5829624Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig
2026-06-10T22:49:44.5851255Z ##[group]Checking out the ref
2026-06-10T22:49:44.5853571Z [command]/usr/bin/git checkout --progress --force -B main refs/remotes/origin/main
2026-06-10T22:49:44.5895912Z Warning: you are leaving 1 commit behind, not connected to
2026-06-10T22:49:44.5896368Z any of your branches:
2026-06-10T22:49:44.5896567Z 
2026-06-10T22:49:44.5897100Z   04fd322 feat(daemon): restoration D7-2 — new-brain × old-broker N-1 verb-surface gate (V6)
2026-06-10T22:49:44.5897506Z 
2026-06-10T22:49:44.5897711Z If you want to keep it by creating a new branch, this may be a good time
2026-06-10T22:49:44.5898078Z to do so with:
2026-06-10T22:49:44.5898228Z 
2026-06-10T22:49:44.5898355Z  git branch <new-branch-name> 04fd322
2026-06-10T22:49:44.5898556Z 
2026-06-10T22:49:44.5902606Z Switched to a new branch 'main'
2026-06-10T22:49:44.5902950Z branch 'main' set up to track 'origin/main'.
2026-06-10T22:49:44.5907412Z ##[endgroup]
2026-06-10T22:49:44.5936642Z [command]/usr/bin/git log -1 --format=%H
2026-06-10T22:49:44.5958552Z d239ae418c6352f4f3a32d5ec6d365cc2a8a3180
2026-06-10T22:49:44.6140079Z ##[group]Run WANT=0.1.2
2026-06-10T22:49:44.6140370Z [36;1mWANT=0.1.2[0m
2026-06-10T22:49:44.6140590Z [36;1mBIN="$HOME/.local/bin/traceable-reqs"[0m
2026-06-10T22:49:44.6140948Z [36;1mif [ -x "$BIN" ] && "$BIN" --version | grep -q " $WANT\$"; then[0m
2026-06-10T22:49:44.6141243Z [36;1m  ln -sf "$BIN" ./traceable-reqs[0m
2026-06-10T22:49:44.6141468Z [36;1melse[0m
2026-06-10T22:49:44.6141712Z [36;1m  # Build OUTSIDE the checkout: a clone inside it gets adopted by[0m
2026-06-10T22:49:44.6142048Z [36;1m  # the spt-core cargo workspace and refuses to build.[0m
2026-06-10T22:49:44.6142322Z [36;1m  SRC="$RUNNER_TEMP/tr-src"[0m
2026-06-10T22:49:44.6142541Z [36;1m  rm -rf "$SRC"[0m
2026-06-10T22:49:44.6142761Z [36;1m  git clone --depth 1 --branch "v$WANT" \[0m
2026-06-10T22:49:44.6143143Z [36;1m    "https://x-access-token:${GH_TOKEN}@github.com/BigscreenVR/traceable-reqs" "$SRC"[0m
2026-06-10T22:49:44.6143620Z [36;1m  cargo build --release --manifest-path "$SRC/rust/Cargo.toml"[0m
2026-06-10T22:49:44.6143992Z [36;1m  mkdir -p "$HOME/.local/bin"[0m
2026-06-10T22:49:44.6144283Z [36;1m  cp "$SRC/rust/target/release/traceable-reqs" "$BIN"[0m
2026-06-10T22:49:44.6144723Z [36;1m  ln -sf "$BIN" ./traceable-reqs[0m
2026-06-10T22:49:44.6144951Z [36;1mfi[0m
2026-06-10T22:49:44.6145137Z [36;1m./traceable-reqs --version[0m
2026-06-10T22:49:44.6160139Z shell: /usr/bin/bash -e {0}
2026-06-10T22:49:44.6160376Z env:
2026-06-10T22:49:44.6160881Z   GH_TOKEN: ***
2026-06-10T22:49:44.6161071Z ##[endgroup]
2026-06-10T22:49:44.6261499Z traceable-reqs 0.1.2
2026-06-10T22:49:44.6290933Z ##[group]Run ./traceable-reqs check --json
2026-06-10T22:49:44.6291243Z [36;1m./traceable-reqs check --json[0m
2026-06-10T22:49:44.6303591Z shell: /usr/bin/bash -e {0}
2026-06-10T22:49:44.6303811Z ##[endgroup]
2026-06-10T22:49:44.6764856Z {
2026-06-10T22:49:44.6765328Z   "schemaVersion": 1,
2026-06-10T22:49:44.6765690Z   "summary": {
2026-06-10T22:49:44.6766030Z     "requirementCount": 181,
2026-06-10T22:49:44.6766421Z     "completeCount": 181,
2026-06-10T22:49:44.6766783Z     "incompleteCount": 0,
2026-06-10T22:49:44.6767144Z     "findingCount": 0
2026-06-10T22:49:44.6767511Z   },
2026-06-10T22:49:44.6767800Z   "requirements": [
2026-06-10T22:49:44.6768106Z     {
2026-06-10T22:49:44.6768425Z       "id": "REQ-API-1",
2026-06-10T22:49:44.6769250Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-10T22:49:44.6769993Z       "requiredStages": [
2026-06-10T22:49:44.6770598Z         "impl",
2026-06-10T22:49:44.6771117Z         "unit",
2026-06-10T22:49:44.6771862Z         "int"
2026-06-10T22:49:44.6772357Z       ],
2026-06-10T22:49:44.6772823Z       "stages": {
2026-06-10T22:49:44.6773321Z         "doc": {
2026-06-10T22:49:44.6791086Z           "complete": false,
2026-06-10T22:49:44.6791433Z           "evidence": []
2026-06-10T22:49:44.6791675Z         },
2026-06-10T22:49:44.6791899Z         "impl": {
2026-06-10T22:49:44.6792091Z           "complete": true,
2026-06-10T22:49:44.6792286Z           "evidence": [
2026-06-10T22:49:44.6792466Z             {
2026-06-10T22:49:44.6792663Z               "path": "crates/spt/src/api/mod.rs",
2026-06-10T22:49:44.6792935Z               "line": 15
2026-06-10T22:49:44.6793115Z             }
2026-06-10T22:49:44.6793278Z           ]
2026-06-10T22:49:44.6793439Z         },
2026-06-10T22:49:44.6793593Z         "int": {
2026-06-10T22:49:44.6793805Z           "complete": true,
2026-06-10T22:49:44.6794013Z           "evidence": [
2026-06-10T22:49:44.6794208Z             {
2026-06-10T22:49:44.6794428Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-10T22:49:44.6794671Z               "line": 13
2026-06-10T22:49:44.6794858Z             }
2026-06-10T22:49:44.6795033Z           ]
2026-06-10T22:49:44.6795206Z         },
2026-06-10T22:49:44.6795376Z         "unit": {
2026-06-10T22:49:44.6795563Z           "complete": true,
2026-06-10T22:49:44.6795768Z           "evidence": [
2026-06-10T22:49:44.6795963Z             {
2026-06-10T22:49:44.6796156Z               "path": "crates/spt/src/api/mod.rs",
2026-06-10T22:49:44.6796398Z               "line": 442
2026-06-10T22:49:44.6796587Z             },
2026-06-10T22:49:44.6796773Z             {
2026-06-10T22:49:44.6796966Z               "path": "crates/spt/src/api/mod.rs",
2026-06-10T22:49:44.6797205Z               "line": 448
2026-06-10T22:49:44.6797405Z             },
2026-06-10T22:49:44.6797581Z             {
2026-06-10T22:49:44.6797768Z               "path": "crates/spt/src/api/mod.rs",
2026-06-10T22:49:44.6798001Z               "line": 515
2026-06-10T22:49:44.6798201Z             }
2026-06-10T22:49:44.6798379Z           ]
2026-06-10T22:49:44.6798549Z         }
2026-06-10T22:49:44.6798731Z       }
2026-06-10T22:49:44.6798907Z     },
2026-06-10T22:49:44.6799154Z     {
2026-06-10T22:49:44.6799330Z       "id": "REQ-API-2",
2026-06-10T22:49:44.6799647Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-10T22:49:44.6800015Z       "requiredStages": [
2026-06-10T22:49:44.6800219Z         "impl",
2026-06-10T22:49:44.6800410Z         "unit",
2026-06-10T22:49:44.6800587Z         "int"
2026-06-10T22:49:44.6800778Z       ],
2026-06-10T22:49:44.6801269Z       "stages": {
2026-06-10T22:49:44.6801454Z         "doc": {
2026-06-10T22:49:44.6801646Z           "complete": false,
2026-06-10T22:49:44.6801851Z           "evidence": []
2026-06-10T22:49:44.6802102Z         },
2026-06-10T22:49:44.6802355Z         "impl": {
2026-06-10T22:49:44.6802575Z           "complete": true,
2026-06-10T22:49:44.6802870Z           "evidence": [
2026-06-10T22:49:44.6803427Z             {
2026-06-10T22:49:44.6803689Z               "path": "crates/spt-store/src/history.rs",
2026-06-10T22:49:44.6803946Z               "line": 15
2026-06-10T22:49:44.6804163Z             },
2026-06-10T22:49:44.6804408Z             {
2026-06-10T22:49:44.6804697Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-10T22:49:44.6805059Z               "line": 20
2026-06-10T22:49:44.6805345Z             },
2026-06-10T22:49:44.6805588Z             {
2026-06-10T22:49:44.6805866Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-10T22:49:44.6806214Z               "line": 139
2026-06-10T22:49:44.6806494Z             },
2026-06-10T22:49:44.6806744Z             {
2026-06-10T22:49:44.6807030Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.6807390Z               "line": 21
2026-06-10T22:49:44.6807669Z             },
2026-06-10T22:49:44.6807912Z             {
2026-06-10T22:49:44.6808203Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.6808556Z               "line": 38
2026-06-10T22:49:44.6808842Z             },
2026-06-10T22:49:44.6809095Z             {
2026-06-10T22:49:44.6809301Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.6809539Z               "line": 190
2026-06-10T22:49:44.6809729Z             },
2026-06-10T22:49:44.6809895Z             {
2026-06-10T22:49:44.6810097Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.6810337Z               "line": 232
2026-06-10T22:49:44.6810517Z             },
2026-06-10T22:49:44.6810689Z             {
2026-06-10T22:49:44.6810894Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.6811133Z               "line": 262
2026-06-10T22:49:44.6811328Z             },
2026-06-10T22:49:44.6811496Z             {
2026-06-10T22:49:44.6811690Z               "path": "crates/spt/src/api/worker.rs",
2026-06-10T22:49:44.6811929Z               "line": 17
2026-06-10T22:49:44.6812116Z             },
2026-06-10T22:49:44.6812295Z             {
2026-06-10T22:49:44.6812487Z               "path": "crates/spt/src/api/worker.rs",
2026-06-10T22:49:44.6812728Z               "line": 30
2026-06-10T22:49:44.6812929Z             },
2026-06-10T22:49:44.6813101Z             {
2026-06-10T22:49:44.6813296Z               "path": "crates/spt/src/api/worker.rs",
2026-06-10T22:49:44.6813535Z               "line": 63
2026-06-10T22:49:44.6813721Z             },
2026-06-10T22:49:44.6813893Z             {
2026-06-10T22:49:44.6814084Z               "path": "crates/spt/src/api/worker.rs",
2026-06-10T22:49:44.6814326Z               "line": 76
2026-06-10T22:49:44.6814530Z             }
2026-06-10T22:49:44.6814699Z           ]
2026-06-10T22:49:44.6814864Z         },
2026-06-10T22:49:44.6815030Z         "int": {
2026-06-10T22:49:44.6815219Z           "complete": true,
2026-06-10T22:49:44.6815420Z           "evidence": [
2026-06-10T22:49:44.6815595Z             {
2026-06-10T22:49:44.6815806Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-10T22:49:44.6816054Z               "line": 14
2026-06-10T22:49:44.6816254Z             },
2026-06-10T22:49:44.6817585Z             {
2026-06-10T22:49:44.6817793Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-10T22:49:44.6818048Z               "line": 187
2026-06-10T22:49:44.6818229Z             }
2026-06-10T22:49:44.6818386Z           ]
2026-06-10T22:49:44.6818540Z         },
2026-06-10T22:49:44.6818696Z         "unit": {
2026-06-10T22:49:44.6818869Z           "complete": true,
2026-06-10T22:49:44.6819164Z           "evidence": [
2026-06-10T22:49:44.6819345Z             {
2026-06-10T22:49:44.6819702Z               "path": "crates/spt-store/src/history.rs",
2026-06-10T22:49:44.6820008Z               "line": 42
2026-06-10T22:49:44.6820274Z             },
2026-06-10T22:49:44.6820512Z             {
2026-06-10T22:49:44.6820792Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-10T22:49:44.6821121Z               "line": 254
2026-06-10T22:49:44.6821378Z             },
2026-06-10T22:49:44.6821774Z             {
2026-06-10T22:49:44.6822056Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.6822399Z               "line": 438
2026-06-10T22:49:44.6822666Z             },
2026-06-10T22:49:44.6822909Z             {
2026-06-10T22:49:44.6823179Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.6823522Z               "line": 449
2026-06-10T22:49:44.6823790Z             },
2026-06-10T22:49:44.6824029Z             {
2026-06-10T22:49:44.6824301Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.6824649Z               "line": 581
2026-06-10T22:49:44.6824921Z             },
2026-06-10T22:49:44.6825144Z             {
2026-06-10T22:49:44.6825433Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.6825784Z               "line": 593
2026-06-10T22:49:44.6826056Z             },
2026-06-10T22:49:44.6826281Z             {
2026-06-10T22:49:44.6826557Z               "path": "crates/spt/src/api/worker.rs",
2026-06-10T22:49:44.6826896Z               "line": 141
2026-06-10T22:49:44.6827173Z             },
2026-06-10T22:49:44.6827414Z             {
2026-06-10T22:49:44.6827691Z               "path": "crates/spt/src/api/worker.rs",
2026-06-10T22:49:44.6828034Z               "line": 185
2026-06-10T22:49:44.6828296Z             }
2026-06-10T22:49:44.6828529Z           ]
2026-06-10T22:49:44.6828766Z         }
2026-06-10T22:49:44.6829061Z       }
2026-06-10T22:49:44.6829304Z     },
2026-06-10T22:49:44.6829539Z     {
2026-06-10T22:49:44.6829801Z       "id": "REQ-API-3",
2026-06-10T22:49:44.6830144Z       "title": "commune/signoff are file-drops, not commands",
2026-06-10T22:49:44.6830577Z       "requiredStages": [
2026-06-10T22:49:44.6830849Z         "impl",
2026-06-10T22:49:44.6831096Z         "unit",
2026-06-10T22:49:44.6831332Z         "int"
2026-06-10T22:49:44.6831561Z       ],
2026-06-10T22:49:44.6831804Z       "stages": {
2026-06-10T22:49:44.6832052Z         "doc": {
2026-06-10T22:49:44.6832311Z           "complete": false,
2026-06-10T22:49:44.6832606Z           "evidence": []
2026-06-10T22:49:44.6832877Z         },
2026-06-10T22:49:44.6833116Z         "impl": {
2026-06-10T22:49:44.6833363Z           "complete": true,
2026-06-10T22:49:44.6833646Z           "evidence": [
2026-06-10T22:49:44.6833907Z             {
2026-06-10T22:49:44.6834183Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-10T22:49:44.6834532Z               "line": 27
2026-06-10T22:49:44.6834793Z             },
2026-06-10T22:49:44.6835041Z             {
2026-06-10T22:49:44.6835322Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.6835580Z               "line": 372
2026-06-10T22:49:44.6835853Z             }
2026-06-10T22:49:44.6836089Z           ]
2026-06-10T22:49:44.6836306Z         },
2026-06-10T22:49:44.6836536Z         "int": {
2026-06-10T22:49:44.6836802Z           "complete": true,
2026-06-10T22:49:44.6837084Z           "evidence": [
2026-06-10T22:49:44.6837345Z             {
2026-06-10T22:49:44.6837631Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-10T22:49:44.6837979Z               "line": 261
2026-06-10T22:49:44.6838238Z             }
2026-06-10T22:49:44.6838476Z           ]
2026-06-10T22:49:44.6838706Z         },
2026-06-10T22:49:44.6838932Z         "unit": {
2026-06-10T22:49:44.6839249Z           "complete": true,
2026-06-10T22:49:44.6839530Z           "evidence": [
2026-06-10T22:49:44.6839803Z             {
2026-06-10T22:49:44.6840084Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-10T22:49:44.6840427Z               "line": 242
2026-06-10T22:49:44.6840676Z             },
2026-06-10T22:49:44.6841277Z             {
2026-06-10T22:49:44.6841556Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.6841912Z               "line": 622
2026-06-10T22:49:44.6842183Z             }
2026-06-10T22:49:44.6842421Z           ]
2026-06-10T22:49:44.6842661Z         }
2026-06-10T22:49:44.6842885Z       }
2026-06-10T22:49:44.6843104Z     },
2026-06-10T22:49:44.6843328Z     {
2026-06-10T22:49:44.6843719Z       "id": "REQ-ARCH-1",
2026-06-10T22:49:44.6844053Z       "title": "Many small acyclically-layered crates",
2026-06-10T22:49:44.6844457Z       "requiredStages": [
2026-06-10T22:49:44.6844723Z         "impl"
2026-06-10T22:49:44.6844976Z       ],
2026-06-10T22:49:44.6845206Z       "stages": {
2026-06-10T22:49:44.6845468Z         "doc": {
2026-06-10T22:49:44.6845721Z           "complete": false,
2026-06-10T22:49:44.6846022Z           "evidence": []
2026-06-10T22:49:44.6846293Z         },
2026-06-10T22:49:44.6846531Z         "impl": {
2026-06-10T22:49:44.6846782Z           "complete": true,
2026-06-10T22:49:44.6847077Z           "evidence": [
2026-06-10T22:49:44.6847334Z             {
2026-06-10T22:49:44.6847605Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-10T22:49:44.6847944Z               "line": 16
2026-06-10T22:49:44.6848210Z             },
2026-06-10T22:49:44.6848454Z             {
2026-06-10T22:49:44.6848726Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-10T22:49:44.6849155Z               "line": 12
2026-06-10T22:49:44.6849431Z             },
2026-06-10T22:49:44.6849668Z             {
2026-06-10T22:49:44.6849939Z               "path": "crates/spt-store/src/lib.rs",
2026-06-10T22:49:44.6850283Z               "line": 12
2026-06-10T22:49:44.6850535Z             }
2026-06-10T22:49:44.6850772Z           ]
2026-06-10T22:49:44.6851012Z         },
2026-06-10T22:49:44.6851236Z         "int": {
2026-06-10T22:49:44.6851499Z           "complete": false,
2026-06-10T22:49:44.6851790Z           "evidence": []
2026-06-10T22:49:44.6852054Z         },
2026-06-10T22:49:44.6852291Z         "unit": {
2026-06-10T22:49:44.6852544Z           "complete": false,
2026-06-10T22:49:44.6852830Z           "evidence": []
2026-06-10T22:49:44.6853087Z         }
2026-06-10T22:49:44.6853329Z       }
2026-06-10T22:49:44.6853687Z     },
2026-06-10T22:49:44.6853917Z     {
2026-06-10T22:49:44.6854169Z       "id": "REQ-ARCH-2",
2026-06-10T22:49:44.6854551Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-10T22:49:44.6854979Z       "requiredStages": [
2026-06-10T22:49:44.6855255Z         "impl"
2026-06-10T22:49:44.6875709Z       ],
2026-06-10T22:49:44.6875910Z       "stages": {
2026-06-10T22:49:44.6876094Z         "doc": {
2026-06-10T22:49:44.6876290Z           "complete": false,
2026-06-10T22:49:44.6876505Z           "evidence": []
2026-06-10T22:49:44.6876695Z         },
2026-06-10T22:49:44.6876858Z         "impl": {
2026-06-10T22:49:44.6877043Z           "complete": true,
2026-06-10T22:49:44.6877244Z           "evidence": [
2026-06-10T22:49:44.6877430Z             {
2026-06-10T22:49:44.6877648Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-10T22:49:44.6877891Z               "line": 18
2026-06-10T22:49:44.6878084Z             }
2026-06-10T22:49:44.6878249Z           ]
2026-06-10T22:49:44.6878406Z         },
2026-06-10T22:49:44.6878570Z         "int": {
2026-06-10T22:49:44.6878752Z           "complete": false,
2026-06-10T22:49:44.6879077Z           "evidence": []
2026-06-10T22:49:44.6879472Z         },
2026-06-10T22:49:44.6879867Z         "unit": {
2026-06-10T22:49:44.6880116Z           "complete": false,
2026-06-10T22:49:44.6880392Z           "evidence": []
2026-06-10T22:49:44.6880622Z         }
2026-06-10T22:49:44.6880816Z       }
2026-06-10T22:49:44.6881008Z     },
2026-06-10T22:49:44.6881191Z     {
2026-06-10T22:49:44.6881395Z       "id": "REQ-ARCH-3",
2026-06-10T22:49:44.6881785Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-10T22:49:44.6882201Z       "requiredStages": [
2026-06-10T22:49:44.6882692Z         "impl",
2026-06-10T22:49:44.6882898Z         "unit"
2026-06-10T22:49:44.6883102Z       ],
2026-06-10T22:49:44.6883297Z       "stages": {
2026-06-10T22:49:44.6883504Z         "doc": {
2026-06-10T22:49:44.6883725Z           "complete": false,
2026-06-10T22:49:44.6883985Z           "evidence": []
2026-06-10T22:49:44.6884215Z         },
2026-06-10T22:49:44.6884424Z         "impl": {
2026-06-10T22:49:44.6884788Z           "complete": true,
2026-06-10T22:49:44.6885044Z           "evidence": [
2026-06-10T22:49:44.6885273Z             {
2026-06-10T22:49:44.6885535Z               "path": "crates/spt-proto/src/version.rs",
2026-06-10T22:49:44.6885840Z               "line": 34
2026-06-10T22:49:44.6886071Z             },
2026-06-10T22:49:44.6886279Z             {
2026-06-10T22:49:44.6886521Z               "path": "crates/spt-proto/src/version.rs",
2026-06-10T22:49:44.6886817Z               "line": 41
2026-06-10T22:49:44.6887041Z             }
2026-06-10T22:49:44.6887235Z           ]
2026-06-10T22:49:44.6887451Z         },
2026-06-10T22:49:44.6887642Z         "int": {
2026-06-10T22:49:44.6887861Z           "complete": false,
2026-06-10T22:49:44.6888104Z           "evidence": []
2026-06-10T22:49:44.6888324Z         },
2026-06-10T22:49:44.6888500Z         "unit": {
2026-06-10T22:49:44.6888677Z           "complete": true,
2026-06-10T22:49:44.6888875Z           "evidence": [
2026-06-10T22:49:44.6889135Z             {
2026-06-10T22:49:44.6889341Z               "path": "crates/spt-proto/src/version.rs",
2026-06-10T22:49:44.6889584Z               "line": 51
2026-06-10T22:49:44.6889760Z             },
2026-06-10T22:49:44.6889933Z             {
2026-06-10T22:49:44.6890117Z               "path": "crates/spt-proto/src/version.rs",
2026-06-10T22:49:44.6890352Z               "line": 71
2026-06-10T22:49:44.6890538Z             },
2026-06-10T22:49:44.6890704Z             {
2026-06-10T22:49:44.6890891Z               "path": "crates/spt-proto/src/version.rs",
2026-06-10T22:49:44.6891124Z               "line": 83
2026-06-10T22:49:44.6891309Z             }
2026-06-10T22:49:44.6891478Z           ]
2026-06-10T22:49:44.6891643Z         }
2026-06-10T22:49:44.6891805Z       }
2026-06-10T22:49:44.6891960Z     },
2026-06-10T22:49:44.6892122Z     {
2026-06-10T22:49:44.6892289Z       "id": "REQ-ARCH-4",
2026-06-10T22:49:44.6892566Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-10T22:49:44.6892880Z       "requiredStages": [
2026-06-10T22:49:44.6893071Z         "impl",
2026-06-10T22:49:44.6893248Z         "unit"
2026-06-10T22:49:44.6893420Z       ],
2026-06-10T22:49:44.6893581Z       "stages": {
2026-06-10T22:49:44.6893754Z         "doc": {
2026-06-10T22:49:44.6893929Z           "complete": false,
2026-06-10T22:49:44.6894121Z           "evidence": []
2026-06-10T22:49:44.6894304Z         },
2026-06-10T22:49:44.6894466Z         "impl": {
2026-06-10T22:49:44.6894645Z           "complete": true,
2026-06-10T22:49:44.6894841Z           "evidence": [
2026-06-10T22:49:44.6895023Z             {
2026-06-10T22:49:44.6895227Z               "path": "crates/spt-proto/src/event.rs",
2026-06-10T22:49:44.6895471Z               "line": 82
2026-06-10T22:49:44.6895653Z             },
2026-06-10T22:49:44.6895819Z             {
2026-06-10T22:49:44.6896015Z               "path": "crates/spt-proto/src/event.rs",
2026-06-10T22:49:44.6896248Z               "line": 96
2026-06-10T22:49:44.6896433Z             },
2026-06-10T22:49:44.6896602Z             {
2026-06-10T22:49:44.6896786Z               "path": "crates/spt-proto/src/event.rs",
2026-06-10T22:49:44.6897030Z               "line": 116
2026-06-10T22:49:44.6897210Z             },
2026-06-10T22:49:44.6897373Z             {
2026-06-10T22:49:44.6897558Z               "path": "crates/spt-proto/src/event.rs",
2026-06-10T22:49:44.6897796Z               "line": 131
2026-06-10T22:49:44.6897978Z             },
2026-06-10T22:49:44.6898149Z             {
2026-06-10T22:49:44.6898340Z               "path": "crates/spt-proto/src/event.rs",
2026-06-10T22:49:44.6898574Z               "line": 181
2026-06-10T22:49:44.6898871Z             }
2026-06-10T22:49:44.6899108Z           ]
2026-06-10T22:49:44.6899270Z         },
2026-06-10T22:49:44.6899431Z         "int": {
2026-06-10T22:49:44.6899611Z           "complete": false,
2026-06-10T22:49:44.6899810Z           "evidence": []
2026-06-10T22:49:44.6899991Z         },
2026-06-10T22:49:44.6900158Z         "unit": {
2026-06-10T22:49:44.6900445Z           "complete": true,
2026-06-10T22:49:44.6900640Z           "evidence": [
2026-06-10T22:49:44.6900822Z             {
2026-06-10T22:49:44.6901011Z               "path": "crates/spt-proto/src/event.rs",
2026-06-10T22:49:44.6901236Z               "line": 242
2026-06-10T22:49:44.6901418Z             },
2026-06-10T22:49:44.6901584Z             {
2026-06-10T22:49:44.6901766Z               "path": "crates/spt-proto/src/event.rs",
2026-06-10T22:49:44.6901995Z               "line": 252
2026-06-10T22:49:44.6902180Z             },
2026-06-10T22:49:44.6902350Z             {
2026-06-10T22:49:44.6902548Z               "path": "crates/spt-proto/src/event.rs",
2026-06-10T22:49:44.6902792Z               "line": 263
2026-06-10T22:49:44.6902967Z             },
2026-06-10T22:49:44.6903141Z             {
2026-06-10T22:49:44.6903326Z               "path": "crates/spt-proto/src/event.rs",
2026-06-10T22:49:44.6903559Z               "line": 274
2026-06-10T22:49:44.6903741Z             },
2026-06-10T22:49:44.6903898Z             {
2026-06-10T22:49:44.6904088Z               "path": "crates/spt-proto/src/event.rs",
2026-06-10T22:49:44.6904318Z               "line": 286
2026-06-10T22:49:44.6904498Z             },
2026-06-10T22:49:44.6904653Z             {
2026-06-10T22:49:44.6904846Z               "path": "crates/spt-proto/src/event.rs",
2026-06-10T22:49:44.6905068Z               "line": 299
2026-06-10T22:49:44.6905249Z             },
2026-06-10T22:49:44.6905411Z             {
2026-06-10T22:49:44.6905598Z               "path": "crates/spt-proto/src/event.rs",
2026-06-10T22:49:44.6905821Z               "line": 310
2026-06-10T22:49:44.6905997Z             },
2026-06-10T22:49:44.6906164Z             {
2026-06-10T22:49:44.6906355Z               "path": "crates/spt-proto/src/event.rs",
2026-06-10T22:49:44.6906580Z               "line": 327
2026-06-10T22:49:44.6906760Z             },
2026-06-10T22:49:44.6906923Z             {
2026-06-10T22:49:44.6907099Z               "path": "crates/spt-proto/src/event.rs",
2026-06-10T22:49:44.6907327Z               "line": 358
2026-06-10T22:49:44.6907510Z             }
2026-06-10T22:49:44.6907670Z           ]
2026-06-10T22:49:44.6907837Z         }
2026-06-10T22:49:44.6907985Z       }
2026-06-10T22:49:44.6908137Z     },
2026-06-10T22:49:44.6908285Z     {
2026-06-10T22:49:44.6908443Z       "id": "REQ-CLI-1",
2026-06-10T22:49:44.6909630Z       "title": "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); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25)",
2026-06-10T22:49:44.6910795Z       "requiredStages": [
2026-06-10T22:49:44.6910995Z         "impl",
2026-06-10T22:49:44.6911162Z         "unit"
2026-06-10T22:49:44.6911335Z       ],
2026-06-10T22:49:44.6911515Z       "stages": {
2026-06-10T22:49:44.6911687Z         "doc": {
2026-06-10T22:49:44.6911863Z           "complete": false,
2026-06-10T22:49:44.6912063Z           "evidence": []
2026-06-10T22:49:44.6912250Z         },
2026-06-10T22:49:44.6912406Z         "impl": {
2026-06-10T22:49:44.6912579Z           "complete": true,
2026-06-10T22:49:44.6912773Z           "evidence": [
2026-06-10T22:49:44.6912949Z             {
2026-06-10T22:49:44.6913127Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.6913352Z               "line": 193
2026-06-10T22:49:44.6913533Z             },
2026-06-10T22:49:44.6913696Z             {
2026-06-10T22:49:44.6913872Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.6914201Z               "line": 799
2026-06-10T22:49:44.6914382Z             },
2026-06-10T22:49:44.6914540Z             {
2026-06-10T22:49:44.6914716Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.6914936Z               "line": 1105
2026-06-10T22:49:44.6915126Z             },
2026-06-10T22:49:44.6915297Z             {
2026-06-10T22:49:44.6915572Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.6915804Z               "line": 2246
2026-06-10T22:49:44.6915980Z             }
2026-06-10T22:49:44.6916138Z           ]
2026-06-10T22:49:44.6916300Z         },
2026-06-10T22:49:44.6916463Z         "int": {
2026-06-10T22:49:44.6916643Z           "complete": false,
2026-06-10T22:49:44.6916839Z           "evidence": []
2026-06-10T22:49:44.6917025Z         },
2026-06-10T22:49:44.6917182Z         "unit": {
2026-06-10T22:49:44.6917398Z           "complete": true,
2026-06-10T22:49:44.6917588Z           "evidence": [
2026-06-10T22:49:44.6917760Z             {
2026-06-10T22:49:44.6917954Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.6918183Z               "line": 5370
2026-06-10T22:49:44.6918363Z             }
2026-06-10T22:49:44.6918526Z           ]
2026-06-10T22:49:44.6918688Z         }
2026-06-10T22:49:44.6918850Z       }
2026-06-10T22:49:44.6919070Z     },
2026-06-10T22:49:44.6919226Z     {
2026-06-10T22:49:44.6919408Z       "id": "REQ-CLI-2",
2026-06-10T22:49:44.6920180Z       "title": "spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)",
2026-06-10T22:49:44.6920964Z       "requiredStages": [
2026-06-10T22:49:44.6921159Z         "impl",
2026-06-10T22:49:44.6921322Z         "unit"
2026-06-10T22:49:44.6921488Z       ],
2026-06-10T22:49:44.6921646Z       "stages": {
2026-06-10T22:49:44.6921816Z         "doc": {
2026-06-10T22:49:44.6921999Z           "complete": false,
2026-06-10T22:49:44.6922194Z           "evidence": []
2026-06-10T22:49:44.6922375Z         },
2026-06-10T22:49:44.6922529Z         "impl": {
2026-06-10T22:49:44.6922704Z           "complete": true,
2026-06-10T22:49:44.6922896Z           "evidence": [
2026-06-10T22:49:44.6923090Z             {
2026-06-10T22:49:44.6923300Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-10T22:49:44.6923542Z               "line": 345
2026-06-10T22:49:44.6923725Z             },
2026-06-10T22:49:44.6923894Z             {
2026-06-10T22:49:44.6924098Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-10T22:49:44.6924350Z               "line": 78
2026-06-10T22:49:44.6924537Z             },
2026-06-10T22:49:44.6924703Z             {
2026-06-10T22:49:44.6924894Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-10T22:49:44.6925138Z               "line": 239
2026-06-10T22:49:44.6925318Z             },
2026-06-10T22:49:44.6925486Z             {
2026-06-10T22:49:44.6925677Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.6925918Z               "line": 337
2026-06-10T22:49:44.6926109Z             },
2026-06-10T22:49:44.6926273Z             {
2026-06-10T22:49:44.6926451Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.6926679Z               "line": 842
2026-06-10T22:49:44.6926870Z             },
2026-06-10T22:49:44.6927037Z             {
2026-06-10T22:49:44.6927217Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.6927442Z               "line": 1296
2026-06-10T22:49:44.6927638Z             },
2026-06-10T22:49:44.6927805Z             {
2026-06-10T22:49:44.6927986Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.6928214Z               "line": 1375
2026-06-10T22:49:44.6928400Z             },
2026-06-10T22:49:44.6928563Z             {
2026-06-10T22:49:44.6928743Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.6929049Z               "line": 1436
2026-06-10T22:49:44.6929373Z             }
2026-06-10T22:49:44.6929544Z           ]
2026-06-10T22:49:44.6929707Z         },
2026-06-10T22:49:44.6929873Z         "int": {
2026-06-10T22:49:44.6930059Z           "complete": false,
2026-06-10T22:49:44.6930279Z           "evidence": []
2026-06-10T22:49:44.6930464Z         },
2026-06-10T22:49:44.6930635Z         "unit": {
2026-06-10T22:49:44.6930822Z           "complete": true,
2026-06-10T22:49:44.6931173Z           "evidence": [
2026-06-10T22:49:44.6931371Z             {
2026-06-10T22:49:44.6931582Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-10T22:49:44.6931834Z               "line": 309
2026-06-10T22:49:44.6932034Z             },
2026-06-10T22:49:44.6932211Z             {
2026-06-10T22:49:44.6932406Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.6932644Z               "line": 5508
2026-06-10T22:49:44.6932845Z             }
2026-06-10T22:49:44.6933025Z           ]
2026-06-10T22:49:44.6933192Z         }
2026-06-10T22:49:44.6933370Z       }
2026-06-10T22:49:44.6933535Z     },
2026-06-10T22:49:44.6933699Z     {
2026-06-10T22:49:44.6933879Z       "id": "REQ-CLI-3",
2026-06-10T22:49:44.6934672Z       "title": "Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)",
2026-06-10T22:49:44.6935483Z       "requiredStages": [
2026-06-10T22:49:44.6935679Z         "impl",
2026-06-10T22:49:44.6935860Z         "unit"
2026-06-10T22:49:44.6936032Z       ],
2026-06-10T22:49:44.6936203Z       "stages": {
2026-06-10T22:49:44.6936380Z         "doc": {
2026-06-10T22:49:44.6936559Z           "complete": false,
2026-06-10T22:49:44.6936772Z           "evidence": []
2026-06-10T22:49:44.6936958Z         },
2026-06-10T22:49:44.6937134Z         "impl": {
2026-06-10T22:49:44.6937321Z           "complete": true,
2026-06-10T22:49:44.6937520Z           "evidence": [
2026-06-10T22:49:44.6937716Z             {
2026-06-10T22:49:44.6937907Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.6938150Z               "line": 793
2026-06-10T22:49:44.6938336Z             }
2026-06-10T22:49:44.6938508Z           ]
2026-06-10T22:49:44.6938679Z         },
2026-06-10T22:49:44.6938843Z         "int": {
2026-06-10T22:49:44.6939123Z           "complete": false,
2026-06-10T22:49:44.6939332Z           "evidence": []
2026-06-10T22:49:44.6939517Z         },
2026-06-10T22:49:44.6939684Z         "unit": {
2026-06-10T22:49:44.6939857Z           "complete": true,
2026-06-10T22:49:44.6940065Z           "evidence": [
2026-06-10T22:49:44.6940247Z             {
2026-06-10T22:49:44.6940443Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.6940670Z               "line": 5335
2026-06-10T22:49:44.6940862Z             }
2026-06-10T22:49:44.6941029Z           ]
2026-06-10T22:49:44.6941196Z         }
2026-06-10T22:49:44.6941358Z       }
2026-06-10T22:49:44.6941525Z     },
2026-06-10T22:49:44.6941690Z     {
2026-06-10T22:49:44.6941865Z       "id": "REQ-CONSENT-1",
2026-06-10T22:49:44.6942833Z       "title": "Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)",
2026-06-10T22:49:44.6943795Z       "requiredStages": [
2026-06-10T22:49:44.6943993Z         "impl",
2026-06-10T22:49:44.6944172Z         "unit"
2026-06-10T22:49:44.6944346Z       ],
2026-06-10T22:49:44.6944510Z       "stages": {
2026-06-10T22:49:44.6944686Z         "doc": {
2026-06-10T22:49:44.6944874Z           "complete": false,
2026-06-10T22:49:44.6945084Z           "evidence": []
2026-06-10T22:49:44.6945272Z         },
2026-06-10T22:49:44.6945442Z         "impl": {
2026-06-10T22:49:44.6945633Z           "complete": true,
2026-06-10T22:49:44.6945953Z           "evidence": [
2026-06-10T22:49:44.6946143Z             {
2026-06-10T22:49:44.6946348Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-10T22:49:44.6997416Z               "line": 27
2026-06-10T22:49:44.6997728Z             },
2026-06-10T22:49:44.6997928Z             {
2026-06-10T22:49:44.6998143Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-10T22:49:44.6998614Z               "line": 75
2026-06-10T22:49:44.6998801Z             },
2026-06-10T22:49:44.6999083Z             {
2026-06-10T22:49:44.6999288Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-10T22:49:44.6999540Z               "line": 98
2026-06-10T22:49:44.6999717Z             },
2026-06-10T22:49:44.6999882Z             {
2026-06-10T22:49:44.7000072Z               "path": "crates/spt-store/src/grants.rs",
2026-06-10T22:49:44.7000309Z               "line": 82
2026-06-10T22:49:44.7000485Z             },
2026-06-10T22:49:44.7000639Z             {
2026-06-10T22:49:44.7000833Z               "path": "crates/spt-store/src/grants.rs",
2026-06-10T22:49:44.7001068Z               "line": 109
2026-06-10T22:49:44.7001254Z             },
2026-06-10T22:49:44.7001416Z             {
2026-06-10T22:49:44.7001597Z               "path": "crates/spt-store/src/grants.rs",
2026-06-10T22:49:44.7001830Z               "line": 127
2026-06-10T22:49:44.7002007Z             },
2026-06-10T22:49:44.7002174Z             {
2026-06-10T22:49:44.7002359Z               "path": "crates/spt-store/src/grants.rs",
2026-06-10T22:49:44.7002585Z               "line": 142
2026-06-10T22:49:44.7002763Z             },
2026-06-10T22:49:44.7002922Z             {
2026-06-10T22:49:44.7003097Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7003322Z               "line": 5071
2026-06-10T22:49:44.7003508Z             }
2026-06-10T22:49:44.7003665Z           ]
2026-06-10T22:49:44.7003828Z         },
2026-06-10T22:49:44.7003985Z         "int": {
2026-06-10T22:49:44.7004162Z           "complete": false,
2026-06-10T22:49:44.7004366Z           "evidence": []
2026-06-10T22:49:44.7004547Z         },
2026-06-10T22:49:44.7004700Z         "unit": {
2026-06-10T22:49:44.7004872Z           "complete": true,
2026-06-10T22:49:44.7005066Z           "evidence": [
2026-06-10T22:49:44.7005245Z             {
2026-06-10T22:49:44.7005436Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-10T22:49:44.7005683Z               "line": 334
2026-06-10T22:49:44.7005865Z             },
2026-06-10T22:49:44.7006027Z             {
2026-06-10T22:49:44.7006217Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-10T22:49:44.7006451Z               "line": 380
2026-06-10T22:49:44.7006632Z             },
2026-06-10T22:49:44.7006799Z             {
2026-06-10T22:49:44.7006991Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-10T22:49:44.7007218Z               "line": 391
2026-06-10T22:49:44.7007401Z             },
2026-06-10T22:49:44.7007572Z             {
2026-06-10T22:49:44.7007762Z               "path": "crates/spt-store/src/grants.rs",
2026-06-10T22:49:44.7008005Z               "line": 165
2026-06-10T22:49:44.7008183Z             },
2026-06-10T22:49:44.7008351Z             {
2026-06-10T22:49:44.7008535Z               "path": "crates/spt-store/src/grants.rs",
2026-06-10T22:49:44.7008770Z               "line": 184
2026-06-10T22:49:44.7009032Z             },
2026-06-10T22:49:44.7009209Z             {
2026-06-10T22:49:44.7009414Z               "path": "crates/spt-store/src/grants.rs",
2026-06-10T22:49:44.7009643Z               "line": 204
2026-06-10T22:49:44.7009823Z             },
2026-06-10T22:49:44.7009972Z             {
2026-06-10T22:49:44.7010153Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7010376Z               "line": 5688
2026-06-10T22:49:44.7010552Z             }
2026-06-10T22:49:44.7010707Z           ]
2026-06-10T22:49:44.7010870Z         }
2026-06-10T22:49:44.7011027Z       }
2026-06-10T22:49:44.7011185Z     },
2026-06-10T22:49:44.7011337Z     {
2026-06-10T22:49:44.7011504Z       "id": "REQ-CONSENT-2",
2026-06-10T22:49:44.7012543Z       "title": "Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)",
2026-06-10T22:49:44.7013567Z       "requiredStages": [
2026-06-10T22:49:44.7013778Z         "impl",
2026-06-10T22:49:44.7013943Z         "unit"
2026-06-10T22:49:44.7014112Z       ],
2026-06-10T22:49:44.7014267Z       "stages": {
2026-06-10T22:49:44.7014435Z         "doc": {
2026-06-10T22:49:44.7014606Z           "complete": false,
2026-06-10T22:49:44.7014807Z           "evidence": []
2026-06-10T22:49:44.7014994Z         },
2026-06-10T22:49:44.7015154Z         "impl": {
2026-06-10T22:49:44.7015342Z           "complete": true,
2026-06-10T22:49:44.7015540Z           "evidence": [
2026-06-10T22:49:44.7015721Z             {
2026-06-10T22:49:44.7015923Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-10T22:49:44.7016176Z               "line": 140
2026-06-10T22:49:44.7016363Z             },
2026-06-10T22:49:44.7016529Z             {
2026-06-10T22:49:44.7016720Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-10T22:49:44.7016974Z               "line": 165
2026-06-10T22:49:44.7017149Z             },
2026-06-10T22:49:44.7017322Z             {
2026-06-10T22:49:44.7017512Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-10T22:49:44.7017736Z               "line": 199
2026-06-10T22:49:44.7017909Z             },
2026-06-10T22:49:44.7018065Z             {
2026-06-10T22:49:44.7018257Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-10T22:49:44.7018488Z               "line": 241
2026-06-10T22:49:44.7018667Z             },
2026-06-10T22:49:44.7018820Z             {
2026-06-10T22:49:44.7019096Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-10T22:49:44.7019716Z               "line": 269
2026-06-10T22:49:44.7020002Z             },
2026-06-10T22:49:44.7020212Z             {
2026-06-10T22:49:44.7020461Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-10T22:49:44.7020771Z               "line": 300
2026-06-10T22:49:44.7020993Z             },
2026-06-10T22:49:44.7021187Z             {
2026-06-10T22:49:44.7021410Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7021706Z               "line": 4936
2026-06-10T22:49:44.7021935Z             },
2026-06-10T22:49:44.7022131Z             {
2026-06-10T22:49:44.7022340Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7022607Z               "line": 4994
2026-06-10T22:49:44.7022893Z             }
2026-06-10T22:49:44.7023179Z           ]
2026-06-10T22:49:44.7023451Z         },
2026-06-10T22:49:44.7023738Z         "int": {
2026-06-10T22:49:44.7024047Z           "complete": false,
2026-06-10T22:49:44.7024404Z           "evidence": []
2026-06-10T22:49:44.7024728Z         },
2026-06-10T22:49:44.7025019Z         "unit": {
2026-06-10T22:49:44.7025330Z           "complete": true,
2026-06-10T22:49:44.7025687Z           "evidence": [
2026-06-10T22:49:44.7026010Z             {
2026-06-10T22:49:44.7026365Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-10T22:49:44.7026789Z               "line": 419
2026-06-10T22:49:44.7027118Z             },
2026-06-10T22:49:44.7027399Z             {
2026-06-10T22:49:44.7027753Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-10T22:49:44.7028168Z               "line": 436
2026-06-10T22:49:44.7028497Z             },
2026-06-10T22:49:44.7028784Z             {
2026-06-10T22:49:44.7029167Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-10T22:49:44.7029509Z               "line": 472
2026-06-10T22:49:44.7029762Z             },
2026-06-10T22:49:44.7029999Z             {
2026-06-10T22:49:44.7030266Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-10T22:49:44.7030796Z               "line": 516
2026-06-10T22:49:44.7031283Z             },
2026-06-10T22:49:44.7031454Z             {
2026-06-10T22:49:44.7031653Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7031889Z               "line": 6583
2026-06-10T22:49:44.7032077Z             },
2026-06-10T22:49:44.7032237Z             {
2026-06-10T22:49:44.7032415Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7032644Z               "line": 6665
2026-06-10T22:49:44.7032939Z             }
2026-06-10T22:49:44.7033105Z           ]
2026-06-10T22:49:44.7033264Z         }
2026-06-10T22:49:44.7033425Z       }
2026-06-10T22:49:44.7033574Z     },
2026-06-10T22:49:44.7033725Z     {
2026-06-10T22:49:44.7033903Z       "id": "REQ-CONV-1",
2026-06-10T22:49:44.7035555Z       "title": "Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)",
2026-06-10T22:49:44.7036897Z       "requiredStages": [
2026-06-10T22:49:44.7037087Z         "impl",
2026-06-10T22:49:44.7037254Z         "unit"
2026-06-10T22:49:44.7037417Z       ],
2026-06-10T22:49:44.7037588Z       "stages": {
2026-06-10T22:49:44.7037751Z         "doc": {
2026-06-10T22:49:44.7037940Z           "complete": false,
2026-06-10T22:49:44.7038151Z           "evidence": []
2026-06-10T22:49:44.7038341Z         },
2026-06-10T22:49:44.7038503Z         "impl": {
2026-06-10T22:49:44.7038691Z           "complete": true,
2026-06-10T22:49:44.7038890Z           "evidence": [
2026-06-10T22:49:44.7039305Z             {
2026-06-10T22:49:44.7039585Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-10T22:49:44.7039892Z               "line": 696
2026-06-10T22:49:44.7040112Z             },
2026-06-10T22:49:44.7040322Z             {
2026-06-10T22:49:44.7040564Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-10T22:49:44.7040860Z               "line": 94
2026-06-10T22:49:44.7041065Z             },
2026-06-10T22:49:44.7041375Z             {
2026-06-10T22:49:44.7041858Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-10T22:49:44.7042256Z               "line": 345
2026-06-10T22:49:44.7042574Z             },
2026-06-10T22:49:44.7042975Z             {
2026-06-10T22:49:44.7043346Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-10T22:49:44.7043814Z               "line": 387
2026-06-10T22:49:44.7044139Z             },
2026-06-10T22:49:44.7044439Z             {
2026-06-10T22:49:44.7044849Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-10T22:49:44.7045238Z               "line": 472
2026-06-10T22:49:44.7045614Z             },
2026-06-10T22:49:44.7045972Z             {
2026-06-10T22:49:44.7046315Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.7046779Z               "line": 629
2026-06-10T22:49:44.7047121Z             },
2026-06-10T22:49:44.7047453Z             {
2026-06-10T22:49:44.7047800Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.7048209Z               "line": 655
2026-06-10T22:49:44.7048649Z             },
2026-06-10T22:49:44.7049040Z             {
2026-06-10T22:49:44.7049374Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-10T22:49:44.7049740Z               "line": 369
2026-06-10T22:49:44.7050008Z             },
2026-06-10T22:49:44.7050301Z             {
2026-06-10T22:49:44.7050601Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-10T22:49:44.7050911Z               "line": 19
2026-06-10T22:49:44.7051278Z             }
2026-06-10T22:49:44.7051521Z           ]
2026-06-10T22:49:44.7051931Z         },
2026-06-10T22:49:44.7052194Z         "int": {
2026-06-10T22:49:44.7052438Z           "complete": false,
2026-06-10T22:49:44.7052802Z           "evidence": []
2026-06-10T22:49:44.7053197Z         },
2026-06-10T22:49:44.7053496Z         "unit": {
2026-06-10T22:49:44.7053802Z           "complete": true,
2026-06-10T22:49:44.7054064Z           "evidence": [
2026-06-10T22:49:44.7054394Z             {
2026-06-10T22:49:44.7054670Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.7055028Z               "line": 990
2026-06-10T22:49:44.7055409Z             },
2026-06-10T22:49:44.7055689Z             {
2026-06-10T22:49:44.7056009Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-10T22:49:44.7056375Z               "line": 108
2026-06-10T22:49:44.7056667Z             },
2026-06-10T22:49:44.7056924Z             {
2026-06-10T22:49:44.7057210Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-10T22:49:44.7057563Z               "line": 134
2026-06-10T22:49:44.7058079Z             },
2026-06-10T22:49:44.7058313Z             {
2026-06-10T22:49:44.7058694Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-10T22:49:44.7059094Z               "line": 144
2026-06-10T22:49:44.7059409Z             }
2026-06-10T22:49:44.7059666Z           ]
2026-06-10T22:49:44.7059891Z         }
2026-06-10T22:49:44.7060201Z       }
2026-06-10T22:49:44.7060430Z     },
2026-06-10T22:49:44.7060695Z     {
2026-06-10T22:49:44.7061007Z       "id": "REQ-CONV-2",
2026-06-10T22:49:44.7062324Z       "title": "Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)",
2026-06-10T22:49:44.7063508Z       "requiredStages": [
2026-06-10T22:49:44.7063781Z         "impl",
2026-06-10T22:49:44.7064066Z         "unit"
2026-06-10T22:49:44.7064343Z       ],
2026-06-10T22:49:44.7064606Z       "stages": {
2026-06-10T22:49:44.7064935Z         "doc": {
2026-06-10T22:49:44.7065201Z           "complete": false,
2026-06-10T22:49:44.7065550Z           "evidence": []
2026-06-10T22:49:44.7065826Z         },
2026-06-10T22:49:44.7066067Z         "impl": {
2026-06-10T22:49:44.7066391Z           "complete": true,
2026-06-10T22:49:44.7066678Z           "evidence": [
2026-06-10T22:49:44.7067003Z             {
2026-06-10T22:49:44.7067317Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7067656Z               "line": 359
2026-06-10T22:49:44.7067979Z             },
2026-06-10T22:49:44.7068223Z             {
2026-06-10T22:49:44.7068508Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.7068897Z               "line": 333
2026-06-10T22:49:44.7069282Z             },
2026-06-10T22:49:44.7069602Z             {
2026-06-10T22:49:44.7069893Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7070231Z               "line": 761
2026-06-10T22:49:44.7070537Z             },
2026-06-10T22:49:44.7070799Z             {
2026-06-10T22:49:44.7071109Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7071449Z               "line": 772
2026-06-10T22:49:44.7071741Z             },
2026-06-10T22:49:44.7072517Z             {
2026-06-10T22:49:44.7072798Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.7073161Z               "line": 334
2026-06-10T22:49:44.7073447Z             },
2026-06-10T22:49:44.7073699Z             {
2026-06-10T22:49:44.7074007Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7074336Z               "line": 2201
2026-06-10T22:49:44.7074674Z             },
2026-06-10T22:49:44.7074946Z             {
2026-06-10T22:49:44.7075203Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7075570Z               "line": 2217
2026-06-10T22:49:44.7075838Z             },
2026-06-10T22:49:44.7076061Z             {
2026-06-10T22:49:44.7076391Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7076732Z               "line": 2274
2026-06-10T22:49:44.7077190Z             }
2026-06-10T22:49:44.7077434Z           ]
2026-06-10T22:49:44.7077677Z         },
2026-06-10T22:49:44.7077977Z         "int": {
2026-06-10T22:49:44.7078235Z           "complete": false,
2026-06-10T22:49:44.7078573Z           "evidence": []
2026-06-10T22:49:44.7078854Z         },
2026-06-10T22:49:44.7079213Z         "unit": {
2026-06-10T22:49:44.7079638Z           "complete": true,
2026-06-10T22:49:44.7079948Z           "evidence": [
2026-06-10T22:49:44.7080243Z             {
2026-06-10T22:49:44.7080539Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.7080877Z               "line": 1071
2026-06-10T22:49:44.7081173Z             }
2026-06-10T22:49:44.7081431Z           ]
2026-06-10T22:49:44.7081726Z         }
2026-06-10T22:49:44.7081987Z       }
2026-06-10T22:49:44.7082214Z     },
2026-06-10T22:49:44.7082495Z     {
2026-06-10T22:49:44.7082762Z       "id": "REQ-DAEMON-1",
2026-06-10T22:49:44.7083091Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-10T22:49:44.7083559Z       "requiredStages": [
2026-06-10T22:49:44.7083832Z         "impl",
2026-06-10T22:49:44.7084170Z         "unit",
2026-06-10T22:49:44.7084425Z         "int"
2026-06-10T22:49:44.7084657Z       ],
2026-06-10T22:49:44.7084957Z       "stages": {
2026-06-10T22:49:44.7085201Z         "doc": {
2026-06-10T22:49:44.7085487Z           "complete": false,
2026-06-10T22:49:44.7085787Z           "evidence": []
2026-06-10T22:49:44.7086055Z         },
2026-06-10T22:49:44.7086380Z         "impl": {
2026-06-10T22:49:44.7086636Z           "complete": true,
2026-06-10T22:49:44.7086951Z           "evidence": [
2026-06-10T22:49:44.7087226Z             {
2026-06-10T22:49:44.7087488Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-10T22:49:44.7087869Z               "line": 12
2026-06-10T22:49:44.7088128Z             },
2026-06-10T22:49:44.7088447Z             {
2026-06-10T22:49:44.7088733Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7089171Z               "line": 16
2026-06-10T22:49:44.7089485Z             },
2026-06-10T22:49:44.7089736Z             {
2026-06-10T22:49:44.7090009Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7090393Z               "line": 259
2026-06-10T22:49:44.7090680Z             },
2026-06-10T22:49:44.7097048Z             {
2026-06-10T22:49:44.7097306Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-10T22:49:44.7097564Z               "line": 15
2026-06-10T22:49:44.7097762Z             },
2026-06-10T22:49:44.7097944Z             {
2026-06-10T22:49:44.7098138Z               "path": "crates/spt/src/api/live.rs",
2026-06-10T22:49:44.7098377Z               "line": 13
2026-06-10T22:49:44.7098559Z             }
2026-06-10T22:49:44.7098735Z           ]
2026-06-10T22:49:44.7098898Z         },
2026-06-10T22:49:44.7099350Z         "int": {
2026-06-10T22:49:44.7099659Z           "complete": true,
2026-06-10T22:49:44.7099931Z           "evidence": [
2026-06-10T22:49:44.7100193Z             {
2026-06-10T22:49:44.7100458Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-10T22:49:44.7100782Z               "line": 32
2026-06-10T22:49:44.7101020Z             }
2026-06-10T22:49:44.7101221Z           ]
2026-06-10T22:49:44.7101408Z         },
2026-06-10T22:49:44.7101602Z         "unit": {
2026-06-10T22:49:44.7101826Z           "complete": true,
2026-06-10T22:49:44.7102075Z           "evidence": [
2026-06-10T22:49:44.7102303Z             {
2026-06-10T22:49:44.7102580Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-10T22:49:44.7102874Z               "line": 285
2026-06-10T22:49:44.7103102Z             },
2026-06-10T22:49:44.7103301Z             {
2026-06-10T22:49:44.7103544Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-10T22:49:44.7103839Z               "line": 293
2026-06-10T22:49:44.7104064Z             },
2026-06-10T22:49:44.7104245Z             {
2026-06-10T22:49:44.7104497Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-10T22:49:44.7105037Z               "line": 309
2026-06-10T22:49:44.7105262Z             },
2026-06-10T22:49:44.7105455Z             {
2026-06-10T22:49:44.7105697Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-10T22:49:44.7105993Z               "line": 317
2026-06-10T22:49:44.7106211Z             },
2026-06-10T22:49:44.7106411Z             {
2026-06-10T22:49:44.7106783Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7107098Z               "line": 609
2026-06-10T22:49:44.7107322Z             },
2026-06-10T22:49:44.7107519Z             {
2026-06-10T22:49:44.7107751Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7108047Z               "line": 679
2026-06-10T22:49:44.7108275Z             },
2026-06-10T22:49:44.7108485Z             {
2026-06-10T22:49:44.7108718Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-10T22:49:44.7109057Z               "line": 104
2026-06-10T22:49:44.7109266Z             },
2026-06-10T22:49:44.7109430Z             {
2026-06-10T22:49:44.7109619Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-10T22:49:44.7109858Z               "line": 129
2026-06-10T22:49:44.7110035Z             }
2026-06-10T22:49:44.7110201Z           ]
2026-06-10T22:49:44.7110287Z         }
2026-06-10T22:49:44.7110374Z       }
2026-06-10T22:49:44.7110454Z     },
2026-06-10T22:49:44.7110553Z     {
2026-06-10T22:49:44.7110648Z       "id": "REQ-DAEMON-2",
2026-06-10T22:49:44.7110795Z       "title": "Broker/brain split for seamless self-update",
2026-06-10T22:49:44.7110898Z       "requiredStages": [
2026-06-10T22:49:44.7110989Z         "impl",
2026-06-10T22:49:44.7111076Z         "unit",
2026-06-10T22:49:44.7111161Z         "int"
2026-06-10T22:49:44.7111246Z       ],
2026-06-10T22:49:44.7111333Z       "stages": {
2026-06-10T22:49:44.7111424Z         "doc": {
2026-06-10T22:49:44.7111518Z           "complete": false,
2026-06-10T22:49:44.7111614Z           "evidence": []
2026-06-10T22:49:44.7111705Z         },
2026-06-10T22:49:44.7111791Z         "impl": {
2026-06-10T22:49:44.7111894Z           "complete": true,
2026-06-10T22:49:44.7111987Z           "evidence": [
2026-06-10T22:49:44.7112072Z             {
2026-06-10T22:49:44.7112190Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-10T22:49:44.7112282Z               "line": 23
2026-06-10T22:49:44.7112382Z             },
2026-06-10T22:49:44.7112463Z             {
2026-06-10T22:49:44.7112582Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-10T22:49:44.7112669Z               "line": 595
2026-06-10T22:49:44.7112758Z             },
2026-06-10T22:49:44.7112844Z             {
2026-06-10T22:49:44.7112955Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-10T22:49:44.7113049Z               "line": 648
2026-06-10T22:49:44.7113131Z             },
2026-06-10T22:49:44.7113222Z             {
2026-06-10T22:49:44.7113331Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-10T22:49:44.7113430Z               "line": 830
2026-06-10T22:49:44.7113520Z             },
2026-06-10T22:49:44.7113601Z             {
2026-06-10T22:49:44.7113723Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-10T22:49:44.7113813Z               "line": 32
2026-06-10T22:49:44.7113900Z             },
2026-06-10T22:49:44.7113981Z             {
2026-06-10T22:49:44.7114108Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-10T22:49:44.7114205Z               "line": 255
2026-06-10T22:49:44.7114291Z             },
2026-06-10T22:49:44.7114376Z             {
2026-06-10T22:49:44.7114490Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-10T22:49:44.7114582Z               "line": 687
2026-06-10T22:49:44.7114663Z             },
2026-06-10T22:49:44.7114752Z             {
2026-06-10T22:49:44.7114868Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-10T22:49:44.7114953Z               "line": 953
2026-06-10T22:49:44.7115039Z             },
2026-06-10T22:49:44.7115115Z             {
2026-06-10T22:49:44.7115349Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-10T22:49:44.7115435Z               "line": 11
2026-06-10T22:49:44.7115526Z             },
2026-06-10T22:49:44.7115620Z             {
2026-06-10T22:49:44.7115725Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-10T22:49:44.7115822Z               "line": 146
2026-06-10T22:49:44.7115996Z             },
2026-06-10T22:49:44.7116091Z             {
2026-06-10T22:49:44.7116201Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-10T22:49:44.7116299Z               "line": 274
2026-06-10T22:49:44.7116389Z             },
2026-06-10T22:49:44.7116466Z             {
2026-06-10T22:49:44.7116581Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-10T22:49:44.7116661Z               "line": 13
2026-06-10T22:49:44.7116742Z             },
2026-06-10T22:49:44.7116820Z             {
2026-06-10T22:49:44.7116933Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-10T22:49:44.7117038Z               "line": 27
2026-06-10T22:49:44.7117120Z             },
2026-06-10T22:49:44.7117234Z             {
2026-06-10T22:49:44.7117348Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-10T22:49:44.7117440Z               "line": 109
2026-06-10T22:49:44.7117524Z             },
2026-06-10T22:49:44.7117605Z             {
2026-06-10T22:49:44.7117735Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-10T22:49:44.7117820Z               "line": 447
2026-06-10T22:49:44.7117906Z             },
2026-06-10T22:49:44.7117987Z             {
2026-06-10T22:49:44.7118103Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-10T22:49:44.7118196Z               "line": 614
2026-06-10T22:49:44.7118278Z             },
2026-06-10T22:49:44.7118369Z             {
2026-06-10T22:49:44.7118483Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-10T22:49:44.7118573Z               "line": 715
2026-06-10T22:49:44.7118656Z             },
2026-06-10T22:49:44.7118751Z             {
2026-06-10T22:49:44.7118868Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-10T22:49:44.7119035Z               "line": 764
2026-06-10T22:49:44.7119127Z             },
2026-06-10T22:49:44.7119206Z             {
2026-06-10T22:49:44.7119326Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-10T22:49:44.7119412Z               "line": 812
2026-06-10T22:49:44.7119511Z             },
2026-06-10T22:49:44.7119597Z             {
2026-06-10T22:49:44.7119717Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-10T22:49:44.7119808Z               "line": 10
2026-06-10T22:49:44.7119888Z             }
2026-06-10T22:49:44.7119975Z           ]
2026-06-10T22:49:44.7120056Z         },
2026-06-10T22:49:44.7120165Z         "int": {
2026-06-10T22:49:44.7120261Z           "complete": true,
2026-06-10T22:49:44.7120347Z           "evidence": [
2026-06-10T22:49:44.7120437Z             {
2026-06-10T22:49:44.7120551Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-10T22:49:44.7120648Z               "line": 17
2026-06-10T22:49:44.7120732Z             },
2026-06-10T22:49:44.7120818Z             {
2026-06-10T22:49:44.7120949Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-10T22:49:44.7121033Z               "line": 71
2026-06-10T22:49:44.7121118Z             },
2026-06-10T22:49:44.7121203Z             {
2026-06-10T22:49:44.7121332Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-10T22:49:44.7121421Z               "line": 91
2026-06-10T22:49:44.7121506Z             },
2026-06-10T22:49:44.7121593Z             {
2026-06-10T22:49:44.7121707Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-10T22:49:44.7121797Z               "line": 167
2026-06-10T22:49:44.7121878Z             },
2026-06-10T22:49:44.7121965Z             {
2026-06-10T22:49:44.7122078Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-10T22:49:44.7122169Z               "line": 209
2026-06-10T22:49:44.7122256Z             },
2026-06-10T22:49:44.7122450Z             {
2026-06-10T22:49:44.7122570Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-10T22:49:44.7122656Z               "line": 128
2026-06-10T22:49:44.7122746Z             },
2026-06-10T22:49:44.7122827Z             {
2026-06-10T22:49:44.7122951Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-10T22:49:44.7123128Z               "line": 59
2026-06-10T22:49:44.7123214Z             }
2026-06-10T22:49:44.7123299Z           ]
2026-06-10T22:49:44.7123380Z         },
2026-06-10T22:49:44.7123472Z         "unit": {
2026-06-10T22:49:44.7123562Z           "complete": true,
2026-06-10T22:49:44.7123657Z           "evidence": [
2026-06-10T22:49:44.7123743Z             {
2026-06-10T22:49:44.7123853Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-10T22:49:44.7123952Z               "line": 62
2026-06-10T22:49:44.7124037Z             },
2026-06-10T22:49:44.7124118Z             {
2026-06-10T22:49:44.7124241Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-10T22:49:44.7124335Z               "line": 76
2026-06-10T22:49:44.7124426Z             },
2026-06-10T22:49:44.7124508Z             {
2026-06-10T22:49:44.7124622Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-10T22:49:44.7124707Z               "line": 88
2026-06-10T22:49:44.7124794Z             },
2026-06-10T22:49:44.7124879Z             {
2026-06-10T22:49:44.7124997Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-10T22:49:44.7125090Z               "line": 294
2026-06-10T22:49:44.7125170Z             },
2026-06-10T22:49:44.7125256Z             {
2026-06-10T22:49:44.7125366Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-10T22:49:44.7125457Z               "line": 620
2026-06-10T22:49:44.7125546Z             },
2026-06-10T22:49:44.7125627Z             {
2026-06-10T22:49:44.7125739Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-10T22:49:44.7125824Z               "line": 628
2026-06-10T22:49:44.7125914Z             },
2026-06-10T22:49:44.7126000Z             {
2026-06-10T22:49:44.7126110Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-10T22:49:44.7126199Z               "line": 645
2026-06-10T22:49:44.7126281Z             },
2026-06-10T22:49:44.7126373Z             {
2026-06-10T22:49:44.7126482Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-10T22:49:44.7126580Z               "line": 699
2026-06-10T22:49:44.7126661Z             },
2026-06-10T22:49:44.7126752Z             {
2026-06-10T22:49:44.7126869Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-10T22:49:44.7126954Z               "line": 883
2026-06-10T22:49:44.7127040Z             },
2026-06-10T22:49:44.7127118Z             {
2026-06-10T22:49:44.7127240Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-10T22:49:44.7127327Z               "line": 895
2026-06-10T22:49:44.7127418Z             },
2026-06-10T22:49:44.7127503Z             {
2026-06-10T22:49:44.7127612Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-10T22:49:44.7127704Z               "line": 110
2026-06-10T22:49:44.7127785Z             },
2026-06-10T22:49:44.7127874Z             {
2026-06-10T22:49:44.7127980Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-10T22:49:44.7128071Z               "line": 142
2026-06-10T22:49:44.7128156Z             }
2026-06-10T22:49:44.7128237Z           ]
2026-06-10T22:49:44.7128324Z         }
2026-06-10T22:49:44.7128399Z       }
2026-06-10T22:49:44.7128481Z     },
2026-06-10T22:49:44.7128562Z     {
2026-06-10T22:49:44.7128658Z       "id": "REQ-DAEMON-3",
2026-06-10T22:49:44.7128805Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-10T22:49:44.7128886Z       "requiredStages": [
2026-06-10T22:49:44.7129115Z         "impl",
2026-06-10T22:49:44.7129196Z         "unit",
2026-06-10T22:49:44.7129288Z         "int"
2026-06-10T22:49:44.7129363Z       ],
2026-06-10T22:49:44.7129447Z       "stages": {
2026-06-10T22:49:44.7129538Z         "doc": {
2026-06-10T22:49:44.7129738Z           "complete": false,
2026-06-10T22:49:44.7129833Z           "evidence": []
2026-06-10T22:49:44.7129910Z         },
2026-06-10T22:49:44.7129991Z         "impl": {
2026-06-10T22:49:44.7130081Z           "complete": true,
2026-06-10T22:49:44.7130167Z           "evidence": [
2026-06-10T22:49:44.7130245Z             {
2026-06-10T22:49:44.7130559Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-10T22:49:44.7130658Z               "line": 14
2026-06-10T22:49:44.7130739Z             },
2026-06-10T22:49:44.7130826Z             {
2026-06-10T22:49:44.7130940Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-10T22:49:44.7131030Z               "line": 11
2026-06-10T22:49:44.7131116Z             },
2026-06-10T22:49:44.7131199Z             {
2026-06-10T22:49:44.7131316Z               "path": "crates/spt/src/api/mod.rs",
2026-06-10T22:49:44.7131402Z               "line": 247
2026-06-10T22:49:44.7131484Z             },
2026-06-10T22:49:44.7131570Z             {
2026-06-10T22:49:44.7131693Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7131783Z               "line": 1294
2026-06-10T22:49:44.7131864Z             },
2026-06-10T22:49:44.7131948Z             {
2026-06-10T22:49:44.7132042Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7132133Z               "line": 3145
2026-06-10T22:49:44.7132220Z             },
2026-06-10T22:49:44.7132305Z             {
2026-06-10T22:49:44.7132405Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7132492Z               "line": 3166
2026-06-10T22:49:44.7132577Z             }
2026-06-10T22:49:44.7132658Z           ]
2026-06-10T22:49:44.7132744Z         },
2026-06-10T22:49:44.7132821Z         "int": {
2026-06-10T22:49:44.7132915Z           "complete": true,
2026-06-10T22:49:44.7133015Z           "evidence": [
2026-06-10T22:49:44.7133098Z             {
2026-06-10T22:49:44.7133211Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-10T22:49:44.7133301Z               "line": 49
2026-06-10T22:49:44.7133397Z             },
2026-06-10T22:49:44.7133483Z             {
2026-06-10T22:49:44.7133592Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-10T22:49:44.7133683Z               "line": 439
2026-06-10T22:49:44.7133765Z             }
2026-06-10T22:49:44.7133850Z           ]
2026-06-10T22:49:44.7133936Z         },
2026-06-10T22:49:44.7134022Z         "unit": {
2026-06-10T22:49:44.7134122Z           "complete": true,
2026-06-10T22:49:44.7134207Z           "evidence": [
2026-06-10T22:49:44.7134293Z             {
2026-06-10T22:49:44.7134400Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-10T22:49:44.7134498Z               "line": 767
2026-06-10T22:49:44.7134578Z             },
2026-06-10T22:49:44.7134664Z             {
2026-06-10T22:49:44.7134768Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7134853Z               "line": 7645
2026-06-10T22:49:44.7134938Z             }
2026-06-10T22:49:44.7135020Z           ]
2026-06-10T22:49:44.7135116Z         }
2026-06-10T22:49:44.7135196Z       }
2026-06-10T22:49:44.7135277Z     },
2026-06-10T22:49:44.7135359Z     {
2026-06-10T22:49:44.7135454Z       "id": "REQ-DAEMON-4",
2026-06-10T22:49:44.7135572Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-10T22:49:44.7135660Z       "requiredStages": [
2026-06-10T22:49:44.7135750Z         "impl",
2026-06-10T22:49:44.7135830Z         "unit",
2026-06-10T22:49:44.7135926Z         "int"
2026-06-10T22:49:44.7136007Z       ],
2026-06-10T22:49:44.7136097Z       "stages": {
2026-06-10T22:49:44.7136183Z         "doc": {
2026-06-10T22:49:44.7136269Z           "complete": false,
2026-06-10T22:49:44.7136365Z           "evidence": []
2026-06-10T22:49:44.7136440Z         },
2026-06-10T22:49:44.7136531Z         "impl": {
2026-06-10T22:49:44.7136618Z           "complete": true,
2026-06-10T22:49:44.7136708Z           "evidence": [
2026-06-10T22:49:44.7136798Z             {
2026-06-10T22:49:44.7136914Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7137079Z               "line": 414
2026-06-10T22:49:44.7137159Z             },
2026-06-10T22:49:44.7137245Z             {
2026-06-10T22:49:44.7137368Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7137452Z               "line": 479
2026-06-10T22:49:44.7137543Z             },
2026-06-10T22:49:44.7137625Z             {
2026-06-10T22:49:44.7137805Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7137897Z               "line": 501
2026-06-10T22:49:44.7137983Z             }
2026-06-10T22:49:44.7138068Z           ]
2026-06-10T22:49:44.7138149Z         },
2026-06-10T22:49:44.7138235Z         "int": {
2026-06-10T22:49:44.7138325Z           "complete": true,
2026-06-10T22:49:44.7138416Z           "evidence": [
2026-06-10T22:49:44.7138497Z             {
2026-06-10T22:49:44.7138622Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-10T22:49:44.7138717Z               "line": 37
2026-06-10T22:49:44.7138802Z             }
2026-06-10T22:49:44.7138894Z           ]
2026-06-10T22:49:44.7139117Z         },
2026-06-10T22:49:44.7139204Z         "unit": {
2026-06-10T22:49:44.7139307Z           "complete": true,
2026-06-10T22:49:44.7139398Z           "evidence": [
2026-06-10T22:49:44.7139490Z             {
2026-06-10T22:49:44.7139599Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-10T22:49:44.7139699Z               "line": 428
2026-06-10T22:49:44.7139781Z             },
2026-06-10T22:49:44.7139862Z             {
2026-06-10T22:49:44.7139974Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7140065Z               "line": 907
2026-06-10T22:49:44.7140151Z             },
2026-06-10T22:49:44.7140233Z             {
2026-06-10T22:49:44.7140355Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7140437Z               "line": 977
2026-06-10T22:49:44.7140523Z             },
2026-06-10T22:49:44.7140604Z             {
2026-06-10T22:49:44.7140722Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7140824Z               "line": 1007
2026-06-10T22:49:44.7140905Z             },
2026-06-10T22:49:44.7140989Z             {
2026-06-10T22:49:44.7141100Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7141190Z               "line": 1040
2026-06-10T22:49:44.7141267Z             }
2026-06-10T22:49:44.7141352Z           ]
2026-06-10T22:49:44.7141430Z         }
2026-06-10T22:49:44.7141505Z       }
2026-06-10T22:49:44.7141582Z     },
2026-06-10T22:49:44.7141662Z     {
2026-06-10T22:49:44.7141763Z       "id": "REQ-DAEMON-5",
2026-06-10T22:49:44.7143128Z       "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); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)",
2026-06-10T22:49:44.7143237Z       "requiredStages": [
2026-06-10T22:49:44.7143323Z         "impl",
2026-06-10T22:49:44.7143404Z         "unit"
2026-06-10T22:49:44.7143485Z       ],
2026-06-10T22:49:44.7143571Z       "stages": {
2026-06-10T22:49:44.7143643Z         "doc": {
2026-06-10T22:49:44.7143743Z           "complete": false,
2026-06-10T22:49:44.7143833Z           "evidence": []
2026-06-10T22:49:44.7143923Z         },
2026-06-10T22:49:44.7144001Z         "impl": {
2026-06-10T22:49:44.7144095Z           "complete": true,
2026-06-10T22:49:44.7144176Z           "evidence": [
2026-06-10T22:49:44.7144268Z             {
2026-06-10T22:49:44.7144395Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.7144477Z               "line": 323
2026-06-10T22:49:44.7144553Z             },
2026-06-10T22:49:44.7144631Z             {
2026-06-10T22:49:44.7144748Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.7144946Z               "line": 724
2026-06-10T22:49:44.7145035Z             },
2026-06-10T22:49:44.7145115Z             {
2026-06-10T22:49:44.7145229Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.7145319Z               "line": 737
2026-06-10T22:49:44.7145389Z             },
2026-06-10T22:49:44.7145475Z             {
2026-06-10T22:49:44.7145671Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.7145770Z               "line": 755
2026-06-10T22:49:44.7145846Z             },
2026-06-10T22:49:44.7145924Z             {
2026-06-10T22:49:44.7146042Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.7146123Z               "line": 796
2026-06-10T22:49:44.7146195Z             }
2026-06-10T22:49:44.7146276Z           ]
2026-06-10T22:49:44.7146357Z         },
2026-06-10T22:49:44.7146443Z         "int": {
2026-06-10T22:49:44.7146534Z           "complete": false,
2026-06-10T22:49:44.7146643Z           "evidence": []
2026-06-10T22:49:44.7146753Z         },
2026-06-10T22:49:44.7146839Z         "unit": {
2026-06-10T22:49:44.7146930Z           "complete": true,
2026-06-10T22:49:44.7147024Z           "evidence": [
2026-06-10T22:49:44.7147110Z             {
2026-06-10T22:49:44.7147221Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.7147315Z               "line": 916
2026-06-10T22:49:44.7147406Z             },
2026-06-10T22:49:44.7147493Z             {
2026-06-10T22:49:44.7147611Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.7147696Z               "line": 940
2026-06-10T22:49:44.7147791Z             },
2026-06-10T22:49:44.7147867Z             {
2026-06-10T22:49:44.7147989Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.7148074Z               "line": 966
2026-06-10T22:49:44.7148161Z             }
2026-06-10T22:49:44.7148243Z           ]
2026-06-10T22:49:44.7148323Z         }
2026-06-10T22:49:44.7148414Z       }
2026-06-10T22:49:44.7148505Z     },
2026-06-10T22:49:44.7148591Z     {
2026-06-10T22:49:44.7148680Z       "id": "REQ-DAEMON-6",
2026-06-10T22:49:44.7150826Z       "title": "Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.",
2026-06-10T22:49:44.7150930Z       "requiredStages": [
2026-06-10T22:49:44.7151012Z         "impl",
2026-06-10T22:49:44.7151098Z         "unit"
2026-06-10T22:49:44.7151192Z       ],
2026-06-10T22:49:44.7151278Z       "stages": {
2026-06-10T22:49:44.7151379Z         "doc": {
2026-06-10T22:49:44.7151479Z           "complete": false,
2026-06-10T22:49:44.7151573Z           "evidence": []
2026-06-10T22:49:44.7151656Z         },
2026-06-10T22:49:44.7151741Z         "impl": {
2026-06-10T22:49:44.7151836Z           "complete": true,
2026-06-10T22:49:44.7151927Z           "evidence": [
2026-06-10T22:49:44.7152009Z             {
2026-06-10T22:49:44.7152142Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-10T22:49:44.7152237Z               "line": 426
2026-06-10T22:49:44.7152319Z             },
2026-06-10T22:49:44.7152404Z             {
2026-06-10T22:49:44.7152517Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-10T22:49:44.7152605Z               "line": 457
2026-06-10T22:49:44.7152690Z             },
2026-06-10T22:49:44.7152770Z             {
2026-06-10T22:49:44.7152888Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-10T22:49:44.7152975Z               "line": 55
2026-06-10T22:49:44.7153059Z             },
2026-06-10T22:49:44.7153254Z             {
2026-06-10T22:49:44.7153365Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-10T22:49:44.7153453Z               "line": 70
2026-06-10T22:49:44.7153535Z             },
2026-06-10T22:49:44.7153617Z             {
2026-06-10T22:49:44.7153717Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7153811Z               "line": 1348
2026-06-10T22:49:44.7153988Z             },
2026-06-10T22:49:44.7154074Z             {
2026-06-10T22:49:44.7154184Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7154266Z               "line": 1374
2026-06-10T22:49:44.7154351Z             }
2026-06-10T22:49:44.7154431Z           ]
2026-06-10T22:49:44.7154518Z         },
2026-06-10T22:49:44.7154604Z         "int": {
2026-06-10T22:49:44.7154694Z           "complete": false,
2026-06-10T22:49:44.7154789Z           "evidence": []
2026-06-10T22:49:44.7154866Z         },
2026-06-10T22:49:44.7154956Z         "unit": {
2026-06-10T22:49:44.7155056Z           "complete": true,
2026-06-10T22:49:44.7155143Z           "evidence": [
2026-06-10T22:49:44.7155229Z             {
2026-06-10T22:49:44.7155337Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-10T22:49:44.7155428Z               "line": 288
2026-06-10T22:49:44.7155506Z             },
2026-06-10T22:49:44.7155595Z             {
2026-06-10T22:49:44.7155713Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-10T22:49:44.7155808Z               "line": 299
2026-06-10T22:49:44.7155889Z             },
2026-06-10T22:49:44.7155973Z             {
2026-06-10T22:49:44.7156087Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-10T22:49:44.7156169Z               "line": 325
2026-06-10T22:49:44.7156251Z             },
2026-06-10T22:49:44.7156330Z             {
2026-06-10T22:49:44.7156440Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-10T22:49:44.7156531Z               "line": 351
2026-06-10T22:49:44.7156612Z             }
2026-06-10T22:49:44.7156702Z           ]
2026-06-10T22:49:44.7156785Z         }
2026-06-10T22:49:44.7156870Z       }
2026-06-10T22:49:44.7156955Z     },
2026-06-10T22:49:44.7157041Z     {
2026-06-10T22:49:44.7157142Z       "id": "REQ-DAEMON-7",
2026-06-10T22:49:44.7158469Z       "title": "`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-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).",
2026-06-10T22:49:44.7158564Z       "requiredStages": [
2026-06-10T22:49:44.7158639Z         "impl",
2026-06-10T22:49:44.7158721Z         "unit"
2026-06-10T22:49:44.7158803Z       ],
2026-06-10T22:49:44.7158892Z       "stages": {
2026-06-10T22:49:44.7159032Z         "doc": {
2026-06-10T22:49:44.7159131Z           "complete": false,
2026-06-10T22:49:44.7159221Z           "evidence": []
2026-06-10T22:49:44.7159298Z         },
2026-06-10T22:49:44.7159384Z         "impl": {
2026-06-10T22:49:44.7159474Z           "complete": true,
2026-06-10T22:49:44.7159555Z           "evidence": [
2026-06-10T22:49:44.7159632Z             {
2026-06-10T22:49:44.7159756Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-10T22:49:44.7159870Z               "line": 476
2026-06-10T22:49:44.7159951Z             },
2026-06-10T22:49:44.7160037Z             {
2026-06-10T22:49:44.7160161Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-10T22:49:44.7160247Z               "line": 601
2026-06-10T22:49:44.7160333Z             },
2026-06-10T22:49:44.7160414Z             {
2026-06-10T22:49:44.7160533Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-10T22:49:44.7160625Z               "line": 89
2026-06-10T22:49:44.7160705Z             },
2026-06-10T22:49:44.7160795Z             {
2026-06-10T22:49:44.7161020Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7161109Z               "line": 1295
2026-06-10T22:49:44.7161189Z             }
2026-06-10T22:49:44.7161271Z           ]
2026-06-10T22:49:44.7161353Z         },
2026-06-10T22:49:44.7161433Z         "int": {
2026-06-10T22:49:44.7161542Z           "complete": false,
2026-06-10T22:49:44.7161629Z           "evidence": []
2026-06-10T22:49:44.7161804Z         },
2026-06-10T22:49:44.7161892Z         "unit": {
2026-06-10T22:49:44.7161987Z           "complete": true,
2026-06-10T22:49:44.7162077Z           "evidence": [
2026-06-10T22:49:44.7162158Z             {
2026-06-10T22:49:44.7162273Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-10T22:49:44.7162358Z               "line": 314
2026-06-10T22:49:44.7162439Z             },
2026-06-10T22:49:44.7162521Z             {
2026-06-10T22:49:44.7162621Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7162711Z               "line": 5508
2026-06-10T22:49:44.7162797Z             }
2026-06-10T22:49:44.7162883Z           ]
2026-06-10T22:49:44.7162964Z         }
2026-06-10T22:49:44.7163045Z       }
2026-06-10T22:49:44.7163126Z     },
2026-06-10T22:49:44.7163213Z     {
2026-06-10T22:49:44.7163302Z       "id": "REQ-DAEMON-8",
2026-06-10T22:49:44.7164229Z       "title": "Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.",
2026-06-10T22:49:44.7164324Z       "requiredStages": [
2026-06-10T22:49:44.7164405Z         "impl",
2026-06-10T22:49:44.7164497Z         "unit"
2026-06-10T22:49:44.7164577Z       ],
2026-06-10T22:49:44.7164662Z       "stages": {
2026-06-10T22:49:44.7164749Z         "doc": {
2026-06-10T22:49:44.7164840Z           "complete": false,
2026-06-10T22:49:44.7164930Z           "evidence": []
2026-06-10T22:49:44.7165020Z         },
2026-06-10T22:49:44.7165111Z         "impl": {
2026-06-10T22:49:44.7165197Z           "complete": true,
2026-06-10T22:49:44.7165287Z           "evidence": [
2026-06-10T22:49:44.7165378Z             {
2026-06-10T22:49:44.7165498Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-10T22:49:44.7165593Z               "line": 376
2026-06-10T22:49:44.7165674Z             },
2026-06-10T22:49:44.7165765Z             {
2026-06-10T22:49:44.7165887Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-10T22:49:44.7165979Z               "line": 56
2026-06-10T22:49:44.7166066Z             }
2026-06-10T22:49:44.7166146Z           ]
2026-06-10T22:49:44.7166230Z         },
2026-06-10T22:49:44.7166311Z         "int": {
2026-06-10T22:49:44.7166411Z           "complete": false,
2026-06-10T22:49:44.7166496Z           "evidence": []
2026-06-10T22:49:44.7166585Z         },
2026-06-10T22:49:44.7166677Z         "unit": {
2026-06-10T22:49:44.7166772Z           "complete": true,
2026-06-10T22:49:44.7166871Z           "evidence": [
2026-06-10T22:49:44.7166957Z             {
2026-06-10T22:49:44.7169743Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-10T22:49:44.7169863Z               "line": 288
2026-06-10T22:49:44.7169954Z             },
2026-06-10T22:49:44.7170049Z             {
2026-06-10T22:49:44.7170173Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-10T22:49:44.7170283Z               "line": 325
2026-06-10T22:49:44.7170364Z             }
2026-06-10T22:49:44.7170454Z           ]
2026-06-10T22:49:44.7170531Z         }
2026-06-10T22:49:44.7170616Z       }
2026-06-10T22:49:44.7170702Z     },
2026-06-10T22:49:44.7170783Z     {
2026-06-10T22:49:44.7170880Z       "id": "REQ-DAEMON-9",
2026-06-10T22:49:44.7176843Z       "title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.",
2026-06-10T22:49:44.7177047Z       "requiredStages": [
2026-06-10T22:49:44.7177140Z         "impl",
2026-06-10T22:49:44.7177222Z         "unit"
2026-06-10T22:49:44.7177294Z       ],
2026-06-10T22:49:44.7177376Z       "stages": {
2026-06-10T22:49:44.7177455Z         "doc": {
2026-06-10T22:49:44.7177546Z           "complete": false,
2026-06-10T22:49:44.7177633Z           "evidence": []
2026-06-10T22:49:44.7177723Z         },
2026-06-10T22:49:44.7177813Z         "impl": {
2026-06-10T22:49:44.7177909Z           "complete": true,
2026-06-10T22:49:44.7177999Z           "evidence": [
2026-06-10T22:49:44.7178071Z             {
2026-06-10T22:49:44.7178210Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7178296Z               "line": 262
2026-06-10T22:49:44.7178386Z             },
2026-06-10T22:49:44.7178467Z             {
2026-06-10T22:49:44.7178582Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-10T22:49:44.7178676Z               "line": 306
2026-06-10T22:49:44.7178752Z             },
2026-06-10T22:49:44.7178835Z             {
2026-06-10T22:49:44.7179019Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-10T22:49:44.7179106Z               "line": 190
2026-06-10T22:49:44.7179197Z             },
2026-06-10T22:49:44.7179273Z             {
2026-06-10T22:49:44.7179386Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-10T22:49:44.7179472Z               "line": 275
2026-06-10T22:49:44.7179562Z             },
2026-06-10T22:49:44.7179636Z             {
2026-06-10T22:49:44.7179750Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-10T22:49:44.7179841Z               "line": 312
2026-06-10T22:49:44.7179914Z             },
2026-06-10T22:49:44.7179989Z             {
2026-06-10T22:49:44.7180084Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7180176Z               "line": 1403
2026-06-10T22:49:44.7180257Z             }
2026-06-10T22:49:44.7180332Z           ]
2026-06-10T22:49:44.7180413Z         },
2026-06-10T22:49:44.7180486Z         "int": {
2026-06-10T22:49:44.7180581Z           "complete": false,
2026-06-10T22:49:44.7180670Z           "evidence": []
2026-06-10T22:49:44.7180753Z         },
2026-06-10T22:49:44.7180829Z         "unit": {
2026-06-10T22:49:44.7180919Z           "complete": true,
2026-06-10T22:49:44.7181005Z           "evidence": [
2026-06-10T22:49:44.7181082Z             {
2026-06-10T22:49:44.7181195Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-10T22:49:44.7181286Z               "line": 723
2026-06-10T22:49:44.7181362Z             },
2026-06-10T22:49:44.7181440Z             {
2026-06-10T22:49:44.7181538Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7181624Z               "line": 7510
2026-06-10T22:49:44.7181702Z             }
2026-06-10T22:49:44.7181783Z           ]
2026-06-10T22:49:44.7181857Z         }
2026-06-10T22:49:44.7181949Z       }
2026-06-10T22:49:44.7182026Z     },
2026-06-10T22:49:44.7182108Z     {
2026-06-10T22:49:44.7182200Z       "id": "REQ-DOCS-1",
2026-06-10T22:49:44.7182392Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-10T22:49:44.7182487Z       "requiredStages": [
2026-06-10T22:49:44.7182577Z         "doc",
2026-06-10T22:49:44.7182663Z         "impl"
2026-06-10T22:49:44.7182745Z       ],
2026-06-10T22:49:44.7182821Z       "stages": {
2026-06-10T22:49:44.7182901Z         "doc": {
2026-06-10T22:49:44.7182992Z           "complete": true,
2026-06-10T22:49:44.7183192Z           "evidence": [
2026-06-10T22:49:44.7183268Z             {
2026-06-10T22:49:44.7183374Z               "path": "docs-site/src/index.md",
2026-06-10T22:49:44.7183464Z               "line": 50
2026-06-10T22:49:44.7183545Z             }
2026-06-10T22:49:44.7183631Z           ]
2026-06-10T22:49:44.7183703Z         },
2026-06-10T22:49:44.7183793Z         "impl": {
2026-06-10T22:49:44.7183966Z           "complete": true,
2026-06-10T22:49:44.7184051Z           "evidence": [
2026-06-10T22:49:44.7184136Z             {
2026-06-10T22:49:44.7184266Z               "path": ".github/workflows/docs-publish.yml",
2026-06-10T22:49:44.7184356Z               "line": 12
2026-06-10T22:49:44.7184427Z             },
2026-06-10T22:49:44.7184502Z             {
2026-06-10T22:49:44.7184627Z               "path": "crates/xtask/src/main.rs",
2026-06-10T22:49:44.7184716Z               "line": 14
2026-06-10T22:49:44.7184791Z             }
2026-06-10T22:49:44.7184867Z           ]
2026-06-10T22:49:44.7184944Z         },
2026-06-10T22:49:44.7185035Z         "int": {
2026-06-10T22:49:44.7185130Z           "complete": false,
2026-06-10T22:49:44.7185215Z           "evidence": []
2026-06-10T22:49:44.7185297Z         },
2026-06-10T22:49:44.7185387Z         "unit": {
2026-06-10T22:49:44.7185486Z           "complete": false,
2026-06-10T22:49:44.7185579Z           "evidence": []
2026-06-10T22:49:44.7185659Z         }
2026-06-10T22:49:44.7185749Z       }
2026-06-10T22:49:44.7185830Z     },
2026-06-10T22:49:44.7185913Z     {
2026-06-10T22:49:44.7186003Z       "id": "REQ-DOCS-2",
2026-06-10T22:49:44.7186164Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-10T22:49:44.7186255Z       "requiredStages": [
2026-06-10T22:49:44.7186336Z         "doc",
2026-06-10T22:49:44.7186422Z         "int"
2026-06-10T22:49:44.7186498Z       ],
2026-06-10T22:49:44.7186585Z       "stages": {
2026-06-10T22:49:44.7186665Z         "doc": {
2026-06-10T22:49:44.7186760Z           "complete": true,
2026-06-10T22:49:44.7186852Z           "evidence": [
2026-06-10T22:49:44.7186928Z             {
2026-06-10T22:49:44.7187061Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-10T22:49:44.7187133Z               "line": 3
2026-06-10T22:49:44.7187210Z             },
2026-06-10T22:49:44.7187285Z             {
2026-06-10T22:49:44.7187417Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-10T22:49:44.7187499Z               "line": 3
2026-06-10T22:49:44.7187574Z             }
2026-06-10T22:49:44.7187649Z           ]
2026-06-10T22:49:44.7187724Z         },
2026-06-10T22:49:44.7187811Z         "impl": {
2026-06-10T22:49:44.7187897Z           "complete": false,
2026-06-10T22:49:44.7187988Z           "evidence": []
2026-06-10T22:49:44.7188073Z         },
2026-06-10T22:49:44.7188155Z         "int": {
2026-06-10T22:49:44.7188240Z           "complete": true,
2026-06-10T22:49:44.7188326Z           "evidence": [
2026-06-10T22:49:44.7188411Z             {
2026-06-10T22:49:44.7188527Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-10T22:49:44.7188631Z               "line": 14
2026-06-10T22:49:44.7188712Z             }
2026-06-10T22:49:44.7188784Z           ]
2026-06-10T22:49:44.7188870Z         },
2026-06-10T22:49:44.7189036Z         "unit": {
2026-06-10T22:49:44.7189133Z           "complete": false,
2026-06-10T22:49:44.7189222Z           "evidence": []
2026-06-10T22:49:44.7189298Z         }
2026-06-10T22:49:44.7189380Z       }
2026-06-10T22:49:44.7189462Z     },
2026-06-10T22:49:44.7189546Z     {
2026-06-10T22:49:44.7189637Z       "id": "REQ-DOCS-3",
2026-06-10T22:49:44.7189852Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-10T22:49:44.7189941Z       "requiredStages": [
2026-06-10T22:49:44.7190022Z         "doc"
2026-06-10T22:49:44.7190098Z       ],
2026-06-10T22:49:44.7190174Z       "stages": {
2026-06-10T22:49:44.7190249Z         "doc": {
2026-06-10T22:49:44.7190344Z           "complete": true,
2026-06-10T22:49:44.7190436Z           "evidence": [
2026-06-10T22:49:44.7190625Z             {
2026-06-10T22:49:44.7190736Z               "path": "docs-site/src/index.md",
2026-06-10T22:49:44.7190827Z               "line": 42
2026-06-10T22:49:44.7190897Z             }
2026-06-10T22:49:44.7190973Z           ]
2026-06-10T22:49:44.7191046Z         },
2026-06-10T22:49:44.7191131Z         "impl": {
2026-06-10T22:49:44.7191216Z           "complete": false,
2026-06-10T22:49:44.7191394Z           "evidence": []
2026-06-10T22:49:44.7191484Z         },
2026-06-10T22:49:44.7191555Z         "int": {
2026-06-10T22:49:44.7191651Z           "complete": false,
2026-06-10T22:49:44.7191732Z           "evidence": []
2026-06-10T22:49:44.7191818Z         },
2026-06-10T22:49:44.7191894Z         "unit": {
2026-06-10T22:49:44.7191990Z           "complete": false,
2026-06-10T22:49:44.7192080Z           "evidence": []
2026-06-10T22:49:44.7192161Z         }
2026-06-10T22:49:44.7192242Z       }
2026-06-10T22:49:44.7192320Z     },
2026-06-10T22:49:44.7192409Z     {
2026-06-10T22:49:44.7192494Z       "id": "REQ-DOCS-4",
2026-06-10T22:49:44.7192696Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-10T22:49:44.7192794Z       "requiredStages": [
2026-06-10T22:49:44.7192870Z         "doc",
2026-06-10T22:49:44.7192956Z         "impl",
2026-06-10T22:49:44.7193029Z         "unit"
2026-06-10T22:49:44.7193099Z       ],
2026-06-10T22:49:44.7193184Z       "stages": {
2026-06-10T22:49:44.7193266Z         "doc": {
2026-06-10T22:49:44.7193357Z           "complete": true,
2026-06-10T22:49:44.7193437Z           "evidence": [
2026-06-10T22:49:44.7193513Z             {
2026-06-10T22:49:44.7193615Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-10T22:49:44.7193696Z               "line": 35
2026-06-10T22:49:44.7193771Z             }
2026-06-10T22:49:44.7193853Z           ]
2026-06-10T22:49:44.7193930Z         },
2026-06-10T22:49:44.7194001Z         "impl": {
2026-06-10T22:49:44.7194095Z           "complete": true,
2026-06-10T22:49:44.7194177Z           "evidence": [
2026-06-10T22:49:44.7194264Z             {
2026-06-10T22:49:44.7194377Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-10T22:49:44.7194468Z               "line": 522
2026-06-10T22:49:44.7194545Z             },
2026-06-10T22:49:44.7194621Z             {
2026-06-10T22:49:44.7194725Z               "path": "crates/xtask/src/main.rs",
2026-06-10T22:49:44.7194811Z               "line": 15
2026-06-10T22:49:44.7194894Z             }
2026-06-10T22:49:44.7194977Z           ]
2026-06-10T22:49:44.7195053Z         },
2026-06-10T22:49:44.7195139Z         "int": {
2026-06-10T22:49:44.7195229Z           "complete": false,
2026-06-10T22:49:44.7195318Z           "evidence": []
2026-06-10T22:49:44.7195394Z         },
2026-06-10T22:49:44.7195475Z         "unit": {
2026-06-10T22:49:44.7195567Z           "complete": true,
2026-06-10T22:49:44.7195661Z           "evidence": [
2026-06-10T22:49:44.7195741Z             {
2026-06-10T22:49:44.7195857Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-10T22:49:44.7195952Z               "line": 978
2026-06-10T22:49:44.7196028Z             }
2026-06-10T22:49:44.7196105Z           ]
2026-06-10T22:49:44.7196177Z         }
2026-06-10T22:49:44.7196262Z       }
2026-06-10T22:49:44.7196338Z     },
2026-06-10T22:49:44.7196420Z     {
2026-06-10T22:49:44.7196515Z       "id": "REQ-DOCS-5",
2026-06-10T22:49:44.7196705Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-10T22:49:44.7196802Z       "requiredStages": [
2026-06-10T22:49:44.7196877Z         "impl",
2026-06-10T22:49:44.7196953Z         "int"
2026-06-10T22:49:44.7197029Z       ],
2026-06-10T22:49:44.7197107Z       "stages": {
2026-06-10T22:49:44.7197192Z         "doc": {
2026-06-10T22:49:44.7197283Z           "complete": false,
2026-06-10T22:49:44.7197374Z           "evidence": []
2026-06-10T22:49:44.7197450Z         },
2026-06-10T22:49:44.7197530Z         "impl": {
2026-06-10T22:49:44.7197626Z           "complete": true,
2026-06-10T22:49:44.7197707Z           "evidence": [
2026-06-10T22:49:44.7197873Z             {
2026-06-10T22:49:44.7197991Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-10T22:49:44.7198078Z               "line": 523
2026-06-10T22:49:44.7198162Z             },
2026-06-10T22:49:44.7198238Z             {
2026-06-10T22:49:44.7198347Z               "path": "crates/xtask/src/main.rs",
2026-06-10T22:49:44.7198439Z               "line": 113
2026-06-10T22:49:44.7198613Z             }
2026-06-10T22:49:44.7198696Z           ]
2026-06-10T22:49:44.7198782Z         },
2026-06-10T22:49:44.7198862Z         "int": {
2026-06-10T22:49:44.7199025Z           "complete": true,
2026-06-10T22:49:44.7199134Z           "evidence": [
2026-06-10T22:49:44.7199205Z             {
2026-06-10T22:49:44.7199315Z               "path": ".github/workflows/ci.yml",
2026-06-10T22:49:44.7199402Z               "line": 86
2026-06-10T22:49:44.7199482Z             },
2026-06-10T22:49:44.7199558Z             {
2026-06-10T22:49:44.7199674Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-10T22:49:44.7199778Z               "line": 1015
2026-06-10T22:49:44.7199854Z             }
2026-06-10T22:49:44.7199926Z           ]
2026-06-10T22:49:44.7200003Z         },
2026-06-10T22:49:44.7200074Z         "unit": {
2026-06-10T22:49:44.7200164Z           "complete": false,
2026-06-10T22:49:44.7200246Z           "evidence": []
2026-06-10T22:49:44.7200322Z         }
2026-06-10T22:49:44.7200393Z       }
2026-06-10T22:49:44.7200477Z     },
2026-06-10T22:49:44.7200549Z     {
2026-06-10T22:49:44.7200639Z       "id": "REQ-DOCS-6",
2026-06-10T22:49:44.7200947Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-10T22:49:44.7201039Z       "requiredStages": [
2026-06-10T22:49:44.7201128Z         "impl",
2026-06-10T22:49:44.7201214Z         "unit",
2026-06-10T22:49:44.7201287Z         "int"
2026-06-10T22:49:44.7201362Z       ],
2026-06-10T22:49:44.7201438Z       "stages": {
2026-06-10T22:49:44.7201519Z         "doc": {
2026-06-10T22:49:44.7201616Z           "complete": true,
2026-06-10T22:49:44.7201706Z           "evidence": [
2026-06-10T22:49:44.7201781Z             {
2026-06-10T22:49:44.7201897Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-10T22:49:44.7201973Z               "line": 4
2026-06-10T22:49:44.7202054Z             }
2026-06-10T22:49:44.7202129Z           ]
2026-06-10T22:49:44.7202221Z         },
2026-06-10T22:49:44.7202311Z         "impl": {
2026-06-10T22:49:44.7202393Z           "complete": true,
2026-06-10T22:49:44.7202483Z           "evidence": [
2026-06-10T22:49:44.7202555Z             {
2026-06-10T22:49:44.7202654Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7202735Z               "line": 4022
2026-06-10T22:49:44.7202812Z             }
2026-06-10T22:49:44.7202889Z           ]
2026-06-10T22:49:44.7202964Z         },
2026-06-10T22:49:44.7203041Z         "int": {
2026-06-10T22:49:44.7203122Z           "complete": true,
2026-06-10T22:49:44.7203213Z           "evidence": [
2026-06-10T22:49:44.7203293Z             {
2026-06-10T22:49:44.7203406Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-10T22:49:44.7203497Z               "line": 39
2026-06-10T22:49:44.7203574Z             }
2026-06-10T22:49:44.7203659Z           ]
2026-06-10T22:49:44.7203740Z         },
2026-06-10T22:49:44.7203826Z         "unit": {
2026-06-10T22:49:44.7203927Z           "complete": true,
2026-06-10T22:49:44.7204016Z           "evidence": [
2026-06-10T22:49:44.7204103Z             {
2026-06-10T22:49:44.7204199Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7204294Z               "line": 7672
2026-06-10T22:49:44.7204374Z             }
2026-06-10T22:49:44.7204461Z           ]
2026-06-10T22:49:44.7204542Z         }
2026-06-10T22:49:44.7204627Z       }
2026-06-10T22:49:44.7204713Z     },
2026-06-10T22:49:44.7204795Z     {
2026-06-10T22:49:44.7204889Z       "id": "REQ-EP-1",
2026-06-10T22:49:44.7205018Z       "title": "Day-one endpoint types; open type system",
2026-06-10T22:49:44.7205213Z       "requiredStages": [
2026-06-10T22:49:44.7205294Z         "impl",
2026-06-10T22:49:44.7205386Z         "unit"
2026-06-10T22:49:44.7205477Z       ],
2026-06-10T22:49:44.7205566Z       "stages": {
2026-06-10T22:49:44.7205651Z         "doc": {
2026-06-10T22:49:44.7205742Z           "complete": false,
2026-06-10T22:49:44.7205836Z           "evidence": []
2026-06-10T22:49:44.7206006Z         },
2026-06-10T22:49:44.7206103Z         "impl": {
2026-06-10T22:49:44.7206198Z           "complete": true,
2026-06-10T22:49:44.7206288Z           "evidence": [
2026-06-10T22:49:44.7206369Z             {
2026-06-10T22:49:44.7206489Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-10T22:49:44.7206579Z               "line": 77
2026-06-10T22:49:44.7206660Z             },
2026-06-10T22:49:44.7206751Z             {
2026-06-10T22:49:44.7206865Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-10T22:49:44.7206955Z               "line": 94
2026-06-10T22:49:44.7207038Z             }
2026-06-10T22:49:44.7207128Z           ]
2026-06-10T22:49:44.7207213Z         },
2026-06-10T22:49:44.7207294Z         "int": {
2026-06-10T22:49:44.7207386Z           "complete": false,
2026-06-10T22:49:44.7207476Z           "evidence": []
2026-06-10T22:49:44.7207556Z         },
2026-06-10T22:49:44.7207643Z         "unit": {
2026-06-10T22:49:44.7207738Z           "complete": true,
2026-06-10T22:49:44.7207833Z           "evidence": [
2026-06-10T22:49:44.7207914Z             {
2026-06-10T22:49:44.7208034Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-10T22:49:44.7208128Z               "line": 161
2026-06-10T22:49:44.7208210Z             },
2026-06-10T22:49:44.7208297Z             {
2026-06-10T22:49:44.7208414Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-10T22:49:44.7208509Z               "line": 178
2026-06-10T22:49:44.7208595Z             }
2026-06-10T22:49:44.7208680Z           ]
2026-06-10T22:49:44.7208769Z         }
2026-06-10T22:49:44.7208854Z       }
2026-06-10T22:49:44.7209037Z     },
2026-06-10T22:49:44.7209117Z     {
2026-06-10T22:49:44.7209217Z       "id": "REQ-EP-2",
2026-06-10T22:49:44.7209375Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-10T22:49:44.7209475Z       "requiredStages": [
2026-06-10T22:49:44.7209566Z         "impl",
2026-06-10T22:49:44.7209647Z         "unit"
2026-06-10T22:49:44.7209732Z       ],
2026-06-10T22:49:44.7209827Z       "stages": {
2026-06-10T22:49:44.7209915Z         "doc": {
2026-06-10T22:49:44.7210009Z           "complete": false,
2026-06-10T22:49:44.7210099Z           "evidence": []
2026-06-10T22:49:44.7210186Z         },
2026-06-10T22:49:44.7210271Z         "impl": {
2026-06-10T22:49:44.7210366Z           "complete": true,
2026-06-10T22:49:44.7210452Z           "evidence": [
2026-06-10T22:49:44.7210539Z             {
2026-06-10T22:49:44.7210652Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-10T22:49:44.7210748Z               "line": 114
2026-06-10T22:49:44.7210840Z             },
2026-06-10T22:49:44.7210920Z             {
2026-06-10T22:49:44.7211038Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-10T22:49:44.7211123Z               "line": 131
2026-06-10T22:49:44.7211214Z             },
2026-06-10T22:49:44.7211294Z             {
2026-06-10T22:49:44.7211411Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-10T22:49:44.7211513Z               "line": 138
2026-06-10T22:49:44.7211589Z             }
2026-06-10T22:49:44.7211679Z           ]
2026-06-10T22:49:44.7211760Z         },
2026-06-10T22:49:44.7211851Z         "int": {
2026-06-10T22:49:44.7211937Z           "complete": false,
2026-06-10T22:49:44.7212036Z           "evidence": []
2026-06-10T22:49:44.7212123Z         },
2026-06-10T22:49:44.7212204Z         "unit": {
2026-06-10T22:49:44.7212299Z           "complete": true,
2026-06-10T22:49:44.7212384Z           "evidence": [
2026-06-10T22:49:44.7212471Z             {
2026-06-10T22:49:44.7212585Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-10T22:49:44.7212777Z               "line": 190
2026-06-10T22:49:44.7212867Z             },
2026-06-10T22:49:44.7212948Z             {
2026-06-10T22:49:44.7213067Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-10T22:49:44.7213153Z               "line": 208
2026-06-10T22:49:44.7213243Z             },
2026-06-10T22:49:44.7213324Z             {
2026-06-10T22:49:44.7213538Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-10T22:49:44.7213634Z               "line": 221
2026-06-10T22:49:44.7213716Z             }
2026-06-10T22:49:44.7213807Z           ]
2026-06-10T22:49:44.7213891Z         }
2026-06-10T22:49:44.7213981Z       }
2026-06-10T22:49:44.7214058Z     },
2026-06-10T22:49:44.7214139Z     {
2026-06-10T22:49:44.7214238Z       "id": "REQ-EP-3",
2026-06-10T22:49:44.7214401Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-10T22:49:44.7214497Z       "requiredStages": [
2026-06-10T22:49:44.7214581Z         "impl",
2026-06-10T22:49:44.7214678Z         "unit"
2026-06-10T22:49:44.7214750Z       ],
2026-06-10T22:49:44.7214840Z       "stages": {
2026-06-10T22:49:44.7214925Z         "doc": {
2026-06-10T22:49:44.7215016Z           "complete": false,
2026-06-10T22:49:44.7215102Z           "evidence": []
2026-06-10T22:49:44.7215179Z         },
2026-06-10T22:49:44.7215254Z         "impl": {
2026-06-10T22:49:44.7215346Z           "complete": true,
2026-06-10T22:49:44.7215436Z           "evidence": [
2026-06-10T22:49:44.7215521Z             {
2026-06-10T22:49:44.7215642Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-10T22:49:44.7215732Z               "line": 31
2026-06-10T22:49:44.7215807Z             },
2026-06-10T22:49:44.7215888Z             {
2026-06-10T22:49:44.7216004Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-10T22:49:44.7216093Z               "line": 49
2026-06-10T22:49:44.7216178Z             }
2026-06-10T22:49:44.7216264Z           ]
2026-06-10T22:49:44.7216355Z         },
2026-06-10T22:49:44.7216443Z         "int": {
2026-06-10T22:49:44.7216543Z           "complete": false,
2026-06-10T22:49:44.7216629Z           "evidence": []
2026-06-10T22:49:44.7216721Z         },
2026-06-10T22:49:44.7216805Z         "unit": {
2026-06-10T22:49:44.7216901Z           "complete": true,
2026-06-10T22:49:44.7216987Z           "evidence": [
2026-06-10T22:49:44.7217073Z             {
2026-06-10T22:49:44.7217200Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-10T22:49:44.7217288Z               "line": 156
2026-06-10T22:49:44.7217378Z             },
2026-06-10T22:49:44.7217463Z             {
2026-06-10T22:49:44.7217574Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-10T22:49:44.7217668Z               "line": 164
2026-06-10T22:49:44.7217749Z             },
2026-06-10T22:49:44.7217835Z             {
2026-06-10T22:49:44.7217946Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-10T22:49:44.7218041Z               "line": 177
2026-06-10T22:49:44.7218131Z             },
2026-06-10T22:49:44.7218218Z             {
2026-06-10T22:49:44.7218336Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-10T22:49:44.7218421Z               "line": 200
2026-06-10T22:49:44.7218509Z             },
2026-06-10T22:49:44.7218595Z             {
2026-06-10T22:49:44.7218708Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-10T22:49:44.7218809Z               "line": 216
2026-06-10T22:49:44.7218895Z             },
2026-06-10T22:49:44.7219074Z             {
2026-06-10T22:49:44.7219179Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-10T22:49:44.7219273Z               "line": 233
2026-06-10T22:49:44.7219363Z             }
2026-06-10T22:49:44.7219443Z           ]
2026-06-10T22:49:44.7219530Z         }
2026-06-10T22:49:44.7219611Z       }
2026-06-10T22:49:44.7219696Z     },
2026-06-10T22:49:44.7219782Z     {
2026-06-10T22:49:44.7219883Z       "id": "REQ-EP-4",
2026-06-10T22:49:44.7220030Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-10T22:49:44.7220255Z       "requiredStages": [
2026-06-10T22:49:44.7220392Z         "impl",
2026-06-10T22:49:44.7220479Z         "unit"
2026-06-10T22:49:44.7220564Z       ],
2026-06-10T22:49:44.7220650Z       "stages": {
2026-06-10T22:49:44.7220741Z         "doc": {
2026-06-10T22:49:44.7220832Z           "complete": false,
2026-06-10T22:49:44.7220926Z           "evidence": []
2026-06-10T22:49:44.7221109Z         },
2026-06-10T22:49:44.7221198Z         "impl": {
2026-06-10T22:49:44.7221294Z           "complete": true,
2026-06-10T22:49:44.7221381Z           "evidence": [
2026-06-10T22:49:44.7221466Z             {
2026-06-10T22:49:44.7221589Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-10T22:49:44.7221678Z               "line": 538
2026-06-10T22:49:44.7221765Z             },
2026-06-10T22:49:44.7221844Z             {
2026-06-10T22:49:44.7221962Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-10T22:49:44.7222053Z               "line": 852
2026-06-10T22:49:44.7222145Z             },
2026-06-10T22:49:44.7222249Z             {
2026-06-10T22:49:44.7222363Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-10T22:49:44.7222450Z               "line": 970
2026-06-10T22:49:44.7222530Z             },
2026-06-10T22:49:44.7222620Z             {
2026-06-10T22:49:44.7222726Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-10T22:49:44.7222826Z               "line": 83
2026-06-10T22:49:44.7222911Z             },
2026-06-10T22:49:44.7222993Z             {
2026-06-10T22:49:44.7223107Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-10T22:49:44.7223193Z               "line": 497
2026-06-10T22:49:44.7223283Z             },
2026-06-10T22:49:44.7223361Z             {
2026-06-10T22:49:44.7223470Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-10T22:49:44.7223555Z               "line": 583
2026-06-10T22:49:44.7223637Z             },
2026-06-10T22:49:44.7223723Z             {
2026-06-10T22:49:44.7223832Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-10T22:49:44.7223933Z               "line": 196
2026-06-10T22:49:44.7224014Z             },
2026-06-10T22:49:44.7224103Z             {
2026-06-10T22:49:44.7224223Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-10T22:49:44.7224310Z               "line": 337
2026-06-10T22:49:44.7224395Z             },
2026-06-10T22:49:44.7224475Z             {
2026-06-10T22:49:44.7224603Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-10T22:49:44.7224690Z               "line": 847
2026-06-10T22:49:44.7224780Z             }
2026-06-10T22:49:44.7224870Z           ]
2026-06-10T22:49:44.7224952Z         },
2026-06-10T22:49:44.7225037Z         "int": {
2026-06-10T22:49:44.7225128Z           "complete": false,
2026-06-10T22:49:44.7225223Z           "evidence": []
2026-06-10T22:49:44.7225310Z         },
2026-06-10T22:49:44.7225400Z         "unit": {
2026-06-10T22:49:44.7225499Z           "complete": true,
2026-06-10T22:49:44.7225582Z           "evidence": [
2026-06-10T22:49:44.7225681Z             {
2026-06-10T22:49:44.7225790Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-10T22:49:44.7225882Z               "line": 674
2026-06-10T22:49:44.7225963Z             },
2026-06-10T22:49:44.7226053Z             {
2026-06-10T22:49:44.7226182Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-10T22:49:44.7226268Z               "line": 76
2026-06-10T22:49:44.7226357Z             },
2026-06-10T22:49:44.7226439Z             {
2026-06-10T22:49:44.7226564Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-10T22:49:44.7226639Z               "line": 147
2026-06-10T22:49:44.7226724Z             }
2026-06-10T22:49:44.7226804Z           ]
2026-06-10T22:49:44.7226881Z         }
2026-06-10T22:49:44.7226957Z       }
2026-06-10T22:49:44.7227031Z     },
2026-06-10T22:49:44.7227117Z     {
2026-06-10T22:49:44.7227199Z       "id": "REQ-EP-5",
2026-06-10T22:49:44.7227824Z       "title": "Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope",
2026-06-10T22:49:44.7228018Z       "requiredStages": [
2026-06-10T22:49:44.7228100Z         "impl",
2026-06-10T22:49:44.7228182Z         "unit",
2026-06-10T22:49:44.7228262Z         "int"
2026-06-10T22:49:44.7228347Z       ],
2026-06-10T22:49:44.7228496Z       "stages": {
2026-06-10T22:49:44.7228581Z         "doc": {
2026-06-10T22:49:44.7228676Z           "complete": false,
2026-06-10T22:49:44.7228768Z           "evidence": []
2026-06-10T22:49:44.7228859Z         },
2026-06-10T22:49:44.7229015Z         "impl": {
2026-06-10T22:49:44.7229112Z           "complete": true,
2026-06-10T22:49:44.7229211Z           "evidence": [
2026-06-10T22:49:44.7229292Z             {
2026-06-10T22:49:44.7229427Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7229512Z               "line": 351
2026-06-10T22:49:44.7229615Z             },
2026-06-10T22:49:44.7229706Z             {
2026-06-10T22:49:44.7229824Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-10T22:49:44.7229918Z               "line": 18
2026-06-10T22:49:44.7229998Z             },
2026-06-10T22:49:44.7230085Z             {
2026-06-10T22:49:44.7230195Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-10T22:49:44.7230294Z               "line": 63
2026-06-10T22:49:44.7230381Z             },
2026-06-10T22:49:44.7230466Z             {
2026-06-10T22:49:44.7230585Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-10T22:49:44.7230672Z               "line": 92
2026-06-10T22:49:44.7230758Z             },
2026-06-10T22:49:44.7230843Z             {
2026-06-10T22:49:44.7230962Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-10T22:49:44.7231049Z               "line": 167
2026-06-10T22:49:44.7231134Z             },
2026-06-10T22:49:44.7231219Z             {
2026-06-10T22:49:44.7231335Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-10T22:49:44.7231434Z               "line": 179
2026-06-10T22:49:44.7231520Z             },
2026-06-10T22:49:44.7231601Z             {
2026-06-10T22:49:44.7231721Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7231810Z               "line": 114
2026-06-10T22:49:44.7231902Z             },
2026-06-10T22:49:44.7231989Z             {
2026-06-10T22:49:44.7232120Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-10T22:49:44.7232205Z               "line": 22
2026-06-10T22:49:44.7232291Z             },
2026-06-10T22:49:44.7232372Z             {
2026-06-10T22:49:44.7232499Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-10T22:49:44.7232594Z               "line": 129
2026-06-10T22:49:44.7232671Z             },
2026-06-10T22:49:44.7232766Z             {
2026-06-10T22:49:44.7232875Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-10T22:49:44.7232972Z               "line": 156
2026-06-10T22:49:44.7233067Z             },
2026-06-10T22:49:44.7233152Z             {
2026-06-10T22:49:44.7233268Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-10T22:49:44.7233358Z               "line": 178
2026-06-10T22:49:44.7233443Z             },
2026-06-10T22:49:44.7233524Z             {
2026-06-10T22:49:44.7233639Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-10T22:49:44.7233739Z               "line": 203
2026-06-10T22:49:44.7233824Z             },
2026-06-10T22:49:44.7233912Z             {
2026-06-10T22:49:44.7234020Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-10T22:49:44.7234111Z               "line": 229
2026-06-10T22:49:44.7234192Z             },
2026-06-10T22:49:44.7234278Z             {
2026-06-10T22:49:44.7234397Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-10T22:49:44.7234483Z               "line": 252
2026-06-10T22:49:44.7234570Z             },
2026-06-10T22:49:44.7234654Z             {
2026-06-10T22:49:44.7234885Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.7234969Z               "line": 81
2026-06-10T22:49:44.7235058Z             },
2026-06-10T22:49:44.7235149Z             {
2026-06-10T22:49:44.7235250Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7235345Z               "line": 4327
2026-06-10T22:49:44.7235430Z             },
2026-06-10T22:49:44.7235612Z             {
2026-06-10T22:49:44.7235721Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7235818Z               "line": 4450
2026-06-10T22:49:44.7235908Z             },
2026-06-10T22:49:44.7235988Z             {
2026-06-10T22:49:44.7236094Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7236180Z               "line": 4611
2026-06-10T22:49:44.7236270Z             },
2026-06-10T22:49:44.7236351Z             {
2026-06-10T22:49:44.7236457Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7236551Z               "line": 4993
2026-06-10T22:49:44.7236642Z             }
2026-06-10T22:49:44.7236723Z           ]
2026-06-10T22:49:44.7236809Z         },
2026-06-10T22:49:44.7236899Z         "int": {
2026-06-10T22:49:44.7236990Z           "complete": true,
2026-06-10T22:49:44.7237086Z           "evidence": [
2026-06-10T22:49:44.7237171Z             {
2026-06-10T22:49:44.7237298Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-10T22:49:44.7239700Z               "line": 16
2026-06-10T22:49:44.7239808Z             },
2026-06-10T22:49:44.7239900Z             {
2026-06-10T22:49:44.7240020Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-10T22:49:44.7240119Z               "line": 15
2026-06-10T22:49:44.7240204Z             }
2026-06-10T22:49:44.7240280Z           ]
2026-06-10T22:49:44.7240361Z         },
2026-06-10T22:49:44.7240445Z         "unit": {
2026-06-10T22:49:44.7240545Z           "complete": true,
2026-06-10T22:49:44.7240631Z           "evidence": [
2026-06-10T22:49:44.7240722Z             {
2026-06-10T22:49:44.7240859Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-10T22:49:44.7240951Z               "line": 246
2026-06-10T22:49:44.7241046Z             },
2026-06-10T22:49:44.7241117Z             {
2026-06-10T22:49:44.7241237Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-10T22:49:44.7241314Z               "line": 306
2026-06-10T22:49:44.7241399Z             },
2026-06-10T22:49:44.7241493Z             {
2026-06-10T22:49:44.7241609Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-10T22:49:44.7241698Z               "line": 362
2026-06-10T22:49:44.7241775Z             },
2026-06-10T22:49:44.7241866Z             {
2026-06-10T22:49:44.7241985Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-10T22:49:44.7242075Z               "line": 268
2026-06-10T22:49:44.7242161Z             },
2026-06-10T22:49:44.7242243Z             {
2026-06-10T22:49:44.7242361Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-10T22:49:44.7242452Z               "line": 291
2026-06-10T22:49:44.7242544Z             },
2026-06-10T22:49:44.7242634Z             {
2026-06-10T22:49:44.7242761Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.7242851Z               "line": 491
2026-06-10T22:49:44.7242932Z             },
2026-06-10T22:49:44.7243016Z             {
2026-06-10T22:49:44.7243120Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7243222Z               "line": 5802
2026-06-10T22:49:44.7243308Z             },
2026-06-10T22:49:44.7243388Z             {
2026-06-10T22:49:44.7243498Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7243584Z               "line": 5926
2026-06-10T22:49:44.7243669Z             },
2026-06-10T22:49:44.7243755Z             {
2026-06-10T22:49:44.7243861Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7243951Z               "line": 6513
2026-06-10T22:49:44.7244036Z             },
2026-06-10T22:49:44.7244118Z             {
2026-06-10T22:49:44.7244218Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7244452Z               "line": 6578
2026-06-10T22:49:44.7244537Z             }
2026-06-10T22:49:44.7244623Z           ]
2026-06-10T22:49:44.7244709Z         }
2026-06-10T22:49:44.7244796Z       }
2026-06-10T22:49:44.7244885Z     },
2026-06-10T22:49:44.7244966Z     {
2026-06-10T22:49:44.7245063Z       "id": "REQ-FRONT-1",
2026-06-10T22:49:44.7245334Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-10T22:49:44.7245440Z       "requiredStages": [],
2026-06-10T22:49:44.7245533Z       "stages": {
2026-06-10T22:49:44.7245619Z         "doc": {
2026-06-10T22:49:44.7245718Z           "complete": false,
2026-06-10T22:49:44.7245805Z           "evidence": []
2026-06-10T22:49:44.7245900Z         },
2026-06-10T22:49:44.7245985Z         "impl": {
2026-06-10T22:49:44.7246077Z           "complete": false,
2026-06-10T22:49:44.7246172Z           "evidence": []
2026-06-10T22:49:44.7246253Z         },
2026-06-10T22:49:44.7246339Z         "int": {
2026-06-10T22:49:44.7246439Z           "complete": false,
2026-06-10T22:49:44.7246530Z           "evidence": []
2026-06-10T22:49:44.7246615Z         },
2026-06-10T22:49:44.7246707Z         "unit": {
2026-06-10T22:49:44.7246802Z           "complete": false,
2026-06-10T22:49:44.7246891Z           "evidence": []
2026-06-10T22:49:44.7246983Z         }
2026-06-10T22:49:44.7247064Z       }
2026-06-10T22:49:44.7247159Z     },
2026-06-10T22:49:44.7247240Z     {
2026-06-10T22:49:44.7247370Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-06-10T22:49:44.7250088Z       "title": "Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).",
2026-06-10T22:49:44.7250213Z       "requiredStages": [
2026-06-10T22:49:44.7250298Z         "doc",
2026-06-10T22:49:44.7250393Z         "impl",
2026-06-10T22:49:44.7250480Z         "unit",
2026-06-10T22:49:44.7250571Z         "int"
2026-06-10T22:49:44.7250660Z       ],
2026-06-10T22:49:44.7250750Z       "stages": {
2026-06-10T22:49:44.7250840Z         "doc": {
2026-06-10T22:49:44.7250930Z           "complete": true,
2026-06-10T22:49:44.7251029Z           "evidence": [
2026-06-10T22:49:44.7251114Z             {
2026-06-10T22:49:44.7251230Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-10T22:49:44.7251325Z               "line": 288
2026-06-10T22:49:44.7251414Z             }
2026-06-10T22:49:44.7251501Z           ]
2026-06-10T22:49:44.7251587Z         },
2026-06-10T22:49:44.7251677Z         "impl": {
2026-06-10T22:49:44.7251768Z           "complete": true,
2026-06-10T22:49:44.7251859Z           "evidence": [
2026-06-10T22:49:44.7251950Z             {
2026-06-10T22:49:44.7252078Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-10T22:49:44.7252169Z               "line": 108
2026-06-10T22:49:44.7252249Z             },
2026-06-10T22:49:44.7252340Z             {
2026-06-10T22:49:44.7252446Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-10T22:49:44.7252546Z               "line": 594
2026-06-10T22:49:44.7252631Z             },
2026-06-10T22:49:44.7252707Z             {
2026-06-10T22:49:44.7252823Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-10T22:49:44.7252902Z               "line": 798
2026-06-10T22:49:44.7252988Z             },
2026-06-10T22:49:44.7253066Z             {
2026-06-10T22:49:44.7253307Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7253402Z               "line": 23
2026-06-10T22:49:44.7253474Z             },
2026-06-10T22:49:44.7253562Z             {
2026-06-10T22:49:44.7253676Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7253767Z               "line": 113
2026-06-10T22:49:44.7253850Z             },
2026-06-10T22:49:44.7254039Z             {
2026-06-10T22:49:44.7254163Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7254248Z               "line": 158
2026-06-10T22:49:44.7254329Z             },
2026-06-10T22:49:44.7254417Z             {
2026-06-10T22:49:44.7254526Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7254615Z               "line": 215
2026-06-10T22:49:44.7254702Z             },
2026-06-10T22:49:44.7254778Z             {
2026-06-10T22:49:44.7254892Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7254998Z               "line": 247
2026-06-10T22:49:44.7255075Z             },
2026-06-10T22:49:44.7255165Z             {
2026-06-10T22:49:44.7255283Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7255375Z               "line": 261
2026-06-10T22:49:44.7255464Z             },
2026-06-10T22:49:44.7255545Z             {
2026-06-10T22:49:44.7255666Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7255746Z               "line": 306
2026-06-10T22:49:44.7255832Z             },
2026-06-10T22:49:44.7255908Z             {
2026-06-10T22:49:44.7256024Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7256112Z               "line": 333
2026-06-10T22:49:44.7256189Z             },
2026-06-10T22:49:44.7256270Z             {
2026-06-10T22:49:44.7256380Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7256474Z               "line": 345
2026-06-10T22:49:44.7256550Z             },
2026-06-10T22:49:44.7256642Z             {
2026-06-10T22:49:44.7256756Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7256837Z               "line": 359
2026-06-10T22:49:44.7256923Z             },
2026-06-10T22:49:44.7256995Z             {
2026-06-10T22:49:44.7257113Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7257204Z               "line": 386
2026-06-10T22:49:44.7257296Z             },
2026-06-10T22:49:44.7257380Z             {
2026-06-10T22:49:44.7257495Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7257587Z               "line": 606
2026-06-10T22:49:44.7257667Z             },
2026-06-10T22:49:44.7257762Z             {
2026-06-10T22:49:44.7257877Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7257967Z               "line": 857
2026-06-10T22:49:44.7258057Z             },
2026-06-10T22:49:44.7258134Z             {
2026-06-10T22:49:44.7258259Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-10T22:49:44.7258353Z               "line": 111
2026-06-10T22:49:44.7258438Z             },
2026-06-10T22:49:44.7258523Z             {
2026-06-10T22:49:44.7258642Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-10T22:49:44.7258731Z               "line": 296
2026-06-10T22:49:44.7258812Z             },
2026-06-10T22:49:44.7258898Z             {
2026-06-10T22:49:44.7259122Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-10T22:49:44.7259213Z               "line": 368
2026-06-10T22:49:44.7259304Z             },
2026-06-10T22:49:44.7259384Z             {
2026-06-10T22:49:44.7259500Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-10T22:49:44.7259585Z               "line": 380
2026-06-10T22:49:44.7259670Z             },
2026-06-10T22:49:44.7259751Z             {
2026-06-10T22:49:44.7259871Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-10T22:49:44.7259962Z               "line": 716
2026-06-10T22:49:44.7260047Z             },
2026-06-10T22:49:44.7260238Z             {
2026-06-10T22:49:44.7260348Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-10T22:49:44.7260444Z               "line": 181
2026-06-10T22:49:44.7260525Z             },
2026-06-10T22:49:44.7260610Z             {
2026-06-10T22:49:44.7260725Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-10T22:49:44.7260816Z               "line": 223
2026-06-10T22:49:44.7261001Z             },
2026-06-10T22:49:44.7261088Z             {
2026-06-10T22:49:44.7261206Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-10T22:49:44.7261295Z               "line": 234
2026-06-10T22:49:44.7261381Z             },
2026-06-10T22:49:44.7261467Z             {
2026-06-10T22:49:44.7261580Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-10T22:49:44.7261674Z               "line": 260
2026-06-10T22:49:44.7261765Z             },
2026-06-10T22:49:44.7261847Z             {
2026-06-10T22:49:44.7261974Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-10T22:49:44.7262066Z               "line": 56
2026-06-10T22:49:44.7262152Z             },
2026-06-10T22:49:44.7262232Z             {
2026-06-10T22:49:44.7262352Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-10T22:49:44.7262438Z               "line": 188
2026-06-10T22:49:44.7262529Z             },
2026-06-10T22:49:44.7262613Z             {
2026-06-10T22:49:44.7262739Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-10T22:49:44.7262833Z               "line": 63
2026-06-10T22:49:44.7262914Z             },
2026-06-10T22:49:44.7263001Z             {
2026-06-10T22:49:44.7263115Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7263205Z               "line": 258
2026-06-10T22:49:44.7263296Z             },
2026-06-10T22:49:44.7263378Z             {
2026-06-10T22:49:44.7263491Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.7263577Z               "line": 413
2026-06-10T22:49:44.7263664Z             },
2026-06-10T22:49:44.7263754Z             {
2026-06-10T22:49:44.7263862Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7263953Z               "line": 1334
2026-06-10T22:49:44.7264034Z             }
2026-06-10T22:49:44.7264118Z           ]
2026-06-10T22:49:44.7264203Z         },
2026-06-10T22:49:44.7264289Z         "int": {
2026-06-10T22:49:44.7264385Z           "complete": true,
2026-06-10T22:49:44.7264484Z           "evidence": [
2026-06-10T22:49:44.7264570Z             {
2026-06-10T22:49:44.7264690Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-10T22:49:44.7264781Z               "line": 57
2026-06-10T22:49:44.7264866Z             },
2026-06-10T22:49:44.7264953Z             {
2026-06-10T22:49:44.7265067Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-10T22:49:44.7265161Z               "line": 41
2026-06-10T22:49:44.7265248Z             }
2026-06-10T22:49:44.7265329Z           ]
2026-06-10T22:49:44.7265424Z         },
2026-06-10T22:49:44.7265510Z         "unit": {
2026-06-10T22:49:44.7265616Z           "complete": true,
2026-06-10T22:49:44.7265700Z           "evidence": [
2026-06-10T22:49:44.7265791Z             {
2026-06-10T22:49:44.7265916Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-10T22:49:44.7266001Z               "line": 532
2026-06-10T22:49:44.7266091Z             },
2026-06-10T22:49:44.7266173Z             {
2026-06-10T22:49:44.7266302Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-10T22:49:44.7266387Z               "line": 754
2026-06-10T22:49:44.7266478Z             },
2026-06-10T22:49:44.7266560Z             {
2026-06-10T22:49:44.7266677Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7266777Z               "line": 915
2026-06-10T22:49:44.7266858Z             },
2026-06-10T22:49:44.7266945Z             {
2026-06-10T22:49:44.7267058Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7267149Z               "line": 949
2026-06-10T22:49:44.7267321Z             },
2026-06-10T22:49:44.7267406Z             {
2026-06-10T22:49:44.7267527Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7267612Z               "line": 991
2026-06-10T22:49:44.7267706Z             },
2026-06-10T22:49:44.7267793Z             {
2026-06-10T22:49:44.7267902Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7268050Z               "line": 1063
2026-06-10T22:49:44.7268132Z             },
2026-06-10T22:49:44.7268208Z             {
2026-06-10T22:49:44.7268322Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7268413Z               "line": 1076
2026-06-10T22:49:44.7268500Z             },
2026-06-10T22:49:44.7268574Z             {
2026-06-10T22:49:44.7268689Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7268776Z               "line": 1099
2026-06-10T22:49:44.7268857Z             },
2026-06-10T22:49:44.7269017Z             {
2026-06-10T22:49:44.7269146Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7269234Z               "line": 1125
2026-06-10T22:49:44.7269310Z             },
2026-06-10T22:49:44.7269392Z             {
2026-06-10T22:49:44.7269502Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7269597Z               "line": 1139
2026-06-10T22:49:44.7269672Z             },
2026-06-10T22:49:44.7269764Z             {
2026-06-10T22:49:44.7269883Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7269959Z               "line": 1163
2026-06-10T22:49:44.7270045Z             },
2026-06-10T22:49:44.7270126Z             {
2026-06-10T22:49:44.7270240Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7270331Z               "line": 1275
2026-06-10T22:49:44.7270417Z             },
2026-06-10T22:49:44.7270503Z             {
2026-06-10T22:49:44.7270617Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7270709Z               "line": 1322
2026-06-10T22:49:44.7270793Z             },
2026-06-10T22:49:44.7270884Z             {
2026-06-10T22:49:44.7270999Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7271094Z               "line": 1377
2026-06-10T22:49:44.7271189Z             },
2026-06-10T22:49:44.7271270Z             {
2026-06-10T22:49:44.7271400Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7271504Z               "line": 1423
2026-06-10T22:49:44.7271590Z             },
2026-06-10T22:49:44.7271677Z             {
2026-06-10T22:49:44.7271794Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7271888Z               "line": 1468
2026-06-10T22:49:44.7271970Z             },
2026-06-10T22:49:44.7272060Z             {
2026-06-10T22:49:44.7272173Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7272268Z               "line": 1512
2026-06-10T22:49:44.7272360Z             },
2026-06-10T22:49:44.7272440Z             {
2026-06-10T22:49:44.7272568Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7272655Z               "line": 1554
2026-06-10T22:49:44.7272741Z             },
2026-06-10T22:49:44.7272826Z             {
2026-06-10T22:49:44.7272937Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-10T22:49:44.7273032Z               "line": 1029
2026-06-10T22:49:44.7273136Z             },
2026-06-10T22:49:44.7273241Z             {
2026-06-10T22:49:44.7273360Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-10T22:49:44.7273456Z               "line": 217
2026-06-10T22:49:44.7273537Z             },
2026-06-10T22:49:44.7273623Z             {
2026-06-10T22:49:44.7273746Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-10T22:49:44.7273832Z               "line": 233
2026-06-10T22:49:44.7273924Z             },
2026-06-10T22:49:44.7274013Z             {
2026-06-10T22:49:44.7274132Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-10T22:49:44.7274328Z               "line": 254
2026-06-10T22:49:44.7274413Z             },
2026-06-10T22:49:44.7274503Z             {
2026-06-10T22:49:44.7274613Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-10T22:49:44.7274707Z               "line": 265
2026-06-10T22:49:44.7274787Z             },
2026-06-10T22:49:44.7274873Z             {
2026-06-10T22:49:44.7275077Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-10T22:49:44.7275179Z               "line": 278
2026-06-10T22:49:44.7275265Z             },
2026-06-10T22:49:44.7275345Z             {
2026-06-10T22:49:44.7275459Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-10T22:49:44.7275546Z               "line": 289
2026-06-10T22:49:44.7275627Z             },
2026-06-10T22:49:44.7275707Z             {
2026-06-10T22:49:44.7275827Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-10T22:49:44.7275918Z               "line": 301
2026-06-10T22:49:44.7275999Z             },
2026-06-10T22:49:44.7276089Z             {
2026-06-10T22:49:44.7276199Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-10T22:49:44.7276290Z               "line": 312
2026-06-10T22:49:44.7276380Z             },
2026-06-10T22:49:44.7276462Z             {
2026-06-10T22:49:44.7276580Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-10T22:49:44.7276670Z               "line": 323
2026-06-10T22:49:44.7276758Z             },
2026-06-10T22:49:44.7276839Z             {
2026-06-10T22:49:44.7276952Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-10T22:49:44.7277048Z               "line": 332
2026-06-10T22:49:44.7277130Z             },
2026-06-10T22:49:44.7277219Z             {
2026-06-10T22:49:44.7277332Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-10T22:49:44.7277423Z               "line": 342
2026-06-10T22:49:44.7277500Z             },
2026-06-10T22:49:44.7277585Z             {
2026-06-10T22:49:44.7277709Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-10T22:49:44.7277801Z               "line": 358
2026-06-10T22:49:44.7277891Z             },
2026-06-10T22:49:44.7277971Z             {
2026-06-10T22:49:44.7278087Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7278177Z               "line": 708
2026-06-10T22:49:44.7278262Z             },
2026-06-10T22:49:44.7278343Z             {
2026-06-10T22:49:44.7278468Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7278563Z               "line": 744
2026-06-10T22:49:44.7278644Z             },
2026-06-10T22:49:44.7278731Z             {
2026-06-10T22:49:44.7278839Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.7278930Z               "line": 934
2026-06-10T22:49:44.7279111Z             },
2026-06-10T22:49:44.7279182Z             {
2026-06-10T22:49:44.7279302Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-10T22:49:44.7279384Z               "line": 142
2026-06-10T22:49:44.7279473Z             },
2026-06-10T22:49:44.7279563Z             {
2026-06-10T22:49:44.7279677Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-10T22:49:44.7279767Z               "line": 221
2026-06-10T22:49:44.7279852Z             },
2026-06-10T22:49:44.7279937Z             {
2026-06-10T22:49:44.7280048Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-10T22:49:44.7280147Z               "line": 290
2026-06-10T22:49:44.7280232Z             },
2026-06-10T22:49:44.7280324Z             {
2026-06-10T22:49:44.7280443Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-10T22:49:44.7280528Z               "line": 17
2026-06-10T22:49:44.7280615Z             },
2026-06-10T22:49:44.7280686Z             {
2026-06-10T22:49:44.7280805Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-10T22:49:44.7280896Z               "line": 104
2026-06-10T22:49:44.7280978Z             }
2026-06-10T22:49:44.7281053Z           ]
2026-06-10T22:49:44.7281129Z         }
2026-06-10T22:49:44.7281311Z       }
2026-06-10T22:49:44.7281392Z     },
2026-06-10T22:49:44.7281477Z     {
2026-06-10T22:49:44.7281593Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-10T22:49:44.7281764Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-10T22:49:44.7281860Z       "requiredStages": [
2026-06-10T22:49:44.7281937Z         "impl",
2026-06-10T22:49:44.7282025Z         "unit"
2026-06-10T22:49:44.7282198Z       ],
2026-06-10T22:49:44.7282293Z       "stages": {
2026-06-10T22:49:44.7282378Z         "doc": {
2026-06-10T22:49:44.7282468Z           "complete": false,
2026-06-10T22:49:44.7282559Z           "evidence": []
2026-06-10T22:49:44.7282643Z         },
2026-06-10T22:49:44.7282738Z         "impl": {
2026-06-10T22:49:44.7282828Z           "complete": true,
2026-06-10T22:49:44.7282920Z           "evidence": [
2026-06-10T22:49:44.7282991Z             {
2026-06-10T22:49:44.7283109Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.7283201Z               "line": 149
2026-06-10T22:49:44.7283296Z             },
2026-06-10T22:49:44.7283381Z             {
2026-06-10T22:49:44.7283492Z               "path": "crates/spt/src/api/worker.rs",
2026-06-10T22:49:44.7283582Z               "line": 18
2026-06-10T22:49:44.7283658Z             },
2026-06-10T22:49:44.7283734Z             {
2026-06-10T22:49:44.7283845Z               "path": "crates/spt/src/api/worker.rs",
2026-06-10T22:49:44.7283939Z               "line": 98
2026-06-10T22:49:44.7284025Z             }
2026-06-10T22:49:44.7284097Z           ]
2026-06-10T22:49:44.7284174Z         },
2026-06-10T22:49:44.7284264Z         "int": {
2026-06-10T22:49:44.7284354Z           "complete": false,
2026-06-10T22:49:44.7284451Z           "evidence": []
2026-06-10T22:49:44.7284522Z         },
2026-06-10T22:49:44.7284611Z         "unit": {
2026-06-10T22:49:44.7284702Z           "complete": true,
2026-06-10T22:49:44.7284790Z           "evidence": [
2026-06-10T22:49:44.7284870Z             {
2026-06-10T22:49:44.7284987Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.7285087Z               "line": 565
2026-06-10T22:49:44.7285168Z             },
2026-06-10T22:49:44.7285257Z             {
2026-06-10T22:49:44.7285361Z               "path": "crates/spt/src/api/worker.rs",
2026-06-10T22:49:44.7285462Z               "line": 159
2026-06-10T22:49:44.7285548Z             },
2026-06-10T22:49:44.7285633Z             {
2026-06-10T22:49:44.7285749Z               "path": "crates/spt/src/api/worker.rs",
2026-06-10T22:49:44.7285839Z               "line": 231
2026-06-10T22:49:44.7285924Z             }
2026-06-10T22:49:44.7286005Z           ]
2026-06-10T22:49:44.7286092Z         }
2026-06-10T22:49:44.7286182Z       }
2026-06-10T22:49:44.7286263Z     },
2026-06-10T22:49:44.7286354Z     {
2026-06-10T22:49:44.7286468Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-10T22:49:44.7286874Z       "title": "Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)",
2026-06-10T22:49:44.7286974Z       "requiredStages": [
2026-06-10T22:49:44.7287065Z         "impl",
2026-06-10T22:49:44.7287154Z         "unit"
2026-06-10T22:49:44.7287236Z       ],
2026-06-10T22:49:44.7287328Z       "stages": {
2026-06-10T22:49:44.7287408Z         "doc": {
2026-06-10T22:49:44.7287502Z           "complete": true,
2026-06-10T22:49:44.7287599Z           "evidence": [
2026-06-10T22:49:44.7287690Z             {
2026-06-10T22:49:44.7287802Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-10T22:49:44.7287887Z               "line": 220
2026-06-10T22:49:44.7287969Z             }
2026-06-10T22:49:44.7288051Z           ]
2026-06-10T22:49:44.7288136Z         },
2026-06-10T22:49:44.7288221Z         "impl": {
2026-06-10T22:49:44.7288327Z           "complete": true,
2026-06-10T22:49:44.7288418Z           "evidence": [
2026-06-10T22:49:44.7288502Z             {
2026-06-10T22:49:44.7288628Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-10T22:49:44.7288794Z               "line": 302
2026-06-10T22:49:44.7288880Z             },
2026-06-10T22:49:44.7289033Z             {
2026-06-10T22:49:44.7289155Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-10T22:49:44.7289248Z               "line": 257
2026-06-10T22:49:44.7289334Z             },
2026-06-10T22:49:44.7289419Z             {
2026-06-10T22:49:44.7289634Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-10T22:49:44.7289728Z               "line": 405
2026-06-10T22:49:44.7289814Z             },
2026-06-10T22:49:44.7289906Z             {
2026-06-10T22:49:44.7290029Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-10T22:49:44.7290119Z               "line": 77
2026-06-10T22:49:44.7290209Z             }
2026-06-10T22:49:44.7290290Z           ]
2026-06-10T22:49:44.7290374Z         },
2026-06-10T22:49:44.7290459Z         "int": {
2026-06-10T22:49:44.7290555Z           "complete": false,
2026-06-10T22:49:44.7290647Z           "evidence": []
2026-06-10T22:49:44.7290735Z         },
2026-06-10T22:49:44.7290826Z         "unit": {
2026-06-10T22:49:44.7290918Z           "complete": true,
2026-06-10T22:49:44.7291013Z           "evidence": [
2026-06-10T22:49:44.7291098Z             {
2026-06-10T22:49:44.7291223Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-10T22:49:44.7291314Z               "line": 478
2026-06-10T22:49:44.7291398Z             },
2026-06-10T22:49:44.7291495Z             {
2026-06-10T22:49:44.7291609Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-10T22:49:44.7291703Z               "line": 516
2026-06-10T22:49:44.7291785Z             },
2026-06-10T22:49:44.7291872Z             {
2026-06-10T22:49:44.7291985Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-10T22:49:44.7292071Z               "line": 166
2026-06-10T22:49:44.7292158Z             }
2026-06-10T22:49:44.7292238Z           ]
2026-06-10T22:49:44.7292328Z         }
2026-06-10T22:49:44.7292405Z       }
2026-06-10T22:49:44.7292492Z     },
2026-06-10T22:49:44.7292585Z     {
2026-06-10T22:49:44.7292706Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-10T22:49:44.7293231Z       "title": "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-0013)",
2026-06-10T22:49:44.7293331Z       "requiredStages": [
2026-06-10T22:49:44.7293417Z         "impl",
2026-06-10T22:49:44.7293504Z         "unit"
2026-06-10T22:49:44.7293584Z       ],
2026-06-10T22:49:44.7293674Z       "stages": {
2026-06-10T22:49:44.7293762Z         "doc": {
2026-06-10T22:49:44.7293852Z           "complete": false,
2026-06-10T22:49:44.7293941Z           "evidence": []
2026-06-10T22:49:44.7294023Z         },
2026-06-10T22:49:44.7294114Z         "impl": {
2026-06-10T22:49:44.7294199Z           "complete": true,
2026-06-10T22:49:44.7294289Z           "evidence": [
2026-06-10T22:49:44.7294371Z             {
2026-06-10T22:49:44.7294499Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-10T22:49:44.7294590Z               "line": 22
2026-06-10T22:49:44.7294677Z             },
2026-06-10T22:49:44.7294762Z             {
2026-06-10T22:49:44.7294876Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-10T22:49:44.7294967Z               "line": 479
2026-06-10T22:49:44.7295049Z             },
2026-06-10T22:49:44.7295143Z             {
2026-06-10T22:49:44.7295258Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-10T22:49:44.7295355Z               "line": 17
2026-06-10T22:49:44.7295434Z             },
2026-06-10T22:49:44.7295514Z             {
2026-06-10T22:49:44.7295633Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-10T22:49:44.7295719Z               "line": 140
2026-06-10T22:49:44.7295807Z             },
2026-06-10T22:49:44.7295888Z             {
2026-06-10T22:49:44.7296017Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-10T22:49:44.7296113Z               "line": 194
2026-06-10T22:49:44.7296299Z             },
2026-06-10T22:49:44.7296380Z             {
2026-06-10T22:49:44.7296494Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-10T22:49:44.7296585Z               "line": 219
2026-06-10T22:49:44.7296657Z             },
2026-06-10T22:49:44.7296747Z             {
2026-06-10T22:49:44.7296860Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-10T22:49:44.7297014Z               "line": 245
2026-06-10T22:49:44.7297100Z             },
2026-06-10T22:49:44.7297180Z             {
2026-06-10T22:49:44.7297301Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-10T22:49:44.7297395Z               "line": 124
2026-06-10T22:49:44.7297467Z             },
2026-06-10T22:49:44.7297544Z             {
2026-06-10T22:49:44.7297658Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-10T22:49:44.7297753Z               "line": 224
2026-06-10T22:49:44.7297829Z             }
2026-06-10T22:49:44.7297921Z           ]
2026-06-10T22:49:44.7298015Z         },
2026-06-10T22:49:44.7298092Z         "int": {
2026-06-10T22:49:44.7298183Z           "complete": false,
2026-06-10T22:49:44.7298269Z           "evidence": []
2026-06-10T22:49:44.7298358Z         },
2026-06-10T22:49:44.7298443Z         "unit": {
2026-06-10T22:49:44.7298544Z           "complete": true,
2026-06-10T22:49:44.7298635Z           "evidence": [
2026-06-10T22:49:44.7298711Z             {
2026-06-10T22:49:44.7298834Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-10T22:49:44.7298911Z               "line": 62
2026-06-10T22:49:44.7299091Z             },
2026-06-10T22:49:44.7299174Z             {
2026-06-10T22:49:44.7299292Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-10T22:49:44.7299378Z               "line": 72
2026-06-10T22:49:44.7299454Z             },
2026-06-10T22:49:44.7299531Z             {
2026-06-10T22:49:44.7299650Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-10T22:49:44.7299730Z               "line": 84
2026-06-10T22:49:44.7299818Z             },
2026-06-10T22:49:44.7299898Z             {
2026-06-10T22:49:44.7300022Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-10T22:49:44.7300103Z               "line": 346
2026-06-10T22:49:44.7300189Z             },
2026-06-10T22:49:44.7300269Z             {
2026-06-10T22:49:44.7300389Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-10T22:49:44.7300476Z               "line": 274
2026-06-10T22:49:44.7300556Z             },
2026-06-10T22:49:44.7300635Z             {
2026-06-10T22:49:44.7300745Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-10T22:49:44.7300841Z               "line": 315
2026-06-10T22:49:44.7300920Z             },
2026-06-10T22:49:44.7301000Z             {
2026-06-10T22:49:44.7301105Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-10T22:49:44.7301202Z               "line": 353
2026-06-10T22:49:44.7301281Z             },
2026-06-10T22:49:44.7301363Z             {
2026-06-10T22:49:44.7301488Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-10T22:49:44.7301568Z               "line": 656
2026-06-10T22:49:44.7301648Z             },
2026-06-10T22:49:44.7301726Z             {
2026-06-10T22:49:44.7301840Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-10T22:49:44.7301921Z               "line": 397
2026-06-10T22:49:44.7302002Z             },
2026-06-10T22:49:44.7302084Z             {
2026-06-10T22:49:44.7302198Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-10T22:49:44.7302287Z               "line": 440
2026-06-10T22:49:44.7302360Z             }
2026-06-10T22:49:44.7302455Z           ]
2026-06-10T22:49:44.7302536Z         }
2026-06-10T22:49:44.7302617Z       }
2026-06-10T22:49:44.7302699Z     },
2026-06-10T22:49:44.7302784Z     {
2026-06-10T22:49:44.7302903Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-10T22:49:44.7303109Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-10T22:49:44.7303309Z       "requiredStages": [
2026-06-10T22:49:44.7303391Z         "impl",
2026-06-10T22:49:44.7303470Z         "unit"
2026-06-10T22:49:44.7303555Z       ],
2026-06-10T22:49:44.7303632Z       "stages": {
2026-06-10T22:49:44.7303717Z         "doc": {
2026-06-10T22:49:44.7303810Z           "complete": false,
2026-06-10T22:49:44.7303901Z           "evidence": []
2026-06-10T22:49:44.7303982Z         },
2026-06-10T22:49:44.7304153Z         "impl": {
2026-06-10T22:49:44.7304253Z           "complete": true,
2026-06-10T22:49:44.7304341Z           "evidence": [
2026-06-10T22:49:44.7304422Z             {
2026-06-10T22:49:44.7304535Z               "path": "crates/spt-term/src/reader.rs",
2026-06-10T22:49:44.7304627Z               "line": 169
2026-06-10T22:49:44.7304712Z             }
2026-06-10T22:49:44.7304783Z           ]
2026-06-10T22:49:44.7304873Z         },
2026-06-10T22:49:44.7304956Z         "int": {
2026-06-10T22:49:44.7305050Z           "complete": true,
2026-06-10T22:49:44.7305126Z           "evidence": [
2026-06-10T22:49:44.7305217Z             {
2026-06-10T22:49:44.7305341Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-10T22:49:44.7305432Z               "line": 44
2026-06-10T22:49:44.7305508Z             },
2026-06-10T22:49:44.7305590Z             {
2026-06-10T22:49:44.7307631Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-10T22:49:44.7307736Z               "line": 66
2026-06-10T22:49:44.7307833Z             }
2026-06-10T22:49:44.7307917Z           ]
2026-06-10T22:49:44.7307998Z         },
2026-06-10T22:49:44.7308089Z         "unit": {
2026-06-10T22:49:44.7308181Z           "complete": true,
2026-06-10T22:49:44.7308270Z           "evidence": [
2026-06-10T22:49:44.7308351Z             {
2026-06-10T22:49:44.7308472Z               "path": "crates/spt-term/src/reader.rs",
2026-06-10T22:49:44.7308570Z               "line": 186
2026-06-10T22:49:44.7308647Z             },
2026-06-10T22:49:44.7308729Z             {
2026-06-10T22:49:44.7308829Z               "path": "crates/spt-term/src/reader.rs",
2026-06-10T22:49:44.7308927Z               "line": 238
2026-06-10T22:49:44.7309104Z             },
2026-06-10T22:49:44.7309176Z             {
2026-06-10T22:49:44.7309280Z               "path": "crates/spt-term/src/reader.rs",
2026-06-10T22:49:44.7309366Z               "line": 266
2026-06-10T22:49:44.7309447Z             }
2026-06-10T22:49:44.7309524Z           ]
2026-06-10T22:49:44.7309618Z         }
2026-06-10T22:49:44.7309700Z       }
2026-06-10T22:49:44.7309776Z     },
2026-06-10T22:49:44.7309848Z     {
2026-06-10T22:49:44.7309961Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-10T22:49:44.7310368Z       "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.5)",
2026-06-10T22:49:44.7310458Z       "requiredStages": [
2026-06-10T22:49:44.7310549Z         "impl",
2026-06-10T22:49:44.7310634Z         "unit",
2026-06-10T22:49:44.7310707Z         "int"
2026-06-10T22:49:44.7310806Z       ],
2026-06-10T22:49:44.7310882Z       "stages": {
2026-06-10T22:49:44.7310959Z         "doc": {
2026-06-10T22:49:44.7311050Z           "complete": false,
2026-06-10T22:49:44.7311139Z           "evidence": []
2026-06-10T22:49:44.7311229Z         },
2026-06-10T22:49:44.7311305Z         "impl": {
2026-06-10T22:49:44.7311401Z           "complete": true,
2026-06-10T22:49:44.7311485Z           "evidence": [
2026-06-10T22:49:44.7311574Z             {
2026-06-10T22:49:44.7311699Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7311790Z               "line": 152
2026-06-10T22:49:44.7311865Z             },
2026-06-10T22:49:44.7311937Z             {
2026-06-10T22:49:44.7312057Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7312133Z               "line": 176
2026-06-10T22:49:44.7312213Z             },
2026-06-10T22:49:44.7312286Z             {
2026-06-10T22:49:44.7312400Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-10T22:49:44.7312639Z               "line": 79
2026-06-10T22:49:44.7312715Z             },
2026-06-10T22:49:44.7312796Z             {
2026-06-10T22:49:44.7312905Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-10T22:49:44.7312997Z               "line": 51
2026-06-10T22:49:44.7313072Z             },
2026-06-10T22:49:44.7313148Z             {
2026-06-10T22:49:44.7313358Z               "path": "crates/spt-store/src/info.rs",
2026-06-10T22:49:44.7313454Z               "line": 154
2026-06-10T22:49:44.7313545Z             },
2026-06-10T22:49:44.7313617Z             {
2026-06-10T22:49:44.7313734Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-10T22:49:44.7313821Z               "line": 27
2026-06-10T22:49:44.7313903Z             },
2026-06-10T22:49:44.7313984Z             {
2026-06-10T22:49:44.7314096Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-10T22:49:44.7314187Z               "line": 79
2026-06-10T22:49:44.7314263Z             },
2026-06-10T22:49:44.7314347Z             {
2026-06-10T22:49:44.7314461Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-10T22:49:44.7314552Z               "line": 102
2026-06-10T22:49:44.7314638Z             },
2026-06-10T22:49:44.7314714Z             {
2026-06-10T22:49:44.7314833Z               "path": "crates/spt-store/src/registry.rs",
2026-06-10T22:49:44.7314920Z               "line": 116
2026-06-10T22:49:44.7314996Z             }
2026-06-10T22:49:44.7315090Z           ]
2026-06-10T22:49:44.7315172Z         },
2026-06-10T22:49:44.7315263Z         "int": {
2026-06-10T22:49:44.7315358Z           "complete": true,
2026-06-10T22:49:44.7315448Z           "evidence": [
2026-06-10T22:49:44.7315530Z             {
2026-06-10T22:49:44.7315654Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-10T22:49:44.7315739Z               "line": 38
2026-06-10T22:49:44.7315826Z             }
2026-06-10T22:49:44.7315916Z           ]
2026-06-10T22:49:44.7315992Z         },
2026-06-10T22:49:44.7316078Z         "unit": {
2026-06-10T22:49:44.7316174Z           "complete": true,
2026-06-10T22:49:44.7316258Z           "evidence": [
2026-06-10T22:49:44.7316330Z             {
2026-06-10T22:49:44.7316446Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7316541Z               "line": 628
2026-06-10T22:49:44.7316616Z             },
2026-06-10T22:49:44.7316691Z             {
2026-06-10T22:49:44.7316806Z               "path": "crates/spt-store/src/info.rs",
2026-06-10T22:49:44.7316895Z               "line": 351
2026-06-10T22:49:44.7316966Z             },
2026-06-10T22:49:44.7317051Z             {
2026-06-10T22:49:44.7317167Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-10T22:49:44.7317252Z               "line": 124
2026-06-10T22:49:44.7317338Z             },
2026-06-10T22:49:44.7317409Z             {
2026-06-10T22:49:44.7317524Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-10T22:49:44.7317599Z               "line": 143
2026-06-10T22:49:44.7317676Z             },
2026-06-10T22:49:44.7317763Z             {
2026-06-10T22:49:44.7317877Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-10T22:49:44.7317962Z               "line": 160
2026-06-10T22:49:44.7318035Z             },
2026-06-10T22:49:44.7318120Z             {
2026-06-10T22:49:44.7318234Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-10T22:49:44.7318324Z               "line": 187
2026-06-10T22:49:44.7318412Z             },
2026-06-10T22:49:44.7318487Z             {
2026-06-10T22:49:44.7318601Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-10T22:49:44.7318679Z               "line": 206
2026-06-10T22:49:44.7318769Z             },
2026-06-10T22:49:44.7318854Z             {
2026-06-10T22:49:44.7319027Z               "path": "crates/spt-store/src/registry.rs",
2026-06-10T22:49:44.7319116Z               "line": 229
2026-06-10T22:49:44.7319197Z             }
2026-06-10T22:49:44.7319284Z           ]
2026-06-10T22:49:44.7319356Z         }
2026-06-10T22:49:44.7319445Z       }
2026-06-10T22:49:44.7319640Z     },
2026-06-10T22:49:44.7319712Z     {
2026-06-10T22:49:44.7319826Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-10T22:49:44.7320670Z       "title": "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 call cannot stall another agent's tick (7.4)",
2026-06-10T22:49:44.7320775Z       "requiredStages": [
2026-06-10T22:49:44.7320865Z         "impl",
2026-06-10T22:49:44.7320938Z         "unit"
2026-06-10T22:49:44.7321023Z       ],
2026-06-10T22:49:44.7321109Z       "stages": {
2026-06-10T22:49:44.7321194Z         "doc": {
2026-06-10T22:49:44.7321286Z           "complete": false,
2026-06-10T22:49:44.7321385Z           "evidence": []
2026-06-10T22:49:44.7321456Z         },
2026-06-10T22:49:44.7321543Z         "impl": {
2026-06-10T22:49:44.7321629Z           "complete": true,
2026-06-10T22:49:44.7321714Z           "evidence": [
2026-06-10T22:49:44.7321808Z             {
2026-06-10T22:49:44.7321928Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-10T22:49:44.7322021Z               "line": 327
2026-06-10T22:49:44.7322106Z             },
2026-06-10T22:49:44.7322182Z             {
2026-06-10T22:49:44.7322303Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-10T22:49:44.7322388Z               "line": 530
2026-06-10T22:49:44.7322478Z             }
2026-06-10T22:49:44.7322550Z           ]
2026-06-10T22:49:44.7322632Z         },
2026-06-10T22:49:44.7322712Z         "int": {
2026-06-10T22:49:44.7322797Z           "complete": false,
2026-06-10T22:49:44.7322889Z           "evidence": []
2026-06-10T22:49:44.7322961Z         },
2026-06-10T22:49:44.7323050Z         "unit": {
2026-06-10T22:49:44.7323137Z           "complete": true,
2026-06-10T22:49:44.7323228Z           "evidence": [
2026-06-10T22:49:44.7323303Z             {
2026-06-10T22:49:44.7323422Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-10T22:49:44.7323523Z               "line": 161
2026-06-10T22:49:44.7323604Z             }
2026-06-10T22:49:44.7323690Z           ]
2026-06-10T22:49:44.7323766Z         }
2026-06-10T22:49:44.7323843Z       }
2026-06-10T22:49:44.7323923Z     },
2026-06-10T22:49:44.7324000Z     {
2026-06-10T22:49:44.7324100Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-10T22:49:44.7324276Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-10T22:49:44.7324371Z       "requiredStages": [
2026-06-10T22:49:44.7324454Z         "impl",
2026-06-10T22:49:44.7324539Z         "unit"
2026-06-10T22:49:44.7324623Z       ],
2026-06-10T22:49:44.7324699Z       "stages": {
2026-06-10T22:49:44.7324771Z         "doc": {
2026-06-10T22:49:44.7324865Z           "complete": false,
2026-06-10T22:49:44.7324955Z           "evidence": []
2026-06-10T22:49:44.7325026Z         },
2026-06-10T22:49:44.7325117Z         "impl": {
2026-06-10T22:49:44.7325218Z           "complete": true,
2026-06-10T22:49:44.7325307Z           "evidence": [
2026-06-10T22:49:44.7325383Z             {
2026-06-10T22:49:44.7325490Z               "path": "crates/spt-store/src/spool.rs",
2026-06-10T22:49:44.7325584Z               "line": 40
2026-06-10T22:49:44.7325655Z             },
2026-06-10T22:49:44.7325733Z             {
2026-06-10T22:49:44.7325842Z               "path": "crates/spt-store/src/spool.rs",
2026-06-10T22:49:44.7325927Z               "line": 100
2026-06-10T22:49:44.7326008Z             },
2026-06-10T22:49:44.7326080Z             {
2026-06-10T22:49:44.7326189Z               "path": "crates/spt-store/src/spool.rs",
2026-06-10T22:49:44.7326275Z               "line": 215
2026-06-10T22:49:44.7326347Z             },
2026-06-10T22:49:44.7326424Z             {
2026-06-10T22:49:44.7326532Z               "path": "crates/spt-store/src/spool.rs",
2026-06-10T22:49:44.7326628Z               "line": 314
2026-06-10T22:49:44.7326715Z             }
2026-06-10T22:49:44.7326796Z           ]
2026-06-10T22:49:44.7326881Z         },
2026-06-10T22:49:44.7327044Z         "int": {
2026-06-10T22:49:44.7327139Z           "complete": false,
2026-06-10T22:49:44.7327223Z           "evidence": []
2026-06-10T22:49:44.7327309Z         },
2026-06-10T22:49:44.7327395Z         "unit": {
2026-06-10T22:49:44.7327488Z           "complete": true,
2026-06-10T22:49:44.7327573Z           "evidence": [
2026-06-10T22:49:44.7327660Z             {
2026-06-10T22:49:44.7327840Z               "path": "crates/spt-store/src/spool.rs",
2026-06-10T22:49:44.7327936Z               "line": 352
2026-06-10T22:49:44.7328023Z             },
2026-06-10T22:49:44.7328104Z             {
2026-06-10T22:49:44.7328212Z               "path": "crates/spt-store/src/spool.rs",
2026-06-10T22:49:44.7328299Z               "line": 409
2026-06-10T22:49:44.7328384Z             },
2026-06-10T22:49:44.7328470Z             {
2026-06-10T22:49:44.7328575Z               "path": "crates/spt-store/src/spool.rs",
2026-06-10T22:49:44.7328667Z               "line": 458
2026-06-10T22:49:44.7328746Z             },
2026-06-10T22:49:44.7328842Z             {
2026-06-10T22:49:44.7329047Z               "path": "crates/spt-store/src/spool.rs",
2026-06-10T22:49:44.7329142Z               "line": 479
2026-06-10T22:49:44.7329229Z             }
2026-06-10T22:49:44.7329315Z           ]
2026-06-10T22:49:44.7329399Z         }
2026-06-10T22:49:44.7329491Z       }
2026-06-10T22:49:44.7329964Z     },
2026-06-10T22:49:44.7330038Z     {
2026-06-10T22:49:44.7330176Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-10T22:49:44.7330301Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-10T22:49:44.7330395Z       "requiredStages": [
2026-06-10T22:49:44.7330486Z         "impl",
2026-06-10T22:49:44.7330563Z         "unit"
2026-06-10T22:49:44.7330634Z       ],
2026-06-10T22:49:44.7330719Z       "stages": {
2026-06-10T22:49:44.7330805Z         "doc": {
2026-06-10T22:49:44.7330906Z           "complete": false,
2026-06-10T22:49:44.7330992Z           "evidence": []
2026-06-10T22:49:44.7331077Z         },
2026-06-10T22:49:44.7331168Z         "impl": {
2026-06-10T22:49:44.7331259Z           "complete": true,
2026-06-10T22:49:44.7331344Z           "evidence": [
2026-06-10T22:49:44.7331430Z             {
2026-06-10T22:49:44.7331550Z               "path": "crates/spt-store/src/spool.rs",
2026-06-10T22:49:44.7331640Z               "line": 113
2026-06-10T22:49:44.7331726Z             },
2026-06-10T22:49:44.7331808Z             {
2026-06-10T22:49:44.7331926Z               "path": "crates/spt-store/src/spool.rs",
2026-06-10T22:49:44.7332016Z               "line": 208
2026-06-10T22:49:44.7332103Z             }
2026-06-10T22:49:44.7332190Z           ]
2026-06-10T22:49:44.7332269Z         },
2026-06-10T22:49:44.7332349Z         "int": {
2026-06-10T22:49:44.7332440Z           "complete": false,
2026-06-10T22:49:44.7332530Z           "evidence": []
2026-06-10T22:49:44.7332609Z         },
2026-06-10T22:49:44.7332699Z         "unit": {
2026-06-10T22:49:44.7332796Z           "complete": true,
2026-06-10T22:49:44.7332877Z           "evidence": [
2026-06-10T22:49:44.7332958Z             {
2026-06-10T22:49:44.7333058Z               "path": "crates/spt-store/src/spool.rs",
2026-06-10T22:49:44.7333149Z               "line": 373
2026-06-10T22:49:44.7333229Z             },
2026-06-10T22:49:44.7333310Z             {
2026-06-10T22:49:44.7333431Z               "path": "crates/spt-store/src/spool.rs",
2026-06-10T22:49:44.7333516Z               "line": 436
2026-06-10T22:49:44.7333615Z             }
2026-06-10T22:49:44.7333697Z           ]
2026-06-10T22:49:44.7333778Z         }
2026-06-10T22:49:44.7333859Z       }
2026-06-10T22:49:44.7333949Z     },
2026-06-10T22:49:44.7334031Z     {
2026-06-10T22:49:44.7334135Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-10T22:49:44.7335312Z       "title": "Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)",
2026-06-10T22:49:44.7335548Z       "requiredStages": [
2026-06-10T22:49:44.7335639Z         "impl",
2026-06-10T22:49:44.7335735Z         "unit"
2026-06-10T22:49:44.7335820Z       ],
2026-06-10T22:49:44.7335910Z       "stages": {
2026-06-10T22:49:44.7336006Z         "doc": {
2026-06-10T22:49:44.7336102Z           "complete": true,
2026-06-10T22:49:44.7336288Z           "evidence": [
2026-06-10T22:49:44.7336373Z             {
2026-06-10T22:49:44.7336492Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-10T22:49:44.7336583Z               "line": 206
2026-06-10T22:49:44.7336664Z             }
2026-06-10T22:49:44.7336754Z           ]
2026-06-10T22:49:44.7336835Z         },
2026-06-10T22:49:44.7336927Z         "impl": {
2026-06-10T22:49:44.7337017Z           "complete": true,
2026-06-10T22:49:44.7337112Z           "evidence": [
2026-06-10T22:49:44.7337198Z             {
2026-06-10T22:49:44.7337318Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-10T22:49:44.7337421Z               "line": 593
2026-06-10T22:49:44.7337503Z             },
2026-06-10T22:49:44.7337586Z             {
2026-06-10T22:49:44.7337713Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-10T22:49:44.7337807Z               "line": 685
2026-06-10T22:49:44.7337898Z             },
2026-06-10T22:49:44.7337988Z             {
2026-06-10T22:49:44.7338119Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-10T22:49:44.7338220Z               "line": 183
2026-06-10T22:49:44.7338301Z             }
2026-06-10T22:49:44.7338387Z           ]
2026-06-10T22:49:44.7338472Z         },
2026-06-10T22:49:44.7338559Z         "int": {
2026-06-10T22:49:44.7338664Z           "complete": false,
2026-06-10T22:49:44.7338748Z           "evidence": []
2026-06-10T22:49:44.7338830Z         },
2026-06-10T22:49:44.7338931Z         "unit": {
2026-06-10T22:49:44.7339140Z           "complete": true,
2026-06-10T22:49:44.7339227Z           "evidence": [
2026-06-10T22:49:44.7339321Z             {
2026-06-10T22:49:44.7339445Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-10T22:49:44.7339537Z               "line": 734
2026-06-10T22:49:44.7339621Z             },
2026-06-10T22:49:44.7339702Z             {
2026-06-10T22:49:44.7339827Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-10T22:49:44.7339927Z               "line": 44
2026-06-10T22:49:44.7340017Z             },
2026-06-10T22:49:44.7340109Z             {
2026-06-10T22:49:44.7340218Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-10T22:49:44.7340308Z               "line": 57
2026-06-10T22:49:44.7340390Z             },
2026-06-10T22:49:44.7340481Z             {
2026-06-10T22:49:44.7340612Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-10T22:49:44.7340703Z               "line": 54
2026-06-10T22:49:44.7340789Z             }
2026-06-10T22:49:44.7340871Z           ]
2026-06-10T22:49:44.7340960Z         }
2026-06-10T22:49:44.7341046Z       }
2026-06-10T22:49:44.7341138Z     },
2026-06-10T22:49:44.7341219Z     {
2026-06-10T22:49:44.7341342Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-10T22:49:44.7341543Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-10T22:49:44.7341637Z       "requiredStages": [
2026-06-10T22:49:44.7341724Z         "impl",
2026-06-10T22:49:44.7341814Z         "unit"
2026-06-10T22:49:44.7341923Z       ],
2026-06-10T22:49:44.7342004Z       "stages": {
2026-06-10T22:49:44.7342087Z         "doc": {
2026-06-10T22:49:44.7342181Z           "complete": false,
2026-06-10T22:49:44.7342262Z           "evidence": []
2026-06-10T22:49:44.7342339Z         },
2026-06-10T22:49:44.7342421Z         "impl": {
2026-06-10T22:49:44.7342514Z           "complete": true,
2026-06-10T22:49:44.7342600Z           "evidence": [
2026-06-10T22:49:44.7342678Z             {
2026-06-10T22:49:44.7342796Z               "path": "crates/spt-live/src/context.rs",
2026-06-10T22:49:44.7343014Z               "line": 26
2026-06-10T22:49:44.7343104Z             },
2026-06-10T22:49:44.7343184Z             {
2026-06-10T22:49:44.7343298Z               "path": "crates/spt-live/src/context.rs",
2026-06-10T22:49:44.7343389Z               "line": 135
2026-06-10T22:49:44.7343475Z             },
2026-06-10T22:49:44.7343560Z             {
2026-06-10T22:49:44.7343776Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-10T22:49:44.7343870Z               "line": 26
2026-06-10T22:49:44.7343952Z             },
2026-06-10T22:49:44.7344038Z             {
2026-06-10T22:49:44.7344161Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-10T22:49:44.7344247Z               "line": 237
2026-06-10T22:49:44.7344334Z             }
2026-06-10T22:49:44.7344414Z           ]
2026-06-10T22:49:44.7344504Z         },
2026-06-10T22:49:44.7344591Z         "int": {
2026-06-10T22:49:44.7344686Z           "complete": false,
2026-06-10T22:49:44.7344776Z           "evidence": []
2026-06-10T22:49:44.7344871Z         },
2026-06-10T22:49:44.7344959Z         "unit": {
2026-06-10T22:49:44.7345053Z           "complete": true,
2026-06-10T22:49:44.7345153Z           "evidence": [
2026-06-10T22:49:44.7345235Z             {
2026-06-10T22:49:44.7345363Z               "path": "crates/spt-live/src/context.rs",
2026-06-10T22:49:44.7345458Z               "line": 161
2026-06-10T22:49:44.7345541Z             },
2026-06-10T22:49:44.7345631Z             {
2026-06-10T22:49:44.7345748Z               "path": "crates/spt-live/src/context.rs",
2026-06-10T22:49:44.7345838Z               "line": 170
2026-06-10T22:49:44.7345920Z             },
2026-06-10T22:49:44.7346009Z             {
2026-06-10T22:49:44.7346131Z               "path": "crates/spt-live/src/context.rs",
2026-06-10T22:49:44.7346218Z               "line": 179
2026-06-10T22:49:44.7346305Z             },
2026-06-10T22:49:44.7346390Z             {
2026-06-10T22:49:44.7346504Z               "path": "crates/spt-live/src/context.rs",
2026-06-10T22:49:44.7346595Z               "line": 190
2026-06-10T22:49:44.7346690Z             },
2026-06-10T22:49:44.7346775Z             {
2026-06-10T22:49:44.7346886Z               "path": "crates/spt-live/src/context.rs",
2026-06-10T22:49:44.7346981Z               "line": 199
2026-06-10T22:49:44.7347062Z             },
2026-06-10T22:49:44.7347157Z             {
2026-06-10T22:49:44.7347267Z               "path": "crates/spt-live/src/context.rs",
2026-06-10T22:49:44.7347372Z               "line": 216
2026-06-10T22:49:44.7347468Z             },
2026-06-10T22:49:44.7347553Z             {
2026-06-10T22:49:44.7347667Z               "path": "crates/spt-live/src/context.rs",
2026-06-10T22:49:44.7347753Z               "line": 242
2026-06-10T22:49:44.7347840Z             },
2026-06-10T22:49:44.7347925Z             {
2026-06-10T22:49:44.7348040Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-10T22:49:44.7348136Z               "line": 257
2026-06-10T22:49:44.7348217Z             },
2026-06-10T22:49:44.7348306Z             {
2026-06-10T22:49:44.7348424Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-10T22:49:44.7348524Z               "line": 244
2026-06-10T22:49:44.7348618Z             },
2026-06-10T22:49:44.7348698Z             {
2026-06-10T22:49:44.7348828Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-10T22:49:44.7348914Z               "line": 265
2026-06-10T22:49:44.7349080Z             },
2026-06-10T22:49:44.7349172Z             {
2026-06-10T22:49:44.7349299Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-10T22:49:44.7349390Z               "line": 293
2026-06-10T22:49:44.7349476Z             },
2026-06-10T22:49:44.7349562Z             {
2026-06-10T22:49:44.7349676Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-10T22:49:44.7349767Z               "line": 317
2026-06-10T22:49:44.7349853Z             },
2026-06-10T22:49:44.7349938Z             {
2026-06-10T22:49:44.7350059Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-10T22:49:44.7350149Z               "line": 327
2026-06-10T22:49:44.7350339Z             },
2026-06-10T22:49:44.7350426Z             {
2026-06-10T22:49:44.7350544Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-10T22:49:44.7350635Z               "line": 540
2026-06-10T22:49:44.7350722Z             }
2026-06-10T22:49:44.7350811Z           ]
2026-06-10T22:49:44.7350893Z         }
2026-06-10T22:49:44.7350984Z       }
2026-06-10T22:49:44.7351168Z     },
2026-06-10T22:49:44.7351258Z     {
2026-06-10T22:49:44.7351378Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-10T22:49:44.7351530Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-10T22:49:44.7351630Z       "requiredStages": [
2026-06-10T22:49:44.7351712Z         "impl",
2026-06-10T22:49:44.7351807Z         "unit"
2026-06-10T22:49:44.7351887Z       ],
2026-06-10T22:49:44.7351979Z       "stages": {
2026-06-10T22:49:44.7352065Z         "doc": {
2026-06-10T22:49:44.7352169Z           "complete": false,
2026-06-10T22:49:44.7352260Z           "evidence": []
2026-06-10T22:49:44.7352356Z         },
2026-06-10T22:49:44.7352441Z         "impl": {
2026-06-10T22:49:44.7352536Z           "complete": true,
2026-06-10T22:49:44.7352627Z           "evidence": [
2026-06-10T22:49:44.7352713Z             {
2026-06-10T22:49:44.7352827Z               "path": "crates/spt-live/src/echo.rs",
2026-06-10T22:49:44.7352919Z               "line": 25
2026-06-10T22:49:44.7353009Z             },
2026-06-10T22:49:44.7353098Z             {
2026-06-10T22:49:44.7353209Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-10T22:49:44.7353305Z               "line": 26
2026-06-10T22:49:44.7353389Z             },
2026-06-10T22:49:44.7353480Z             {
2026-06-10T22:49:44.7353594Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-10T22:49:44.7353683Z               "line": 159
2026-06-10T22:49:44.7353768Z             }
2026-06-10T22:49:44.7353853Z           ]
2026-06-10T22:49:44.7353940Z         },
2026-06-10T22:49:44.7354012Z         "int": {
2026-06-10T22:49:44.7354106Z           "complete": false,
2026-06-10T22:49:44.7354202Z           "evidence": []
2026-06-10T22:49:44.7354274Z         },
2026-06-10T22:49:44.7354364Z         "unit": {
2026-06-10T22:49:44.7354454Z           "complete": true,
2026-06-10T22:49:44.7354541Z           "evidence": [
2026-06-10T22:49:44.7354626Z             {
2026-06-10T22:49:44.7354745Z               "path": "crates/spt-live/src/echo.rs",
2026-06-10T22:49:44.7354837Z               "line": 184
2026-06-10T22:49:44.7354913Z             },
2026-06-10T22:49:44.7354989Z             {
2026-06-10T22:49:44.7355093Z               "path": "crates/spt-live/src/echo.rs",
2026-06-10T22:49:44.7355194Z               "line": 236
2026-06-10T22:49:44.7355270Z             },
2026-06-10T22:49:44.7355365Z             {
2026-06-10T22:49:44.7355481Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-10T22:49:44.7355566Z               "line": 186
2026-06-10T22:49:44.7355646Z             }
2026-06-10T22:49:44.7355727Z           ]
2026-06-10T22:49:44.7355819Z         }
2026-06-10T22:49:44.7355890Z       }
2026-06-10T22:49:44.7355975Z     },
2026-06-10T22:49:44.7356062Z     {
2026-06-10T22:49:44.7356153Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-10T22:49:44.7356318Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-10T22:49:44.7356408Z       "requiredStages": [
2026-06-10T22:49:44.7356499Z         "impl",
2026-06-10T22:49:44.7356578Z         "unit"
2026-06-10T22:49:44.7356668Z       ],
2026-06-10T22:49:44.7356759Z       "stages": {
2026-06-10T22:49:44.7356831Z         "doc": {
2026-06-10T22:49:44.7356916Z           "complete": false,
2026-06-10T22:49:44.7357016Z           "evidence": []
2026-06-10T22:49:44.7357103Z         },
2026-06-10T22:49:44.7357184Z         "impl": {
2026-06-10T22:49:44.7357283Z           "complete": true,
2026-06-10T22:49:44.7357379Z           "evidence": [
2026-06-10T22:49:44.7357456Z             {
2026-06-10T22:49:44.7357570Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-10T22:49:44.7357732Z               "line": 48
2026-06-10T22:49:44.7357818Z             },
2026-06-10T22:49:44.7357894Z             {
2026-06-10T22:49:44.7358013Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-10T22:49:44.7358104Z               "line": 55
2026-06-10T22:49:44.7358189Z             },
2026-06-10T22:49:44.7358275Z             {
2026-06-10T22:49:44.7358448Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-10T22:49:44.7358547Z               "line": 74
2026-06-10T22:49:44.7358623Z             },
2026-06-10T22:49:44.7358711Z             {
2026-06-10T22:49:44.7358823Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-10T22:49:44.7358908Z               "line": 91
2026-06-10T22:49:44.7359075Z             }
2026-06-10T22:49:44.7359154Z           ]
2026-06-10T22:49:44.7359249Z         },
2026-06-10T22:49:44.7359335Z         "int": {
2026-06-10T22:49:44.7359436Z           "complete": false,
2026-06-10T22:49:44.7359531Z           "evidence": []
2026-06-10T22:49:44.7359626Z         },
2026-06-10T22:49:44.7359713Z         "unit": {
2026-06-10T22:49:44.7359803Z           "complete": true,
2026-06-10T22:49:44.7359897Z           "evidence": [
2026-06-10T22:49:44.7359980Z             {
2026-06-10T22:49:44.7360094Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-10T22:49:44.7360189Z               "line": 149
2026-06-10T22:49:44.7360275Z             },
2026-06-10T22:49:44.7360375Z             {
2026-06-10T22:49:44.7360484Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-10T22:49:44.7360580Z               "line": 166
2026-06-10T22:49:44.7360662Z             },
2026-06-10T22:49:44.7360752Z             {
2026-06-10T22:49:44.7360861Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-10T22:49:44.7360948Z               "line": 176
2026-06-10T22:49:44.7361037Z             },
2026-06-10T22:49:44.7361119Z             {
2026-06-10T22:49:44.7361234Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-10T22:49:44.7361338Z               "line": 194
2026-06-10T22:49:44.7361418Z             },
2026-06-10T22:49:44.7361505Z             {
2026-06-10T22:49:44.7361615Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-10T22:49:44.7361705Z               "line": 207
2026-06-10T22:49:44.7361790Z             }
2026-06-10T22:49:44.7361880Z           ]
2026-06-10T22:49:44.7361972Z         }
2026-06-10T22:49:44.7362052Z       }
2026-06-10T22:49:44.7362152Z     },
2026-06-10T22:49:44.7362234Z     {
2026-06-10T22:49:44.7362353Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-10T22:49:44.7362539Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-10T22:49:44.7362634Z       "requiredStages": [
2026-06-10T22:49:44.7362734Z         "impl",
2026-06-10T22:49:44.7362820Z         "unit"
2026-06-10T22:49:44.7362906Z       ],
2026-06-10T22:49:44.7362996Z       "stages": {
2026-06-10T22:49:44.7363081Z         "doc": {
2026-06-10T22:49:44.7363174Z           "complete": false,
2026-06-10T22:49:44.7363278Z           "evidence": []
2026-06-10T22:49:44.7363364Z         },
2026-06-10T22:49:44.7363454Z         "impl": {
2026-06-10T22:49:44.7363546Z           "complete": true,
2026-06-10T22:49:44.7363635Z           "evidence": [
2026-06-10T22:49:44.7363730Z             {
2026-06-10T22:49:44.7363851Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7363959Z               "line": 416
2026-06-10T22:49:44.7364049Z             },
2026-06-10T22:49:44.7364135Z             {
2026-06-10T22:49:44.7364248Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-10T22:49:44.7364342Z               "line": 26
2026-06-10T22:49:44.7364428Z             }
2026-06-10T22:49:44.7364515Z           ]
2026-06-10T22:49:44.7364605Z         },
2026-06-10T22:49:44.7364700Z         "int": {
2026-06-10T22:49:44.7364790Z           "complete": false,
2026-06-10T22:49:44.7364886Z           "evidence": []
2026-06-10T22:49:44.7364966Z         },
2026-06-10T22:49:44.7365057Z         "unit": {
2026-06-10T22:49:44.7365258Z           "complete": true,
2026-06-10T22:49:44.7365353Z           "evidence": [
2026-06-10T22:49:44.7365440Z             {
2026-06-10T22:49:44.7365554Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-10T22:49:44.7365648Z               "line": 150
2026-06-10T22:49:44.7365735Z             },
2026-06-10T22:49:44.7365821Z             {
2026-06-10T22:49:44.7366041Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-10T22:49:44.7366141Z               "line": 208
2026-06-10T22:49:44.7366231Z             }
2026-06-10T22:49:44.7366312Z           ]
2026-06-10T22:49:44.7366408Z         }
2026-06-10T22:49:44.7366488Z       }
2026-06-10T22:49:44.7366574Z     },
2026-06-10T22:49:44.7366656Z     {
2026-06-10T22:49:44.7366780Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-10T22:49:44.7368092Z       "title": "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: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)",
2026-06-10T22:49:44.7368196Z       "requiredStages": [
2026-06-10T22:49:44.7368283Z         "doc",
2026-06-10T22:49:44.7368369Z         "impl",
2026-06-10T22:49:44.7368468Z         "unit"
2026-06-10T22:49:44.7368554Z       ],
2026-06-10T22:49:44.7368641Z       "stages": {
2026-06-10T22:49:44.7368730Z         "doc": {
2026-06-10T22:49:44.7368821Z           "complete": true,
2026-06-10T22:49:44.7368917Z           "evidence": [
2026-06-10T22:49:44.7369068Z             {
2026-06-10T22:49:44.7369184Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-10T22:49:44.7369276Z               "line": 214
2026-06-10T22:49:44.7369365Z             }
2026-06-10T22:49:44.7369455Z           ]
2026-06-10T22:49:44.7369535Z         },
2026-06-10T22:49:44.7369626Z         "impl": {
2026-06-10T22:49:44.7369719Z           "complete": true,
2026-06-10T22:49:44.7369818Z           "evidence": [
2026-06-10T22:49:44.7369905Z             {
2026-06-10T22:49:44.7370020Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-10T22:49:44.7370110Z               "line": 54
2026-06-10T22:49:44.7370196Z             },
2026-06-10T22:49:44.7370277Z             {
2026-06-10T22:49:44.7370400Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-10T22:49:44.7370486Z               "line": 511
2026-06-10T22:49:44.7370564Z             },
2026-06-10T22:49:44.7370644Z             {
2026-06-10T22:49:44.7370768Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-10T22:49:44.7370845Z               "line": 36
2026-06-10T22:49:44.7370925Z             },
2026-06-10T22:49:44.7371006Z             {
2026-06-10T22:49:44.7371125Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-10T22:49:44.7371222Z               "line": 59
2026-06-10T22:49:44.7371302Z             },
2026-06-10T22:49:44.7371388Z             {
2026-06-10T22:49:44.7371504Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-10T22:49:44.7371597Z               "line": 83
2026-06-10T22:49:44.7371669Z             },
2026-06-10T22:49:44.7371755Z             {
2026-06-10T22:49:44.7371870Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-10T22:49:44.7371955Z               "line": 140
2026-06-10T22:49:44.7372041Z             },
2026-06-10T22:49:44.7372118Z             {
2026-06-10T22:49:44.7372237Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-10T22:49:44.7372326Z               "line": 159
2026-06-10T22:49:44.7372412Z             },
2026-06-10T22:49:44.7375165Z             {
2026-06-10T22:49:44.7375322Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-10T22:49:44.7375418Z               "line": 384
2026-06-10T22:49:44.7375508Z             },
2026-06-10T22:49:44.7375603Z             {
2026-06-10T22:49:44.7375733Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-10T22:49:44.7375972Z               "line": 526
2026-06-10T22:49:44.7376067Z             },
2026-06-10T22:49:44.7376147Z             {
2026-06-10T22:49:44.7376271Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-10T22:49:44.7376358Z               "line": 572
2026-06-10T22:49:44.7376443Z             },
2026-06-10T22:49:44.7376542Z             {
2026-06-10T22:49:44.7376743Z               "path": "crates/spt/src/elevation.rs",
2026-06-10T22:49:44.7376843Z               "line": 145
2026-06-10T22:49:44.7376926Z             },
2026-06-10T22:49:44.7377006Z             {
2026-06-10T22:49:44.7377115Z               "path": "crates/spt/src/main.rs",
2026-06-10T22:49:44.7377206Z               "line": 39
2026-06-10T22:49:44.7377283Z             }
2026-06-10T22:49:44.7377363Z           ]
2026-06-10T22:49:44.7377438Z         },
2026-06-10T22:49:44.7377514Z         "int": {
2026-06-10T22:49:44.7377614Z           "complete": false,
2026-06-10T22:49:44.7377704Z           "evidence": []
2026-06-10T22:49:44.7377793Z         },
2026-06-10T22:49:44.7377889Z         "unit": {
2026-06-10T22:49:44.7377980Z           "complete": true,
2026-06-10T22:49:44.7378070Z           "evidence": [
2026-06-10T22:49:44.7378151Z             {
2026-06-10T22:49:44.7378276Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-10T22:49:44.7378362Z               "line": 785
2026-06-10T22:49:44.7378456Z             },
2026-06-10T22:49:44.7378533Z             {
2026-06-10T22:49:44.7378657Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-10T22:49:44.7378751Z               "line": 826
2026-06-10T22:49:44.7378823Z             },
2026-06-10T22:49:44.7378915Z             {
2026-06-10T22:49:44.7379100Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-10T22:49:44.7379211Z               "line": 900
2026-06-10T22:49:44.7379295Z             }
2026-06-10T22:49:44.7379376Z           ]
2026-06-10T22:49:44.7379463Z         }
2026-06-10T22:49:44.7379554Z       }
2026-06-10T22:49:44.7379638Z     },
2026-06-10T22:49:44.7379725Z     {
2026-06-10T22:49:44.7379845Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-10T22:49:44.7381633Z       "title": "Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\\n`→`<br>`) BEFORE framing, so a body carrying `\\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).",
2026-06-10T22:49:44.7381734Z       "requiredStages": [
2026-06-10T22:49:44.7381824Z         "impl",
2026-06-10T22:49:44.7381910Z         "unit"
2026-06-10T22:49:44.7381995Z       ],
2026-06-10T22:49:44.7382088Z       "stages": {
2026-06-10T22:49:44.7382181Z         "doc": {
2026-06-10T22:49:44.7382277Z           "complete": false,
2026-06-10T22:49:44.7382369Z           "evidence": []
2026-06-10T22:49:44.7382454Z         },
2026-06-10T22:49:44.7382539Z         "impl": {
2026-06-10T22:49:44.7382640Z           "complete": true,
2026-06-10T22:49:44.7382732Z           "evidence": [
2026-06-10T22:49:44.7382811Z             {
2026-06-10T22:49:44.7382948Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-10T22:49:44.7383039Z               "line": 31
2026-06-10T22:49:44.7383121Z             }
2026-06-10T22:49:44.7383210Z           ]
2026-06-10T22:49:44.7383291Z         },
2026-06-10T22:49:44.7383383Z         "int": {
2026-06-10T22:49:44.7383473Z           "complete": false,
2026-06-10T22:49:44.7383568Z           "evidence": []
2026-06-10T22:49:44.7383650Z         },
2026-06-10T22:49:44.7383740Z         "unit": {
2026-06-10T22:49:44.7383835Z           "complete": true,
2026-06-10T22:49:44.7383931Z           "evidence": [
2026-06-10T22:49:44.7384121Z             {
2026-06-10T22:49:44.7384245Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-10T22:49:44.7384337Z               "line": 181
2026-06-10T22:49:44.7384422Z             }
2026-06-10T22:49:44.7384508Z           ]
2026-06-10T22:49:44.7384589Z         }
2026-06-10T22:49:44.7384675Z       }
2026-06-10T22:49:44.7384765Z     },
2026-06-10T22:49:44.7384851Z     {
2026-06-10T22:49:44.7385075Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-10T22:49:44.7385236Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-10T22:49:44.7385336Z       "requiredStages": [
2026-06-10T22:49:44.7385430Z         "impl",
2026-06-10T22:49:44.7385515Z         "unit"
2026-06-10T22:49:44.7385606Z       ],
2026-06-10T22:49:44.7385693Z       "stages": {
2026-06-10T22:49:44.7385791Z         "doc": {
2026-06-10T22:49:44.7385882Z           "complete": false,
2026-06-10T22:49:44.7385974Z           "evidence": []
2026-06-10T22:49:44.7386059Z         },
2026-06-10T22:49:44.7386153Z         "impl": {
2026-06-10T22:49:44.7386255Z           "complete": true,
2026-06-10T22:49:44.7386345Z           "evidence": [
2026-06-10T22:49:44.7386430Z             {
2026-06-10T22:49:44.7386551Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-10T22:49:44.7386641Z               "line": 49
2026-06-10T22:49:44.7386726Z             },
2026-06-10T22:49:44.7386812Z             {
2026-06-10T22:49:44.7386936Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-10T22:49:44.7387022Z               "line": 81
2026-06-10T22:49:44.7387112Z             }
2026-06-10T22:49:44.7387194Z           ]
2026-06-10T22:49:44.7387284Z         },
2026-06-10T22:49:44.7387366Z         "int": {
2026-06-10T22:49:44.7387461Z           "complete": false,
2026-06-10T22:49:44.7387557Z           "evidence": []
2026-06-10T22:49:44.7387637Z         },
2026-06-10T22:49:44.7387727Z         "unit": {
2026-06-10T22:49:44.7387824Z           "complete": true,
2026-06-10T22:49:44.7387919Z           "evidence": [
2026-06-10T22:49:44.7388008Z             {
2026-06-10T22:49:44.7388132Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-10T22:49:44.7388226Z               "line": 156
2026-06-10T22:49:44.7388311Z             },
2026-06-10T22:49:44.7388396Z             {
2026-06-10T22:49:44.7388507Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-10T22:49:44.7388607Z               "line": 173
2026-06-10T22:49:44.7388696Z             },
2026-06-10T22:49:44.7388779Z             {
2026-06-10T22:49:44.7388903Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-10T22:49:44.7389074Z               "line": 196
2026-06-10T22:49:44.7389165Z             }
2026-06-10T22:49:44.7389246Z           ]
2026-06-10T22:49:44.7389335Z         }
2026-06-10T22:49:44.7389422Z       }
2026-06-10T22:49:44.7389508Z     },
2026-06-10T22:49:44.7389589Z     {
2026-06-10T22:49:44.7389713Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-10T22:49:44.7389898Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-10T22:49:44.7389999Z       "requiredStages": [
2026-06-10T22:49:44.7390081Z         "impl",
2026-06-10T22:49:44.7390166Z         "unit"
2026-06-10T22:49:44.7390251Z       ],
2026-06-10T22:49:44.7390338Z       "stages": {
2026-06-10T22:49:44.7390415Z         "doc": {
2026-06-10T22:49:44.7390509Z           "complete": false,
2026-06-10T22:49:44.7390599Z           "evidence": []
2026-06-10T22:49:44.7390694Z         },
2026-06-10T22:49:44.7390789Z         "impl": {
2026-06-10T22:49:44.7390872Z           "complete": true,
2026-06-10T22:49:44.7390962Z           "evidence": [
2026-06-10T22:49:44.7391040Z             {
2026-06-10T22:49:44.7391169Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-10T22:49:44.7391254Z               "line": 120
2026-06-10T22:49:44.7391345Z             }
2026-06-10T22:49:44.7391421Z           ]
2026-06-10T22:49:44.7391507Z         },
2026-06-10T22:49:44.7391597Z         "int": {
2026-06-10T22:49:44.7391684Z           "complete": false,
2026-06-10T22:49:44.7391878Z           "evidence": []
2026-06-10T22:49:44.7391956Z         },
2026-06-10T22:49:44.7392046Z         "unit": {
2026-06-10T22:49:44.7392146Z           "complete": true,
2026-06-10T22:49:44.7392236Z           "evidence": [
2026-06-10T22:49:44.7392328Z             {
2026-06-10T22:49:44.7392437Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-10T22:49:44.7392713Z               "line": 212
2026-06-10T22:49:44.7392808Z             },
2026-06-10T22:49:44.7392885Z             {
2026-06-10T22:49:44.7393005Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-10T22:49:44.7393094Z               "line": 221
2026-06-10T22:49:44.7393181Z             },
2026-06-10T22:49:44.7393258Z             {
2026-06-10T22:49:44.7393376Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-10T22:49:44.7393466Z               "line": 229
2026-06-10T22:49:44.7393552Z             },
2026-06-10T22:49:44.7393647Z             {
2026-06-10T22:49:44.7393761Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-10T22:49:44.7393856Z               "line": 239
2026-06-10T22:49:44.7393934Z             },
2026-06-10T22:49:44.7394015Z             {
2026-06-10T22:49:44.7394128Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-10T22:49:44.7394220Z               "line": 249
2026-06-10T22:49:44.7394310Z             }
2026-06-10T22:49:44.7394395Z           ]
2026-06-10T22:49:44.7394481Z         }
2026-06-10T22:49:44.7394563Z       }
2026-06-10T22:49:44.7394648Z     },
2026-06-10T22:49:44.7394733Z     {
2026-06-10T22:49:44.7394849Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-10T22:49:44.7395015Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-10T22:49:44.7395106Z       "requiredStages": [
2026-06-10T22:49:44.7395193Z         "impl",
2026-06-10T22:49:44.7395278Z         "unit"
2026-06-10T22:49:44.7395363Z       ],
2026-06-10T22:49:44.7395449Z       "stages": {
2026-06-10T22:49:44.7395541Z         "doc": {
2026-06-10T22:49:44.7395639Z           "complete": false,
2026-06-10T22:49:44.7395729Z           "evidence": []
2026-06-10T22:49:44.7395820Z         },
2026-06-10T22:49:44.7395905Z         "impl": {
2026-06-10T22:49:44.7395999Z           "complete": true,
2026-06-10T22:49:44.7396094Z           "evidence": [
2026-06-10T22:49:44.7396180Z             {
2026-06-10T22:49:44.7396299Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-10T22:49:44.7396389Z               "line": 14
2026-06-10T22:49:44.7396481Z             },
2026-06-10T22:49:44.7396562Z             {
2026-06-10T22:49:44.7396676Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-10T22:49:44.7396762Z               "line": 62
2026-06-10T22:49:44.7396848Z             }
2026-06-10T22:49:44.7396938Z           ]
2026-06-10T22:49:44.7397023Z         },
2026-06-10T22:49:44.7397111Z         "int": {
2026-06-10T22:49:44.7397201Z           "complete": false,
2026-06-10T22:49:44.7397296Z           "evidence": []
2026-06-10T22:49:44.7397377Z         },
2026-06-10T22:49:44.7397478Z         "unit": {
2026-06-10T22:49:44.7397573Z           "complete": true,
2026-06-10T22:49:44.7397662Z           "evidence": [
2026-06-10T22:49:44.7397755Z             {
2026-06-10T22:49:44.7397859Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-10T22:49:44.7397954Z               "line": 160
2026-06-10T22:49:44.7398036Z             },
2026-06-10T22:49:44.7398136Z             {
2026-06-10T22:49:44.7398245Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-10T22:49:44.7398336Z               "line": 197
2026-06-10T22:49:44.7398422Z             },
2026-06-10T22:49:44.7398507Z             {
2026-06-10T22:49:44.7398620Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-10T22:49:44.7398707Z               "line": 219
2026-06-10T22:49:44.7398796Z             }
2026-06-10T22:49:44.7398881Z           ]
2026-06-10T22:49:44.7399052Z         }
2026-06-10T22:49:44.7399143Z       }
2026-06-10T22:49:44.7399228Z     },
2026-06-10T22:49:44.7399319Z     {
2026-06-10T22:49:44.7399538Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-10T22:49:44.7400970Z       "title": "Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)",
2026-06-10T22:49:44.7401078Z       "requiredStages": [],
2026-06-10T22:49:44.7401163Z       "stages": {
2026-06-10T22:49:44.7401249Z         "doc": {
2026-06-10T22:49:44.7401339Z           "complete": true,
2026-06-10T22:49:44.7401437Z           "evidence": [
2026-06-10T22:49:44.7401523Z             {
2026-06-10T22:49:44.7401639Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-10T22:49:44.7401734Z               "line": 165
2026-06-10T22:49:44.7401814Z             }
2026-06-10T22:49:44.7401915Z           ]
2026-06-10T22:49:44.7402000Z         },
2026-06-10T22:49:44.7402086Z         "impl": {
2026-06-10T22:49:44.7402186Z           "complete": false,
2026-06-10T22:49:44.7402277Z           "evidence": []
2026-06-10T22:49:44.7402368Z         },
2026-06-10T22:49:44.7402453Z         "int": {
2026-06-10T22:49:44.7402554Z           "complete": false,
2026-06-10T22:49:44.7402648Z           "evidence": []
2026-06-10T22:49:44.7402739Z         },
2026-06-10T22:49:44.7402830Z         "unit": {
2026-06-10T22:49:44.7402926Z           "complete": false,
2026-06-10T22:49:44.7403016Z           "evidence": []
2026-06-10T22:49:44.7403102Z         }
2026-06-10T22:49:44.7403188Z       }
2026-06-10T22:49:44.7403274Z     },
2026-06-10T22:49:44.7403364Z     {
2026-06-10T22:49:44.7403485Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-10T22:49:44.7403693Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-10T22:49:44.7403790Z       "requiredStages": [
2026-06-10T22:49:44.7403890Z         "impl",
2026-06-10T22:49:44.7403973Z         "unit"
2026-06-10T22:49:44.7404059Z       ],
2026-06-10T22:49:44.7404145Z       "stages": {
2026-06-10T22:49:44.7404232Z         "doc": {
2026-06-10T22:49:44.7404326Z           "complete": false,
2026-06-10T22:49:44.7404416Z           "evidence": []
2026-06-10T22:49:44.7404499Z         },
2026-06-10T22:49:44.7404594Z         "impl": {
2026-06-10T22:49:44.7404688Z           "complete": true,
2026-06-10T22:49:44.7404785Z           "evidence": [
2026-06-10T22:49:44.7404870Z             {
2026-06-10T22:49:44.7404988Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-10T22:49:44.7405085Z               "line": 76
2026-06-10T22:49:44.7405166Z             },
2026-06-10T22:49:44.7405252Z             {
2026-06-10T22:49:44.7405365Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-10T22:49:44.7405467Z               "line": 167
2026-06-10T22:49:44.7405551Z             },
2026-06-10T22:49:44.7405642Z             {
2026-06-10T22:49:44.7405763Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-10T22:49:44.7405852Z               "line": 233
2026-06-10T22:49:44.7405942Z             },
2026-06-10T22:49:44.7406024Z             {
2026-06-10T22:49:44.7406139Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-10T22:49:44.7406233Z               "line": 272
2026-06-10T22:49:44.7406318Z             }
2026-06-10T22:49:44.7406414Z           ]
2026-06-10T22:49:44.7406498Z         },
2026-06-10T22:49:44.7406588Z         "int": {
2026-06-10T22:49:44.7406678Z           "complete": false,
2026-06-10T22:49:44.7406774Z           "evidence": []
2026-06-10T22:49:44.7406859Z         },
2026-06-10T22:49:44.7406944Z         "unit": {
2026-06-10T22:49:44.7407041Z           "complete": true,
2026-06-10T22:49:44.7407132Z           "evidence": [
2026-06-10T22:49:44.7407217Z             {
2026-06-10T22:49:44.7407327Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-10T22:49:44.7407422Z               "line": 321
2026-06-10T22:49:44.7407593Z             },
2026-06-10T22:49:44.7407681Z             {
2026-06-10T22:49:44.7407794Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-10T22:49:44.7407884Z               "line": 329
2026-06-10T22:49:44.7407971Z             },
2026-06-10T22:49:44.7408052Z             {
2026-06-10T22:49:44.7408166Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-10T22:49:44.7408334Z               "line": 356
2026-06-10T22:49:44.7408423Z             },
2026-06-10T22:49:44.7408509Z             {
2026-06-10T22:49:44.7408620Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-10T22:49:44.7408714Z               "line": 395
2026-06-10T22:49:44.7408800Z             },
2026-06-10T22:49:44.7408887Z             {
2026-06-10T22:49:44.7409081Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-10T22:49:44.7409170Z               "line": 406
2026-06-10T22:49:44.7409262Z             },
2026-06-10T22:49:44.7409346Z             {
2026-06-10T22:49:44.7409464Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-10T22:49:44.7409860Z               "line": 418
2026-06-10T22:49:44.7409951Z             },
2026-06-10T22:49:44.7410042Z             {
2026-06-10T22:49:44.7410160Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-10T22:49:44.7410252Z               "line": 442
2026-06-10T22:49:44.7410337Z             }
2026-06-10T22:49:44.7410423Z           ]
2026-06-10T22:49:44.7410523Z         }
2026-06-10T22:49:44.7410605Z       }
2026-06-10T22:49:44.7410695Z     },
2026-06-10T22:49:44.7410775Z     {
2026-06-10T22:49:44.7410886Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-10T22:49:44.7411028Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-10T22:49:44.7411129Z       "requiredStages": [
2026-06-10T22:49:44.7411215Z         "impl",
2026-06-10T22:49:44.7411300Z         "int"
2026-06-10T22:49:44.7411391Z       ],
2026-06-10T22:49:44.7411473Z       "stages": {
2026-06-10T22:49:44.7411558Z         "doc": {
2026-06-10T22:49:44.7411657Z           "complete": false,
2026-06-10T22:49:44.7411747Z           "evidence": []
2026-06-10T22:49:44.7411833Z         },
2026-06-10T22:49:44.7411918Z         "impl": {
2026-06-10T22:49:44.7412016Z           "complete": true,
2026-06-10T22:49:44.7412107Z           "evidence": [
2026-06-10T22:49:44.7412194Z             {
2026-06-10T22:49:44.7412313Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-10T22:49:44.7412408Z               "line": 22
2026-06-10T22:49:44.7412494Z             }
2026-06-10T22:49:44.7412580Z           ]
2026-06-10T22:49:44.7412674Z         },
2026-06-10T22:49:44.7412756Z         "int": {
2026-06-10T22:49:44.7412852Z           "complete": true,
2026-06-10T22:49:44.7412938Z           "evidence": [
2026-06-10T22:49:44.7413022Z             {
2026-06-10T22:49:44.7413148Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-10T22:49:44.7413237Z               "line": 18
2026-06-10T22:49:44.7413323Z             }
2026-06-10T22:49:44.7413410Z           ]
2026-06-10T22:49:44.7413505Z         },
2026-06-10T22:49:44.7413586Z         "unit": {
2026-06-10T22:49:44.7413681Z           "complete": false,
2026-06-10T22:49:44.7413772Z           "evidence": []
2026-06-10T22:49:44.7413853Z         }
2026-06-10T22:49:44.7413938Z       }
2026-06-10T22:49:44.7414020Z     },
2026-06-10T22:49:44.7414111Z     {
2026-06-10T22:49:44.7414219Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-10T22:49:44.7414421Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-10T22:49:44.7414515Z       "requiredStages": [
2026-06-10T22:49:44.7414600Z         "impl",
2026-06-10T22:49:44.7414686Z         "unit"
2026-06-10T22:49:44.7414768Z       ],
2026-06-10T22:49:44.7414863Z       "stages": {
2026-06-10T22:49:44.7414943Z         "doc": {
2026-06-10T22:49:44.7415039Z           "complete": false,
2026-06-10T22:49:44.7415135Z           "evidence": []
2026-06-10T22:49:44.7415215Z         },
2026-06-10T22:49:44.7415301Z         "impl": {
2026-06-10T22:49:44.7415520Z           "complete": true,
2026-06-10T22:49:44.7415611Z           "evidence": [
2026-06-10T22:49:44.7415693Z             {
2026-06-10T22:49:44.7415826Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7415921Z               "line": 415
2026-06-10T22:49:44.7415989Z             },
2026-06-10T22:49:44.7416078Z             {
2026-06-10T22:49:44.7416275Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-10T22:49:44.7416375Z               "line": 27
2026-06-10T22:49:44.7416454Z             }
2026-06-10T22:49:44.7416541Z           ]
2026-06-10T22:49:44.7416618Z         },
2026-06-10T22:49:44.7416699Z         "int": {
2026-06-10T22:49:44.7416793Z           "complete": false,
2026-06-10T22:49:44.7416882Z           "evidence": []
2026-06-10T22:49:44.7416959Z         },
2026-06-10T22:49:44.7417044Z         "unit": {
2026-06-10T22:49:44.7417143Z           "complete": true,
2026-06-10T22:49:44.7417234Z           "evidence": [
2026-06-10T22:49:44.7417315Z             {
2026-06-10T22:49:44.7417439Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7417514Z               "line": 940
2026-06-10T22:49:44.7417606Z             },
2026-06-10T22:49:44.7417687Z             {
2026-06-10T22:49:44.7417810Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-10T22:49:44.7417907Z               "line": 181
2026-06-10T22:49:44.7417987Z             }
2026-06-10T22:49:44.7418072Z           ]
2026-06-10T22:49:44.7418153Z         }
2026-06-10T22:49:44.7418231Z       }
2026-06-10T22:49:44.7418316Z     },
2026-06-10T22:49:44.7418392Z     {
2026-06-10T22:49:44.7418512Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-10T22:49:44.7418679Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-10T22:49:44.7418783Z       "requiredStages": [
2026-06-10T22:49:44.7418870Z         "impl",
2026-06-10T22:49:44.7419031Z         "unit"
2026-06-10T22:49:44.7419122Z       ],
2026-06-10T22:49:44.7419219Z       "stages": {
2026-06-10T22:49:44.7419317Z         "doc": {
2026-06-10T22:49:44.7419418Z           "complete": false,
2026-06-10T22:49:44.7419519Z           "evidence": []
2026-06-10T22:49:44.7419599Z         },
2026-06-10T22:49:44.7419689Z         "impl": {
2026-06-10T22:49:44.7419788Z           "complete": true,
2026-06-10T22:49:44.7419883Z           "evidence": [
2026-06-10T22:49:44.7419977Z             {
2026-06-10T22:49:44.7420106Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7420206Z               "line": 73
2026-06-10T22:49:44.7420282Z             },
2026-06-10T22:49:44.7420377Z             {
2026-06-10T22:49:44.7420497Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7420592Z               "line": 840
2026-06-10T22:49:44.7420692Z             },
2026-06-10T22:49:44.7420774Z             {
2026-06-10T22:49:44.7420893Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-10T22:49:44.7420983Z               "line": 20
2026-06-10T22:49:44.7421069Z             },
2026-06-10T22:49:44.7421165Z             {
2026-06-10T22:49:44.7421283Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-10T22:49:44.7421384Z               "line": 100
2026-06-10T22:49:44.7421461Z             },
2026-06-10T22:49:44.7421555Z             {
2026-06-10T22:49:44.7421674Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-10T22:49:44.7421771Z               "line": 443
2026-06-10T22:49:44.7421855Z             },
2026-06-10T22:49:44.7421951Z             {
2026-06-10T22:49:44.7422077Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-10T22:49:44.7422161Z               "line": 68
2026-06-10T22:49:44.7422255Z             },
2026-06-10T22:49:44.7422341Z             {
2026-06-10T22:49:44.7422459Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-10T22:49:44.7422549Z               "line": 80
2026-06-10T22:49:44.7422638Z             }
2026-06-10T22:49:44.7422730Z           ]
2026-06-10T22:49:44.7422826Z         },
2026-06-10T22:49:44.7422920Z         "int": {
2026-06-10T22:49:44.7423126Z           "complete": true,
2026-06-10T22:49:44.7423225Z           "evidence": [
2026-06-10T22:49:44.7423311Z             {
2026-06-10T22:49:44.7423436Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-10T22:49:44.7423535Z               "line": 44
2026-06-10T22:49:44.7423626Z             }
2026-06-10T22:49:44.7423708Z           ]
2026-06-10T22:49:44.7423883Z         },
2026-06-10T22:49:44.7423985Z         "unit": {
2026-06-10T22:49:44.7424079Z           "complete": true,
2026-06-10T22:49:44.7424179Z           "evidence": [
2026-06-10T22:49:44.7424270Z             {
2026-06-10T22:49:44.7424394Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7424489Z               "line": 1029
2026-06-10T22:49:44.7424571Z             },
2026-06-10T22:49:44.7424657Z             {
2026-06-10T22:49:44.7424779Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.7424881Z               "line": 1045
2026-06-10T22:49:44.7424981Z             },
2026-06-10T22:49:44.7425066Z             {
2026-06-10T22:49:44.7425198Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-10T22:49:44.7425289Z               "line": 1069
2026-06-10T22:49:44.7425385Z             },
2026-06-10T22:49:44.7425474Z             {
2026-06-10T22:49:44.7425594Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-10T22:49:44.7425705Z               "line": 152
2026-06-10T22:49:44.7425794Z             },
2026-06-10T22:49:44.7425886Z             {
2026-06-10T22:49:44.7425995Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-10T22:49:44.7426095Z               "line": 175
2026-06-10T22:49:44.7426190Z             },
2026-06-10T22:49:44.7426277Z             {
2026-06-10T22:49:44.7426396Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-10T22:49:44.7426486Z               "line": 186
2026-06-10T22:49:44.7426578Z             },
2026-06-10T22:49:44.7426657Z             {
2026-06-10T22:49:44.7426781Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-10T22:49:44.7426883Z               "line": 202
2026-06-10T22:49:44.7426963Z             },
2026-06-10T22:49:44.7427058Z             {
2026-06-10T22:49:44.7427174Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-10T22:49:44.7427269Z               "line": 216
2026-06-10T22:49:44.7427353Z             },
2026-06-10T22:49:44.7427443Z             {
2026-06-10T22:49:44.7427567Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-10T22:49:44.7427660Z               "line": 137
2026-06-10T22:49:44.7427751Z             },
2026-06-10T22:49:44.7427837Z             {
2026-06-10T22:49:44.7427952Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7428051Z               "line": 5547
2026-06-10T22:49:44.7428142Z             },
2026-06-10T22:49:44.7428233Z             {
2026-06-10T22:49:44.7428351Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-10T22:49:44.7428448Z               "line": 30
2026-06-10T22:49:44.7428543Z             },
2026-06-10T22:49:44.7428633Z             {
2026-06-10T22:49:44.7428743Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-10T22:49:44.7428844Z               "line": 73
2026-06-10T22:49:44.7428929Z             }
2026-06-10T22:49:44.7429101Z           ]
2026-06-10T22:49:44.7429196Z         }
2026-06-10T22:49:44.7429281Z       }
2026-06-10T22:49:44.7429372Z     },
2026-06-10T22:49:44.7429454Z     {
2026-06-10T22:49:44.7429577Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-10T22:49:44.7429835Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-10T22:49:44.7429935Z       "requiredStages": [
2026-06-10T22:49:44.7430027Z         "impl",
2026-06-10T22:49:44.7430117Z         "unit"
2026-06-10T22:49:44.7430201Z       ],
2026-06-10T22:49:44.7430286Z       "stages": {
2026-06-10T22:49:44.7430372Z         "doc": {
2026-06-10T22:49:44.7430467Z           "complete": true,
2026-06-10T22:49:44.7430556Z           "evidence": [
2026-06-10T22:49:44.7430781Z             {
2026-06-10T22:49:44.7430889Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-10T22:49:44.7430980Z               "line": 133
2026-06-10T22:49:44.7431062Z             }
2026-06-10T22:49:44.7431153Z           ]
2026-06-10T22:49:44.7431238Z         },
2026-06-10T22:49:44.7431324Z         "impl": {
2026-06-10T22:49:44.7431424Z           "complete": true,
2026-06-10T22:49:44.7431610Z           "evidence": [
2026-06-10T22:49:44.7431697Z             {
2026-06-10T22:49:44.7431820Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-10T22:49:44.7431910Z               "line": 65
2026-06-10T22:49:44.7431997Z             },
2026-06-10T22:49:44.7432086Z             {
2026-06-10T22:49:44.7432191Z               "path": "crates/spt-proto/src/id.rs",
2026-06-10T22:49:44.7432288Z               "line": 17
2026-06-10T22:49:44.7432378Z             },
2026-06-10T22:49:44.7432468Z             {
2026-06-10T22:49:44.7432584Z               "path": "crates/spt/src/api/startup.rs",
2026-06-10T22:49:44.7432688Z               "line": 217
2026-06-10T22:49:44.7432778Z             },
2026-06-10T22:49:44.7432872Z             {
2026-06-10T22:49:44.7432991Z               "path": "crates/spt/src/api/startup.rs",
2026-06-10T22:49:44.7433089Z               "line": 317
2026-06-10T22:49:44.7433174Z             },
2026-06-10T22:49:44.7433266Z             {
2026-06-10T22:49:44.7433386Z               "path": "crates/spt/src/api/worker.rs",
2026-06-10T22:49:44.7433475Z               "line": 32
2026-06-10T22:49:44.7433571Z             },
2026-06-10T22:49:44.7433653Z             {
2026-06-10T22:49:44.7433761Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7433852Z               "line": 4418
2026-06-10T22:49:44.7433939Z             },
2026-06-10T22:49:44.7434029Z             {
2026-06-10T22:49:44.7434138Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7434235Z               "line": 4686
2026-06-10T22:49:44.7434320Z             }
2026-06-10T22:49:44.7434415Z           ]
2026-06-10T22:49:44.7434506Z         },
2026-06-10T22:49:44.7434601Z         "int": {
2026-06-10T22:49:44.7434701Z           "complete": false,
2026-06-10T22:49:44.7434796Z           "evidence": []
2026-06-10T22:49:44.7434874Z         },
2026-06-10T22:49:44.7434968Z         "unit": {
2026-06-10T22:49:44.7435059Z           "complete": true,
2026-06-10T22:49:44.7435155Z           "evidence": [
2026-06-10T22:49:44.7435250Z             {
2026-06-10T22:49:44.7435359Z               "path": "crates/spt-proto/src/id.rs",
2026-06-10T22:49:44.7435451Z               "line": 94
2026-06-10T22:49:44.7435541Z             },
2026-06-10T22:49:44.7435630Z             {
2026-06-10T22:49:44.7435749Z               "path": "crates/spt-proto/src/id.rs",
2026-06-10T22:49:44.7435840Z               "line": 111
2026-06-10T22:49:44.7435931Z             },
2026-06-10T22:49:44.7436016Z             {
2026-06-10T22:49:44.7436126Z               "path": "crates/spt-proto/src/id.rs",
2026-06-10T22:49:44.7436227Z               "line": 124
2026-06-10T22:49:44.7436321Z             },
2026-06-10T22:49:44.7436412Z             {
2026-06-10T22:49:44.7436522Z               "path": "crates/spt-proto/src/id.rs",
2026-06-10T22:49:44.7436613Z               "line": 134
2026-06-10T22:49:44.7436702Z             },
2026-06-10T22:49:44.7436789Z             {
2026-06-10T22:49:44.7436903Z               "path": "crates/spt-proto/src/id.rs",
2026-06-10T22:49:44.7436984Z               "line": 144
2026-06-10T22:49:44.7437075Z             },
2026-06-10T22:49:44.7437171Z             {
2026-06-10T22:49:44.7437280Z               "path": "crates/spt-proto/src/id.rs",
2026-06-10T22:49:44.7437375Z               "line": 156
2026-06-10T22:49:44.7437457Z             },
2026-06-10T22:49:44.7437537Z             {
2026-06-10T22:49:44.7437666Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-10T22:49:44.7437762Z               "line": 714
2026-06-10T22:49:44.7437856Z             }
2026-06-10T22:49:44.7437941Z           ]
2026-06-10T22:49:44.7438037Z         }
2026-06-10T22:49:44.7438202Z       }
2026-06-10T22:49:44.7438292Z     },
2026-06-10T22:49:44.7438373Z     {
2026-06-10T22:49:44.7438484Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-10T22:49:44.7438625Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-10T22:49:44.7438712Z       "requiredStages": [
2026-06-10T22:49:44.7438807Z         "impl",
2026-06-10T22:49:44.7438888Z         "unit"
2026-06-10T22:49:44.7439226Z       ],
2026-06-10T22:49:44.7439323Z       "stages": {
2026-06-10T22:49:44.7439413Z         "doc": {
2026-06-10T22:49:44.7439508Z           "complete": false,
2026-06-10T22:49:44.7439603Z           "evidence": []
2026-06-10T22:49:44.7439690Z         },
2026-06-10T22:49:44.7439784Z         "impl": {
2026-06-10T22:49:44.7439879Z           "complete": true,
2026-06-10T22:49:44.7439972Z           "evidence": [
2026-06-10T22:49:44.7440062Z             {
2026-06-10T22:49:44.7440185Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-10T22:49:44.7440277Z               "line": 128
2026-06-10T22:49:44.7440372Z             }
2026-06-10T22:49:44.7440461Z           ]
2026-06-10T22:49:44.7440557Z         },
2026-06-10T22:49:44.7440644Z         "int": {
2026-06-10T22:49:44.7440752Z           "complete": false,
2026-06-10T22:49:44.7440842Z           "evidence": []
2026-06-10T22:49:44.7440928Z         },
2026-06-10T22:49:44.7441023Z         "unit": {
2026-06-10T22:49:44.7441111Z           "complete": true,
2026-06-10T22:49:44.7441201Z           "evidence": [
2026-06-10T22:49:44.7441288Z             {
2026-06-10T22:49:44.7441417Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-10T22:49:44.7441512Z               "line": 205
2026-06-10T22:49:44.7441599Z             }
2026-06-10T22:49:44.7441684Z           ]
2026-06-10T22:49:44.7441774Z         }
2026-06-10T22:49:44.7441865Z       }
2026-06-10T22:49:44.7441952Z     },
2026-06-10T22:49:44.7442042Z     {
2026-06-10T22:49:44.7442160Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-10T22:49:44.7442318Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-10T22:49:44.7442422Z       "requiredStages": [
2026-06-10T22:49:44.7442519Z         "impl",
2026-06-10T22:49:44.7444684Z         "unit"
2026-06-10T22:49:44.7444795Z       ],
2026-06-10T22:49:44.7444899Z       "stages": {
2026-06-10T22:49:44.7444989Z         "doc": {
2026-06-10T22:49:44.7445100Z           "complete": false,
2026-06-10T22:49:44.7445195Z           "evidence": []
2026-06-10T22:49:44.7445285Z         },
2026-06-10T22:49:44.7445381Z         "impl": {
2026-06-10T22:49:44.7445467Z           "complete": true,
2026-06-10T22:49:44.7445566Z           "evidence": [
2026-06-10T22:49:44.7445652Z             {
2026-06-10T22:49:44.7445782Z               "path": "crates/spt-store/src/info.rs",
2026-06-10T22:49:44.7445876Z               "line": 246
2026-06-10T22:49:44.7445962Z             },
2026-06-10T22:49:44.7446054Z             {
2026-06-10T22:49:44.7446172Z               "path": "crates/spt-store/src/info.rs",
2026-06-10T22:49:44.7446266Z               "line": 257
2026-06-10T22:49:44.7446361Z             },
2026-06-10T22:49:44.7446453Z             {
2026-06-10T22:49:44.7446567Z               "path": "crates/spt-store/src/info.rs",
2026-06-10T22:49:44.7446648Z               "line": 275
2026-06-10T22:49:44.7446739Z             }
2026-06-10T22:49:44.7446825Z           ]
2026-06-10T22:49:44.7446915Z         },
2026-06-10T22:49:44.7447011Z         "int": {
2026-06-10T22:49:44.7447101Z           "complete": false,
2026-06-10T22:49:44.7447201Z           "evidence": []
2026-06-10T22:49:44.7447292Z         },
2026-06-10T22:49:44.7447378Z         "unit": {
2026-06-10T22:49:44.7447468Z           "complete": true,
2026-06-10T22:49:44.7447563Z           "evidence": [
2026-06-10T22:49:44.7447650Z             {
2026-06-10T22:49:44.7447768Z               "path": "crates/spt-store/src/info.rs",
2026-06-10T22:49:44.7447854Z               "line": 299
2026-06-10T22:49:44.7447941Z             },
2026-06-10T22:49:44.7448031Z             {
2026-06-10T22:49:44.7448140Z               "path": "crates/spt-store/src/info.rs",
2026-06-10T22:49:44.7448370Z               "line": 320
2026-06-10T22:49:44.7448464Z             },
2026-06-10T22:49:44.7448554Z             {
2026-06-10T22:49:44.7448673Z               "path": "crates/spt-store/src/info.rs",
2026-06-10T22:49:44.7448771Z               "line": 547
2026-06-10T22:49:44.7448871Z             },
2026-06-10T22:49:44.7449049Z             {
2026-06-10T22:49:44.7449268Z               "path": "crates/spt-store/src/info.rs",
2026-06-10T22:49:44.7449367Z               "line": 558
2026-06-10T22:49:44.7449457Z             },
2026-06-10T22:49:44.7449548Z             {
2026-06-10T22:49:44.7449659Z               "path": "crates/spt-store/src/info.rs",
2026-06-10T22:49:44.7449753Z               "line": 571
2026-06-10T22:49:44.7449839Z             }
2026-06-10T22:49:44.7449935Z           ]
2026-06-10T22:49:44.7450030Z         }
2026-06-10T22:49:44.7450120Z       }
2026-06-10T22:49:44.7450212Z     },
2026-06-10T22:49:44.7450297Z     {
2026-06-10T22:49:44.7450426Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-10T22:49:44.7451011Z       "title": "Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)",
2026-06-10T22:49:44.7451118Z       "requiredStages": [
2026-06-10T22:49:44.7451218Z         "impl",
2026-06-10T22:49:44.7451317Z         "unit"
2026-06-10T22:49:44.7451411Z       ],
2026-06-10T22:49:44.7451502Z       "stages": {
2026-06-10T22:49:44.7451597Z         "doc": {
2026-06-10T22:49:44.7451695Z           "complete": false,
2026-06-10T22:49:44.7451791Z           "evidence": []
2026-06-10T22:49:44.7451882Z         },
2026-06-10T22:49:44.7451972Z         "impl": {
2026-06-10T22:49:44.7452072Z           "complete": true,
2026-06-10T22:49:44.7452168Z           "evidence": [
2026-06-10T22:49:44.7452259Z             {
2026-06-10T22:49:44.7452396Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.7452493Z               "line": 714
2026-06-10T22:49:44.7452583Z             }
2026-06-10T22:49:44.7452677Z           ]
2026-06-10T22:49:44.7452774Z         },
2026-06-10T22:49:44.7452869Z         "int": {
2026-06-10T22:49:44.7452968Z           "complete": false,
2026-06-10T22:49:44.7453064Z           "evidence": []
2026-06-10T22:49:44.7453155Z         },
2026-06-10T22:49:44.7453254Z         "unit": {
2026-06-10T22:49:44.7453350Z           "complete": true,
2026-06-10T22:49:44.7453446Z           "evidence": [
2026-06-10T22:49:44.7453540Z             {
2026-06-10T22:49:44.7453675Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.7453766Z               "line": 828
2026-06-10T22:49:44.7453855Z             }
2026-06-10T22:49:44.7453950Z           ]
2026-06-10T22:49:44.7454036Z         }
2026-06-10T22:49:44.7454131Z       }
2026-06-10T22:49:44.7454214Z     },
2026-06-10T22:49:44.7454305Z     {
2026-06-10T22:49:44.7454425Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-10T22:49:44.7454648Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-10T22:49:44.7454749Z       "requiredStages": [
2026-06-10T22:49:44.7454840Z         "impl",
2026-06-10T22:49:44.7454929Z         "unit"
2026-06-10T22:49:44.7455016Z       ],
2026-06-10T22:49:44.7455111Z       "stages": {
2026-06-10T22:49:44.7455201Z         "doc": {
2026-06-10T22:49:44.7455312Z           "complete": false,
2026-06-10T22:49:44.7455412Z           "evidence": []
2026-06-10T22:49:44.7455502Z         },
2026-06-10T22:49:44.7455597Z         "impl": {
2026-06-10T22:49:44.7455694Z           "complete": true,
2026-06-10T22:49:44.7455793Z           "evidence": [
2026-06-10T22:49:44.7455893Z             {
2026-06-10T22:49:44.7456009Z               "path": "crates/spt/src/api/auth.rs",
2026-06-10T22:49:44.7456107Z               "line": 14
2026-06-10T22:49:44.7456198Z             },
2026-06-10T22:49:44.7456294Z             {
2026-06-10T22:49:44.7456407Z               "path": "crates/spt/src/api/mod.rs",
2026-06-10T22:49:44.7456609Z               "line": 411
2026-06-10T22:49:44.7456699Z             }
2026-06-10T22:49:44.7456788Z           ]
2026-06-10T22:49:44.7456878Z         },
2026-06-10T22:49:44.7456970Z         "int": {
2026-06-10T22:49:44.7457070Z           "complete": false,
2026-06-10T22:49:44.7457160Z           "evidence": []
2026-06-10T22:49:44.7457251Z         },
2026-06-10T22:49:44.7457422Z         "unit": {
2026-06-10T22:49:44.7457522Z           "complete": true,
2026-06-10T22:49:44.7457619Z           "evidence": [
2026-06-10T22:49:44.7457704Z             {
2026-06-10T22:49:44.7457827Z               "path": "crates/spt/src/api/auth.rs",
2026-06-10T22:49:44.7457920Z               "line": 130
2026-06-10T22:49:44.7458019Z             },
2026-06-10T22:49:44.7458109Z             {
2026-06-10T22:49:44.7458220Z               "path": "crates/spt/src/api/auth.rs",
2026-06-10T22:49:44.7458314Z               "line": 138
2026-06-10T22:49:44.7458405Z             },
2026-06-10T22:49:44.7458506Z             {
2026-06-10T22:49:44.7458620Z               "path": "crates/spt/src/api/auth.rs",
2026-06-10T22:49:44.7458719Z               "line": 146
2026-06-10T22:49:44.7458805Z             },
2026-06-10T22:49:44.7458892Z             {
2026-06-10T22:49:44.7459090Z               "path": "crates/spt/src/api/auth.rs",
2026-06-10T22:49:44.7459191Z               "line": 154
2026-06-10T22:49:44.7459285Z             },
2026-06-10T22:49:44.7459374Z             {
2026-06-10T22:49:44.7459479Z               "path": "crates/spt/src/api/auth.rs",
2026-06-10T22:49:44.7459571Z               "line": 162
2026-06-10T22:49:44.7459660Z             },
2026-06-10T22:49:44.7459745Z             {
2026-06-10T22:49:44.7459856Z               "path": "crates/spt/src/api/auth.rs",
2026-06-10T22:49:44.7459947Z               "line": 170
2026-06-10T22:49:44.7460027Z             }
2026-06-10T22:49:44.7460128Z           ]
2026-06-10T22:49:44.7460219Z         }
2026-06-10T22:49:44.7460308Z       }
2026-06-10T22:49:44.7460399Z     },
2026-06-10T22:49:44.7460495Z     {
2026-06-10T22:49:44.7460614Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-10T22:49:44.7461529Z       "title": "Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)",
2026-06-10T22:49:44.7461634Z       "requiredStages": [
2026-06-10T22:49:44.7461731Z         "impl",
2026-06-10T22:49:44.7461821Z         "unit"
2026-06-10T22:49:44.7461915Z       ],
2026-06-10T22:49:44.7462005Z       "stages": {
2026-06-10T22:49:44.7462100Z         "doc": {
2026-06-10T22:49:44.7462203Z           "complete": false,
2026-06-10T22:49:44.7462298Z           "evidence": []
2026-06-10T22:49:44.7462389Z         },
2026-06-10T22:49:44.7462480Z         "impl": {
2026-06-10T22:49:44.7462579Z           "complete": true,
2026-06-10T22:49:44.7462680Z           "evidence": [
2026-06-10T22:49:44.7462776Z             {
2026-06-10T22:49:44.7462937Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-10T22:49:44.7463029Z               "line": 34
2026-06-10T22:49:44.7463124Z             }
2026-06-10T22:49:44.7463209Z           ]
2026-06-10T22:49:44.7463304Z         },
2026-06-10T22:49:44.7463401Z         "int": {
2026-06-10T22:49:44.7463501Z           "complete": false,
2026-06-10T22:49:44.7463600Z           "evidence": []
2026-06-10T22:49:44.7463692Z         },
2026-06-10T22:49:44.7463781Z         "unit": {
2026-06-10T22:49:44.7463881Z           "complete": true,
2026-06-10T22:49:44.7463983Z           "evidence": [
2026-06-10T22:49:44.7464068Z             {
2026-06-10T22:49:44.7464220Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-10T22:49:44.7464317Z               "line": 188
2026-06-10T22:49:44.7464411Z             },
2026-06-10T22:49:44.7464500Z             {
2026-06-10T22:49:44.7464638Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-10T22:49:44.7464865Z               "line": 200
2026-06-10T22:49:44.7464951Z             },
2026-06-10T22:49:44.7465043Z             {
2026-06-10T22:49:44.7465184Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-10T22:49:44.7465281Z               "line": 211
2026-06-10T22:49:44.7465371Z             },
2026-06-10T22:49:44.7465456Z             {
2026-06-10T22:49:44.7465690Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-10T22:49:44.7465785Z               "line": 253
2026-06-10T22:49:44.7465882Z             },
2026-06-10T22:49:44.7465967Z             {
2026-06-10T22:49:44.7466104Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-10T22:49:44.7466201Z               "line": 277
2026-06-10T22:49:44.7466292Z             },
2026-06-10T22:49:44.7466382Z             {
2026-06-10T22:49:44.7466516Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-10T22:49:44.7466616Z               "line": 300
2026-06-10T22:49:44.7466716Z             },
2026-06-10T22:49:44.7466801Z             {
2026-06-10T22:49:44.7466940Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-10T22:49:44.7467030Z               "line": 316
2026-06-10T22:49:44.7467121Z             }
2026-06-10T22:49:44.7467213Z           ]
2026-06-10T22:49:44.7467301Z         }
2026-06-10T22:49:44.7467396Z       }
2026-06-10T22:49:44.7467491Z     },
2026-06-10T22:49:44.7467583Z     {
2026-06-10T22:49:44.7467701Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-10T22:49:44.7468226Z       "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 seed is replicated to every trusted node (ADR-0005 #10)",
2026-06-10T22:49:44.7468325Z       "requiredStages": [
2026-06-10T22:49:44.7468417Z         "impl",
2026-06-10T22:49:44.7468508Z         "unit"
2026-06-10T22:49:44.7468598Z       ],
2026-06-10T22:49:44.7468693Z       "stages": {
2026-06-10T22:49:44.7468785Z         "doc": {
2026-06-10T22:49:44.7468888Z           "complete": false,
2026-06-10T22:49:44.7469071Z           "evidence": []
2026-06-10T22:49:44.7469161Z         },
2026-06-10T22:49:44.7469255Z         "impl": {
2026-06-10T22:49:44.7469351Z           "complete": true,
2026-06-10T22:49:44.7469453Z           "evidence": [
2026-06-10T22:49:44.7469536Z             {
2026-06-10T22:49:44.7469674Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-10T22:49:44.7469775Z               "line": 29
2026-06-10T22:49:44.7469859Z             },
2026-06-10T22:49:44.7469953Z             {
2026-06-10T22:49:44.7470068Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-10T22:49:44.7470164Z               "line": 174
2026-06-10T22:49:44.7470254Z             },
2026-06-10T22:49:44.7470345Z             {
2026-06-10T22:49:44.7470460Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-10T22:49:44.7470559Z               "line": 194
2026-06-10T22:49:44.7470654Z             },
2026-06-10T22:49:44.7470745Z             {
2026-06-10T22:49:44.7470854Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-10T22:49:44.7470944Z               "line": 222
2026-06-10T22:49:44.7471042Z             }
2026-06-10T22:49:44.7471127Z           ]
2026-06-10T22:49:44.7471212Z         },
2026-06-10T22:49:44.7471298Z         "int": {
2026-06-10T22:49:44.7471399Z           "complete": false,
2026-06-10T22:49:44.7471494Z           "evidence": []
2026-06-10T22:49:44.7471584Z         },
2026-06-10T22:49:44.7471676Z         "unit": {
2026-06-10T22:49:44.7471775Z           "complete": true,
2026-06-10T22:49:44.7471865Z           "evidence": [
2026-06-10T22:49:44.7471957Z             {
2026-06-10T22:49:44.7472071Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-10T22:49:44.7472166Z               "line": 329
2026-06-10T22:49:44.7472253Z             },
2026-06-10T22:49:44.7472339Z             {
2026-06-10T22:49:44.7472456Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-10T22:49:44.7472647Z               "line": 344
2026-06-10T22:49:44.7472745Z             },
2026-06-10T22:49:44.7472834Z             {
2026-06-10T22:49:44.7472955Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-10T22:49:44.7473045Z               "line": 417
2026-06-10T22:49:44.7473145Z             },
2026-06-10T22:49:44.7473230Z             {
2026-06-10T22:49:44.7473445Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-10T22:49:44.7473541Z               "line": 433
2026-06-10T22:49:44.7473617Z             },
2026-06-10T22:49:44.7473703Z             {
2026-06-10T22:49:44.7473821Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-10T22:49:44.7473918Z               "line": 492
2026-06-10T22:49:44.7474008Z             },
2026-06-10T22:49:44.7474089Z             {
2026-06-10T22:49:44.7474204Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-10T22:49:44.7474290Z               "line": 506
2026-06-10T22:49:44.7474379Z             },
2026-06-10T22:49:44.7474470Z             {
2026-06-10T22:49:44.7474586Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-10T22:49:44.7474685Z               "line": 517
2026-06-10T22:49:44.7474770Z             },
2026-06-10T22:49:44.7474858Z             {
2026-06-10T22:49:44.7474971Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-10T22:49:44.7475065Z               "line": 528
2026-06-10T22:49:44.7475156Z             }
2026-06-10T22:49:44.7475246Z           ]
2026-06-10T22:49:44.7475326Z         }
2026-06-10T22:49:44.7475415Z       }
2026-06-10T22:49:44.7475492Z     },
2026-06-10T22:49:44.7475569Z     {
2026-06-10T22:49:44.7475697Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-10T22:49:44.7476345Z       "title": "Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)",
2026-06-10T22:49:44.7476442Z       "requiredStages": [
2026-06-10T22:49:44.7476537Z         "impl",
2026-06-10T22:49:44.7476623Z         "unit"
2026-06-10T22:49:44.7476713Z       ],
2026-06-10T22:49:44.7476800Z       "stages": {
2026-06-10T22:49:44.7476894Z         "doc": {
2026-06-10T22:49:44.7476994Z           "complete": false,
2026-06-10T22:49:44.7477086Z           "evidence": []
2026-06-10T22:49:44.7477171Z         },
2026-06-10T22:49:44.7477266Z         "impl": {
2026-06-10T22:49:44.7477371Z           "complete": true,
2026-06-10T22:49:44.7477458Z           "evidence": [
2026-06-10T22:49:44.7477542Z             {
2026-06-10T22:49:44.7477686Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-10T22:49:44.7477777Z               "line": 27
2026-06-10T22:49:44.7477871Z             },
2026-06-10T22:49:44.7477956Z             {
2026-06-10T22:49:44.7478090Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-10T22:49:44.7478186Z               "line": 110
2026-06-10T22:49:44.7478280Z             },
2026-06-10T22:49:44.7478376Z             {
2026-06-10T22:49:44.7478501Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-10T22:49:44.7478595Z               "line": 153
2026-06-10T22:49:44.7478686Z             },
2026-06-10T22:49:44.7478781Z             {
2026-06-10T22:49:44.7478909Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-10T22:49:44.7479082Z               "line": 182
2026-06-10T22:49:44.7479182Z             },
2026-06-10T22:49:44.7479272Z             {
2026-06-10T22:49:44.7479421Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-10T22:49:44.7479516Z               "line": 31
2026-06-10T22:49:44.7479611Z             },
2026-06-10T22:49:44.7479703Z             {
2026-06-10T22:49:44.7479844Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-10T22:49:44.7479940Z               "line": 113
2026-06-10T22:49:44.7480037Z             },
2026-06-10T22:49:44.7480135Z             {
2026-06-10T22:49:44.7480277Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-10T22:49:44.7480480Z               "line": 138
2026-06-10T22:49:44.7480570Z             }
2026-06-10T22:49:44.7480657Z           ]
2026-06-10T22:49:44.7480748Z         },
2026-06-10T22:49:44.7480842Z         "int": {
2026-06-10T22:49:44.7480943Z           "complete": false,
2026-06-10T22:49:44.7481034Z           "evidence": []
2026-06-10T22:49:44.7481219Z         },
2026-06-10T22:49:44.7481315Z         "unit": {
2026-06-10T22:49:44.7481410Z           "complete": true,
2026-06-10T22:49:44.7481514Z           "evidence": [
2026-06-10T22:49:44.7481602Z             {
2026-06-10T22:49:44.7481734Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-10T22:49:44.7481829Z               "line": 261
2026-06-10T22:49:44.7481921Z             },
2026-06-10T22:49:44.7482011Z             {
2026-06-10T22:49:44.7482139Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-10T22:49:44.7482236Z               "line": 276
2026-06-10T22:49:44.7482335Z             },
2026-06-10T22:49:44.7482425Z             {
2026-06-10T22:49:44.7482556Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-10T22:49:44.7482654Z               "line": 293
2026-06-10T22:49:44.7482750Z             },
2026-06-10T22:49:44.7482837Z             {
2026-06-10T22:49:44.7482969Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-10T22:49:44.7483073Z               "line": 310
2026-06-10T22:49:44.7483163Z             },
2026-06-10T22:49:44.7483249Z             {
2026-06-10T22:49:44.7483385Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-10T22:49:44.7483485Z               "line": 327
2026-06-10T22:49:44.7483577Z             },
2026-06-10T22:49:44.7483667Z             {
2026-06-10T22:49:44.7483795Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-10T22:49:44.7483896Z               "line": 366
2026-06-10T22:49:44.7483981Z             },
2026-06-10T22:49:44.7484076Z             {
2026-06-10T22:49:44.7484235Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-10T22:49:44.7484329Z               "line": 179
2026-06-10T22:49:44.7484421Z             },
2026-06-10T22:49:44.7484506Z             {
2026-06-10T22:49:44.7484649Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-10T22:49:44.7484745Z               "line": 194
2026-06-10T22:49:44.7484845Z             },
2026-06-10T22:49:44.7484944Z             {
2026-06-10T22:49:44.7485079Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-10T22:49:44.7485174Z               "line": 204
2026-06-10T22:49:44.7485264Z             },
2026-06-10T22:49:44.7485355Z             {
2026-06-10T22:49:44.7485494Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-10T22:49:44.7485592Z               "line": 259
2026-06-10T22:49:44.7485682Z             },
2026-06-10T22:49:44.7485773Z             {
2026-06-10T22:49:44.7485914Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-10T22:49:44.7486014Z               "line": 269
2026-06-10T22:49:44.7486105Z             },
2026-06-10T22:49:44.7486196Z             {
2026-06-10T22:49:44.7486334Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-10T22:49:44.7486430Z               "line": 283
2026-06-10T22:49:44.7486520Z             }
2026-06-10T22:49:44.7486614Z           ]
2026-06-10T22:49:44.7486716Z         }
2026-06-10T22:49:44.7486806Z       }
2026-06-10T22:49:44.7486901Z     },
2026-06-10T22:49:44.7486987Z     {
2026-06-10T22:49:44.7487107Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-10T22:49:44.7487297Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-10T22:49:44.7487402Z       "requiredStages": [],
2026-06-10T22:49:44.7487493Z       "stages": {
2026-06-10T22:49:44.7487588Z         "doc": {
2026-06-10T22:49:44.7487689Z           "complete": false,
2026-06-10T22:49:44.7487783Z           "evidence": []
2026-06-10T22:49:44.7487956Z         },
2026-06-10T22:49:44.7488046Z         "impl": {
2026-06-10T22:49:44.7488135Z           "complete": false,
2026-06-10T22:49:44.7488227Z           "evidence": []
2026-06-10T22:49:44.7488314Z         },
2026-06-10T22:49:44.7488403Z         "int": {
2026-06-10T22:49:44.7488492Z           "complete": false,
2026-06-10T22:49:44.7488583Z           "evidence": []
2026-06-10T22:49:44.7488742Z         },
2026-06-10T22:49:44.7488831Z         "unit": {
2026-06-10T22:49:44.7488922Z           "complete": false,
2026-06-10T22:49:44.7489094Z           "evidence": []
2026-06-10T22:49:44.7489174Z         }
2026-06-10T22:49:44.7489266Z       }
2026-06-10T22:49:44.7489356Z     },
2026-06-10T22:49:44.7489441Z     {
2026-06-10T22:49:44.7489571Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-10T22:49:44.7490352Z       "title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)",
2026-06-10T22:49:44.7490462Z       "requiredStages": [
2026-06-10T22:49:44.7490554Z         "impl",
2026-06-10T22:49:44.7490643Z         "unit"
2026-06-10T22:49:44.7490738Z       ],
2026-06-10T22:49:44.7490833Z       "stages": {
2026-06-10T22:49:44.7490942Z         "doc": {
2026-06-10T22:49:44.7491040Z           "complete": false,
2026-06-10T22:49:44.7491145Z           "evidence": []
2026-06-10T22:49:44.7491236Z         },
2026-06-10T22:49:44.7491327Z         "impl": {
2026-06-10T22:49:44.7491431Z           "complete": true,
2026-06-10T22:49:44.7491527Z           "evidence": [
2026-06-10T22:49:44.7491618Z             {
2026-06-10T22:49:44.7491750Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-10T22:49:44.7491847Z               "line": 26
2026-06-10T22:49:44.7491937Z             },
2026-06-10T22:49:44.7492032Z             {
2026-06-10T22:49:44.7492157Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-10T22:49:44.7492261Z               "line": 95
2026-06-10T22:49:44.7492356Z             },
2026-06-10T22:49:44.7492448Z             {
2026-06-10T22:49:44.7492571Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-10T22:49:44.7492666Z               "line": 166
2026-06-10T22:49:44.7492758Z             },
2026-06-10T22:49:44.7492848Z             {
2026-06-10T22:49:44.7492981Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-10T22:49:44.7493077Z               "line": 19
2026-06-10T22:49:44.7493177Z             },
2026-06-10T22:49:44.7493262Z             {
2026-06-10T22:49:44.7493388Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-10T22:49:44.7493483Z               "line": 50
2026-06-10T22:49:44.7493576Z             },
2026-06-10T22:49:44.7493666Z             {
2026-06-10T22:49:44.7493786Z               "path": "crates/spt-live/src/turn.rs",
2026-06-10T22:49:44.7493883Z               "line": 18
2026-06-10T22:49:44.7493974Z             },
2026-06-10T22:49:44.7494075Z             {
2026-06-10T22:49:44.7494184Z               "path": "crates/spt-live/src/turn.rs",
2026-06-10T22:49:44.7494279Z               "line": 71
2026-06-10T22:49:44.7494380Z             },
2026-06-10T22:49:44.7494466Z             {
2026-06-10T22:49:44.7494589Z               "path": "crates/spt-proto/src/event.rs",
2026-06-10T22:49:44.7494685Z               "line": 70
2026-06-10T22:49:44.7494785Z             }
2026-06-10T22:49:44.7494875Z           ]
2026-06-10T22:49:44.7494966Z         },
2026-06-10T22:49:44.7495062Z         "int": {
2026-06-10T22:49:44.7495162Z           "complete": false,
2026-06-10T22:49:44.7495257Z           "evidence": []
2026-06-10T22:49:44.7495344Z         },
2026-06-10T22:49:44.7495438Z         "unit": {
2026-06-10T22:49:44.7495538Z           "complete": true,
2026-06-10T22:49:44.7495639Z           "evidence": [
2026-06-10T22:49:44.7495725Z             {
2026-06-10T22:49:44.7495853Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-10T22:49:44.7495959Z               "line": 289
2026-06-10T22:49:44.7496153Z             },
2026-06-10T22:49:44.7496247Z             {
2026-06-10T22:49:44.7496376Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-10T22:49:44.7496470Z               "line": 308
2026-06-10T22:49:44.7496564Z             },
2026-06-10T22:49:44.7496656Z             {
2026-06-10T22:49:44.7496869Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-10T22:49:44.7496966Z               "line": 336
2026-06-10T22:49:44.7497056Z             },
2026-06-10T22:49:44.7497151Z             {
2026-06-10T22:49:44.7497272Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-10T22:49:44.7497371Z               "line": 399
2026-06-10T22:49:44.7497466Z             },
2026-06-10T22:49:44.7497557Z             {
2026-06-10T22:49:44.7497676Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-10T22:49:44.7497776Z               "line": 410
2026-06-10T22:49:44.7497867Z             },
2026-06-10T22:49:44.7497962Z             {
2026-06-10T22:49:44.7498095Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-10T22:49:44.7498191Z               "line": 441
2026-06-10T22:49:44.7498287Z             },
2026-06-10T22:49:44.7498372Z             {
2026-06-10T22:49:44.7498501Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-10T22:49:44.7498592Z               "line": 452
2026-06-10T22:49:44.7498696Z             },
2026-06-10T22:49:44.7498787Z             {
2026-06-10T22:49:44.7498907Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-10T22:49:44.7499095Z               "line": 77
2026-06-10T22:49:44.7499191Z             },
2026-06-10T22:49:44.7499283Z             {
2026-06-10T22:49:44.7499395Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-10T22:49:44.7499497Z               "line": 97
2026-06-10T22:49:44.7499587Z             },
2026-06-10T22:49:44.7499677Z             {
2026-06-10T22:49:44.7499802Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-10T22:49:44.7499897Z               "line": 112
2026-06-10T22:49:44.7499988Z             },
2026-06-10T22:49:44.7500073Z             {
2026-06-10T22:49:44.7500198Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-10T22:49:44.7500293Z               "line": 123
2026-06-10T22:49:44.7500383Z             },
2026-06-10T22:49:44.7500474Z             {
2026-06-10T22:49:44.7500593Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-10T22:49:44.7500697Z               "line": 130
2026-06-10T22:49:44.7500789Z             },
2026-06-10T22:49:44.7500884Z             {
2026-06-10T22:49:44.7501002Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-10T22:49:44.7501100Z               "line": 145
2026-06-10T22:49:44.7501199Z             },
2026-06-10T22:49:44.7501274Z             {
2026-06-10T22:49:44.7501388Z               "path": "crates/spt-live/src/turn.rs",
2026-06-10T22:49:44.7501484Z               "line": 115
2026-06-10T22:49:44.7501572Z             },
2026-06-10T22:49:44.7501662Z             {
2026-06-10T22:49:44.7501772Z               "path": "crates/spt-live/src/turn.rs",
2026-06-10T22:49:44.7501864Z               "line": 130
2026-06-10T22:49:44.7501943Z             },
2026-06-10T22:49:44.7502034Z             {
2026-06-10T22:49:44.7502149Z               "path": "crates/spt-proto/src/event.rs",
2026-06-10T22:49:44.7502239Z               "line": 336
2026-06-10T22:49:44.7502329Z             }
2026-06-10T22:49:44.7502417Z           ]
2026-06-10T22:49:44.7502502Z         }
2026-06-10T22:49:44.7502596Z       }
2026-06-10T22:49:44.7502684Z     },
2026-06-10T22:49:44.7502774Z     {
2026-06-10T22:49:44.7502897Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-10T22:49:44.7503145Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-10T22:49:44.7503240Z       "requiredStages": [
2026-06-10T22:49:44.7503332Z         "impl",
2026-06-10T22:49:44.7503423Z         "unit"
2026-06-10T22:49:44.7503518Z       ],
2026-06-10T22:49:44.7503613Z       "stages": {
2026-06-10T22:49:44.7503846Z         "doc": {
2026-06-10T22:49:44.7503952Z           "complete": true,
2026-06-10T22:49:44.7504043Z           "evidence": [
2026-06-10T22:49:44.7504122Z             {
2026-06-10T22:49:44.7504240Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-10T22:49:44.7504336Z               "line": 139
2026-06-10T22:49:44.7504425Z             }
2026-06-10T22:49:44.7504606Z           ]
2026-06-10T22:49:44.7504697Z         },
2026-06-10T22:49:44.7504787Z         "impl": {
2026-06-10T22:49:44.7504891Z           "complete": true,
2026-06-10T22:49:44.7504979Z           "evidence": [
2026-06-10T22:49:44.7505060Z             {
2026-06-10T22:49:44.7505183Z               "path": "crates/spt-store/src/db.rs",
2026-06-10T22:49:44.7505274Z               "line": 29
2026-06-10T22:49:44.7505369Z             },
2026-06-10T22:49:44.7505454Z             {
2026-06-10T22:49:44.7505579Z               "path": "crates/spt-store/src/notif.rs",
2026-06-10T22:49:44.7505674Z               "line": 101
2026-06-10T22:49:44.7505774Z             },
2026-06-10T22:49:44.7505865Z             {
2026-06-10T22:49:44.7505989Z               "path": "crates/spt-store/src/registry.rs",
2026-06-10T22:49:44.7506084Z               "line": 30
2026-06-10T22:49:44.7506175Z             },
2026-06-10T22:49:44.7506276Z             {
2026-06-10T22:49:44.7506394Z               "path": "crates/spt-store/src/spool.rs",
2026-06-10T22:49:44.7506505Z               "line": 48
2026-06-10T22:49:44.7506600Z             }
2026-06-10T22:49:44.7506684Z           ]
2026-06-10T22:49:44.7506778Z         },
2026-06-10T22:49:44.7506870Z         "int": {
2026-06-10T22:49:44.7506968Z           "complete": false,
2026-06-10T22:49:44.7507063Z           "evidence": []
2026-06-10T22:49:44.7507154Z         },
2026-06-10T22:49:44.7507250Z         "unit": {
2026-06-10T22:49:44.7507344Z           "complete": true,
2026-06-10T22:49:44.7507444Z           "evidence": [
2026-06-10T22:49:44.7507540Z             {
2026-06-10T22:49:44.7507664Z               "path": "crates/spt-store/src/registry.rs",
2026-06-10T22:49:44.7507759Z               "line": 162
2026-06-10T22:49:44.7507855Z             }
2026-06-10T22:49:44.7507946Z           ]
2026-06-10T22:49:44.7508035Z         }
2026-06-10T22:49:44.7508122Z       }
2026-06-10T22:49:44.7508207Z     },
2026-06-10T22:49:44.7508303Z     {
2026-06-10T22:49:44.7508427Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-10T22:49:44.7508809Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-10T22:49:44.7508917Z       "requiredStages": [
2026-06-10T22:49:44.7509105Z         "doc",
2026-06-10T22:49:44.7509204Z         "impl",
2026-06-10T22:49:44.7509290Z         "unit"
2026-06-10T22:49:44.7509386Z       ],
2026-06-10T22:49:44.7509472Z       "stages": {
2026-06-10T22:49:44.7509570Z         "doc": {
2026-06-10T22:49:44.7509670Z           "complete": true,
2026-06-10T22:49:44.7509766Z           "evidence": [
2026-06-10T22:49:44.7509857Z             {
2026-06-10T22:49:44.7509979Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-10T22:49:44.7510076Z               "line": 151
2026-06-10T22:49:44.7510162Z             }
2026-06-10T22:49:44.7510252Z           ]
2026-06-10T22:49:44.7510347Z         },
2026-06-10T22:49:44.7510434Z         "impl": {
2026-06-10T22:49:44.7510534Z           "complete": true,
2026-06-10T22:49:44.7510643Z           "evidence": [
2026-06-10T22:49:44.7510734Z             {
2026-06-10T22:49:44.7510853Z               "path": "crates/spt-store/src/registry.rs",
2026-06-10T22:49:44.7510952Z               "line": 22
2026-06-10T22:49:44.7511044Z             }
2026-06-10T22:49:44.7511134Z           ]
2026-06-10T22:49:44.7511229Z         },
2026-06-10T22:49:44.7511316Z         "int": {
2026-06-10T22:49:44.7511416Z           "complete": false,
2026-06-10T22:49:44.7511510Z           "evidence": []
2026-06-10T22:49:44.7511602Z         },
2026-06-10T22:49:44.7511698Z         "unit": {
2026-06-10T22:49:44.7511797Z           "complete": true,
2026-06-10T22:49:44.7512001Z           "evidence": [
2026-06-10T22:49:44.7512090Z             {
2026-06-10T22:49:44.7512213Z               "path": "crates/spt-store/src/registry.rs",
2026-06-10T22:49:44.7512309Z               "line": 298
2026-06-10T22:49:44.7512400Z             }
2026-06-10T22:49:44.7512494Z           ]
2026-06-10T22:49:44.7512580Z         }
2026-06-10T22:49:44.7512672Z       }
2026-06-10T22:49:44.7512856Z     },
2026-06-10T22:49:44.7512958Z     {
2026-06-10T22:49:44.7513072Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-10T22:49:44.7513515Z       "title": "Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)",
2026-06-10T22:49:44.7513620Z       "requiredStages": [
2026-06-10T22:49:44.7513710Z         "impl",
2026-06-10T22:49:44.7513800Z         "unit"
2026-06-10T22:49:44.7513897Z       ],
2026-06-10T22:49:44.7513992Z       "stages": {
2026-06-10T22:49:44.7514078Z         "doc": {
2026-06-10T22:49:44.7514188Z           "complete": true,
2026-06-10T22:49:44.7514284Z           "evidence": [
2026-06-10T22:49:44.7514372Z             {
2026-06-10T22:49:44.7514488Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-10T22:49:44.7514589Z               "line": 145
2026-06-10T22:49:44.7514683Z             }
2026-06-10T22:49:44.7514768Z           ]
2026-06-10T22:49:44.7516920Z         },
2026-06-10T22:49:44.7517045Z         "impl": {
2026-06-10T22:49:44.7517146Z           "complete": true,
2026-06-10T22:49:44.7517249Z           "evidence": [
2026-06-10T22:49:44.7517334Z             {
2026-06-10T22:49:44.7517478Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.7517570Z               "line": 540
2026-06-10T22:49:44.7517661Z             },
2026-06-10T22:49:44.7517752Z             {
2026-06-10T22:49:44.7517885Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7517980Z               "line": 184
2026-06-10T22:49:44.7518067Z             },
2026-06-10T22:49:44.7518172Z             {
2026-06-10T22:49:44.7518300Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7518397Z               "line": 282
2026-06-10T22:49:44.7518486Z             },
2026-06-10T22:49:44.7518571Z             {
2026-06-10T22:49:44.7518692Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-10T22:49:44.7518782Z               "line": 20
2026-06-10T22:49:44.7518877Z             }
2026-06-10T22:49:44.7519069Z           ]
2026-06-10T22:49:44.7519164Z         },
2026-06-10T22:49:44.7519254Z         "int": {
2026-06-10T22:49:44.7519350Z           "complete": false,
2026-06-10T22:49:44.7519449Z           "evidence": []
2026-06-10T22:49:44.7519535Z         },
2026-06-10T22:49:44.7519627Z         "unit": {
2026-06-10T22:49:44.7519727Z           "complete": true,
2026-06-10T22:49:44.7519821Z           "evidence": [
2026-06-10T22:49:44.7519907Z             {
2026-06-10T22:49:44.7520037Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7520135Z               "line": 856
2026-06-10T22:49:44.7520225Z             },
2026-06-10T22:49:44.7520312Z             {
2026-06-10T22:49:44.7520450Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-10T22:49:44.7520535Z               "line": 88
2026-06-10T22:49:44.7520626Z             },
2026-06-10T22:49:44.7520712Z             {
2026-06-10T22:49:44.7520845Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7520937Z               "line": 802
2026-06-10T22:49:44.7521022Z             },
2026-06-10T22:49:44.7521117Z             {
2026-06-10T22:49:44.7521241Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7521342Z               "line": 821
2026-06-10T22:49:44.7521432Z             },
2026-06-10T22:49:44.7521517Z             {
2026-06-10T22:49:44.7521647Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-10T22:49:44.7521742Z               "line": 278
2026-06-10T22:49:44.7521832Z             },
2026-06-10T22:49:44.7522052Z             {
2026-06-10T22:49:44.7522176Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-10T22:49:44.7522267Z               "line": 82
2026-06-10T22:49:44.7522357Z             },
2026-06-10T22:49:44.7522442Z             {
2026-06-10T22:49:44.7522561Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-10T22:49:44.7522655Z               "line": 99
2026-06-10T22:49:44.7522874Z             },
2026-06-10T22:49:44.7522970Z             {
2026-06-10T22:49:44.7523082Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-10T22:49:44.7523179Z               "line": 119
2026-06-10T22:49:44.7523270Z             }
2026-06-10T22:49:44.7523360Z           ]
2026-06-10T22:49:44.7523450Z         }
2026-06-10T22:49:44.7523537Z       }
2026-06-10T22:49:44.7523627Z     },
2026-06-10T22:49:44.7523721Z     {
2026-06-10T22:49:44.7523842Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-10T22:49:44.7525168Z       "title": "A dead node identity's registry rows must decay: only the per-(endpoint,node) epoch lease supersedes rows, so without eviction a vanished node's rows are immortal and poison bare-id resolution with phantom AcrossNodes ambiguity — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window; own rows never decay; a revived node re-inserts from its durable epoch within one pump cadence (4.10)",
2026-06-10T22:49:44.7525285Z       "requiredStages": [
2026-06-10T22:49:44.7525375Z         "doc",
2026-06-10T22:49:44.7525466Z         "impl",
2026-06-10T22:49:44.7525560Z         "unit"
2026-06-10T22:49:44.7525645Z       ],
2026-06-10T22:49:44.7525736Z       "stages": {
2026-06-10T22:49:44.7525831Z         "doc": {
2026-06-10T22:49:44.7525931Z           "complete": true,
2026-06-10T22:49:44.7526026Z           "evidence": [
2026-06-10T22:49:44.7526113Z             {
2026-06-10T22:49:44.7526222Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-10T22:49:44.7526307Z               "line": 157
2026-06-10T22:49:44.7526399Z             }
2026-06-10T22:49:44.7526499Z           ]
2026-06-10T22:49:44.7526575Z         },
2026-06-10T22:49:44.7526665Z         "impl": {
2026-06-10T22:49:44.7526762Z           "complete": true,
2026-06-10T22:49:44.7526862Z           "evidence": [
2026-06-10T22:49:44.7526942Z             {
2026-06-10T22:49:44.7527076Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.7527165Z               "line": 394
2026-06-10T22:49:44.7527252Z             },
2026-06-10T22:49:44.7527344Z             {
2026-06-10T22:49:44.7527476Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7527567Z               "line": 484
2026-06-10T22:49:44.7527645Z             },
2026-06-10T22:49:44.7527740Z             {
2026-06-10T22:49:44.7527866Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7527962Z               "line": 491
2026-06-10T22:49:44.7528052Z             },
2026-06-10T22:49:44.7528136Z             {
2026-06-10T22:49:44.7528264Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7528370Z               "line": 211
2026-06-10T22:49:44.7528455Z             }
2026-06-10T22:49:44.7528545Z           ]
2026-06-10T22:49:44.7528622Z         },
2026-06-10T22:49:44.7528713Z         "int": {
2026-06-10T22:49:44.7528807Z           "complete": false,
2026-06-10T22:49:44.7528903Z           "evidence": []
2026-06-10T22:49:44.7529076Z         },
2026-06-10T22:49:44.7529170Z         "unit": {
2026-06-10T22:49:44.7529266Z           "complete": true,
2026-06-10T22:49:44.7529356Z           "evidence": [
2026-06-10T22:49:44.7529446Z             {
2026-06-10T22:49:44.7529567Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7529666Z               "line": 1484
2026-06-10T22:49:44.7529752Z             },
2026-06-10T22:49:44.7529833Z             {
2026-06-10T22:49:44.7529949Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7530047Z               "line": 1542
2026-06-10T22:49:44.7530245Z             },
2026-06-10T22:49:44.7530329Z             {
2026-06-10T22:49:44.7530458Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7530554Z               "line": 834
2026-06-10T22:49:44.7530630Z             }
2026-06-10T22:49:44.7530724Z           ]
2026-06-10T22:49:44.7530799Z         }
2026-06-10T22:49:44.7530891Z       }
2026-06-10T22:49:44.7530968Z     },
2026-06-10T22:49:44.7531153Z     {
2026-06-10T22:49:44.7531277Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-10T22:49:44.7531468Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-10T22:49:44.7531568Z       "requiredStages": [
2026-06-10T22:49:44.7531654Z         "impl",
2026-06-10T22:49:44.7531744Z         "unit"
2026-06-10T22:49:44.7531831Z       ],
2026-06-10T22:49:44.7531921Z       "stages": {
2026-06-10T22:49:44.7532015Z         "doc": {
2026-06-10T22:49:44.7532112Z           "complete": false,
2026-06-10T22:49:44.7532207Z           "evidence": []
2026-06-10T22:49:44.7532302Z         },
2026-06-10T22:49:44.7532392Z         "impl": {
2026-06-10T22:49:44.7532489Z           "complete": true,
2026-06-10T22:49:44.7532588Z           "evidence": [
2026-06-10T22:49:44.7532669Z             {
2026-06-10T22:49:44.7532790Z               "path": "crates/spt-store/src/proc.rs",
2026-06-10T22:49:44.7532888Z               "line": 15
2026-06-10T22:49:44.7532978Z             },
2026-06-10T22:49:44.7533073Z             {
2026-06-10T22:49:44.7533192Z               "path": "crates/spt-store/src/registry.rs",
2026-06-10T22:49:44.7533281Z               "line": 55
2026-06-10T22:49:44.7533366Z             },
2026-06-10T22:49:44.7533444Z             {
2026-06-10T22:49:44.7533562Z               "path": "crates/spt-store/src/registry.rs",
2026-06-10T22:49:44.7533652Z               "line": 66
2026-06-10T22:49:44.7533744Z             },
2026-06-10T22:49:44.7533825Z             {
2026-06-10T22:49:44.7533944Z               "path": "crates/spt-store/src/registry.rs",
2026-06-10T22:49:44.7534039Z               "line": 115
2026-06-10T22:49:44.7534126Z             },
2026-06-10T22:49:44.7534206Z             {
2026-06-10T22:49:44.7534320Z               "path": "crates/spt-store/src/registry.rs",
2026-06-10T22:49:44.7534416Z               "line": 138
2026-06-10T22:49:44.7534507Z             }
2026-06-10T22:49:44.7534597Z           ]
2026-06-10T22:49:44.7534688Z         },
2026-06-10T22:49:44.7534769Z         "int": {
2026-06-10T22:49:44.7534869Z           "complete": false,
2026-06-10T22:49:44.7534959Z           "evidence": []
2026-06-10T22:49:44.7535051Z         },
2026-06-10T22:49:44.7535131Z         "unit": {
2026-06-10T22:49:44.7535231Z           "complete": true,
2026-06-10T22:49:44.7535328Z           "evidence": [
2026-06-10T22:49:44.7535413Z             {
2026-06-10T22:49:44.7535532Z               "path": "crates/spt-store/src/proc.rs",
2026-06-10T22:49:44.7535623Z               "line": 149
2026-06-10T22:49:44.7535714Z             },
2026-06-10T22:49:44.7535798Z             {
2026-06-10T22:49:44.7535921Z               "path": "crates/spt-store/src/proc.rs",
2026-06-10T22:49:44.7536017Z               "line": 155
2026-06-10T22:49:44.7536101Z             },
2026-06-10T22:49:44.7536186Z             {
2026-06-10T22:49:44.7536301Z               "path": "crates/spt-store/src/proc.rs",
2026-06-10T22:49:44.7536401Z               "line": 169
2026-06-10T22:49:44.7536482Z             },
2026-06-10T22:49:44.7536577Z             {
2026-06-10T22:49:44.7536693Z               "path": "crates/spt-store/src/proc.rs",
2026-06-10T22:49:44.7536782Z               "line": 178
2026-06-10T22:49:44.7536867Z             },
2026-06-10T22:49:44.7536945Z             {
2026-06-10T22:49:44.7537064Z               "path": "crates/spt-store/src/registry.rs",
2026-06-10T22:49:44.7537154Z               "line": 195
2026-06-10T22:49:44.7537240Z             },
2026-06-10T22:49:44.7537331Z             {
2026-06-10T22:49:44.7537445Z               "path": "crates/spt-store/src/registry.rs",
2026-06-10T22:49:44.7537540Z               "line": 208
2026-06-10T22:49:44.7537712Z             },
2026-06-10T22:49:44.7537807Z             {
2026-06-10T22:49:44.7537927Z               "path": "crates/spt-store/src/registry.rs",
2026-06-10T22:49:44.7538022Z               "line": 271
2026-06-10T22:49:44.7538117Z             },
2026-06-10T22:49:44.7538205Z             {
2026-06-10T22:49:44.7538393Z               "path": "crates/spt-store/src/registry.rs",
2026-06-10T22:49:44.7538488Z               "line": 290
2026-06-10T22:49:44.7538579Z             },
2026-06-10T22:49:44.7538659Z             {
2026-06-10T22:49:44.7538776Z               "path": "crates/spt-store/src/registry.rs",
2026-06-10T22:49:44.7538872Z               "line": 319
2026-06-10T22:49:44.7539048Z             }
2026-06-10T22:49:44.7539139Z           ]
2026-06-10T22:49:44.7539226Z         }
2026-06-10T22:49:44.7539307Z       }
2026-06-10T22:49:44.7539396Z     },
2026-06-10T22:49:44.7539478Z     {
2026-06-10T22:49:44.7539597Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-10T22:49:44.7539874Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-10T22:49:44.7539974Z       "requiredStages": [
2026-06-10T22:49:44.7540059Z         "impl",
2026-06-10T22:49:44.7540151Z         "unit",
2026-06-10T22:49:44.7540236Z         "int"
2026-06-10T22:49:44.7540317Z       ],
2026-06-10T22:49:44.7540412Z       "stages": {
2026-06-10T22:49:44.7540504Z         "doc": {
2026-06-10T22:49:44.7540597Z           "complete": false,
2026-06-10T22:49:44.7540694Z           "evidence": []
2026-06-10T22:49:44.7540776Z         },
2026-06-10T22:49:44.7540875Z         "impl": {
2026-06-10T22:49:44.7540966Z           "complete": true,
2026-06-10T22:49:44.7541062Z           "evidence": [
2026-06-10T22:49:44.7541138Z             {
2026-06-10T22:49:44.7541260Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-10T22:49:44.7541350Z               "line": 313
2026-06-10T22:49:44.7541437Z             },
2026-06-10T22:49:44.7541524Z             {
2026-06-10T22:49:44.7541646Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-10T22:49:44.7541732Z               "line": 695
2026-06-10T22:49:44.7541818Z             },
2026-06-10T22:49:44.7541908Z             {
2026-06-10T22:49:44.7542023Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-10T22:49:44.7542119Z               "line": 718
2026-06-10T22:49:44.7542209Z             },
2026-06-10T22:49:44.7542304Z             {
2026-06-10T22:49:44.7542420Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-10T22:49:44.7542509Z               "line": 742
2026-06-10T22:49:44.7542599Z             },
2026-06-10T22:49:44.7542682Z             {
2026-06-10T22:49:44.7542795Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-10T22:49:44.7542886Z               "line": 633
2026-06-10T22:49:44.7542982Z             },
2026-06-10T22:49:44.7543073Z             {
2026-06-10T22:49:44.7543186Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-10T22:49:44.7543282Z               "line": 745
2026-06-10T22:49:44.7543374Z             },
2026-06-10T22:49:44.7543462Z             {
2026-06-10T22:49:44.7543581Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-10T22:49:44.7543667Z               "line": 855
2026-06-10T22:49:44.7543756Z             },
2026-06-10T22:49:44.7543836Z             {
2026-06-10T22:49:44.7543960Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-10T22:49:44.7544052Z               "line": 903
2026-06-10T22:49:44.7544146Z             },
2026-06-10T22:49:44.7544231Z             {
2026-06-10T22:49:44.7544347Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-10T22:49:44.7544446Z               "line": 46
2026-06-10T22:49:44.7544528Z             },
2026-06-10T22:49:44.7544614Z             {
2026-06-10T22:49:44.7544728Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-10T22:49:44.7544833Z               "line": 167
2026-06-10T22:49:44.7544919Z             },
2026-06-10T22:49:44.7545000Z             {
2026-06-10T22:49:44.7545229Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-10T22:49:44.7545310Z               "line": 71
2026-06-10T22:49:44.7545401Z             },
2026-06-10T22:49:44.7545486Z             {
2026-06-10T22:49:44.7545607Z               "path": "crates/spt-store/src/spool.rs",
2026-06-10T22:49:44.7545701Z               "line": 134
2026-06-10T22:49:44.7545777Z             },
2026-06-10T22:49:44.7545949Z             {
2026-06-10T22:49:44.7546072Z               "path": "crates/spt-store/src/spool.rs",
2026-06-10T22:49:44.7546169Z               "line": 180
2026-06-10T22:49:44.7546255Z             }
2026-06-10T22:49:44.7546335Z           ]
2026-06-10T22:49:44.7546420Z         },
2026-06-10T22:49:44.7546501Z         "int": {
2026-06-10T22:49:44.7546591Z           "complete": true,
2026-06-10T22:49:44.7546684Z           "evidence": [
2026-06-10T22:49:44.7546769Z             {
2026-06-10T22:49:44.7546904Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-10T22:49:44.7547004Z               "line": 27
2026-06-10T22:49:44.7547098Z             },
2026-06-10T22:49:44.7547176Z             {
2026-06-10T22:49:44.7547310Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-10T22:49:44.7547399Z               "line": 129
2026-06-10T22:49:44.7547486Z             },
2026-06-10T22:49:44.7547576Z             {
2026-06-10T22:49:44.7547695Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-10T22:49:44.7547781Z               "line": 200
2026-06-10T22:49:44.7547867Z             }
2026-06-10T22:49:44.7547962Z           ]
2026-06-10T22:49:44.7548038Z         },
2026-06-10T22:49:44.7548130Z         "unit": {
2026-06-10T22:49:44.7548234Z           "complete": true,
2026-06-10T22:49:44.7548325Z           "evidence": [
2026-06-10T22:49:44.7548416Z             {
2026-06-10T22:49:44.7548531Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-10T22:49:44.7548629Z               "line": 313
2026-06-10T22:49:44.7548716Z             },
2026-06-10T22:49:44.7548812Z             {
2026-06-10T22:49:44.7548930Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-10T22:49:44.7549091Z               "line": 345
2026-06-10T22:49:44.7549181Z             },
2026-06-10T22:49:44.7549270Z             {
2026-06-10T22:49:44.7549384Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-10T22:49:44.7549476Z               "line": 366
2026-06-10T22:49:44.7549576Z             },
2026-06-10T22:49:44.7549665Z             {
2026-06-10T22:49:44.7549781Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-10T22:49:44.7549877Z               "line": 254
2026-06-10T22:49:44.7549966Z             },
2026-06-10T22:49:44.7550058Z             {
2026-06-10T22:49:44.7550176Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-10T22:49:44.7550266Z               "line": 239
2026-06-10T22:49:44.7550343Z             },
2026-06-10T22:49:44.7550430Z             {
2026-06-10T22:49:44.7550549Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-10T22:49:44.7550639Z               "line": 230
2026-06-10T22:49:44.7550735Z             },
2026-06-10T22:49:44.7550820Z             {
2026-06-10T22:49:44.7550934Z               "path": "crates/spt-store/src/spool.rs",
2026-06-10T22:49:44.7551026Z               "line": 488
2026-06-10T22:49:44.7551111Z             },
2026-06-10T22:49:44.7551202Z             {
2026-06-10T22:49:44.7551322Z               "path": "crates/spt-store/src/spool.rs",
2026-06-10T22:49:44.7551417Z               "line": 518
2026-06-10T22:49:44.7551496Z             }
2026-06-10T22:49:44.7551578Z           ]
2026-06-10T22:49:44.7551670Z         }
2026-06-10T22:49:44.7551755Z       }
2026-06-10T22:49:44.7551844Z     },
2026-06-10T22:49:44.7551929Z     {
2026-06-10T22:49:44.7552064Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-06-10T22:49:44.7553661Z       "title": "A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.",
2026-06-10T22:49:44.7553962Z       "requiredStages": [
2026-06-10T22:49:44.7554061Z         "doc",
2026-06-10T22:49:44.7554150Z         "impl",
2026-06-10T22:49:44.7554241Z         "unit"
2026-06-10T22:49:44.7554335Z       ],
2026-06-10T22:49:44.7554425Z       "stages": {
2026-06-10T22:49:44.7554516Z         "doc": {
2026-06-10T22:49:44.7554612Z           "complete": true,
2026-06-10T22:49:44.7554701Z           "evidence": [
2026-06-10T22:49:44.7554792Z             {
2026-06-10T22:49:44.7554907Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-10T22:49:44.7554998Z               "line": 298
2026-06-10T22:49:44.7555078Z             }
2026-06-10T22:49:44.7555179Z           ]
2026-06-10T22:49:44.7555264Z         },
2026-06-10T22:49:44.7555350Z         "impl": {
2026-06-10T22:49:44.7555450Z           "complete": true,
2026-06-10T22:49:44.7555532Z           "evidence": [
2026-06-10T22:49:44.7555627Z             {
2026-06-10T22:49:44.7555760Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-10T22:49:44.7555861Z               "line": 33
2026-06-10T22:49:44.7555946Z             },
2026-06-10T22:49:44.7556027Z             {
2026-06-10T22:49:44.7556157Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-10T22:49:44.7556251Z               "line": 39
2026-06-10T22:49:44.7556342Z             }
2026-06-10T22:49:44.7556424Z           ]
2026-06-10T22:49:44.7556515Z         },
2026-06-10T22:49:44.7556599Z         "int": {
2026-06-10T22:49:44.7556695Z           "complete": false,
2026-06-10T22:49:44.7556787Z           "evidence": []
2026-06-10T22:49:44.7556881Z         },
2026-06-10T22:49:44.7556975Z         "unit": {
2026-06-10T22:49:44.7557066Z           "complete": true,
2026-06-10T22:49:44.7557165Z           "evidence": [
2026-06-10T22:49:44.7557249Z             {
2026-06-10T22:49:44.7557388Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-10T22:49:44.7557479Z               "line": 95
2026-06-10T22:49:44.7557559Z             }
2026-06-10T22:49:44.7557649Z           ]
2026-06-10T22:49:44.7557741Z         }
2026-06-10T22:49:44.7557831Z       }
2026-06-10T22:49:44.7557912Z     },
2026-06-10T22:49:44.7558002Z     {
2026-06-10T22:49:44.7558113Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-10T22:49:44.7558302Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-10T22:49:44.7558400Z       "requiredStages": [
2026-06-10T22:49:44.7558489Z         "impl",
2026-06-10T22:49:44.7558580Z         "unit"
2026-06-10T22:49:44.7558671Z       ],
2026-06-10T22:49:44.7558761Z       "stages": {
2026-06-10T22:49:44.7558851Z         "doc": {
2026-06-10T22:49:44.7559048Z           "complete": false,
2026-06-10T22:49:44.7559171Z           "evidence": []
2026-06-10T22:49:44.7559266Z         },
2026-06-10T22:49:44.7559359Z         "impl": {
2026-06-10T22:49:44.7559452Z           "complete": true,
2026-06-10T22:49:44.7559551Z           "evidence": [
2026-06-10T22:49:44.7559637Z             {
2026-06-10T22:49:44.7559783Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-10T22:49:44.7559882Z               "line": 56
2026-06-10T22:49:44.7559973Z             },
2026-06-10T22:49:44.7560065Z             {
2026-06-10T22:49:44.7560192Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-10T22:49:44.7560288Z               "line": 65
2026-06-10T22:49:44.7560384Z             },
2026-06-10T22:49:44.7560474Z             {
2026-06-10T22:49:44.7560598Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-10T22:49:44.7560694Z               "line": 72
2026-06-10T22:49:44.7560784Z             },
2026-06-10T22:49:44.7560980Z             {
2026-06-10T22:49:44.7561099Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7561194Z               "line": 33
2026-06-10T22:49:44.7561285Z             },
2026-06-10T22:49:44.7561375Z             {
2026-06-10T22:49:44.7561489Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7561582Z               "line": 65
2026-06-10T22:49:44.7561767Z             },
2026-06-10T22:49:44.7561862Z             {
2026-06-10T22:49:44.7561972Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7562066Z               "line": 74
2026-06-10T22:49:44.7562158Z             },
2026-06-10T22:49:44.7562249Z             {
2026-06-10T22:49:44.7562362Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7562451Z               "line": 83
2026-06-10T22:49:44.7562543Z             },
2026-06-10T22:49:44.7562634Z             {
2026-06-10T22:49:44.7562747Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7562848Z               "line": 92
2026-06-10T22:49:44.7562934Z             },
2026-06-10T22:49:44.7563024Z             {
2026-06-10T22:49:44.7563138Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7563235Z               "line": 101
2026-06-10T22:49:44.7563325Z             },
2026-06-10T22:49:44.7563410Z             {
2026-06-10T22:49:44.7563540Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7563629Z               "line": 112
2026-06-10T22:49:44.7563724Z             },
2026-06-10T22:49:44.7563817Z             {
2026-06-10T22:49:44.7563935Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7564025Z               "line": 130
2026-06-10T22:49:44.7564117Z             },
2026-06-10T22:49:44.7564207Z             {
2026-06-10T22:49:44.7564321Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7564416Z               "line": 139
2026-06-10T22:49:44.7564504Z             },
2026-06-10T22:49:44.7564592Z             {
2026-06-10T22:49:44.7564715Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7564811Z               "line": 148
2026-06-10T22:49:44.7564900Z             },
2026-06-10T22:49:44.7564985Z             {
2026-06-10T22:49:44.7565100Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7565191Z               "line": 159
2026-06-10T22:49:44.7565285Z             },
2026-06-10T22:49:44.7565381Z             {
2026-06-10T22:49:44.7565491Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7565591Z               "line": 167
2026-06-10T22:49:44.7565676Z             },
2026-06-10T22:49:44.7565763Z             {
2026-06-10T22:49:44.7565878Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7565972Z               "line": 176
2026-06-10T22:49:44.7566059Z             },
2026-06-10T22:49:44.7566149Z             {
2026-06-10T22:49:44.7566262Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7566354Z               "line": 185
2026-06-10T22:49:44.7566450Z             },
2026-06-10T22:49:44.7566536Z             {
2026-06-10T22:49:44.7566654Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7566746Z               "line": 194
2026-06-10T22:49:44.7566835Z             },
2026-06-10T22:49:44.7566926Z             {
2026-06-10T22:49:44.7567037Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7567140Z               "line": 206
2026-06-10T22:49:44.7567231Z             },
2026-06-10T22:49:44.7567328Z             {
2026-06-10T22:49:44.7567446Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7567540Z               "line": 213
2026-06-10T22:49:44.7567631Z             },
2026-06-10T22:49:44.7567726Z             {
2026-06-10T22:49:44.7567843Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7567938Z               "line": 222
2026-06-10T22:49:44.7568025Z             },
2026-06-10T22:49:44.7568124Z             {
2026-06-10T22:49:44.7568311Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7568411Z               "line": 229
2026-06-10T22:49:44.7568496Z             },
2026-06-10T22:49:44.7568587Z             {
2026-06-10T22:49:44.7568701Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7568796Z               "line": 296
2026-06-10T22:49:44.7568887Z             },
2026-06-10T22:49:44.7569159Z             {
2026-06-10T22:49:44.7569284Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7569364Z               "line": 308
2026-06-10T22:49:44.7569454Z             },
2026-06-10T22:49:44.7569541Z             {
2026-06-10T22:49:44.7569655Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7569755Z               "line": 395
2026-06-10T22:49:44.7569836Z             }
2026-06-10T22:49:44.7569923Z           ]
2026-06-10T22:49:44.7570017Z         },
2026-06-10T22:49:44.7570107Z         "int": {
2026-06-10T22:49:44.7570206Z           "complete": false,
2026-06-10T22:49:44.7570306Z           "evidence": []
2026-06-10T22:49:44.7570400Z         },
2026-06-10T22:49:44.7570500Z         "unit": {
2026-06-10T22:49:44.7570596Z           "complete": true,
2026-06-10T22:49:44.7570686Z           "evidence": [
2026-06-10T22:49:44.7570776Z             {
2026-06-10T22:49:44.7570892Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7570992Z               "line": 477
2026-06-10T22:49:44.7571082Z             },
2026-06-10T22:49:44.7571168Z             {
2026-06-10T22:49:44.7571287Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7571377Z               "line": 518
2026-06-10T22:49:44.7571468Z             },
2026-06-10T22:49:44.7571564Z             {
2026-06-10T22:49:44.7571673Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7571764Z               "line": 531
2026-06-10T22:49:44.7571851Z             },
2026-06-10T22:49:44.7571940Z             {
2026-06-10T22:49:44.7572050Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7572156Z               "line": 617
2026-06-10T22:49:44.7572250Z             }
2026-06-10T22:49:44.7572336Z           ]
2026-06-10T22:49:44.7572432Z         }
2026-06-10T22:49:44.7572518Z       }
2026-06-10T22:49:44.7572607Z     },
2026-06-10T22:49:44.7572689Z     {
2026-06-10T22:49:44.7572800Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-10T22:49:44.7573002Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-10T22:49:44.7573098Z       "requiredStages": [
2026-06-10T22:49:44.7573184Z         "impl",
2026-06-10T22:49:44.7573275Z         "unit"
2026-06-10T22:49:44.7573370Z       ],
2026-06-10T22:49:44.7573456Z       "stages": {
2026-06-10T22:49:44.7573547Z         "doc": {
2026-06-10T22:49:44.7573645Z           "complete": false,
2026-06-10T22:49:44.7573738Z           "evidence": []
2026-06-10T22:49:44.7573833Z         },
2026-06-10T22:49:44.7573923Z         "impl": {
2026-06-10T22:49:44.7574023Z           "complete": true,
2026-06-10T22:49:44.7574119Z           "evidence": [
2026-06-10T22:49:44.7574209Z             {
2026-06-10T22:49:44.7574328Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-10T22:49:44.7574424Z               "line": 143
2026-06-10T22:49:44.7574514Z             },
2026-06-10T22:49:44.7574599Z             {
2026-06-10T22:49:44.7574725Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.7574824Z               "line": 148
2026-06-10T22:49:44.7574914Z             }
2026-06-10T22:49:44.7575006Z           ]
2026-06-10T22:49:44.7575092Z         },
2026-06-10T22:49:44.7575185Z         "int": {
2026-06-10T22:49:44.7575280Z           "complete": false,
2026-06-10T22:49:44.7575376Z           "evidence": []
2026-06-10T22:49:44.7575465Z         },
2026-06-10T22:49:44.7575560Z         "unit": {
2026-06-10T22:49:44.7575660Z           "complete": true,
2026-06-10T22:49:44.7575751Z           "evidence": [
2026-06-10T22:49:44.7575841Z             {
2026-06-10T22:49:44.7575950Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-10T22:49:44.7576156Z               "line": 264
2026-06-10T22:49:44.7576241Z             },
2026-06-10T22:49:44.7576333Z             {
2026-06-10T22:49:44.7576456Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.7576551Z               "line": 544
2026-06-10T22:49:44.7576643Z             },
2026-06-10T22:49:44.7576804Z             {
2026-06-10T22:49:44.7576934Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.7577024Z               "line": 557
2026-06-10T22:49:44.7577114Z             }
2026-06-10T22:49:44.7577205Z           ]
2026-06-10T22:49:44.7577292Z         }
2026-06-10T22:49:44.7577381Z       }
2026-06-10T22:49:44.7577467Z     },
2026-06-10T22:49:44.7577554Z     {
2026-06-10T22:49:44.7577668Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-10T22:49:44.7577810Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-10T22:49:44.7577907Z       "requiredStages": [
2026-06-10T22:49:44.7578006Z         "impl",
2026-06-10T22:49:44.7578095Z         "unit"
2026-06-10T22:49:44.7578181Z       ],
2026-06-10T22:49:44.7578272Z       "stages": {
2026-06-10T22:49:44.7578356Z         "doc": {
2026-06-10T22:49:44.7578460Z           "complete": false,
2026-06-10T22:49:44.7578565Z           "evidence": []
2026-06-10T22:49:44.7578652Z         },
2026-06-10T22:49:44.7578751Z         "impl": {
2026-06-10T22:49:44.7578856Z           "complete": true,
2026-06-10T22:49:44.7579027Z           "evidence": [
2026-06-10T22:49:44.7579118Z             {
2026-06-10T22:49:44.7579271Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-10T22:49:44.7579366Z               "line": 114
2026-06-10T22:49:44.7579452Z             },
2026-06-10T22:49:44.7579544Z             {
2026-06-10T22:49:44.7579667Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-10T22:49:44.7579762Z               "line": 481
2026-06-10T22:49:44.7579844Z             }
2026-06-10T22:49:44.7579933Z           ]
2026-06-10T22:49:44.7580029Z         },
2026-06-10T22:49:44.7580116Z         "int": {
2026-06-10T22:49:44.7580216Z           "complete": false,
2026-06-10T22:49:44.7580305Z           "evidence": []
2026-06-10T22:49:44.7580396Z         },
2026-06-10T22:49:44.7580483Z         "unit": {
2026-06-10T22:49:44.7580577Z           "complete": true,
2026-06-10T22:49:44.7580676Z           "evidence": [
2026-06-10T22:49:44.7580762Z             {
2026-06-10T22:49:44.7580889Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-10T22:49:44.7580979Z               "line": 515
2026-06-10T22:49:44.7581070Z             }
2026-06-10T22:49:44.7581147Z           ]
2026-06-10T22:49:44.7581228Z         }
2026-06-10T22:49:44.7581313Z       }
2026-06-10T22:49:44.7581399Z     },
2026-06-10T22:49:44.7581490Z     {
2026-06-10T22:49:44.7581608Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-10T22:49:44.7581776Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-10T22:49:44.7581867Z       "requiredStages": [
2026-06-10T22:49:44.7581971Z         "impl",
2026-06-10T22:49:44.7582058Z         "unit"
2026-06-10T22:49:44.7582138Z       ],
2026-06-10T22:49:44.7582233Z       "stages": {
2026-06-10T22:49:44.7582314Z         "doc": {
2026-06-10T22:49:44.7582411Z           "complete": false,
2026-06-10T22:49:44.7582505Z           "evidence": []
2026-06-10T22:49:44.7582596Z         },
2026-06-10T22:49:44.7582687Z         "impl": {
2026-06-10T22:49:44.7582782Z           "complete": true,
2026-06-10T22:49:44.7582872Z           "evidence": [
2026-06-10T22:49:44.7582953Z             {
2026-06-10T22:49:44.7583078Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7583167Z               "line": 502
2026-06-10T22:49:44.7583254Z             },
2026-06-10T22:49:44.7583341Z             {
2026-06-10T22:49:44.7583463Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-10T22:49:44.7583553Z               "line": 28
2026-06-10T22:49:44.7583634Z             }
2026-06-10T22:49:44.7583844Z           ]
2026-06-10T22:49:44.7583925Z         },
2026-06-10T22:49:44.7584007Z         "int": {
2026-06-10T22:49:44.7584107Z           "complete": false,
2026-06-10T22:49:44.7584201Z           "evidence": []
2026-06-10T22:49:44.7584278Z         },
2026-06-10T22:49:44.7584360Z         "unit": {
2026-06-10T22:49:44.7584464Z           "complete": true,
2026-06-10T22:49:44.7584549Z           "evidence": [
2026-06-10T22:49:44.7584736Z             {
2026-06-10T22:49:44.7586840Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-10T22:49:44.7586959Z               "line": 229
2026-06-10T22:49:44.7587054Z             }
2026-06-10T22:49:44.7587140Z           ]
2026-06-10T22:49:44.7587227Z         }
2026-06-10T22:49:44.7587312Z       }
2026-06-10T22:49:44.7587397Z     },
2026-06-10T22:49:44.7587479Z     {
2026-06-10T22:49:44.7587598Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-10T22:49:44.7587745Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-10T22:49:44.7587847Z       "requiredStages": [],
2026-06-10T22:49:44.7587951Z       "stages": {
2026-06-10T22:49:44.7588046Z         "doc": {
2026-06-10T22:49:44.7588148Z           "complete": false,
2026-06-10T22:49:44.7588247Z           "evidence": []
2026-06-10T22:49:44.7588351Z         },
2026-06-10T22:49:44.7588443Z         "impl": {
2026-06-10T22:49:44.7588538Z           "complete": false,
2026-06-10T22:49:44.7588641Z           "evidence": []
2026-06-10T22:49:44.7588726Z         },
2026-06-10T22:49:44.7588817Z         "int": {
2026-06-10T22:49:44.7588916Z           "complete": false,
2026-06-10T22:49:44.7589097Z           "evidence": []
2026-06-10T22:49:44.7589197Z         },
2026-06-10T22:49:44.7589292Z         "unit": {
2026-06-10T22:49:44.7589387Z           "complete": false,
2026-06-10T22:49:44.7589479Z           "evidence": []
2026-06-10T22:49:44.7589574Z         }
2026-06-10T22:49:44.7589668Z       }
2026-06-10T22:49:44.7589751Z     },
2026-06-10T22:49:44.7589845Z     {
2026-06-10T22:49:44.7589964Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-10T22:49:44.7590128Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-10T22:49:44.7590232Z       "requiredStages": [
2026-06-10T22:49:44.7590331Z         "impl",
2026-06-10T22:49:44.7590423Z         "unit"
2026-06-10T22:49:44.7590508Z       ],
2026-06-10T22:49:44.7590608Z       "stages": {
2026-06-10T22:49:44.7590700Z         "doc": {
2026-06-10T22:49:44.7590813Z           "complete": false,
2026-06-10T22:49:44.7590908Z           "evidence": []
2026-06-10T22:49:44.7591005Z         },
2026-06-10T22:49:44.7591100Z         "impl": {
2026-06-10T22:49:44.7591198Z           "complete": true,
2026-06-10T22:49:44.7591293Z           "evidence": [
2026-06-10T22:49:44.7591380Z             {
2026-06-10T22:49:44.7591501Z               "path": "crates/spt-live/src/turn.rs",
2026-06-10T22:49:44.7591591Z               "line": 19
2026-06-10T22:49:44.7591683Z             },
2026-06-10T22:49:44.7591774Z             {
2026-06-10T22:49:44.7591902Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-10T22:49:44.7591998Z               "line": 347
2026-06-10T22:49:44.7592088Z             },
2026-06-10T22:49:44.7592178Z             {
2026-06-10T22:49:44.7592298Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-10T22:49:44.7592398Z               "line": 383
2026-06-10T22:49:44.7592492Z             },
2026-06-10T22:49:44.7592579Z             {
2026-06-10T22:49:44.7592708Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-10T22:49:44.7592803Z               "line": 15
2026-06-10T22:49:44.7592893Z             },
2026-06-10T22:49:44.7592981Z             {
2026-06-10T22:49:44.7593104Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-10T22:49:44.7593198Z               "line": 48
2026-06-10T22:49:44.7593286Z             },
2026-06-10T22:49:44.7593375Z             {
2026-06-10T22:49:44.7593485Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-10T22:49:44.7593596Z               "line": 119
2026-06-10T22:49:44.7593680Z             },
2026-06-10T22:49:44.7593906Z             {
2026-06-10T22:49:44.7594018Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7594113Z               "line": 2858
2026-06-10T22:49:44.7594204Z             }
2026-06-10T22:49:44.7594295Z           ]
2026-06-10T22:49:44.7594390Z         },
2026-06-10T22:49:44.7594475Z         "int": {
2026-06-10T22:49:44.7594576Z           "complete": false,
2026-06-10T22:49:44.7594771Z           "evidence": []
2026-06-10T22:49:44.7594863Z         },
2026-06-10T22:49:44.7594958Z         "unit": {
2026-06-10T22:49:44.7595052Z           "complete": true,
2026-06-10T22:49:44.7595153Z           "evidence": [
2026-06-10T22:49:44.7595243Z             {
2026-06-10T22:49:44.7595381Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-10T22:49:44.7595482Z               "line": 496
2026-06-10T22:49:44.7595568Z             },
2026-06-10T22:49:44.7595658Z             {
2026-06-10T22:49:44.7595778Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-10T22:49:44.7595883Z               "line": 165
2026-06-10T22:49:44.7595968Z             },
2026-06-10T22:49:44.7596059Z             {
2026-06-10T22:49:44.7596179Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-10T22:49:44.7596273Z               "line": 175
2026-06-10T22:49:44.7596363Z             }
2026-06-10T22:49:44.7596448Z           ]
2026-06-10T22:49:44.7596548Z         }
2026-06-10T22:49:44.7596647Z       }
2026-06-10T22:49:44.7596737Z     },
2026-06-10T22:49:44.7596828Z     {
2026-06-10T22:49:44.7596942Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-10T22:49:44.7597815Z       "title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)",
2026-06-10T22:49:44.7597920Z       "requiredStages": [
2026-06-10T22:49:44.7598015Z         "impl",
2026-06-10T22:49:44.7598121Z         "unit"
2026-06-10T22:49:44.7598211Z       ],
2026-06-10T22:49:44.7598305Z       "stages": {
2026-06-10T22:49:44.7598398Z         "doc": {
2026-06-10T22:49:44.7598502Z           "complete": false,
2026-06-10T22:49:44.7598601Z           "evidence": []
2026-06-10T22:49:44.7598694Z         },
2026-06-10T22:49:44.7598788Z         "impl": {
2026-06-10T22:49:44.7598888Z           "complete": true,
2026-06-10T22:49:44.7599070Z           "evidence": [
2026-06-10T22:49:44.7599150Z             {
2026-06-10T22:49:44.7599268Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7599363Z               "line": 2616
2026-06-10T22:49:44.7599457Z             },
2026-06-10T22:49:44.7599542Z             {
2026-06-10T22:49:44.7599652Z               "path": "crates/spt/src/elevation.rs",
2026-06-10T22:49:44.7599739Z               "line": 103
2026-06-10T22:49:44.7599824Z             },
2026-06-10T22:49:44.7599919Z             {
2026-06-10T22:49:44.7600030Z               "path": "crates/spt/src/elevation.rs",
2026-06-10T22:49:44.7600134Z               "line": 135
2026-06-10T22:49:44.7600224Z             }
2026-06-10T22:49:44.7600311Z           ]
2026-06-10T22:49:44.7600401Z         },
2026-06-10T22:49:44.7600491Z         "int": {
2026-06-10T22:49:44.7600582Z           "complete": false,
2026-06-10T22:49:44.7600678Z           "evidence": []
2026-06-10T22:49:44.7600763Z         },
2026-06-10T22:49:44.7600844Z         "unit": {
2026-06-10T22:49:44.7600936Z           "complete": true,
2026-06-10T22:49:44.7601035Z           "evidence": [
2026-06-10T22:49:44.7601121Z             {
2026-06-10T22:49:44.7601246Z               "path": "crates/spt/src/elevation.rs",
2026-06-10T22:49:44.7601341Z               "line": 258
2026-06-10T22:49:44.7601450Z             },
2026-06-10T22:49:44.7601546Z             {
2026-06-10T22:49:44.7601656Z               "path": "crates/spt/src/elevation.rs",
2026-06-10T22:49:44.7601749Z               "line": 283
2026-06-10T22:49:44.7601839Z             },
2026-06-10T22:49:44.7602038Z             {
2026-06-10T22:49:44.7602152Z               "path": "crates/spt/src/elevation.rs",
2026-06-10T22:49:44.7602252Z               "line": 296
2026-06-10T22:49:44.7602344Z             },
2026-06-10T22:49:44.7602438Z             {
2026-06-10T22:49:44.7602553Z               "path": "crates/spt/src/elevation.rs",
2026-06-10T22:49:44.7602648Z               "line": 308
2026-06-10T22:49:44.7602829Z             }
2026-06-10T22:49:44.7602925Z           ]
2026-06-10T22:49:44.7603025Z         }
2026-06-10T22:49:44.7603115Z       }
2026-06-10T22:49:44.7603202Z     },
2026-06-10T22:49:44.7603296Z     {
2026-06-10T22:49:44.7603406Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-10T22:49:44.7603569Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-10T22:49:44.7603664Z       "requiredStages": [
2026-06-10T22:49:44.7603764Z         "impl",
2026-06-10T22:49:44.7603855Z         "unit"
2026-06-10T22:49:44.7603944Z       ],
2026-06-10T22:49:44.7604040Z       "stages": {
2026-06-10T22:49:44.7604136Z         "doc": {
2026-06-10T22:49:44.7604241Z           "complete": false,
2026-06-10T22:49:44.7604331Z           "evidence": []
2026-06-10T22:49:44.7604428Z         },
2026-06-10T22:49:44.7604528Z         "impl": {
2026-06-10T22:49:44.7604621Z           "complete": true,
2026-06-10T22:49:44.7604720Z           "evidence": [
2026-06-10T22:49:44.7604807Z             {
2026-06-10T22:49:44.7604940Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-10T22:49:44.7605030Z               "line": 35
2026-06-10T22:49:44.7605122Z             }
2026-06-10T22:49:44.7605218Z           ]
2026-06-10T22:49:44.7605307Z         },
2026-06-10T22:49:44.7605399Z         "int": {
2026-06-10T22:49:44.7605494Z           "complete": false,
2026-06-10T22:49:44.7605589Z           "evidence": []
2026-06-10T22:49:44.7605674Z         },
2026-06-10T22:49:44.7605776Z         "unit": {
2026-06-10T22:49:44.7605870Z           "complete": true,
2026-06-10T22:49:44.7605965Z           "evidence": [
2026-06-10T22:49:44.7606062Z             {
2026-06-10T22:49:44.7606180Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-10T22:49:44.7606280Z               "line": 220
2026-06-10T22:49:44.7606362Z             }
2026-06-10T22:49:44.7606452Z           ]
2026-06-10T22:49:44.7606547Z         }
2026-06-10T22:49:44.7606633Z       }
2026-06-10T22:49:44.7606725Z     },
2026-06-10T22:49:44.7606809Z     {
2026-06-10T22:49:44.7606932Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-10T22:49:44.7607188Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-10T22:49:44.7607292Z       "requiredStages": [
2026-06-10T22:49:44.7607383Z         "impl",
2026-06-10T22:49:44.7607474Z         "unit"
2026-06-10T22:49:44.7607569Z       ],
2026-06-10T22:49:44.7607660Z       "stages": {
2026-06-10T22:49:44.7607751Z         "doc": {
2026-06-10T22:49:44.7607850Z           "complete": false,
2026-06-10T22:49:44.7607946Z           "evidence": []
2026-06-10T22:49:44.7608042Z         },
2026-06-10T22:49:44.7608136Z         "impl": {
2026-06-10T22:49:44.7608231Z           "complete": true,
2026-06-10T22:49:44.7608324Z           "evidence": [
2026-06-10T22:49:44.7608414Z             {
2026-06-10T22:49:44.7608546Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-10T22:49:44.7608643Z               "line": 398
2026-06-10T22:49:44.7608737Z             },
2026-06-10T22:49:44.7608833Z             {
2026-06-10T22:49:44.7609057Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.7609152Z               "line": 409
2026-06-10T22:49:44.7609249Z             },
2026-06-10T22:49:44.7609339Z             {
2026-06-10T22:49:44.7609467Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-10T22:49:44.7609558Z               "line": 156
2026-06-10T22:49:44.7609644Z             }
2026-06-10T22:49:44.7609738Z           ]
2026-06-10T22:49:44.7609823Z         },
2026-06-10T22:49:44.7609919Z         "int": {
2026-06-10T22:49:44.7610013Z           "complete": false,
2026-06-10T22:49:44.7610227Z           "evidence": []
2026-06-10T22:49:44.7610318Z         },
2026-06-10T22:49:44.7610412Z         "unit": {
2026-06-10T22:49:44.7610508Z           "complete": true,
2026-06-10T22:49:44.7610604Z           "evidence": [
2026-06-10T22:49:44.7610694Z             {
2026-06-10T22:49:44.7610818Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.7611023Z               "line": 812
2026-06-10T22:49:44.7611118Z             },
2026-06-10T22:49:44.7611205Z             {
2026-06-10T22:49:44.7611328Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.7611418Z               "line": 826
2026-06-10T22:49:44.7611510Z             },
2026-06-10T22:49:44.7611605Z             {
2026-06-10T22:49:44.7611723Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.7611816Z               "line": 845
2026-06-10T22:49:44.7611906Z             },
2026-06-10T22:49:44.7611995Z             {
2026-06-10T22:49:44.7612116Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.7612211Z               "line": 862
2026-06-10T22:49:44.7612300Z             },
2026-06-10T22:49:44.7612380Z             {
2026-06-10T22:49:44.7612514Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-10T22:49:44.7612612Z               "line": 441
2026-06-10T22:49:44.7612702Z             }
2026-06-10T22:49:44.7612789Z           ]
2026-06-10T22:49:44.7612885Z         }
2026-06-10T22:49:44.7612983Z       }
2026-06-10T22:49:44.7613060Z     },
2026-06-10T22:49:44.7613147Z     {
2026-06-10T22:49:44.7613256Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-10T22:49:44.7614033Z       "title": "WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)",
2026-06-10T22:49:44.7614129Z       "requiredStages": [
2026-06-10T22:49:44.7614219Z         "doc",
2026-06-10T22:49:44.7614305Z         "impl",
2026-06-10T22:49:44.7614387Z         "unit"
2026-06-10T22:49:44.7614477Z       ],
2026-06-10T22:49:44.7614563Z       "stages": {
2026-06-10T22:49:44.7614653Z         "doc": {
2026-06-10T22:49:44.7614750Z           "complete": true,
2026-06-10T22:49:44.7614843Z           "evidence": [
2026-06-10T22:49:44.7614934Z             {
2026-06-10T22:49:44.7615055Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-10T22:49:44.7615153Z               "line": 343
2026-06-10T22:49:44.7615234Z             }
2026-06-10T22:49:44.7615324Z           ]
2026-06-10T22:49:44.7615406Z         },
2026-06-10T22:49:44.7615496Z         "impl": {
2026-06-10T22:49:44.7615586Z           "complete": true,
2026-06-10T22:49:44.7615677Z           "evidence": [
2026-06-10T22:49:44.7615768Z             {
2026-06-10T22:49:44.7615882Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-10T22:49:44.7615978Z               "line": 85
2026-06-10T22:49:44.7616063Z             },
2026-06-10T22:49:44.7616158Z             {
2026-06-10T22:49:44.7616283Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-10T22:49:44.7616392Z               "line": 99
2026-06-10T22:49:44.7616483Z             },
2026-06-10T22:49:44.7616573Z             {
2026-06-10T22:49:44.7616698Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-10T22:49:44.7616798Z               "line": 55
2026-06-10T22:49:44.7616888Z             },
2026-06-10T22:49:44.7616980Z             {
2026-06-10T22:49:44.7617097Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-10T22:49:44.7617189Z               "line": 31
2026-06-10T22:49:44.7617281Z             },
2026-06-10T22:49:44.7617374Z             {
2026-06-10T22:49:44.7617492Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-10T22:49:44.7617588Z               "line": 187
2026-06-10T22:49:44.7617678Z             },
2026-06-10T22:49:44.7617767Z             {
2026-06-10T22:49:44.7617891Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-10T22:49:44.7618058Z               "line": 95
2026-06-10T22:49:44.7618152Z             },
2026-06-10T22:49:44.7618239Z             {
2026-06-10T22:49:44.7618363Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-10T22:49:44.7618458Z               "line": 29
2026-06-10T22:49:44.7618550Z             },
2026-06-10T22:49:44.7618635Z             {
2026-06-10T22:49:44.7618831Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-10T22:49:44.7618930Z               "line": 104
2026-06-10T22:49:44.7619121Z             },
2026-06-10T22:49:44.7619208Z             {
2026-06-10T22:49:44.7619345Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7619435Z               "line": 192
2026-06-10T22:49:44.7619528Z             },
2026-06-10T22:49:44.7619617Z             {
2026-06-10T22:49:44.7619746Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-10T22:49:44.7619843Z               "line": 28
2026-06-10T22:49:44.7619936Z             },
2026-06-10T22:49:44.7620027Z             {
2026-06-10T22:49:44.7620143Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-10T22:49:44.7620242Z               "line": 74
2026-06-10T22:49:44.7620327Z             },
2026-06-10T22:49:44.7620417Z             {
2026-06-10T22:49:44.7620549Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-10T22:49:44.7620649Z               "line": 32
2026-06-10T22:49:44.7620739Z             },
2026-06-10T22:49:44.7620825Z             {
2026-06-10T22:49:44.7620949Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-10T22:49:44.7621044Z               "line": 40
2026-06-10T22:49:44.7621140Z             },
2026-06-10T22:49:44.7621235Z             {
2026-06-10T22:49:44.7621353Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-10T22:49:44.7621450Z               "line": 184
2026-06-10T22:49:44.7621536Z             },
2026-06-10T22:49:44.7621630Z             {
2026-06-10T22:49:44.7621746Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-10T22:49:44.7621850Z               "line": 70
2026-06-10T22:49:44.7621945Z             },
2026-06-10T22:49:44.7622036Z             {
2026-06-10T22:49:44.7622151Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-10T22:49:44.7622241Z               "line": 223
2026-06-10T22:49:44.7622342Z             },
2026-06-10T22:49:44.7622437Z             {
2026-06-10T22:49:44.7622565Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-10T22:49:44.7622657Z               "line": 37
2026-06-10T22:49:44.7622747Z             },
2026-06-10T22:49:44.7622837Z             {
2026-06-10T22:49:44.7622955Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-10T22:49:44.7623050Z               "line": 38
2026-06-10T22:49:44.7623140Z             },
2026-06-10T22:49:44.7623224Z             {
2026-06-10T22:49:44.7623349Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-10T22:49:44.7623445Z               "line": 36
2026-06-10T22:49:44.7623539Z             },
2026-06-10T22:49:44.7623629Z             {
2026-06-10T22:49:44.7623750Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-10T22:49:44.7623840Z               "line": 40
2026-06-10T22:49:44.7623930Z             }
2026-06-10T22:49:44.7624026Z           ]
2026-06-10T22:49:44.7624112Z         },
2026-06-10T22:49:44.7624201Z         "int": {
2026-06-10T22:49:44.7624303Z           "complete": false,
2026-06-10T22:49:44.7624403Z           "evidence": []
2026-06-10T22:49:44.7624498Z         },
2026-06-10T22:49:44.7624584Z         "unit": {
2026-06-10T22:49:44.7624689Z           "complete": true,
2026-06-10T22:49:44.7624779Z           "evidence": [
2026-06-10T22:49:44.7624870Z             {
2026-06-10T22:49:44.7624995Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-10T22:49:44.7625088Z               "line": 212
2026-06-10T22:49:44.7625184Z             },
2026-06-10T22:49:44.7625267Z             {
2026-06-10T22:49:44.7625399Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-10T22:49:44.7625596Z               "line": 136
2026-06-10T22:49:44.7625690Z             },
2026-06-10T22:49:44.7625774Z             {
2026-06-10T22:49:44.7625904Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-10T22:49:44.7626000Z               "line": 685
2026-06-10T22:49:44.7626089Z             },
2026-06-10T22:49:44.7626179Z             {
2026-06-10T22:49:44.7626390Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-10T22:49:44.7626490Z               "line": 224
2026-06-10T22:49:44.7626577Z             },
2026-06-10T22:49:44.7626672Z             {
2026-06-10T22:49:44.7626795Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-10T22:49:44.7626886Z               "line": 157
2026-06-10T22:49:44.7626981Z             },
2026-06-10T22:49:44.7627066Z             {
2026-06-10T22:49:44.7627187Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-10T22:49:44.7627282Z               "line": 112
2026-06-10T22:49:44.7627381Z             },
2026-06-10T22:49:44.7627478Z             {
2026-06-10T22:49:44.7627592Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-10T22:49:44.7627692Z               "line": 157
2026-06-10T22:49:44.7627777Z             },
2026-06-10T22:49:44.7627869Z             {
2026-06-10T22:49:44.7627991Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-10T22:49:44.7628100Z               "line": 215
2026-06-10T22:49:44.7628191Z             },
2026-06-10T22:49:44.7628275Z             {
2026-06-10T22:49:44.7628393Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-10T22:49:44.7628489Z               "line": 140
2026-06-10T22:49:44.7628581Z             },
2026-06-10T22:49:44.7628675Z             {
2026-06-10T22:49:44.7628790Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-10T22:49:44.7628885Z               "line": 162
2026-06-10T22:49:44.7629056Z             }
2026-06-10T22:49:44.7629153Z           ]
2026-06-10T22:49:44.7629239Z         }
2026-06-10T22:49:44.7629338Z       }
2026-06-10T22:49:44.7629425Z     },
2026-06-10T22:49:44.7629514Z     {
2026-06-10T22:49:44.7629643Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-10T22:49:44.7629801Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-10T22:49:44.7629906Z       "requiredStages": [
2026-06-10T22:49:44.7629996Z         "impl",
2026-06-10T22:49:44.7630093Z         "unit"
2026-06-10T22:49:44.7630191Z       ],
2026-06-10T22:49:44.7630282Z       "stages": {
2026-06-10T22:49:44.7630374Z         "doc": {
2026-06-10T22:49:44.7630478Z           "complete": false,
2026-06-10T22:49:44.7630578Z           "evidence": []
2026-06-10T22:49:44.7630665Z         },
2026-06-10T22:49:44.7630760Z         "impl": {
2026-06-10T22:49:44.7630858Z           "complete": true,
2026-06-10T22:49:44.7630948Z           "evidence": [
2026-06-10T22:49:44.7631044Z             {
2026-06-10T22:49:44.7631161Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-10T22:49:44.7631260Z               "line": 95
2026-06-10T22:49:44.7631352Z             },
2026-06-10T22:49:44.7631443Z             {
2026-06-10T22:49:44.7631561Z               "path": "crates/spt/src/api/startup.rs",
2026-06-10T22:49:44.7631657Z               "line": 102
2026-06-10T22:49:44.7631743Z             }
2026-06-10T22:49:44.7631833Z           ]
2026-06-10T22:49:44.7631918Z         },
2026-06-10T22:49:44.7632011Z         "int": {
2026-06-10T22:49:44.7632115Z           "complete": false,
2026-06-10T22:49:44.7632214Z           "evidence": []
2026-06-10T22:49:44.7632306Z         },
2026-06-10T22:49:44.7632396Z         "unit": {
2026-06-10T22:49:44.7632491Z           "complete": true,
2026-06-10T22:49:44.7632587Z           "evidence": [
2026-06-10T22:49:44.7632673Z             {
2026-06-10T22:49:44.7632791Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-10T22:49:44.7632887Z               "line": 250
2026-06-10T22:49:44.7632979Z             },
2026-06-10T22:49:44.7633072Z             {
2026-06-10T22:49:44.7633187Z               "path": "crates/spt-store/src/proc.rs",
2026-06-10T22:49:44.7633392Z               "line": 198
2026-06-10T22:49:44.7633482Z             },
2026-06-10T22:49:44.7633572Z             {
2026-06-10T22:49:44.7633690Z               "path": "crates/spt/src/api/startup.rs",
2026-06-10T22:49:44.7633785Z               "line": 442
2026-06-10T22:49:44.7633875Z             },
2026-06-10T22:49:44.7633962Z             {
2026-06-10T22:49:44.7634181Z               "path": "crates/spt/src/api/startup.rs",
2026-06-10T22:49:44.7634272Z               "line": 475
2026-06-10T22:49:44.7634367Z             }
2026-06-10T22:49:44.7634456Z           ]
2026-06-10T22:49:44.7634544Z         }
2026-06-10T22:49:44.7634634Z       }
2026-06-10T22:49:44.7634724Z     },
2026-06-10T22:49:44.7634815Z     {
2026-06-10T22:49:44.7634925Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-10T22:49:44.7635100Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-10T22:49:44.7635207Z       "requiredStages": [
2026-06-10T22:49:44.7635301Z         "impl",
2026-06-10T22:49:44.7635392Z         "unit"
2026-06-10T22:49:44.7635483Z       ],
2026-06-10T22:49:44.7635573Z       "stages": {
2026-06-10T22:49:44.7635663Z         "doc": {
2026-06-10T22:49:44.7635764Z           "complete": false,
2026-06-10T22:49:44.7635860Z           "evidence": []
2026-06-10T22:49:44.7635949Z         },
2026-06-10T22:49:44.7636040Z         "impl": {
2026-06-10T22:49:44.7636147Z           "complete": true,
2026-06-10T22:49:44.7636245Z           "evidence": [
2026-06-10T22:49:44.7636330Z             {
2026-06-10T22:49:44.7636454Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7636550Z               "line": 252
2026-06-10T22:49:44.7636640Z             },
2026-06-10T22:49:44.7636726Z             {
2026-06-10T22:49:44.7636836Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7636931Z               "line": 297
2026-06-10T22:49:44.7637021Z             },
2026-06-10T22:49:44.7637108Z             {
2026-06-10T22:49:44.7637237Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7637321Z               "line": 309
2026-06-10T22:49:44.7637413Z             }
2026-06-10T22:49:44.7637508Z           ]
2026-06-10T22:49:44.7637589Z         },
2026-06-10T22:49:44.7637679Z         "int": {
2026-06-10T22:49:44.7637771Z           "complete": false,
2026-06-10T22:49:44.7637861Z           "evidence": []
2026-06-10T22:49:44.7637946Z         },
2026-06-10T22:49:44.7638033Z         "unit": {
2026-06-10T22:49:44.7638133Z           "complete": true,
2026-06-10T22:49:44.7638232Z           "evidence": [
2026-06-10T22:49:44.7638314Z             {
2026-06-10T22:49:44.7638429Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7638523Z               "line": 445
2026-06-10T22:49:44.7638599Z             },
2026-06-10T22:49:44.7638699Z             {
2026-06-10T22:49:44.7638803Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7638901Z               "line": 489
2026-06-10T22:49:44.7639079Z             }
2026-06-10T22:49:44.7639169Z           ]
2026-06-10T22:49:44.7639259Z         }
2026-06-10T22:49:44.7639341Z       }
2026-06-10T22:49:44.7639426Z     },
2026-06-10T22:49:44.7639507Z     {
2026-06-10T22:49:44.7639611Z       "id": "REQ-INFRA-1",
2026-06-10T22:49:44.7639789Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-10T22:49:44.7639893Z       "requiredStages": [],
2026-06-10T22:49:44.7639989Z       "stages": {
2026-06-10T22:49:44.7640070Z         "doc": {
2026-06-10T22:49:44.7640165Z           "complete": false,
2026-06-10T22:49:44.7640260Z           "evidence": []
2026-06-10T22:49:44.7640347Z         },
2026-06-10T22:49:44.7640437Z         "impl": {
2026-06-10T22:49:44.7640537Z           "complete": false,
2026-06-10T22:49:44.7640629Z           "evidence": []
2026-06-10T22:49:44.7640714Z         },
2026-06-10T22:49:44.7640813Z         "int": {
2026-06-10T22:49:44.7640905Z           "complete": false,
2026-06-10T22:49:44.7641104Z           "evidence": []
2026-06-10T22:49:44.7641186Z         },
2026-06-10T22:49:44.7641277Z         "unit": {
2026-06-10T22:49:44.7641376Z           "complete": false,
2026-06-10T22:49:44.7641471Z           "evidence": []
2026-06-10T22:49:44.7641561Z         }
2026-06-10T22:49:44.7641638Z       }
2026-06-10T22:49:44.7641731Z     },
2026-06-10T22:49:44.7641811Z     {
2026-06-10T22:49:44.7642036Z       "id": "REQ-INST-1",
2026-06-10T22:49:44.7642198Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-10T22:49:44.7642298Z       "requiredStages": [],
2026-06-10T22:49:44.7642393Z       "stages": {
2026-06-10T22:49:44.7642474Z         "doc": {
2026-06-10T22:49:44.7642571Z           "complete": false,
2026-06-10T22:49:44.7642661Z           "evidence": []
2026-06-10T22:49:44.7642746Z         },
2026-06-10T22:49:44.7642842Z         "impl": {
2026-06-10T22:49:44.7642937Z           "complete": false,
2026-06-10T22:49:44.7643032Z           "evidence": []
2026-06-10T22:49:44.7643108Z         },
2026-06-10T22:49:44.7643200Z         "int": {
2026-06-10T22:49:44.7643294Z           "complete": false,
2026-06-10T22:49:44.7643390Z           "evidence": []
2026-06-10T22:49:44.7643477Z         },
2026-06-10T22:49:44.7643558Z         "unit": {
2026-06-10T22:49:44.7643661Z           "complete": false,
2026-06-10T22:49:44.7643748Z           "evidence": []
2026-06-10T22:49:44.7643840Z         }
2026-06-10T22:49:44.7643929Z       }
2026-06-10T22:49:44.7644019Z     },
2026-06-10T22:49:44.7644109Z     {
2026-06-10T22:49:44.7644204Z       "id": "REQ-INST-10",
2026-06-10T22:49:44.7644411Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-10T22:49:44.7644498Z       "requiredStages": [
2026-06-10T22:49:44.7644589Z         "impl",
2026-06-10T22:49:44.7644674Z         "unit"
2026-06-10T22:49:44.7644769Z       ],
2026-06-10T22:49:44.7644870Z       "stages": {
2026-06-10T22:49:44.7644950Z         "doc": {
2026-06-10T22:49:44.7645050Z           "complete": false,
2026-06-10T22:49:44.7645146Z           "evidence": []
2026-06-10T22:49:44.7645246Z         },
2026-06-10T22:49:44.7645336Z         "impl": {
2026-06-10T22:49:44.7645438Z           "complete": true,
2026-06-10T22:49:44.7645523Z           "evidence": [
2026-06-10T22:49:44.7645599Z             {
2026-06-10T22:49:44.7645733Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7645838Z               "line": 600
2026-06-10T22:49:44.7645933Z             },
2026-06-10T22:49:44.7646019Z             {
2026-06-10T22:49:44.7646138Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7646238Z               "line": 677
2026-06-10T22:49:44.7646319Z             },
2026-06-10T22:49:44.7646411Z             {
2026-06-10T22:49:44.7646519Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-10T22:49:44.7646610Z               "line": 13
2026-06-10T22:49:44.7646692Z             },
2026-06-10T22:49:44.7646773Z             {
2026-06-10T22:49:44.7646890Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-10T22:49:44.7646985Z               "line": 67
2026-06-10T22:49:44.7647072Z             },
2026-06-10T22:49:44.7647153Z             {
2026-06-10T22:49:44.7647271Z               "path": "crates/spt/src/wansend.rs",
2026-06-10T22:49:44.7647353Z               "line": 18
2026-06-10T22:49:44.7647448Z             },
2026-06-10T22:49:44.7647539Z             {
2026-06-10T22:49:44.7647644Z               "path": "crates/spt/src/wansend.rs",
2026-06-10T22:49:44.7647744Z               "line": 444
2026-06-10T22:49:44.7647825Z             }
2026-06-10T22:49:44.7647905Z           ]
2026-06-10T22:49:44.7647988Z         },
2026-06-10T22:49:44.7648088Z         "int": {
2026-06-10T22:49:44.7648187Z           "complete": false,
2026-06-10T22:49:44.7648278Z           "evidence": []
2026-06-10T22:49:44.7648369Z         },
2026-06-10T22:49:44.7648459Z         "unit": {
2026-06-10T22:49:44.7648554Z           "complete": true,
2026-06-10T22:49:44.7648646Z           "evidence": [
2026-06-10T22:49:44.7648817Z             {
2026-06-10T22:49:44.7649032Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7649125Z               "line": 883
2026-06-10T22:49:44.7649216Z             },
2026-06-10T22:49:44.7649292Z             {
2026-06-10T22:49:44.7649414Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7649509Z               "line": 1212
2026-06-10T22:49:44.7649697Z             },
2026-06-10T22:49:44.7649790Z             {
2026-06-10T22:49:44.7649915Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7650001Z               "line": 1223
2026-06-10T22:49:44.7650096Z             },
2026-06-10T22:49:44.7650181Z             {
2026-06-10T22:49:44.7650306Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7650401Z               "line": 1239
2026-06-10T22:49:44.7650496Z             },
2026-06-10T22:49:44.7650583Z             {
2026-06-10T22:49:44.7650711Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7650807Z               "line": 1255
2026-06-10T22:49:44.7650898Z             },
2026-06-10T22:49:44.7650983Z             {
2026-06-10T22:49:44.7651111Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7651203Z               "line": 1277
2026-06-10T22:49:44.7651293Z             },
2026-06-10T22:49:44.7651379Z             {
2026-06-10T22:49:44.7651508Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7651603Z               "line": 1582
2026-06-10T22:49:44.7651694Z             },
2026-06-10T22:49:44.7651785Z             {
2026-06-10T22:49:44.7651904Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-10T22:49:44.7651992Z               "line": 130
2026-06-10T22:49:44.7652087Z             },
2026-06-10T22:49:44.7652174Z             {
2026-06-10T22:49:44.7652291Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-10T22:49:44.7652386Z               "line": 167
2026-06-10T22:49:44.7652477Z             },
2026-06-10T22:49:44.7652573Z             {
2026-06-10T22:49:44.7652691Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-10T22:49:44.7652782Z               "line": 175
2026-06-10T22:49:44.7652868Z             },
2026-06-10T22:49:44.7652963Z             {
2026-06-10T22:49:44.7653078Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-10T22:49:44.7653169Z               "line": 183
2026-06-10T22:49:44.7653264Z             },
2026-06-10T22:49:44.7653354Z             {
2026-06-10T22:49:44.7653474Z               "path": "crates/spt/src/wansend.rs",
2026-06-10T22:49:44.7653554Z               "line": 895
2026-06-10T22:49:44.7653649Z             }
2026-06-10T22:49:44.7653741Z           ]
2026-06-10T22:49:44.7653831Z         }
2026-06-10T22:49:44.7655835Z       }
2026-06-10T22:49:44.7655940Z     },
2026-06-10T22:49:44.7656036Z     {
2026-06-10T22:49:44.7656140Z       "id": "REQ-INST-11",
2026-06-10T22:49:44.7656365Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-10T22:49:44.7656474Z       "requiredStages": [
2026-06-10T22:49:44.7656564Z         "impl",
2026-06-10T22:49:44.7656661Z         "unit"
2026-06-10T22:49:44.7656745Z       ],
2026-06-10T22:49:44.7656841Z       "stages": {
2026-06-10T22:49:44.7656928Z         "doc": {
2026-06-10T22:49:44.7657032Z           "complete": false,
2026-06-10T22:49:44.7657127Z           "evidence": []
2026-06-10T22:49:44.7657219Z         },
2026-06-10T22:49:44.7657310Z         "impl": {
2026-06-10T22:49:44.7657403Z           "complete": true,
2026-06-10T22:49:44.7657502Z           "evidence": [
2026-06-10T22:49:44.7657594Z             {
2026-06-10T22:49:44.7657732Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7657826Z               "line": 466
2026-06-10T22:49:44.7657908Z             },
2026-06-10T22:49:44.7658004Z             {
2026-06-10T22:49:44.7658132Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-10T22:49:44.7658229Z               "line": 265
2026-06-10T22:49:44.7658447Z             },
2026-06-10T22:49:44.7658538Z             {
2026-06-10T22:49:44.7658662Z               "path": "crates/spt-store/src/rename.rs",
2026-06-10T22:49:44.7658752Z               "line": 59
2026-06-10T22:49:44.7658838Z             },
2026-06-10T22:49:44.7658919Z             {
2026-06-10T22:49:44.7659124Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7659319Z               "line": 4061
2026-06-10T22:49:44.7659415Z             },
2026-06-10T22:49:44.7659502Z             {
2026-06-10T22:49:44.7659605Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7659700Z               "line": 5160
2026-06-10T22:49:44.7659790Z             }
2026-06-10T22:49:44.7659886Z           ]
2026-06-10T22:49:44.7659974Z         },
2026-06-10T22:49:44.7660055Z         "int": {
2026-06-10T22:49:44.7660146Z           "complete": false,
2026-06-10T22:49:44.7660237Z           "evidence": []
2026-06-10T22:49:44.7660327Z         },
2026-06-10T22:49:44.7660418Z         "unit": {
2026-06-10T22:49:44.7660528Z           "complete": true,
2026-06-10T22:49:44.7660618Z           "evidence": [
2026-06-10T22:49:44.7660713Z             {
2026-06-10T22:49:44.7660838Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7660928Z               "line": 1382
2026-06-10T22:49:44.7661022Z             },
2026-06-10T22:49:44.7661110Z             {
2026-06-10T22:49:44.7661228Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7661323Z               "line": 1415
2026-06-10T22:49:44.7661410Z             },
2026-06-10T22:49:44.7661496Z             {
2026-06-10T22:49:44.7661629Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-10T22:49:44.7661720Z               "line": 495
2026-06-10T22:49:44.7661815Z             },
2026-06-10T22:49:44.7661910Z             {
2026-06-10T22:49:44.7662030Z               "path": "crates/spt-store/src/rename.rs",
2026-06-10T22:49:44.7662121Z               "line": 160
2026-06-10T22:49:44.7662215Z             },
2026-06-10T22:49:44.7662301Z             {
2026-06-10T22:49:44.7662417Z               "path": "crates/spt-store/src/rename.rs",
2026-06-10T22:49:44.7662511Z               "line": 190
2026-06-10T22:49:44.7662600Z             },
2026-06-10T22:49:44.7662681Z             {
2026-06-10T22:49:44.7662795Z               "path": "crates/spt-store/src/rename.rs",
2026-06-10T22:49:44.7662893Z               "line": 225
2026-06-10T22:49:44.7662974Z             },
2026-06-10T22:49:44.7663066Z             {
2026-06-10T22:49:44.7663175Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7663275Z               "line": 5400
2026-06-10T22:49:44.7663362Z             }
2026-06-10T22:49:44.7663457Z           ]
2026-06-10T22:49:44.7663551Z         }
2026-06-10T22:49:44.7663633Z       }
2026-06-10T22:49:44.7663724Z     },
2026-06-10T22:49:44.7663801Z     {
2026-06-10T22:49:44.7663899Z       "id": "REQ-INST-12",
2026-06-10T22:49:44.7664185Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-10T22:49:44.7664297Z       "requiredStages": [
2026-06-10T22:49:44.7664396Z         "impl",
2026-06-10T22:49:44.7664482Z         "unit"
2026-06-10T22:49:44.7664572Z       ],
2026-06-10T22:49:44.7664669Z       "stages": {
2026-06-10T22:49:44.7664758Z         "doc": {
2026-06-10T22:49:44.7664853Z           "complete": false,
2026-06-10T22:49:44.7664950Z           "evidence": []
2026-06-10T22:49:44.7665045Z         },
2026-06-10T22:49:44.7665134Z         "impl": {
2026-06-10T22:49:44.7665239Z           "complete": true,
2026-06-10T22:49:44.7665334Z           "evidence": [
2026-06-10T22:49:44.7665422Z             {
2026-06-10T22:49:44.7665541Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7665638Z               "line": 518
2026-06-10T22:49:44.7665733Z             },
2026-06-10T22:49:44.7665823Z             {
2026-06-10T22:49:44.7665948Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7666137Z               "line": 611
2026-06-10T22:49:44.7666219Z             },
2026-06-10T22:49:44.7666305Z             {
2026-06-10T22:49:44.7666418Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7666510Z               "line": 691
2026-06-10T22:49:44.7666601Z             },
2026-06-10T22:49:44.7666691Z             {
2026-06-10T22:49:44.7666883Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-10T22:49:44.7666972Z               "line": 96
2026-06-10T22:49:44.7667062Z             },
2026-06-10T22:49:44.7667149Z             {
2026-06-10T22:49:44.7667263Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-10T22:49:44.7667354Z               "line": 269
2026-06-10T22:49:44.7667435Z             },
2026-06-10T22:49:44.7667512Z             {
2026-06-10T22:49:44.7667639Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-10T22:49:44.7667735Z               "line": 135
2026-06-10T22:49:44.7667822Z             }
2026-06-10T22:49:44.7667926Z           ]
2026-06-10T22:49:44.7668015Z         },
2026-06-10T22:49:44.7668106Z         "int": {
2026-06-10T22:49:44.7668202Z           "complete": false,
2026-06-10T22:49:44.7668296Z           "evidence": []
2026-06-10T22:49:44.7668387Z         },
2026-06-10T22:49:44.7668478Z         "unit": {
2026-06-10T22:49:44.7668569Z           "complete": true,
2026-06-10T22:49:44.7668663Z           "evidence": [
2026-06-10T22:49:44.7668750Z             {
2026-06-10T22:49:44.7668859Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7669030Z               "line": 1457
2026-06-10T22:49:44.7669123Z             },
2026-06-10T22:49:44.7669208Z             {
2026-06-10T22:49:44.7669331Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7669432Z               "line": 1480
2026-06-10T22:49:44.7669522Z             },
2026-06-10T22:49:44.7669612Z             {
2026-06-10T22:49:44.7669747Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7669865Z               "line": 1517
2026-06-10T22:49:44.7669951Z             },
2026-06-10T22:49:44.7670042Z             {
2026-06-10T22:49:44.7670157Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-10T22:49:44.7670251Z               "line": 457
2026-06-10T22:49:44.7670341Z             },
2026-06-10T22:49:44.7670431Z             {
2026-06-10T22:49:44.7670558Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-10T22:49:44.7670653Z               "line": 172
2026-06-10T22:49:44.7670744Z             },
2026-06-10T22:49:44.7670831Z             {
2026-06-10T22:49:44.7670953Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-10T22:49:44.7671050Z               "line": 193
2026-06-10T22:49:44.7671140Z             },
2026-06-10T22:49:44.7671230Z             {
2026-06-10T22:49:44.7671351Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-10T22:49:44.7671446Z               "line": 219
2026-06-10T22:49:44.7671535Z             }
2026-06-10T22:49:44.7671631Z           ]
2026-06-10T22:49:44.7671722Z         }
2026-06-10T22:49:44.7671812Z       }
2026-06-10T22:49:44.7671902Z     },
2026-06-10T22:49:44.7671995Z     {
2026-06-10T22:49:44.7672089Z       "id": "REQ-INST-13",
2026-06-10T22:49:44.7672275Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-10T22:49:44.7672375Z       "requiredStages": [
2026-06-10T22:49:44.7672475Z         "impl",
2026-06-10T22:49:44.7672566Z         "unit"
2026-06-10T22:49:44.7672666Z       ],
2026-06-10T22:49:44.7672761Z       "stages": {
2026-06-10T22:49:44.7672852Z         "doc": {
2026-06-10T22:49:44.7672949Z           "complete": false,
2026-06-10T22:49:44.7673047Z           "evidence": []
2026-06-10T22:49:44.7673136Z         },
2026-06-10T22:49:44.7673237Z         "impl": {
2026-06-10T22:49:44.7673336Z           "complete": true,
2026-06-10T22:49:44.7673430Z           "evidence": [
2026-06-10T22:49:44.7673520Z             {
2026-06-10T22:49:44.7673641Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-10T22:49:44.7673859Z               "line": 100
2026-06-10T22:49:44.7673946Z             },
2026-06-10T22:49:44.7674041Z             {
2026-06-10T22:49:44.7674164Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-10T22:49:44.7674260Z               "line": 158
2026-06-10T22:49:44.7674351Z             }
2026-06-10T22:49:44.7674436Z           ]
2026-06-10T22:49:44.7674609Z         },
2026-06-10T22:49:44.7674704Z         "int": {
2026-06-10T22:49:44.7674803Z           "complete": false,
2026-06-10T22:49:44.7674900Z           "evidence": []
2026-06-10T22:49:44.7674989Z         },
2026-06-10T22:49:44.7675104Z         "unit": {
2026-06-10T22:49:44.7675205Z           "complete": true,
2026-06-10T22:49:44.7675304Z           "evidence": [
2026-06-10T22:49:44.7675390Z             {
2026-06-10T22:49:44.7675515Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-10T22:49:44.7675614Z               "line": 248
2026-06-10T22:49:44.7675699Z             },
2026-06-10T22:49:44.7675799Z             {
2026-06-10T22:49:44.7675917Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-10T22:49:44.7676011Z               "line": 266
2026-06-10T22:49:44.7676111Z             }
2026-06-10T22:49:44.7676198Z           ]
2026-06-10T22:49:44.7676284Z         }
2026-06-10T22:49:44.7676373Z       }
2026-06-10T22:49:44.7676464Z     },
2026-06-10T22:49:44.7676550Z     {
2026-06-10T22:49:44.7676659Z       "id": "REQ-INST-14",
2026-06-10T22:49:44.7677026Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-10T22:49:44.7677128Z       "requiredStages": [
2026-06-10T22:49:44.7677222Z         "doc",
2026-06-10T22:49:44.7677312Z         "impl",
2026-06-10T22:49:44.7677404Z         "unit"
2026-06-10T22:49:44.7677490Z       ],
2026-06-10T22:49:44.7677585Z       "stages": {
2026-06-10T22:49:44.7677680Z         "doc": {
2026-06-10T22:49:44.7677776Z           "complete": true,
2026-06-10T22:49:44.7677884Z           "evidence": [
2026-06-10T22:49:44.7677976Z             {
2026-06-10T22:49:44.7678082Z               "path": "CONTEXT.md",
2026-06-10T22:49:44.7678176Z               "line": 425
2026-06-10T22:49:44.7678266Z             },
2026-06-10T22:49:44.7678359Z             {
2026-06-10T22:49:44.7678463Z               "path": "docs/STORAGE.md",
2026-06-10T22:49:44.7678556Z               "line": 49
2026-06-10T22:49:44.7678656Z             }
2026-06-10T22:49:44.7678748Z           ]
2026-06-10T22:49:44.7678834Z         },
2026-06-10T22:49:44.7678928Z         "impl": {
2026-06-10T22:49:44.7679114Z           "complete": true,
2026-06-10T22:49:44.7679209Z           "evidence": [
2026-06-10T22:49:44.7679305Z             {
2026-06-10T22:49:44.7679443Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7679538Z               "line": 388
2026-06-10T22:49:44.7679629Z             },
2026-06-10T22:49:44.7679721Z             {
2026-06-10T22:49:44.7679853Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7679954Z               "line": 330
2026-06-10T22:49:44.7680045Z             },
2026-06-10T22:49:44.7680135Z             {
2026-06-10T22:49:44.7680254Z               "path": "crates/spt-store/src/info.rs",
2026-06-10T22:49:44.7680341Z               "line": 211
2026-06-10T22:49:44.7680430Z             },
2026-06-10T22:49:44.7680521Z             {
2026-06-10T22:49:44.7680637Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7680726Z               "line": 1038
2026-06-10T22:49:44.7680816Z             }
2026-06-10T22:49:44.7680901Z           ]
2026-06-10T22:49:44.7680978Z         },
2026-06-10T22:49:44.7681071Z         "int": {
2026-06-10T22:49:44.7681170Z           "complete": false,
2026-06-10T22:49:44.7681261Z           "evidence": []
2026-06-10T22:49:44.7681353Z         },
2026-06-10T22:49:44.7681457Z         "unit": {
2026-06-10T22:49:44.7681562Z           "complete": true,
2026-06-10T22:49:44.7681653Z           "evidence": [
2026-06-10T22:49:44.7681847Z             {
2026-06-10T22:49:44.7681982Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7682076Z               "line": 1081
2026-06-10T22:49:44.7682167Z             },
2026-06-10T22:49:44.7682259Z             {
2026-06-10T22:49:44.7682382Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7682472Z               "line": 895
2026-06-10T22:49:44.7682654Z             },
2026-06-10T22:49:44.7682749Z             {
2026-06-10T22:49:44.7682874Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7682978Z               "line": 1153
2026-06-10T22:49:44.7683064Z             },
2026-06-10T22:49:44.7683155Z             {
2026-06-10T22:49:44.7683269Z               "path": "crates/spt-store/src/info.rs",
2026-06-10T22:49:44.7683364Z               "line": 463
2026-06-10T22:49:44.7683456Z             },
2026-06-10T22:49:44.7683546Z             {
2026-06-10T22:49:44.7683655Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7683758Z               "line": 5476
2026-06-10T22:49:44.7683850Z             }
2026-06-10T22:49:44.7683938Z           ]
2026-06-10T22:49:44.7684028Z         }
2026-06-10T22:49:44.7684119Z       }
2026-06-10T22:49:44.7684206Z     },
2026-06-10T22:49:44.7684295Z     {
2026-06-10T22:49:44.7684390Z       "id": "REQ-INST-15",
2026-06-10T22:49:44.7685073Z       "title": "Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)",
2026-06-10T22:49:44.7685178Z       "requiredStages": [
2026-06-10T22:49:44.7685264Z         "doc",
2026-06-10T22:49:44.7685388Z         "impl",
2026-06-10T22:49:44.7685478Z         "unit"
2026-06-10T22:49:44.7685573Z       ],
2026-06-10T22:49:44.7685664Z       "stages": {
2026-06-10T22:49:44.7685756Z         "doc": {
2026-06-10T22:49:44.7685855Z           "complete": true,
2026-06-10T22:49:44.7685955Z           "evidence": [
2026-06-10T22:49:44.7686047Z             {
2026-06-10T22:49:44.7686221Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-10T22:49:44.7686316Z               "line": 3
2026-06-10T22:49:44.7686407Z             }
2026-06-10T22:49:44.7686496Z           ]
2026-06-10T22:49:44.7686590Z         },
2026-06-10T22:49:44.7686686Z         "impl": {
2026-06-10T22:49:44.7686786Z           "complete": true,
2026-06-10T22:49:44.7686877Z           "evidence": [
2026-06-10T22:49:44.7686972Z             {
2026-06-10T22:49:44.7687101Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7687201Z               "line": 337
2026-06-10T22:49:44.7687291Z             },
2026-06-10T22:49:44.7687378Z             {
2026-06-10T22:49:44.7687497Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-10T22:49:44.7687586Z               "line": 60
2026-06-10T22:49:44.7687683Z             },
2026-06-10T22:49:44.7687778Z             {
2026-06-10T22:49:44.7687916Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-10T22:49:44.7688017Z               "line": 336
2026-06-10T22:49:44.7688102Z             },
2026-06-10T22:49:44.7688192Z             {
2026-06-10T22:49:44.7688317Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-10T22:49:44.7688417Z               "line": 385
2026-06-10T22:49:44.7688512Z             },
2026-06-10T22:49:44.7688609Z             {
2026-06-10T22:49:44.7688727Z               "path": "crates/spt-store/src/home.rs",
2026-06-10T22:49:44.7688817Z               "line": 19
2026-06-10T22:49:44.7688909Z             },
2026-06-10T22:49:44.7689084Z             {
2026-06-10T22:49:44.7689202Z               "path": "crates/spt-store/src/home.rs",
2026-06-10T22:49:44.7689293Z               "line": 70
2026-06-10T22:49:44.7689385Z             },
2026-06-10T22:49:44.7689478Z             {
2026-06-10T22:49:44.7689589Z               "path": "crates/spt-store/src/home.rs",
2026-06-10T22:49:44.7689788Z               "line": 96
2026-06-10T22:49:44.7689880Z             },
2026-06-10T22:49:44.7689975Z             {
2026-06-10T22:49:44.7690084Z               "path": "crates/spt-store/src/home.rs",
2026-06-10T22:49:44.7690180Z               "line": 121
2026-06-10T22:49:44.7690276Z             },
2026-06-10T22:49:44.7690366Z             {
2026-06-10T22:49:44.7690572Z               "path": "crates/spt-store/src/home.rs",
2026-06-10T22:49:44.7690671Z               "line": 172
2026-06-10T22:49:44.7690761Z             },
2026-06-10T22:49:44.7690848Z             {
2026-06-10T22:49:44.7690971Z               "path": "crates/spt/src/api/startup.rs",
2026-06-10T22:49:44.7691066Z               "line": 143
2026-06-10T22:49:44.7691153Z             },
2026-06-10T22:49:44.7691244Z             {
2026-06-10T22:49:44.7691347Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7691446Z               "line": 930
2026-06-10T22:49:44.7691538Z             }
2026-06-10T22:49:44.7691636Z           ]
2026-06-10T22:49:44.7691731Z         },
2026-06-10T22:49:44.7691826Z         "int": {
2026-06-10T22:49:44.7691923Z           "complete": false,
2026-06-10T22:49:44.7692017Z           "evidence": []
2026-06-10T22:49:44.7692098Z         },
2026-06-10T22:49:44.7692180Z         "unit": {
2026-06-10T22:49:44.7692275Z           "complete": true,
2026-06-10T22:49:44.7692370Z           "evidence": [
2026-06-10T22:49:44.7692451Z             {
2026-06-10T22:49:44.7692580Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-10T22:49:44.7692665Z               "line": 545
2026-06-10T22:49:44.7692752Z             },
2026-06-10T22:49:44.7692833Z             {
2026-06-10T22:49:44.7692956Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-10T22:49:44.7693051Z               "line": 606
2026-06-10T22:49:44.7693134Z             },
2026-06-10T22:49:44.7693223Z             {
2026-06-10T22:49:44.7693333Z               "path": "crates/spt-store/src/home.rs",
2026-06-10T22:49:44.7693434Z               "line": 213
2026-06-10T22:49:44.7693519Z             },
2026-06-10T22:49:44.7693605Z             {
2026-06-10T22:49:44.7693725Z               "path": "crates/spt-store/src/home.rs",
2026-06-10T22:49:44.7693815Z               "line": 249
2026-06-10T22:49:44.7693905Z             },
2026-06-10T22:49:44.7693987Z             {
2026-06-10T22:49:44.7694107Z               "path": "crates/spt-store/src/home.rs",
2026-06-10T22:49:44.7694200Z               "line": 262
2026-06-10T22:49:44.7694281Z             },
2026-06-10T22:49:44.7694371Z             {
2026-06-10T22:49:44.7694475Z               "path": "crates/spt-store/src/home.rs",
2026-06-10T22:49:44.7694565Z               "line": 338
2026-06-10T22:49:44.7694645Z             },
2026-06-10T22:49:44.7694732Z             {
2026-06-10T22:49:44.7694851Z               "path": "crates/spt/src/api/startup.rs",
2026-06-10T22:49:44.7694931Z               "line": 496
2026-06-10T22:49:44.7695018Z             },
2026-06-10T22:49:44.7695109Z             {
2026-06-10T22:49:44.7695222Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7695309Z               "line": 5413
2026-06-10T22:49:44.7695390Z             },
2026-06-10T22:49:44.7695476Z             {
2026-06-10T22:49:44.7695580Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7695677Z               "line": 6806
2026-06-10T22:49:44.7695757Z             }
2026-06-10T22:49:44.7695852Z           ]
2026-06-10T22:49:44.7695933Z         }
2026-06-10T22:49:44.7696020Z       }
2026-06-10T22:49:44.7696114Z     },
2026-06-10T22:49:44.7696195Z     {
2026-06-10T22:49:44.7696292Z       "id": "REQ-INST-2",
2026-06-10T22:49:44.7696419Z       "title": "Per-node files, synced Psyche mind",
2026-06-10T22:49:44.7696520Z       "requiredStages": [
2026-06-10T22:49:44.7696597Z         "impl",
2026-06-10T22:49:44.7696687Z         "unit"
2026-06-10T22:49:44.7696772Z       ],
2026-06-10T22:49:44.7696852Z       "stages": {
2026-06-10T22:49:44.7696943Z         "doc": {
2026-06-10T22:49:44.7697037Z           "complete": false,
2026-06-10T22:49:44.7697212Z           "evidence": []
2026-06-10T22:49:44.7697303Z         },
2026-06-10T22:49:44.7697390Z         "impl": {
2026-06-10T22:49:44.7697488Z           "complete": true,
2026-06-10T22:49:44.7697585Z           "evidence": [
2026-06-10T22:49:44.7697671Z             {
2026-06-10T22:49:44.7697794Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7697957Z               "line": 88
2026-06-10T22:49:44.7698052Z             },
2026-06-10T22:49:44.7698146Z             {
2026-06-10T22:49:44.7698272Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-10T22:49:44.7698352Z               "line": 28
2026-06-10T22:49:44.7698447Z             },
2026-06-10T22:49:44.7698534Z             {
2026-06-10T22:49:44.7698648Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-10T22:49:44.7698734Z               "line": 74
2026-06-10T22:49:44.7698820Z             },
2026-06-10T22:49:44.7698911Z             {
2026-06-10T22:49:44.7699110Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-10T22:49:44.7699245Z               "line": 96
2026-06-10T22:49:44.7699363Z             },
2026-06-10T22:49:44.7699450Z             {
2026-06-10T22:49:44.7699569Z               "path": "crates/spt-live/src/resume.rs",
2026-06-10T22:49:44.7699667Z               "line": 81
2026-06-10T22:49:44.7699757Z             },
2026-06-10T22:49:44.7699858Z             {
2026-06-10T22:49:44.7699977Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-10T22:49:44.7700072Z               "line": 118
2026-06-10T22:49:44.7700163Z             }
2026-06-10T22:49:44.7700249Z           ]
2026-06-10T22:49:44.7700348Z         },
2026-06-10T22:49:44.7700440Z         "int": {
2026-06-10T22:49:44.7700540Z           "complete": false,
2026-06-10T22:49:44.7700635Z           "evidence": []
2026-06-10T22:49:44.7700721Z         },
2026-06-10T22:49:44.7700812Z         "unit": {
2026-06-10T22:49:44.7700911Z           "complete": true,
2026-06-10T22:49:44.7701006Z           "evidence": [
2026-06-10T22:49:44.7701103Z             {
2026-06-10T22:49:44.7701212Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-10T22:49:44.7701312Z               "line": 212
2026-06-10T22:49:44.7701399Z             },
2026-06-10T22:49:44.7701489Z             {
2026-06-10T22:49:44.7701603Z               "path": "crates/spt-live/src/resume.rs",
2026-06-10T22:49:44.7701703Z               "line": 258
2026-06-10T22:49:44.7701795Z             }
2026-06-10T22:49:44.7701884Z           ]
2026-06-10T22:49:44.7701974Z         }
2026-06-10T22:49:44.7702064Z       }
2026-06-10T22:49:44.7702155Z     },
2026-06-10T22:49:44.7702243Z     {
2026-06-10T22:49:44.7702343Z       "id": "REQ-INST-3",
2026-06-10T22:49:44.7702502Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-10T22:49:44.7702601Z       "requiredStages": [
2026-06-10T22:49:44.7702701Z         "doc",
2026-06-10T22:49:44.7702787Z         "impl",
2026-06-10T22:49:44.7702882Z         "unit"
2026-06-10T22:49:44.7702972Z       ],
2026-06-10T22:49:44.7703065Z       "stages": {
2026-06-10T22:49:44.7703155Z         "doc": {
2026-06-10T22:49:44.7703249Z           "complete": true,
2026-06-10T22:49:44.7703350Z           "evidence": [
2026-06-10T22:49:44.7703435Z             {
2026-06-10T22:49:44.7703559Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-10T22:49:44.7703646Z               "line": 3
2026-06-10T22:49:44.7703746Z             }
2026-06-10T22:49:44.7703841Z           ]
2026-06-10T22:49:44.7703931Z         },
2026-06-10T22:49:44.7704023Z         "impl": {
2026-06-10T22:49:44.7704117Z           "complete": true,
2026-06-10T22:49:44.7704212Z           "evidence": [
2026-06-10T22:49:44.7704299Z             {
2026-06-10T22:49:44.7704431Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-10T22:49:44.7704527Z               "line": 70
2026-06-10T22:49:44.7704619Z             },
2026-06-10T22:49:44.7704709Z             {
2026-06-10T22:49:44.7704836Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-10T22:49:44.7705059Z               "line": 480
2026-06-10T22:49:44.7705144Z             },
2026-06-10T22:49:44.7705239Z             {
2026-06-10T22:49:44.7705364Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7705458Z               "line": 204
2026-06-10T22:49:44.7705549Z             },
2026-06-10T22:49:44.7705635Z             {
2026-06-10T22:49:44.7705859Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7705955Z               "line": 334
2026-06-10T22:49:44.7706045Z             },
2026-06-10T22:49:44.7706145Z             {
2026-06-10T22:49:44.7706265Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7706360Z               "line": 368
2026-06-10T22:49:44.7706450Z             },
2026-06-10T22:49:44.7706542Z             {
2026-06-10T22:49:44.7706670Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.7706765Z               "line": 341
2026-06-10T22:49:44.7706857Z             },
2026-06-10T22:49:44.7706956Z             {
2026-06-10T22:49:44.7707094Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7707186Z               "line": 218
2026-06-10T22:49:44.7707280Z             },
2026-06-10T22:49:44.7707370Z             {
2026-06-10T22:49:44.7707498Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7707607Z               "line": 374
2026-06-10T22:49:44.7707701Z             },
2026-06-10T22:49:44.7707792Z             {
2026-06-10T22:49:44.7707912Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.7708016Z               "line": 45
2026-06-10T22:49:44.7708111Z             },
2026-06-10T22:49:44.7708202Z             {
2026-06-10T22:49:44.7708325Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.7708416Z               "line": 114
2026-06-10T22:49:44.7708507Z             },
2026-06-10T22:49:44.7708593Z             {
2026-06-10T22:49:44.7708716Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.7708813Z               "line": 152
2026-06-10T22:49:44.7708903Z             },
2026-06-10T22:49:44.7709104Z             {
2026-06-10T22:49:44.7709222Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.7709322Z               "line": 168
2026-06-10T22:49:44.7709404Z             },
2026-06-10T22:49:44.7709480Z             {
2026-06-10T22:49:44.7709599Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.7709695Z               "line": 178
2026-06-10T22:49:44.7709786Z             },
2026-06-10T22:49:44.7709875Z             {
2026-06-10T22:49:44.7709995Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.7710087Z               "line": 210
2026-06-10T22:49:44.7710180Z             },
2026-06-10T22:49:44.7710260Z             {
2026-06-10T22:49:44.7710375Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.7710466Z               "line": 287
2026-06-10T22:49:44.7710561Z             },
2026-06-10T22:49:44.7710656Z             {
2026-06-10T22:49:44.7710767Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.7710866Z               "line": 311
2026-06-10T22:49:44.7710956Z             },
2026-06-10T22:49:44.7711043Z             {
2026-06-10T22:49:44.7711158Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.7711252Z               "line": 387
2026-06-10T22:49:44.7711344Z             },
2026-06-10T22:49:44.7711429Z             {
2026-06-10T22:49:44.7711548Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.7711654Z               "line": 436
2026-06-10T22:49:44.7711740Z             },
2026-06-10T22:49:44.7711830Z             {
2026-06-10T22:49:44.7711954Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-10T22:49:44.7712049Z               "line": 37
2026-06-10T22:49:44.7712139Z             },
2026-06-10T22:49:44.7712225Z             {
2026-06-10T22:49:44.7712355Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7712558Z               "line": 62
2026-06-10T22:49:44.7712648Z             },
2026-06-10T22:49:44.7712738Z             {
2026-06-10T22:49:44.7712856Z               "path": "crates/spt-store/src/info.rs",
2026-06-10T22:49:44.7712956Z               "line": 190
2026-06-10T22:49:44.7713043Z             },
2026-06-10T22:49:44.7713132Z             {
2026-06-10T22:49:44.7713334Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7713438Z               "line": 1186
2026-06-10T22:49:44.7713528Z             }
2026-06-10T22:49:44.7713615Z           ]
2026-06-10T22:49:44.7713710Z         },
2026-06-10T22:49:44.7713795Z         "int": {
2026-06-10T22:49:44.7713896Z           "complete": false,
2026-06-10T22:49:44.7713991Z           "evidence": []
2026-06-10T22:49:44.7714086Z         },
2026-06-10T22:49:44.7714181Z         "unit": {
2026-06-10T22:49:44.7714283Z           "complete": true,
2026-06-10T22:49:44.7714378Z           "evidence": [
2026-06-10T22:49:44.7714477Z             {
2026-06-10T22:49:44.7714598Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-10T22:49:44.7714691Z               "line": 360
2026-06-10T22:49:44.7714782Z             },
2026-06-10T22:49:44.7714869Z             {
2026-06-10T22:49:44.7714996Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7715097Z               "line": 787
2026-06-10T22:49:44.7715184Z             },
2026-06-10T22:49:44.7715274Z             {
2026-06-10T22:49:44.7715392Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7715492Z               "line": 844
2026-06-10T22:49:44.7715582Z             },
2026-06-10T22:49:44.7715675Z             {
2026-06-10T22:49:44.7715809Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7715900Z               "line": 1182
2026-06-10T22:49:44.7715985Z             },
2026-06-10T22:49:44.7716076Z             {
2026-06-10T22:49:44.7716205Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7716305Z               "line": 1322
2026-06-10T22:49:44.7716400Z             },
2026-06-10T22:49:44.7716492Z             {
2026-06-10T22:49:44.7716611Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.7716705Z               "line": 447
2026-06-10T22:49:44.7716792Z             },
2026-06-10T22:49:44.7716877Z             {
2026-06-10T22:49:44.7717006Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.7717097Z               "line": 483
2026-06-10T22:49:44.7717187Z             },
2026-06-10T22:49:44.7717278Z             {
2026-06-10T22:49:44.7717393Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.7717484Z               "line": 538
2026-06-10T22:49:44.7717577Z             },
2026-06-10T22:49:44.7717669Z             {
2026-06-10T22:49:44.7717785Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.7717882Z               "line": 695
2026-06-10T22:49:44.7717972Z             },
2026-06-10T22:49:44.7718073Z             {
2026-06-10T22:49:44.7718185Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.7718285Z               "line": 929
2026-06-10T22:49:44.7718371Z             },
2026-06-10T22:49:44.7718457Z             {
2026-06-10T22:49:44.7718576Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.7718676Z               "line": 943
2026-06-10T22:49:44.7718767Z             },
2026-06-10T22:49:44.7718857Z             {
2026-06-10T22:49:44.7719063Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7719163Z               "line": 1193
2026-06-10T22:49:44.7719253Z             },
2026-06-10T22:49:44.7719345Z             {
2026-06-10T22:49:44.7719458Z               "path": "crates/spt-store/src/info.rs",
2026-06-10T22:49:44.7719558Z               "line": 413
2026-06-10T22:49:44.7719644Z             },
2026-06-10T22:49:44.7719739Z             {
2026-06-10T22:49:44.7719849Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7720045Z               "line": 5437
2026-06-10T22:49:44.7720145Z             }
2026-06-10T22:49:44.7720230Z           ]
2026-06-10T22:49:44.7720323Z         }
2026-06-10T22:49:44.7720411Z       }
2026-06-10T22:49:44.7720502Z     },
2026-06-10T22:49:44.7720594Z     {
2026-06-10T22:49:44.7720689Z       "id": "REQ-INST-4",
2026-06-10T22:49:44.7720964Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-10T22:49:44.7721065Z       "requiredStages": [
2026-06-10T22:49:44.7721159Z         "impl",
2026-06-10T22:49:44.7721250Z         "unit"
2026-06-10T22:49:44.7721346Z       ],
2026-06-10T22:49:44.7721436Z       "stages": {
2026-06-10T22:49:44.7721526Z         "doc": {
2026-06-10T22:49:44.7721627Z           "complete": false,
2026-06-10T22:49:44.7721718Z           "evidence": []
2026-06-10T22:49:44.7721812Z         },
2026-06-10T22:49:44.7721899Z         "impl": {
2026-06-10T22:49:44.7721994Z           "complete": true,
2026-06-10T22:49:44.7722089Z           "evidence": [
2026-06-10T22:49:44.7722175Z             {
2026-06-10T22:49:44.7722304Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7722395Z               "line": 335
2026-06-10T22:49:44.7722480Z             },
2026-06-10T22:49:44.7722562Z             {
2026-06-10T22:49:44.7722675Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.7724665Z               "line": 202
2026-06-10T22:49:44.7724771Z             },
2026-06-10T22:49:44.7724857Z             {
2026-06-10T22:49:44.7724980Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.7725071Z               "line": 234
2026-06-10T22:49:44.7725158Z             },
2026-06-10T22:49:44.7725247Z             {
2026-06-10T22:49:44.7725372Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.7725458Z               "line": 274
2026-06-10T22:49:44.7725552Z             }
2026-06-10T22:49:44.7725638Z           ]
2026-06-10T22:49:44.7725725Z         },
2026-06-10T22:49:44.7725816Z         "int": {
2026-06-10T22:49:44.7725909Z           "complete": false,
2026-06-10T22:49:44.7726004Z           "evidence": []
2026-06-10T22:49:44.7726090Z         },
2026-06-10T22:49:44.7726179Z         "unit": {
2026-06-10T22:49:44.7726273Z           "complete": true,
2026-06-10T22:49:44.7726369Z           "evidence": [
2026-06-10T22:49:44.7726465Z             {
2026-06-10T22:49:44.7726588Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.7726684Z               "line": 839
2026-06-10T22:49:44.7726780Z             },
2026-06-10T22:49:44.7726875Z             {
2026-06-10T22:49:44.7726994Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.7727085Z               "line": 559
2026-06-10T22:49:44.7727176Z             },
2026-06-10T22:49:44.7727265Z             {
2026-06-10T22:49:44.7727390Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.7727480Z               "line": 666
2026-06-10T22:49:44.7727580Z             },
2026-06-10T22:49:44.7727667Z             {
2026-06-10T22:49:44.7727794Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.7727885Z               "line": 748
2026-06-10T22:49:44.7727972Z             }
2026-06-10T22:49:44.7728067Z           ]
2026-06-10T22:49:44.7728157Z         }
2026-06-10T22:49:44.7728248Z       }
2026-06-10T22:49:44.7728345Z     },
2026-06-10T22:49:44.7728433Z     {
2026-06-10T22:49:44.7728528Z       "id": "REQ-INST-5",
2026-06-10T22:49:44.7728713Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-10T22:49:44.7728812Z       "requiredStages": [
2026-06-10T22:49:44.7728902Z         "impl",
2026-06-10T22:49:44.7729098Z         "unit",
2026-06-10T22:49:44.7729188Z         "int"
2026-06-10T22:49:44.7729275Z       ],
2026-06-10T22:49:44.7729365Z       "stages": {
2026-06-10T22:49:44.7729455Z         "doc": {
2026-06-10T22:49:44.7729556Z           "complete": false,
2026-06-10T22:49:44.7729789Z           "evidence": []
2026-06-10T22:49:44.7729881Z         },
2026-06-10T22:49:44.7729976Z         "impl": {
2026-06-10T22:49:44.7730075Z           "complete": true,
2026-06-10T22:49:44.7730166Z           "evidence": [
2026-06-10T22:49:44.7730258Z             {
2026-06-10T22:49:44.7730386Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.7730476Z               "line": 41
2026-06-10T22:49:44.7730680Z             },
2026-06-10T22:49:44.7730772Z             {
2026-06-10T22:49:44.7730897Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-10T22:49:44.7730995Z               "line": 68
2026-06-10T22:49:44.7731086Z             },
2026-06-10T22:49:44.7731173Z             {
2026-06-10T22:49:44.7731291Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-10T22:49:44.7731386Z               "line": 99
2026-06-10T22:49:44.7731481Z             },
2026-06-10T22:49:44.7731568Z             {
2026-06-10T22:49:44.7731681Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-10T22:49:44.7731776Z               "line": 183
2026-06-10T22:49:44.7731863Z             },
2026-06-10T22:49:44.7731954Z             {
2026-06-10T22:49:44.7732071Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-10T22:49:44.7732164Z               "line": 314
2026-06-10T22:49:44.7732259Z             }
2026-06-10T22:49:44.7732353Z           ]
2026-06-10T22:49:44.7732440Z         },
2026-06-10T22:49:44.7732540Z         "int": {
2026-06-10T22:49:44.7732640Z           "complete": true,
2026-06-10T22:49:44.7732735Z           "evidence": [
2026-06-10T22:49:44.7732826Z             {
2026-06-10T22:49:44.7732959Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-10T22:49:44.7733055Z               "line": 156
2026-06-10T22:49:44.7733146Z             },
2026-06-10T22:49:44.7733240Z             {
2026-06-10T22:49:44.7733365Z               "path": "crates/spt-daemon/tests/peerloop.rs",
2026-06-10T22:49:44.7733461Z               "line": 102
2026-06-10T22:49:44.7733545Z             },
2026-06-10T22:49:44.7733645Z             {
2026-06-10T22:49:44.7733769Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.7733863Z               "line": 637
2026-06-10T22:49:44.7733952Z             },
2026-06-10T22:49:44.7734043Z             {
2026-06-10T22:49:44.7734173Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.7734276Z               "line": 974
2026-06-10T22:49:44.7734367Z             }
2026-06-10T22:49:44.7734459Z           ]
2026-06-10T22:49:44.7734544Z         },
2026-06-10T22:49:44.7734638Z         "unit": {
2026-06-10T22:49:44.7734730Z           "complete": true,
2026-06-10T22:49:44.7746420Z           "evidence": [
2026-06-10T22:49:44.7746516Z             {
2026-06-10T22:49:44.7746653Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-10T22:49:44.7746773Z               "line": 531
2026-06-10T22:49:44.7746870Z             },
2026-06-10T22:49:44.7746959Z             {
2026-06-10T22:49:44.7747091Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-10T22:49:44.7747211Z               "line": 574
2026-06-10T22:49:44.7747299Z             },
2026-06-10T22:49:44.7747389Z             {
2026-06-10T22:49:44.7747519Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-10T22:49:44.7747614Z               "line": 219
2026-06-10T22:49:44.7747704Z             }
2026-06-10T22:49:44.7747794Z           ]
2026-06-10T22:49:44.7747876Z         }
2026-06-10T22:49:44.7747967Z       }
2026-06-10T22:49:44.7748047Z     },
2026-06-10T22:49:44.7748134Z     {
2026-06-10T22:49:44.7748234Z       "id": "REQ-INST-6",
2026-06-10T22:49:44.7748429Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-10T22:49:44.7748530Z       "requiredStages": [
2026-06-10T22:49:44.7748625Z         "impl",
2026-06-10T22:49:44.7748705Z         "unit",
2026-06-10T22:49:44.7748802Z         "int"
2026-06-10T22:49:44.7748887Z       ],
2026-06-10T22:49:44.7749054Z       "stages": {
2026-06-10T22:49:44.7749145Z         "doc": {
2026-06-10T22:49:44.7749398Z           "complete": true,
2026-06-10T22:49:44.7749503Z           "evidence": [
2026-06-10T22:49:44.7749605Z             {
2026-06-10T22:49:44.7749725Z               "path": "docs/DEFERRED.md",
2026-06-10T22:49:44.7749820Z               "line": 13
2026-06-10T22:49:44.7749904Z             }
2026-06-10T22:49:44.7749984Z           ]
2026-06-10T22:49:44.7750066Z         },
2026-06-10T22:49:44.7750247Z         "impl": {
2026-06-10T22:49:44.7750347Z           "complete": true,
2026-06-10T22:49:44.7750443Z           "evidence": [
2026-06-10T22:49:44.7750529Z             {
2026-06-10T22:49:44.7750657Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-10T22:49:44.7750748Z               "line": 391
2026-06-10T22:49:44.7750839Z             },
2026-06-10T22:49:44.7750914Z             {
2026-06-10T22:49:44.7751034Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-10T22:49:44.7751129Z               "line": 27
2026-06-10T22:49:44.7751215Z             },
2026-06-10T22:49:44.7751305Z             {
2026-06-10T22:49:44.7751420Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-10T22:49:44.7751501Z               "line": 73
2026-06-10T22:49:44.7751582Z             },
2026-06-10T22:49:44.7751659Z             {
2026-06-10T22:49:44.7751782Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-10T22:49:44.7751882Z               "line": 182
2026-06-10T22:49:44.7751965Z             },
2026-06-10T22:49:44.7752046Z             {
2026-06-10T22:49:44.7752169Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.7752260Z               "line": 424
2026-06-10T22:49:44.7752346Z             },
2026-06-10T22:49:44.7752426Z             {
2026-06-10T22:49:44.7752539Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-10T22:49:44.7752620Z               "line": 31
2026-06-10T22:49:44.7752697Z             },
2026-06-10T22:49:44.7752787Z             {
2026-06-10T22:49:44.7752911Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-10T22:49:44.7753007Z               "line": 182
2026-06-10T22:49:44.7753088Z             },
2026-06-10T22:49:44.7753168Z             {
2026-06-10T22:49:44.7753279Z               "path": "crates/spt/src/api/worker.rs",
2026-06-10T22:49:44.7753364Z               "line": 81
2026-06-10T22:49:44.7753450Z             },
2026-06-10T22:49:44.7753536Z             {
2026-06-10T22:49:44.7753646Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7753741Z               "line": 1187
2026-06-10T22:49:44.7753817Z             },
2026-06-10T22:49:44.7753899Z             {
2026-06-10T22:49:44.7754012Z               "path": "crates/spt/src/wansend.rs",
2026-06-10T22:49:44.7754093Z               "line": 179
2026-06-10T22:49:44.7754185Z             },
2026-06-10T22:49:44.7754267Z             {
2026-06-10T22:49:44.7754370Z               "path": "crates/spt/src/wansend.rs",
2026-06-10T22:49:44.7754456Z               "line": 215
2026-06-10T22:49:44.7754533Z             }
2026-06-10T22:49:44.7754628Z           ]
2026-06-10T22:49:44.7754713Z         },
2026-06-10T22:49:44.7754807Z         "int": {
2026-06-10T22:49:44.7754908Z           "complete": true,
2026-06-10T22:49:44.7754987Z           "evidence": [
2026-06-10T22:49:44.7755073Z             {
2026-06-10T22:49:44.7755197Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.7755288Z               "line": 651
2026-06-10T22:49:44.7755368Z             },
2026-06-10T22:49:44.7755454Z             {
2026-06-10T22:49:44.7755579Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.7755669Z               "line": 1019
2026-06-10T22:49:44.7755763Z             },
2026-06-10T22:49:44.7755846Z             {
2026-06-10T22:49:44.7755955Z               "path": "crates/spt/src/wansend.rs",
2026-06-10T22:49:44.7756045Z               "line": 725
2026-06-10T22:49:44.7756132Z             }
2026-06-10T22:49:44.7756217Z           ]
2026-06-10T22:49:44.7756303Z         },
2026-06-10T22:49:44.7756388Z         "unit": {
2026-06-10T22:49:44.7756565Z           "complete": true,
2026-06-10T22:49:44.7756646Z           "evidence": [
2026-06-10T22:49:44.7756727Z             {
2026-06-10T22:49:44.7756847Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-10T22:49:44.7756937Z               "line": 660
2026-06-10T22:49:44.7757013Z             },
2026-06-10T22:49:44.7757096Z             {
2026-06-10T22:49:44.7757285Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.7757387Z               "line": 897
2026-06-10T22:49:44.7757472Z             },
2026-06-10T22:49:44.7757556Z             {
2026-06-10T22:49:44.7757679Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-10T22:49:44.7757761Z               "line": 66
2026-06-10T22:49:44.7757850Z             },
2026-06-10T22:49:44.7757940Z             {
2026-06-10T22:49:44.7758059Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-10T22:49:44.7758151Z               "line": 272
2026-06-10T22:49:44.7758240Z             },
2026-06-10T22:49:44.7758335Z             {
2026-06-10T22:49:44.7758441Z               "path": "crates/spt/src/api/worker.rs",
2026-06-10T22:49:44.7758531Z               "line": 201
2026-06-10T22:49:44.7758612Z             }
2026-06-10T22:49:44.7758694Z           ]
2026-06-10T22:49:44.7758775Z         }
2026-06-10T22:49:44.7758856Z       }
2026-06-10T22:49:44.7759028Z     },
2026-06-10T22:49:44.7759108Z     {
2026-06-10T22:49:44.7759208Z       "id": "REQ-INST-7",
2026-06-10T22:49:44.7759353Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-10T22:49:44.7759456Z       "requiredStages": [
2026-06-10T22:49:44.7759537Z         "impl",
2026-06-10T22:49:44.7759619Z         "unit",
2026-06-10T22:49:44.7759700Z         "int"
2026-06-10T22:49:44.7759785Z       ],
2026-06-10T22:49:44.7759876Z       "stages": {
2026-06-10T22:49:44.7759963Z         "doc": {
2026-06-10T22:49:44.7760067Z           "complete": false,
2026-06-10T22:49:44.7760156Z           "evidence": []
2026-06-10T22:49:44.7760251Z         },
2026-06-10T22:49:44.7760332Z         "impl": {
2026-06-10T22:49:44.7760422Z           "complete": true,
2026-06-10T22:49:44.7760520Z           "evidence": [
2026-06-10T22:49:44.7760592Z             {
2026-06-10T22:49:44.7760717Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-10T22:49:44.7760807Z               "line": 436
2026-06-10T22:49:44.7760893Z             },
2026-06-10T22:49:44.7760989Z             {
2026-06-10T22:49:44.7761103Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.7761193Z               "line": 42
2026-06-10T22:49:44.7761280Z             },
2026-06-10T22:49:44.7761375Z             {
2026-06-10T22:49:44.7761502Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7761585Z               "line": 27
2026-06-10T22:49:44.7761671Z             },
2026-06-10T22:49:44.7761752Z             {
2026-06-10T22:49:44.7761875Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7761966Z               "line": 191
2026-06-10T22:49:44.7762057Z             },
2026-06-10T22:49:44.7762132Z             {
2026-06-10T22:49:44.7762253Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7762347Z               "line": 328
2026-06-10T22:49:44.7762428Z             },
2026-06-10T22:49:44.7762505Z             {
2026-06-10T22:49:44.7762620Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-10T22:49:44.7762714Z               "line": 59
2026-06-10T22:49:44.7762801Z             },
2026-06-10T22:49:44.7762878Z             {
2026-06-10T22:49:44.7763000Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7763085Z               "line": 41
2026-06-10T22:49:44.7763166Z             },
2026-06-10T22:49:44.7763244Z             {
2026-06-10T22:49:44.7763362Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-10T22:49:44.7763457Z               "line": 27
2026-06-10T22:49:44.7763529Z             },
2026-06-10T22:49:44.7763724Z             {
2026-06-10T22:49:44.7763844Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-10T22:49:44.7763939Z               "line": 119
2026-06-10T22:49:44.7764019Z             },
2026-06-10T22:49:44.7764110Z             {
2026-06-10T22:49:44.7764230Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-10T22:49:44.7764325Z               "line": 134
2026-06-10T22:49:44.7764498Z             },
2026-06-10T22:49:44.7764592Z             {
2026-06-10T22:49:44.7764721Z               "path": "crates/spt-store/src/registry.rs",
2026-06-10T22:49:44.7764812Z               "line": 139
2026-06-10T22:49:44.7764902Z             }
2026-06-10T22:49:44.7764992Z           ]
2026-06-10T22:49:44.7765069Z         },
2026-06-10T22:49:44.7765156Z         "int": {
2026-06-10T22:49:44.7765254Z           "complete": true,
2026-06-10T22:49:44.7765353Z           "evidence": [
2026-06-10T22:49:44.7765440Z             {
2026-06-10T22:49:44.7765571Z               "path": "crates/spt-daemon/tests/peerloop.rs",
2026-06-10T22:49:44.7765675Z               "line": 102
2026-06-10T22:49:44.7765757Z             },
2026-06-10T22:49:44.7765844Z             {
2026-06-10T22:49:44.7765971Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.7766067Z               "line": 595
2026-06-10T22:49:44.7766148Z             },
2026-06-10T22:49:44.7766233Z             {
2026-06-10T22:49:44.7766353Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.7766444Z               "line": 869
2026-06-10T22:49:44.7766534Z             }
2026-06-10T22:49:44.7766620Z           ]
2026-06-10T22:49:44.7766707Z         },
2026-06-10T22:49:44.7766792Z         "unit": {
2026-06-10T22:49:44.7766882Z           "complete": true,
2026-06-10T22:49:44.7766972Z           "evidence": [
2026-06-10T22:49:44.7767055Z             {
2026-06-10T22:49:44.7767183Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7767273Z               "line": 1052
2026-06-10T22:49:44.7767365Z             },
2026-06-10T22:49:44.7767459Z             {
2026-06-10T22:49:44.7767588Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7767685Z               "line": 1383
2026-06-10T22:49:44.7767760Z             },
2026-06-10T22:49:44.7767855Z             {
2026-06-10T22:49:44.7767975Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-10T22:49:44.7768079Z               "line": 84
2026-06-10T22:49:44.7768164Z             },
2026-06-10T22:49:44.7768254Z             {
2026-06-10T22:49:44.7768378Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7768467Z               "line": 763
2026-06-10T22:49:44.7768556Z             },
2026-06-10T22:49:44.7768634Z             {
2026-06-10T22:49:44.7768762Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7768857Z               "line": 774
2026-06-10T22:49:44.7769034Z             },
2026-06-10T22:49:44.7769119Z             {
2026-06-10T22:49:44.7769235Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7769325Z               "line": 789
2026-06-10T22:49:44.7769406Z             },
2026-06-10T22:49:44.7769492Z             {
2026-06-10T22:49:44.7769612Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-10T22:49:44.7769702Z               "line": 165
2026-06-10T22:49:44.7769792Z             },
2026-06-10T22:49:44.7769869Z             {
2026-06-10T22:49:44.7769988Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-10T22:49:44.7770078Z               "line": 180
2026-06-10T22:49:44.7770164Z             },
2026-06-10T22:49:44.7770256Z             {
2026-06-10T22:49:44.7770364Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-10T22:49:44.7770460Z               "line": 213
2026-06-10T22:49:44.7770542Z             }
2026-06-10T22:49:44.7770632Z           ]
2026-06-10T22:49:44.7770712Z         }
2026-06-10T22:49:44.7770806Z       }
2026-06-10T22:49:44.7770902Z     },
2026-06-10T22:49:44.7771114Z     {
2026-06-10T22:49:44.7771210Z       "id": "REQ-INST-8",
2026-06-10T22:49:44.7771367Z       "title": "Remote-control mode distinct from local operation",
2026-06-10T22:49:44.7771463Z       "requiredStages": [
2026-06-10T22:49:44.7771549Z         "impl",
2026-06-10T22:49:44.7771640Z         "unit",
2026-06-10T22:49:44.7771720Z         "int"
2026-06-10T22:49:44.7771801Z       ],
2026-06-10T22:49:44.7771978Z       "stages": {
2026-06-10T22:49:44.7772072Z         "doc": {
2026-06-10T22:49:44.7772169Z           "complete": false,
2026-06-10T22:49:44.7772259Z           "evidence": []
2026-06-10T22:49:44.7772349Z         },
2026-06-10T22:49:44.7772440Z         "impl": {
2026-06-10T22:49:44.7772536Z           "complete": true,
2026-06-10T22:49:44.7772626Z           "evidence": [
2026-06-10T22:49:44.7772716Z             {
2026-06-10T22:49:44.7772841Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-10T22:49:44.7772931Z               "line": 98
2026-06-10T22:49:44.7773021Z             },
2026-06-10T22:49:44.7773109Z             {
2026-06-10T22:49:44.7773217Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-10T22:49:44.7773308Z               "line": 209
2026-06-10T22:49:44.7773395Z             },
2026-06-10T22:49:44.7773485Z             {
2026-06-10T22:49:44.7773598Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-10T22:49:44.7773693Z               "line": 230
2026-06-10T22:49:44.7773784Z             },
2026-06-10T22:49:44.7773866Z             {
2026-06-10T22:49:44.7773988Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-10T22:49:44.7774080Z               "line": 35
2026-06-10T22:49:44.7774170Z             }
2026-06-10T22:49:44.7774256Z           ]
2026-06-10T22:49:44.7774341Z         },
2026-06-10T22:49:44.7774433Z         "int": {
2026-06-10T22:49:44.7774524Z           "complete": true,
2026-06-10T22:49:44.7774617Z           "evidence": [
2026-06-10T22:49:44.7774705Z             {
2026-06-10T22:49:44.7774837Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-10T22:49:44.7774932Z               "line": 415
2026-06-10T22:49:44.7775025Z             },
2026-06-10T22:49:44.7775115Z             {
2026-06-10T22:49:44.7775233Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.7775320Z               "line": 933
2026-06-10T22:49:44.7775406Z             }
2026-06-10T22:49:44.7775499Z           ]
2026-06-10T22:49:44.7775581Z         },
2026-06-10T22:49:44.7775678Z         "unit": {
2026-06-10T22:49:44.7775781Z           "complete": true,
2026-06-10T22:49:44.7775871Z           "evidence": [
2026-06-10T22:49:44.7775962Z             {
2026-06-10T22:49:44.7776080Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-10T22:49:44.7776169Z               "line": 181
2026-06-10T22:49:44.7776245Z             },
2026-06-10T22:49:44.7776327Z             {
2026-06-10T22:49:44.7776451Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-10T22:49:44.7776546Z               "line": 259
2026-06-10T22:49:44.7776636Z             },
2026-06-10T22:49:44.7776713Z             {
2026-06-10T22:49:44.7776827Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-10T22:49:44.7776918Z               "line": 70
2026-06-10T22:49:44.7777005Z             },
2026-06-10T22:49:44.7777095Z             {
2026-06-10T22:49:44.7777208Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-10T22:49:44.7777295Z               "line": 110
2026-06-10T22:49:44.7777380Z             }
2026-06-10T22:49:44.7777475Z           ]
2026-06-10T22:49:44.7777562Z         }
2026-06-10T22:49:44.7777653Z       }
2026-06-10T22:49:44.7777729Z     },
2026-06-10T22:49:44.7777804Z     {
2026-06-10T22:49:44.7777901Z       "id": "REQ-INST-9",
2026-06-10T22:49:44.7778081Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-10T22:49:44.7778172Z       "requiredStages": [
2026-06-10T22:49:44.7778259Z         "impl",
2026-06-10T22:49:44.7778343Z         "unit"
2026-06-10T22:49:44.7778434Z       ],
2026-06-10T22:49:44.7778607Z       "stages": {
2026-06-10T22:49:44.7778696Z         "doc": {
2026-06-10T22:49:44.7778790Z           "complete": false,
2026-06-10T22:49:44.7778886Z           "evidence": []
2026-06-10T22:49:44.7779046Z         },
2026-06-10T22:49:44.7779141Z         "impl": {
2026-06-10T22:49:44.7779237Z           "complete": true,
2026-06-10T22:49:44.7779318Z           "evidence": [
2026-06-10T22:49:44.7779499Z             {
2026-06-10T22:49:44.7779629Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7779723Z               "line": 401
2026-06-10T22:49:44.7779809Z             }
2026-06-10T22:49:44.7779895Z           ]
2026-06-10T22:49:44.7779994Z         },
2026-06-10T22:49:44.7780224Z         "int": {
2026-06-10T22:49:44.7780419Z           "complete": false,
2026-06-10T22:49:44.7780638Z           "evidence": []
2026-06-10T22:49:44.7780816Z         },
2026-06-10T22:49:44.7781001Z         "unit": {
2026-06-10T22:49:44.7781197Z           "complete": true,
2026-06-10T22:49:44.7781409Z           "evidence": [
2026-06-10T22:49:44.7781603Z             {
2026-06-10T22:49:44.7781818Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7782081Z               "line": 1300
2026-06-10T22:49:44.7782280Z             },
2026-06-10T22:49:44.7782452Z             {
2026-06-10T22:49:44.7782667Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7782929Z               "line": 1309
2026-06-10T22:49:44.7783124Z             },
2026-06-10T22:49:44.7783291Z             {
2026-06-10T22:49:44.7783530Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7783782Z               "line": 1325
2026-06-10T22:49:44.7784003Z             },
2026-06-10T22:49:44.7784205Z             {
2026-06-10T22:49:44.7784426Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7784678Z               "line": 1337
2026-06-10T22:49:44.7784931Z             },
2026-06-10T22:49:44.7785192Z             {
2026-06-10T22:49:44.7785459Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.7785731Z               "line": 1357
2026-06-10T22:49:44.7785923Z             }
2026-06-10T22:49:44.7786094Z           ]
2026-06-10T22:49:44.7786262Z         }
2026-06-10T22:49:44.7786431Z       }
2026-06-10T22:49:44.7786598Z     },
2026-06-10T22:49:44.7786763Z     {
2026-06-10T22:49:44.7786959Z       "id": "REQ-INSTALL-1",
2026-06-10T22:49:44.7787269Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-10T22:49:44.7787607Z       "requiredStages": [
2026-06-10T22:49:44.7787813Z         "doc",
2026-06-10T22:49:44.7787993Z         "impl",
2026-06-10T22:49:44.7788175Z         "int"
2026-06-10T22:49:44.7788346Z       ],
2026-06-10T22:49:44.7788514Z       "stages": {
2026-06-10T22:49:44.7788698Z         "doc": {
2026-06-10T22:49:44.7788890Z           "complete": true,
2026-06-10T22:49:44.7789191Z           "evidence": [
2026-06-10T22:49:44.7789389Z             {
2026-06-10T22:49:44.7789582Z               "path": "CONTEXT.md",
2026-06-10T22:49:44.7789821Z               "line": 576
2026-06-10T22:49:44.7790011Z             }
2026-06-10T22:49:44.7790184Z           ]
2026-06-10T22:49:44.7790360Z         },
2026-06-10T22:49:44.7790532Z         "impl": {
2026-06-10T22:49:44.7790727Z           "complete": true,
2026-06-10T22:49:44.7790931Z           "evidence": [
2026-06-10T22:49:44.7791122Z             {
2026-06-10T22:49:44.7791314Z               "path": "installer/install.ps1",
2026-06-10T22:49:44.7791556Z               "line": 57
2026-06-10T22:49:44.7791748Z             },
2026-06-10T22:49:44.7791917Z             {
2026-06-10T22:49:44.7792107Z               "path": "installer/install.sh",
2026-06-10T22:49:44.7792359Z               "line": 52
2026-06-10T22:49:44.7792549Z             }
2026-06-10T22:49:44.7792721Z           ]
2026-06-10T22:49:44.7792902Z         },
2026-06-10T22:49:44.7793070Z         "int": {
2026-06-10T22:49:44.7793261Z           "complete": true,
2026-06-10T22:49:44.7793595Z           "evidence": [
2026-06-10T22:49:44.7793789Z             {
2026-06-10T22:49:44.7793999Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-10T22:49:44.7794263Z               "line": 21
2026-06-10T22:49:44.7794457Z             }
2026-06-10T22:49:44.7794624Z           ]
2026-06-10T22:49:44.7794808Z         },
2026-06-10T22:49:44.7795023Z         "unit": {
2026-06-10T22:49:44.7795310Z           "complete": false,
2026-06-10T22:49:44.7795525Z           "evidence": []
2026-06-10T22:49:44.7795729Z         }
2026-06-10T22:49:44.7795906Z       }
2026-06-10T22:49:44.7796072Z     },
2026-06-10T22:49:44.7796235Z     {
2026-06-10T22:49:44.7796406Z       "id": "REQ-INSTALL-2",
2026-06-10T22:49:44.7796683Z       "title": "Marketplace-repackaging-friendly install",
2026-06-10T22:49:44.7796958Z       "requiredStages": [
2026-06-10T22:49:44.7797163Z         "doc"
2026-06-10T22:49:44.7797341Z       ],
2026-06-10T22:49:44.7797514Z       "stages": {
2026-06-10T22:49:44.7797695Z         "doc": {
2026-06-10T22:49:44.7797890Z           "complete": true,
2026-06-10T22:49:44.7798096Z           "evidence": [
2026-06-10T22:49:44.7798358Z             {
2026-06-10T22:49:44.7798539Z               "path": "CONTEXT.md",
2026-06-10T22:49:44.7802280Z               "line": 577
2026-06-10T22:49:44.7802530Z             }
2026-06-10T22:49:44.7802718Z           ]
2026-06-10T22:49:44.7802890Z         },
2026-06-10T22:49:44.7803061Z         "impl": {
2026-06-10T22:49:44.7803263Z           "complete": false,
2026-06-10T22:49:44.7803472Z           "evidence": []
2026-06-10T22:49:44.7803672Z         },
2026-06-10T22:49:44.7803840Z         "int": {
2026-06-10T22:49:44.7804020Z           "complete": false,
2026-06-10T22:49:44.7804230Z           "evidence": []
2026-06-10T22:49:44.7804421Z         },
2026-06-10T22:49:44.7804592Z         "unit": {
2026-06-10T22:49:44.7804775Z           "complete": false,
2026-06-10T22:49:44.7804979Z           "evidence": []
2026-06-10T22:49:44.7805161Z         }
2026-06-10T22:49:44.7805326Z       }
2026-06-10T22:49:44.7805508Z     },
2026-06-10T22:49:44.7805669Z     {
2026-06-10T22:49:44.7805841Z       "id": "REQ-INSTALL-3",
2026-06-10T22:49:44.7806104Z       "title": "Idempotent + interactive-optional first run",
2026-06-10T22:49:44.7806380Z       "requiredStages": [
2026-06-10T22:49:44.7806575Z         "impl",
2026-06-10T22:49:44.7806748Z         "int"
2026-06-10T22:49:44.7806918Z       ],
2026-06-10T22:49:44.7807100Z       "stages": {
2026-06-10T22:49:44.7807290Z         "doc": {
2026-06-10T22:49:44.7807490Z           "complete": false,
2026-06-10T22:49:44.7807700Z           "evidence": []
2026-06-10T22:49:44.7807887Z         },
2026-06-10T22:49:44.7808060Z         "impl": {
2026-06-10T22:49:44.7808245Z           "complete": true,
2026-06-10T22:49:44.7808450Z           "evidence": [
2026-06-10T22:49:44.7808637Z             {
2026-06-10T22:49:44.7808846Z               "path": "installer/install.ps1",
2026-06-10T22:49:44.7809161Z               "line": 100
2026-06-10T22:49:44.7809347Z             },
2026-06-10T22:49:44.7809528Z             {
2026-06-10T22:49:44.7809719Z               "path": "installer/install.ps1",
2026-06-10T22:49:44.7809953Z               "line": 111
2026-06-10T22:49:44.7810143Z             },
2026-06-10T22:49:44.7810315Z             {
2026-06-10T22:49:44.7810495Z               "path": "installer/install.sh",
2026-06-10T22:49:44.7810731Z               "line": 79
2026-06-10T22:49:44.7810946Z             }
2026-06-10T22:49:44.7811146Z           ]
2026-06-10T22:49:44.7811323Z         },
2026-06-10T22:49:44.7811495Z         "int": {
2026-06-10T22:49:44.7811671Z           "complete": true,
2026-06-10T22:49:44.7811876Z           "evidence": [
2026-06-10T22:49:44.7812076Z             {
2026-06-10T22:49:44.7812285Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-10T22:49:44.7812535Z               "line": 167
2026-06-10T22:49:44.7812725Z             }
2026-06-10T22:49:44.7812892Z           ]
2026-06-10T22:49:44.7813061Z         },
2026-06-10T22:49:44.7813227Z         "unit": {
2026-06-10T22:49:44.7813561Z           "complete": false,
2026-06-10T22:49:44.7813766Z           "evidence": []
2026-06-10T22:49:44.7813965Z         }
2026-06-10T22:49:44.7814138Z       }
2026-06-10T22:49:44.7814303Z     },
2026-06-10T22:49:44.7814467Z     {
2026-06-10T22:49:44.7814643Z       "id": "REQ-INSTALL-4",
2026-06-10T22:49:44.7815462Z       "title": "Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over",
2026-06-10T22:49:44.7816229Z       "requiredStages": [
2026-06-10T22:49:44.7816431Z         "impl",
2026-06-10T22:49:44.7816602Z         "unit"
2026-06-10T22:49:44.7816778Z       ],
2026-06-10T22:49:44.7816950Z       "stages": {
2026-06-10T22:49:44.7817130Z         "doc": {
2026-06-10T22:49:44.7817313Z           "complete": false,
2026-06-10T22:49:44.7817517Z           "evidence": []
2026-06-10T22:49:44.7817702Z         },
2026-06-10T22:49:44.7817890Z         "impl": {
2026-06-10T22:49:44.7818069Z           "complete": true,
2026-06-10T22:49:44.7818279Z           "evidence": [
2026-06-10T22:49:44.7818466Z             {
2026-06-10T22:49:44.7818691Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-10T22:49:44.7819048Z               "line": 154
2026-06-10T22:49:44.7819245Z             },
2026-06-10T22:49:44.7819430Z             {
2026-06-10T22:49:44.7819636Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-10T22:49:44.7819893Z               "line": 29
2026-06-10T22:49:44.7820083Z             },
2026-06-10T22:49:44.7820255Z             {
2026-06-10T22:49:44.7820461Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-10T22:49:44.7820713Z               "line": 117
2026-06-10T22:49:44.7820903Z             },
2026-06-10T22:49:44.7821069Z             {
2026-06-10T22:49:44.7821287Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-10T22:49:44.7821545Z               "line": 161
2026-06-10T22:49:44.7821745Z             },
2026-06-10T22:49:44.7821906Z             {
2026-06-10T22:49:44.7822112Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-10T22:49:44.7822364Z               "line": 191
2026-06-10T22:49:44.7822541Z             },
2026-06-10T22:49:44.7822709Z             {
2026-06-10T22:49:44.7822903Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-10T22:49:44.7823155Z               "line": 223
2026-06-10T22:49:44.7823348Z             },
2026-06-10T22:49:44.7823526Z             {
2026-06-10T22:49:44.7823722Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7823948Z               "line": 4166
2026-06-10T22:49:44.7824154Z             }
2026-06-10T22:49:44.7824340Z           ]
2026-06-10T22:49:44.7824511Z         },
2026-06-10T22:49:44.7824679Z         "int": {
2026-06-10T22:49:44.7824863Z           "complete": false,
2026-06-10T22:49:44.7825073Z           "evidence": []
2026-06-10T22:49:44.7825270Z         },
2026-06-10T22:49:44.7825451Z         "unit": {
2026-06-10T22:49:44.7825633Z           "complete": true,
2026-06-10T22:49:44.7825832Z           "evidence": [
2026-06-10T22:49:44.7826023Z             {
2026-06-10T22:49:44.7826243Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-10T22:49:44.7826508Z               "line": 335
2026-06-10T22:49:44.7826704Z             },
2026-06-10T22:49:44.7826885Z             {
2026-06-10T22:49:44.7827089Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-10T22:49:44.7827338Z               "line": 269
2026-06-10T22:49:44.7827529Z             },
2026-06-10T22:49:44.7827700Z             {
2026-06-10T22:49:44.7827901Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-10T22:49:44.7828145Z               "line": 310
2026-06-10T22:49:44.7828334Z             },
2026-06-10T22:49:44.7828508Z             {
2026-06-10T22:49:44.7828714Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-10T22:49:44.7829045Z               "line": 330
2026-06-10T22:49:44.7829390Z             },
2026-06-10T22:49:44.7829562Z             {
2026-06-10T22:49:44.7829753Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7830004Z               "line": 5756
2026-06-10T22:49:44.7830191Z             }
2026-06-10T22:49:44.7830358Z           ]
2026-06-10T22:49:44.7830530Z         }
2026-06-10T22:49:44.7830697Z       }
2026-06-10T22:49:44.7830892Z     },
2026-06-10T22:49:44.7831158Z     {
2026-06-10T22:49:44.7831346Z       "id": "REQ-INSTALL-5",
2026-06-10T22:49:44.7831932Z       "title": "Non-interactive install path: the canonical one-liner doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration",
2026-06-10T22:49:44.7832519Z       "requiredStages": [
2026-06-10T22:49:44.7832720Z         "impl",
2026-06-10T22:49:44.7832968Z         "int"
2026-06-10T22:49:44.7833139Z       ],
2026-06-10T22:49:44.7833358Z       "stages": {
2026-06-10T22:49:44.7833540Z         "doc": {
2026-06-10T22:49:44.7833739Z           "complete": false,
2026-06-10T22:49:44.7833998Z           "evidence": []
2026-06-10T22:49:44.7834177Z         },
2026-06-10T22:49:44.7834347Z         "impl": {
2026-06-10T22:49:44.7834528Z           "complete": true,
2026-06-10T22:49:44.7834733Z           "evidence": [
2026-06-10T22:49:44.7834924Z             {
2026-06-10T22:49:44.7835119Z               "path": "installer/install.ps1",
2026-06-10T22:49:44.7835367Z               "line": 5
2026-06-10T22:49:44.7835554Z             },
2026-06-10T22:49:44.7835734Z             {
2026-06-10T22:49:44.7835930Z               "path": "installer/install.sh",
2026-06-10T22:49:44.7836164Z               "line": 6
2026-06-10T22:49:44.7836359Z             }
2026-06-10T22:49:44.7836536Z           ]
2026-06-10T22:49:44.7836707Z         },
2026-06-10T22:49:44.7836874Z         "int": {
2026-06-10T22:49:44.7837063Z           "complete": true,
2026-06-10T22:49:44.7837274Z           "evidence": [
2026-06-10T22:49:44.7837460Z             {
2026-06-10T22:49:44.7837702Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-10T22:49:44.7837978Z               "line": 22
2026-06-10T22:49:44.7838203Z             }
2026-06-10T22:49:44.7838366Z           ]
2026-06-10T22:49:44.7838522Z         },
2026-06-10T22:49:44.7838681Z         "unit": {
2026-06-10T22:49:44.7838870Z           "complete": false,
2026-06-10T22:49:44.7839298Z           "evidence": []
2026-06-10T22:49:44.7839506Z         }
2026-06-10T22:49:44.7839673Z       }
2026-06-10T22:49:44.7839845Z     },
2026-06-10T22:49:44.7840017Z     {
2026-06-10T22:49:44.7840216Z       "id": "REQ-INSTALL-6",
2026-06-10T22:49:44.7841662Z       "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) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)",
2026-06-10T22:49:44.7842816Z       "requiredStages": [
2026-06-10T22:49:44.7843017Z         "impl",
2026-06-10T22:49:44.7843204Z         "unit"
2026-06-10T22:49:44.7843384Z       ],
2026-06-10T22:49:44.7843557Z       "stages": {
2026-06-10T22:49:44.7843737Z         "doc": {
2026-06-10T22:49:44.7843923Z           "complete": false,
2026-06-10T22:49:44.7844129Z           "evidence": []
2026-06-10T22:49:44.7844333Z         },
2026-06-10T22:49:44.7844502Z         "impl": {
2026-06-10T22:49:44.7844689Z           "complete": true,
2026-06-10T22:49:44.7844898Z           "evidence": [
2026-06-10T22:49:44.7845093Z             {
2026-06-10T22:49:44.7845302Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-10T22:49:44.7845565Z               "line": 59
2026-06-10T22:49:44.7845757Z             },
2026-06-10T22:49:44.7845932Z             {
2026-06-10T22:49:44.7846137Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-10T22:49:44.7846391Z               "line": 559
2026-06-10T22:49:44.7846701Z             },
2026-06-10T22:49:44.7846900Z             {
2026-06-10T22:49:44.7847110Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-10T22:49:44.7847373Z               "line": 191
2026-06-10T22:49:44.7847566Z             },
2026-06-10T22:49:44.7847744Z             {
2026-06-10T22:49:44.7847952Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-10T22:49:44.7848316Z               "line": 276
2026-06-10T22:49:44.7848515Z             },
2026-06-10T22:49:44.7848687Z             {
2026-06-10T22:49:44.7848887Z               "path": "crates/spt/src/main.rs",
2026-06-10T22:49:44.7849221Z               "line": 40
2026-06-10T22:49:44.7849411Z             },
2026-06-10T22:49:44.7849585Z             {
2026-06-10T22:49:44.7849778Z               "path": "installer/install.sh",
2026-06-10T22:49:44.7850015Z               "line": 104
2026-06-10T22:49:44.7850200Z             }
2026-06-10T22:49:44.7850372Z           ]
2026-06-10T22:49:44.7850544Z         },
2026-06-10T22:49:44.7850720Z         "int": {
2026-06-10T22:49:44.7850902Z           "complete": false,
2026-06-10T22:49:44.7851115Z           "evidence": []
2026-06-10T22:49:44.7851306Z         },
2026-06-10T22:49:44.7851473Z         "unit": {
2026-06-10T22:49:44.7851655Z           "complete": true,
2026-06-10T22:49:44.7851856Z           "evidence": [
2026-06-10T22:49:44.7852040Z             {
2026-06-10T22:49:44.7852264Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-10T22:49:44.7852519Z               "line": 866
2026-06-10T22:49:44.7852707Z             }
2026-06-10T22:49:44.7852878Z           ]
2026-06-10T22:49:44.7853047Z         }
2026-06-10T22:49:44.7853211Z       }
2026-06-10T22:49:44.7853376Z     },
2026-06-10T22:49:44.7853540Z     {
2026-06-10T22:49:44.7853716Z       "id": "REQ-INSTALL-7",
2026-06-10T22:49:44.7854965Z       "title": "Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)",
2026-06-10T22:49:44.7856068Z       "requiredStages": [
2026-06-10T22:49:44.7856268Z         "impl"
2026-06-10T22:49:44.7856440Z       ],
2026-06-10T22:49:44.7856607Z       "stages": {
2026-06-10T22:49:44.7856802Z         "doc": {
2026-06-10T22:49:44.7856989Z           "complete": false,
2026-06-10T22:49:44.7857202Z           "evidence": []
2026-06-10T22:49:44.7857398Z         },
2026-06-10T22:49:44.7857566Z         "impl": {
2026-06-10T22:49:44.7857755Z           "complete": true,
2026-06-10T22:49:44.7857957Z           "evidence": [
2026-06-10T22:49:44.7858145Z             {
2026-06-10T22:49:44.7858347Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7858590Z               "line": 2830
2026-06-10T22:49:44.7858789Z             },
2026-06-10T22:49:44.7859042Z             {
2026-06-10T22:49:44.7859247Z               "path": "installer/install.ps1",
2026-06-10T22:49:44.7859486Z               "line": 157
2026-06-10T22:49:44.7859677Z             }
2026-06-10T22:49:44.7859854Z           ]
2026-06-10T22:49:44.7860020Z         },
2026-06-10T22:49:44.7860188Z         "int": {
2026-06-10T22:49:44.7860367Z           "complete": false,
2026-06-10T22:49:44.7860575Z           "evidence": []
2026-06-10T22:49:44.7860760Z         },
2026-06-10T22:49:44.7860927Z         "unit": {
2026-06-10T22:49:44.7861113Z           "complete": false,
2026-06-10T22:49:44.7861313Z           "evidence": []
2026-06-10T22:49:44.7861495Z         }
2026-06-10T22:49:44.7861651Z       }
2026-06-10T22:49:44.7861819Z     },
2026-06-10T22:49:44.7861990Z     {
2026-06-10T22:49:44.7862162Z       "id": "REQ-INSTALL-8",
2026-06-10T22:49:44.7863257Z       "title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)",
2026-06-10T22:49:44.7864476Z       "requiredStages": [
2026-06-10T22:49:44.7864672Z         "impl"
2026-06-10T22:49:44.7864838Z       ],
2026-06-10T22:49:44.7865011Z       "stages": {
2026-06-10T22:49:44.7865288Z         "doc": {
2026-06-10T22:49:44.7865487Z           "complete": false,
2026-06-10T22:49:44.7865711Z           "evidence": []
2026-06-10T22:49:44.7865905Z         },
2026-06-10T22:49:44.7866075Z         "impl": {
2026-06-10T22:49:44.7866261Z           "complete": true,
2026-06-10T22:49:44.7866466Z           "evidence": [
2026-06-10T22:49:44.7866657Z             {
2026-06-10T22:49:44.7866848Z               "path": "installer/install.ps1",
2026-06-10T22:49:44.7867085Z               "line": 184
2026-06-10T22:49:44.7867272Z             },
2026-06-10T22:49:44.7867438Z             {
2026-06-10T22:49:44.7867644Z               "path": "installer/install.sh",
2026-06-10T22:49:44.7867883Z               "line": 121
2026-06-10T22:49:44.7868063Z             }
2026-06-10T22:49:44.7868235Z           ]
2026-06-10T22:49:44.7868402Z         },
2026-06-10T22:49:44.7868568Z         "int": {
2026-06-10T22:49:44.7868749Z           "complete": false,
2026-06-10T22:49:44.7869039Z           "evidence": []
2026-06-10T22:49:44.7869236Z         },
2026-06-10T22:49:44.7869407Z         "unit": {
2026-06-10T22:49:44.7869588Z           "complete": false,
2026-06-10T22:49:44.7869789Z           "evidence": []
2026-06-10T22:49:44.7869979Z         }
2026-06-10T22:49:44.7870142Z       }
2026-06-10T22:49:44.7870312Z     },
2026-06-10T22:49:44.7870466Z     {
2026-06-10T22:49:44.7870642Z       "id": "REQ-MANIFEST-1",
2026-06-10T22:49:44.7870951Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-10T22:49:44.7871267Z       "requiredStages": [
2026-06-10T22:49:44.7871460Z         "doc",
2026-06-10T22:49:44.7871644Z         "impl",
2026-06-10T22:49:44.7871816Z         "unit"
2026-06-10T22:49:44.7871989Z       ],
2026-06-10T22:49:44.7872159Z       "stages": {
2026-06-10T22:49:44.7872332Z         "doc": {
2026-06-10T22:49:44.7872512Z           "complete": true,
2026-06-10T22:49:44.7872708Z           "evidence": [
2026-06-10T22:49:44.7872899Z             {
2026-06-10T22:49:44.7873089Z               "path": "docs/MANIFEST.md",
2026-06-10T22:49:44.7873319Z               "line": 19
2026-06-10T22:49:44.7873509Z             }
2026-06-10T22:49:44.7873681Z           ]
2026-06-10T22:49:44.7873846Z         },
2026-06-10T22:49:44.7874012Z         "impl": {
2026-06-10T22:49:44.7874187Z           "complete": true,
2026-06-10T22:49:44.7874388Z           "evidence": [
2026-06-10T22:49:44.7874565Z             {
2026-06-10T22:49:44.7874773Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-10T22:49:44.7875036Z               "line": 18
2026-06-10T22:49:44.7875228Z             }
2026-06-10T22:49:44.7878105Z           ]
2026-06-10T22:49:44.7878323Z         },
2026-06-10T22:49:44.7878499Z         "int": {
2026-06-10T22:49:44.7878696Z           "complete": false,
2026-06-10T22:49:44.7878914Z           "evidence": []
2026-06-10T22:49:44.7879185Z         },
2026-06-10T22:49:44.7879362Z         "unit": {
2026-06-10T22:49:44.7879552Z           "complete": true,
2026-06-10T22:49:44.7879753Z           "evidence": [
2026-06-10T22:49:44.7879958Z             {
2026-06-10T22:49:44.7880176Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-10T22:49:44.7880444Z               "line": 746
2026-06-10T22:49:44.7880635Z             },
2026-06-10T22:49:44.7880806Z             {
2026-06-10T22:49:44.7881016Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-10T22:49:44.7881270Z               "line": 860
2026-06-10T22:49:44.7881459Z             },
2026-06-10T22:49:44.7881630Z             {
2026-06-10T22:49:44.7881837Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-10T22:49:44.7882229Z               "line": 872
2026-06-10T22:49:44.7882419Z             },
2026-06-10T22:49:44.7882582Z             {
2026-06-10T22:49:44.7882786Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-10T22:49:44.7883034Z               "line": 883
2026-06-10T22:49:44.7883226Z             },
2026-06-10T22:49:44.7883397Z             {
2026-06-10T22:49:44.7883721Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-10T22:49:44.7883973Z               "line": 900
2026-06-10T22:49:44.7884166Z             },
2026-06-10T22:49:44.7884335Z             {
2026-06-10T22:49:44.7884530Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-10T22:49:44.7884776Z               "line": 914
2026-06-10T22:49:44.7884967Z             },
2026-06-10T22:49:44.7885139Z             {
2026-06-10T22:49:44.7885333Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-10T22:49:44.7885573Z               "line": 929
2026-06-10T22:49:44.7885764Z             },
2026-06-10T22:49:44.7885940Z             {
2026-06-10T22:49:44.7886141Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-10T22:49:44.7886380Z               "line": 944
2026-06-10T22:49:44.7886569Z             },
2026-06-10T22:49:44.7886742Z             {
2026-06-10T22:49:44.7886944Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-10T22:49:44.7887181Z               "line": 959
2026-06-10T22:49:44.7887357Z             },
2026-06-10T22:49:44.7887533Z             {
2026-06-10T22:49:44.7887730Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-10T22:49:44.7887978Z               "line": 970
2026-06-10T22:49:44.7888168Z             }
2026-06-10T22:49:44.7888335Z           ]
2026-06-10T22:49:44.7888511Z         }
2026-06-10T22:49:44.7888684Z       }
2026-06-10T22:49:44.7888835Z     },
2026-06-10T22:49:44.7889064Z     {
2026-06-10T22:49:44.7889237Z       "id": "REQ-MESH-1",
2026-06-10T22:49:44.7891409Z       "title": "Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).",
2026-06-10T22:49:44.7893251Z       "requiredStages": [
2026-06-10T22:49:44.7893453Z         "impl",
2026-06-10T22:49:44.7893623Z         "unit",
2026-06-10T22:49:44.7893795Z         "int"
2026-06-10T22:49:44.7893971Z       ],
2026-06-10T22:49:44.7894138Z       "stages": {
2026-06-10T22:49:44.7894314Z         "doc": {
2026-06-10T22:49:44.7894495Z           "complete": false,
2026-06-10T22:49:44.7894717Z           "evidence": []
2026-06-10T22:49:44.7894900Z         },
2026-06-10T22:49:44.7895067Z         "impl": {
2026-06-10T22:49:44.7895259Z           "complete": true,
2026-06-10T22:49:44.7895456Z           "evidence": [
2026-06-10T22:49:44.7895646Z             {
2026-06-10T22:49:44.7895841Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-10T22:49:44.7896104Z               "line": 680
2026-06-10T22:49:44.7896305Z             },
2026-06-10T22:49:44.7896495Z             {
2026-06-10T22:49:44.7896710Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-10T22:49:44.7896964Z               "line": 38
2026-06-10T22:49:44.7897158Z             },
2026-06-10T22:49:44.7897330Z             {
2026-06-10T22:49:44.7897538Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-10T22:49:44.7897788Z               "line": 161
2026-06-10T22:49:44.7897980Z             },
2026-06-10T22:49:44.7898150Z             {
2026-06-10T22:49:44.7898357Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-10T22:49:44.7898728Z               "line": 206
2026-06-10T22:49:44.7898919Z             },
2026-06-10T22:49:44.7899099Z             {
2026-06-10T22:49:44.7899230Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-10T22:49:44.7899324Z               "line": 57
2026-06-10T22:49:44.7899419Z             },
2026-06-10T22:49:44.7899507Z             {
2026-06-10T22:49:44.7899748Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-10T22:49:44.7899845Z               "line": 24
2026-06-10T22:49:44.7899939Z             },
2026-06-10T22:49:44.7900030Z             {
2026-06-10T22:49:44.7900164Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-10T22:49:44.7900254Z               "line": 142
2026-06-10T22:49:44.7900348Z             },
2026-06-10T22:49:44.7900439Z             {
2026-06-10T22:49:44.7900574Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-10T22:49:44.7900672Z               "line": 162
2026-06-10T22:49:44.7900773Z             }
2026-06-10T22:49:44.7900864Z           ]
2026-06-10T22:49:44.7900949Z         },
2026-06-10T22:49:44.7901039Z         "int": {
2026-06-10T22:49:44.7901136Z           "complete": true,
2026-06-10T22:49:44.7901231Z           "evidence": [
2026-06-10T22:49:44.7901320Z             {
2026-06-10T22:49:44.7901460Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-10T22:49:44.7901554Z               "line": 67
2026-06-10T22:49:44.7901640Z             },
2026-06-10T22:49:44.7901732Z             {
2026-06-10T22:49:44.7901859Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-10T22:49:44.7901950Z               "line": 93
2026-06-10T22:49:44.7902042Z             },
2026-06-10T22:49:44.7902128Z             {
2026-06-10T22:49:44.7902255Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-10T22:49:44.7902346Z               "line": 117
2026-06-10T22:49:44.7902443Z             },
2026-06-10T22:49:44.7902531Z             {
2026-06-10T22:49:44.7902659Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-10T22:49:44.7902750Z               "line": 134
2026-06-10T22:49:44.7902839Z             }
2026-06-10T22:49:44.7902929Z           ]
2026-06-10T22:49:44.7903015Z         },
2026-06-10T22:49:44.7903106Z         "unit": {
2026-06-10T22:49:44.7903206Z           "complete": true,
2026-06-10T22:49:44.7903301Z           "evidence": [
2026-06-10T22:49:44.7903393Z             {
2026-06-10T22:49:44.7903515Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-10T22:49:44.7903615Z               "line": 427
2026-06-10T22:49:44.7903708Z             },
2026-06-10T22:49:44.7903798Z             {
2026-06-10T22:49:44.7903935Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-10T22:49:44.7904027Z               "line": 376
2026-06-10T22:49:44.7904117Z             },
2026-06-10T22:49:44.7904202Z             {
2026-06-10T22:49:44.7904337Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-10T22:49:44.7904431Z               "line": 412
2026-06-10T22:49:44.7904526Z             },
2026-06-10T22:49:44.7904623Z             {
2026-06-10T22:49:44.7904750Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-10T22:49:44.7904841Z               "line": 427
2026-06-10T22:49:44.7904928Z             },
2026-06-10T22:49:44.7905023Z             {
2026-06-10T22:49:44.7905156Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-10T22:49:44.7905252Z               "line": 438
2026-06-10T22:49:44.7905343Z             },
2026-06-10T22:49:44.7905432Z             {
2026-06-10T22:49:44.7905565Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-10T22:49:44.7905655Z               "line": 449
2026-06-10T22:49:44.7905744Z             },
2026-06-10T22:49:44.7905834Z             {
2026-06-10T22:49:44.7905964Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-10T22:49:44.7906063Z               "line": 460
2026-06-10T22:49:44.7906250Z             },
2026-06-10T22:49:44.7906345Z             {
2026-06-10T22:49:44.7906468Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-10T22:49:44.7906570Z               "line": 496
2026-06-10T22:49:44.7906660Z             },
2026-06-10T22:49:44.7906750Z             {
2026-06-10T22:49:44.7906936Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-10T22:49:44.7907031Z               "line": 519
2026-06-10T22:49:44.7907117Z             },
2026-06-10T22:49:44.7907204Z             {
2026-06-10T22:49:44.7907327Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-10T22:49:44.7907422Z               "line": 546
2026-06-10T22:49:44.7907500Z             }
2026-06-10T22:49:44.7907590Z           ]
2026-06-10T22:49:44.7907675Z         }
2026-06-10T22:49:44.7907756Z       }
2026-06-10T22:49:44.7907848Z     },
2026-06-10T22:49:44.7907933Z     {
2026-06-10T22:49:44.7908031Z       "id": "REQ-MESH-2",
2026-06-10T22:49:44.7910994Z       "title": "Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).",
2026-06-10T22:49:44.7911124Z       "requiredStages": [
2026-06-10T22:49:44.7911213Z         "impl",
2026-06-10T22:49:44.7911294Z         "unit",
2026-06-10T22:49:44.7911396Z         "int"
2026-06-10T22:49:44.7911472Z       ],
2026-06-10T22:49:44.7911561Z       "stages": {
2026-06-10T22:49:44.7911653Z         "doc": {
2026-06-10T22:49:44.7911743Z           "complete": false,
2026-06-10T22:49:44.7911834Z           "evidence": []
2026-06-10T22:49:44.7911919Z         },
2026-06-10T22:49:44.7912006Z         "impl": {
2026-06-10T22:49:44.7912105Z           "complete": true,
2026-06-10T22:49:44.7912195Z           "evidence": [
2026-06-10T22:49:44.7912277Z             {
2026-06-10T22:49:44.7912401Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-10T22:49:44.7912492Z               "line": 569
2026-06-10T22:49:44.7912573Z             },
2026-06-10T22:49:44.7912654Z             {
2026-06-10T22:49:44.7912777Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-10T22:49:44.7912868Z               "line": 118
2026-06-10T22:49:44.7912950Z             },
2026-06-10T22:49:44.7913036Z             {
2026-06-10T22:49:44.7913153Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-10T22:49:44.7913244Z               "line": 347
2026-06-10T22:49:44.7913330Z             },
2026-06-10T22:49:44.7913409Z             {
2026-06-10T22:49:44.7913522Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-10T22:49:44.7913613Z               "line": 389
2026-06-10T22:49:44.7913691Z             },
2026-06-10T22:49:44.7913780Z             {
2026-06-10T22:49:44.7913895Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-10T22:49:44.7913981Z               "line": 403
2026-06-10T22:49:44.7914062Z             },
2026-06-10T22:49:44.7914147Z             {
2026-06-10T22:49:44.7914263Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-10T22:49:44.7914348Z               "line": 492
2026-06-10T22:49:44.7914433Z             },
2026-06-10T22:49:44.7914510Z             {
2026-06-10T22:49:44.7914625Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-10T22:49:44.7914710Z               "line": 507
2026-06-10T22:49:44.7914958Z             },
2026-06-10T22:49:44.7915044Z             {
2026-06-10T22:49:44.7915154Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-10T22:49:44.7915241Z               "line": 534
2026-06-10T22:49:44.7915324Z             },
2026-06-10T22:49:44.7915406Z             {
2026-06-10T22:49:44.7915527Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-10T22:49:44.7915721Z               "line": 207
2026-06-10T22:49:44.7915808Z             },
2026-06-10T22:49:44.7915889Z             {
2026-06-10T22:49:44.7916011Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-10T22:49:44.7916096Z               "line": 755
2026-06-10T22:49:44.7916182Z             },
2026-06-10T22:49:44.7916262Z             {
2026-06-10T22:49:44.7916375Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-10T22:49:44.7916461Z               "line": 816
2026-06-10T22:49:44.7916543Z             },
2026-06-10T22:49:44.7916628Z             {
2026-06-10T22:49:44.7916752Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-10T22:49:44.7916839Z               "line": 869
2026-06-10T22:49:44.7916924Z             },
2026-06-10T22:49:44.7917005Z             {
2026-06-10T22:49:44.7917125Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-10T22:49:44.7917210Z               "line": 891
2026-06-10T22:49:44.7917300Z             },
2026-06-10T22:49:44.7917391Z             {
2026-06-10T22:49:44.7917506Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7917596Z               "line": 112
2026-06-10T22:49:44.7917682Z             },
2026-06-10T22:49:44.7917774Z             {
2026-06-10T22:49:44.7917887Z               "path": "crates/spt-store/src/roster.rs",
2026-06-10T22:49:44.7917973Z               "line": 44
2026-06-10T22:49:44.7918055Z             },
2026-06-10T22:49:44.7918140Z             {
2026-06-10T22:49:44.7918254Z               "path": "crates/spt-store/src/roster.rs",
2026-06-10T22:49:44.7918346Z               "line": 184
2026-06-10T22:49:44.7918427Z             },
2026-06-10T22:49:44.7918507Z             {
2026-06-10T22:49:44.7918620Z               "path": "crates/spt-store/src/roster.rs",
2026-06-10T22:49:44.7918706Z               "line": 211
2026-06-10T22:49:44.7918796Z             },
2026-06-10T22:49:44.7918880Z             {
2026-06-10T22:49:44.7919071Z               "path": "crates/spt-store/src/roster.rs",
2026-06-10T22:49:44.7919162Z               "line": 251
2026-06-10T22:49:44.7919243Z             },
2026-06-10T22:49:44.7919324Z             {
2026-06-10T22:49:44.7919429Z               "path": "crates/spt-store/src/roster.rs",
2026-06-10T22:49:44.7919514Z               "line": 275
2026-06-10T22:49:44.7919600Z             },
2026-06-10T22:49:44.7919673Z             {
2026-06-10T22:49:44.7919782Z               "path": "crates/spt-store/src/roster.rs",
2026-06-10T22:49:44.7919867Z               "line": 289
2026-06-10T22:49:44.7919949Z             },
2026-06-10T22:49:44.7920025Z             {
2026-06-10T22:49:44.7920144Z               "path": "crates/spt-store/src/roster.rs",
2026-06-10T22:49:44.7920225Z               "line": 300
2026-06-10T22:49:44.7920307Z             },
2026-06-10T22:49:44.7920387Z             {
2026-06-10T22:49:44.7920497Z               "path": "crates/spt-store/src/roster.rs",
2026-06-10T22:49:44.7920583Z               "line": 313
2026-06-10T22:49:44.7920665Z             }
2026-06-10T22:49:44.7920745Z           ]
2026-06-10T22:49:44.7920821Z         },
2026-06-10T22:49:44.7920898Z         "int": {
2026-06-10T22:49:44.7920984Z           "complete": true,
2026-06-10T22:49:44.7921064Z           "evidence": [
2026-06-10T22:49:44.7921145Z             {
2026-06-10T22:49:44.7921266Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-10T22:49:44.7921355Z               "line": 116
2026-06-10T22:49:44.7921435Z             },
2026-06-10T22:49:44.7921511Z             {
2026-06-10T22:49:44.7921626Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-10T22:49:44.7921816Z               "line": 181
2026-06-10T22:49:44.7921908Z             }
2026-06-10T22:49:44.7921984Z           ]
2026-06-10T22:49:44.7922065Z         },
2026-06-10T22:49:44.7922145Z         "unit": {
2026-06-10T22:49:44.7922232Z           "complete": true,
2026-06-10T22:49:44.7922323Z           "evidence": [
2026-06-10T22:49:44.7922398Z             {
2026-06-10T22:49:44.7922613Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-10T22:49:44.7922709Z               "line": 999
2026-06-10T22:49:44.7922784Z             },
2026-06-10T22:49:44.7922862Z             {
2026-06-10T22:49:44.7922980Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-10T22:49:44.7923071Z               "line": 1016
2026-06-10T22:49:44.7923147Z             },
2026-06-10T22:49:44.7923224Z             {
2026-06-10T22:49:44.7923342Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-10T22:49:44.7923428Z               "line": 1024
2026-06-10T22:49:44.7923515Z             },
2026-06-10T22:49:44.7923601Z             {
2026-06-10T22:49:44.7923713Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-10T22:49:44.7923794Z               "line": 1048
2026-06-10T22:49:44.7923885Z             },
2026-06-10T22:49:44.7923964Z             {
2026-06-10T22:49:44.7924083Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-10T22:49:44.7924178Z               "line": 1499
2026-06-10T22:49:44.7924256Z             },
2026-06-10T22:49:44.7924331Z             {
2026-06-10T22:49:44.7924440Z               "path": "crates/spt-store/src/roster.rs",
2026-06-10T22:49:44.7924532Z               "line": 347
2026-06-10T22:49:44.7924608Z             },
2026-06-10T22:49:44.7924683Z             {
2026-06-10T22:49:44.7924794Z               "path": "crates/spt-store/src/roster.rs",
2026-06-10T22:49:44.7924880Z               "line": 370
2026-06-10T22:49:44.7924974Z             },
2026-06-10T22:49:44.7925065Z             {
2026-06-10T22:49:44.7925175Z               "path": "crates/spt-store/src/roster.rs",
2026-06-10T22:49:44.7925270Z               "line": 407
2026-06-10T22:49:44.7925351Z             },
2026-06-10T22:49:44.7925438Z             {
2026-06-10T22:49:44.7925542Z               "path": "crates/spt-store/src/roster.rs",
2026-06-10T22:49:44.7925632Z               "line": 431
2026-06-10T22:49:44.7925714Z             },
2026-06-10T22:49:44.7925805Z             {
2026-06-10T22:49:44.7925924Z               "path": "crates/spt-store/src/roster.rs",
2026-06-10T22:49:44.7926010Z               "line": 483
2026-06-10T22:49:44.7926092Z             },
2026-06-10T22:49:44.7926181Z             {
2026-06-10T22:49:44.7926290Z               "path": "crates/spt-store/src/roster.rs",
2026-06-10T22:49:44.7926383Z               "line": 499
2026-06-10T22:49:44.7926463Z             },
2026-06-10T22:49:44.7926547Z             {
2026-06-10T22:49:44.7926651Z               "path": "crates/spt-store/src/roster.rs",
2026-06-10T22:49:44.7926747Z               "line": 514
2026-06-10T22:49:44.7926827Z             },
2026-06-10T22:49:44.7926916Z             {
2026-06-10T22:49:44.7927017Z               "path": "crates/spt-store/src/roster.rs",
2026-06-10T22:49:44.7927103Z               "line": 531
2026-06-10T22:49:44.7927188Z             }
2026-06-10T22:49:44.7927269Z           ]
2026-06-10T22:49:44.7927351Z         }
2026-06-10T22:49:44.7927432Z       }
2026-06-10T22:49:44.7927517Z     },
2026-06-10T22:49:44.7927603Z     {
2026-06-10T22:49:44.7927695Z       "id": "REQ-MESH-3",
2026-06-10T22:49:44.7929483Z       "title": "Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.",
2026-06-10T22:49:44.7929694Z       "requiredStages": [
2026-06-10T22:49:44.7929783Z         "impl",
2026-06-10T22:49:44.7929874Z         "unit",
2026-06-10T22:49:44.7929951Z         "int"
2026-06-10T22:49:44.7930037Z       ],
2026-06-10T22:49:44.7930127Z       "stages": {
2026-06-10T22:49:44.7930213Z         "doc": {
2026-06-10T22:49:44.7930403Z           "complete": false,
2026-06-10T22:49:44.7930494Z           "evidence": []
2026-06-10T22:49:44.7930586Z         },
2026-06-10T22:49:44.7930671Z         "impl": {
2026-06-10T22:49:44.7930766Z           "complete": true,
2026-06-10T22:49:44.7930852Z           "evidence": [
2026-06-10T22:49:44.7930933Z             {
2026-06-10T22:49:44.7931057Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.7931148Z               "line": 410
2026-06-10T22:49:44.7931230Z             },
2026-06-10T22:49:44.7931314Z             {
2026-06-10T22:49:44.7931443Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.7931540Z               "line": 603
2026-06-10T22:49:44.7931624Z             }
2026-06-10T22:49:44.7931710Z           ]
2026-06-10T22:49:44.7931792Z         },
2026-06-10T22:49:44.7931878Z         "int": {
2026-06-10T22:49:44.7931971Z           "complete": true,
2026-06-10T22:49:44.7932061Z           "evidence": [
2026-06-10T22:49:44.7932143Z             {
2026-06-10T22:49:44.7932272Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-10T22:49:44.7932362Z               "line": 373
2026-06-10T22:49:44.7932443Z             },
2026-06-10T22:49:44.7932530Z             {
2026-06-10T22:49:44.7932639Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-10T22:49:44.7932724Z               "line": 436
2026-06-10T22:49:44.7932807Z             }
2026-06-10T22:49:44.7932892Z           ]
2026-06-10T22:49:44.7932972Z         },
2026-06-10T22:49:44.7933054Z         "unit": {
2026-06-10T22:49:44.7933154Z           "complete": true,
2026-06-10T22:49:44.7933245Z           "evidence": [
2026-06-10T22:49:44.7933330Z             {
2026-06-10T22:49:44.7933446Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.7933540Z               "line": 881
2026-06-10T22:49:44.7933621Z             }
2026-06-10T22:49:44.7933703Z           ]
2026-06-10T22:49:44.7933789Z         }
2026-06-10T22:49:44.7933869Z       }
2026-06-10T22:49:44.7933955Z     },
2026-06-10T22:49:44.7934041Z     {
2026-06-10T22:49:44.7934137Z       "id": "REQ-MESH-4",
2026-06-10T22:49:44.7936230Z       "title": "Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.",
2026-06-10T22:49:44.7936327Z       "requiredStages": [
2026-06-10T22:49:44.7936412Z         "impl",
2026-06-10T22:49:44.7936489Z         "unit",
2026-06-10T22:49:44.7936565Z         "int"
2026-06-10T22:49:44.7936647Z       ],
2026-06-10T22:49:44.7936718Z       "stages": {
2026-06-10T22:49:44.7936803Z         "doc": {
2026-06-10T22:49:44.7936894Z           "complete": false,
2026-06-10T22:49:44.7936985Z           "evidence": []
2026-06-10T22:49:44.7937065Z         },
2026-06-10T22:49:44.7937155Z         "impl": {
2026-06-10T22:49:44.7937250Z           "complete": true,
2026-06-10T22:49:44.7937331Z           "evidence": [
2026-06-10T22:49:44.7937406Z             {
2026-06-10T22:49:44.7937519Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.7937692Z               "line": 187
2026-06-10T22:49:44.7937777Z             },
2026-06-10T22:49:44.7937858Z             {
2026-06-10T22:49:44.7937983Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-10T22:49:44.7938059Z               "line": 68
2026-06-10T22:49:44.7938134Z             },
2026-06-10T22:49:44.7938202Z             {
2026-06-10T22:49:44.7938488Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-10T22:49:44.7938584Z               "line": 111
2026-06-10T22:49:44.7938664Z             },
2026-06-10T22:49:44.7938749Z             {
2026-06-10T22:49:44.7938870Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-10T22:49:44.7939046Z               "line": 462
2026-06-10T22:49:44.7939117Z             },
2026-06-10T22:49:44.7939204Z             {
2026-06-10T22:49:44.7939336Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-10T22:49:44.7939417Z               "line": 711
2026-06-10T22:49:44.7939509Z             },
2026-06-10T22:49:44.7939604Z             {
2026-06-10T22:49:44.7939722Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-10T22:49:44.7939812Z               "line": 725
2026-06-10T22:49:44.7939898Z             },
2026-06-10T22:49:44.7939982Z             {
2026-06-10T22:49:44.7940090Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.7940187Z               "line": 122
2026-06-10T22:49:44.7940278Z             },
2026-06-10T22:49:44.7940363Z             {
2026-06-10T22:49:44.7940478Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-10T22:49:44.7940568Z               "line": 26
2026-06-10T22:49:44.7940658Z             },
2026-06-10T22:49:44.7940739Z             {
2026-06-10T22:49:44.7940855Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-10T22:49:44.7940940Z               "line": 97
2026-06-10T22:49:44.7941025Z             },
2026-06-10T22:49:44.7941108Z             {
2026-06-10T22:49:44.7941221Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-10T22:49:44.7941316Z               "line": 119
2026-06-10T22:49:44.7941398Z             },
2026-06-10T22:49:44.7941480Z             {
2026-06-10T22:49:44.7941593Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-10T22:49:44.7941684Z               "line": 82
2026-06-10T22:49:44.7941766Z             },
2026-06-10T22:49:44.7941846Z             {
2026-06-10T22:49:44.7941975Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-10T22:49:44.7942061Z               "line": 111
2026-06-10T22:49:44.7942147Z             },
2026-06-10T22:49:44.7942222Z             {
2026-06-10T22:49:44.7942333Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-10T22:49:44.7942420Z               "line": 232
2026-06-10T22:49:44.7942504Z             },
2026-06-10T22:49:44.7942589Z             {
2026-06-10T22:49:44.7942693Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-10T22:49:44.7942785Z               "line": 245
2026-06-10T22:49:44.7942865Z             },
2026-06-10T22:49:44.7942955Z             {
2026-06-10T22:49:44.7943066Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7943152Z               "line": 3562
2026-06-10T22:49:44.7943237Z             }
2026-06-10T22:49:44.7943323Z           ]
2026-06-10T22:49:44.7943409Z         },
2026-06-10T22:49:44.7943490Z         "int": {
2026-06-10T22:49:44.7943590Z           "complete": true,
2026-06-10T22:49:44.7943687Z           "evidence": [
2026-06-10T22:49:44.7943772Z             {
2026-06-10T22:49:44.7943895Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-10T22:49:44.7943982Z               "line": 98
2026-06-10T22:49:44.7944063Z             },
2026-06-10T22:49:44.7944143Z             {
2026-06-10T22:49:44.7944263Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-10T22:49:44.7944354Z               "line": 140
2026-06-10T22:49:44.7944438Z             }
2026-06-10T22:49:44.7944520Z           ]
2026-06-10T22:49:44.7944602Z         },
2026-06-10T22:49:44.7944692Z         "unit": {
2026-06-10T22:49:44.7944881Z           "complete": true,
2026-06-10T22:49:44.7944972Z           "evidence": [
2026-06-10T22:49:44.7945061Z             {
2026-06-10T22:49:44.7945179Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.7945265Z               "line": 844
2026-06-10T22:49:44.7945352Z             },
2026-06-10T22:49:44.7945432Z             {
2026-06-10T22:49:44.7945643Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-10T22:49:44.7945742Z               "line": 1079
2026-06-10T22:49:44.7945832Z             },
2026-06-10T22:49:44.7945910Z             {
2026-06-10T22:49:44.7946028Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-10T22:49:44.7946114Z               "line": 1109
2026-06-10T22:49:44.7946205Z             },
2026-06-10T22:49:44.7946286Z             {
2026-06-10T22:49:44.7946405Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-10T22:49:44.7946495Z               "line": 1129
2026-06-10T22:49:44.7946582Z             },
2026-06-10T22:49:44.7946672Z             {
2026-06-10T22:49:44.7946800Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-10T22:49:44.7946892Z               "line": 602
2026-06-10T22:49:44.7946972Z             },
2026-06-10T22:49:44.7947054Z             {
2026-06-10T22:49:44.7947174Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-10T22:49:44.7947273Z               "line": 148
2026-06-10T22:49:44.7947358Z             },
2026-06-10T22:49:44.7947440Z             {
2026-06-10T22:49:44.7947555Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-10T22:49:44.7947639Z               "line": 169
2026-06-10T22:49:44.7947724Z             },
2026-06-10T22:49:44.7947815Z             {
2026-06-10T22:49:44.7947919Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-10T22:49:44.7948013Z               "line": 181
2026-06-10T22:49:44.7948099Z             },
2026-06-10T22:49:44.7948180Z             {
2026-06-10T22:49:44.7948295Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-10T22:49:44.7948384Z               "line": 202
2026-06-10T22:49:44.7948472Z             },
2026-06-10T22:49:44.7948548Z             {
2026-06-10T22:49:44.7948661Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-10T22:49:44.7948743Z               "line": 375
2026-06-10T22:49:44.7948820Z             },
2026-06-10T22:49:44.7948905Z             {
2026-06-10T22:49:44.7949106Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-10T22:49:44.7949196Z               "line": 407
2026-06-10T22:49:44.7949282Z             },
2026-06-10T22:49:44.7949363Z             {
2026-06-10T22:49:44.7949468Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7949558Z               "line": 7020
2026-06-10T22:49:44.7949634Z             }
2026-06-10T22:49:44.7949711Z           ]
2026-06-10T22:49:44.7949793Z         }
2026-06-10T22:49:44.7949873Z       }
2026-06-10T22:49:44.7949958Z     },
2026-06-10T22:49:44.7950036Z     {
2026-06-10T22:49:44.7950136Z       "id": "REQ-MESH-5",
2026-06-10T22:49:44.7951496Z       "title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.",
2026-06-10T22:49:44.7951590Z       "requiredStages": [
2026-06-10T22:49:44.7951672Z         "impl",
2026-06-10T22:49:44.7951744Z         "unit"
2026-06-10T22:49:44.7951820Z       ],
2026-06-10T22:49:44.7951910Z       "stages": {
2026-06-10T22:49:44.7951987Z         "doc": {
2026-06-10T22:49:44.7952077Z           "complete": false,
2026-06-10T22:49:44.7952163Z           "evidence": []
2026-06-10T22:49:44.7952253Z         },
2026-06-10T22:49:44.7952326Z         "impl": {
2026-06-10T22:49:44.7952530Z           "complete": true,
2026-06-10T22:49:44.7952622Z           "evidence": [
2026-06-10T22:49:44.7952703Z             {
2026-06-10T22:49:44.7952830Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-10T22:49:44.7952918Z               "line": 61
2026-06-10T22:49:44.7952999Z             },
2026-06-10T22:49:44.7953083Z             {
2026-06-10T22:49:44.7955782Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-10T22:49:44.7955902Z               "line": 109
2026-06-10T22:49:44.7955992Z             },
2026-06-10T22:49:44.7956077Z             {
2026-06-10T22:49:44.7956212Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-10T22:49:44.7956307Z               "line": 104
2026-06-10T22:49:44.7956397Z             },
2026-06-10T22:49:44.7956485Z             {
2026-06-10T22:49:44.7956621Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-10T22:49:44.7956707Z               "line": 105
2026-06-10T22:49:44.7956809Z             },
2026-06-10T22:49:44.7956889Z             {
2026-06-10T22:49:44.7957017Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7957104Z               "line": 85
2026-06-10T22:49:44.7957189Z             },
2026-06-10T22:49:44.7957279Z             {
2026-06-10T22:49:44.7957399Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7957499Z               "line": 234
2026-06-10T22:49:44.7957585Z             },
2026-06-10T22:49:44.7957666Z             {
2026-06-10T22:49:44.7957786Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7957875Z               "line": 298
2026-06-10T22:49:44.7957962Z             },
2026-06-10T22:49:44.7958048Z             {
2026-06-10T22:49:44.7958171Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7958261Z               "line": 687
2026-06-10T22:49:44.7958347Z             },
2026-06-10T22:49:44.7958432Z             {
2026-06-10T22:49:44.7958554Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-10T22:49:44.7958644Z               "line": 101
2026-06-10T22:49:44.7958726Z             },
2026-06-10T22:49:44.7958817Z             {
2026-06-10T22:49:44.7958930Z               "path": "crates/spt-store/src/roster.rs",
2026-06-10T22:49:44.7959117Z               "line": 193
2026-06-10T22:49:44.7959202Z             }
2026-06-10T22:49:44.7959293Z           ]
2026-06-10T22:49:44.7959380Z         },
2026-06-10T22:49:44.7959461Z         "int": {
2026-06-10T22:49:44.7959555Z           "complete": false,
2026-06-10T22:49:44.7959646Z           "evidence": []
2026-06-10T22:49:44.7959733Z         },
2026-06-10T22:49:44.7959818Z         "unit": {
2026-06-10T22:49:44.7959908Z           "complete": true,
2026-06-10T22:49:44.7960000Z           "evidence": [
2026-06-10T22:49:44.7960080Z             {
2026-06-10T22:49:44.7960209Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.7960296Z               "line": 927
2026-06-10T22:49:44.7960386Z             },
2026-06-10T22:49:44.7960470Z             {
2026-06-10T22:49:44.7960586Z               "path": "crates/spt-store/src/roster.rs",
2026-06-10T22:49:44.7960677Z               "line": 462
2026-06-10T22:49:44.7960757Z             }
2026-06-10T22:49:44.7960847Z           ]
2026-06-10T22:49:44.7960928Z         }
2026-06-10T22:49:44.7961013Z       }
2026-06-10T22:49:44.7961097Z     },
2026-06-10T22:49:44.7961187Z     {
2026-06-10T22:49:44.7961283Z       "id": "REQ-MESH-6",
2026-06-10T22:49:44.7962562Z       "title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)",
2026-06-10T22:49:44.7962661Z       "requiredStages": [
2026-06-10T22:49:44.7962858Z         "impl",
2026-06-10T22:49:44.7962948Z         "unit"
2026-06-10T22:49:44.7963033Z       ],
2026-06-10T22:49:44.7963119Z       "stages": {
2026-06-10T22:49:44.7963206Z         "doc": {
2026-06-10T22:49:44.7963300Z           "complete": false,
2026-06-10T22:49:44.7963391Z           "evidence": []
2026-06-10T22:49:44.7963478Z         },
2026-06-10T22:49:44.7963564Z         "impl": {
2026-06-10T22:49:44.7963747Z           "complete": true,
2026-06-10T22:49:44.7963843Z           "evidence": [
2026-06-10T22:49:44.7963930Z             {
2026-06-10T22:49:44.7964042Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7964139Z               "line": 3091
2026-06-10T22:49:44.7964224Z             }
2026-06-10T22:49:44.7964305Z           ]
2026-06-10T22:49:44.7964391Z         },
2026-06-10T22:49:44.7964473Z         "int": {
2026-06-10T22:49:44.7964572Z           "complete": false,
2026-06-10T22:49:44.7964662Z           "evidence": []
2026-06-10T22:49:44.7964749Z         },
2026-06-10T22:49:44.7964845Z         "unit": {
2026-06-10T22:49:44.7964935Z           "complete": true,
2026-06-10T22:49:44.7965025Z           "evidence": [
2026-06-10T22:49:44.7965112Z             {
2026-06-10T22:49:44.7965216Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7965306Z               "line": 7532
2026-06-10T22:49:44.7965393Z             },
2026-06-10T22:49:44.7965484Z             {
2026-06-10T22:49:44.7965592Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7965683Z               "line": 7559
2026-06-10T22:49:44.7965766Z             },
2026-06-10T22:49:44.7965855Z             {
2026-06-10T22:49:44.7965954Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7966045Z               "line": 7583
2026-06-10T22:49:44.7966130Z             }
2026-06-10T22:49:44.7966218Z           ]
2026-06-10T22:49:44.7966304Z         }
2026-06-10T22:49:44.7966385Z       }
2026-06-10T22:49:44.7966472Z     },
2026-06-10T22:49:44.7966552Z     {
2026-06-10T22:49:44.7966647Z       "id": "REQ-MIGRATE-1",
2026-06-10T22:49:44.7966825Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-10T22:49:44.7966924Z       "requiredStages": [],
2026-06-10T22:49:44.7967015Z       "stages": {
2026-06-10T22:49:44.7967101Z         "doc": {
2026-06-10T22:49:44.7967196Z           "complete": false,
2026-06-10T22:49:44.7967281Z           "evidence": []
2026-06-10T22:49:44.7967378Z         },
2026-06-10T22:49:44.7967468Z         "impl": {
2026-06-10T22:49:44.7967563Z           "complete": false,
2026-06-10T22:49:44.7967654Z           "evidence": []
2026-06-10T22:49:44.7967735Z         },
2026-06-10T22:49:44.7967826Z         "int": {
2026-06-10T22:49:44.7967916Z           "complete": false,
2026-06-10T22:49:44.7968003Z           "evidence": []
2026-06-10T22:49:44.7968097Z         },
2026-06-10T22:49:44.7968183Z         "unit": {
2026-06-10T22:49:44.7968275Z           "complete": false,
2026-06-10T22:49:44.7968361Z           "evidence": []
2026-06-10T22:49:44.7968445Z         }
2026-06-10T22:49:44.7968536Z       }
2026-06-10T22:49:44.7968623Z     },
2026-06-10T22:49:44.7968708Z     {
2026-06-10T22:49:44.7968802Z       "id": "REQ-MSG-1",
2026-06-10T22:49:44.7969315Z       "title": "Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)",
2026-06-10T22:49:44.7969419Z       "requiredStages": [
2026-06-10T22:49:44.7969505Z         "impl",
2026-06-10T22:49:44.7969592Z         "unit",
2026-06-10T22:49:44.7969682Z         "int"
2026-06-10T22:49:44.7969767Z       ],
2026-06-10T22:49:44.7969853Z       "stages": {
2026-06-10T22:49:44.7969935Z         "doc": {
2026-06-10T22:49:44.7970026Z           "complete": false,
2026-06-10T22:49:44.7970115Z           "evidence": []
2026-06-10T22:49:44.7970197Z         },
2026-06-10T22:49:44.7970283Z         "impl": {
2026-06-10T22:49:44.7970378Z           "complete": true,
2026-06-10T22:49:44.7970468Z           "evidence": [
2026-06-10T22:49:44.7970683Z             {
2026-06-10T22:49:44.7970802Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-10T22:49:44.7970899Z               "line": 28
2026-06-10T22:49:44.7970983Z             },
2026-06-10T22:49:44.7971065Z             {
2026-06-10T22:49:44.7971180Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-10T22:49:44.7971270Z               "line": 94
2026-06-10T22:49:44.7971454Z             },
2026-06-10T22:49:44.7971540Z             {
2026-06-10T22:49:44.7971657Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-10T22:49:44.7971747Z               "line": 127
2026-06-10T22:49:44.7971834Z             },
2026-06-10T22:49:44.7971920Z             {
2026-06-10T22:49:44.7972029Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-10T22:49:44.7972119Z               "line": 149
2026-06-10T22:49:44.7972202Z             },
2026-06-10T22:49:44.7972287Z             {
2026-06-10T22:49:44.7972396Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-10T22:49:44.7972492Z               "line": 174
2026-06-10T22:49:44.7972578Z             },
2026-06-10T22:49:44.7972663Z             {
2026-06-10T22:49:44.7972779Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-10T22:49:44.7972869Z               "line": 18
2026-06-10T22:49:44.7972955Z             },
2026-06-10T22:49:44.7973035Z             {
2026-06-10T22:49:44.7973160Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-10T22:49:44.7973255Z               "line": 13
2026-06-10T22:49:44.7973335Z             },
2026-06-10T22:49:44.7973423Z             {
2026-06-10T22:49:44.7973526Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-10T22:49:44.7973613Z               "line": 61
2026-06-10T22:49:44.7973694Z             },
2026-06-10T22:49:44.7973785Z             {
2026-06-10T22:49:44.7973893Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-10T22:49:44.7973979Z               "line": 10
2026-06-10T22:49:44.7974062Z             }
2026-06-10T22:49:44.7974142Z           ]
2026-06-10T22:49:44.7974241Z         },
2026-06-10T22:49:44.7974321Z         "int": {
2026-06-10T22:49:44.7974417Z           "complete": true,
2026-06-10T22:49:44.7974509Z           "evidence": [
2026-06-10T22:49:44.7974588Z             {
2026-06-10T22:49:44.7974727Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-10T22:49:44.7974823Z               "line": 9
2026-06-10T22:49:44.7974908Z             },
2026-06-10T22:49:44.7974994Z             {
2026-06-10T22:49:44.7975128Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-10T22:49:44.7975218Z               "line": 70
2026-06-10T22:49:44.7975299Z             },
2026-06-10T22:49:44.7975386Z             {
2026-06-10T22:49:44.7975510Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-10T22:49:44.7975599Z               "line": 129
2026-06-10T22:49:44.7975682Z             }
2026-06-10T22:49:44.7975762Z           ]
2026-06-10T22:49:44.7975848Z         },
2026-06-10T22:49:44.7975929Z         "unit": {
2026-06-10T22:49:44.7976030Z           "complete": true,
2026-06-10T22:49:44.7976110Z           "evidence": [
2026-06-10T22:49:44.7976191Z             {
2026-06-10T22:49:44.7976306Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-10T22:49:44.7976387Z               "line": 203
2026-06-10T22:49:44.7976476Z             },
2026-06-10T22:49:44.7976552Z             {
2026-06-10T22:49:44.7976662Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-10T22:49:44.7976746Z               "line": 232
2026-06-10T22:49:44.7976831Z             },
2026-06-10T22:49:44.7976922Z             {
2026-06-10T22:49:44.7977018Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-10T22:49:44.7977108Z               "line": 277
2026-06-10T22:49:44.7977189Z             },
2026-06-10T22:49:44.7977270Z             {
2026-06-10T22:49:44.7977370Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-10T22:49:44.7977455Z               "line": 300
2026-06-10T22:49:44.7977536Z             },
2026-06-10T22:49:44.7977699Z             {
2026-06-10T22:49:44.7977813Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-10T22:49:44.7977890Z               "line": 324
2026-06-10T22:49:44.7977981Z             },
2026-06-10T22:49:44.7978062Z             {
2026-06-10T22:49:44.7978175Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-10T22:49:44.7978267Z               "line": 203
2026-06-10T22:49:44.7978414Z             },
2026-06-10T22:49:44.7978505Z             {
2026-06-10T22:49:44.7978611Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-10T22:49:44.7978700Z               "line": 236
2026-06-10T22:49:44.7978776Z             },
2026-06-10T22:49:44.7978854Z             {
2026-06-10T22:49:44.7979039Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-10T22:49:44.7979130Z               "line": 250
2026-06-10T22:49:44.7979207Z             },
2026-06-10T22:49:44.7979292Z             {
2026-06-10T22:49:44.7979405Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-10T22:49:44.7979500Z               "line": 262
2026-06-10T22:49:44.7979581Z             },
2026-06-10T22:49:44.7979660Z             {
2026-06-10T22:49:44.7979764Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-10T22:49:44.7979861Z               "line": 158
2026-06-10T22:49:44.7979942Z             },
2026-06-10T22:49:44.7980027Z             {
2026-06-10T22:49:44.7980118Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-10T22:49:44.7980209Z               "line": 241
2026-06-10T22:49:44.7980299Z             },
2026-06-10T22:49:44.7980380Z             {
2026-06-10T22:49:44.7980486Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-10T22:49:44.7980566Z               "line": 68
2026-06-10T22:49:44.7980647Z             },
2026-06-10T22:49:44.7980728Z             {
2026-06-10T22:49:44.7980829Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-10T22:49:44.7980909Z               "line": 77
2026-06-10T22:49:44.7980986Z             },
2026-06-10T22:49:44.7981067Z             {
2026-06-10T22:49:44.7981172Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-10T22:49:44.7981267Z               "line": 83
2026-06-10T22:49:44.7981339Z             },
2026-06-10T22:49:44.7981421Z             {
2026-06-10T22:49:44.7981525Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-10T22:49:44.7981615Z               "line": 102
2026-06-10T22:49:44.7981687Z             }
2026-06-10T22:49:44.7981779Z           ]
2026-06-10T22:49:44.7981858Z         }
2026-06-10T22:49:44.7981939Z       }
2026-06-10T22:49:44.7982019Z     },
2026-06-10T22:49:44.7982101Z     {
2026-06-10T22:49:44.7982189Z       "id": "REQ-MSG-2",
2026-06-10T22:49:44.7982437Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-10T22:49:44.7982532Z       "requiredStages": [
2026-06-10T22:49:44.7982617Z         "impl",
2026-06-10T22:49:44.7982689Z         "unit"
2026-06-10T22:49:44.7982766Z       ],
2026-06-10T22:49:44.7982847Z       "stages": {
2026-06-10T22:49:44.7982928Z         "doc": {
2026-06-10T22:49:44.7983019Z           "complete": false,
2026-06-10T22:49:44.7983100Z           "evidence": []
2026-06-10T22:49:44.7983186Z         },
2026-06-10T22:49:44.7983275Z         "impl": {
2026-06-10T22:49:44.7983372Z           "complete": true,
2026-06-10T22:49:44.7983457Z           "evidence": [
2026-06-10T22:49:44.7983533Z             {
2026-06-10T22:49:44.7983639Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7983720Z               "line": 11
2026-06-10T22:49:44.7983796Z             },
2026-06-10T22:49:44.7983877Z             {
2026-06-10T22:49:44.7983973Z               "path": "crates/spt/src/main.rs",
2026-06-10T22:49:44.7984063Z               "line": 8
2026-06-10T22:49:44.7984143Z             }
2026-06-10T22:49:44.7984224Z           ]
2026-06-10T22:49:44.7984298Z         },
2026-06-10T22:49:44.7984392Z         "int": {
2026-06-10T22:49:44.7984482Z           "complete": false,
2026-06-10T22:49:44.7984564Z           "evidence": []
2026-06-10T22:49:44.7984754Z         },
2026-06-10T22:49:44.7984829Z         "unit": {
2026-06-10T22:49:44.7984924Z           "complete": true,
2026-06-10T22:49:44.7985002Z           "evidence": [
2026-06-10T22:49:44.7985087Z             {
2026-06-10T22:49:44.7985191Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7985287Z               "line": 5247
2026-06-10T22:49:44.7985373Z             },
2026-06-10T22:49:44.7985549Z             {
2026-06-10T22:49:44.7985664Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7985745Z               "line": 5296
2026-06-10T22:49:44.7985820Z             },
2026-06-10T22:49:44.7985908Z             {
2026-06-10T22:49:44.7986012Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7986102Z               "line": 5319
2026-06-10T22:49:44.7986179Z             },
2026-06-10T22:49:44.7986261Z             {
2026-06-10T22:49:44.7986360Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7986450Z               "line": 6776
2026-06-10T22:49:44.7986547Z             },
2026-06-10T22:49:44.7986628Z             {
2026-06-10T22:49:44.7986727Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7986809Z               "line": 6785
2026-06-10T22:49:44.7986886Z             },
2026-06-10T22:49:44.7986966Z             {
2026-06-10T22:49:44.7987065Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7987155Z               "line": 6799
2026-06-10T22:49:44.7987236Z             }
2026-06-10T22:49:44.7987316Z           ]
2026-06-10T22:49:44.7987396Z         }
2026-06-10T22:49:44.7987472Z       }
2026-06-10T22:49:44.7987554Z     },
2026-06-10T22:49:44.7987631Z     {
2026-06-10T22:49:44.7987715Z       "id": "REQ-MSG-3",
2026-06-10T22:49:44.7988078Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-10T22:49:44.7988174Z       "requiredStages": [
2026-06-10T22:49:44.7988254Z         "impl",
2026-06-10T22:49:44.7988344Z         "unit",
2026-06-10T22:49:44.7988426Z         "int"
2026-06-10T22:49:44.7988503Z       ],
2026-06-10T22:49:44.7988588Z       "stages": {
2026-06-10T22:49:44.7988669Z         "doc": {
2026-06-10T22:49:44.7988760Z           "complete": false,
2026-06-10T22:49:44.7988837Z           "evidence": []
2026-06-10T22:49:44.7988922Z         },
2026-06-10T22:49:44.7989099Z         "impl": {
2026-06-10T22:49:44.7989199Z           "complete": true,
2026-06-10T22:49:44.7989294Z           "evidence": [
2026-06-10T22:49:44.7989375Z             {
2026-06-10T22:49:44.7989495Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-10T22:49:44.7989574Z               "line": 19
2026-06-10T22:49:44.7989656Z             },
2026-06-10T22:49:44.7989734Z             {
2026-06-10T22:49:44.7989843Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-10T22:49:44.7989922Z               "line": 21
2026-06-10T22:49:44.7990003Z             },
2026-06-10T22:49:44.7990084Z             {
2026-06-10T22:49:44.7990202Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-10T22:49:44.7990287Z               "line": 48
2026-06-10T22:49:44.7990369Z             },
2026-06-10T22:49:44.7990440Z             {
2026-06-10T22:49:44.7990545Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-10T22:49:44.7990630Z               "line": 142
2026-06-10T22:49:44.7990712Z             }
2026-06-10T22:49:44.7990797Z           ]
2026-06-10T22:49:44.7990887Z         },
2026-06-10T22:49:44.7990959Z         "int": {
2026-06-10T22:49:44.7991041Z           "complete": true,
2026-06-10T22:49:44.7991131Z           "evidence": [
2026-06-10T22:49:44.7991207Z             {
2026-06-10T22:49:44.7991341Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-10T22:49:44.7991422Z               "line": 10
2026-06-10T22:49:44.7991503Z             },
2026-06-10T22:49:44.7991584Z             {
2026-06-10T22:49:44.7991714Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-10T22:49:44.7991904Z               "line": 70
2026-06-10T22:49:44.7991981Z             }
2026-06-10T22:49:44.7992061Z           ]
2026-06-10T22:49:44.7992141Z         },
2026-06-10T22:49:44.7992228Z         "unit": {
2026-06-10T22:49:44.7992320Z           "complete": true,
2026-06-10T22:49:44.7992409Z           "evidence": [
2026-06-10T22:49:44.7992504Z             {
2026-06-10T22:49:44.7992703Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-10T22:49:44.7992797Z               "line": 196
2026-06-10T22:49:44.7992872Z             },
2026-06-10T22:49:44.7992959Z             {
2026-06-10T22:49:44.7993064Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-10T22:49:44.7993159Z               "line": 215
2026-06-10T22:49:44.7993245Z             },
2026-06-10T22:49:44.7993317Z             {
2026-06-10T22:49:44.7993421Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-10T22:49:44.7993507Z               "line": 237
2026-06-10T22:49:44.7993599Z             }
2026-06-10T22:49:44.7993674Z           ]
2026-06-10T22:49:44.7993769Z         }
2026-06-10T22:49:44.7993850Z       }
2026-06-10T22:49:44.7993928Z     },
2026-06-10T22:49:44.7994003Z     {
2026-06-10T22:49:44.7994098Z       "id": "REQ-MSG-4",
2026-06-10T22:49:44.7994887Z       "title": "Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type=\"msg\" from=…> otherwise, chunk oversized lines into EVENT-PART",
2026-06-10T22:49:44.7994980Z       "requiredStages": [
2026-06-10T22:49:44.7995057Z         "impl",
2026-06-10T22:49:44.7995153Z         "unit",
2026-06-10T22:49:44.7995230Z         "int"
2026-06-10T22:49:44.7995314Z       ],
2026-06-10T22:49:44.7995403Z       "stages": {
2026-06-10T22:49:44.7995494Z         "doc": {
2026-06-10T22:49:44.7995591Z           "complete": false,
2026-06-10T22:49:44.7995685Z           "evidence": []
2026-06-10T22:49:44.7995771Z         },
2026-06-10T22:49:44.7995857Z         "impl": {
2026-06-10T22:49:44.7995962Z           "complete": true,
2026-06-10T22:49:44.7996047Z           "evidence": [
2026-06-10T22:49:44.7996134Z             {
2026-06-10T22:49:44.7996244Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-10T22:49:44.7996329Z               "line": 16
2026-06-10T22:49:44.7996415Z             },
2026-06-10T22:49:44.7996492Z             {
2026-06-10T22:49:44.7996605Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-10T22:49:44.7996696Z               "line": 25
2026-06-10T22:49:44.7996783Z             },
2026-06-10T22:49:44.7996878Z             {
2026-06-10T22:49:44.7996977Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-10T22:49:44.7997068Z               "line": 47
2026-06-10T22:49:44.7997140Z             },
2026-06-10T22:49:44.7997221Z             {
2026-06-10T22:49:44.7997330Z               "path": "crates/spt/src/api/startup.rs",
2026-06-10T22:49:44.7997417Z               "line": 363
2026-06-10T22:49:44.7997502Z             },
2026-06-10T22:49:44.7997587Z             {
2026-06-10T22:49:44.7997691Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.7997772Z               "line": 2236
2026-06-10T22:49:44.7997862Z             }
2026-06-10T22:49:44.7997942Z           ]
2026-06-10T22:49:44.7998032Z         },
2026-06-10T22:49:44.7998119Z         "int": {
2026-06-10T22:49:44.7998209Z           "complete": true,
2026-06-10T22:49:44.7998304Z           "evidence": [
2026-06-10T22:49:44.7998381Z             {
2026-06-10T22:49:44.7998490Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-10T22:49:44.7998571Z               "line": 98
2026-06-10T22:49:44.7998662Z             },
2026-06-10T22:49:44.7998739Z             {
2026-06-10T22:49:44.7998853Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-10T22:49:44.7999021Z               "line": 128
2026-06-10T22:49:44.7999096Z             }
2026-06-10T22:49:44.7999182Z           ]
2026-06-10T22:49:44.7999257Z         },
2026-06-10T22:49:44.7999345Z         "unit": {
2026-06-10T22:49:44.7999572Z           "complete": true,
2026-06-10T22:49:44.7999660Z           "evidence": [
2026-06-10T22:49:44.7999740Z             {
2026-06-10T22:49:44.7999840Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-10T22:49:44.7999931Z               "line": 62
2026-06-10T22:49:44.8000008Z             },
2026-06-10T22:49:44.8000093Z             {
2026-06-10T22:49:44.8000279Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-10T22:49:44.8000366Z               "line": 73
2026-06-10T22:49:44.8000450Z             },
2026-06-10T22:49:44.8000530Z             {
2026-06-10T22:49:44.8000640Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-10T22:49:44.8000729Z               "line": 84
2026-06-10T22:49:44.8000804Z             },
2026-06-10T22:49:44.8000880Z             {
2026-06-10T22:49:44.8000976Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-10T22:49:44.8001063Z               "line": 96
2026-06-10T22:49:44.8001137Z             },
2026-06-10T22:49:44.8001228Z             {
2026-06-10T22:49:44.8001334Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-10T22:49:44.8001425Z               "line": 105
2026-06-10T22:49:44.8001514Z             },
2026-06-10T22:49:44.8001592Z             {
2026-06-10T22:49:44.8001686Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-10T22:49:44.8001777Z               "line": 120
2026-06-10T22:49:44.8001853Z             }
2026-06-10T22:49:44.8001945Z           ]
2026-06-10T22:49:44.8002029Z         }
2026-06-10T22:49:44.8002106Z       }
2026-06-10T22:49:44.8002173Z     },
2026-06-10T22:49:44.8002265Z     {
2026-06-10T22:49:44.8002354Z       "id": "REQ-NET-1",
2026-06-10T22:49:44.8002527Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-10T22:49:44.8002622Z       "requiredStages": [
2026-06-10T22:49:44.8002716Z         "impl",
2026-06-10T22:49:44.8002807Z         "unit",
2026-06-10T22:49:44.8002885Z         "int"
2026-06-10T22:49:44.8002969Z       ],
2026-06-10T22:49:44.8003054Z       "stages": {
2026-06-10T22:49:44.8003149Z         "doc": {
2026-06-10T22:49:44.8003240Z           "complete": false,
2026-06-10T22:49:44.8003319Z           "evidence": []
2026-06-10T22:49:44.8003404Z         },
2026-06-10T22:49:44.8003490Z         "impl": {
2026-06-10T22:49:44.8003586Z           "complete": true,
2026-06-10T22:49:44.8003676Z           "evidence": [
2026-06-10T22:49:44.8003761Z             {
2026-06-10T22:49:44.8003877Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-10T22:49:44.8003968Z               "line": 54
2026-06-10T22:49:44.8004062Z             },
2026-06-10T22:49:44.8004139Z             {
2026-06-10T22:49:44.8004249Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-10T22:49:44.8004338Z               "line": 594
2026-06-10T22:49:44.8004430Z             },
2026-06-10T22:49:44.8004512Z             {
2026-06-10T22:49:44.8004621Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-10T22:49:44.8004711Z               "line": 69
2026-06-10T22:49:44.8004803Z             },
2026-06-10T22:49:44.8004892Z             {
2026-06-10T22:49:44.8005011Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-10T22:49:44.8005098Z               "line": 97
2026-06-10T22:49:44.8005174Z             },
2026-06-10T22:49:44.8005254Z             {
2026-06-10T22:49:44.8005369Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-10T22:49:44.8005466Z               "line": 159
2026-06-10T22:49:44.8005554Z             },
2026-06-10T22:49:44.8005626Z             {
2026-06-10T22:49:44.8005737Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-10T22:49:44.8005823Z               "line": 175
2026-06-10T22:49:44.8005897Z             },
2026-06-10T22:49:44.8005982Z             {
2026-06-10T22:49:44.8006093Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-10T22:49:44.8006179Z               "line": 190
2026-06-10T22:49:44.8006259Z             },
2026-06-10T22:49:44.8006336Z             {
2026-06-10T22:49:44.8006527Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-10T22:49:44.8006617Z               "line": 271
2026-06-10T22:49:44.8006704Z             },
2026-06-10T22:49:44.8006780Z             {
2026-06-10T22:49:44.8006884Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-10T22:49:44.8006970Z               "line": 306
2026-06-10T22:49:44.8007057Z             },
2026-06-10T22:49:44.8007204Z             {
2026-06-10T22:49:44.8007319Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-10T22:49:44.8007409Z               "line": 312
2026-06-10T22:49:44.8007485Z             },
2026-06-10T22:49:44.8007566Z             {
2026-06-10T22:49:44.8007682Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-10T22:49:44.8007767Z               "line": 318
2026-06-10T22:49:44.8007852Z             },
2026-06-10T22:49:44.8007929Z             {
2026-06-10T22:49:44.8008044Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-10T22:49:44.8008128Z               "line": 334
2026-06-10T22:49:44.8008213Z             },
2026-06-10T22:49:44.8008285Z             {
2026-06-10T22:49:44.8008403Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-10T22:49:44.8008488Z               "line": 354
2026-06-10T22:49:44.8008573Z             },
2026-06-10T22:49:44.8008664Z             {
2026-06-10T22:49:44.8008793Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-10T22:49:44.8008883Z               "line": 35
2026-06-10T22:49:44.8009032Z             },
2026-06-10T22:49:44.8009122Z             {
2026-06-10T22:49:44.8009241Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-10T22:49:44.8009328Z               "line": 85
2026-06-10T22:49:44.8009413Z             },
2026-06-10T22:49:44.8009498Z             {
2026-06-10T22:49:44.8009614Z               "path": "crates/spt-store/src/spool.rs",
2026-06-10T22:49:44.8009704Z               "line": 135
2026-06-10T22:49:44.8009789Z             },
2026-06-10T22:49:44.8009875Z             {
2026-06-10T22:49:44.8009990Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8010080Z               "line": 2082
2026-06-10T22:49:44.8010166Z             },
2026-06-10T22:49:44.8010248Z             {
2026-06-10T22:49:44.8010357Z               "path": "crates/spt/src/wansend.rs",
2026-06-10T22:49:44.8010447Z               "line": 17
2026-06-10T22:49:44.8010535Z             }
2026-06-10T22:49:44.8010625Z           ]
2026-06-10T22:49:44.8010709Z         },
2026-06-10T22:49:44.8010796Z         "int": {
2026-06-10T22:49:44.8010892Z           "complete": true,
2026-06-10T22:49:44.8010977Z           "evidence": [
2026-06-10T22:49:44.8011071Z             {
2026-06-10T22:49:44.8011195Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-10T22:49:44.8011285Z               "line": 341
2026-06-10T22:49:44.8011374Z             },
2026-06-10T22:49:44.8011455Z             {
2026-06-10T22:49:44.8011585Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.8011675Z               "line": 605
2026-06-10T22:49:44.8011765Z             },
2026-06-10T22:49:44.8011847Z             {
2026-06-10T22:49:44.8011961Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.8012055Z               "line": 878
2026-06-10T22:49:44.8012138Z             }
2026-06-10T22:49:44.8012223Z           ]
2026-06-10T22:49:44.8012309Z         },
2026-06-10T22:49:44.8012399Z         "unit": {
2026-06-10T22:49:44.8012490Z           "complete": true,
2026-06-10T22:49:44.8012580Z           "evidence": [
2026-06-10T22:49:44.8012666Z             {
2026-06-10T22:49:44.8012782Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-10T22:49:44.8012877Z               "line": 650
2026-06-10T22:49:44.8012967Z             },
2026-06-10T22:49:44.8013048Z             {
2026-06-10T22:49:44.8013163Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-10T22:49:44.8013252Z               "line": 685
2026-06-10T22:49:44.8013338Z             },
2026-06-10T22:49:44.8013421Z             {
2026-06-10T22:49:44.8013648Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-10T22:49:44.8013738Z               "line": 932
2026-06-10T22:49:44.8013824Z             },
2026-06-10T22:49:44.8013907Z             {
2026-06-10T22:49:44.8014021Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-10T22:49:44.8014108Z               "line": 152
2026-06-10T22:49:44.8014284Z             },
2026-06-10T22:49:44.8014375Z             {
2026-06-10T22:49:44.8014504Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-10T22:49:44.8014593Z               "line": 442
2026-06-10T22:49:44.8014685Z             },
2026-06-10T22:49:44.8014766Z             {
2026-06-10T22:49:44.8014885Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-10T22:49:44.8014970Z               "line": 456
2026-06-10T22:49:44.8015062Z             },
2026-06-10T22:49:44.8015147Z             {
2026-06-10T22:49:44.8015261Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-10T22:49:44.8015358Z               "line": 475
2026-06-10T22:49:44.8015443Z             },
2026-06-10T22:49:44.8015529Z             {
2026-06-10T22:49:44.8015644Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-10T22:49:44.8015739Z               "line": 119
2026-06-10T22:49:44.8015824Z             },
2026-06-10T22:49:44.8015910Z             {
2026-06-10T22:49:44.8016026Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-10T22:49:44.8016114Z               "line": 162
2026-06-10T22:49:44.8016201Z             },
2026-06-10T22:49:44.8016283Z             {
2026-06-10T22:49:44.8016402Z               "path": "crates/spt-store/src/spool.rs",
2026-06-10T22:49:44.8016491Z               "line": 492
2026-06-10T22:49:44.8016571Z             },
2026-06-10T22:49:44.8016658Z             {
2026-06-10T22:49:44.8016763Z               "path": "crates/spt/src/wansend.rs",
2026-06-10T22:49:44.8016853Z               "line": 615
2026-06-10T22:49:44.8016939Z             },
2026-06-10T22:49:44.8017030Z             {
2026-06-10T22:49:44.8017139Z               "path": "crates/spt/src/wansend.rs",
2026-06-10T22:49:44.8017225Z               "line": 1004
2026-06-10T22:49:44.8017316Z             }
2026-06-10T22:49:44.8017397Z           ]
2026-06-10T22:49:44.8017482Z         }
2026-06-10T22:49:44.8017569Z       }
2026-06-10T22:49:44.8017655Z     },
2026-06-10T22:49:44.8017740Z     {
2026-06-10T22:49:44.8017835Z       "id": "REQ-NET-2",
2026-06-10T22:49:44.8018016Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-10T22:49:44.8018107Z       "requiredStages": [
2026-06-10T22:49:44.8018194Z         "impl"
2026-06-10T22:49:44.8018280Z       ],
2026-06-10T22:49:44.8018364Z       "stages": {
2026-06-10T22:49:44.8018455Z         "doc": {
2026-06-10T22:49:44.8018547Z           "complete": false,
2026-06-10T22:49:44.8018637Z           "evidence": []
2026-06-10T22:49:44.8018717Z         },
2026-06-10T22:49:44.8018811Z         "impl": {
2026-06-10T22:49:44.8018903Z           "complete": true,
2026-06-10T22:49:44.8019086Z           "evidence": [
2026-06-10T22:49:44.8019177Z             {
2026-06-10T22:49:44.8019292Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-10T22:49:44.8019382Z               "line": 57
2026-06-10T22:49:44.8019458Z             },
2026-06-10T22:49:44.8021679Z             {
2026-06-10T22:49:44.8021849Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-10T22:49:44.8021953Z               "line": 71
2026-06-10T22:49:44.8022039Z             },
2026-06-10T22:49:44.8022121Z             {
2026-06-10T22:49:44.8022254Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-10T22:49:44.8022339Z               "line": 81
2026-06-10T22:49:44.8022426Z             },
2026-06-10T22:49:44.8022512Z             {
2026-06-10T22:49:44.8022625Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-10T22:49:44.8022717Z               "line": 159
2026-06-10T22:49:44.8022803Z             },
2026-06-10T22:49:44.8022883Z             {
2026-06-10T22:49:44.8023136Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-10T22:49:44.8023227Z               "line": 175
2026-06-10T22:49:44.8023317Z             },
2026-06-10T22:49:44.8023394Z             {
2026-06-10T22:49:44.8023517Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-10T22:49:44.8023603Z               "line": 190
2026-06-10T22:49:44.8023808Z             }
2026-06-10T22:49:44.8023894Z           ]
2026-06-10T22:49:44.8023976Z         },
2026-06-10T22:49:44.8024071Z         "int": {
2026-06-10T22:49:44.8024165Z           "complete": false,
2026-06-10T22:49:44.8024255Z           "evidence": []
2026-06-10T22:49:44.8024336Z         },
2026-06-10T22:49:44.8024430Z         "unit": {
2026-06-10T22:49:44.8024529Z           "complete": true,
2026-06-10T22:49:44.8024620Z           "evidence": [
2026-06-10T22:49:44.8024706Z             {
2026-06-10T22:49:44.8024834Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-10T22:49:44.8024935Z               "line": 402
2026-06-10T22:49:44.8025035Z             }
2026-06-10T22:49:44.8025130Z           ]
2026-06-10T22:49:44.8025216Z         }
2026-06-10T22:49:44.8025308Z       }
2026-06-10T22:49:44.8025403Z     },
2026-06-10T22:49:44.8025487Z     {
2026-06-10T22:49:44.8025589Z       "id": "REQ-NET-3",
2026-06-10T22:49:44.8025769Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-10T22:49:44.8025884Z       "requiredStages": [
2026-06-10T22:49:44.8025970Z         "impl",
2026-06-10T22:49:44.8026065Z         "unit"
2026-06-10T22:49:44.8026156Z       ],
2026-06-10T22:49:44.8026247Z       "stages": {
2026-06-10T22:49:44.8026341Z         "doc": {
2026-06-10T22:49:44.8026436Z           "complete": false,
2026-06-10T22:49:44.8026534Z           "evidence": []
2026-06-10T22:49:44.8026624Z         },
2026-06-10T22:49:44.8026713Z         "impl": {
2026-06-10T22:49:44.8026814Z           "complete": true,
2026-06-10T22:49:44.8026910Z           "evidence": [
2026-06-10T22:49:44.8026999Z             {
2026-06-10T22:49:44.8027131Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-10T22:49:44.8027228Z               "line": 39
2026-06-10T22:49:44.8027319Z             },
2026-06-10T22:49:44.8027408Z             {
2026-06-10T22:49:44.8027528Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-10T22:49:44.8027624Z               "line": 182
2026-06-10T22:49:44.8027713Z             },
2026-06-10T22:49:44.8027810Z             {
2026-06-10T22:49:44.8027928Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-10T22:49:44.8028023Z               "line": 333
2026-06-10T22:49:44.8028114Z             },
2026-06-10T22:49:44.8028206Z             {
2026-06-10T22:49:44.8028328Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-10T22:49:44.8028429Z               "line": 36
2026-06-10T22:49:44.8028516Z             },
2026-06-10T22:49:44.8028610Z             {
2026-06-10T22:49:44.8028744Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-10T22:49:44.8028850Z               "line": 158
2026-06-10T22:49:44.8029039Z             },
2026-06-10T22:49:44.8029127Z             {
2026-06-10T22:49:44.8029268Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-10T22:49:44.8029362Z               "line": 212
2026-06-10T22:49:44.8029458Z             },
2026-06-10T22:49:44.8029542Z             {
2026-06-10T22:49:44.8029679Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-10T22:49:44.8029780Z               "line": 233
2026-06-10T22:49:44.8029866Z             },
2026-06-10T22:49:44.8029956Z             {
2026-06-10T22:49:44.8030085Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-10T22:49:44.8030181Z               "line": 291
2026-06-10T22:49:44.8030271Z             },
2026-06-10T22:49:44.8030362Z             {
2026-06-10T22:49:44.8030486Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-10T22:49:44.8030580Z               "line": 310
2026-06-10T22:49:44.8030672Z             },
2026-06-10T22:49:44.8030862Z             {
2026-06-10T22:49:44.8030991Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-10T22:49:44.8031082Z               "line": 348
2026-06-10T22:49:44.8031177Z             },
2026-06-10T22:49:44.8031263Z             {
2026-06-10T22:49:44.8031383Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-10T22:49:44.8031482Z               "line": 393
2026-06-10T22:49:44.8031664Z             },
2026-06-10T22:49:44.8031754Z             {
2026-06-10T22:49:44.8031888Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-10T22:49:44.8031984Z               "line": 406
2026-06-10T22:49:44.8032074Z             },
2026-06-10T22:49:44.8032158Z             {
2026-06-10T22:49:44.8032282Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-10T22:49:44.8032363Z               "line": 29
2026-06-10T22:49:44.8032451Z             },
2026-06-10T22:49:44.8032532Z             {
2026-06-10T22:49:44.8032657Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-10T22:49:44.8032752Z               "line": 72
2026-06-10T22:49:44.8032838Z             },
2026-06-10T22:49:44.8032923Z             {
2026-06-10T22:49:44.8033043Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-10T22:49:44.8033138Z               "line": 123
2026-06-10T22:49:44.8033229Z             }
2026-06-10T22:49:44.8033305Z           ]
2026-06-10T22:49:44.8033401Z         },
2026-06-10T22:49:44.8033491Z         "int": {
2026-06-10T22:49:44.8033587Z           "complete": false,
2026-06-10T22:49:44.8033682Z           "evidence": []
2026-06-10T22:49:44.8033763Z         },
2026-06-10T22:49:44.8033858Z         "unit": {
2026-06-10T22:49:44.8033945Z           "complete": true,
2026-06-10T22:49:44.8034044Z           "evidence": [
2026-06-10T22:49:44.8034130Z             {
2026-06-10T22:49:44.8034255Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-10T22:49:44.8034349Z               "line": 223
2026-06-10T22:49:44.8034445Z             },
2026-06-10T22:49:44.8034541Z             {
2026-06-10T22:49:44.8034655Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-10T22:49:44.8034753Z               "line": 351
2026-06-10T22:49:44.8034844Z             },
2026-06-10T22:49:44.8034930Z             {
2026-06-10T22:49:44.8035038Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-10T22:49:44.8035127Z               "line": 502
2026-06-10T22:49:44.8035223Z             },
2026-06-10T22:49:44.8035310Z             {
2026-06-10T22:49:44.8035432Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-10T22:49:44.8035524Z               "line": 93
2026-06-10T22:49:44.8035619Z             },
2026-06-10T22:49:44.8035709Z             {
2026-06-10T22:49:44.8035825Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-10T22:49:44.8035920Z               "line": 142
2026-06-10T22:49:44.8036001Z             },
2026-06-10T22:49:44.8036091Z             {
2026-06-10T22:49:44.8036206Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-10T22:49:44.8036306Z               "line": 315
2026-06-10T22:49:44.8036391Z             },
2026-06-10T22:49:44.8036483Z             {
2026-06-10T22:49:44.8036601Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-10T22:49:44.8036691Z               "line": 355
2026-06-10T22:49:44.8036779Z             },
2026-06-10T22:49:44.8036869Z             {
2026-06-10T22:49:44.8037006Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-10T22:49:44.8037127Z               "line": 494
2026-06-10T22:49:44.8037221Z             }
2026-06-10T22:49:44.8037307Z           ]
2026-06-10T22:49:44.8037394Z         }
2026-06-10T22:49:44.8037485Z       }
2026-06-10T22:49:44.8037573Z     },
2026-06-10T22:49:44.8037658Z     {
2026-06-10T22:49:44.8037764Z       "id": "REQ-NODE-IDENTITY",
2026-06-10T22:49:44.8037997Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-10T22:49:44.8038108Z       "requiredStages": [
2026-06-10T22:49:44.8038203Z         "impl",
2026-06-10T22:49:44.8038370Z         "unit"
2026-06-10T22:49:44.8038461Z       ],
2026-06-10T22:49:44.8038551Z       "stages": {
2026-06-10T22:49:44.8038641Z         "doc": {
2026-06-10T22:49:44.8038747Z           "complete": false,
2026-06-10T22:49:44.8038831Z           "evidence": []
2026-06-10T22:49:44.8038917Z         },
2026-06-10T22:49:44.8039085Z         "impl": {
2026-06-10T22:49:44.8039285Z           "complete": true,
2026-06-10T22:49:44.8039386Z           "evidence": [
2026-06-10T22:49:44.8039470Z             {
2026-06-10T22:49:44.8039609Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-10T22:49:44.8039706Z               "line": 60
2026-06-10T22:49:44.8039795Z             },
2026-06-10T22:49:44.8039880Z             {
2026-06-10T22:49:44.8040008Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-10T22:49:44.8040107Z               "line": 68
2026-06-10T22:49:44.8040197Z             },
2026-06-10T22:49:44.8040288Z             {
2026-06-10T22:49:44.8040408Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-10T22:49:44.8040511Z               "line": 86
2026-06-10T22:49:44.8040602Z             },
2026-06-10T22:49:44.8040684Z             {
2026-06-10T22:49:44.8040802Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-10T22:49:44.8040897Z               "line": 120
2026-06-10T22:49:44.8040985Z             },
2026-06-10T22:49:44.8041080Z             {
2026-06-10T22:49:44.8041198Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-10T22:49:44.8041290Z               "line": 127
2026-06-10T22:49:44.8041380Z             },
2026-06-10T22:49:44.8041469Z             {
2026-06-10T22:49:44.8041590Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-10T22:49:44.8041684Z               "line": 143
2026-06-10T22:49:44.8041770Z             },
2026-06-10T22:49:44.8041861Z             {
2026-06-10T22:49:44.8041981Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-10T22:49:44.8042076Z               "line": 16
2026-06-10T22:49:44.8042181Z             }
2026-06-10T22:49:44.8042268Z           ]
2026-06-10T22:49:44.8042356Z         },
2026-06-10T22:49:44.8042443Z         "int": {
2026-06-10T22:49:44.8042539Z           "complete": false,
2026-06-10T22:49:44.8042634Z           "evidence": []
2026-06-10T22:49:44.8042718Z         },
2026-06-10T22:49:44.8042808Z         "unit": {
2026-06-10T22:49:44.8042914Z           "complete": true,
2026-06-10T22:49:44.8043011Z           "evidence": [
2026-06-10T22:49:44.8043102Z             {
2026-06-10T22:49:44.8043222Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-10T22:49:44.8043317Z               "line": 199
2026-06-10T22:49:44.8043407Z             },
2026-06-10T22:49:44.8043493Z             {
2026-06-10T22:49:44.8043613Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-10T22:49:44.8043703Z               "line": 218
2026-06-10T22:49:44.8043794Z             },
2026-06-10T22:49:44.8043880Z             {
2026-06-10T22:49:44.8044003Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-10T22:49:44.8044104Z               "line": 234
2026-06-10T22:49:44.8044199Z             },
2026-06-10T22:49:44.8044294Z             {
2026-06-10T22:49:44.8044413Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-10T22:49:44.8044505Z               "line": 256
2026-06-10T22:49:44.8044595Z             },
2026-06-10T22:49:44.8044685Z             {
2026-06-10T22:49:44.8044811Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-10T22:49:44.8044904Z               "line": 124
2026-06-10T22:49:44.8044995Z             },
2026-06-10T22:49:44.8045082Z             {
2026-06-10T22:49:44.8045201Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-10T22:49:44.8045290Z               "line": 140
2026-06-10T22:49:44.8045385Z             },
2026-06-10T22:49:44.8045471Z             {
2026-06-10T22:49:44.8045588Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-10T22:49:44.8045683Z               "line": 155
2026-06-10T22:49:44.8045870Z             }
2026-06-10T22:49:44.8045959Z           ]
2026-06-10T22:49:44.8046045Z         }
2026-06-10T22:49:44.8046137Z       }
2026-06-10T22:49:44.8046222Z     },
2026-06-10T22:49:44.8046312Z     {
2026-06-10T22:49:44.8046413Z       "id": "REQ-NOTIF-1",
2026-06-10T22:49:44.8046837Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-10T22:49:44.8046946Z       "requiredStages": [
2026-06-10T22:49:44.8047043Z         "impl",
2026-06-10T22:49:44.8047138Z         "unit",
2026-06-10T22:49:44.8047223Z         "int"
2026-06-10T22:49:44.8047314Z       ],
2026-06-10T22:49:44.8047401Z       "stages": {
2026-06-10T22:49:44.8047490Z         "doc": {
2026-06-10T22:49:44.8047590Z           "complete": false,
2026-06-10T22:49:44.8047682Z           "evidence": []
2026-06-10T22:49:44.8047767Z         },
2026-06-10T22:49:44.8047858Z         "impl": {
2026-06-10T22:49:44.8047959Z           "complete": true,
2026-06-10T22:49:44.8048054Z           "evidence": [
2026-06-10T22:49:44.8048138Z             {
2026-06-10T22:49:44.8048271Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-10T22:49:44.8048363Z               "line": 514
2026-06-10T22:49:44.8048453Z             },
2026-06-10T22:49:44.8048538Z             {
2026-06-10T22:49:44.8048658Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.8048759Z               "line": 30
2026-06-10T22:49:44.8048843Z             },
2026-06-10T22:49:44.8048935Z             {
2026-06-10T22:49:44.8049144Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.8049234Z               "line": 69
2026-06-10T22:49:44.8049316Z             },
2026-06-10T22:49:44.8049392Z             {
2026-06-10T22:49:44.8049506Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.8049602Z               "line": 93
2026-06-10T22:49:44.8049693Z             },
2026-06-10T22:49:44.8049778Z             {
2026-06-10T22:49:44.8049899Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.8050003Z               "line": 107
2026-06-10T22:49:44.8050088Z             },
2026-06-10T22:49:44.8050170Z             {
2026-06-10T22:49:44.8050285Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.8050388Z               "line": 142
2026-06-10T22:49:44.8050487Z             },
2026-06-10T22:49:44.8050583Z             {
2026-06-10T22:49:44.8050700Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.8050795Z               "line": 187
2026-06-10T22:49:44.8050881Z             },
2026-06-10T22:49:44.8050968Z             {
2026-06-10T22:49:44.8051081Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.8051172Z               "line": 258
2026-06-10T22:49:44.8051263Z             },
2026-06-10T22:49:44.8051353Z             {
2026-06-10T22:49:44.8051462Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.8051559Z               "line": 368
2026-06-10T22:49:44.8051649Z             },
2026-06-10T22:49:44.8051744Z             {
2026-06-10T22:49:44.8051855Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.8051949Z               "line": 468
2026-06-10T22:49:44.8052039Z             },
2026-06-10T22:49:44.8052126Z             {
2026-06-10T22:49:44.8052249Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-10T22:49:44.8052344Z               "line": 24
2026-06-10T22:49:44.8052436Z             },
2026-06-10T22:49:44.8052527Z             {
2026-06-10T22:49:44.8052655Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-10T22:49:44.8052746Z               "line": 34
2026-06-10T22:49:44.8052832Z             },
2026-06-10T22:49:44.8052926Z             {
2026-06-10T22:49:44.8053041Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-10T22:49:44.8053138Z               "line": 60
2026-06-10T22:49:44.8053227Z             },
2026-06-10T22:49:44.8053322Z             {
2026-06-10T22:49:44.8053539Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-10T22:49:44.8053633Z               "line": 82
2026-06-10T22:49:44.8053725Z             },
2026-06-10T22:49:44.8053806Z             {
2026-06-10T22:49:44.8053929Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-10T22:49:44.8054019Z               "line": 94
2026-06-10T22:49:44.8054111Z             },
2026-06-10T22:49:44.8054311Z             {
2026-06-10T22:49:44.8054440Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.8054535Z               "line": 43
2026-06-10T22:49:44.8054625Z             },
2026-06-10T22:49:44.8054717Z             {
2026-06-10T22:49:44.8054840Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-10T22:49:44.8054940Z               "line": 96
2026-06-10T22:49:44.8055032Z             },
2026-06-10T22:49:44.8055117Z             {
2026-06-10T22:49:44.8055240Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-10T22:49:44.8055332Z               "line": 20
2026-06-10T22:49:44.8055436Z             },
2026-06-10T22:49:44.8055531Z             {
2026-06-10T22:49:44.8055652Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-10T22:49:44.8055751Z               "line": 30
2026-06-10T22:49:44.8055836Z             },
2026-06-10T22:49:44.8055926Z             {
2026-06-10T22:49:44.8056041Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-10T22:49:44.8056143Z               "line": 50
2026-06-10T22:49:44.8056238Z             },
2026-06-10T22:49:44.8056330Z             {
2026-06-10T22:49:44.8056449Z               "path": "crates/spt-store/src/notif.rs",
2026-06-10T22:49:44.8056538Z               "line": 28
2026-06-10T22:49:44.8056630Z             },
2026-06-10T22:49:44.8056716Z             {
2026-06-10T22:49:44.8056830Z               "path": "crates/spt-store/src/notif.rs",
2026-06-10T22:49:44.8056925Z               "line": 126
2026-06-10T22:49:44.8057011Z             },
2026-06-10T22:49:44.8057102Z             {
2026-06-10T22:49:44.8057216Z               "path": "crates/spt-store/src/notif.rs",
2026-06-10T22:49:44.8057312Z               "line": 161
2026-06-10T22:49:44.8057397Z             },
2026-06-10T22:49:44.8057488Z             {
2026-06-10T22:49:44.8057604Z               "path": "crates/spt-store/src/notif.rs",
2026-06-10T22:49:44.8057693Z               "line": 202
2026-06-10T22:49:44.8057783Z             },
2026-06-10T22:49:44.8057879Z             {
2026-06-10T22:49:44.8057993Z               "path": "crates/spt-store/src/notif.rs",
2026-06-10T22:49:44.8058084Z               "line": 213
2026-06-10T22:49:44.8058175Z             },
2026-06-10T22:49:44.8058266Z             {
2026-06-10T22:49:44.8058379Z               "path": "crates/spt-store/src/notif.rs",
2026-06-10T22:49:44.8058470Z               "line": 238
2026-06-10T22:49:44.8058558Z             },
2026-06-10T22:49:44.8058647Z             {
2026-06-10T22:49:44.8058755Z               "path": "crates/spt-store/src/notif.rs",
2026-06-10T22:49:44.8058855Z               "line": 261
2026-06-10T22:49:44.8059051Z             },
2026-06-10T22:49:44.8059146Z             {
2026-06-10T22:49:44.8059266Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.8059356Z               "line": 63
2026-06-10T22:49:44.8059451Z             }
2026-06-10T22:49:44.8059543Z           ]
2026-06-10T22:49:44.8059633Z         },
2026-06-10T22:49:44.8059727Z         "int": {
2026-06-10T22:49:44.8059829Z           "complete": true,
2026-06-10T22:49:44.8059943Z           "evidence": [
2026-06-10T22:49:44.8060023Z             {
2026-06-10T22:49:44.8060149Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-10T22:49:44.8060248Z               "line": 285
2026-06-10T22:49:44.8060376Z             },
2026-06-10T22:49:44.8060473Z             {
2026-06-10T22:49:44.8060596Z               "path": "crates/spt-daemon/tests/peerloop.rs",
2026-06-10T22:49:44.8060691Z               "line": 102
2026-06-10T22:49:44.8060768Z             },
2026-06-10T22:49:44.8060863Z             {
2026-06-10T22:49:44.8061086Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.8061181Z               "line": 614
2026-06-10T22:49:44.8061274Z             },
2026-06-10T22:49:44.8061365Z             {
2026-06-10T22:49:44.8061485Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.8061580Z               "line": 1007
2026-06-10T22:49:44.8061670Z             }
2026-06-10T22:49:44.8061856Z           ]
2026-06-10T22:49:44.8061941Z         },
2026-06-10T22:49:44.8062037Z         "unit": {
2026-06-10T22:49:44.8062124Z           "complete": true,
2026-06-10T22:49:44.8062223Z           "evidence": [
2026-06-10T22:49:44.8062313Z             {
2026-06-10T22:49:44.8062429Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.8062519Z               "line": 561
2026-06-10T22:49:44.8062599Z             },
2026-06-10T22:49:44.8062691Z             {
2026-06-10T22:49:44.8062805Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.8062910Z               "line": 610
2026-06-10T22:49:44.8062996Z             },
2026-06-10T22:49:44.8063092Z             {
2026-06-10T22:49:44.8063206Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.8063296Z               "line": 713
2026-06-10T22:49:44.8063383Z             },
2026-06-10T22:49:44.8063468Z             {
2026-06-10T22:49:44.8063597Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.8063688Z               "line": 745
2026-06-10T22:49:44.8063773Z             },
2026-06-10T22:49:44.8063862Z             {
2026-06-10T22:49:44.8063977Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.8064072Z               "line": 813
2026-06-10T22:49:44.8064160Z             },
2026-06-10T22:49:44.8064255Z             {
2026-06-10T22:49:44.8064362Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.8064457Z               "line": 871
2026-06-10T22:49:44.8064546Z             },
2026-06-10T22:49:44.8064628Z             {
2026-06-10T22:49:44.8064748Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.8064842Z               "line": 1141
2026-06-10T22:49:44.8064948Z             },
2026-06-10T22:49:44.8065038Z             {
2026-06-10T22:49:44.8065161Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-10T22:49:44.8065262Z               "line": 157
2026-06-10T22:49:44.8065348Z             },
2026-06-10T22:49:44.8065452Z             {
2026-06-10T22:49:44.8065568Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-10T22:49:44.8065663Z               "line": 250
2026-06-10T22:49:44.8065748Z             },
2026-06-10T22:49:44.8065839Z             {
2026-06-10T22:49:44.8065964Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-10T22:49:44.8066053Z               "line": 273
2026-06-10T22:49:44.8066149Z             },
2026-06-10T22:49:44.8066236Z             {
2026-06-10T22:49:44.8066363Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-10T22:49:44.8066471Z               "line": 341
2026-06-10T22:49:44.8066558Z             },
2026-06-10T22:49:44.8066652Z             {
2026-06-10T22:49:44.8066775Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-10T22:49:44.8066870Z               "line": 373
2026-06-10T22:49:44.8066957Z             },
2026-06-10T22:49:44.8067051Z             {
2026-06-10T22:49:44.8067190Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-10T22:49:44.8067281Z               "line": 131
2026-06-10T22:49:44.8067375Z             },
2026-06-10T22:49:44.8067461Z             {
2026-06-10T22:49:44.8067576Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-10T22:49:44.8067671Z               "line": 72
2026-06-10T22:49:44.8067771Z             },
2026-06-10T22:49:44.8067863Z             {
2026-06-10T22:49:44.8067977Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-10T22:49:44.8068072Z               "line": 97
2026-06-10T22:49:44.8068159Z             },
2026-06-10T22:49:44.8068329Z             {
2026-06-10T22:49:44.8068445Z               "path": "crates/spt-store/src/notif.rs",
2026-06-10T22:49:44.8068539Z               "line": 379
2026-06-10T22:49:44.8068630Z             },
2026-06-10T22:49:44.8068725Z             {
2026-06-10T22:49:44.8068845Z               "path": "crates/spt-store/src/notif.rs",
2026-06-10T22:49:44.8068934Z               "line": 417
2026-06-10T22:49:44.8069221Z             },
2026-06-10T22:49:44.8069311Z             {
2026-06-10T22:49:44.8069430Z               "path": "crates/spt-store/src/notif.rs",
2026-06-10T22:49:44.8069526Z               "line": 433
2026-06-10T22:49:44.8069616Z             },
2026-06-10T22:49:44.8069701Z             {
2026-06-10T22:49:44.8069817Z               "path": "crates/spt-store/src/notif.rs",
2026-06-10T22:49:44.8069907Z               "line": 472
2026-06-10T22:49:44.8069996Z             },
2026-06-10T22:49:44.8070093Z             {
2026-06-10T22:49:44.8070208Z               "path": "crates/spt-store/src/notif.rs",
2026-06-10T22:49:44.8070307Z               "line": 489
2026-06-10T22:49:44.8070399Z             },
2026-06-10T22:49:44.8070484Z             {
2026-06-10T22:49:44.8070603Z               "path": "crates/spt-store/src/notif.rs",
2026-06-10T22:49:44.8070694Z               "line": 517
2026-06-10T22:49:44.8070789Z             },
2026-06-10T22:49:44.8070880Z             {
2026-06-10T22:49:44.8070999Z               "path": "crates/spt-store/src/notif.rs",
2026-06-10T22:49:44.8071099Z               "line": 548
2026-06-10T22:49:44.8071184Z             },
2026-06-10T22:49:44.8071275Z             {
2026-06-10T22:49:44.8071395Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.8071489Z               "line": 455
2026-06-10T22:49:44.8071579Z             }
2026-06-10T22:49:44.8071670Z           ]
2026-06-10T22:49:44.8071760Z         }
2026-06-10T22:49:44.8071849Z       }
2026-06-10T22:49:44.8071939Z     },
2026-06-10T22:49:44.8072025Z     {
2026-06-10T22:49:44.8072125Z       "id": "REQ-NOTIF-2",
2026-06-10T22:49:44.8072402Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-10T22:49:44.8072502Z       "requiredStages": [
2026-06-10T22:49:44.8072592Z         "doc",
2026-06-10T22:49:44.8072684Z         "impl",
2026-06-10T22:49:44.8072774Z         "unit",
2026-06-10T22:49:44.8072864Z         "int"
2026-06-10T22:49:44.8072956Z       ],
2026-06-10T22:49:44.8073055Z       "stages": {
2026-06-10T22:49:44.8073146Z         "doc": {
2026-06-10T22:49:44.8073241Z           "complete": true,
2026-06-10T22:49:44.8073337Z           "evidence": [
2026-06-10T22:49:44.8073423Z             {
2026-06-10T22:49:44.8073527Z               "path": "CONTEXT.md",
2026-06-10T22:49:44.8073623Z               "line": 346
2026-06-10T22:49:44.8073713Z             },
2026-06-10T22:49:44.8073804Z             {
2026-06-10T22:49:44.8073910Z               "path": "docs/MANIFEST.md",
2026-06-10T22:49:44.8074004Z               "line": 62
2026-06-10T22:49:44.8074100Z             }
2026-06-10T22:49:44.8074191Z           ]
2026-06-10T22:49:44.8074282Z         },
2026-06-10T22:49:44.8074371Z         "impl": {
2026-06-10T22:49:44.8074470Z           "complete": true,
2026-06-10T22:49:44.8074565Z           "evidence": [
2026-06-10T22:49:44.8074650Z             {
2026-06-10T22:49:44.8074777Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.8074869Z               "line": 287
2026-06-10T22:49:44.8074969Z             },
2026-06-10T22:49:44.8075059Z             {
2026-06-10T22:49:44.8075179Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.8075274Z               "line": 301
2026-06-10T22:49:44.8075360Z             },
2026-06-10T22:49:44.8075450Z             {
2026-06-10T22:49:44.8075570Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.8075661Z               "line": 326
2026-06-10T22:49:44.8075750Z             },
2026-06-10T22:49:44.8075837Z             {
2026-06-10T22:49:44.8075970Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-10T22:49:44.8076166Z               "line": 126
2026-06-10T22:49:44.8076261Z             },
2026-06-10T22:49:44.8076351Z             {
2026-06-10T22:49:44.8076471Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.8076566Z               "line": 72
2026-06-10T22:49:44.8076652Z             },
2026-06-10T22:49:44.8076743Z             {
2026-06-10T22:49:44.8076923Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8077027Z               "line": 1546
2026-06-10T22:49:44.8077118Z             },
2026-06-10T22:49:44.8077208Z             {
2026-06-10T22:49:44.8077316Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8077407Z               "line": 1595
2026-06-10T22:49:44.8077502Z             },
2026-06-10T22:49:44.8077588Z             {
2026-06-10T22:49:44.8077702Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8077798Z               "line": 1674
2026-06-10T22:49:44.8077884Z             },
2026-06-10T22:49:44.8077983Z             {
2026-06-10T22:49:44.8078089Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8078184Z               "line": 1713
2026-06-10T22:49:44.8078269Z             }
2026-06-10T22:49:44.8078361Z           ]
2026-06-10T22:49:44.8078452Z         },
2026-06-10T22:49:44.8078542Z         "int": {
2026-06-10T22:49:44.8078641Z           "complete": true,
2026-06-10T22:49:44.8078743Z           "evidence": [
2026-06-10T22:49:44.8078837Z             {
2026-06-10T22:49:44.8079053Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.8079151Z               "line": 740
2026-06-10T22:49:44.8079242Z             },
2026-06-10T22:49:44.8079329Z             {
2026-06-10T22:49:44.8079457Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.8079547Z               "line": 1160
2026-06-10T22:49:44.8079644Z             }
2026-06-10T22:49:44.8079730Z           ]
2026-06-10T22:49:44.8079818Z         },
2026-06-10T22:49:44.8079918Z         "unit": {
2026-06-10T22:49:44.8080019Z           "complete": true,
2026-06-10T22:49:44.8080119Z           "evidence": [
2026-06-10T22:49:44.8080204Z             {
2026-06-10T22:49:44.8080324Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.8080420Z               "line": 990
2026-06-10T22:49:44.8080514Z             },
2026-06-10T22:49:44.8080605Z             {
2026-06-10T22:49:44.8080729Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.8080819Z               "line": 1058
2026-06-10T22:49:44.8080911Z             },
2026-06-10T22:49:44.8080997Z             {
2026-06-10T22:49:44.8081101Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8081201Z               "line": 5564
2026-06-10T22:49:44.8081288Z             },
2026-06-10T22:49:44.8081377Z             {
2026-06-10T22:49:44.8081487Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8081579Z               "line": 5619
2026-06-10T22:49:44.8081669Z             }
2026-06-10T22:49:44.8081759Z           ]
2026-06-10T22:49:44.8081854Z         }
2026-06-10T22:49:44.8081942Z       }
2026-06-10T22:49:44.8082025Z     },
2026-06-10T22:49:44.8082115Z     {
2026-06-10T22:49:44.8082211Z       "id": "REQ-PAIR-1",
2026-06-10T22:49:44.8082324Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-10T22:49:44.8082428Z       "requiredStages": [
2026-06-10T22:49:44.8082518Z         "impl",
2026-06-10T22:49:44.8082620Z         "unit",
2026-06-10T22:49:44.8082705Z         "int"
2026-06-10T22:49:44.8082794Z       ],
2026-06-10T22:49:44.8082886Z       "stages": {
2026-06-10T22:49:44.8082981Z         "doc": {
2026-06-10T22:49:44.8083081Z           "complete": false,
2026-06-10T22:49:44.8083177Z           "evidence": []
2026-06-10T22:49:44.8083268Z         },
2026-06-10T22:49:44.8083357Z         "impl": {
2026-06-10T22:49:44.8083453Z           "complete": true,
2026-06-10T22:49:44.8083544Z           "evidence": [
2026-06-10T22:49:44.8083639Z             {
2026-06-10T22:49:44.8083777Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-10T22:49:44.8084016Z               "line": 27
2026-06-10T22:49:44.8084102Z             },
2026-06-10T22:49:44.8084188Z             {
2026-06-10T22:49:44.8084321Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-10T22:49:44.8084417Z               "line": 88
2026-06-10T22:49:44.8084512Z             },
2026-06-10T22:49:44.8084597Z             {
2026-06-10T22:49:44.8084818Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-10T22:49:44.8084921Z               "line": 110
2026-06-10T22:49:44.8085006Z             },
2026-06-10T22:49:44.8085097Z             {
2026-06-10T22:49:44.8085224Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-10T22:49:44.8085323Z               "line": 153
2026-06-10T22:49:44.8085410Z             },
2026-06-10T22:49:44.8085506Z             {
2026-06-10T22:49:44.8085638Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-10T22:49:44.8085729Z               "line": 182
2026-06-10T22:49:44.8085825Z             },
2026-06-10T22:49:44.8085915Z             {
2026-06-10T22:49:44.8086044Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-10T22:49:44.8086135Z               "line": 29
2026-06-10T22:49:44.8086230Z             },
2026-06-10T22:49:44.8086325Z             {
2026-06-10T22:49:44.8086483Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-10T22:49:44.8086578Z               "line": 31
2026-06-10T22:49:44.8086664Z             },
2026-06-10T22:49:44.8086755Z             {
2026-06-10T22:49:44.8086888Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-10T22:49:44.8086979Z               "line": 44
2026-06-10T22:49:44.8087065Z             },
2026-06-10T22:49:44.8087155Z             {
2026-06-10T22:49:44.8087279Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-10T22:49:44.8087375Z               "line": 171
2026-06-10T22:49:44.8087465Z             },
2026-06-10T22:49:44.8087559Z             {
2026-06-10T22:49:44.8087692Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-10T22:49:44.8087791Z               "line": 376
2026-06-10T22:49:44.8087876Z             }
2026-06-10T22:49:44.8087967Z           ]
2026-06-10T22:49:44.8090360Z         },
2026-06-10T22:49:44.8090483Z         "int": {
2026-06-10T22:49:44.8090594Z           "complete": true,
2026-06-10T22:49:44.8090707Z           "evidence": [
2026-06-10T22:49:44.8090807Z             {
2026-06-10T22:49:44.8090951Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.8091045Z               "line": 575
2026-06-10T22:49:44.8091131Z             },
2026-06-10T22:49:44.8091224Z             {
2026-06-10T22:49:44.8091394Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.8091490Z               "line": 792
2026-06-10T22:49:44.8091576Z             }
2026-06-10T22:49:44.8091657Z           ]
2026-06-10T22:49:44.8091742Z         },
2026-06-10T22:49:44.8091834Z         "unit": {
2026-06-10T22:49:44.8091937Z           "complete": true,
2026-06-10T22:49:44.8092028Z           "evidence": [
2026-06-10T22:49:44.8092115Z             {
2026-06-10T22:49:44.8092252Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-10T22:49:44.8092347Z               "line": 236
2026-06-10T22:49:44.8092434Z             },
2026-06-10T22:49:44.8092516Z             {
2026-06-10T22:49:44.8092662Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-10T22:49:44.8092757Z               "line": 349
2026-06-10T22:49:44.8092838Z             },
2026-06-10T22:49:44.8092926Z             {
2026-06-10T22:49:44.8093059Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-10T22:49:44.8093155Z               "line": 194
2026-06-10T22:49:44.8093237Z             },
2026-06-10T22:49:44.8093322Z             {
2026-06-10T22:49:44.8093456Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-10T22:49:44.8093542Z               "line": 216
2026-06-10T22:49:44.8093767Z             },
2026-06-10T22:49:44.8093847Z             {
2026-06-10T22:49:44.8093975Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-10T22:49:44.8094067Z               "line": 230
2026-06-10T22:49:44.8094147Z             },
2026-06-10T22:49:44.8094232Z             {
2026-06-10T22:49:44.8094352Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-10T22:49:44.8094538Z               "line": 242
2026-06-10T22:49:44.8094633Z             },
2026-06-10T22:49:44.8094720Z             {
2026-06-10T22:49:44.8094891Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-10T22:49:44.8094992Z               "line": 256
2026-06-10T22:49:44.8095082Z             },
2026-06-10T22:49:44.8095172Z             {
2026-06-10T22:49:44.8095297Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-10T22:49:44.8095397Z               "line": 270
2026-06-10T22:49:44.8095486Z             },
2026-06-10T22:49:44.8095571Z             {
2026-06-10T22:49:44.8095696Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-10T22:49:44.8095794Z               "line": 277
2026-06-10T22:49:44.8095879Z             },
2026-06-10T22:49:44.8095960Z             {
2026-06-10T22:49:44.8096085Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-10T22:49:44.8096184Z               "line": 295
2026-06-10T22:49:44.8096270Z             },
2026-06-10T22:49:44.8096352Z             {
2026-06-10T22:49:44.8096480Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-10T22:49:44.8096570Z               "line": 968
2026-06-10T22:49:44.8096662Z             },
2026-06-10T22:49:44.8096743Z             {
2026-06-10T22:49:44.8096861Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-10T22:49:44.8096963Z               "line": 1051
2026-06-10T22:49:44.8097052Z             },
2026-06-10T22:49:44.8097148Z             {
2026-06-10T22:49:44.8097273Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-10T22:49:44.8097372Z               "line": 1121
2026-06-10T22:49:44.8097457Z             },
2026-06-10T22:49:44.8097544Z             {
2026-06-10T22:49:44.8097705Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-10T22:49:44.8097792Z               "line": 1182
2026-06-10T22:49:44.8097878Z             },
2026-06-10T22:49:44.8097959Z             {
2026-06-10T22:49:44.8098081Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-10T22:49:44.8098176Z               "line": 1238
2026-06-10T22:49:44.8098271Z             },
2026-06-10T22:49:44.8098365Z             {
2026-06-10T22:49:44.8098488Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-10T22:49:44.8098579Z               "line": 1457
2026-06-10T22:49:44.8098662Z             }
2026-06-10T22:49:44.8098755Z           ]
2026-06-10T22:49:44.8098832Z         }
2026-06-10T22:49:44.8098928Z       }
2026-06-10T22:49:44.8099113Z     },
2026-06-10T22:49:44.8099195Z     {
2026-06-10T22:49:44.8099304Z       "id": "REQ-PAIR-2",
2026-06-10T22:49:44.8099442Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-10T22:49:44.8099543Z       "requiredStages": [],
2026-06-10T22:49:44.8099633Z       "stages": {
2026-06-10T22:49:44.8099723Z         "doc": {
2026-06-10T22:49:44.8099825Z           "complete": false,
2026-06-10T22:49:44.8099920Z           "evidence": []
2026-06-10T22:49:44.8100010Z         },
2026-06-10T22:49:44.8100096Z         "impl": {
2026-06-10T22:49:44.8100197Z           "complete": false,
2026-06-10T22:49:44.8100295Z           "evidence": []
2026-06-10T22:49:44.8100382Z         },
2026-06-10T22:49:44.8100473Z         "int": {
2026-06-10T22:49:44.8100573Z           "complete": false,
2026-06-10T22:49:44.8100668Z           "evidence": []
2026-06-10T22:49:44.8100750Z         },
2026-06-10T22:49:44.8100836Z         "unit": {
2026-06-10T22:49:44.8100920Z           "complete": false,
2026-06-10T22:49:44.8101019Z           "evidence": []
2026-06-10T22:49:44.8101101Z         }
2026-06-10T22:49:44.8101286Z       }
2026-06-10T22:49:44.8101377Z     },
2026-06-10T22:49:44.8101540Z     {
2026-06-10T22:49:44.8101639Z       "id": "REQ-PAIR-3",
2026-06-10T22:49:44.8101793Z       "title": "Fetch current pairing code from any paired node",
2026-06-10T22:49:44.8101888Z       "requiredStages": [
2026-06-10T22:49:44.8101982Z         "impl",
2026-06-10T22:49:44.8102069Z         "unit"
2026-06-10T22:49:44.8102278Z       ],
2026-06-10T22:49:44.8102375Z       "stages": {
2026-06-10T22:49:44.8102465Z         "doc": {
2026-06-10T22:49:44.8102560Z           "complete": false,
2026-06-10T22:49:44.8102655Z           "evidence": []
2026-06-10T22:49:44.8102742Z         },
2026-06-10T22:49:44.8102836Z         "impl": {
2026-06-10T22:49:44.8102936Z           "complete": true,
2026-06-10T22:49:44.8103023Z           "evidence": [
2026-06-10T22:49:44.8103114Z             {
2026-06-10T22:49:44.8103227Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8103312Z               "line": 2333
2026-06-10T22:49:44.8103408Z             },
2026-06-10T22:49:44.8103496Z             {
2026-06-10T22:49:44.8103605Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8103692Z               "line": 2402
2026-06-10T22:49:44.8103783Z             },
2026-06-10T22:49:44.8103867Z             {
2026-06-10T22:49:44.8103973Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8104073Z               "line": 2638
2026-06-10T22:49:44.8104158Z             }
2026-06-10T22:49:44.8104248Z           ]
2026-06-10T22:49:44.8104336Z         },
2026-06-10T22:49:44.8104421Z         "int": {
2026-06-10T22:49:44.8104516Z           "complete": false,
2026-06-10T22:49:44.8104612Z           "evidence": []
2026-06-10T22:49:44.8104702Z         },
2026-06-10T22:49:44.8104793Z         "unit": {
2026-06-10T22:49:44.8104888Z           "complete": true,
2026-06-10T22:49:44.8104980Z           "evidence": [
2026-06-10T22:49:44.8105069Z             {
2026-06-10T22:49:44.8105174Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8105271Z               "line": 6932
2026-06-10T22:49:44.8105365Z             },
2026-06-10T22:49:44.8105456Z             {
2026-06-10T22:49:44.8105566Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8105656Z               "line": 7147
2026-06-10T22:49:44.8105756Z             },
2026-06-10T22:49:44.8105847Z             {
2026-06-10T22:49:44.8105967Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8106056Z               "line": 7728
2026-06-10T22:49:44.8106140Z             },
2026-06-10T22:49:44.8106232Z             {
2026-06-10T22:49:44.8106330Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8106430Z               "line": 7747
2026-06-10T22:49:44.8106516Z             },
2026-06-10T22:49:44.8106607Z             {
2026-06-10T22:49:44.8106711Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8106806Z               "line": 7771
2026-06-10T22:49:44.8106893Z             },
2026-06-10T22:49:44.8106983Z             {
2026-06-10T22:49:44.8107097Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8107189Z               "line": 7790
2026-06-10T22:49:44.8107274Z             },
2026-06-10T22:49:44.8107364Z             {
2026-06-10T22:49:44.8107460Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8107551Z               "line": 7803
2026-06-10T22:49:44.8107641Z             },
2026-06-10T22:49:44.8107731Z             {
2026-06-10T22:49:44.8107828Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8107922Z               "line": 7812
2026-06-10T22:49:44.8108017Z             }
2026-06-10T22:49:44.8108104Z           ]
2026-06-10T22:49:44.8108190Z         }
2026-06-10T22:49:44.8108279Z       }
2026-06-10T22:49:44.8108366Z     },
2026-06-10T22:49:44.8108443Z     {
2026-06-10T22:49:44.8108543Z       "id": "REQ-PAIR-4",
2026-06-10T22:49:44.8108656Z       "title": "Subnet naming on first pairing",
2026-06-10T22:49:44.8108755Z       "requiredStages": [
2026-06-10T22:49:44.8108836Z         "impl",
2026-06-10T22:49:44.8109106Z         "unit"
2026-06-10T22:49:44.8109193Z       ],
2026-06-10T22:49:44.8109278Z       "stages": {
2026-06-10T22:49:44.8109368Z         "doc": {
2026-06-10T22:49:44.8109469Z           "complete": false,
2026-06-10T22:49:44.8109555Z           "evidence": []
2026-06-10T22:49:44.8109635Z         },
2026-06-10T22:49:44.8109716Z         "impl": {
2026-06-10T22:49:44.8109893Z           "complete": true,
2026-06-10T22:49:44.8109987Z           "evidence": [
2026-06-10T22:49:44.8110080Z             {
2026-06-10T22:49:44.8110193Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-10T22:49:44.8110284Z               "line": 174
2026-06-10T22:49:44.8110370Z             }
2026-06-10T22:49:44.8110461Z           ]
2026-06-10T22:49:44.8110546Z         },
2026-06-10T22:49:44.8110637Z         "int": {
2026-06-10T22:49:44.8110733Z           "complete": false,
2026-06-10T22:49:44.8110828Z           "evidence": []
2026-06-10T22:49:44.8110913Z         },
2026-06-10T22:49:44.8111005Z         "unit": {
2026-06-10T22:49:44.8111100Z           "complete": true,
2026-06-10T22:49:44.8111194Z           "evidence": [
2026-06-10T22:49:44.8111281Z             {
2026-06-10T22:49:44.8111410Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-10T22:49:44.8111504Z               "line": 1294
2026-06-10T22:49:44.8111599Z             }
2026-06-10T22:49:44.8111685Z           ]
2026-06-10T22:49:44.8111777Z         }
2026-06-10T22:49:44.8111865Z       }
2026-06-10T22:49:44.8111942Z     },
2026-06-10T22:49:44.8112029Z     {
2026-06-10T22:49:44.8112120Z       "id": "REQ-PAIR-5",
2026-06-10T22:49:44.8112419Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-10T22:49:44.8112518Z       "requiredStages": [
2026-06-10T22:49:44.8112600Z         "impl",
2026-06-10T22:49:44.8112682Z         "unit",
2026-06-10T22:49:44.8112762Z         "int"
2026-06-10T22:49:44.8112852Z       ],
2026-06-10T22:49:44.8112945Z       "stages": {
2026-06-10T22:49:44.8113040Z         "doc": {
2026-06-10T22:49:44.8113134Z           "complete": false,
2026-06-10T22:49:44.8113235Z           "evidence": []
2026-06-10T22:49:44.8113321Z         },
2026-06-10T22:49:44.8113410Z         "impl": {
2026-06-10T22:49:44.8113501Z           "complete": true,
2026-06-10T22:49:44.8113598Z           "evidence": [
2026-06-10T22:49:44.8113683Z             {
2026-06-10T22:49:44.8113820Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-10T22:49:44.8113915Z               "line": 44
2026-06-10T22:49:44.8114005Z             },
2026-06-10T22:49:44.8114094Z             {
2026-06-10T22:49:44.8114223Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-10T22:49:44.8114319Z               "line": 96
2026-06-10T22:49:44.8114409Z             },
2026-06-10T22:49:44.8114489Z             {
2026-06-10T22:49:44.8114610Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-10T22:49:44.8114705Z               "line": 107
2026-06-10T22:49:44.8114795Z             },
2026-06-10T22:49:44.8114887Z             {
2026-06-10T22:49:44.8115015Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-10T22:49:44.8115105Z               "line": 124
2026-06-10T22:49:44.8115196Z             },
2026-06-10T22:49:44.8115281Z             {
2026-06-10T22:49:44.8115419Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-10T22:49:44.8115506Z               "line": 155
2026-06-10T22:49:44.8115596Z             },
2026-06-10T22:49:44.8115687Z             {
2026-06-10T22:49:44.8115807Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-10T22:49:44.8115897Z               "line": 195
2026-06-10T22:49:44.8115977Z             },
2026-06-10T22:49:44.8116068Z             {
2026-06-10T22:49:44.8116193Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-10T22:49:44.8116287Z               "line": 251
2026-06-10T22:49:44.8116378Z             },
2026-06-10T22:49:44.8116455Z             {
2026-06-10T22:49:44.8116739Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-10T22:49:44.8116835Z               "line": 33
2026-06-10T22:49:44.8116928Z             },
2026-06-10T22:49:44.8117014Z             {
2026-06-10T22:49:44.8117153Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-10T22:49:44.8117248Z               "line": 45
2026-06-10T22:49:44.8117395Z             },
2026-06-10T22:49:44.8117486Z             {
2026-06-10T22:49:44.8117624Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-10T22:49:44.8117720Z               "line": 59
2026-06-10T22:49:44.8117810Z             },
2026-06-10T22:49:44.8117896Z             {
2026-06-10T22:49:44.8118025Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-10T22:49:44.8118121Z               "line": 376
2026-06-10T22:49:44.8118201Z             }
2026-06-10T22:49:44.8118287Z           ]
2026-06-10T22:49:44.8118383Z         },
2026-06-10T22:49:44.8118473Z         "int": {
2026-06-10T22:49:44.8118568Z           "complete": true,
2026-06-10T22:49:44.8118664Z           "evidence": [
2026-06-10T22:49:44.8118746Z             {
2026-06-10T22:49:44.8118878Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.8119042Z               "line": 792
2026-06-10T22:49:44.8119136Z             },
2026-06-10T22:49:44.8119225Z             {
2026-06-10T22:49:44.8119354Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-10T22:49:44.8119443Z               "line": 342
2026-06-10T22:49:44.8119523Z             }
2026-06-10T22:49:44.8119613Z           ]
2026-06-10T22:49:44.8119705Z         },
2026-06-10T22:49:44.8119796Z         "unit": {
2026-06-10T22:49:44.8119895Z           "complete": true,
2026-06-10T22:49:44.8119986Z           "evidence": [
2026-06-10T22:49:44.8120068Z             {
2026-06-10T22:49:44.8120195Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-10T22:49:44.8120286Z               "line": 293
2026-06-10T22:49:44.8120382Z             },
2026-06-10T22:49:44.8120472Z             {
2026-06-10T22:49:44.8120596Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-10T22:49:44.8120678Z               "line": 304
2026-06-10T22:49:44.8120772Z             },
2026-06-10T22:49:44.8120849Z             {
2026-06-10T22:49:44.8120965Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-10T22:49:44.8121063Z               "line": 406
2026-06-10T22:49:44.8121149Z             },
2026-06-10T22:49:44.8121231Z             {
2026-06-10T22:49:44.8121364Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-10T22:49:44.8121459Z               "line": 72
2026-06-10T22:49:44.8121546Z             },
2026-06-10T22:49:44.8121632Z             {
2026-06-10T22:49:44.8121769Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-10T22:49:44.8121851Z               "line": 82
2026-06-10T22:49:44.8121942Z             },
2026-06-10T22:49:44.8122031Z             {
2026-06-10T22:49:44.8122173Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-10T22:49:44.8122264Z               "line": 100
2026-06-10T22:49:44.8122360Z             },
2026-06-10T22:49:44.8122440Z             {
2026-06-10T22:49:44.8122574Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-10T22:49:44.8122670Z               "line": 110
2026-06-10T22:49:44.8122759Z             },
2026-06-10T22:49:44.8122856Z             {
2026-06-10T22:49:44.8122989Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-10T22:49:44.8123084Z               "line": 125
2026-06-10T22:49:44.8123170Z             },
2026-06-10T22:49:44.8123261Z             {
2026-06-10T22:49:44.8123389Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-10T22:49:44.8123485Z               "line": 1044
2026-06-10T22:49:44.8123576Z             },
2026-06-10T22:49:44.8123656Z             {
2026-06-10T22:49:44.8123785Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-10T22:49:44.8123975Z               "line": 1110
2026-06-10T22:49:44.8124066Z             },
2026-06-10T22:49:44.8124154Z             {
2026-06-10T22:49:44.8124276Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-10T22:49:44.8124375Z               "line": 1357
2026-06-10T22:49:44.8124466Z             }
2026-06-10T22:49:44.8124551Z           ]
2026-06-10T22:49:44.8124739Z         }
2026-06-10T22:49:44.8124826Z       }
2026-06-10T22:49:44.8124918Z     },
2026-06-10T22:49:44.8125002Z     {
2026-06-10T22:49:44.8125108Z       "id": "REQ-PAIR-6",
2026-06-10T22:49:44.8125355Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-10T22:49:44.8125451Z       "requiredStages": [
2026-06-10T22:49:44.8125541Z         "impl",
2026-06-10T22:49:44.8125622Z         "unit"
2026-06-10T22:49:44.8125708Z       ],
2026-06-10T22:49:44.8125795Z       "stages": {
2026-06-10T22:49:44.8125890Z         "doc": {
2026-06-10T22:49:44.8125999Z           "complete": false,
2026-06-10T22:49:44.8126085Z           "evidence": []
2026-06-10T22:49:44.8126175Z         },
2026-06-10T22:49:44.8126266Z         "impl": {
2026-06-10T22:49:44.8126362Z           "complete": true,
2026-06-10T22:49:44.8126458Z           "evidence": [
2026-06-10T22:49:44.8126547Z             {
2026-06-10T22:49:44.8126652Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8126749Z               "line": 2402
2026-06-10T22:49:44.8126842Z             },
2026-06-10T22:49:44.8126938Z             {
2026-06-10T22:49:44.8127054Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8127153Z               "line": 2638
2026-06-10T22:49:44.8127252Z             },
2026-06-10T22:49:44.8127343Z             {
2026-06-10T22:49:44.8127456Z               "path": "crates/spt/src/elevation.rs",
2026-06-10T22:49:44.8127554Z               "line": 18
2026-06-10T22:49:44.8127641Z             },
2026-06-10T22:49:44.8127732Z             {
2026-06-10T22:49:44.8127850Z               "path": "crates/spt/src/elevation.rs",
2026-06-10T22:49:44.8127945Z               "line": 49
2026-06-10T22:49:44.8128037Z             },
2026-06-10T22:49:44.8128123Z             {
2026-06-10T22:49:44.8128236Z               "path": "crates/spt/src/elevation.rs",
2026-06-10T22:49:44.8128328Z               "line": 163
2026-06-10T22:49:44.8128418Z             }
2026-06-10T22:49:44.8128517Z           ]
2026-06-10T22:49:44.8128609Z         },
2026-06-10T22:49:44.8128700Z         "int": {
2026-06-10T22:49:44.8128795Z           "complete": false,
2026-06-10T22:49:44.8128894Z           "evidence": []
2026-06-10T22:49:44.8129066Z         },
2026-06-10T22:49:44.8129161Z         "unit": {
2026-06-10T22:49:44.8129253Z           "complete": true,
2026-06-10T22:49:44.8129348Z           "evidence": [
2026-06-10T22:49:44.8129443Z             {
2026-06-10T22:49:44.8129549Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8129645Z               "line": 7825
2026-06-10T22:49:44.8129738Z             },
2026-06-10T22:49:44.8129827Z             {
2026-06-10T22:49:44.8129933Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8130031Z               "line": 7842
2026-06-10T22:49:44.8130121Z             },
2026-06-10T22:49:44.8130207Z             {
2026-06-10T22:49:44.8130323Z               "path": "crates/spt/src/elevation.rs",
2026-06-10T22:49:44.8130422Z               "line": 228
2026-06-10T22:49:44.8130513Z             },
2026-06-10T22:49:44.8130599Z             {
2026-06-10T22:49:44.8130717Z               "path": "crates/spt/src/elevation.rs",
2026-06-10T22:49:44.8130812Z               "line": 237
2026-06-10T22:49:44.8130900Z             }
2026-06-10T22:49:44.8130990Z           ]
2026-06-10T22:49:44.8131080Z         }
2026-06-10T22:49:44.8131166Z       }
2026-06-10T22:49:44.8131256Z     },
2026-06-10T22:49:44.8131342Z     {
2026-06-10T22:49:44.8131447Z       "id": "REQ-PAIR-7",
2026-06-10T22:49:44.8131609Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-10T22:49:44.8131825Z       "requiredStages": [],
2026-06-10T22:49:44.8131914Z       "stages": {
2026-06-10T22:49:44.8132010Z         "doc": {
2026-06-10T22:49:44.8132101Z           "complete": false,
2026-06-10T22:49:44.8132201Z           "evidence": []
2026-06-10T22:49:44.8132291Z         },
2026-06-10T22:49:44.8132382Z         "impl": {
2026-06-10T22:49:44.8132479Z           "complete": false,
2026-06-10T22:49:44.8132667Z           "evidence": []
2026-06-10T22:49:44.8132762Z         },
2026-06-10T22:49:44.8132849Z         "int": {
2026-06-10T22:49:44.8132958Z           "complete": false,
2026-06-10T22:49:44.8133053Z           "evidence": []
2026-06-10T22:49:44.8133139Z         },
2026-06-10T22:49:44.8133240Z         "unit": {
2026-06-10T22:49:44.8133334Z           "complete": false,
2026-06-10T22:49:44.8133431Z           "evidence": []
2026-06-10T22:49:44.8133521Z         }
2026-06-10T22:49:44.8133611Z       }
2026-06-10T22:49:44.8133697Z     },
2026-06-10T22:49:44.8133788Z     {
2026-06-10T22:49:44.8133892Z       "id": "REQ-PAIR-8",
2026-06-10T22:49:44.8135248Z       "title": "NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)",
2026-06-10T22:49:44.8135358Z       "requiredStages": [
2026-06-10T22:49:44.8135449Z         "impl",
2026-06-10T22:49:44.8135538Z         "unit"
2026-06-10T22:49:44.8135629Z       ],
2026-06-10T22:49:44.8135721Z       "stages": {
2026-06-10T22:49:44.8135815Z         "doc": {
2026-06-10T22:49:44.8135915Z           "complete": false,
2026-06-10T22:49:44.8136011Z           "evidence": []
2026-06-10T22:49:44.8136106Z         },
2026-06-10T22:49:44.8136196Z         "impl": {
2026-06-10T22:49:44.8136298Z           "complete": true,
2026-06-10T22:49:44.8136398Z           "evidence": [
2026-06-10T22:49:44.8136488Z             {
2026-06-10T22:49:44.8136622Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-10T22:49:44.8136717Z               "line": 577
2026-06-10T22:49:44.8136812Z             },
2026-06-10T22:49:44.8136898Z             {
2026-06-10T22:49:44.8137046Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-10T22:49:44.8137136Z               "line": 22
2026-06-10T22:49:44.8137227Z             },
2026-06-10T22:49:44.8137309Z             {
2026-06-10T22:49:44.8137436Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-10T22:49:44.8137532Z               "line": 76
2026-06-10T22:49:44.8137614Z             },
2026-06-10T22:49:44.8137704Z             {
2026-06-10T22:49:44.8137817Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-10T22:49:44.8137917Z               "line": 127
2026-06-10T22:49:44.8138011Z             }
2026-06-10T22:49:44.8138114Z           ]
2026-06-10T22:49:44.8138206Z         },
2026-06-10T22:49:44.8138297Z         "int": {
2026-06-10T22:49:44.8138392Z           "complete": false,
2026-06-10T22:49:44.8138487Z           "evidence": []
2026-06-10T22:49:44.8138578Z         },
2026-06-10T22:49:44.8138664Z         "unit": {
2026-06-10T22:49:44.8138758Z           "complete": true,
2026-06-10T22:49:44.8138855Z           "evidence": [
2026-06-10T22:49:44.8138936Z             {
2026-06-10T22:49:44.8139145Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-10T22:49:44.8139236Z               "line": 183
2026-06-10T22:49:44.8139326Z             },
2026-06-10T22:49:44.8139407Z             {
2026-06-10T22:49:44.8139537Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-10T22:49:44.8139631Z               "line": 195
2026-06-10T22:49:44.8139721Z             },
2026-06-10T22:49:44.8139814Z             {
2026-06-10T22:49:44.8139927Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-10T22:49:44.8140124Z               "line": 211
2026-06-10T22:49:44.8140209Z             },
2026-06-10T22:49:44.8140308Z             {
2026-06-10T22:49:44.8140431Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-10T22:49:44.8140522Z               "line": 227
2026-06-10T22:49:44.8140610Z             }
2026-06-10T22:49:44.8140696Z           ]
2026-06-10T22:49:44.8140786Z         }
2026-06-10T22:49:44.8140986Z       }
2026-06-10T22:49:44.8141082Z     },
2026-06-10T22:49:44.8141206Z     {
2026-06-10T22:49:44.8141320Z       "id": "REQ-PRES-1",
2026-06-10T22:49:44.8142656Z       "title": "Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)",
2026-06-10T22:49:44.8142766Z       "requiredStages": [
2026-06-10T22:49:44.8142855Z         "impl",
2026-06-10T22:49:44.8142947Z         "unit",
2026-06-10T22:49:44.8143034Z         "int"
2026-06-10T22:49:44.8143123Z       ],
2026-06-10T22:49:44.8143213Z       "stages": {
2026-06-10T22:49:44.8143303Z         "doc": {
2026-06-10T22:49:44.8143404Z           "complete": true,
2026-06-10T22:49:44.8143503Z           "evidence": [
2026-06-10T22:49:44.8143593Z             {
2026-06-10T22:49:44.8143704Z               "path": "docs/DEFERRED.md",
2026-06-10T22:49:44.8143800Z               "line": 11
2026-06-10T22:49:44.8143890Z             }
2026-06-10T22:49:44.8143976Z           ]
2026-06-10T22:49:44.8144066Z         },
2026-06-10T22:49:44.8144157Z         "impl": {
2026-06-10T22:49:44.8144257Z           "complete": true,
2026-06-10T22:49:44.8144348Z           "evidence": [
2026-06-10T22:49:44.8144438Z             {
2026-06-10T22:49:44.8144566Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-10T22:49:44.8144677Z               "line": 515
2026-06-10T22:49:44.8144767Z             },
2026-06-10T22:49:44.8144853Z             {
2026-06-10T22:49:44.8144978Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-10T22:49:44.8145072Z               "line": 567
2026-06-10T22:49:44.8145163Z             },
2026-06-10T22:49:44.8145249Z             {
2026-06-10T22:49:44.8145386Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.8145481Z               "line": 188
2026-06-10T22:49:44.8145567Z             },
2026-06-10T22:49:44.8145657Z             {
2026-06-10T22:49:44.8145770Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.8145870Z               "line": 214
2026-06-10T22:49:44.8145956Z             },
2026-06-10T22:49:44.8146046Z             {
2026-06-10T22:49:44.8146165Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-10T22:49:44.8146261Z               "line": 28
2026-06-10T22:49:44.8146352Z             },
2026-06-10T22:49:44.8146442Z             {
2026-06-10T22:49:44.8146567Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-10T22:49:44.8146657Z               "line": 105
2026-06-10T22:49:44.8146752Z             },
2026-06-10T22:49:44.8146838Z             {
2026-06-10T22:49:44.8146962Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-10T22:49:44.8147057Z               "line": 161
2026-06-10T22:49:44.8147148Z             },
2026-06-10T22:49:44.8147244Z             {
2026-06-10T22:49:44.8147358Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-10T22:49:44.8147453Z               "line": 180
2026-06-10T22:49:44.8147544Z             },
2026-06-10T22:49:44.8147630Z             {
2026-06-10T22:49:44.8147763Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.8147859Z               "line": 399
2026-06-10T22:49:44.8147958Z             },
2026-06-10T22:49:44.8148044Z             {
2026-06-10T22:49:44.8148169Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-10T22:49:44.8148348Z               "line": 289
2026-06-10T22:49:44.8148434Z             },
2026-06-10T22:49:44.8148525Z             {
2026-06-10T22:49:44.8148646Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-10T22:49:44.8148741Z               "line": 336
2026-06-10T22:49:44.8148833Z             },
2026-06-10T22:49:44.8148919Z             {
2026-06-10T22:49:44.8149290Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-10T22:49:44.8149395Z               "line": 362
2026-06-10T22:49:44.8149487Z             },
2026-06-10T22:49:44.8149582Z             {
2026-06-10T22:49:44.8149700Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.8149796Z               "line": 100
2026-06-10T22:49:44.8149891Z             }
2026-06-10T22:49:44.8149986Z           ]
2026-06-10T22:49:44.8150073Z         },
2026-06-10T22:49:44.8150163Z         "int": {
2026-06-10T22:49:44.8150258Z           "complete": true,
2026-06-10T22:49:44.8150364Z           "evidence": [
2026-06-10T22:49:44.8150455Z             {
2026-06-10T22:49:44.8150583Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-10T22:49:44.8150679Z               "line": 557
2026-06-10T22:49:44.8150774Z             },
2026-06-10T22:49:44.8150863Z             {
2026-06-10T22:49:44.8150986Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.8151096Z               "line": 677
2026-06-10T22:49:44.8151194Z             },
2026-06-10T22:49:44.8151280Z             {
2026-06-10T22:49:44.8151400Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.8151490Z               "line": 1070
2026-06-10T22:49:44.8151580Z             }
2026-06-10T22:49:44.8151666Z           ]
2026-06-10T22:49:44.8151757Z         },
2026-06-10T22:49:44.8151852Z         "unit": {
2026-06-10T22:49:44.8151937Z           "complete": true,
2026-06-10T22:49:44.8152039Z           "evidence": [
2026-06-10T22:49:44.8152125Z             {
2026-06-10T22:49:44.8152257Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.8152349Z               "line": 648
2026-06-10T22:49:44.8152434Z             },
2026-06-10T22:49:44.8152519Z             {
2026-06-10T22:49:44.8152640Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-10T22:49:44.8152734Z               "line": 237
2026-06-10T22:49:44.8152824Z             },
2026-06-10T22:49:44.8152916Z             {
2026-06-10T22:49:44.8153030Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-10T22:49:44.8153125Z               "line": 268
2026-06-10T22:49:44.8153216Z             },
2026-06-10T22:49:44.8153303Z             {
2026-06-10T22:49:44.8153425Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-10T22:49:44.8153517Z               "line": 304
2026-06-10T22:49:44.8153599Z             },
2026-06-10T22:49:44.8153679Z             {
2026-06-10T22:49:44.8153811Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-10T22:49:44.8153906Z               "line": 335
2026-06-10T22:49:44.8153998Z             },
2026-06-10T22:49:44.8154092Z             {
2026-06-10T22:49:44.8154221Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.8154321Z               "line": 1135
2026-06-10T22:49:44.8154406Z             },
2026-06-10T22:49:44.8154502Z             {
2026-06-10T22:49:44.8154626Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.8154721Z               "line": 1112
2026-06-10T22:49:44.8154812Z             }
2026-06-10T22:49:44.8154899Z           ]
2026-06-10T22:49:44.8154993Z         }
2026-06-10T22:49:44.8155079Z       }
2026-06-10T22:49:44.8155170Z     },
2026-06-10T22:49:44.8155261Z     {
2026-06-10T22:49:44.8155356Z       "id": "REQ-REACH-1",
2026-06-10T22:49:44.8155510Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-10T22:49:44.8155609Z       "requiredStages": [
2026-06-10T22:49:44.8155704Z         "impl",
2026-06-10T22:49:44.8155790Z         "unit",
2026-06-10T22:49:44.8155985Z         "int"
2026-06-10T22:49:44.8156079Z       ],
2026-06-10T22:49:44.8156170Z       "stages": {
2026-06-10T22:49:44.8156264Z         "doc": {
2026-06-10T22:49:44.8156363Z           "complete": false,
2026-06-10T22:49:44.8156463Z           "evidence": []
2026-06-10T22:49:44.8156555Z         },
2026-06-10T22:49:44.8156650Z         "impl": {
2026-06-10T22:49:44.8156745Z           "complete": true,
2026-06-10T22:49:44.8156912Z           "evidence": [
2026-06-10T22:49:44.8157007Z             {
2026-06-10T22:49:44.8157132Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-10T22:49:44.8157227Z               "line": 140
2026-06-10T22:49:44.8157317Z             },
2026-06-10T22:49:44.8157408Z             {
2026-06-10T22:49:44.8157537Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-10T22:49:44.8157627Z               "line": 76
2026-06-10T22:49:44.8157718Z             },
2026-06-10T22:49:44.8157809Z             {
2026-06-10T22:49:44.8157922Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-10T22:49:44.8158028Z               "line": 222
2026-06-10T22:49:44.8158119Z             },
2026-06-10T22:49:44.8158208Z             {
2026-06-10T22:49:44.8158328Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-10T22:49:44.8158424Z               "line": 422
2026-06-10T22:49:44.8158513Z             },
2026-06-10T22:49:44.8160939Z             {
2026-06-10T22:49:44.8161108Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-10T22:49:44.8161210Z               "line": 529
2026-06-10T22:49:44.8161306Z             },
2026-06-10T22:49:44.8161395Z             {
2026-06-10T22:49:44.8161523Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-10T22:49:44.8161618Z               "line": 39
2026-06-10T22:49:44.8161712Z             },
2026-06-10T22:49:44.8161806Z             {
2026-06-10T22:49:44.8161926Z               "path": "crates/spt-store/src/info.rs",
2026-06-10T22:49:44.8162023Z               "line": 229
2026-06-10T22:49:44.8162111Z             },
2026-06-10T22:49:44.8162207Z             {
2026-06-10T22:49:44.8162322Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-10T22:49:44.8162417Z               "line": 88
2026-06-10T22:49:44.8162507Z             },
2026-06-10T22:49:44.8162594Z             {
2026-06-10T22:49:44.8162704Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-10T22:49:44.8162803Z               "line": 98
2026-06-10T22:49:44.8162904Z             },
2026-06-10T22:49:44.8162994Z             {
2026-06-10T22:49:44.8163118Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.8163214Z               "line": 210
2026-06-10T22:49:44.8163299Z             }
2026-06-10T22:49:44.8163394Z           ]
2026-06-10T22:49:44.8163481Z         },
2026-06-10T22:49:44.8163581Z         "int": {
2026-06-10T22:49:44.8163676Z           "complete": true,
2026-06-10T22:49:44.8163772Z           "evidence": [
2026-06-10T22:49:44.8163863Z             {
2026-06-10T22:49:44.8163995Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-10T22:49:44.8164101Z               "line": 415
2026-06-10T22:49:44.8164192Z             },
2026-06-10T22:49:44.8164286Z             {
2026-06-10T22:49:44.8164418Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-10T22:49:44.8164515Z               "line": 514
2026-06-10T22:49:44.8164591Z             },
2026-06-10T22:49:44.8164671Z             {
2026-06-10T22:49:44.8164805Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.8164901Z               "line": 903
2026-06-10T22:49:44.8164995Z             },
2026-06-10T22:49:44.8165072Z             {
2026-06-10T22:49:44.8165201Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.8165300Z               "line": 1198
2026-06-10T22:49:44.8165382Z             }
2026-06-10T22:49:44.8165478Z           ]
2026-06-10T22:49:44.8165563Z         },
2026-06-10T22:49:44.8165658Z         "unit": {
2026-06-10T22:49:44.8165759Z           "complete": true,
2026-06-10T22:49:44.8165973Z           "evidence": [
2026-06-10T22:49:44.8166065Z             {
2026-06-10T22:49:44.8166178Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-10T22:49:44.8166278Z               "line": 639
2026-06-10T22:49:44.8166365Z             },
2026-06-10T22:49:44.8166456Z             {
2026-06-10T22:49:44.8166568Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-10T22:49:44.8166750Z               "line": 660
2026-06-10T22:49:44.8166843Z             },
2026-06-10T22:49:44.8166928Z             {
2026-06-10T22:49:44.8167048Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-10T22:49:44.8167139Z               "line": 391
2026-06-10T22:49:44.8167219Z             },
2026-06-10T22:49:44.8167295Z             {
2026-06-10T22:49:44.8167410Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-10T22:49:44.8167505Z               "line": 93
2026-06-10T22:49:44.8167595Z             },
2026-06-10T22:49:44.8167683Z             {
2026-06-10T22:49:44.8167801Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-10T22:49:44.8167896Z               "line": 224
2026-06-10T22:49:44.8167983Z             },
2026-06-10T22:49:44.8168073Z             {
2026-06-10T22:49:44.8168187Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-10T22:49:44.8168278Z               "line": 96
2026-06-10T22:49:44.8168369Z             },
2026-06-10T22:49:44.8168450Z             {
2026-06-10T22:49:44.8168568Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-10T22:49:44.8168665Z               "line": 146
2026-06-10T22:49:44.8168754Z             },
2026-06-10T22:49:44.8168845Z             {
2026-06-10T22:49:44.8169045Z               "path": "crates/spt-store/src/info.rs",
2026-06-10T22:49:44.8169146Z               "line": 502
2026-06-10T22:49:44.8169233Z             },
2026-06-10T22:49:44.8169328Z             {
2026-06-10T22:49:44.8169450Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-10T22:49:44.8169545Z               "line": 118
2026-06-10T22:49:44.8169640Z             },
2026-06-10T22:49:44.8169724Z             {
2026-06-10T22:49:44.8169838Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-10T22:49:44.8169934Z               "line": 148
2026-06-10T22:49:44.8170025Z             },
2026-06-10T22:49:44.8170115Z             {
2026-06-10T22:49:44.8170230Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.8170335Z               "line": 602
2026-06-10T22:49:44.8170420Z             }
2026-06-10T22:49:44.8170511Z           ]
2026-06-10T22:49:44.8170592Z         }
2026-06-10T22:49:44.8170683Z       }
2026-06-10T22:49:44.8170777Z     },
2026-06-10T22:49:44.8170859Z     {
2026-06-10T22:49:44.8170950Z       "id": "REQ-REACH-2",
2026-06-10T22:49:44.8171121Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-10T22:49:44.8171231Z       "requiredStages": [],
2026-06-10T22:49:44.8171326Z       "stages": {
2026-06-10T22:49:44.8171416Z         "doc": {
2026-06-10T22:49:44.8171518Z           "complete": false,
2026-06-10T22:49:44.8171617Z           "evidence": []
2026-06-10T22:49:44.8171713Z         },
2026-06-10T22:49:44.8171804Z         "impl": {
2026-06-10T22:49:44.8171899Z           "complete": false,
2026-06-10T22:49:44.8171993Z           "evidence": []
2026-06-10T22:49:44.8172083Z         },
2026-06-10T22:49:44.8172178Z         "int": {
2026-06-10T22:49:44.8172272Z           "complete": false,
2026-06-10T22:49:44.8172385Z           "evidence": []
2026-06-10T22:49:44.8172472Z         },
2026-06-10T22:49:44.8172563Z         "unit": {
2026-06-10T22:49:44.8172658Z           "complete": false,
2026-06-10T22:49:44.8172753Z           "evidence": []
2026-06-10T22:49:44.8172845Z         }
2026-06-10T22:49:44.8172935Z       }
2026-06-10T22:49:44.8173024Z     },
2026-06-10T22:49:44.8173107Z     {
2026-06-10T22:49:44.8173207Z       "id": "REQ-REL-1",
2026-06-10T22:49:44.8173588Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-10T22:49:44.8173794Z       "requiredStages": [
2026-06-10T22:49:44.8173888Z         "doc",
2026-06-10T22:49:44.8173978Z         "impl"
2026-06-10T22:49:44.8174070Z       ],
2026-06-10T22:49:44.8174160Z       "stages": {
2026-06-10T22:49:44.8174251Z         "doc": {
2026-06-10T22:49:44.8174351Z           "complete": true,
2026-06-10T22:49:44.8174447Z           "evidence": [
2026-06-10T22:49:44.8174647Z             {
2026-06-10T22:49:44.8174874Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-10T22:49:44.8174969Z               "line": 3
2026-06-10T22:49:44.8175055Z             }
2026-06-10T22:49:44.8175147Z           ]
2026-06-10T22:49:44.8175231Z         },
2026-06-10T22:49:44.8175322Z         "impl": {
2026-06-10T22:49:44.8175418Z           "complete": true,
2026-06-10T22:49:44.8175518Z           "evidence": [
2026-06-10T22:49:44.8175608Z             {
2026-06-10T22:49:44.8175738Z               "path": ".github/workflows/docs-publish.yml",
2026-06-10T22:49:44.8175842Z               "line": 11
2026-06-10T22:49:44.8175928Z             },
2026-06-10T22:49:44.8176019Z             {
2026-06-10T22:49:44.8176138Z               "path": "crates/xtask/src/main.rs",
2026-06-10T22:49:44.8176228Z               "line": 265
2026-06-10T22:49:44.8176319Z             }
2026-06-10T22:49:44.8176405Z           ]
2026-06-10T22:49:44.8176495Z         },
2026-06-10T22:49:44.8176591Z         "int": {
2026-06-10T22:49:44.8176696Z           "complete": false,
2026-06-10T22:49:44.8176790Z           "evidence": []
2026-06-10T22:49:44.8176877Z         },
2026-06-10T22:49:44.8176969Z         "unit": {
2026-06-10T22:49:44.8177063Z           "complete": false,
2026-06-10T22:49:44.8177157Z           "evidence": []
2026-06-10T22:49:44.8177248Z         }
2026-06-10T22:49:44.8177343Z       }
2026-06-10T22:49:44.8177431Z     },
2026-06-10T22:49:44.8177517Z     {
2026-06-10T22:49:44.8177627Z       "id": "REQ-REL-2",
2026-06-10T22:49:44.8178093Z       "title": "Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline",
2026-06-10T22:49:44.8178199Z       "requiredStages": [
2026-06-10T22:49:44.8178290Z         "impl",
2026-06-10T22:49:44.8178385Z         "int"
2026-06-10T22:49:44.8178480Z       ],
2026-06-10T22:49:44.8178572Z       "stages": {
2026-06-10T22:49:44.8178666Z         "doc": {
2026-06-10T22:49:44.8178761Z           "complete": true,
2026-06-10T22:49:44.8178857Z           "evidence": [
2026-06-10T22:49:44.8179029Z             {
2026-06-10T22:49:44.8179158Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-10T22:49:44.8179249Z               "line": 6
2026-06-10T22:49:44.8179338Z             }
2026-06-10T22:49:44.8179434Z           ]
2026-06-10T22:49:44.8179521Z         },
2026-06-10T22:49:44.8179610Z         "impl": {
2026-06-10T22:49:44.8179706Z           "complete": true,
2026-06-10T22:49:44.8179807Z           "evidence": [
2026-06-10T22:49:44.8179897Z             {
2026-06-10T22:49:44.8180020Z               "path": ".github/workflows/release.yml",
2026-06-10T22:49:44.8180115Z               "line": 16
2026-06-10T22:49:44.8180201Z             },
2026-06-10T22:49:44.8180289Z             {
2026-06-10T22:49:44.8180398Z               "path": "crates/xtask/src/main.rs",
2026-06-10T22:49:44.8180494Z               "line": 352
2026-06-10T22:49:44.8180585Z             },
2026-06-10T22:49:44.8180680Z             {
2026-06-10T22:49:44.8180790Z               "path": "crates/xtask/src/main.rs",
2026-06-10T22:49:44.8180880Z               "line": 426
2026-06-10T22:49:44.8180980Z             },
2026-06-10T22:49:44.8181066Z             {
2026-06-10T22:49:44.8181181Z               "path": "crates/xtask/src/main.rs",
2026-06-10T22:49:44.8181276Z               "line": 588
2026-06-10T22:49:44.8181361Z             },
2026-06-10T22:49:44.8181458Z             {
2026-06-10T22:49:44.8181562Z               "path": "crates/xtask/src/main.rs",
2026-06-10T22:49:44.8181657Z               "line": 720
2026-06-10T22:49:44.8181853Z             }
2026-06-10T22:49:44.8181938Z           ]
2026-06-10T22:49:44.8182030Z         },
2026-06-10T22:49:44.8182116Z         "int": {
2026-06-10T22:49:44.8182210Z           "complete": true,
2026-06-10T22:49:44.8182301Z           "evidence": [
2026-06-10T22:49:44.8182393Z             {
2026-06-10T22:49:44.8182619Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-10T22:49:44.8182725Z               "line": 13
2026-06-10T22:49:44.8182818Z             }
2026-06-10T22:49:44.8182903Z           ]
2026-06-10T22:49:44.8182994Z         },
2026-06-10T22:49:44.8183085Z         "unit": {
2026-06-10T22:49:44.8183185Z           "complete": false,
2026-06-10T22:49:44.8183279Z           "evidence": []
2026-06-10T22:49:44.8183366Z         }
2026-06-10T22:49:44.8183457Z       }
2026-06-10T22:49:44.8183542Z     },
2026-06-10T22:49:44.8183633Z     {
2026-06-10T22:49:44.8183728Z       "id": "REQ-REL-3",
2026-06-10T22:49:44.8184158Z       "title": "Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)",
2026-06-10T22:49:44.8184262Z       "requiredStages": [
2026-06-10T22:49:44.8184354Z         "impl",
2026-06-10T22:49:44.8184443Z         "unit"
2026-06-10T22:49:44.8184529Z       ],
2026-06-10T22:49:44.8184621Z       "stages": {
2026-06-10T22:49:44.8184720Z         "doc": {
2026-06-10T22:49:44.8184820Z           "complete": false,
2026-06-10T22:49:44.8184916Z           "evidence": []
2026-06-10T22:49:44.8185007Z         },
2026-06-10T22:49:44.8185096Z         "impl": {
2026-06-10T22:49:44.8185192Z           "complete": true,
2026-06-10T22:49:44.8185289Z           "evidence": [
2026-06-10T22:49:44.8185378Z             {
2026-06-10T22:49:44.8185515Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8185615Z               "line": 237
2026-06-10T22:49:44.8185702Z             },
2026-06-10T22:49:44.8185791Z             {
2026-06-10T22:49:44.8185916Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8186011Z               "line": 289
2026-06-10T22:49:44.8186102Z             },
2026-06-10T22:49:44.8186197Z             {
2026-06-10T22:49:44.8186326Z               "path": "crates/xtask/src/main.rs",
2026-06-10T22:49:44.8186416Z               "line": 329
2026-06-10T22:49:44.8186507Z             },
2026-06-10T22:49:44.8186603Z             {
2026-06-10T22:49:44.8186717Z               "path": "crates/xtask/src/main.rs",
2026-06-10T22:49:44.8186812Z               "line": 353
2026-06-10T22:49:44.8186904Z             },
2026-06-10T22:49:44.8186993Z             {
2026-06-10T22:49:44.8187103Z               "path": "crates/xtask/src/main.rs",
2026-06-10T22:49:44.8187195Z               "line": 394
2026-06-10T22:49:44.8187280Z             }
2026-06-10T22:49:44.8187370Z           ]
2026-06-10T22:49:44.8187456Z         },
2026-06-10T22:49:44.8187543Z         "int": {
2026-06-10T22:49:44.8187642Z           "complete": false,
2026-06-10T22:49:44.8187741Z           "evidence": []
2026-06-10T22:49:44.8187827Z         },
2026-06-10T22:49:44.8187917Z         "unit": {
2026-06-10T22:49:44.8188015Z           "complete": true,
2026-06-10T22:49:44.8188105Z           "evidence": [
2026-06-10T22:49:44.8188197Z             {
2026-06-10T22:49:44.8188320Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8188415Z               "line": 992
2026-06-10T22:49:44.8188507Z             },
2026-06-10T22:49:44.8188602Z             {
2026-06-10T22:49:44.8188725Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8188817Z               "line": 1051
2026-06-10T22:49:44.8188907Z             }
2026-06-10T22:49:44.8189050Z           ]
2026-06-10T22:49:44.8189132Z         }
2026-06-10T22:49:44.8189222Z       }
2026-06-10T22:49:44.8189307Z     },
2026-06-10T22:49:44.8189393Z     {
2026-06-10T22:49:44.8189504Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-10T22:49:44.8189694Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-10T22:49:44.8189898Z       "requiredStages": [
2026-06-10T22:49:44.8189989Z         "impl",
2026-06-10T22:49:44.8190081Z         "unit"
2026-06-10T22:49:44.8190171Z       ],
2026-06-10T22:49:44.8190261Z       "stages": {
2026-06-10T22:49:44.8190348Z         "doc": {
2026-06-10T22:49:44.8190449Z           "complete": false,
2026-06-10T22:49:44.8190542Z           "evidence": []
2026-06-10T22:49:44.8190722Z         },
2026-06-10T22:49:44.8190821Z         "impl": {
2026-06-10T22:49:44.8190920Z           "complete": true,
2026-06-10T22:49:44.8191016Z           "evidence": [
2026-06-10T22:49:44.8191102Z             {
2026-06-10T22:49:44.8191230Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-10T22:49:44.8191321Z               "line": 18
2026-06-10T22:49:44.8191407Z             },
2026-06-10T22:49:44.8191498Z             {
2026-06-10T22:49:44.8191611Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-10T22:49:44.8191704Z               "line": 35
2026-06-10T22:49:44.8191784Z             },
2026-06-10T22:49:44.8191874Z             {
2026-06-10T22:49:44.8192013Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-10T22:49:44.8192132Z               "line": 72
2026-06-10T22:49:44.8192227Z             }
2026-06-10T22:49:44.8192314Z           ]
2026-06-10T22:49:44.8192399Z         },
2026-06-10T22:49:44.8192489Z         "int": {
2026-06-10T22:49:44.8192600Z           "complete": false,
2026-06-10T22:49:44.8192695Z           "evidence": []
2026-06-10T22:49:44.8192789Z         },
2026-06-10T22:49:44.8192880Z         "unit": {
2026-06-10T22:49:44.8192977Z           "complete": true,
2026-06-10T22:49:44.8193118Z           "evidence": [
2026-06-10T22:49:44.8193203Z             {
2026-06-10T22:49:44.8193318Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-10T22:49:44.8193416Z               "line": 214
2026-06-10T22:49:44.8193501Z             },
2026-06-10T22:49:44.8193592Z             {
2026-06-10T22:49:44.8193703Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-10T22:49:44.8193807Z               "line": 231
2026-06-10T22:49:44.8193892Z             },
2026-06-10T22:49:44.8193989Z             {
2026-06-10T22:49:44.8194107Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-10T22:49:44.8194203Z               "line": 240
2026-06-10T22:49:44.8194293Z             }
2026-06-10T22:49:44.8194389Z           ]
2026-06-10T22:49:44.8194493Z         }
2026-06-10T22:49:44.8194585Z       }
2026-06-10T22:49:44.8194689Z     },
2026-06-10T22:49:44.8194779Z     {
2026-06-10T22:49:44.8194886Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-10T22:49:44.8195080Z       "title": "Hostable endpoint-types capability declaration",
2026-06-10T22:49:44.8195176Z       "requiredStages": [
2026-06-10T22:49:44.8195271Z         "impl",
2026-06-10T22:49:44.8195361Z         "unit"
2026-06-10T22:49:44.8195452Z       ],
2026-06-10T22:49:44.8195543Z       "stages": {
2026-06-10T22:49:44.8195632Z         "doc": {
2026-06-10T22:49:44.8195762Z           "complete": false,
2026-06-10T22:49:44.8195868Z           "evidence": []
2026-06-10T22:49:44.8195952Z         },
2026-06-10T22:49:44.8196056Z         "impl": {
2026-06-10T22:49:44.8196157Z           "complete": true,
2026-06-10T22:49:44.8196267Z           "evidence": [
2026-06-10T22:49:44.8196361Z             {
2026-06-10T22:49:44.8196495Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.8196581Z               "line": 404
2026-06-10T22:49:44.8196676Z             }
2026-06-10T22:49:44.8196762Z           ]
2026-06-10T22:49:44.8196867Z         },
2026-06-10T22:49:44.8196953Z         "int": {
2026-06-10T22:49:44.8197053Z           "complete": false,
2026-06-10T22:49:44.8197149Z           "evidence": []
2026-06-10T22:49:44.8197234Z         },
2026-06-10T22:49:44.8197324Z         "unit": {
2026-06-10T22:49:44.8197421Z           "complete": true,
2026-06-10T22:49:44.8197521Z           "evidence": [
2026-06-10T22:49:44.8197606Z             {
2026-06-10T22:49:44.8197731Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.8197915Z               "line": 641
2026-06-10T22:49:44.8198002Z             }
2026-06-10T22:49:44.8198093Z           ]
2026-06-10T22:49:44.8198183Z         }
2026-06-10T22:49:44.8198272Z       }
2026-06-10T22:49:44.8198358Z     },
2026-06-10T22:49:44.8198444Z     {
2026-06-10T22:49:44.8198552Z       "id": "REQ-SEAM-HISTORY",
2026-06-10T22:49:44.8198810Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-10T22:49:44.8198913Z       "requiredStages": [
2026-06-10T22:49:44.8199119Z         "impl",
2026-06-10T22:49:44.8199237Z         "unit",
2026-06-10T22:49:44.8199344Z         "int"
2026-06-10T22:49:44.8199439Z       ],
2026-06-10T22:49:44.8199534Z       "stages": {
2026-06-10T22:49:44.8199619Z         "doc": {
2026-06-10T22:49:44.8199721Z           "complete": false,
2026-06-10T22:49:44.8199816Z           "evidence": []
2026-06-10T22:49:44.8199905Z         },
2026-06-10T22:49:44.8199997Z         "impl": {
2026-06-10T22:49:44.8200110Z           "complete": true,
2026-06-10T22:49:44.8200206Z           "evidence": [
2026-06-10T22:49:44.8200303Z             {
2026-06-10T22:49:44.8200425Z               "path": "crates/spt-live/src/echo.rs",
2026-06-10T22:49:44.8200516Z               "line": 24
2026-06-10T22:49:44.8200613Z             },
2026-06-10T22:49:44.8200698Z             {
2026-06-10T22:49:44.8200835Z               "path": "crates/spt-live/src/history.rs",
2026-06-10T22:49:44.8200932Z               "line": 22
2026-06-10T22:49:44.8201018Z             }
2026-06-10T22:49:44.8201106Z           ]
2026-06-10T22:49:44.8201192Z         },
2026-06-10T22:49:44.8201282Z         "int": {
2026-06-10T22:49:44.8201377Z           "complete": true,
2026-06-10T22:49:44.8201475Z           "evidence": [
2026-06-10T22:49:44.8201567Z             {
2026-06-10T22:49:44.8201691Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-10T22:49:44.8201785Z               "line": 260
2026-06-10T22:49:44.8201876Z             }
2026-06-10T22:49:44.8201977Z           ]
2026-06-10T22:49:44.8202053Z         },
2026-06-10T22:49:44.8202148Z         "unit": {
2026-06-10T22:49:44.8202249Z           "complete": true,
2026-06-10T22:49:44.8202339Z           "evidence": [
2026-06-10T22:49:44.8202429Z             {
2026-06-10T22:49:44.8202540Z               "path": "crates/spt-live/src/echo.rs",
2026-06-10T22:49:44.8202639Z               "line": 167
2026-06-10T22:49:44.8202725Z             },
2026-06-10T22:49:44.8202825Z             {
2026-06-10T22:49:44.8202950Z               "path": "crates/spt-live/src/echo.rs",
2026-06-10T22:49:44.8203045Z               "line": 196
2026-06-10T22:49:44.8203130Z             },
2026-06-10T22:49:44.8203213Z             {
2026-06-10T22:49:44.8203320Z               "path": "crates/spt-live/src/echo.rs",
2026-06-10T22:49:44.8203417Z               "line": 216
2026-06-10T22:49:44.8203508Z             },
2026-06-10T22:49:44.8203598Z             {
2026-06-10T22:49:44.8203711Z               "path": "crates/spt-live/src/history.rs",
2026-06-10T22:49:44.8203811Z               "line": 199
2026-06-10T22:49:44.8203892Z             },
2026-06-10T22:49:44.8203976Z             {
2026-06-10T22:49:44.8204085Z               "path": "crates/spt-live/src/history.rs",
2026-06-10T22:49:44.8204186Z               "line": 219
2026-06-10T22:49:44.8204267Z             },
2026-06-10T22:49:44.8204352Z             {
2026-06-10T22:49:44.8204477Z               "path": "crates/spt-live/src/history.rs",
2026-06-10T22:49:44.8204558Z               "line": 244
2026-06-10T22:49:44.8204648Z             },
2026-06-10T22:49:44.8204733Z             {
2026-06-10T22:49:44.8204844Z               "path": "crates/spt-live/src/history.rs",
2026-06-10T22:49:44.8204930Z               "line": 269
2026-06-10T22:49:44.8205020Z             },
2026-06-10T22:49:44.8205102Z             {
2026-06-10T22:49:44.8205220Z               "path": "crates/spt-live/src/history.rs",
2026-06-10T22:49:44.8205315Z               "line": 290
2026-06-10T22:49:44.8205397Z             },
2026-06-10T22:49:44.8205611Z             {
2026-06-10T22:49:44.8205731Z               "path": "crates/spt-live/src/history.rs",
2026-06-10T22:49:44.8205826Z               "line": 317
2026-06-10T22:49:44.8205916Z             }
2026-06-10T22:49:44.8206007Z           ]
2026-06-10T22:49:44.8206104Z         }
2026-06-10T22:49:44.8206188Z       }
2026-06-10T22:49:44.8206269Z     },
2026-06-10T22:49:44.8206356Z     {
2026-06-10T22:49:44.8206555Z       "id": "REQ-SEAM-INJECT",
2026-06-10T22:49:44.8206727Z       "title": "inject-input methods configurable per activity-state",
2026-06-10T22:49:44.8206822Z       "requiredStages": [
2026-06-10T22:49:44.8206917Z         "impl",
2026-06-10T22:49:44.8207007Z         "unit"
2026-06-10T22:49:44.8207099Z       ],
2026-06-10T22:49:44.8207198Z       "stages": {
2026-06-10T22:49:44.8207288Z         "doc": {
2026-06-10T22:49:44.8207389Z           "complete": false,
2026-06-10T22:49:44.8207485Z           "evidence": []
2026-06-10T22:49:44.8207570Z         },
2026-06-10T22:49:44.8207661Z         "impl": {
2026-06-10T22:49:44.8207761Z           "complete": true,
2026-06-10T22:49:44.8207861Z           "evidence": [
2026-06-10T22:49:44.8207947Z             {
2026-06-10T22:49:44.8208071Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-10T22:49:44.8208157Z               "line": 19
2026-06-10T22:49:44.8208252Z             },
2026-06-10T22:49:44.8208339Z             {
2026-06-10T22:49:44.8208466Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-10T22:49:44.8208567Z               "line": 111
2026-06-10T22:49:44.8208649Z             }
2026-06-10T22:49:44.8208733Z           ]
2026-06-10T22:49:44.8208818Z         },
2026-06-10T22:49:44.8208904Z         "int": {
2026-06-10T22:49:44.8209065Z           "complete": false,
2026-06-10T22:49:44.8209164Z           "evidence": []
2026-06-10T22:49:44.8209260Z         },
2026-06-10T22:49:44.8209342Z         "unit": {
2026-06-10T22:49:44.8209446Z           "complete": true,
2026-06-10T22:49:44.8209541Z           "evidence": [
2026-06-10T22:49:44.8209642Z             {
2026-06-10T22:49:44.8209751Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-10T22:49:44.8209850Z               "line": 320
2026-06-10T22:49:44.8209932Z             },
2026-06-10T22:49:44.8210018Z             {
2026-06-10T22:49:44.8210136Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-10T22:49:44.8210219Z               "line": 340
2026-06-10T22:49:44.8210309Z             }
2026-06-10T22:49:44.8210399Z           ]
2026-06-10T22:49:44.8210490Z         }
2026-06-10T22:49:44.8210581Z       }
2026-06-10T22:49:44.8210666Z     },
2026-06-10T22:49:44.8210757Z     {
2026-06-10T22:49:44.8210863Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-10T22:49:44.8210991Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-10T22:49:44.8211086Z       "requiredStages": [
2026-06-10T22:49:44.8211183Z         "impl",
2026-06-10T22:49:44.8211272Z         "unit"
2026-06-10T22:49:44.8211362Z       ],
2026-06-10T22:49:44.8211454Z       "stages": {
2026-06-10T22:49:44.8211549Z         "doc": {
2026-06-10T22:49:44.8211648Z           "complete": false,
2026-06-10T22:49:44.8211733Z           "evidence": []
2026-06-10T22:49:44.8211824Z         },
2026-06-10T22:49:44.8211918Z         "impl": {
2026-06-10T22:49:44.8212012Z           "complete": true,
2026-06-10T22:49:44.8212107Z           "evidence": [
2026-06-10T22:49:44.8212189Z             {
2026-06-10T22:49:44.8212308Z               "path": "crates/spt/src/api/startup.rs",
2026-06-10T22:49:44.8212403Z               "line": 18
2026-06-10T22:49:44.8212490Z             },
2026-06-10T22:49:44.8212590Z             {
2026-06-10T22:49:44.8212703Z               "path": "crates/spt/src/api/startup.rs",
2026-06-10T22:49:44.8212800Z               "line": 309
2026-06-10T22:49:44.8212880Z             }
2026-06-10T22:49:44.8212975Z           ]
2026-06-10T22:49:44.8213066Z         },
2026-06-10T22:49:44.8213157Z         "int": {
2026-06-10T22:49:44.8213252Z           "complete": false,
2026-06-10T22:49:44.8213347Z           "evidence": []
2026-06-10T22:49:44.8213538Z         },
2026-06-10T22:49:44.8213628Z         "unit": {
2026-06-10T22:49:44.8213735Z           "complete": true,
2026-06-10T22:49:44.8213825Z           "evidence": [
2026-06-10T22:49:44.8213914Z             {
2026-06-10T22:49:44.8214030Z               "path": "crates/spt/src/api/startup.rs",
2026-06-10T22:49:44.8214130Z               "line": 559
2026-06-10T22:49:44.8214219Z             },
2026-06-10T22:49:44.8214395Z             {
2026-06-10T22:49:44.8214513Z               "path": "crates/spt/src/api/startup.rs",
2026-06-10T22:49:44.8214612Z               "line": 569
2026-06-10T22:49:44.8214703Z             }
2026-06-10T22:49:44.8214794Z           ]
2026-06-10T22:49:44.8214879Z         }
2026-06-10T22:49:44.8214974Z       }
2026-06-10T22:49:44.8215057Z     },
2026-06-10T22:49:44.8215147Z     {
2026-06-10T22:49:44.8215236Z       "id": "REQ-SEAM-PSYCHE",
2026-06-10T22:49:44.8215386Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-10T22:49:44.8215486Z       "requiredStages": [
2026-06-10T22:49:44.8215575Z         "impl",
2026-06-10T22:49:44.8215667Z         "unit",
2026-06-10T22:49:44.8215752Z         "int"
2026-06-10T22:49:44.8215833Z       ],
2026-06-10T22:49:44.8215928Z       "stages": {
2026-06-10T22:49:44.8216025Z         "doc": {
2026-06-10T22:49:44.8216119Z           "complete": false,
2026-06-10T22:49:44.8216205Z           "evidence": []
2026-06-10T22:49:44.8216296Z         },
2026-06-10T22:49:44.8216391Z         "impl": {
2026-06-10T22:49:44.8216486Z           "complete": true,
2026-06-10T22:49:44.8216582Z           "evidence": [
2026-06-10T22:49:44.8216674Z             {
2026-06-10T22:49:44.8216791Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-10T22:49:44.8216887Z               "line": 19
2026-06-10T22:49:44.8216979Z             },
2026-06-10T22:49:44.8217063Z             {
2026-06-10T22:49:44.8217186Z               "path": "crates/spt/src/api/live.rs",
2026-06-10T22:49:44.8217277Z               "line": 12
2026-06-10T22:49:44.8217364Z             },
2026-06-10T22:49:44.8217462Z             {
2026-06-10T22:49:44.8217577Z               "path": "crates/spt/src/api/startup.rs",
2026-06-10T22:49:44.8217678Z               "line": 209
2026-06-10T22:49:44.8217763Z             }
2026-06-10T22:49:44.8217853Z           ]
2026-06-10T22:49:44.8217941Z         },
2026-06-10T22:49:44.8218036Z         "int": {
2026-06-10T22:49:44.8218135Z           "complete": true,
2026-06-10T22:49:44.8218231Z           "evidence": [
2026-06-10T22:49:44.8218312Z             {
2026-06-10T22:49:44.8218440Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-10T22:49:44.8218536Z               "line": 259
2026-06-10T22:49:44.8218627Z             }
2026-06-10T22:49:44.8218707Z           ]
2026-06-10T22:49:44.8218802Z         },
2026-06-10T22:49:44.8218899Z         "unit": {
2026-06-10T22:49:44.8219103Z           "complete": true,
2026-06-10T22:49:44.8219195Z           "evidence": [
2026-06-10T22:49:44.8219289Z             {
2026-06-10T22:49:44.8219407Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-10T22:49:44.8219512Z               "line": 161
2026-06-10T22:49:44.8219611Z             },
2026-06-10T22:49:44.8219696Z             {
2026-06-10T22:49:44.8219815Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-10T22:49:44.8219906Z               "line": 168
2026-06-10T22:49:44.8219991Z             },
2026-06-10T22:49:44.8220076Z             {
2026-06-10T22:49:44.8220197Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-10T22:49:44.8220287Z               "line": 191
2026-06-10T22:49:44.8220382Z             },
2026-06-10T22:49:44.8220469Z             {
2026-06-10T22:49:44.8220583Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-10T22:49:44.8220683Z               "line": 106
2026-06-10T22:49:44.8220764Z             },
2026-06-10T22:49:44.8220855Z             {
2026-06-10T22:49:44.8220969Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-10T22:49:44.8221059Z               "line": 137
2026-06-10T22:49:44.8221255Z             },
2026-06-10T22:49:44.8221345Z             {
2026-06-10T22:49:44.8221470Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-10T22:49:44.8221565Z               "line": 161
2026-06-10T22:49:44.8221651Z             }
2026-06-10T22:49:44.8221743Z           ]
2026-06-10T22:49:44.8221828Z         }
2026-06-10T22:49:44.8221917Z       }
2026-06-10T22:49:44.8222004Z     },
2026-06-10T22:49:44.8222166Z     {
2026-06-10T22:49:44.8222274Z       "id": "REQ-SEAM-RESUME",
2026-06-10T22:49:44.8222460Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-10T22:49:44.8222558Z       "requiredStages": [
2026-06-10T22:49:44.8222648Z         "impl",
2026-06-10T22:49:44.8222739Z         "unit"
2026-06-10T22:49:44.8222831Z       ],
2026-06-10T22:49:44.8222924Z       "stages": {
2026-06-10T22:49:44.8223016Z         "doc": {
2026-06-10T22:49:44.8223117Z           "complete": false,
2026-06-10T22:49:44.8223211Z           "evidence": []
2026-06-10T22:49:44.8223297Z         },
2026-06-10T22:49:44.8223393Z         "impl": {
2026-06-10T22:49:44.8223489Z           "complete": true,
2026-06-10T22:49:44.8223587Z           "evidence": [
2026-06-10T22:49:44.8223679Z             {
2026-06-10T22:49:44.8223793Z               "path": "crates/spt-live/src/resume.rs",
2026-06-10T22:49:44.8223888Z               "line": 19
2026-06-10T22:49:44.8223975Z             }
2026-06-10T22:49:44.8224070Z           ]
2026-06-10T22:49:44.8224160Z         },
2026-06-10T22:49:44.8224246Z         "int": {
2026-06-10T22:49:44.8224342Z           "complete": false,
2026-06-10T22:49:44.8224437Z           "evidence": []
2026-06-10T22:49:44.8224527Z         },
2026-06-10T22:49:44.8224605Z         "unit": {
2026-06-10T22:49:44.8224700Z           "complete": true,
2026-06-10T22:49:44.8224798Z           "evidence": [
2026-06-10T22:49:44.8224902Z             {
2026-06-10T22:49:44.8225027Z               "path": "crates/spt-live/src/resume.rs",
2026-06-10T22:49:44.8225115Z               "line": 179
2026-06-10T22:49:44.8225215Z             },
2026-06-10T22:49:44.8225306Z             {
2026-06-10T22:49:44.8225421Z               "path": "crates/spt-live/src/resume.rs",
2026-06-10T22:49:44.8225515Z               "line": 201
2026-06-10T22:49:44.8225612Z             },
2026-06-10T22:49:44.8225702Z             {
2026-06-10T22:49:44.8225816Z               "path": "crates/spt-live/src/resume.rs",
2026-06-10T22:49:44.8225917Z               "line": 222
2026-06-10T22:49:44.8226007Z             }
2026-06-10T22:49:44.8226097Z           ]
2026-06-10T22:49:44.8226188Z         }
2026-06-10T22:49:44.8226280Z       }
2026-06-10T22:49:44.8226374Z     },
2026-06-10T22:49:44.8226464Z     {
2026-06-10T22:49:44.8226575Z       "id": "REQ-SEAM-SPAWN",
2026-06-10T22:49:44.8226679Z       "title": "spawn-session seam",
2026-06-10T22:49:44.8226789Z       "requiredStages": [
2026-06-10T22:49:44.8229348Z         "impl",
2026-06-10T22:49:44.8229459Z         "unit"
2026-06-10T22:49:44.8229558Z       ],
2026-06-10T22:49:44.8229653Z       "stages": {
2026-06-10T22:49:44.8229760Z         "doc": {
2026-06-10T22:49:44.8229863Z           "complete": false,
2026-06-10T22:49:44.8229962Z           "evidence": []
2026-06-10T22:49:44.8230053Z         },
2026-06-10T22:49:44.8230148Z         "impl": {
2026-06-10T22:49:44.8230251Z           "complete": true,
2026-06-10T22:49:44.8230351Z           "evidence": [
2026-06-10T22:49:44.8230442Z             {
2026-06-10T22:49:44.8230585Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-10T22:49:44.8230685Z               "line": 20
2026-06-10T22:49:44.8230776Z             }
2026-06-10T22:49:44.8230876Z           ]
2026-06-10T22:49:44.8230965Z         },
2026-06-10T22:49:44.8231053Z         "int": {
2026-06-10T22:49:44.8231153Z           "complete": false,
2026-06-10T22:49:44.8231252Z           "evidence": []
2026-06-10T22:49:44.8231339Z         },
2026-06-10T22:49:44.8231429Z         "unit": {
2026-06-10T22:49:44.8231524Z           "complete": true,
2026-06-10T22:49:44.8231619Z           "evidence": [
2026-06-10T22:49:44.8231843Z             {
2026-06-10T22:49:44.8231973Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-10T22:49:44.8232068Z               "line": 435
2026-06-10T22:49:44.8232158Z             },
2026-06-10T22:49:44.8232249Z             {
2026-06-10T22:49:44.8232374Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-10T22:49:44.8232463Z               "line": 442
2026-06-10T22:49:44.8232646Z             },
2026-06-10T22:49:44.8232745Z             {
2026-06-10T22:49:44.8232862Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-10T22:49:44.8232959Z               "line": 452
2026-06-10T22:49:44.8233048Z             },
2026-06-10T22:49:44.8233138Z             {
2026-06-10T22:49:44.8233261Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-10T22:49:44.8233353Z               "line": 458
2026-06-10T22:49:44.8233447Z             },
2026-06-10T22:49:44.8233538Z             {
2026-06-10T22:49:44.8233663Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-10T22:49:44.8233762Z               "line": 483
2026-06-10T22:49:44.8233852Z             },
2026-06-10T22:49:44.8233944Z             {
2026-06-10T22:49:44.8234058Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-10T22:49:44.8234157Z               "line": 520
2026-06-10T22:49:44.8234245Z             }
2026-06-10T22:49:44.8234334Z           ]
2026-06-10T22:49:44.8234430Z         }
2026-06-10T22:49:44.8234525Z       }
2026-06-10T22:49:44.8234621Z     },
2026-06-10T22:49:44.8234705Z     {
2026-06-10T22:49:44.8234816Z       "id": "REQ-SEAM-UPDATE",
2026-06-10T22:49:44.8234987Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-10T22:49:44.8235092Z       "requiredStages": [
2026-06-10T22:49:44.8235170Z         "impl",
2026-06-10T22:49:44.8235260Z         "unit"
2026-06-10T22:49:44.8235349Z       ],
2026-06-10T22:49:44.8235444Z       "stages": {
2026-06-10T22:49:44.8235534Z         "doc": {
2026-06-10T22:49:44.8235633Z           "complete": false,
2026-06-10T22:49:44.8235732Z           "evidence": []
2026-06-10T22:49:44.8235823Z         },
2026-06-10T22:49:44.8235914Z         "impl": {
2026-06-10T22:49:44.8236000Z           "complete": true,
2026-06-10T22:49:44.8236095Z           "evidence": [
2026-06-10T22:49:44.8236186Z             {
2026-06-10T22:49:44.8236324Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-10T22:49:44.8236424Z               "line": 28
2026-06-10T22:49:44.8236515Z             },
2026-06-10T22:49:44.8236606Z             {
2026-06-10T22:49:44.8236739Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-10T22:49:44.8236830Z               "line": 83
2026-06-10T22:49:44.8236924Z             }
2026-06-10T22:49:44.8237010Z           ]
2026-06-10T22:49:44.8237092Z         },
2026-06-10T22:49:44.8237173Z         "int": {
2026-06-10T22:49:44.8237268Z           "complete": false,
2026-06-10T22:49:44.8237363Z           "evidence": []
2026-06-10T22:49:44.8237450Z         },
2026-06-10T22:49:44.8237545Z         "unit": {
2026-06-10T22:49:44.8237640Z           "complete": true,
2026-06-10T22:49:44.8237737Z           "evidence": [
2026-06-10T22:49:44.8237827Z             {
2026-06-10T22:49:44.8237959Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-10T22:49:44.8238061Z               "line": 286
2026-06-10T22:49:44.8238151Z             },
2026-06-10T22:49:44.8238239Z             {
2026-06-10T22:49:44.8238364Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-10T22:49:44.8238459Z               "line": 297
2026-06-10T22:49:44.8238545Z             }
2026-06-10T22:49:44.8238635Z           ]
2026-06-10T22:49:44.8238731Z         }
2026-06-10T22:49:44.8238822Z       }
2026-06-10T22:49:44.8238911Z     },
2026-06-10T22:49:44.8239075Z     {
2026-06-10T22:49:44.8239189Z       "id": "REQ-SEC-1",
2026-06-10T22:49:44.8239574Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-10T22:49:44.8239799Z       "requiredStages": [
2026-06-10T22:49:44.8239894Z         "impl",
2026-06-10T22:49:44.8239981Z         "unit"
2026-06-10T22:49:44.8240071Z       ],
2026-06-10T22:49:44.8240161Z       "stages": {
2026-06-10T22:49:44.8240252Z         "doc": {
2026-06-10T22:49:44.8240349Z           "complete": false,
2026-06-10T22:49:44.8240447Z           "evidence": []
2026-06-10T22:49:44.8240618Z         },
2026-06-10T22:49:44.8240713Z         "impl": {
2026-06-10T22:49:44.8240811Z           "complete": true,
2026-06-10T22:49:44.8240896Z           "evidence": [
2026-06-10T22:49:44.8240988Z             {
2026-06-10T22:49:44.8241111Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-10T22:49:44.8241211Z               "line": 84
2026-06-10T22:49:44.8241308Z             },
2026-06-10T22:49:44.8241389Z             {
2026-06-10T22:49:44.8241507Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-10T22:49:44.8241599Z               "line": 114
2026-06-10T22:49:44.8241703Z             },
2026-06-10T22:49:44.8241783Z             {
2026-06-10T22:49:44.8241909Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-10T22:49:44.8242008Z               "line": 128
2026-06-10T22:49:44.8242094Z             },
2026-06-10T22:49:44.8242179Z             {
2026-06-10T22:49:44.8242304Z               "path": "crates/spt-store/src/access.rs",
2026-06-10T22:49:44.8242413Z               "line": 108
2026-06-10T22:49:44.8242499Z             },
2026-06-10T22:49:44.8242582Z             {
2026-06-10T22:49:44.8242699Z               "path": "crates/spt-store/src/access.rs",
2026-06-10T22:49:44.8242785Z               "line": 129
2026-06-10T22:49:44.8242877Z             },
2026-06-10T22:49:44.8242966Z             {
2026-06-10T22:49:44.8243086Z               "path": "crates/spt-store/src/access.rs",
2026-06-10T22:49:44.8243177Z               "line": 142
2026-06-10T22:49:44.8243272Z             },
2026-06-10T22:49:44.8243357Z             {
2026-06-10T22:49:44.8243466Z               "path": "crates/spt-store/src/access.rs",
2026-06-10T22:49:44.8243561Z               "line": 208
2026-06-10T22:49:44.8243645Z             },
2026-06-10T22:49:44.8243740Z             {
2026-06-10T22:49:44.8243860Z               "path": "crates/spt-store/src/access.rs",
2026-06-10T22:49:44.8243946Z               "line": 234
2026-06-10T22:49:44.8244026Z             },
2026-06-10T22:49:44.8244107Z             {
2026-06-10T22:49:44.8244227Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8244322Z               "line": 4065
2026-06-10T22:49:44.8244402Z             }
2026-06-10T22:49:44.8244485Z           ]
2026-06-10T22:49:44.8244566Z         },
2026-06-10T22:49:44.8244655Z         "int": {
2026-06-10T22:49:44.8244752Z           "complete": false,
2026-06-10T22:49:44.8244847Z           "evidence": []
2026-06-10T22:49:44.8244923Z         },
2026-06-10T22:49:44.8245018Z         "unit": {
2026-06-10T22:49:44.8245115Z           "complete": true,
2026-06-10T22:49:44.8245209Z           "evidence": [
2026-06-10T22:49:44.8245304Z             {
2026-06-10T22:49:44.8245425Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-10T22:49:44.8245524Z               "line": 140
2026-06-10T22:49:44.8245604Z             },
2026-06-10T22:49:44.8245696Z             {
2026-06-10T22:49:44.8245820Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-10T22:49:44.8245910Z               "line": 192
2026-06-10T22:49:44.8246009Z             },
2026-06-10T22:49:44.8246095Z             {
2026-06-10T22:49:44.8246212Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-10T22:49:44.8246297Z               "line": 233
2026-06-10T22:49:44.8246379Z             },
2026-06-10T22:49:44.8246470Z             {
2026-06-10T22:49:44.8246593Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-10T22:49:44.8246713Z               "line": 138
2026-06-10T22:49:44.8246799Z             },
2026-06-10T22:49:44.8246898Z             {
2026-06-10T22:49:44.8247008Z               "path": "crates/spt-store/src/access.rs",
2026-06-10T22:49:44.8247180Z               "line": 246
2026-06-10T22:49:44.8247270Z             },
2026-06-10T22:49:44.8247348Z             {
2026-06-10T22:49:44.8247466Z               "path": "crates/spt-store/src/access.rs",
2026-06-10T22:49:44.8247551Z               "line": 276
2026-06-10T22:49:44.8247642Z             },
2026-06-10T22:49:44.8247724Z             {
2026-06-10T22:49:44.8247909Z               "path": "crates/spt-store/src/access.rs",
2026-06-10T22:49:44.8248010Z               "line": 309
2026-06-10T22:49:44.8248090Z             },
2026-06-10T22:49:44.8248177Z             {
2026-06-10T22:49:44.8248292Z               "path": "crates/spt-store/src/access.rs",
2026-06-10T22:49:44.8248387Z               "line": 328
2026-06-10T22:49:44.8248462Z             },
2026-06-10T22:49:44.8248553Z             {
2026-06-10T22:49:44.8248664Z               "path": "crates/spt-store/src/access.rs",
2026-06-10T22:49:44.8248753Z               "line": 361
2026-06-10T22:49:44.8248843Z             },
2026-06-10T22:49:44.8248933Z             {
2026-06-10T22:49:44.8249129Z               "path": "crates/spt-store/src/access.rs",
2026-06-10T22:49:44.8249233Z               "line": 385
2026-06-10T22:49:44.8249316Z             },
2026-06-10T22:49:44.8249402Z             {
2026-06-10T22:49:44.8249505Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8249602Z               "line": 5650
2026-06-10T22:49:44.8249692Z             }
2026-06-10T22:49:44.8249773Z           ]
2026-06-10T22:49:44.8249854Z         }
2026-06-10T22:49:44.8249940Z       }
2026-06-10T22:49:44.8250030Z     },
2026-06-10T22:49:44.8250111Z     {
2026-06-10T22:49:44.8250207Z       "id": "REQ-SHELL-1",
2026-06-10T22:49:44.8251054Z       "title": "Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)",
2026-06-10T22:49:44.8251159Z       "requiredStages": [
2026-06-10T22:49:44.8251250Z         "impl",
2026-06-10T22:49:44.8251334Z         "unit",
2026-06-10T22:49:44.8251424Z         "int"
2026-06-10T22:49:44.8251514Z       ],
2026-06-10T22:49:44.8251606Z       "stages": {
2026-06-10T22:49:44.8251700Z         "doc": {
2026-06-10T22:49:44.8251796Z           "complete": false,
2026-06-10T22:49:44.8251901Z           "evidence": []
2026-06-10T22:49:44.8251987Z         },
2026-06-10T22:49:44.8252105Z         "impl": {
2026-06-10T22:49:44.8252202Z           "complete": true,
2026-06-10T22:49:44.8252297Z           "evidence": [
2026-06-10T22:49:44.8252382Z             {
2026-06-10T22:49:44.8252517Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-10T22:49:44.8252617Z               "line": 94
2026-06-10T22:49:44.8252701Z             },
2026-06-10T22:49:44.8252793Z             {
2026-06-10T22:49:44.8252916Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-10T22:49:44.8253021Z               "line": 119
2026-06-10T22:49:44.8253108Z             },
2026-06-10T22:49:44.8253202Z             {
2026-06-10T22:49:44.8253336Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-10T22:49:44.8253427Z               "line": 27
2026-06-10T22:49:44.8253517Z             },
2026-06-10T22:49:44.8253608Z             {
2026-06-10T22:49:44.8253737Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-10T22:49:44.8253832Z               "line": 52
2026-06-10T22:49:44.8253931Z             },
2026-06-10T22:49:44.8254021Z             {
2026-06-10T22:49:44.8254145Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-10T22:49:44.8254243Z               "line": 132
2026-06-10T22:49:44.8254333Z             },
2026-06-10T22:49:44.8254425Z             {
2026-06-10T22:49:44.8254543Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-10T22:49:44.8254638Z               "line": 164
2026-06-10T22:49:44.8254726Z             },
2026-06-10T22:49:44.8254915Z             {
2026-06-10T22:49:44.8255036Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-10T22:49:44.8255130Z               "line": 22
2026-06-10T22:49:44.8255225Z             },
2026-06-10T22:49:44.8255316Z             {
2026-06-10T22:49:44.8255435Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-10T22:49:44.8255535Z               "line": 65
2026-06-10T22:49:44.8255722Z             },
2026-06-10T22:49:44.8255816Z             {
2026-06-10T22:49:44.8255936Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-10T22:49:44.8256033Z               "line": 76
2026-06-10T22:49:44.8256126Z             },
2026-06-10T22:49:44.8256213Z             {
2026-06-10T22:49:44.8256338Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-10T22:49:44.8256432Z               "line": 150
2026-06-10T22:49:44.8256521Z             },
2026-06-10T22:49:44.8256607Z             {
2026-06-10T22:49:44.8256730Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-10T22:49:44.8256834Z               "line": 209
2026-06-10T22:49:44.8256919Z             },
2026-06-10T22:49:44.8257006Z             {
2026-06-10T22:49:44.8257125Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-10T22:49:44.8257220Z               "line": 246
2026-06-10T22:49:44.8257311Z             },
2026-06-10T22:49:44.8257397Z             {
2026-06-10T22:49:44.8257530Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-10T22:49:44.8257621Z               "line": 267
2026-06-10T22:49:44.8257712Z             },
2026-06-10T22:49:44.8257797Z             {
2026-06-10T22:49:44.8257922Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-10T22:49:44.8258012Z               "line": 280
2026-06-10T22:49:44.8258111Z             },
2026-06-10T22:49:44.8258203Z             {
2026-06-10T22:49:44.8258322Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.8258417Z               "line": 207
2026-06-10T22:49:44.8258503Z             },
2026-06-10T22:49:44.8258608Z             {
2026-06-10T22:49:44.8258727Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.8258828Z               "line": 223
2026-06-10T22:49:44.8258914Z             },
2026-06-10T22:49:44.8259085Z             {
2026-06-10T22:49:44.8259210Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-10T22:49:44.8259322Z               "line": 41
2026-06-10T22:49:44.8259417Z             },
2026-06-10T22:49:44.8259503Z             {
2026-06-10T22:49:44.8259623Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-10T22:49:44.8259717Z               "line": 204
2026-06-10T22:49:44.8259803Z             },
2026-06-10T22:49:44.8259895Z             {
2026-06-10T22:49:44.8260013Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-10T22:49:44.8260104Z               "line": 156
2026-06-10T22:49:44.8260200Z             },
2026-06-10T22:49:44.8260286Z             {
2026-06-10T22:49:44.8260399Z               "path": "crates/spt/src/api/mod.rs",
2026-06-10T22:49:44.8260495Z               "line": 295
2026-06-10T22:49:44.8260590Z             },
2026-06-10T22:49:44.8260681Z             {
2026-06-10T22:49:44.8260792Z               "path": "crates/spt/src/api/mod.rs",
2026-06-10T22:49:44.8260886Z               "line": 345
2026-06-10T22:49:44.8260972Z             },
2026-06-10T22:49:44.8261063Z             {
2026-06-10T22:49:44.8261187Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.8261286Z               "line": 261
2026-06-10T22:49:44.8261373Z             },
2026-06-10T22:49:44.8261469Z             {
2026-06-10T22:49:44.8261586Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8261681Z               "line": 4563
2026-06-10T22:49:44.8261771Z             },
2026-06-10T22:49:44.8261857Z             {
2026-06-10T22:49:44.8261965Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8262061Z               "line": 4713
2026-06-10T22:49:44.8262146Z             },
2026-06-10T22:49:44.8262341Z             {
2026-06-10T22:49:44.8262443Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8262542Z               "line": 4750
2026-06-10T22:49:44.8262622Z             }
2026-06-10T22:49:44.8262700Z           ]
2026-06-10T22:49:44.8262781Z         },
2026-06-10T22:49:44.8262866Z         "int": {
2026-06-10T22:49:44.8262966Z           "complete": true,
2026-06-10T22:49:44.8263167Z           "evidence": [
2026-06-10T22:49:44.8263261Z             {
2026-06-10T22:49:44.8263391Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-10T22:49:44.8263486Z               "line": 706
2026-06-10T22:49:44.8263567Z             },
2026-06-10T22:49:44.8263659Z             {
2026-06-10T22:49:44.8263795Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-10T22:49:44.8263886Z               "line": 8
2026-06-10T22:49:44.8263978Z             },
2026-06-10T22:49:44.8264069Z             {
2026-06-10T22:49:44.8264201Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-10T22:49:44.8264298Z               "line": 49
2026-06-10T22:49:44.8264388Z             },
2026-06-10T22:49:44.8264477Z             {
2026-06-10T22:49:44.8264601Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.8264696Z               "line": 708
2026-06-10T22:49:44.8264794Z             },
2026-06-10T22:49:44.8264879Z             {
2026-06-10T22:49:44.8265009Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.8265113Z               "line": 1118
2026-06-10T22:49:44.8265203Z             },
2026-06-10T22:49:44.8265291Z             {
2026-06-10T22:49:44.8265419Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-10T22:49:44.8265509Z               "line": 17
2026-06-10T22:49:44.8265601Z             },
2026-06-10T22:49:44.8265686Z             {
2026-06-10T22:49:44.8265809Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-10T22:49:44.8265901Z               "line": 14
2026-06-10T22:49:44.8265986Z             }
2026-06-10T22:49:44.8266086Z           ]
2026-06-10T22:49:44.8266172Z         },
2026-06-10T22:49:44.8266264Z         "unit": {
2026-06-10T22:49:44.8266362Z           "complete": true,
2026-06-10T22:49:44.8266458Z           "evidence": [
2026-06-10T22:49:44.8266550Z             {
2026-06-10T22:49:44.8266672Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-10T22:49:44.8266778Z               "line": 234
2026-06-10T22:49:44.8266864Z             },
2026-06-10T22:49:44.8266959Z             {
2026-06-10T22:49:44.8267086Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-10T22:49:44.8267186Z               "line": 267
2026-06-10T22:49:44.8267276Z             },
2026-06-10T22:49:44.8267361Z             {
2026-06-10T22:49:44.8267485Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-10T22:49:44.8267576Z               "line": 307
2026-06-10T22:49:44.8267666Z             },
2026-06-10T22:49:44.8267756Z             {
2026-06-10T22:49:44.8267876Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-10T22:49:44.8267971Z               "line": 519
2026-06-10T22:49:44.8268066Z             },
2026-06-10T22:49:44.8268158Z             {
2026-06-10T22:49:44.8268277Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-10T22:49:44.8268376Z               "line": 592
2026-06-10T22:49:44.8268468Z             },
2026-06-10T22:49:44.8268562Z             {
2026-06-10T22:49:44.8268686Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-10T22:49:44.8268777Z               "line": 736
2026-06-10T22:49:44.8268867Z             },
2026-06-10T22:49:44.8269048Z             {
2026-06-10T22:49:44.8269168Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.8269273Z               "line": 585
2026-06-10T22:49:44.8269363Z             },
2026-06-10T22:49:44.8269451Z             {
2026-06-10T22:49:44.8269573Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-10T22:49:44.8269669Z               "line": 352
2026-06-10T22:49:44.8269859Z             },
2026-06-10T22:49:44.8269949Z             {
2026-06-10T22:49:44.8270068Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8270155Z               "line": 5998
2026-06-10T22:49:44.8270249Z             },
2026-06-10T22:49:44.8270335Z             {
2026-06-10T22:49:44.8270445Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8270635Z               "line": 6320
2026-06-10T22:49:44.8270732Z             },
2026-06-10T22:49:44.8270822Z             {
2026-06-10T22:49:44.8270931Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8271027Z               "line": 6686
2026-06-10T22:49:44.8271117Z             }
2026-06-10T22:49:44.8271208Z           ]
2026-06-10T22:49:44.8271293Z         }
2026-06-10T22:49:44.8271385Z       }
2026-06-10T22:49:44.8271480Z     },
2026-06-10T22:49:44.8271570Z     {
2026-06-10T22:49:44.8271672Z       "id": "REQ-SHELL-2",
2026-06-10T22:49:44.8273206Z       "title": "Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)",
2026-06-10T22:49:44.8273322Z       "requiredStages": [
2026-06-10T22:49:44.8273417Z         "impl",
2026-06-10T22:49:44.8273507Z         "unit",
2026-06-10T22:49:44.8273599Z         "int"
2026-06-10T22:49:44.8273684Z       ],
2026-06-10T22:49:44.8273784Z       "stages": {
2026-06-10T22:49:44.8273874Z         "doc": {
2026-06-10T22:49:44.8273985Z           "complete": false,
2026-06-10T22:49:44.8274089Z           "evidence": []
2026-06-10T22:49:44.8274180Z         },
2026-06-10T22:49:44.8274271Z         "impl": {
2026-06-10T22:49:44.8274370Z           "complete": true,
2026-06-10T22:49:44.8274470Z           "evidence": [
2026-06-10T22:49:44.8274562Z             {
2026-06-10T22:49:44.8274699Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.8274800Z               "line": 214
2026-06-10T22:49:44.8274886Z             },
2026-06-10T22:49:44.8274981Z             {
2026-06-10T22:49:44.8275103Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-10T22:49:44.8275190Z               "line": 403
2026-06-10T22:49:44.8275284Z             },
2026-06-10T22:49:44.8275373Z             {
2026-06-10T22:49:44.8275502Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-10T22:49:44.8275593Z               "line": 250
2026-06-10T22:49:44.8275678Z             },
2026-06-10T22:49:44.8275759Z             {
2026-06-10T22:49:44.8275880Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.8275975Z               "line": 353
2026-06-10T22:49:44.8276064Z             },
2026-06-10T22:49:44.8276156Z             {
2026-06-10T22:49:44.8276270Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-10T22:49:44.8276369Z               "line": 30
2026-06-10T22:49:44.8276456Z             },
2026-06-10T22:49:44.8276547Z             {
2026-06-10T22:49:44.8276660Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-10T22:49:44.8276751Z               "line": 150
2026-06-10T22:49:44.8276843Z             },
2026-06-10T22:49:44.8276936Z             {
2026-06-10T22:49:44.8277052Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-10T22:49:44.8277138Z               "line": 186
2026-06-10T22:49:44.8277232Z             },
2026-06-10T22:49:44.8277323Z             {
2026-06-10T22:49:44.8277439Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-10T22:49:44.8277533Z               "line": 345
2026-06-10T22:49:44.8277623Z             },
2026-06-10T22:49:44.8277713Z             {
2026-06-10T22:49:44.8277832Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.8277925Z               "line": 348
2026-06-10T22:49:44.8278097Z             },
2026-06-10T22:49:44.8278175Z             {
2026-06-10T22:49:44.8278292Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-10T22:49:44.8278379Z               "line": 115
2026-06-10T22:49:44.8278465Z             },
2026-06-10T22:49:44.8278550Z             {
2026-06-10T22:49:44.8278669Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-10T22:49:44.8278827Z               "line": 120
2026-06-10T22:49:44.8278922Z             },
2026-06-10T22:49:44.8279076Z             {
2026-06-10T22:49:44.8279194Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-10T22:49:44.8279308Z               "line": 360
2026-06-10T22:49:44.8279400Z             },
2026-06-10T22:49:44.8279485Z             {
2026-06-10T22:49:44.8279608Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-10T22:49:44.8279705Z               "line": 464
2026-06-10T22:49:44.8279804Z             },
2026-06-10T22:49:44.8279890Z             {
2026-06-10T22:49:44.8280025Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-10T22:49:44.8280118Z               "line": 24
2026-06-10T22:49:44.8280205Z             },
2026-06-10T22:49:44.8280301Z             {
2026-06-10T22:49:44.8280414Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-10T22:49:44.8280509Z               "line": 76
2026-06-10T22:49:44.8280595Z             },
2026-06-10T22:49:44.8280681Z             {
2026-06-10T22:49:44.8280800Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-10T22:49:44.8280890Z               "line": 154
2026-06-10T22:49:44.8280982Z             },
2026-06-10T22:49:44.8281067Z             {
2026-06-10T22:49:44.8281181Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-10T22:49:44.8281273Z               "line": 177
2026-06-10T22:49:44.8281368Z             },
2026-06-10T22:49:44.8281457Z             {
2026-06-10T22:49:44.8281572Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-10T22:49:44.8281673Z               "line": 273
2026-06-10T22:49:44.8281758Z             },
2026-06-10T22:49:44.8281843Z             {
2026-06-10T22:49:44.8281964Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-10T22:49:44.8282073Z               "line": 450
2026-06-10T22:49:44.8282163Z             },
2026-06-10T22:49:44.8282251Z             {
2026-06-10T22:49:44.8282383Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-10T22:49:44.8282473Z               "line": 532
2026-06-10T22:49:44.8282566Z             },
2026-06-10T22:49:44.8282654Z             {
2026-06-10T22:49:44.8282782Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-10T22:49:44.8282878Z               "line": 27
2026-06-10T22:49:44.8282963Z             },
2026-06-10T22:49:44.8283057Z             {
2026-06-10T22:49:44.8283181Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-10T22:49:44.8283277Z               "line": 43
2026-06-10T22:49:44.8283362Z             },
2026-06-10T22:49:44.8283462Z             {
2026-06-10T22:49:44.8283592Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.8283686Z               "line": 323
2026-06-10T22:49:44.8283781Z             },
2026-06-10T22:49:44.8283868Z             {
2026-06-10T22:49:44.8283982Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8284076Z               "line": 1259
2026-06-10T22:49:44.8284173Z             },
2026-06-10T22:49:44.8284268Z             {
2026-06-10T22:49:44.8284372Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8284469Z               "line": 4577
2026-06-10T22:49:44.8284563Z             },
2026-06-10T22:49:44.8284654Z             {
2026-06-10T22:49:44.8284759Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8284855Z               "line": 4638
2026-06-10T22:49:44.8284944Z             },
2026-06-10T22:49:44.8285030Z             {
2026-06-10T22:49:44.8285137Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8285231Z               "line": 4666
2026-06-10T22:49:44.8285433Z             },
2026-06-10T22:49:44.8285522Z             {
2026-06-10T22:49:44.8285625Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8285721Z               "line": 4720
2026-06-10T22:49:44.8285811Z             },
2026-06-10T22:49:44.8285900Z             {
2026-06-10T22:49:44.8286004Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8286192Z               "line": 4836
2026-06-10T22:49:44.8286285Z             },
2026-06-10T22:49:44.8286372Z             {
2026-06-10T22:49:44.8286482Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8286577Z               "line": 4889
2026-06-10T22:49:44.8286667Z             },
2026-06-10T22:49:44.8286754Z             {
2026-06-10T22:49:44.8286873Z               "path": "crates/spt/src/wansend.rs",
2026-06-10T22:49:44.8286968Z               "line": 298
2026-06-10T22:49:44.8287054Z             },
2026-06-10T22:49:44.8287144Z             {
2026-06-10T22:49:44.8287258Z               "path": "crates/spt/src/wansend.rs",
2026-06-10T22:49:44.8287365Z               "line": 339
2026-06-10T22:49:44.8287450Z             }
2026-06-10T22:49:44.8287540Z           ]
2026-06-10T22:49:44.8287631Z         },
2026-06-10T22:49:44.8287718Z         "int": {
2026-06-10T22:49:44.8287821Z           "complete": true,
2026-06-10T22:49:44.8287912Z           "evidence": [
2026-06-10T22:49:44.8288009Z             {
2026-06-10T22:49:44.8288140Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-10T22:49:44.8288235Z               "line": 699
2026-06-10T22:49:44.8288326Z             },
2026-06-10T22:49:44.8288416Z             {
2026-06-10T22:49:44.8288538Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.8288633Z               "line": 708
2026-06-10T22:49:44.8288725Z             },
2026-06-10T22:49:44.8288810Z             {
2026-06-10T22:49:44.8289034Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.8289138Z               "line": 1118
2026-06-10T22:49:44.8289234Z             },
2026-06-10T22:49:44.8289335Z             {
2026-06-10T22:49:44.8289477Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-10T22:49:44.8289574Z               "line": 18
2026-06-10T22:49:44.8289664Z             }
2026-06-10T22:49:44.8289754Z           ]
2026-06-10T22:49:44.8289849Z         },
2026-06-10T22:49:44.8289936Z         "unit": {
2026-06-10T22:49:44.8290045Z           "complete": true,
2026-06-10T22:49:44.8290140Z           "evidence": [
2026-06-10T22:49:44.8290227Z             {
2026-06-10T22:49:44.8290350Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-10T22:49:44.8290445Z               "line": 429
2026-06-10T22:49:44.8290532Z             },
2026-06-10T22:49:44.8290623Z             {
2026-06-10T22:49:44.8290741Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-10T22:49:44.8290833Z               "line": 794
2026-06-10T22:49:44.8290929Z             },
2026-06-10T22:49:44.8291012Z             {
2026-06-10T22:49:44.8291150Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-10T22:49:44.8291246Z               "line": 625
2026-06-10T22:49:44.8291331Z             },
2026-06-10T22:49:44.8291422Z             {
2026-06-10T22:49:44.8291542Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-10T22:49:44.8291637Z               "line": 674
2026-06-10T22:49:44.8291727Z             },
2026-06-10T22:49:44.8291828Z             {
2026-06-10T22:49:44.8291952Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-10T22:49:44.8292046Z               "line": 698
2026-06-10T22:49:44.8292137Z             },
2026-06-10T22:49:44.8292223Z             {
2026-06-10T22:49:44.8292351Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-10T22:49:44.8292452Z               "line": 596
2026-06-10T22:49:44.8292538Z             },
2026-06-10T22:49:44.8292633Z             {
2026-06-10T22:49:44.8292753Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-10T22:49:44.8292957Z               "line": 617
2026-06-10T22:49:44.8293043Z             },
2026-06-10T22:49:44.8293140Z             {
2026-06-10T22:49:44.8293262Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-10T22:49:44.8293357Z               "line": 653
2026-06-10T22:49:44.8293448Z             },
2026-06-10T22:49:44.8293532Z             {
2026-06-10T22:49:44.8293765Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-10T22:49:44.8293866Z               "line": 707
2026-06-10T22:49:44.8293955Z             },
2026-06-10T22:49:44.8294046Z             {
2026-06-10T22:49:44.8294170Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-10T22:49:44.8294265Z               "line": 725
2026-06-10T22:49:44.8294356Z             },
2026-06-10T22:49:44.8294447Z             {
2026-06-10T22:49:44.8294565Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-10T22:49:44.8294661Z               "line": 759
2026-06-10T22:49:44.8294752Z             },
2026-06-10T22:49:44.8294847Z             {
2026-06-10T22:49:44.8294966Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-10T22:49:44.8295058Z               "line": 834
2026-06-10T22:49:44.8295152Z             },
2026-06-10T22:49:44.8295243Z             {
2026-06-10T22:49:44.8295373Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-10T22:49:44.8295467Z               "line": 80
2026-06-10T22:49:44.8295562Z             },
2026-06-10T22:49:44.8295659Z             {
2026-06-10T22:49:44.8295767Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8295868Z               "line": 5450
2026-06-10T22:49:44.8295954Z             },
2026-06-10T22:49:44.8296045Z             {
2026-06-10T22:49:44.8296158Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8296247Z               "line": 6075
2026-06-10T22:49:44.8296338Z             },
2026-06-10T22:49:44.8296427Z             {
2026-06-10T22:49:44.8296536Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8296632Z               "line": 6145
2026-06-10T22:49:44.8296723Z             },
2026-06-10T22:49:44.8296813Z             {
2026-06-10T22:49:44.8296917Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8297014Z               "line": 6183
2026-06-10T22:49:44.8297104Z             }
2026-06-10T22:49:44.8297203Z           ]
2026-06-10T22:49:44.8297290Z         }
2026-06-10T22:49:44.8297381Z       }
2026-06-10T22:49:44.8297485Z     },
2026-06-10T22:49:44.8299819Z     {
2026-06-10T22:49:44.8299947Z       "id": "REQ-START-1",
2026-06-10T22:49:44.8300157Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-10T22:49:44.8300266Z       "requiredStages": [
2026-06-10T22:49:44.8300357Z         "impl",
2026-06-10T22:49:44.8300458Z         "unit"
2026-06-10T22:49:44.8300553Z       ],
2026-06-10T22:49:44.8300648Z       "stages": {
2026-06-10T22:49:44.8300739Z         "doc": {
2026-06-10T22:49:44.8300840Z           "complete": false,
2026-06-10T22:49:44.8300943Z           "evidence": []
2026-06-10T22:49:44.8301049Z         },
2026-06-10T22:49:44.8301145Z         "impl": {
2026-06-10T22:49:44.8301244Z           "complete": true,
2026-06-10T22:49:44.8301339Z           "evidence": [
2026-06-10T22:49:44.8301426Z             {
2026-06-10T22:49:44.8301554Z               "path": "crates/spt-store/src/seed.rs",
2026-06-10T22:49:44.8301648Z               "line": 16
2026-06-10T22:49:44.8301748Z             }
2026-06-10T22:49:44.8301840Z           ]
2026-06-10T22:49:44.8301929Z         },
2026-06-10T22:49:44.8302015Z         "int": {
2026-06-10T22:49:44.8302121Z           "complete": false,
2026-06-10T22:49:44.8302216Z           "evidence": []
2026-06-10T22:49:44.8302316Z         },
2026-06-10T22:49:44.8302403Z         "unit": {
2026-06-10T22:49:44.8302502Z           "complete": true,
2026-06-10T22:49:44.8302597Z           "evidence": [
2026-06-10T22:49:44.8302688Z             {
2026-06-10T22:49:44.8302817Z               "path": "crates/spt-store/src/seed.rs",
2026-06-10T22:49:44.8303046Z               "line": 43
2026-06-10T22:49:44.8303136Z             },
2026-06-10T22:49:44.8303226Z             {
2026-06-10T22:49:44.8303342Z               "path": "crates/spt-store/src/seed.rs",
2026-06-10T22:49:44.8303441Z               "line": 59
2026-06-10T22:49:44.8303527Z             }
2026-06-10T22:49:44.8303617Z           ]
2026-06-10T22:49:44.8303700Z         }
2026-06-10T22:49:44.8303793Z       }
2026-06-10T22:49:44.8303974Z     },
2026-06-10T22:49:44.8304064Z     {
2026-06-10T22:49:44.8304172Z       "id": "REQ-START-2",
2026-06-10T22:49:44.8304320Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-10T22:49:44.8304421Z       "requiredStages": [
2026-06-10T22:49:44.8304515Z         "impl",
2026-06-10T22:49:44.8304606Z         "unit",
2026-06-10T22:49:44.8304692Z         "int"
2026-06-10T22:49:44.8304782Z       ],
2026-06-10T22:49:44.8304877Z       "stages": {
2026-06-10T22:49:44.8304965Z         "doc": {
2026-06-10T22:49:44.8305069Z           "complete": false,
2026-06-10T22:49:44.8305168Z           "evidence": []
2026-06-10T22:49:44.8305260Z         },
2026-06-10T22:49:44.8305350Z         "impl": {
2026-06-10T22:49:44.8305450Z           "complete": true,
2026-06-10T22:49:44.8305550Z           "evidence": [
2026-06-10T22:49:44.8305637Z             {
2026-06-10T22:49:44.8305760Z               "path": "crates/spt/src/api/startup.rs",
2026-06-10T22:49:44.8305850Z               "line": 16
2026-06-10T22:49:44.8305952Z             },
2026-06-10T22:49:44.8306041Z             {
2026-06-10T22:49:44.8306156Z               "path": "crates/spt/src/api/startup.rs",
2026-06-10T22:49:44.8306257Z               "line": 100
2026-06-10T22:49:44.8306346Z             },
2026-06-10T22:49:44.8306437Z             {
2026-06-10T22:49:44.8306553Z               "path": "crates/spt/src/api/startup.rs",
2026-06-10T22:49:44.8306647Z               "line": 208
2026-06-10T22:49:44.8306732Z             }
2026-06-10T22:49:44.8306822Z           ]
2026-06-10T22:49:44.8306913Z         },
2026-06-10T22:49:44.8307001Z         "int": {
2026-06-10T22:49:44.8307115Z           "complete": true,
2026-06-10T22:49:44.8307207Z           "evidence": [
2026-06-10T22:49:44.8307297Z             {
2026-06-10T22:49:44.8307420Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-10T22:49:44.8307517Z               "line": 186
2026-06-10T22:49:44.8307617Z             }
2026-06-10T22:49:44.8307707Z           ]
2026-06-10T22:49:44.8307807Z         },
2026-06-10T22:49:44.8307898Z         "unit": {
2026-06-10T22:49:44.8307998Z           "complete": true,
2026-06-10T22:49:44.8308093Z           "evidence": [
2026-06-10T22:49:44.8308184Z             {
2026-06-10T22:49:44.8308298Z               "path": "crates/spt/src/api/startup.rs",
2026-06-10T22:49:44.8308398Z               "line": 421
2026-06-10T22:49:44.8308485Z             },
2026-06-10T22:49:44.8308570Z             {
2026-06-10T22:49:44.8308689Z               "path": "crates/spt/src/api/startup.rs",
2026-06-10T22:49:44.8308786Z               "line": 454
2026-06-10T22:49:44.8308885Z             }
2026-06-10T22:49:44.8309067Z           ]
2026-06-10T22:49:44.8309157Z         }
2026-06-10T22:49:44.8309247Z       }
2026-06-10T22:49:44.8309336Z     },
2026-06-10T22:49:44.8309432Z     {
2026-06-10T22:49:44.8309526Z       "id": "REQ-START-3",
2026-06-10T22:49:44.8309706Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-10T22:49:44.8309812Z       "requiredStages": [
2026-06-10T22:49:44.8309907Z         "impl",
2026-06-10T22:49:44.8309996Z         "unit",
2026-06-10T22:49:44.8310083Z         "int"
2026-06-10T22:49:44.8310174Z       ],
2026-06-10T22:49:44.8310264Z       "stages": {
2026-06-10T22:49:44.8310354Z         "doc": {
2026-06-10T22:49:44.8310455Z           "complete": false,
2026-06-10T22:49:44.8310551Z           "evidence": []
2026-06-10T22:49:44.8310640Z         },
2026-06-10T22:49:44.8310732Z         "impl": {
2026-06-10T22:49:44.8310836Z           "complete": true,
2026-06-10T22:49:44.8310926Z           "evidence": [
2026-06-10T22:49:44.8311018Z             {
2026-06-10T22:49:44.8311255Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-10T22:49:44.8311352Z               "line": 23
2026-06-10T22:49:44.8311442Z             },
2026-06-10T22:49:44.8311533Z             {
2026-06-10T22:49:44.8311658Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-10T22:49:44.8311752Z               "line": 205
2026-06-10T22:49:44.8311934Z             },
2026-06-10T22:49:44.8312025Z             {
2026-06-10T22:49:44.8312142Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-10T22:49:44.8312232Z               "line": 221
2026-06-10T22:49:44.8312318Z             },
2026-06-10T22:49:44.8312405Z             {
2026-06-10T22:49:44.8312523Z               "path": "crates/spt/src/api/startup.rs",
2026-06-10T22:49:44.8312619Z               "line": 17
2026-06-10T22:49:44.8312710Z             },
2026-06-10T22:49:44.8312786Z             {
2026-06-10T22:49:44.8312904Z               "path": "crates/spt/src/api/startup.rs",
2026-06-10T22:49:44.8313001Z               "line": 43
2026-06-10T22:49:44.8313096Z             },
2026-06-10T22:49:44.8313181Z             {
2026-06-10T22:49:44.8313306Z               "path": "crates/spt/src/api/startup.rs",
2026-06-10T22:49:44.8313395Z               "line": 101
2026-06-10T22:49:44.8313476Z             }
2026-06-10T22:49:44.8313568Z           ]
2026-06-10T22:49:44.8313645Z         },
2026-06-10T22:49:44.8313729Z         "int": {
2026-06-10T22:49:44.8313829Z           "complete": true,
2026-06-10T22:49:44.8313931Z           "evidence": [
2026-06-10T22:49:44.8314016Z             {
2026-06-10T22:49:44.8314125Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-10T22:49:44.8314222Z               "line": 440
2026-06-10T22:49:44.8314298Z             }
2026-06-10T22:49:44.8314392Z           ]
2026-06-10T22:49:44.8314472Z         },
2026-06-10T22:49:44.8314558Z         "unit": {
2026-06-10T22:49:44.8314657Z           "complete": true,
2026-06-10T22:49:44.8314747Z           "evidence": [
2026-06-10T22:49:44.8314842Z             {
2026-06-10T22:49:44.8314962Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-10T22:49:44.8315056Z               "line": 331
2026-06-10T22:49:44.8315137Z             },
2026-06-10T22:49:44.8315224Z             {
2026-06-10T22:49:44.8315338Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-10T22:49:44.8315428Z               "line": 352
2026-06-10T22:49:44.8315525Z             },
2026-06-10T22:49:44.8315615Z             {
2026-06-10T22:49:44.8315733Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-10T22:49:44.8315830Z               "line": 362
2026-06-10T22:49:44.8315915Z             },
2026-06-10T22:49:44.8316000Z             {
2026-06-10T22:49:44.8316115Z               "path": "crates/spt/src/api/startup.rs",
2026-06-10T22:49:44.8316216Z               "line": 422
2026-06-10T22:49:44.8316297Z             },
2026-06-10T22:49:44.8316377Z             {
2026-06-10T22:49:44.8316498Z               "path": "crates/spt/src/api/startup.rs",
2026-06-10T22:49:44.8316596Z               "line": 455
2026-06-10T22:49:44.8316677Z             },
2026-06-10T22:49:44.8316760Z             {
2026-06-10T22:49:44.8316874Z               "path": "crates/spt/src/api/startup.rs",
2026-06-10T22:49:44.8316964Z               "line": 463
2026-06-10T22:49:44.8317040Z             }
2026-06-10T22:49:44.8317132Z           ]
2026-06-10T22:49:44.8317216Z         }
2026-06-10T22:49:44.8317311Z       }
2026-06-10T22:49:44.8317392Z     },
2026-06-10T22:49:44.8317478Z     {
2026-06-10T22:49:44.8317575Z       "id": "REQ-START-4",
2026-06-10T22:49:44.8317723Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-10T22:49:44.8317824Z       "requiredStages": [
2026-06-10T22:49:44.8317924Z         "impl",
2026-06-10T22:49:44.8318009Z         "unit"
2026-06-10T22:49:44.8318092Z       ],
2026-06-10T22:49:44.8318182Z       "stages": {
2026-06-10T22:49:44.8318262Z         "doc": {
2026-06-10T22:49:44.8318363Z           "complete": false,
2026-06-10T22:49:44.8318458Z           "evidence": []
2026-06-10T22:49:44.8318620Z         },
2026-06-10T22:49:44.8318711Z         "impl": {
2026-06-10T22:49:44.8318806Z           "complete": true,
2026-06-10T22:49:44.8318896Z           "evidence": [
2026-06-10T22:49:44.8319060Z             {
2026-06-10T22:49:44.8319177Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.8319273Z               "line": 391
2026-06-10T22:49:44.8319445Z             }
2026-06-10T22:49:44.8319540Z           ]
2026-06-10T22:49:44.8319617Z         },
2026-06-10T22:49:44.8319713Z         "int": {
2026-06-10T22:49:44.8319811Z           "complete": false,
2026-06-10T22:49:44.8319901Z           "evidence": []
2026-06-10T22:49:44.8319982Z         },
2026-06-10T22:49:44.8320068Z         "unit": {
2026-06-10T22:49:44.8320166Z           "complete": true,
2026-06-10T22:49:44.8320256Z           "evidence": [
2026-06-10T22:49:44.8320343Z             {
2026-06-10T22:49:44.8320462Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-10T22:49:44.8320566Z               "line": 660
2026-06-10T22:49:44.8320644Z             }
2026-06-10T22:49:44.8320725Z           ]
2026-06-10T22:49:44.8320805Z         }
2026-06-10T22:49:44.8320886Z       }
2026-06-10T22:49:44.8320977Z     },
2026-06-10T22:49:44.8321058Z     {
2026-06-10T22:49:44.8321158Z       "id": "REQ-STORE-1",
2026-06-10T22:49:44.8321983Z       "title": "spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)",
2026-06-10T22:49:44.8322078Z       "requiredStages": [
2026-06-10T22:49:44.8322169Z         "impl",
2026-06-10T22:49:44.8322256Z         "unit"
2026-06-10T22:49:44.8322340Z       ],
2026-06-10T22:49:44.8322427Z       "stages": {
2026-06-10T22:49:44.8322523Z         "doc": {
2026-06-10T22:49:44.8322618Z           "complete": false,
2026-06-10T22:49:44.8322712Z           "evidence": []
2026-06-10T22:49:44.8322806Z         },
2026-06-10T22:49:44.8322893Z         "impl": {
2026-06-10T22:49:44.8322989Z           "complete": true,
2026-06-10T22:49:44.8323083Z           "evidence": [
2026-06-10T22:49:44.8323174Z             {
2026-06-10T22:49:44.8323308Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-10T22:49:44.8323402Z               "line": 23
2026-06-10T22:49:44.8323494Z             },
2026-06-10T22:49:44.8323575Z             {
2026-06-10T22:49:44.8323703Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-10T22:49:44.8323798Z               "line": 46
2026-06-10T22:49:44.8323890Z             },
2026-06-10T22:49:44.8323980Z             {
2026-06-10T22:49:44.8324099Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-10T22:49:44.8324191Z               "line": 97
2026-06-10T22:49:44.8324275Z             },
2026-06-10T22:49:44.8324365Z             {
2026-06-10T22:49:44.8324481Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-10T22:49:44.8324572Z               "line": 125
2026-06-10T22:49:44.8324657Z             },
2026-06-10T22:49:44.8324743Z             {
2026-06-10T22:49:44.8324863Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-10T22:49:44.8324956Z               "line": 181
2026-06-10T22:49:44.8325046Z             },
2026-06-10T22:49:44.8325142Z             {
2026-06-10T22:49:44.8325259Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-10T22:49:44.8325354Z               "line": 205
2026-06-10T22:49:44.8325450Z             },
2026-06-10T22:49:44.8325551Z             {
2026-06-10T22:49:44.8325678Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-10T22:49:44.8325769Z               "line": 441
2026-06-10T22:49:44.8325846Z             },
2026-06-10T22:49:44.8325922Z             {
2026-06-10T22:49:44.8326046Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-10T22:49:44.8326137Z               "line": 25
2026-06-10T22:49:44.8326346Z             },
2026-06-10T22:49:44.8326428Z             {
2026-06-10T22:49:44.8326561Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-10T22:49:44.8326656Z               "line": 104
2026-06-10T22:49:44.8326748Z             },
2026-06-10T22:49:44.8326827Z             {
2026-06-10T22:49:44.8327020Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-10T22:49:44.8327110Z               "line": 132
2026-06-10T22:49:44.8327200Z             },
2026-06-10T22:49:44.8327295Z             {
2026-06-10T22:49:44.8327416Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-10T22:49:44.8327504Z               "line": 148
2026-06-10T22:49:44.8327586Z             },
2026-06-10T22:49:44.8327673Z             {
2026-06-10T22:49:44.8327791Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-10T22:49:44.8327886Z               "line": 166
2026-06-10T22:49:44.8327971Z             },
2026-06-10T22:49:44.8328057Z             {
2026-06-10T22:49:44.8328188Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-10T22:49:44.8328284Z               "line": 175
2026-06-10T22:49:44.8328365Z             },
2026-06-10T22:49:44.8328455Z             {
2026-06-10T22:49:44.8328574Z               "path": "crates/spt-store/src/project.rs",
2026-06-10T22:49:44.8328661Z               "line": 16
2026-06-10T22:49:44.8328747Z             },
2026-06-10T22:49:44.8328831Z             {
2026-06-10T22:49:44.8329027Z               "path": "crates/spt-store/src/project.rs",
2026-06-10T22:49:44.8329118Z               "line": 63
2026-06-10T22:49:44.8329199Z             }
2026-06-10T22:49:44.8329281Z           ]
2026-06-10T22:49:44.8329370Z         },
2026-06-10T22:49:44.8329461Z         "int": {
2026-06-10T22:49:44.8329552Z           "complete": false,
2026-06-10T22:49:44.8329653Z           "evidence": []
2026-06-10T22:49:44.8329728Z         },
2026-06-10T22:49:44.8329819Z         "unit": {
2026-06-10T22:49:44.8329915Z           "complete": true,
2026-06-10T22:49:44.8330010Z           "evidence": [
2026-06-10T22:49:44.8330086Z             {
2026-06-10T22:49:44.8330211Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-10T22:49:44.8330306Z               "line": 558
2026-06-10T22:49:44.8330391Z             },
2026-06-10T22:49:44.8330480Z             {
2026-06-10T22:49:44.8330609Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-10T22:49:44.8330702Z               "line": 568
2026-06-10T22:49:44.8330792Z             },
2026-06-10T22:49:44.8330874Z             {
2026-06-10T22:49:44.8331003Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-10T22:49:44.8331098Z               "line": 590
2026-06-10T22:49:44.8331184Z             },
2026-06-10T22:49:44.8331275Z             {
2026-06-10T22:49:44.8331394Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-10T22:49:44.8331489Z               "line": 606
2026-06-10T22:49:44.8331575Z             },
2026-06-10T22:49:44.8331661Z             {
2026-06-10T22:49:44.8331790Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-10T22:49:44.8331881Z               "line": 629
2026-06-10T22:49:44.8331976Z             },
2026-06-10T22:49:44.8332061Z             {
2026-06-10T22:49:44.8332186Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-10T22:49:44.8332276Z               "line": 440
2026-06-10T22:49:44.8332376Z             },
2026-06-10T22:49:44.8332468Z             {
2026-06-10T22:49:44.8332586Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-10T22:49:44.8332681Z               "line": 475
2026-06-10T22:49:44.8332768Z             },
2026-06-10T22:49:44.8332863Z             {
2026-06-10T22:49:44.8332982Z               "path": "crates/spt-store/src/project.rs",
2026-06-10T22:49:44.8333078Z               "line": 120
2026-06-10T22:49:44.8333169Z             },
2026-06-10T22:49:44.8333257Z             {
2026-06-10T22:49:44.8333386Z               "path": "crates/spt-store/src/project.rs",
2026-06-10T22:49:44.8333577Z               "line": 128
2026-06-10T22:49:44.8333667Z             }
2026-06-10T22:49:44.8333754Z           ]
2026-06-10T22:49:44.8333844Z         }
2026-06-10T22:49:44.8333934Z       }
2026-06-10T22:49:44.8334015Z     },
2026-06-10T22:49:44.8334102Z     {
2026-06-10T22:49:44.8334192Z       "id": "REQ-SUBNET-1",
2026-06-10T22:49:44.8334583Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-10T22:49:44.8334678Z       "requiredStages": [
2026-06-10T22:49:44.8334769Z         "impl",
2026-06-10T22:49:44.8334854Z         "unit"
2026-06-10T22:49:44.8334940Z       ],
2026-06-10T22:49:44.8335033Z       "stages": {
2026-06-10T22:49:44.8335122Z         "doc": {
2026-06-10T22:49:44.8335217Z           "complete": false,
2026-06-10T22:49:44.8335317Z           "evidence": []
2026-06-10T22:49:44.8335423Z         },
2026-06-10T22:49:44.8335512Z         "impl": {
2026-06-10T22:49:44.8335611Z           "complete": true,
2026-06-10T22:49:44.8335712Z           "evidence": [
2026-06-10T22:49:44.8335801Z             {
2026-06-10T22:49:44.8335933Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.8336029Z               "line": 265
2026-06-10T22:49:44.8336121Z             },
2026-06-10T22:49:44.8336210Z             {
2026-06-10T22:49:44.8336349Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.8336449Z               "line": 571
2026-06-10T22:49:44.8336539Z             },
2026-06-10T22:49:44.8336635Z             {
2026-06-10T22:49:44.8336744Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8336839Z               "line": 2473
2026-06-10T22:49:44.8336931Z             },
2026-06-10T22:49:44.8337026Z             {
2026-06-10T22:49:44.8337135Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8337226Z               "line": 2638
2026-06-10T22:49:44.8337322Z             },
2026-06-10T22:49:44.8337407Z             {
2026-06-10T22:49:44.8337526Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8337623Z               "line": 2657
2026-06-10T22:49:44.8337712Z             },
2026-06-10T22:49:44.8337802Z             {
2026-06-10T22:49:44.8337904Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8337999Z               "line": 2718
2026-06-10T22:49:44.8338094Z             },
2026-06-10T22:49:44.8338185Z             {
2026-06-10T22:49:44.8338300Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8338393Z               "line": 2760
2026-06-10T22:49:44.8338488Z             },
2026-06-10T22:49:44.8338574Z             {
2026-06-10T22:49:44.8338682Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8338777Z               "line": 2933
2026-06-10T22:49:44.8338863Z             },
2026-06-10T22:49:44.8339048Z             {
2026-06-10T22:49:44.8339153Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8339254Z               "line": 3003
2026-06-10T22:49:44.8339349Z             },
2026-06-10T22:49:44.8339439Z             {
2026-06-10T22:49:44.8339550Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8339641Z               "line": 3227
2026-06-10T22:49:44.8339735Z             },
2026-06-10T22:49:44.8339822Z             {
2026-06-10T22:49:44.8339940Z               "path": "crates/spt/src/wansend.rs",
2026-06-10T22:49:44.8340040Z               "line": 418
2026-06-10T22:49:44.8340132Z             }
2026-06-10T22:49:44.8340227Z           ]
2026-06-10T22:49:44.8340312Z         },
2026-06-10T22:49:44.8340408Z         "int": {
2026-06-10T22:49:44.8340509Z           "complete": false,
2026-06-10T22:49:44.8340607Z           "evidence": []
2026-06-10T22:49:44.8340694Z         },
2026-06-10T22:49:44.8340790Z         "unit": {
2026-06-10T22:49:44.8340889Z           "complete": true,
2026-06-10T22:49:44.8340984Z           "evidence": [
2026-06-10T22:49:44.8341074Z             {
2026-06-10T22:49:44.8341202Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.8341411Z               "line": 1446
2026-06-10T22:49:44.8341502Z             },
2026-06-10T22:49:44.8341596Z             {
2026-06-10T22:49:44.8341706Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8341797Z               "line": 6932
2026-06-10T22:49:44.8341892Z             },
2026-06-10T22:49:44.8341982Z             {
2026-06-10T22:49:44.8342188Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8342283Z               "line": 7102
2026-06-10T22:49:44.8342374Z             },
2026-06-10T22:49:44.8342474Z             {
2026-06-10T22:49:44.8342578Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8342674Z               "line": 7109
2026-06-10T22:49:44.8342770Z             },
2026-06-10T22:49:44.8342865Z             {
2026-06-10T22:49:44.8342969Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8343066Z               "line": 7162
2026-06-10T22:49:44.8343155Z             },
2026-06-10T22:49:44.8343241Z             {
2026-06-10T22:49:44.8343352Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8343442Z               "line": 7179
2026-06-10T22:49:44.8343532Z             },
2026-06-10T22:49:44.8343619Z             {
2026-06-10T22:49:44.8343724Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8343817Z               "line": 7193
2026-06-10T22:49:44.8343907Z             },
2026-06-10T22:49:44.8344004Z             {
2026-06-10T22:49:44.8344104Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8344199Z               "line": 7291
2026-06-10T22:49:44.8344285Z             },
2026-06-10T22:49:44.8344376Z             {
2026-06-10T22:49:44.8344489Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8344580Z               "line": 7441
2026-06-10T22:49:44.8344671Z             }
2026-06-10T22:49:44.8344757Z           ]
2026-06-10T22:49:44.8344847Z         }
2026-06-10T22:49:44.8344933Z       }
2026-06-10T22:49:44.8345024Z     },
2026-06-10T22:49:44.8345110Z     {
2026-06-10T22:49:44.8345214Z       "id": "REQ-SUBNET-2",
2026-06-10T22:49:44.8345458Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-10T22:49:44.8345558Z       "requiredStages": [
2026-06-10T22:49:44.8345654Z         "impl",
2026-06-10T22:49:44.8345748Z         "unit",
2026-06-10T22:49:44.8345839Z         "int"
2026-06-10T22:49:44.8345927Z       ],
2026-06-10T22:49:44.8346025Z       "stages": {
2026-06-10T22:49:44.8346124Z         "doc": {
2026-06-10T22:49:44.8346219Z           "complete": true,
2026-06-10T22:49:44.8346314Z           "evidence": [
2026-06-10T22:49:44.8346399Z             {
2026-06-10T22:49:44.8346556Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-10T22:49:44.8346667Z               "line": 60
2026-06-10T22:49:44.8346760Z             }
2026-06-10T22:49:44.8346851Z           ]
2026-06-10T22:49:44.8346943Z         },
2026-06-10T22:49:44.8347033Z         "impl": {
2026-06-10T22:49:44.8347127Z           "complete": true,
2026-06-10T22:49:44.8347224Z           "evidence": [
2026-06-10T22:49:44.8347314Z             {
2026-06-10T22:49:44.8347423Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-10T22:49:44.8347520Z               "line": 665
2026-06-10T22:49:44.8347596Z             },
2026-06-10T22:49:44.8347696Z             {
2026-06-10T22:49:44.8347810Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-10T22:49:44.8347910Z               "line": 801
2026-06-10T22:49:44.8348001Z             },
2026-06-10T22:49:44.8348086Z             {
2026-06-10T22:49:44.8348207Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-10T22:49:44.8348300Z               "line": 448
2026-06-10T22:49:44.8348391Z             },
2026-06-10T22:49:44.8348483Z             {
2026-06-10T22:49:44.8348601Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-10T22:49:44.8348696Z               "line": 578
2026-06-10T22:49:44.8348779Z             },
2026-06-10T22:49:44.8348869Z             {
2026-06-10T22:49:44.8349153Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-10T22:49:44.8349247Z               "line": 26
2026-06-10T22:49:44.8349341Z             },
2026-06-10T22:49:44.8349428Z             {
2026-06-10T22:49:44.8349548Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-10T22:49:44.8349642Z               "line": 60
2026-06-10T22:49:44.8349829Z             },
2026-06-10T22:49:44.8349914Z             {
2026-06-10T22:49:44.8350028Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-10T22:49:44.8350125Z               "line": 168
2026-06-10T22:49:44.8350215Z             },
2026-06-10T22:49:44.8350295Z             {
2026-06-10T22:49:44.8350411Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-10T22:49:44.8350505Z               "line": 295
2026-06-10T22:49:44.8350591Z             },
2026-06-10T22:49:44.8350682Z             {
2026-06-10T22:49:44.8350797Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-10T22:49:44.8350892Z               "line": 417
2026-06-10T22:49:44.8350982Z             },
2026-06-10T22:49:44.8351059Z             {
2026-06-10T22:49:44.8351196Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-10T22:49:44.8351292Z               "line": 252
2026-06-10T22:49:44.8351374Z             },
2026-06-10T22:49:44.8351455Z             {
2026-06-10T22:49:44.8351568Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8351663Z               "line": 2684
2026-06-10T22:49:44.8351758Z             },
2026-06-10T22:49:44.8351846Z             {
2026-06-10T22:49:44.8351941Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8352038Z               "line": 3166
2026-06-10T22:49:44.8352124Z             },
2026-06-10T22:49:44.8352199Z             {
2026-06-10T22:49:44.8352305Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8352400Z               "line": 3789
2026-06-10T22:49:44.8352485Z             }
2026-06-10T22:49:44.8352566Z           ]
2026-06-10T22:49:44.8352663Z         },
2026-06-10T22:49:44.8352753Z         "int": {
2026-06-10T22:49:44.8352847Z           "complete": true,
2026-06-10T22:49:44.8352944Z           "evidence": [
2026-06-10T22:49:44.8353025Z             {
2026-06-10T22:49:44.8353148Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-10T22:49:44.8353244Z               "line": 22
2026-06-10T22:49:44.8353344Z             },
2026-06-10T22:49:44.8353425Z             {
2026-06-10T22:49:44.8353554Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.8353655Z               "line": 575
2026-06-10T22:49:44.8353734Z             },
2026-06-10T22:49:44.8353816Z             {
2026-06-10T22:49:44.8353937Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.8354025Z               "line": 792
2026-06-10T22:49:44.8354116Z             }
2026-06-10T22:49:44.8354194Z           ]
2026-06-10T22:49:44.8354285Z         },
2026-06-10T22:49:44.8354363Z         "unit": {
2026-06-10T22:49:44.8354472Z           "complete": true,
2026-06-10T22:49:44.8354554Z           "evidence": [
2026-06-10T22:49:44.8354651Z             {
2026-06-10T22:49:44.8354773Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-10T22:49:44.8354864Z               "line": 586
2026-06-10T22:49:44.8354955Z             },
2026-06-10T22:49:44.8355035Z             {
2026-06-10T22:49:44.8355140Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8355236Z               "line": 6972
2026-06-10T22:49:44.8355327Z             },
2026-06-10T22:49:44.8355431Z             {
2026-06-10T22:49:44.8355542Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8355636Z               "line": 7645
2026-06-10T22:49:44.8355717Z             }
2026-06-10T22:49:44.8355808Z           ]
2026-06-10T22:49:44.8355894Z         }
2026-06-10T22:49:44.8355984Z       }
2026-06-10T22:49:44.8356066Z     },
2026-06-10T22:49:44.8356153Z     {
2026-06-10T22:49:44.8356252Z       "id": "REQ-SUBNET-3",
2026-06-10T22:49:44.8356651Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-10T22:49:44.8356751Z       "requiredStages": [
2026-06-10T22:49:44.8356841Z         "impl",
2026-06-10T22:49:44.8356935Z         "unit"
2026-06-10T22:49:44.8357025Z       ],
2026-06-10T22:49:44.8357111Z       "stages": {
2026-06-10T22:49:44.8357203Z         "doc": {
2026-06-10T22:49:44.8357373Z           "complete": false,
2026-06-10T22:49:44.8357474Z           "evidence": []
2026-06-10T22:49:44.8357555Z         },
2026-06-10T22:49:44.8357650Z         "impl": {
2026-06-10T22:49:44.8357741Z           "complete": true,
2026-06-10T22:49:44.8357832Z           "evidence": [
2026-06-10T22:49:44.8357921Z             {
2026-06-10T22:49:44.8358051Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.8358146Z               "line": 152
2026-06-10T22:49:44.8358232Z             },
2026-06-10T22:49:44.8358322Z             {
2026-06-10T22:49:44.8358452Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.8358556Z               "line": 283
2026-06-10T22:49:44.8358646Z             },
2026-06-10T22:49:44.8358724Z             {
2026-06-10T22:49:44.8358851Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.8359034Z               "line": 413
2026-06-10T22:49:44.8359124Z             },
2026-06-10T22:49:44.8359214Z             {
2026-06-10T22:49:44.8359339Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.8359439Z               "line": 452
2026-06-10T22:49:44.8359519Z             },
2026-06-10T22:49:44.8359599Z             {
2026-06-10T22:49:44.8359718Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.8359802Z               "line": 125
2026-06-10T22:49:44.8359897Z             },
2026-06-10T22:49:44.8359983Z             {
2026-06-10T22:49:44.8360108Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.8360197Z               "line": 237
2026-06-10T22:49:44.8360293Z             },
2026-06-10T22:49:44.8360375Z             {
2026-06-10T22:49:44.8360493Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.8360593Z               "line": 248
2026-06-10T22:49:44.8360675Z             },
2026-06-10T22:49:44.8360761Z             {
2026-06-10T22:49:44.8360884Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.8360980Z               "line": 269
2026-06-10T22:49:44.8361070Z             },
2026-06-10T22:49:44.8361156Z             {
2026-06-10T22:49:44.8361281Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.8361376Z               "line": 573
2026-06-10T22:49:44.8361471Z             },
2026-06-10T22:49:44.8361557Z             {
2026-06-10T22:49:44.8361677Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.8361771Z               "line": 632
2026-06-10T22:49:44.8361862Z             },
2026-06-10T22:49:44.8361949Z             {
2026-06-10T22:49:44.8362085Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-10T22:49:44.8362180Z               "line": 61
2026-06-10T22:49:44.8362271Z             },
2026-06-10T22:49:44.8362365Z             {
2026-06-10T22:49:44.8362478Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-10T22:49:44.8362564Z               "line": 90
2026-06-10T22:49:44.8362675Z             },
2026-06-10T22:49:44.8362769Z             {
2026-06-10T22:49:44.8362894Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-10T22:49:44.8362999Z               "line": 125
2026-06-10T22:49:44.8363088Z             },
2026-06-10T22:49:44.8363180Z             {
2026-06-10T22:49:44.8363303Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-10T22:49:44.8363398Z               "line": 9
2026-06-10T22:49:44.8363495Z             },
2026-06-10T22:49:44.8363585Z             {
2026-06-10T22:49:44.8363699Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8363895Z               "line": 3003
2026-06-10T22:49:44.8363990Z             },
2026-06-10T22:49:44.8364081Z             {
2026-06-10T22:49:44.8364201Z               "path": "crates/spt/src/wansend.rs",
2026-06-10T22:49:44.8364299Z               "line": 445
2026-06-10T22:49:44.8364390Z             }
2026-06-10T22:49:44.8364482Z           ]
2026-06-10T22:49:44.8364567Z         },
2026-06-10T22:49:44.8364749Z         "int": {
2026-06-10T22:49:44.8364854Z           "complete": false,
2026-06-10T22:49:44.8364952Z           "evidence": []
2026-06-10T22:49:44.8365037Z         },
2026-06-10T22:49:44.8365133Z         "unit": {
2026-06-10T22:49:44.8365239Z           "complete": true,
2026-06-10T22:49:44.8365333Z           "evidence": [
2026-06-10T22:49:44.8365424Z             {
2026-06-10T22:49:44.8365558Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.8365657Z               "line": 1273
2026-06-10T22:49:44.8365749Z             },
2026-06-10T22:49:44.8365844Z             {
2026-06-10T22:49:44.8368005Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.8368129Z               "line": 1575
2026-06-10T22:49:44.8368224Z             },
2026-06-10T22:49:44.8368311Z             {
2026-06-10T22:49:44.8368453Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-10T22:49:44.8368548Z               "line": 885
2026-06-10T22:49:44.8368640Z             },
2026-06-10T22:49:44.8368745Z             {
2026-06-10T22:49:44.8368872Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.8369049Z               "line": 941
2026-06-10T22:49:44.8369140Z             },
2026-06-10T22:49:44.8369231Z             {
2026-06-10T22:49:44.8369359Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.8369460Z               "line": 990
2026-06-10T22:49:44.8369556Z             },
2026-06-10T22:49:44.8369641Z             {
2026-06-10T22:49:44.8369764Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.8369861Z               "line": 1049
2026-06-10T22:49:44.8369952Z             },
2026-06-10T22:49:44.8370036Z             {
2026-06-10T22:49:44.8370168Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-10T22:49:44.8370260Z               "line": 233
2026-06-10T22:49:44.8370348Z             },
2026-06-10T22:49:44.8370438Z             {
2026-06-10T22:49:44.8370563Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-10T22:49:44.8370663Z               "line": 49
2026-06-10T22:49:44.8370758Z             },
2026-06-10T22:49:44.8370853Z             {
2026-06-10T22:49:44.8370968Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8371058Z               "line": 7291
2026-06-10T22:49:44.8371149Z             },
2026-06-10T22:49:44.8371235Z             {
2026-06-10T22:49:44.8371345Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8371439Z               "line": 7396
2026-06-10T22:49:44.8371531Z             },
2026-06-10T22:49:44.8371626Z             {
2026-06-10T22:49:44.8371735Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8371827Z               "line": 7611
2026-06-10T22:49:44.8371917Z             }
2026-06-10T22:49:44.8372007Z           ]
2026-06-10T22:49:44.8372093Z         }
2026-06-10T22:49:44.8372180Z       }
2026-06-10T22:49:44.8372269Z     },
2026-06-10T22:49:44.8372356Z     {
2026-06-10T22:49:44.8372461Z       "id": "REQ-SUBNET-4",
2026-06-10T22:49:44.8372749Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-10T22:49:44.8372855Z       "requiredStages": [
2026-06-10T22:49:44.8372953Z         "impl",
2026-06-10T22:49:44.8373028Z         "unit"
2026-06-10T22:49:44.8373115Z       ],
2026-06-10T22:49:44.8373196Z       "stages": {
2026-06-10T22:49:44.8373277Z         "doc": {
2026-06-10T22:49:44.8373377Z           "complete": true,
2026-06-10T22:49:44.8373464Z           "evidence": [
2026-06-10T22:49:44.8373554Z             {
2026-06-10T22:49:44.8373845Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-10T22:49:44.8373940Z               "line": 60
2026-06-10T22:49:44.8374025Z             }
2026-06-10T22:49:44.8374112Z           ]
2026-06-10T22:49:44.8374201Z         },
2026-06-10T22:49:44.8374292Z         "impl": {
2026-06-10T22:49:44.8374384Z           "complete": true,
2026-06-10T22:49:44.8374479Z           "evidence": [
2026-06-10T22:49:44.8374660Z             {
2026-06-10T22:49:44.8374770Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8374864Z               "line": 2473
2026-06-10T22:49:44.8374950Z             },
2026-06-10T22:49:44.8375042Z             {
2026-06-10T22:49:44.8375137Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8375232Z               "line": 3756
2026-06-10T22:49:44.8375338Z             },
2026-06-10T22:49:44.8375424Z             {
2026-06-10T22:49:44.8375526Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8375621Z               "line": 3789
2026-06-10T22:49:44.8375713Z             }
2026-06-10T22:49:44.8375804Z           ]
2026-06-10T22:49:44.8375893Z         },
2026-06-10T22:49:44.8375980Z         "int": {
2026-06-10T22:49:44.8376080Z           "complete": false,
2026-06-10T22:49:44.8376179Z           "evidence": []
2026-06-10T22:49:44.8376265Z         },
2026-06-10T22:49:44.8376367Z         "unit": {
2026-06-10T22:49:44.8376466Z           "complete": true,
2026-06-10T22:49:44.8376561Z           "evidence": [
2026-06-10T22:49:44.8376648Z             {
2026-06-10T22:49:44.8376752Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8376847Z               "line": 7088
2026-06-10T22:49:44.8376934Z             },
2026-06-10T22:49:44.8377024Z             {
2026-06-10T22:49:44.8377129Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8377224Z               "line": 7162
2026-06-10T22:49:44.8377321Z             }
2026-06-10T22:49:44.8377409Z           ]
2026-06-10T22:49:44.8377495Z         }
2026-06-10T22:49:44.8377587Z       }
2026-06-10T22:49:44.8377673Z     },
2026-06-10T22:49:44.8377762Z     {
2026-06-10T22:49:44.8377866Z       "id": "REQ-SUBNET-5",
2026-06-10T22:49:44.8379142Z       "title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)",
2026-06-10T22:49:44.8379262Z       "requiredStages": [
2026-06-10T22:49:44.8379352Z         "impl",
2026-06-10T22:49:44.8379442Z         "unit",
2026-06-10T22:49:44.8379534Z         "int"
2026-06-10T22:49:44.8379619Z       ],
2026-06-10T22:49:44.8379709Z       "stages": {
2026-06-10T22:49:44.8379810Z         "doc": {
2026-06-10T22:49:44.8379910Z           "complete": false,
2026-06-10T22:49:44.8380005Z           "evidence": []
2026-06-10T22:49:44.8380091Z         },
2026-06-10T22:49:44.8380188Z         "impl": {
2026-06-10T22:49:44.8380286Z           "complete": true,
2026-06-10T22:49:44.8380377Z           "evidence": [
2026-06-10T22:49:44.8380469Z             {
2026-06-10T22:49:44.8380596Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-10T22:49:44.8380691Z               "line": 126
2026-06-10T22:49:44.8380781Z             },
2026-06-10T22:49:44.8380876Z             {
2026-06-10T22:49:44.8381012Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-10T22:49:44.8381108Z               "line": 413
2026-06-10T22:49:44.8381195Z             },
2026-06-10T22:49:44.8381280Z             {
2026-06-10T22:49:44.8381404Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-10T22:49:44.8381500Z               "line": 74
2026-06-10T22:49:44.8381590Z             },
2026-06-10T22:49:44.8381684Z             {
2026-06-10T22:49:44.8381805Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.8381900Z               "line": 357
2026-06-10T22:49:44.8382092Z             },
2026-06-10T22:49:44.8382186Z             {
2026-06-10T22:49:44.8382319Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-10T22:49:44.8382411Z               "line": 31
2026-06-10T22:49:44.8382500Z             },
2026-06-10T22:49:44.8382586Z             {
2026-06-10T22:49:44.8382721Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-10T22:49:44.8382920Z               "line": 50
2026-06-10T22:49:44.8383012Z             },
2026-06-10T22:49:44.8383102Z             {
2026-06-10T22:49:44.8383224Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-10T22:49:44.8383319Z               "line": 69
2026-06-10T22:49:44.8383415Z             },
2026-06-10T22:49:44.8383503Z             {
2026-06-10T22:49:44.8383627Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-10T22:49:44.8383728Z               "line": 113
2026-06-10T22:49:44.8383818Z             },
2026-06-10T22:49:44.8383903Z             {
2026-06-10T22:49:44.8384052Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-10T22:49:44.8384147Z               "line": 25
2026-06-10T22:49:44.8384237Z             },
2026-06-10T22:49:44.8384324Z             {
2026-06-10T22:49:44.8384452Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-10T22:49:44.8384547Z               "line": 34
2026-06-10T22:49:44.8384634Z             },
2026-06-10T22:49:44.8384729Z             {
2026-06-10T22:49:44.8384852Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-10T22:49:44.8384949Z               "line": 17
2026-06-10T22:49:44.8385034Z             },
2026-06-10T22:49:44.8385125Z             {
2026-06-10T22:49:44.8385234Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8385330Z               "line": 3714
2026-06-10T22:49:44.8385420Z             },
2026-06-10T22:49:44.8385506Z             {
2026-06-10T22:49:44.8385621Z               "path": "crates/spt/src/wansend.rs",
2026-06-10T22:49:44.8385715Z               "line": 419
2026-06-10T22:49:44.8385811Z             }
2026-06-10T22:49:44.8385898Z           ]
2026-06-10T22:49:44.8385984Z         },
2026-06-10T22:49:44.8386082Z         "int": {
2026-06-10T22:49:44.8386177Z           "complete": true,
2026-06-10T22:49:44.8386263Z           "evidence": [
2026-06-10T22:49:44.8386350Z             {
2026-06-10T22:49:44.8386487Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-10T22:49:44.8386583Z               "line": 814
2026-06-10T22:49:44.8386664Z             }
2026-06-10T22:49:44.8386754Z           ]
2026-06-10T22:49:44.8386835Z         },
2026-06-10T22:49:44.8386922Z         "unit": {
2026-06-10T22:49:44.8387017Z           "complete": true,
2026-06-10T22:49:44.8387111Z           "evidence": [
2026-06-10T22:49:44.8387198Z             {
2026-06-10T22:49:44.8387321Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-10T22:49:44.8387416Z               "line": 341
2026-06-10T22:49:44.8387504Z             },
2026-06-10T22:49:44.8387594Z             {
2026-06-10T22:49:44.8387726Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-10T22:49:44.8387819Z               "line": 151
2026-06-10T22:49:44.8387904Z             },
2026-06-10T22:49:44.8387988Z             {
2026-06-10T22:49:44.8388118Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-10T22:49:44.8388210Z               "line": 61
2026-06-10T22:49:44.8388298Z             },
2026-06-10T22:49:44.8388384Z             {
2026-06-10T22:49:44.8388503Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-10T22:49:44.8388597Z               "line": 111
2026-06-10T22:49:44.8388672Z             },
2026-06-10T22:49:44.8388763Z             {
2026-06-10T22:49:44.8388888Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-10T22:49:44.8389073Z               "line": 138
2026-06-10T22:49:44.8389164Z             },
2026-06-10T22:49:44.8389250Z             {
2026-06-10T22:49:44.8389364Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-10T22:49:44.8389560Z               "line": 148
2026-06-10T22:49:44.8389649Z             },
2026-06-10T22:49:44.8389741Z             {
2026-06-10T22:49:44.8389855Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8389950Z               "line": 6989
2026-06-10T22:49:44.8390036Z             }
2026-06-10T22:49:44.8390123Z           ]
2026-06-10T22:49:44.8390208Z         }
2026-06-10T22:49:44.8390385Z       }
2026-06-10T22:49:44.8390466Z     },
2026-06-10T22:49:44.8390561Z     {
2026-06-10T22:49:44.8390656Z       "id": "REQ-SUBNET-6",
2026-06-10T22:49:44.8391323Z       "title": "Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)",
2026-06-10T22:49:44.8391413Z       "requiredStages": [
2026-06-10T22:49:44.8391501Z         "impl",
2026-06-10T22:49:44.8391596Z         "unit"
2026-06-10T22:49:44.8391688Z       ],
2026-06-10T22:49:44.8391774Z       "stages": {
2026-06-10T22:49:44.8391854Z         "doc": {
2026-06-10T22:49:44.8391949Z           "complete": false,
2026-06-10T22:49:44.8392045Z           "evidence": []
2026-06-10T22:49:44.8392136Z         },
2026-06-10T22:49:44.8392226Z         "impl": {
2026-06-10T22:49:44.8392327Z           "complete": true,
2026-06-10T22:49:44.8392427Z           "evidence": [
2026-06-10T22:49:44.8392536Z             {
2026-06-10T22:49:44.8392661Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.8392755Z               "line": 238
2026-06-10T22:49:44.8392841Z             },
2026-06-10T22:49:44.8392928Z             {
2026-06-10T22:49:44.8393037Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8393132Z               "line": 3372
2026-06-10T22:49:44.8393223Z             },
2026-06-10T22:49:44.8393305Z             {
2026-06-10T22:49:44.8393413Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8393509Z               "line": 3389
2026-06-10T22:49:44.8393606Z             },
2026-06-10T22:49:44.8393695Z             {
2026-06-10T22:49:44.8393803Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8393908Z               "line": 3442
2026-06-10T22:49:44.8393993Z             },
2026-06-10T22:49:44.8394083Z             {
2026-06-10T22:49:44.8394192Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8394283Z               "line": 3465
2026-06-10T22:49:44.8394378Z             }
2026-06-10T22:49:44.8394463Z           ]
2026-06-10T22:49:44.8394555Z         },
2026-06-10T22:49:44.8394641Z         "int": {
2026-06-10T22:49:44.8394740Z           "complete": false,
2026-06-10T22:49:44.8394836Z           "evidence": []
2026-06-10T22:49:44.8394922Z         },
2026-06-10T22:49:44.8395017Z         "unit": {
2026-06-10T22:49:44.8395112Z           "complete": true,
2026-06-10T22:49:44.8395204Z           "evidence": [
2026-06-10T22:49:44.8395289Z             {
2026-06-10T22:49:44.8395403Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8395494Z               "line": 7003
2026-06-10T22:49:44.8395585Z             },
2026-06-10T22:49:44.8395670Z             {
2026-06-10T22:49:44.8395775Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8395867Z               "line": 7036
2026-06-10T22:49:44.8395956Z             },
2026-06-10T22:49:44.8396042Z             {
2026-06-10T22:49:44.8396148Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8396243Z               "line": 7045
2026-06-10T22:49:44.8396333Z             }
2026-06-10T22:49:44.8396420Z           ]
2026-06-10T22:49:44.8396506Z         }
2026-06-10T22:49:44.8396595Z       }
2026-06-10T22:49:44.8396685Z     },
2026-06-10T22:49:44.8396770Z     {
2026-06-10T22:49:44.8396867Z       "id": "REQ-SUBNET-7",
2026-06-10T22:49:44.8398493Z       "title": "Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)",
2026-06-10T22:49:44.8398732Z       "requiredStages": [
2026-06-10T22:49:44.8398830Z         "impl",
2026-06-10T22:49:44.8398920Z         "unit"
2026-06-10T22:49:44.8399097Z       ],
2026-06-10T22:49:44.8399190Z       "stages": {
2026-06-10T22:49:44.8399280Z         "doc": {
2026-06-10T22:49:44.8399376Z           "complete": false,
2026-06-10T22:49:44.8399468Z           "evidence": []
2026-06-10T22:49:44.8399556Z         },
2026-06-10T22:49:44.8399647Z         "impl": {
2026-06-10T22:49:44.8399748Z           "complete": true,
2026-06-10T22:49:44.8399848Z           "evidence": [
2026-06-10T22:49:44.8399933Z             {
2026-06-10T22:49:44.8400068Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-10T22:49:44.8400158Z               "line": 17
2026-06-10T22:49:44.8400248Z             },
2026-06-10T22:49:44.8400335Z             {
2026-06-10T22:49:44.8400463Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-10T22:49:44.8400558Z               "line": 103
2026-06-10T22:49:44.8400645Z             },
2026-06-10T22:49:44.8400749Z             {
2026-06-10T22:49:44.8400868Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-10T22:49:44.8400964Z               "line": 312
2026-06-10T22:49:44.8401054Z             },
2026-06-10T22:49:44.8401140Z             {
2026-06-10T22:49:44.8401260Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.8401355Z               "line": 388
2026-06-10T22:49:44.8401445Z             },
2026-06-10T22:49:44.8401531Z             {
2026-06-10T22:49:44.8401666Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.8401759Z               "line": 160
2026-06-10T22:49:44.8401849Z             },
2026-06-10T22:49:44.8401940Z             {
2026-06-10T22:49:44.8402066Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.8402161Z               "line": 417
2026-06-10T22:49:44.8402252Z             },
2026-06-10T22:49:44.8402344Z             {
2026-06-10T22:49:44.8402476Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.8402568Z               "line": 590
2026-06-10T22:49:44.8402658Z             },
2026-06-10T22:49:44.8402752Z             {
2026-06-10T22:49:44.8402883Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.8402972Z               "line": 630
2026-06-10T22:49:44.8403062Z             },
2026-06-10T22:49:44.8403149Z             {
2026-06-10T22:49:44.8403273Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.8403368Z               "line": 686
2026-06-10T22:49:44.8403453Z             },
2026-06-10T22:49:44.8403551Z             {
2026-06-10T22:49:44.8403683Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-10T22:49:44.8403778Z               "line": 136
2026-06-10T22:49:44.8403870Z             },
2026-06-10T22:49:44.8403963Z             {
2026-06-10T22:49:44.8404088Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.8404180Z               "line": 139
2026-06-10T22:49:44.8404278Z             }
2026-06-10T22:49:44.8404364Z           ]
2026-06-10T22:49:44.8404454Z         },
2026-06-10T22:49:44.8404544Z         "int": {
2026-06-10T22:49:44.8404643Z           "complete": false,
2026-06-10T22:49:44.8404737Z           "evidence": []
2026-06-10T22:49:44.8404824Z         },
2026-06-10T22:49:44.8404920Z         "unit": {
2026-06-10T22:49:44.8405014Z           "complete": true,
2026-06-10T22:49:44.8405105Z           "evidence": [
2026-06-10T22:49:44.8405196Z             {
2026-06-10T22:49:44.8405319Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-10T22:49:44.8405515Z               "line": 136
2026-06-10T22:49:44.8405601Z             },
2026-06-10T22:49:44.8405696Z             {
2026-06-10T22:49:44.8405816Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-10T22:49:44.8405911Z               "line": 156
2026-06-10T22:49:44.8406006Z             },
2026-06-10T22:49:44.8406089Z             {
2026-06-10T22:49:44.8406330Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.8406432Z               "line": 905
2026-06-10T22:49:44.8406521Z             },
2026-06-10T22:49:44.8406607Z             {
2026-06-10T22:49:44.8406737Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-10T22:49:44.8406826Z               "line": 927
2026-06-10T22:49:44.8406917Z             },
2026-06-10T22:49:44.8407004Z             {
2026-06-10T22:49:44.8407132Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-10T22:49:44.8407231Z               "line": 1419
2026-06-10T22:49:44.8407316Z             },
2026-06-10T22:49:44.8407408Z             {
2026-06-10T22:49:44.8407531Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-10T22:49:44.8407622Z               "line": 985
2026-06-10T22:49:44.8407713Z             }
2026-06-10T22:49:44.8407804Z           ]
2026-06-10T22:49:44.8407898Z         }
2026-06-10T22:49:44.8407985Z       }
2026-06-10T22:49:44.8408070Z     },
2026-06-10T22:49:44.8408170Z     {
2026-06-10T22:49:44.8408266Z       "id": "REQ-SUBNET-8",
2026-06-10T22:49:44.8409419Z       "title": "Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)",
2026-06-10T22:49:44.8409537Z       "requiredStages": [
2026-06-10T22:49:44.8409647Z         "impl",
2026-06-10T22:49:44.8409788Z         "unit"
2026-06-10T22:49:44.8409926Z       ],
2026-06-10T22:49:44.8410060Z       "stages": {
2026-06-10T22:49:44.8410188Z         "doc": {
2026-06-10T22:49:44.8410322Z           "complete": false,
2026-06-10T22:49:44.8410427Z           "evidence": []
2026-06-10T22:49:44.8410512Z         },
2026-06-10T22:49:44.8410604Z         "impl": {
2026-06-10T22:49:44.8410699Z           "complete": true,
2026-06-10T22:49:44.8410803Z           "evidence": [
2026-06-10T22:49:44.8410890Z             {
2026-06-10T22:49:44.8411009Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8411108Z               "line": 2761
2026-06-10T22:49:44.8411191Z             },
2026-06-10T22:49:44.8411285Z             {
2026-06-10T22:49:44.8411395Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8411491Z               "line": 2790
2026-06-10T22:49:44.8411582Z             },
2026-06-10T22:49:44.8411671Z             {
2026-06-10T22:49:44.8411781Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8411877Z               "line": 2807
2026-06-10T22:49:44.8411971Z             },
2026-06-10T22:49:44.8412057Z             {
2026-06-10T22:49:44.8412164Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8412258Z               "line": 3228
2026-06-10T22:49:44.8412357Z             }
2026-06-10T22:49:44.8412443Z           ]
2026-06-10T22:49:44.8412529Z         },
2026-06-10T22:49:44.8412631Z         "int": {
2026-06-10T22:49:44.8412726Z           "complete": false,
2026-06-10T22:49:44.8412827Z           "evidence": []
2026-06-10T22:49:44.8412914Z         },
2026-06-10T22:49:44.8413007Z         "unit": {
2026-06-10T22:49:44.8413104Z           "complete": true,
2026-06-10T22:49:44.8413199Z           "evidence": [
2026-06-10T22:49:44.8413284Z             {
2026-06-10T22:49:44.8413389Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8413491Z               "line": 7193
2026-06-10T22:49:44.8413576Z             }
2026-06-10T22:49:44.8413665Z           ]
2026-06-10T22:49:44.8413875Z         }
2026-06-10T22:49:44.8413961Z       }
2026-06-10T22:49:44.8414053Z     },
2026-06-10T22:49:44.8414139Z     {
2026-06-10T22:49:44.8414233Z       "id": "REQ-TERM-1",
2026-06-10T22:49:44.8414416Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-10T22:49:44.8414514Z       "requiredStages": [
2026-06-10T22:49:44.8414610Z         "impl",
2026-06-10T22:49:44.8414801Z         "unit"
2026-06-10T22:49:44.8414890Z       ],
2026-06-10T22:49:44.8415000Z       "stages": {
2026-06-10T22:49:44.8415133Z         "doc": {
2026-06-10T22:49:44.8415245Z           "complete": false,
2026-06-10T22:49:44.8415346Z           "evidence": []
2026-06-10T22:49:44.8415432Z         },
2026-06-10T22:49:44.8415527Z         "impl": {
2026-06-10T22:49:44.8415622Z           "complete": true,
2026-06-10T22:49:44.8415714Z           "evidence": [
2026-06-10T22:49:44.8415804Z             {
2026-06-10T22:49:44.8415927Z               "path": "crates/spt-term/src/pty.rs",
2026-06-10T22:49:44.8416024Z               "line": 59
2026-06-10T22:49:44.8416119Z             },
2026-06-10T22:49:44.8416208Z             {
2026-06-10T22:49:44.8416324Z               "path": "crates/spt-term/src/pty.rs",
2026-06-10T22:49:44.8416418Z               "line": 171
2026-06-10T22:49:44.8416509Z             },
2026-06-10T22:49:44.8416595Z             {
2026-06-10T22:49:44.8416719Z               "path": "crates/spt-term/src/surface.rs",
2026-06-10T22:49:44.8416824Z               "line": 100
2026-06-10T22:49:44.8416910Z             }
2026-06-10T22:49:44.8416997Z           ]
2026-06-10T22:49:44.8417081Z         },
2026-06-10T22:49:44.8417172Z         "int": {
2026-06-10T22:49:44.8417268Z           "complete": false,
2026-06-10T22:49:44.8417363Z           "evidence": []
2026-06-10T22:49:44.8417453Z         },
2026-06-10T22:49:44.8417540Z         "unit": {
2026-06-10T22:49:44.8417645Z           "complete": true,
2026-06-10T22:49:44.8417738Z           "evidence": [
2026-06-10T22:49:44.8417828Z             {
2026-06-10T22:49:44.8417953Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-10T22:49:44.8418053Z               "line": 24
2026-06-10T22:49:44.8418143Z             },
2026-06-10T22:49:44.8418225Z             {
2026-06-10T22:49:44.8418349Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-10T22:49:44.8418444Z               "line": 56
2026-06-10T22:49:44.8418535Z             }
2026-06-10T22:49:44.8418626Z           ]
2026-06-10T22:49:44.8418716Z         }
2026-06-10T22:49:44.8418806Z       }
2026-06-10T22:49:44.8418889Z     },
2026-06-10T22:49:44.8419073Z     {
2026-06-10T22:49:44.8419169Z       "id": "REQ-TERM-2",
2026-06-10T22:49:44.8419355Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-10T22:49:44.8419450Z       "requiredStages": [
2026-06-10T22:49:44.8419542Z         "impl",
2026-06-10T22:49:44.8419636Z         "unit"
2026-06-10T22:49:44.8419722Z       ],
2026-06-10T22:49:44.8419818Z       "stages": {
2026-06-10T22:49:44.8419908Z         "doc": {
2026-06-10T22:49:44.8420012Z           "complete": false,
2026-06-10T22:49:44.8420107Z           "evidence": []
2026-06-10T22:49:44.8420197Z         },
2026-06-10T22:49:44.8420291Z         "impl": {
2026-06-10T22:49:44.8420386Z           "complete": true,
2026-06-10T22:49:44.8420482Z           "evidence": [
2026-06-10T22:49:44.8420568Z             {
2026-06-10T22:49:44.8420695Z               "path": "crates/spt-term/src/surface.rs",
2026-06-10T22:49:44.8420787Z               "line": 117
2026-06-10T22:49:44.8420878Z             },
2026-06-10T22:49:44.8420963Z             {
2026-06-10T22:49:44.8421082Z               "path": "crates/spt-term/src/surface.rs",
2026-06-10T22:49:44.8421174Z               "line": 127
2026-06-10T22:49:44.8421264Z             }
2026-06-10T22:49:44.8421353Z           ]
2026-06-10T22:49:44.8421441Z         },
2026-06-10T22:49:44.8421536Z         "int": {
2026-06-10T22:49:44.8421640Z           "complete": false,
2026-06-10T22:49:44.8421741Z           "evidence": []
2026-06-10T22:49:44.8421831Z         },
2026-06-10T22:49:44.8422022Z         "unit": {
2026-06-10T22:49:44.8422123Z           "complete": true,
2026-06-10T22:49:44.8422212Z           "evidence": [
2026-06-10T22:49:44.8422303Z             {
2026-06-10T22:49:44.8422428Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-10T22:49:44.8422517Z               "line": 46
2026-06-10T22:49:44.8422608Z             },
2026-06-10T22:49:44.8422776Z             {
2026-06-10T22:49:44.8422898Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-10T22:49:44.8422988Z               "line": 77
2026-06-10T22:49:44.8423074Z             }
2026-06-10T22:49:44.8423159Z           ]
2026-06-10T22:49:44.8423243Z         }
2026-06-10T22:49:44.8423335Z       }
2026-06-10T22:49:44.8423426Z     },
2026-06-10T22:49:44.8423506Z     {
2026-06-10T22:49:44.8423596Z       "id": "REQ-TERM-3",
2026-06-10T22:49:44.8423741Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-10T22:49:44.8423840Z       "requiredStages": [
2026-06-10T22:49:44.8423925Z         "impl",
2026-06-10T22:49:44.8424012Z         "unit"
2026-06-10T22:49:44.8424102Z       ],
2026-06-10T22:49:44.8424188Z       "stages": {
2026-06-10T22:49:44.8424269Z         "doc": {
2026-06-10T22:49:44.8424370Z           "complete": false,
2026-06-10T22:49:44.8424470Z           "evidence": []
2026-06-10T22:49:44.8424550Z         },
2026-06-10T22:49:44.8424632Z         "impl": {
2026-06-10T22:49:44.8424723Z           "complete": true,
2026-06-10T22:49:44.8424818Z           "evidence": [
2026-06-10T22:49:44.8424899Z             {
2026-06-10T22:49:44.8425024Z               "path": "crates/spt-term/src/stream.rs",
2026-06-10T22:49:44.8425112Z               "line": 71
2026-06-10T22:49:44.8425199Z             }
2026-06-10T22:49:44.8425286Z           ]
2026-06-10T22:49:44.8425376Z         },
2026-06-10T22:49:44.8425489Z         "int": {
2026-06-10T22:49:44.8425570Z           "complete": false,
2026-06-10T22:49:44.8425670Z           "evidence": []
2026-06-10T22:49:44.8425758Z         },
2026-06-10T22:49:44.8425848Z         "unit": {
2026-06-10T22:49:44.8425939Z           "complete": true,
2026-06-10T22:49:44.8426022Z           "evidence": [
2026-06-10T22:49:44.8426106Z             {
2026-06-10T22:49:44.8426221Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-10T22:49:44.8426321Z               "line": 37
2026-06-10T22:49:44.8426406Z             },
2026-06-10T22:49:44.8426487Z             {
2026-06-10T22:49:44.8426612Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-10T22:49:44.8426698Z               "line": 67
2026-06-10T22:49:44.8426783Z             }
2026-06-10T22:49:44.8426860Z           ]
2026-06-10T22:49:44.8426946Z         }
2026-06-10T22:49:44.8427022Z       }
2026-06-10T22:49:44.8427103Z     },
2026-06-10T22:49:44.8427189Z     {
2026-06-10T22:49:44.8427289Z       "id": "REQ-TERM-4",
2026-06-10T22:49:44.8427636Z       "title": "Live activity buffer (PTY digest): adapter-supplied patterns over broker PTY, spt digest pull + delta-stream, opt-in Path-B log",
2026-06-10T22:49:44.8427742Z       "requiredStages": [
2026-06-10T22:49:44.8427833Z         "impl",
2026-06-10T22:49:44.8427919Z         "unit",
2026-06-10T22:49:44.8427999Z         "int"
2026-06-10T22:49:44.8428085Z       ],
2026-06-10T22:49:44.8428172Z       "stages": {
2026-06-10T22:49:44.8428257Z         "doc": {
2026-06-10T22:49:44.8428346Z           "complete": true,
2026-06-10T22:49:44.8428442Z           "evidence": [
2026-06-10T22:49:44.8428538Z             {
2026-06-10T22:49:44.8428642Z               "path": "docs/MANIFEST.md",
2026-06-10T22:49:44.8428742Z               "line": 115
2026-06-10T22:49:44.8428819Z             }
2026-06-10T22:49:44.8428900Z           ]
2026-06-10T22:49:44.8429071Z         },
2026-06-10T22:49:44.8429162Z         "impl": {
2026-06-10T22:49:44.8429262Z           "complete": true,
2026-06-10T22:49:44.8429357Z           "evidence": [
2026-06-10T22:49:44.8429449Z             {
2026-06-10T22:49:44.8429572Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-10T22:49:44.8429667Z               "line": 624
2026-06-10T22:49:44.8429839Z             },
2026-06-10T22:49:44.8429934Z             {
2026-06-10T22:49:44.8430059Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-10T22:49:44.8430149Z               "line": 41
2026-06-10T22:49:44.8430244Z             },
2026-06-10T22:49:44.8430320Z             {
2026-06-10T22:49:44.8430530Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-10T22:49:44.8430629Z               "line": 91
2026-06-10T22:49:44.8430715Z             },
2026-06-10T22:49:44.8430795Z             {
2026-06-10T22:49:44.8430913Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-10T22:49:44.8431008Z               "line": 152
2026-06-10T22:49:44.8431090Z             },
2026-06-10T22:49:44.8431185Z             {
2026-06-10T22:49:44.8431299Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-10T22:49:44.8431390Z               "line": 221
2026-06-10T22:49:44.8431471Z             },
2026-06-10T22:49:44.8431552Z             {
2026-06-10T22:49:44.8431687Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-10T22:49:44.8431777Z               "line": 20
2026-06-10T22:49:44.8431862Z             },
2026-06-10T22:49:44.8431943Z             {
2026-06-10T22:49:44.8432067Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-10T22:49:44.8432162Z               "line": 222
2026-06-10T22:49:44.8432253Z             },
2026-06-10T22:49:44.8432335Z             {
2026-06-10T22:49:44.8432453Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-10T22:49:44.8432548Z               "line": 242
2026-06-10T22:49:44.8432636Z             },
2026-06-10T22:49:44.8432730Z             {
2026-06-10T22:49:44.8432844Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-10T22:49:44.8432931Z               "line": 625
2026-06-10T22:49:44.8433021Z             },
2026-06-10T22:49:44.8433106Z             {
2026-06-10T22:49:44.8433222Z               "path": "crates/spt-term/src/digest.rs",
2026-06-10T22:49:44.8433312Z               "line": 162
2026-06-10T22:49:44.8433402Z             },
2026-06-10T22:49:44.8433482Z             {
2026-06-10T22:49:44.8433602Z               "path": "crates/spt-term/src/digest.rs",
2026-06-10T22:49:44.8433695Z               "line": 206
2026-06-10T22:49:44.8433771Z             },
2026-06-10T22:49:44.8433866Z             {
2026-06-10T22:49:44.8433977Z               "path": "crates/spt-term/src/digest.rs",
2026-06-10T22:49:44.8434066Z               "line": 233
2026-06-10T22:49:44.8434161Z             },
2026-06-10T22:49:44.8434243Z             {
2026-06-10T22:49:44.8434358Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8434452Z               "line": 860
2026-06-10T22:49:44.8434539Z             }
2026-06-10T22:49:44.8434620Z           ]
2026-06-10T22:49:44.8434701Z         },
2026-06-10T22:49:44.8434795Z         "int": {
2026-06-10T22:49:44.8434892Z           "complete": true,
2026-06-10T22:49:44.8434987Z           "evidence": [
2026-06-10T22:49:44.8435068Z             {
2026-06-10T22:49:44.8435198Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-10T22:49:44.8435292Z               "line": 18
2026-06-10T22:49:44.8435373Z             }
2026-06-10T22:49:44.8435469Z           ]
2026-06-10T22:49:44.8435560Z         },
2026-06-10T22:49:44.8435654Z         "unit": {
2026-06-10T22:49:44.8435749Z           "complete": true,
2026-06-10T22:49:44.8435851Z           "evidence": [
2026-06-10T22:49:44.8435936Z             {
2026-06-10T22:49:44.8436054Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-10T22:49:44.8436144Z               "line": 259
2026-06-10T22:49:44.8436234Z             },
2026-06-10T22:49:44.8436323Z             {
2026-06-10T22:49:44.8436442Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-10T22:49:44.8436534Z               "line": 277
2026-06-10T22:49:44.8436619Z             },
2026-06-10T22:49:44.8436699Z             {
2026-06-10T22:49:44.8436815Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-10T22:49:44.8436990Z               "line": 289
2026-06-10T22:49:44.8437076Z             },
2026-06-10T22:49:44.8437154Z             {
2026-06-10T22:49:44.8437273Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-10T22:49:44.8437367Z               "line": 304
2026-06-10T22:49:44.8437444Z             },
2026-06-10T22:49:44.8439636Z             {
2026-06-10T22:49:44.8439931Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-10T22:49:44.8440042Z               "line": 320
2026-06-10T22:49:44.8440132Z             },
2026-06-10T22:49:44.8440217Z             {
2026-06-10T22:49:44.8440353Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-10T22:49:44.8440446Z               "line": 346
2026-06-10T22:49:44.8440537Z             },
2026-06-10T22:49:44.8440624Z             {
2026-06-10T22:49:44.8440751Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-10T22:49:44.8440847Z               "line": 361
2026-06-10T22:49:44.8440939Z             },
2026-06-10T22:49:44.8441034Z             {
2026-06-10T22:49:44.8441147Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-10T22:49:44.8441242Z               "line": 391
2026-06-10T22:49:44.8441328Z             },
2026-06-10T22:49:44.8441411Z             {
2026-06-10T22:49:44.8441539Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-10T22:49:44.8441631Z               "line": 365
2026-06-10T22:49:44.8441722Z             },
2026-06-10T22:49:44.8441807Z             {
2026-06-10T22:49:44.8441931Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-10T22:49:44.8442032Z               "line": 382
2026-06-10T22:49:44.8442121Z             },
2026-06-10T22:49:44.8442208Z             {
2026-06-10T22:49:44.8442317Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-10T22:49:44.8442412Z               "line": 411
2026-06-10T22:49:44.8442493Z             },
2026-06-10T22:49:44.8442585Z             {
2026-06-10T22:49:44.8442699Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-10T22:49:44.8442798Z               "line": 428
2026-06-10T22:49:44.8442890Z             },
2026-06-10T22:49:44.8442980Z             {
2026-06-10T22:49:44.8443094Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-10T22:49:44.8443186Z               "line": 828
2026-06-10T22:49:44.8443276Z             },
2026-06-10T22:49:44.8443361Z             {
2026-06-10T22:49:44.8443482Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-10T22:49:44.8443577Z               "line": 835
2026-06-10T22:49:44.8443661Z             },
2026-06-10T22:49:44.8443752Z             {
2026-06-10T22:49:44.8443864Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-10T22:49:44.8443952Z               "line": 850
2026-06-10T22:49:44.8444042Z             },
2026-06-10T22:49:44.8444128Z             {
2026-06-10T22:49:44.8444241Z               "path": "crates/spt-term/src/digest.rs",
2026-06-10T22:49:44.8444336Z               "line": 420
2026-06-10T22:49:44.8444426Z             },
2026-06-10T22:49:44.8444517Z             {
2026-06-10T22:49:44.8444631Z               "path": "crates/spt-term/src/digest.rs",
2026-06-10T22:49:44.8444721Z               "line": 458
2026-06-10T22:49:44.8444813Z             },
2026-06-10T22:49:44.8444894Z             {
2026-06-10T22:49:44.8445003Z               "path": "crates/spt-term/src/digest.rs",
2026-06-10T22:49:44.8445099Z               "line": 471
2026-06-10T22:49:44.8445189Z             },
2026-06-10T22:49:44.8445280Z             {
2026-06-10T22:49:44.8445390Z               "path": "crates/spt-term/src/digest.rs",
2026-06-10T22:49:44.8445490Z               "line": 497
2026-06-10T22:49:44.8445570Z             },
2026-06-10T22:49:44.8445661Z             {
2026-06-10T22:49:44.8445772Z               "path": "crates/spt-term/src/digest.rs",
2026-06-10T22:49:44.8445852Z               "line": 524
2026-06-10T22:49:44.8445938Z             },
2026-06-10T22:49:44.8446014Z             {
2026-06-10T22:49:44.8446134Z               "path": "crates/spt-term/tests/digest.rs",
2026-06-10T22:49:44.8446358Z               "line": 32
2026-06-10T22:49:44.8446453Z             },
2026-06-10T22:49:44.8446552Z             {
2026-06-10T22:49:44.8446685Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8446790Z               "line": 6761
2026-06-10T22:49:44.8446884Z             }
2026-06-10T22:49:44.8446978Z           ]
2026-06-10T22:49:44.8447069Z         }
2026-06-10T22:49:44.8447231Z       }
2026-06-10T22:49:44.8447326Z     },
2026-06-10T22:49:44.8447418Z     {
2026-06-10T22:49:44.8447522Z       "id": "REQ-UPD-1",
2026-06-10T22:49:44.8447651Z       "title": "Peer-propagated update over P2P",
2026-06-10T22:49:44.8447756Z       "requiredStages": [
2026-06-10T22:49:44.8447847Z         "impl",
2026-06-10T22:49:44.8447937Z         "unit",
2026-06-10T22:49:44.8448023Z         "int"
2026-06-10T22:49:44.8448113Z       ],
2026-06-10T22:49:44.8448208Z       "stages": {
2026-06-10T22:49:44.8448300Z         "doc": {
2026-06-10T22:49:44.8448405Z           "complete": false,
2026-06-10T22:49:44.8448514Z           "evidence": []
2026-06-10T22:49:44.8448605Z         },
2026-06-10T22:49:44.8448701Z         "impl": {
2026-06-10T22:49:44.8448795Z           "complete": true,
2026-06-10T22:49:44.8448891Z           "evidence": [
2026-06-10T22:49:44.8449053Z             {
2026-06-10T22:49:44.8449196Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-10T22:49:44.8449297Z               "line": 28
2026-06-10T22:49:44.8449391Z             },
2026-06-10T22:49:44.8449481Z             {
2026-06-10T22:49:44.8449610Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-10T22:49:44.8449706Z               "line": 103
2026-06-10T22:49:44.8449795Z             },
2026-06-10T22:49:44.8449915Z             {
2026-06-10T22:49:44.8450045Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-10T22:49:44.8450138Z               "line": 342
2026-06-10T22:49:44.8450230Z             },
2026-06-10T22:49:44.8450320Z             {
2026-06-10T22:49:44.8450448Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8450545Z               "line": 22
2026-06-10T22:49:44.8450635Z             },
2026-06-10T22:49:44.8450726Z             {
2026-06-10T22:49:44.8450845Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8450941Z               "line": 205
2026-06-10T22:49:44.8451031Z             },
2026-06-10T22:49:44.8451121Z             {
2026-06-10T22:49:44.8451242Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8451340Z               "line": 281
2026-06-10T22:49:44.8451436Z             },
2026-06-10T22:49:44.8451523Z             {
2026-06-10T22:49:44.8451640Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8451731Z               "line": 338
2026-06-10T22:49:44.8451821Z             },
2026-06-10T22:49:44.8451911Z             {
2026-06-10T22:49:44.8452033Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-10T22:49:44.8452129Z               "line": 37
2026-06-10T22:49:44.8452220Z             }
2026-06-10T22:49:44.8452310Z           ]
2026-06-10T22:49:44.8452400Z         },
2026-06-10T22:49:44.8452491Z         "int": {
2026-06-10T22:49:44.8452592Z           "complete": true,
2026-06-10T22:49:44.8452686Z           "evidence": [
2026-06-10T22:49:44.8452778Z             {
2026-06-10T22:49:44.8452906Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-10T22:49:44.8453006Z               "line": 207
2026-06-10T22:49:44.8453097Z             },
2026-06-10T22:49:44.8453187Z             {
2026-06-10T22:49:44.8453315Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-10T22:49:44.8453407Z               "line": 987
2026-06-10T22:49:44.8453498Z             }
2026-06-10T22:49:44.8453583Z           ]
2026-06-10T22:49:44.8453678Z         },
2026-06-10T22:49:44.8453765Z         "unit": {
2026-06-10T22:49:44.8453864Z           "complete": true,
2026-06-10T22:49:44.8453959Z           "evidence": [
2026-06-10T22:49:44.8454047Z             {
2026-06-10T22:49:44.8454279Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8454376Z               "line": 464
2026-06-10T22:49:44.8454470Z             },
2026-06-10T22:49:44.8454555Z             {
2026-06-10T22:49:44.8454679Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8454774Z               "line": 590
2026-06-10T22:49:44.8454867Z             },
2026-06-10T22:49:44.8455049Z             {
2026-06-10T22:49:44.8455186Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-10T22:49:44.8455281Z               "line": 277
2026-06-10T22:49:44.8455369Z             },
2026-06-10T22:49:44.8455464Z             {
2026-06-10T22:49:44.8455587Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-10T22:49:44.8455679Z               "line": 124
2026-06-10T22:49:44.8455769Z             },
2026-06-10T22:49:44.8455858Z             {
2026-06-10T22:49:44.8455978Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-10T22:49:44.8456074Z               "line": 200
2026-06-10T22:49:44.8456169Z             }
2026-06-10T22:49:44.8456264Z           ]
2026-06-10T22:49:44.8456356Z         }
2026-06-10T22:49:44.8456445Z       }
2026-06-10T22:49:44.8456531Z     },
2026-06-10T22:49:44.8456628Z     {
2026-06-10T22:49:44.8456727Z       "id": "REQ-UPD-2",
2026-06-10T22:49:44.8456879Z       "title": "All binaries signature-verified before handoff",
2026-06-10T22:49:44.8456976Z       "requiredStages": [
2026-06-10T22:49:44.8457070Z         "impl",
2026-06-10T22:49:44.8457159Z         "unit"
2026-06-10T22:49:44.8457245Z       ],
2026-06-10T22:49:44.8457336Z       "stages": {
2026-06-10T22:49:44.8457429Z         "doc": {
2026-06-10T22:49:44.8457529Z           "complete": false,
2026-06-10T22:49:44.8457620Z           "evidence": []
2026-06-10T22:49:44.8457702Z         },
2026-06-10T22:49:44.8457796Z         "impl": {
2026-06-10T22:49:44.8457891Z           "complete": true,
2026-06-10T22:49:44.8457988Z           "evidence": [
2026-06-10T22:49:44.8458078Z             {
2026-06-10T22:49:44.8458206Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-10T22:49:44.8458307Z               "line": 343
2026-06-10T22:49:44.8458388Z             },
2026-06-10T22:49:44.8458477Z             {
2026-06-10T22:49:44.8458593Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-10T22:49:44.8458678Z               "line": 469
2026-06-10T22:49:44.8458759Z             },
2026-06-10T22:49:44.8458855Z             {
2026-06-10T22:49:44.8459046Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8459141Z               "line": 29
2026-06-10T22:49:44.8459232Z             },
2026-06-10T22:49:44.8459317Z             {
2026-06-10T22:49:44.8459441Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8459533Z               "line": 271
2026-06-10T22:49:44.8459627Z             },
2026-06-10T22:49:44.8459704Z             {
2026-06-10T22:49:44.8459814Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8459914Z               "line": 288
2026-06-10T22:49:44.8460003Z             },
2026-06-10T22:49:44.8460098Z             {
2026-06-10T22:49:44.8460209Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8460308Z               "line": 408
2026-06-10T22:49:44.8460398Z             },
2026-06-10T22:49:44.8460485Z             {
2026-06-10T22:49:44.8460605Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8460694Z               "line": 540
2026-06-10T22:49:44.8460786Z             },
2026-06-10T22:49:44.8460871Z             {
2026-06-10T22:49:44.8460994Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-10T22:49:44.8461080Z               "line": 155
2026-06-10T22:49:44.8461167Z             }
2026-06-10T22:49:44.8461257Z           ]
2026-06-10T22:49:44.8461347Z         },
2026-06-10T22:49:44.8461434Z         "int": {
2026-06-10T22:49:44.8461529Z           "complete": false,
2026-06-10T22:49:44.8461634Z           "evidence": []
2026-06-10T22:49:44.8461825Z         },
2026-06-10T22:49:44.8461914Z         "unit": {
2026-06-10T22:49:44.8462016Z           "complete": true,
2026-06-10T22:49:44.8462112Z           "evidence": [
2026-06-10T22:49:44.8462201Z             {
2026-06-10T22:49:44.8462324Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8462414Z               "line": 697
2026-06-10T22:49:44.8462598Z             },
2026-06-10T22:49:44.8462679Z             {
2026-06-10T22:49:44.8462804Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8462884Z               "line": 758
2026-06-10T22:49:44.8462970Z             },
2026-06-10T22:49:44.8463056Z             {
2026-06-10T22:49:44.8463176Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8463270Z               "line": 772
2026-06-10T22:49:44.8463357Z             },
2026-06-10T22:49:44.8463442Z             {
2026-06-10T22:49:44.8463561Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8463662Z               "line": 788
2026-06-10T22:49:44.8463743Z             },
2026-06-10T22:49:44.8463829Z             {
2026-06-10T22:49:44.8463947Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8464039Z               "line": 879
2026-06-10T22:49:44.8464129Z             },
2026-06-10T22:49:44.8464210Z             {
2026-06-10T22:49:44.8464335Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-10T22:49:44.8464429Z               "line": 414
2026-06-10T22:49:44.8464510Z             },
2026-06-10T22:49:44.8464597Z             {
2026-06-10T22:49:44.8464711Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-10T22:49:44.8464806Z               "line": 427
2026-06-10T22:49:44.8464887Z             },
2026-06-10T22:49:44.8464974Z             {
2026-06-10T22:49:44.8465106Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-10T22:49:44.8465200Z               "line": 410
2026-06-10T22:49:44.8465277Z             }
2026-06-10T22:49:44.8465367Z           ]
2026-06-10T22:49:44.8465456Z         }
2026-06-10T22:49:44.8465541Z       }
2026-06-10T22:49:44.8465618Z     },
2026-06-10T22:49:44.8465700Z     {
2026-06-10T22:49:44.8465794Z       "id": "REQ-UPD-3",
2026-06-10T22:49:44.8465967Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-10T22:49:44.8466057Z       "requiredStages": [
2026-06-10T22:49:44.8466157Z         "impl",
2026-06-10T22:49:44.8466244Z         "unit",
2026-06-10T22:49:44.8466333Z         "int"
2026-06-10T22:49:44.8466414Z       ],
2026-06-10T22:49:44.8466500Z       "stages": {
2026-06-10T22:49:44.8466592Z         "doc": {
2026-06-10T22:49:44.8466681Z           "complete": false,
2026-06-10T22:49:44.8466777Z           "evidence": []
2026-06-10T22:49:44.8466863Z         },
2026-06-10T22:49:44.8466953Z         "impl": {
2026-06-10T22:49:44.8467053Z           "complete": true,
2026-06-10T22:49:44.8467144Z           "evidence": [
2026-06-10T22:49:44.8467231Z             {
2026-06-10T22:49:44.8467358Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-10T22:49:44.8467449Z               "line": 40
2026-06-10T22:49:44.8467536Z             },
2026-06-10T22:49:44.8467625Z             {
2026-06-10T22:49:44.8467743Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-10T22:49:44.8467839Z               "line": 87
2026-06-10T22:49:44.8467924Z             },
2026-06-10T22:49:44.8468004Z             {
2026-06-10T22:49:44.8468127Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-10T22:49:44.8468219Z               "line": 797
2026-06-10T22:49:44.8468313Z             },
2026-06-10T22:49:44.8468403Z             {
2026-06-10T22:49:44.8468519Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-10T22:49:44.8468624Z               "line": 717
2026-06-10T22:49:44.8468709Z             },
2026-06-10T22:49:44.8468801Z             {
2026-06-10T22:49:44.8468919Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-10T22:49:44.8469091Z               "line": 26
2026-06-10T22:49:44.8469282Z             },
2026-06-10T22:49:44.8469372Z             {
2026-06-10T22:49:44.8469492Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-10T22:49:44.8469582Z               "line": 114
2026-06-10T22:49:44.8469663Z             },
2026-06-10T22:49:44.8469745Z             {
2026-06-10T22:49:44.8469863Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-10T22:49:44.8470050Z               "line": 246
2026-06-10T22:49:44.8470140Z             },
2026-06-10T22:49:44.8470225Z             {
2026-06-10T22:49:44.8470331Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8470427Z               "line": 1767
2026-06-10T22:49:44.8470511Z             }
2026-06-10T22:49:44.8470601Z           ]
2026-06-10T22:49:44.8470687Z         },
2026-06-10T22:49:44.8470769Z         "int": {
2026-06-10T22:49:44.8470864Z           "complete": true,
2026-06-10T22:49:44.8470953Z           "evidence": [
2026-06-10T22:49:44.8471036Z             {
2026-06-10T22:49:44.8471155Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-10T22:49:44.8471254Z               "line": 58
2026-06-10T22:49:44.8471346Z             }
2026-06-10T22:49:44.8471436Z           ]
2026-06-10T22:49:44.8471517Z         },
2026-06-10T22:49:44.8471597Z         "unit": {
2026-06-10T22:49:44.8471698Z           "complete": true,
2026-06-10T22:49:44.8471793Z           "evidence": [
2026-06-10T22:49:44.8471884Z             {
2026-06-10T22:49:44.8472009Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-10T22:49:44.8472099Z               "line": 532
2026-06-10T22:49:44.8472189Z             },
2026-06-10T22:49:44.8472280Z             {
2026-06-10T22:49:44.8472409Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-10T22:49:44.8472504Z               "line": 582
2026-06-10T22:49:44.8472585Z             },
2026-06-10T22:49:44.8472681Z             {
2026-06-10T22:49:44.8472794Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-10T22:49:44.8472889Z               "line": 650
2026-06-10T22:49:44.8472965Z             },
2026-06-10T22:49:44.8473060Z             {
2026-06-10T22:49:44.8473177Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-10T22:49:44.8473268Z               "line": 950
2026-06-10T22:49:44.8473364Z             },
2026-06-10T22:49:44.8473454Z             {
2026-06-10T22:49:44.8473578Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-10T22:49:44.8473669Z               "line": 271
2026-06-10T22:49:44.8473769Z             },
2026-06-10T22:49:44.8473859Z             {
2026-06-10T22:49:44.8473975Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-10T22:49:44.8474069Z               "line": 295
2026-06-10T22:49:44.8474159Z             },
2026-06-10T22:49:44.8474246Z             {
2026-06-10T22:49:44.8474360Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-10T22:49:44.8474459Z               "line": 316
2026-06-10T22:49:44.8474556Z             },
2026-06-10T22:49:44.8474642Z             {
2026-06-10T22:49:44.8474765Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-10T22:49:44.8474857Z               "line": 332
2026-06-10T22:49:44.8474947Z             }
2026-06-10T22:49:44.8475037Z           ]
2026-06-10T22:49:44.8475128Z         }
2026-06-10T22:49:44.8475215Z       }
2026-06-10T22:49:44.8475300Z     },
2026-06-10T22:49:44.8475390Z     {
2026-06-10T22:49:44.8475491Z       "id": "REQ-UPD-4",
2026-06-10T22:49:44.8475680Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-10T22:49:44.8475779Z       "requiredStages": [
2026-06-10T22:49:44.8475875Z         "impl",
2026-06-10T22:49:44.8475969Z         "unit"
2026-06-10T22:49:44.8476054Z       ],
2026-06-10T22:49:44.8476150Z       "stages": {
2026-06-10T22:49:44.8476236Z         "doc": {
2026-06-10T22:49:44.8476340Z           "complete": false,
2026-06-10T22:49:44.8476435Z           "evidence": []
2026-06-10T22:49:44.8476527Z         },
2026-06-10T22:49:44.8476617Z         "impl": {
2026-06-10T22:49:44.8476804Z           "complete": true,
2026-06-10T22:49:44.8476898Z           "evidence": [
2026-06-10T22:49:44.8476983Z             {
2026-06-10T22:49:44.8477108Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-10T22:49:44.8477199Z               "line": 41
2026-06-10T22:49:44.8477289Z             },
2026-06-10T22:49:44.8477379Z             {
2026-06-10T22:49:44.8477575Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-10T22:49:44.8477671Z               "line": 88
2026-06-10T22:49:44.8477762Z             },
2026-06-10T22:49:44.8477852Z             {
2026-06-10T22:49:44.8477971Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-10T22:49:44.8478067Z               "line": 23
2026-06-10T22:49:44.8478158Z             },
2026-06-10T22:49:44.8478242Z             {
2026-06-10T22:49:44.8478366Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-10T22:49:44.8478456Z               "line": 56
2026-06-10T22:49:44.8478554Z             },
2026-06-10T22:49:44.8478644Z             {
2026-06-10T22:49:44.8478764Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-10T22:49:44.8478859Z               "line": 77
2026-06-10T22:49:44.8479031Z             },
2026-06-10T22:49:44.8479122Z             {
2026-06-10T22:49:44.8479240Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-10T22:49:44.8479341Z               "line": 186
2026-06-10T22:49:44.8479432Z             },
2026-06-10T22:49:44.8479522Z             {
2026-06-10T22:49:44.8479647Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-10T22:49:44.8479737Z               "line": 108
2026-06-10T22:49:44.8479827Z             },
2026-06-10T22:49:44.8479918Z             {
2026-06-10T22:49:44.8480038Z               "path": "crates/spt-store/src/info.rs",
2026-06-10T22:49:44.8480133Z               "line": 170
2026-06-10T22:49:44.8480218Z             },
2026-06-10T22:49:44.8480310Z             {
2026-06-10T22:49:44.8480423Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8480523Z               "line": 1766
2026-06-10T22:49:44.8480610Z             }
2026-06-10T22:49:44.8480700Z           ]
2026-06-10T22:49:44.8480790Z         },
2026-06-10T22:49:44.8480881Z         "int": {
2026-06-10T22:49:44.8480978Z           "complete": false,
2026-06-10T22:49:44.8481071Z           "evidence": []
2026-06-10T22:49:44.8481166Z         },
2026-06-10T22:49:44.8481266Z         "unit": {
2026-06-10T22:49:44.8481367Z           "complete": true,
2026-06-10T22:49:44.8481462Z           "evidence": [
2026-06-10T22:49:44.8481547Z             {
2026-06-10T22:49:44.8481672Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-10T22:49:44.8481767Z               "line": 578
2026-06-10T22:49:44.8481857Z             },
2026-06-10T22:49:44.8481949Z             {
2026-06-10T22:49:44.8482072Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-10T22:49:44.8482167Z               "line": 703
2026-06-10T22:49:44.8482259Z             },
2026-06-10T22:49:44.8482349Z             {
2026-06-10T22:49:44.8482467Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-10T22:49:44.8482564Z               "line": 384
2026-06-10T22:49:44.8482654Z             },
2026-06-10T22:49:44.8482744Z             {
2026-06-10T22:49:44.8482865Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-10T22:49:44.8482955Z               "line": 102
2026-06-10T22:49:44.8483054Z             },
2026-06-10T22:49:44.8483140Z             {
2026-06-10T22:49:44.8483260Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-10T22:49:44.8483350Z               "line": 123
2026-06-10T22:49:44.8483444Z             },
2026-06-10T22:49:44.8483540Z             {
2026-06-10T22:49:44.8483652Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-10T22:49:44.8483747Z               "line": 142
2026-06-10T22:49:44.8483838Z             },
2026-06-10T22:49:44.8483929Z             {
2026-06-10T22:49:44.8484038Z               "path": "crates/spt-store/src/info.rs",
2026-06-10T22:49:44.8484239Z               "line": 386
2026-06-10T22:49:44.8484329Z             },
2026-06-10T22:49:44.8484414Z             {
2026-06-10T22:49:44.8484535Z               "path": "crates/spt-store/src/perch.rs",
2026-06-10T22:49:44.8484625Z               "line": 556
2026-06-10T22:49:44.8484719Z             },
2026-06-10T22:49:44.8484802Z             {
2026-06-10T22:49:44.8485082Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8485183Z               "line": 5610
2026-06-10T22:49:44.8485269Z             }
2026-06-10T22:49:44.8485358Z           ]
2026-06-10T22:49:44.8485446Z         }
2026-06-10T22:49:44.8485535Z       }
2026-06-10T22:49:44.8485612Z     },
2026-06-10T22:49:44.8485698Z     {
2026-06-10T22:49:44.8485794Z       "id": "REQ-UPD-5",
2026-06-10T22:49:44.8485936Z       "title": "spt-core ripple-updates registered adapters",
2026-06-10T22:49:44.8486037Z       "requiredStages": [
2026-06-10T22:49:44.8486128Z         "impl",
2026-06-10T22:49:44.8486217Z         "unit"
2026-06-10T22:49:44.8486311Z       ],
2026-06-10T22:49:44.8486407Z       "stages": {
2026-06-10T22:49:44.8486496Z         "doc": {
2026-06-10T22:49:44.8486595Z           "complete": false,
2026-06-10T22:49:44.8486696Z           "evidence": []
2026-06-10T22:49:44.8486782Z         },
2026-06-10T22:49:44.8486872Z         "impl": {
2026-06-10T22:49:44.8486972Z           "complete": true,
2026-06-10T22:49:44.8487068Z           "evidence": [
2026-06-10T22:49:44.8487159Z             {
2026-06-10T22:49:44.8487296Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-10T22:49:44.8487397Z               "line": 27
2026-06-10T22:49:44.8487483Z             },
2026-06-10T22:49:44.8487572Z             {
2026-06-10T22:49:44.8487707Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-10T22:49:44.8487801Z               "line": 82
2026-06-10T22:49:44.8487892Z             },
2026-06-10T22:49:44.8487979Z             {
2026-06-10T22:49:44.8488111Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-10T22:49:44.8488206Z               "line": 134
2026-06-10T22:49:44.8488299Z             },
2026-06-10T22:49:44.8488394Z             {
2026-06-10T22:49:44.8488517Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8488614Z               "line": 492
2026-06-10T22:49:44.8488704Z             },
2026-06-10T22:49:44.8488793Z             {
2026-06-10T22:49:44.8488911Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8489096Z               "line": 528
2026-06-10T22:49:44.8489186Z             }
2026-06-10T22:49:44.8489276Z           ]
2026-06-10T22:49:44.8489368Z         },
2026-06-10T22:49:44.8489462Z         "int": {
2026-06-10T22:49:44.8489567Z           "complete": false,
2026-06-10T22:49:44.8489658Z           "evidence": []
2026-06-10T22:49:44.8489749Z         },
2026-06-10T22:49:44.8489839Z         "unit": {
2026-06-10T22:49:44.8489940Z           "complete": true,
2026-06-10T22:49:44.8490035Z           "evidence": [
2026-06-10T22:49:44.8490125Z             {
2026-06-10T22:49:44.8490260Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-10T22:49:44.8490349Z               "line": 232
2026-06-10T22:49:44.8490439Z             },
2026-06-10T22:49:44.8490526Z             {
2026-06-10T22:49:44.8490659Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-10T22:49:44.8490754Z               "line": 246
2026-06-10T22:49:44.8490846Z             },
2026-06-10T22:49:44.8490941Z             {
2026-06-10T22:49:44.8491064Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-10T22:49:44.8491161Z               "line": 260
2026-06-10T22:49:44.8491256Z             },
2026-06-10T22:49:44.8491340Z             {
2026-06-10T22:49:44.8491471Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-10T22:49:44.8491562Z               "line": 274
2026-06-10T22:49:44.8491650Z             },
2026-06-10T22:49:44.8491745Z             {
2026-06-10T22:49:44.8491879Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-10T22:49:44.8492074Z               "line": 308
2026-06-10T22:49:44.8492160Z             },
2026-06-10T22:49:44.8492251Z             {
2026-06-10T22:49:44.8492375Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-10T22:49:44.8492471Z               "line": 792
2026-06-10T22:49:44.8492561Z             }
2026-06-10T22:49:44.8492656Z           ]
2026-06-10T22:49:44.8492838Z         }
2026-06-10T22:49:44.8492928Z       }
2026-06-10T22:49:44.8493013Z     },
2026-06-10T22:49:44.8493100Z     {
2026-06-10T22:49:44.8493205Z       "id": "REQ-UPD-6",
2026-06-10T22:49:44.8493980Z       "title": "Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)",
2026-06-10T22:49:44.8494086Z       "requiredStages": [
2026-06-10T22:49:44.8494180Z         "doc",
2026-06-10T22:49:44.8494269Z         "impl",
2026-06-10T22:49:44.8494360Z         "unit",
2026-06-10T22:49:44.8494446Z         "int"
2026-06-10T22:49:44.8494536Z       ],
2026-06-10T22:49:44.8494631Z       "stages": {
2026-06-10T22:49:44.8494723Z         "doc": {
2026-06-10T22:49:44.8494823Z           "complete": true,
2026-06-10T22:49:44.8494913Z           "evidence": [
2026-06-10T22:49:44.8495008Z             {
2026-06-10T22:49:44.8495133Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-10T22:49:44.8495227Z               "line": 3
2026-06-10T22:49:44.8495323Z             },
2026-06-10T22:49:44.8495409Z             {
2026-06-10T22:49:44.8495523Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-10T22:49:44.8495614Z               "line": 3
2026-06-10T22:49:44.8495705Z             },
2026-06-10T22:49:44.8495800Z             {
2026-06-10T22:49:44.8495953Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-10T22:49:44.8496049Z               "line": 3
2026-06-10T22:49:44.8496143Z             }
2026-06-10T22:49:44.8496233Z           ]
2026-06-10T22:49:44.8496321Z         },
2026-06-10T22:49:44.8496415Z         "impl": {
2026-06-10T22:49:44.8496501Z           "complete": true,
2026-06-10T22:49:44.8496602Z           "evidence": [
2026-06-10T22:49:44.8496697Z             {
2026-06-10T22:49:44.8496828Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-10T22:49:44.8496924Z               "line": 76
2026-06-10T22:49:44.8497005Z             },
2026-06-10T22:49:44.8497094Z             {
2026-06-10T22:49:44.8497207Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-10T22:49:44.8497303Z               "line": 212
2026-06-10T22:49:44.8497395Z             },
2026-06-10T22:49:44.8497479Z             {
2026-06-10T22:49:44.8497600Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.8497690Z               "line": 511
2026-06-10T22:49:44.8497785Z             },
2026-06-10T22:49:44.8497870Z             {
2026-06-10T22:49:44.8498000Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-10T22:49:44.8498095Z               "line": 564
2026-06-10T22:49:44.8498171Z             },
2026-06-10T22:49:44.8498262Z             {
2026-06-10T22:49:44.8498376Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-10T22:49:44.8498471Z               "line": 69
2026-06-10T22:49:44.8498563Z             },
2026-06-10T22:49:44.8498653Z             {
2026-06-10T22:49:44.8498767Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-10T22:49:44.8498859Z               "line": 133
2026-06-10T22:49:44.8499028Z             },
2026-06-10T22:49:44.8499115Z             {
2026-06-10T22:49:44.8499236Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-10T22:49:44.8499329Z               "line": 243
2026-06-10T22:49:44.8499424Z             },
2026-06-10T22:49:44.8499510Z             {
2026-06-10T22:49:44.8499633Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-10T22:49:44.8499827Z               "line": 399
2026-06-10T22:49:44.8499913Z             },
2026-06-10T22:49:44.8500003Z             {
2026-06-10T22:49:44.8500127Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-10T22:49:44.8500219Z               "line": 527
2026-06-10T22:49:44.8500314Z             },
2026-06-10T22:49:44.8500399Z             {
2026-06-10T22:49:44.8500610Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-10T22:49:44.8500699Z               "line": 541
2026-06-10T22:49:44.8500777Z             },
2026-06-10T22:49:44.8500867Z             {
2026-06-10T22:49:44.8500990Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-10T22:49:44.8501086Z               "line": 596
2026-06-10T22:49:44.8501173Z             },
2026-06-10T22:49:44.8501263Z             {
2026-06-10T22:49:44.8501377Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-10T22:49:44.8501478Z               "line": 627
2026-06-10T22:49:44.8501567Z             },
2026-06-10T22:49:44.8501658Z             {
2026-06-10T22:49:44.8501783Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8501877Z               "line": 76
2026-06-10T22:49:44.8501953Z             },
2026-06-10T22:49:44.8502041Z             {
2026-06-10T22:49:44.8502164Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8502263Z               "line": 112
2026-06-10T22:49:44.8502343Z             },
2026-06-10T22:49:44.8502435Z             {
2026-06-10T22:49:44.8502553Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8502648Z               "line": 183
2026-06-10T22:49:44.8502725Z             },
2026-06-10T22:49:44.8502806Z             {
2026-06-10T22:49:44.8502930Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8503016Z               "line": 258
2026-06-10T22:49:44.8503097Z             },
2026-06-10T22:49:44.8503188Z             {
2026-06-10T22:49:44.8503307Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8503403Z               "line": 290
2026-06-10T22:49:44.8503493Z             },
2026-06-10T22:49:44.8503588Z             {
2026-06-10T22:49:44.8503704Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8503793Z               "line": 321
2026-06-10T22:49:44.8503884Z             },
2026-06-10T22:49:44.8503975Z             {
2026-06-10T22:49:44.8504098Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8504198Z               "line": 344
2026-06-10T22:49:44.8504290Z             },
2026-06-10T22:49:44.8504376Z             {
2026-06-10T22:49:44.8504503Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8504593Z               "line": 362
2026-06-10T22:49:44.8504684Z             },
2026-06-10T22:49:44.8504768Z             {
2026-06-10T22:49:44.8504886Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8504982Z               "line": 372
2026-06-10T22:49:44.8505069Z             },
2026-06-10T22:49:44.8505168Z             {
2026-06-10T22:49:44.8505287Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8505378Z               "line": 384
2026-06-10T22:49:44.8505468Z             },
2026-06-10T22:49:44.8505559Z             {
2026-06-10T22:49:44.8505678Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8507777Z               "line": 394
2026-06-10T22:49:44.8507893Z             },
2026-06-10T22:49:44.8507983Z             {
2026-06-10T22:49:44.8508125Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8508222Z               "line": 413
2026-06-10T22:49:44.8508312Z             },
2026-06-10T22:49:44.8508401Z             {
2026-06-10T22:49:44.8508527Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8508622Z               "line": 423
2026-06-10T22:49:44.8508711Z             },
2026-06-10T22:49:44.8508804Z             {
2026-06-10T22:49:44.8508922Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8509274Z               "line": 94
2026-06-10T22:49:44.8509370Z             },
2026-06-10T22:49:44.8509457Z             {
2026-06-10T22:49:44.8509580Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8509670Z               "line": 120
2026-06-10T22:49:44.8509758Z             },
2026-06-10T22:49:44.8509848Z             {
2026-06-10T22:49:44.8510056Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8510165Z               "line": 135
2026-06-10T22:49:44.8510249Z             },
2026-06-10T22:49:44.8510339Z             {
2026-06-10T22:49:44.8510455Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8510550Z               "line": 162
2026-06-10T22:49:44.8510639Z             },
2026-06-10T22:49:44.8510726Z             {
2026-06-10T22:49:44.8510846Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8510940Z               "line": 174
2026-06-10T22:49:44.8511041Z             },
2026-06-10T22:49:44.8511127Z             {
2026-06-10T22:49:44.8511240Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8511337Z               "line": 185
2026-06-10T22:49:44.8511432Z             },
2026-06-10T22:49:44.8511523Z             {
2026-06-10T22:49:44.8511636Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8511737Z               "line": 451
2026-06-10T22:49:44.8511832Z             },
2026-06-10T22:49:44.8511918Z             {
2026-06-10T22:49:44.8512038Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8512132Z               "line": 555
2026-06-10T22:49:44.8512223Z             },
2026-06-10T22:49:44.8512310Z             {
2026-06-10T22:49:44.8512442Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-10T22:49:44.8512537Z               "line": 171
2026-06-10T22:49:44.8512625Z             },
2026-06-10T22:49:44.8512715Z             {
2026-06-10T22:49:44.8512837Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-10T22:49:44.8512937Z               "line": 65
2026-06-10T22:49:44.8513023Z             },
2026-06-10T22:49:44.8513114Z             {
2026-06-10T22:49:44.8513242Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-10T22:49:44.8513334Z               "line": 71
2026-06-10T22:49:44.8513424Z             },
2026-06-10T22:49:44.8513509Z             {
2026-06-10T22:49:44.8513639Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-10T22:49:44.8513730Z               "line": 77
2026-06-10T22:49:44.8513819Z             },
2026-06-10T22:49:44.8513910Z             {
2026-06-10T22:49:44.8514020Z               "path": "crates/xtask/src/main.rs",
2026-06-10T22:49:44.8514114Z               "line": 778
2026-06-10T22:49:44.8514201Z             },
2026-06-10T22:49:44.8514297Z             {
2026-06-10T22:49:44.8514406Z               "path": "crates/xtask/src/main.rs",
2026-06-10T22:49:44.8514506Z               "line": 795
2026-06-10T22:49:44.8514607Z             },
2026-06-10T22:49:44.8514691Z             {
2026-06-10T22:49:44.8514807Z               "path": "crates/xtask/src/main.rs",
2026-06-10T22:49:44.8514898Z               "line": 838
2026-06-10T22:49:44.8514987Z             },
2026-06-10T22:49:44.8515077Z             {
2026-06-10T22:49:44.8515186Z               "path": "crates/xtask/src/main.rs",
2026-06-10T22:49:44.8515281Z               "line": 981
2026-06-10T22:49:44.8515375Z             },
2026-06-10T22:49:44.8515465Z             {
2026-06-10T22:49:44.8515571Z               "path": "crates/xtask/src/main.rs",
2026-06-10T22:49:44.8515671Z               "line": 1131
2026-06-10T22:49:44.8515761Z             }
2026-06-10T22:49:44.8515847Z           ]
2026-06-10T22:49:44.8515943Z         },
2026-06-10T22:49:44.8516038Z         "int": {
2026-06-10T22:49:44.8516138Z           "complete": true,
2026-06-10T22:49:44.8516234Z           "evidence": [
2026-06-10T22:49:44.8516324Z             {
2026-06-10T22:49:44.8516458Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-10T22:49:44.8516634Z               "line": 569
2026-06-10T22:49:44.8516724Z             },
2026-06-10T22:49:44.8516811Z             {
2026-06-10T22:49:44.8516940Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-10T22:49:44.8517035Z               "line": 135
2026-06-10T22:49:44.8517122Z             }
2026-06-10T22:49:44.8517211Z           ]
2026-06-10T22:49:44.8517373Z         },
2026-06-10T22:49:44.8517465Z         "unit": {
2026-06-10T22:49:44.8517558Z           "complete": true,
2026-06-10T22:49:44.8517659Z           "evidence": [
2026-06-10T22:49:44.8517751Z             {
2026-06-10T22:49:44.8517883Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-10T22:49:44.8517972Z               "line": 623
2026-06-10T22:49:44.8518063Z             },
2026-06-10T22:49:44.8518158Z             {
2026-06-10T22:49:44.8518280Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-10T22:49:44.8518376Z               "line": 672
2026-06-10T22:49:44.8518472Z             },
2026-06-10T22:49:44.8518562Z             {
2026-06-10T22:49:44.8518686Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-10T22:49:44.8518777Z               "line": 689
2026-06-10T22:49:44.8518867Z             },
2026-06-10T22:49:44.8519059Z             {
2026-06-10T22:49:44.8519215Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8519311Z               "line": 487
2026-06-10T22:49:44.8519406Z             },
2026-06-10T22:49:44.8519492Z             {
2026-06-10T22:49:44.8519615Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8519707Z               "line": 612
2026-06-10T22:49:44.8519797Z             },
2026-06-10T22:49:44.8519887Z             {
2026-06-10T22:49:44.8520003Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8520097Z               "line": 649
2026-06-10T22:49:44.8520188Z             },
2026-06-10T22:49:44.8520274Z             {
2026-06-10T22:49:44.8520394Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8520497Z               "line": 894
2026-06-10T22:49:44.8520592Z             },
2026-06-10T22:49:44.8520677Z             {
2026-06-10T22:49:44.8520800Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8520904Z               "line": 916
2026-06-10T22:49:44.8520990Z             },
2026-06-10T22:49:44.8521082Z             {
2026-06-10T22:49:44.8521195Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8521291Z               "line": 933
2026-06-10T22:49:44.8521377Z             },
2026-06-10T22:49:44.8521467Z             {
2026-06-10T22:49:44.8521587Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8521677Z               "line": 948
2026-06-10T22:49:44.8521763Z             },
2026-06-10T22:49:44.8521853Z             {
2026-06-10T22:49:44.8521973Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8522068Z               "line": 974
2026-06-10T22:49:44.8522158Z             },
2026-06-10T22:49:44.8522250Z             {
2026-06-10T22:49:44.8522373Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-10T22:49:44.8522468Z               "line": 457
2026-06-10T22:49:44.8522556Z             },
2026-06-10T22:49:44.8522640Z             {
2026-06-10T22:49:44.8522783Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-10T22:49:44.8522885Z               "line": 338
2026-06-10T22:49:44.8522979Z             },
2026-06-10T22:49:44.8523065Z             {
2026-06-10T22:49:44.8523180Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8523275Z               "line": 7482
2026-06-10T22:49:44.8523364Z             },
2026-06-10T22:49:44.8523449Z             {
2026-06-10T22:49:44.8523560Z               "path": "crates/xtask/src/main.rs",
2026-06-10T22:49:44.8523660Z               "line": 1260
2026-06-10T22:49:44.8523745Z             },
2026-06-10T22:49:44.8523836Z             {
2026-06-10T22:49:44.8523951Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-10T22:49:44.8524156Z               "line": 130
2026-06-10T22:49:44.8524246Z             }
2026-06-10T22:49:44.8524337Z           ]
2026-06-10T22:49:44.8524427Z         }
2026-06-10T22:49:44.8524514Z       }
2026-06-10T22:49:44.8524608Z     },
2026-06-10T22:49:44.8524693Z     {
2026-06-10T22:49:44.8524795Z       "id": "REQ-UPD-7",
2026-06-10T22:49:44.8526927Z       "title": "Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.",
2026-06-10T22:49:44.8527042Z       "requiredStages": [
2026-06-10T22:49:44.8527137Z         "impl",
2026-06-10T22:49:44.8527232Z         "unit"
2026-06-10T22:49:44.8527323Z       ],
2026-06-10T22:49:44.8527419Z       "stages": {
2026-06-10T22:49:44.8527505Z         "doc": {
2026-06-10T22:49:44.8527609Z           "complete": false,
2026-06-10T22:49:44.8527715Z           "evidence": []
2026-06-10T22:49:44.8527804Z         },
2026-06-10T22:49:44.8527895Z         "impl": {
2026-06-10T22:49:44.8527996Z           "complete": true,
2026-06-10T22:49:44.8528095Z           "evidence": [
2026-06-10T22:49:44.8528181Z             {
2026-06-10T22:49:44.8528297Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8528396Z               "line": 1871
2026-06-10T22:49:44.8528485Z             }
2026-06-10T22:49:44.8528575Z           ]
2026-06-10T22:49:44.8528662Z         },
2026-06-10T22:49:44.8528751Z         "int": {
2026-06-10T22:49:44.8528855Z           "complete": false,
2026-06-10T22:49:44.8529042Z           "evidence": []
2026-06-10T22:49:44.8529131Z         },
2026-06-10T22:49:44.8529222Z         "unit": {
2026-06-10T22:49:44.8529313Z           "complete": true,
2026-06-10T22:49:44.8529408Z           "evidence": [
2026-06-10T22:49:44.8529498Z             {
2026-06-10T22:49:44.8529609Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8529714Z               "line": 7458
2026-06-10T22:49:44.8529803Z             }
2026-06-10T22:49:44.8529895Z           ]
2026-06-10T22:49:44.8529981Z         }
2026-06-10T22:49:44.8530071Z       }
2026-06-10T22:49:44.8530161Z     },
2026-06-10T22:49:44.8530253Z     {
2026-06-10T22:49:44.8530357Z       "id": "REQ-UPD-8",
2026-06-10T22:49:44.8532771Z       "title": "Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.",
2026-06-10T22:49:44.8532876Z       "requiredStages": [
2026-06-10T22:49:44.8532967Z         "impl",
2026-06-10T22:49:44.8533057Z         "unit"
2026-06-10T22:49:44.8533149Z       ],
2026-06-10T22:49:44.8533243Z       "stages": {
2026-06-10T22:49:44.8533329Z         "doc": {
2026-06-10T22:49:44.8533435Z           "complete": false,
2026-06-10T22:49:44.8533529Z           "evidence": []
2026-06-10T22:49:44.8533716Z         },
2026-06-10T22:49:44.8533797Z         "impl": {
2026-06-10T22:49:44.8533891Z           "complete": true,
2026-06-10T22:49:44.8533995Z           "evidence": [
2026-06-10T22:49:44.8534082Z             {
2026-06-10T22:49:44.8534211Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-10T22:49:44.8534290Z               "line": 77
2026-06-10T22:49:44.8534377Z             },
2026-06-10T22:49:44.8534577Z             {
2026-06-10T22:49:44.8534712Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8534807Z               "line": 47
2026-06-10T22:49:44.8534887Z             },
2026-06-10T22:49:44.8534973Z             {
2026-06-10T22:49:44.8535093Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8535188Z               "line": 150
2026-06-10T22:49:44.8535273Z             },
2026-06-10T22:49:44.8535370Z             {
2026-06-10T22:49:44.8535492Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8535573Z               "line": 213
2026-06-10T22:49:44.8535671Z             },
2026-06-10T22:49:44.8535756Z             {
2026-06-10T22:49:44.8535874Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8535965Z               "line": 228
2026-06-10T22:49:44.8536056Z             },
2026-06-10T22:49:44.8536141Z             {
2026-06-10T22:49:44.8536268Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8536364Z               "line": 245
2026-06-10T22:49:44.8536444Z             },
2026-06-10T22:49:44.8536524Z             {
2026-06-10T22:49:44.8536643Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8536740Z               "line": 267
2026-06-10T22:49:44.8536833Z             },
2026-06-10T22:49:44.8536915Z             {
2026-06-10T22:49:44.8537039Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8537125Z               "line": 66
2026-06-10T22:49:44.8537215Z             },
2026-06-10T22:49:44.8537302Z             {
2026-06-10T22:49:44.8537421Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-10T22:49:44.8537511Z               "line": 154
2026-06-10T22:49:44.8537593Z             },
2026-06-10T22:49:44.8537678Z             {
2026-06-10T22:49:44.8537787Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8537883Z               "line": 1745
2026-06-10T22:49:44.8537965Z             },
2026-06-10T22:49:44.8538050Z             {
2026-06-10T22:49:44.8538155Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8538246Z               "line": 1818
2026-06-10T22:49:44.8538327Z             },
2026-06-10T22:49:44.8538413Z             {
2026-06-10T22:49:44.8538513Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8538609Z               "line": 1828
2026-06-10T22:49:44.8538693Z             },
2026-06-10T22:49:44.8538775Z             {
2026-06-10T22:49:44.8538881Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8539045Z               "line": 1835
2026-06-10T22:49:44.8539140Z             },
2026-06-10T22:49:44.8539231Z             {
2026-06-10T22:49:44.8539334Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8539415Z               "line": 1872
2026-06-10T22:49:44.8539506Z             },
2026-06-10T22:49:44.8539587Z             {
2026-06-10T22:49:44.8539705Z               "path": "crates/xtask/src/main.rs",
2026-06-10T22:49:44.8539806Z               "line": 480
2026-06-10T22:49:44.8539897Z             },
2026-06-10T22:49:44.8539987Z             {
2026-06-10T22:49:44.8540092Z               "path": "crates/xtask/src/main.rs",
2026-06-10T22:49:44.8540174Z               "line": 494
2026-06-10T22:49:44.8540254Z             }
2026-06-10T22:49:44.8540344Z           ]
2026-06-10T22:49:44.8540421Z         },
2026-06-10T22:49:44.8540513Z         "int": {
2026-06-10T22:49:44.8540612Z           "complete": false,
2026-06-10T22:49:44.8540712Z           "evidence": []
2026-06-10T22:49:44.8540799Z         },
2026-06-10T22:49:44.8540879Z         "unit": {
2026-06-10T22:49:44.8541070Z           "complete": true,
2026-06-10T22:49:44.8541162Z           "evidence": [
2026-06-10T22:49:44.8541250Z             {
2026-06-10T22:49:44.8541375Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-10T22:49:44.8541462Z               "line": 476
2026-06-10T22:49:44.8541556Z             },
2026-06-10T22:49:44.8541636Z             {
2026-06-10T22:49:44.8541836Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-10T22:49:44.8541934Z               "line": 554
2026-06-10T22:49:44.8542024Z             },
2026-06-10T22:49:44.8542111Z             {
2026-06-10T22:49:44.8542216Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8542310Z               "line": 7460
2026-06-10T22:49:44.8542392Z             },
2026-06-10T22:49:44.8542483Z             {
2026-06-10T22:49:44.8542577Z               "path": "crates/spt/src/cli.rs",
2026-06-10T22:49:44.8542673Z               "line": 7482
2026-06-10T22:49:44.8542764Z             }
2026-06-10T22:49:44.8542855Z           ]
2026-06-10T22:49:44.8542945Z         }
2026-06-10T22:49:44.8543032Z       }
2026-06-10T22:49:44.8543122Z     }
2026-06-10T22:49:44.8543198Z   ],
2026-06-10T22:49:44.8543293Z   "findings": []
2026-06-10T22:49:44.8543389Z }
2026-06-10T22:49:44.8567656Z ##[group]Run ./traceable-reqs lint || true
2026-06-10T22:49:44.8567802Z [36;1m./traceable-reqs lint || true[0m
2026-06-10T22:49:44.8580778Z shell: /usr/bin/bash -e {0}
2026-06-10T22:49:44.8580877Z ##[endgroup]
2026-06-10T22:49:44.8756383Z Requirement quality findings (82); 181 requirements queued for agent review:
2026-06-10T22:49:44.8757119Z   [must] requirement_quality REQ-API-1 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8757666Z   [must] requirement_quality REQ-CLI-1 criterion=length — title is 47 words; want 3..=25
2026-06-10T22:49:44.8758174Z   [must] requirement_quality REQ-CLI-2 criterion=length — title is 37 words; want 3..=25
2026-06-10T22:49:44.8758649Z   [must] requirement_quality REQ-CLI-3 criterion=length — title is 37 words; want 3..=25
2026-06-10T22:49:44.8759274Z   [must] requirement_quality REQ-CONSENT-1 criterion=length — title is 41 words; want 3..=25
2026-06-10T22:49:44.8759828Z   [must] requirement_quality REQ-CONSENT-2 criterion=length — title is 37 words; want 3..=25
2026-06-10T22:49:44.8760538Z   [must] requirement_quality REQ-CONV-1 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8761084Z   [must] requirement_quality REQ-CONV-1 criterion=length — title is 73 words; want 3..=25
2026-06-10T22:49:44.8761445Z   [must] requirement_quality REQ-CONV-2 criterion=length — title is 47 words; want 3..=25
2026-06-10T22:49:44.8761913Z   [must] requirement_quality REQ-DAEMON-5 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8762199Z   [must] requirement_quality REQ-DAEMON-5 criterion=length — title is 64 words; want 3..=25
2026-06-10T22:49:44.8762652Z   [must] requirement_quality REQ-DAEMON-6 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8763090Z   [must] requirement_quality REQ-DAEMON-6 criterion=length — title is 84 words; want 3..=25
2026-06-10T22:49:44.8763523Z   [must] requirement_quality REQ-DAEMON-7 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8763822Z   [must] requirement_quality REQ-DAEMON-7 criterion=length — title is 62 words; want 3..=25
2026-06-10T22:49:44.8764107Z   [must] requirement_quality REQ-DAEMON-8 criterion=length — title is 44 words; want 3..=25
2026-06-10T22:49:44.8764485Z   [must] requirement_quality REQ-DAEMON-9 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8764741Z   [must] requirement_quality REQ-DAEMON-9 criterion=length — title is 114 words; want 3..=25
2026-06-10T22:49:44.8765190Z   [must] requirement_quality REQ-HAZARD-BROKER-PROCESS-ISOLATION criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8765730Z   [must] requirement_quality REQ-HAZARD-BROKER-PROCESS-ISOLATION criterion=length — title is 114 words; want 3..=25
2026-06-10T22:49:44.8766083Z   [must] requirement_quality REQ-HAZARD-CONFLICT-BOTH-PRESERVED criterion=length — title is 29 words; want 3..=25
2026-06-10T22:49:44.8766424Z   [must] requirement_quality REQ-HAZARD-DAEMON-SCHED-NONBLOCKING criterion=length — title is 32 words; want 3..=25
2026-06-10T22:49:44.8766754Z   [must] requirement_quality REQ-HAZARD-DETACHED-PIPE-INHERIT criterion=length — title is 52 words; want 3..=25
2026-06-10T22:49:44.8767187Z   [must] requirement_quality REQ-HAZARD-ELEVATED-DAEMON-SPAWN criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8767521Z   [must] requirement_quality REQ-HAZARD-ELEVATED-DAEMON-SPAWN criterion=length — title is 58 words; want 3..=25
2026-06-10T22:49:44.8767935Z   [must] requirement_quality REQ-HAZARD-ENVELOPE-CR-LINESAFE criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8768269Z   [must] requirement_quality REQ-HAZARD-ENVELOPE-CR-LINESAFE criterion=length — title is 73 words; want 3..=25
2026-06-10T22:49:44.8768842Z   [must] requirement_quality REQ-HAZARD-ENVELOPE-PARSER-SAFE criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8769252Z   [must] requirement_quality REQ-HAZARD-EPOCH-RESET criterion=length — title is 60 words; want 3..=25
2026-06-10T22:49:44.8769654Z   [must] requirement_quality REQ-HAZARD-GEN-START-NOW criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8769973Z   [must] requirement_quality REQ-HAZARD-INSTANT-UNDERFLOW criterion=length — title is 30 words; want 3..=25
2026-06-10T22:49:44.8770283Z   [must] requirement_quality REQ-HAZARD-PAIR-RATE-LIMIT criterion=length — title is 37 words; want 3..=25
2026-06-10T22:49:44.8770598Z   [must] requirement_quality REQ-HAZARD-PAIR-SEED-ROTATION criterion=length — title is 33 words; want 3..=25
2026-06-10T22:49:44.8771036Z   [must] requirement_quality REQ-HAZARD-PAIR-TRANSCRIPT-BIND criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8771691Z   [must] requirement_quality REQ-HAZARD-PSYCHE-OUTBOUND-PROXY criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8772038Z   [must] requirement_quality REQ-HAZARD-PSYCHE-OUTBOUND-PROXY criterion=length — title is 27 words; want 3..=25
2026-06-10T22:49:44.8772459Z   [must] requirement_quality REQ-HAZARD-REGISTRY-GHOST-ROWS criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8772788Z   [must] requirement_quality REQ-HAZARD-REGISTRY-GHOST-ROWS criterion=length — title is 66 words; want 3..=25
2026-06-10T22:49:44.8773103Z   [must] requirement_quality REQ-HAZARD-ROLLBACK-STATE-COMPAT criterion=length — title is 72 words; want 3..=25
2026-06-10T22:49:44.8773423Z   [must] requirement_quality REQ-HAZARD-SUDO-SECURE-PATH criterion=length — title is 43 words; want 3..=25
2026-06-10T22:49:44.8773718Z   [must] requirement_quality REQ-HAZARD-WAN-ORIGIN-AUTH criterion=length — title is 37 words; want 3..=25
2026-06-10T22:49:44.8773979Z   [must] requirement_quality REQ-INST-15 criterion=length — title is 32 words; want 3..=25
2026-06-10T22:49:44.8774248Z   [must] requirement_quality REQ-INSTALL-2 criterion=length — title is 2 word(s); want 3..=25
2026-06-10T22:49:44.8774615Z   [must] requirement_quality REQ-INSTALL-6 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8774882Z   [must] requirement_quality REQ-INSTALL-6 criterion=length — title is 56 words; want 3..=25
2026-06-10T22:49:44.8775244Z   [must] requirement_quality REQ-INSTALL-7 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8775502Z   [must] requirement_quality REQ-INSTALL-7 criterion=length — title is 50 words; want 3..=25
2026-06-10T22:49:44.8775883Z   [must] requirement_quality REQ-INSTALL-8 criterion=length — title is 55 words; want 3..=25
2026-06-10T22:49:44.8776241Z   [must] requirement_quality REQ-MANIFEST-1 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8776499Z   [must] requirement_quality REQ-MESH-1 criterion=length — title is 86 words; want 3..=25
2026-06-10T22:49:44.8776846Z   [must] requirement_quality REQ-MESH-2 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8777089Z   [must] requirement_quality REQ-MESH-2 criterion=length — title is 120 words; want 3..=25
2026-06-10T22:49:44.8777432Z   [must] requirement_quality REQ-MESH-3 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8777680Z   [must] requirement_quality REQ-MESH-3 criterion=length — title is 86 words; want 3..=25
2026-06-10T22:49:44.8778042Z   [must] requirement_quality REQ-MESH-4 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8778405Z   [must] requirement_quality REQ-MESH-4 criterion=length — title is 99 words; want 3..=25
2026-06-10T22:49:44.8778757Z   [must] requirement_quality REQ-MESH-5 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8779095Z   [must] requirement_quality REQ-MESH-5 criterion=length — title is 72 words; want 3..=25
2026-06-10T22:49:44.8779455Z   [must] requirement_quality REQ-MESH-6 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8779703Z   [must] requirement_quality REQ-MESH-6 criterion=length — title is 56 words; want 3..=25
2026-06-10T22:49:44.8780065Z   [must] requirement_quality REQ-MIGRATE-1 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8780318Z   [must] requirement_quality REQ-MSG-4 criterion=length — title is 31 words; want 3..=25
2026-06-10T22:49:44.8780676Z   [must] requirement_quality REQ-PAIR-8 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8780924Z   [must] requirement_quality REQ-PAIR-8 criterion=length — title is 67 words; want 3..=25
2026-06-10T22:49:44.8781272Z   [must] requirement_quality REQ-PRES-1 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8781516Z   [must] requirement_quality REQ-PRES-1 criterion=length — title is 48 words; want 3..=25
2026-06-10T22:49:44.8781788Z   [must] requirement_quality REQ-SEAM-SPAWN criterion=length — title is 2 word(s); want 3..=25
2026-06-10T22:49:44.8782038Z   [must] requirement_quality REQ-SHELL-1 criterion=length — title is 36 words; want 3..=25
2026-06-10T22:49:44.8782284Z   [must] requirement_quality REQ-SHELL-2 criterion=length — title is 49 words; want 3..=25
2026-06-10T22:49:44.8782528Z   [must] requirement_quality REQ-STORE-1 criterion=length — title is 34 words; want 3..=25
2026-06-10T22:49:44.8782795Z   [must] requirement_quality REQ-SUBNET-5 criterion=length — title is 52 words; want 3..=25
2026-06-10T22:49:44.8783152Z   [must] requirement_quality REQ-SUBNET-6 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8783415Z   [must] requirement_quality REQ-SUBNET-6 criterion=length — title is 38 words; want 3..=25
2026-06-10T22:49:44.8783763Z   [must] requirement_quality REQ-SUBNET-7 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8784016Z   [must] requirement_quality REQ-SUBNET-7 criterion=length — title is 75 words; want 3..=25
2026-06-10T22:49:44.8784278Z   [must] requirement_quality REQ-SUBNET-8 criterion=length — title is 53 words; want 3..=25
2026-06-10T22:49:44.8784624Z   [must] requirement_quality REQ-UPD-6 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8784989Z   [must] requirement_quality REQ-UPD-6 criterion=length — title is 32 words; want 3..=25
2026-06-10T22:49:44.8785343Z   [must] requirement_quality REQ-UPD-7 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8785586Z   [must] requirement_quality REQ-UPD-7 criterion=length — title is 88 words; want 3..=25
2026-06-10T22:49:44.8786062Z   [must] requirement_quality REQ-UPD-8 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-10T22:49:44.8786320Z   [must] requirement_quality REQ-UPD-8 criterion=length — title is 115 words; want 3..=25
2026-06-10T22:49:44.8786353Z 
2026-06-10T22:49:44.8786467Z # Requirement quality review
2026-06-10T22:49:44.8786496Z 
2026-06-10T22:49:44.8786700Z You are reviewing 181 requirement(s) from `traceable-reqs.toml` against a quality
2026-06-10T22:49:44.8786903Z rubric. Deterministic checks (length, contains-and, tbd-todo, duplicate-titles,
2026-06-10T22:49:44.8787101Z trailing-etc) have already run and surfaced as `requirement_quality` findings on
2026-06-10T22:49:44.8787265Z this command's output. Your task is the rubric items below.
2026-06-10T22:49:44.8787302Z 
2026-06-10T22:49:44.8787391Z ## Rubric
2026-06-10T22:49:44.8787535Z 
2026-06-10T22:49:44.8787831Z - **singular** — describes one capability; no smuggled "and"/"or" across distinct actions.
2026-06-10T22:49:44.8788078Z - **verifiable** — states an observable behavior a test or reviewer could confirm.
2026-06-10T22:49:44.8788298Z - **atomic** — cannot be split into two requirements without losing meaning.
2026-06-10T22:49:44.8788470Z - **active-voice** — clear subject and active verb.
2026-06-10T22:49:44.8788499Z 
2026-06-10T22:49:44.8788727Z If a criterion is borderline or doesn't apply, abstain — only emit findings for
2026-06-10T22:49:44.8788833Z clear concerns.
2026-06-10T22:49:44.8788861Z 
2026-06-10T22:49:44.8789046Z ## Requirements
2026-06-10T22:49:44.8789100Z 
2026-06-10T22:49:44.8789199Z ### REQ-ARCH-1
2026-06-10T22:49:44.8789341Z - Title: Many small acyclically-layered crates
2026-06-10T22:49:44.8789448Z - Required stages: impl
2026-06-10T22:49:44.8789477Z 
2026-06-10T22:49:44.8789579Z ### REQ-ARCH-2
2026-06-10T22:49:44.8789746Z - Title: Public SDK surface is spt-proto, spt-runtime, spt-msg
2026-06-10T22:49:44.8789850Z - Required stages: impl
2026-06-10T22:49:44.8789882Z 
2026-06-10T22:49:44.8789977Z ### REQ-ARCH-3
2026-06-10T22:49:44.8790169Z - Title: Wire-protocol version independent of crate semver, N-1 compat window
2026-06-10T22:49:44.8790273Z - Required stages: impl, unit
2026-06-10T22:49:44.8790306Z 
2026-06-10T22:49:44.8790397Z ### REQ-ARCH-4
2026-06-10T22:49:44.8790564Z - Title: Copy-verbatim the commodity layer from the sister project
2026-06-10T22:49:44.8790673Z - Required stages: impl, unit
2026-06-10T22:49:44.8790702Z 
2026-06-10T22:49:44.8790798Z ### REQ-DAEMON-1
2026-06-10T22:49:44.8790959Z - Title: One per-machine spt-daemon owning all per-machine state
2026-06-10T22:49:44.8791066Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8791103Z 
2026-06-10T22:49:44.8791202Z ### REQ-DAEMON-2
2026-06-10T22:49:44.8791341Z - Title: Broker/brain split for seamless self-update
2026-06-10T22:49:44.8791450Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8791489Z 
2026-06-10T22:49:44.8791594Z ### REQ-DAEMON-3
2026-06-10T22:49:44.8791742Z - Title: Any api invocation auto-starts the daemon if absent
2026-06-10T22:49:44.8791851Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8791884Z 
2026-06-10T22:49:44.8791981Z ### REQ-DAEMON-4
2026-06-10T22:49:44.8792099Z - Title: Honor every KNOWN-HAZARDS invariant
2026-06-10T22:49:44.8792209Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8792242Z 
2026-06-10T22:49:44.8792339Z ### REQ-STORE-1
2026-06-10T22:49:44.8793154Z - Title: spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)
2026-06-10T22:49:44.8793516Z - Required stages: impl, unit
2026-06-10T22:49:44.8793550Z 
2026-06-10T22:49:44.8793636Z ### REQ-MANIFEST-1
2026-06-10T22:49:44.8793822Z - Title: Per-adapter manifest with adapter_name and min_spt_core_version
2026-06-10T22:49:44.8793918Z - Required stages: doc, impl, unit
2026-06-10T22:49:44.8793951Z 
2026-06-10T22:49:44.8794041Z ### REQ-SEAM-SPAWN
2026-06-10T22:49:44.8794146Z - Title: spawn-session seam
2026-06-10T22:49:44.8794248Z - Required stages: impl, unit
2026-06-10T22:49:44.8794276Z 
2026-06-10T22:49:44.8794380Z ### REQ-SEAM-POSTSPAWN
2026-06-10T22:49:44.8794494Z - Title: post-spawn / api bind seam with boot nonce
2026-06-10T22:49:44.8794595Z - Required stages: impl, unit
2026-06-10T22:49:44.8794629Z 
2026-06-10T22:49:44.8794727Z ### REQ-SEAM-PSYCHE
2026-06-10T22:49:44.8794858Z - Title: spawn-psyche seam (fresh + resume templates)
2026-06-10T22:49:44.8794967Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8795004Z 
2026-06-10T22:49:44.8795099Z ### REQ-SEAM-HISTORY
2026-06-10T22:49:44.8795275Z - Title: History subsystem (fetcher / locate-normalize / native store)
2026-06-10T22:49:44.8795369Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8795497Z 
2026-06-10T22:49:44.8795603Z ### REQ-SEAM-ACTIVITY
2026-06-10T22:49:44.8795778Z - Title: Activity/idle reported via api sentinels, not PTY quiescence
2026-06-10T22:49:44.8795879Z - Required stages: impl, unit
2026-06-10T22:49:44.8795908Z 
2026-06-10T22:49:44.8796007Z ### REQ-SEAM-INJECT
2026-06-10T22:49:44.8796161Z - Title: inject-input methods configurable per activity-state
2026-06-10T22:49:44.8796274Z - Required stages: impl, unit
2026-06-10T22:49:44.8796308Z 
2026-06-10T22:49:44.8796402Z ### REQ-SEAM-RESUME
2026-06-10T22:49:44.8796570Z - Title: resume-session seam (fresh-with-preload / continue-existing)
2026-06-10T22:49:44.8796684Z - Required stages: impl, unit
2026-06-10T22:49:44.8796717Z 
2026-06-10T22:49:44.8796814Z ### REQ-SEAM-CAPABILITY
2026-06-10T22:49:44.8796966Z - Title: Hostable endpoint-types capability declaration
2026-06-10T22:49:44.8797071Z - Required stages: impl, unit
2026-06-10T22:49:44.8797095Z 
2026-06-10T22:49:44.8797190Z ### REQ-SEAM-UPDATE
2026-06-10T22:49:44.8797342Z - Title: Adapter-update avenue (file-pull / delegated command)
2026-06-10T22:49:44.8797434Z - Required stages: impl, unit
2026-06-10T22:49:44.8797472Z 
2026-06-10T22:49:44.8797561Z ### REQ-API-1
2026-06-10T22:49:44.8797715Z - Title: api prefix and adapter_name on every machinery invocation
2026-06-10T22:49:44.8797811Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8797844Z 
2026-06-10T22:49:44.8797937Z ### REQ-API-2
2026-06-10T22:49:44.8798134Z - Title: The api subcommand surface (bind/listen/poll/state/worker/boundary/...)
2026-06-10T22:49:44.8798247Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8798275Z 
2026-06-10T22:49:44.8798366Z ### REQ-API-3
2026-06-10T22:49:44.8798495Z - Title: commune/signoff are file-drops, not commands
2026-06-10T22:49:44.8798609Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8798643Z 
2026-06-10T22:49:44.8798739Z ### REQ-START-1
2026-06-10T22:49:44.8798928Z - Title: Adapters never resolve SPT_HOME; binary on PATH; api bridging only
2026-06-10T22:49:44.8799144Z - Required stages: impl, unit
2026-06-10T22:49:44.8799167Z 
2026-06-10T22:49:44.8799262Z ### REQ-START-2
2026-06-10T22:49:44.8799398Z - Title: Harness-hosted startup: api seed then listen
2026-06-10T22:49:44.8799501Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8799530Z 
2026-06-10T22:49:44.8799621Z ### REQ-START-3
2026-06-10T22:49:44.8799774Z - Title: spt-hosted startup: spawn-session then api bind (no file)
2026-06-10T22:49:44.8799887Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8799921Z 
2026-06-10T22:49:44.8800008Z ### REQ-START-4
2026-06-10T22:49:44.8800140Z - Title: Adapter-injected env aliases (SPT/OWL/LIVE)
2026-06-10T22:49:44.8800248Z - Required stages: impl, unit
2026-06-10T22:49:44.8800282Z 
2026-06-10T22:49:44.8800471Z ### REQ-EP-1
2026-06-10T22:49:44.8800604Z - Title: Day-one endpoint types; open type system
2026-06-10T22:49:44.8800710Z - Required stages: impl, unit
2026-06-10T22:49:44.8800739Z 
2026-06-10T22:49:44.8800833Z ### REQ-EP-2
2026-06-10T22:49:44.8800991Z - Title: Agent endpoints vs Shells distinction in the type model
2026-06-10T22:49:44.8801091Z - Required stages: impl, unit
2026-06-10T22:49:44.8801124Z 
2026-06-10T22:49:44.8801219Z ### REQ-EP-3
2026-06-10T22:49:44.8801401Z - Title: Messaging payloads carry typed operation commands + file blobs
2026-06-10T22:49:44.8801495Z - Required stages: impl, unit
2026-06-10T22:49:44.8801529Z 
2026-06-10T22:49:44.8801621Z ### REQ-EP-4
2026-06-10T22:49:44.8801754Z - Title: PresenceChannel broker endpoint (seam day-one)
2026-06-10T22:49:44.8801858Z - Required stages: impl, unit
2026-06-10T22:49:44.8801892Z 
2026-06-10T22:49:44.8801988Z ### REQ-EP-5
2026-06-10T22:49:44.8802599Z - Title: Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope
2026-06-10T22:49:44.8802745Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8802779Z 
2026-06-10T22:49:44.8802965Z ### REQ-INST-1
2026-06-10T22:49:44.8803115Z - Title: endpoint ID vs instance split (adapter-agnostic ID)
2026-06-10T22:49:44.8803211Z - Required stages: 
2026-06-10T22:49:44.8803235Z 
2026-06-10T22:49:44.8803329Z ### REQ-INST-2
2026-06-10T22:49:44.8803442Z - Title: Per-node files, synced Psyche mind
2026-06-10T22:49:44.8803538Z - Required stages: impl, unit
2026-06-10T22:49:44.8803572Z 
2026-06-10T22:49:44.8803671Z ### REQ-INST-3
2026-06-10T22:49:44.8803815Z - Title: Dormant (warm) / suspended (cold) resting states
2026-06-10T22:49:44.8803915Z - Required stages: doc, impl, unit
2026-06-10T22:49:44.8803949Z 
2026-06-10T22:49:44.8804043Z ### REQ-INST-4
2026-06-10T22:49:44.8804202Z - Title: active to dormant/suspended fires a transition echo commune
2026-06-10T22:49:44.8804306Z - Required stages: impl, unit
2026-06-10T22:49:44.8804334Z 
2026-06-10T22:49:44.8804420Z ### REQ-INST-5
2026-06-10T22:49:44.8804582Z - Title: Two-tier context sync (live to all, project to same-project)
2026-06-10T22:49:44.8810947Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8810999Z 
2026-06-10T22:49:44.8811112Z ### REQ-INST-6
2026-06-10T22:49:44.8811323Z - Title: Deferred messages not delivered to dormant/suspended instances
2026-06-10T22:49:44.8811445Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8811474Z 
2026-06-10T22:49:44.8811571Z ### REQ-INST-7
2026-06-10T22:49:44.8811717Z - Title: Subnet registry + bare-id resolution policy
2026-06-10T22:49:44.8811823Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8811861Z 
2026-06-10T22:49:44.8811956Z ### REQ-INST-8
2026-06-10T22:49:44.8812113Z - Title: Remote-control mode distinct from local operation
2026-06-10T22:49:44.8812214Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8812247Z 
2026-06-10T22:49:44.8812347Z ### REQ-INST-9
2026-06-10T22:49:44.8812519Z - Title: Multi-subnet membership (same-user N subnets; cross-user seam)
2026-06-10T22:49:44.8812634Z - Required stages: impl, unit
2026-06-10T22:49:44.8812666Z 
2026-06-10T22:49:44.8812767Z ### REQ-INST-10
2026-06-10T22:49:44.8812967Z - Title: Qualified addressing [subnet:]id[@node] + ambiguity forces qualification
2026-06-10T22:49:44.8813072Z - Required stages: impl, unit
2026-06-10T22:49:44.8813106Z 
2026-06-10T22:49:44.8813206Z ### REQ-INST-11
2026-06-10T22:49:44.8813411Z - Title: spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)
2026-06-10T22:49:44.8813516Z - Required stages: impl, unit
2026-06-10T22:49:44.8813549Z 
2026-06-10T22:49:44.8813638Z ### REQ-INST-12
2026-06-10T22:49:44.8813917Z - Title: Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync
2026-06-10T22:49:44.8814016Z - Required stages: impl, unit
2026-06-10T22:49:44.8814051Z 
2026-06-10T22:49:44.8814142Z ### REQ-INST-13
2026-06-10T22:49:44.8814466Z - Title: Subnet-exclusive sync + per-endpoint subnet-membership list
2026-06-10T22:49:44.8814565Z - Required stages: impl, unit
2026-06-10T22:49:44.8814598Z 
2026-06-10T22:49:44.8814695Z ### REQ-INST-14
2026-06-10T22:49:44.8815048Z - Title: Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated
2026-06-10T22:49:44.8815157Z - Required stages: doc, impl, unit
2026-06-10T22:49:44.8815191Z 
2026-06-10T22:49:44.8815290Z ### REQ-INST-15
2026-06-10T22:49:44.8815959Z - Title: Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)
2026-06-10T22:49:44.8816068Z - Required stages: doc, impl, unit
2026-06-10T22:49:44.8816101Z 
2026-06-10T22:49:44.8816205Z ### REQ-REACH-1
2026-06-10T22:49:44.8816358Z - Title: Off-node remote-drive detection + file transfer
2026-06-10T22:49:44.8816469Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8816498Z 
2026-06-10T22:49:44.8816588Z ### REQ-REACH-2
2026-06-10T22:49:44.8816841Z - Title: Remote command execution (deferred, consent-gated)
2026-06-10T22:49:44.8816941Z - Required stages: 
2026-06-10T22:49:44.8816971Z 
2026-06-10T22:49:44.8817066Z ### REQ-MSG-1
2026-06-10T22:49:44.8817490Z - Title: Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)
2026-06-10T22:49:44.8817596Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8817625Z 
2026-06-10T22:49:44.8817719Z ### REQ-MSG-2
2026-06-10T22:49:44.8817972Z - Title: spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes
2026-06-10T22:49:44.8818081Z - Required stages: impl, unit
2026-06-10T22:49:44.8818114Z 
2026-06-10T22:49:44.8818206Z ### REQ-MSG-3
2026-06-10T22:49:44.8818564Z - Title: Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown
2026-06-10T22:49:44.8818672Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8818710Z 
2026-06-10T22:49:44.8818806Z ### REQ-MSG-4
2026-06-10T22:49:44.8819744Z - Title: Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type="msg" from=…> otherwise, chunk oversized lines into EVENT-PART
2026-06-10T22:49:44.8819855Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8819888Z 
2026-06-10T22:49:44.8819983Z ### REQ-NODE-IDENTITY
2026-06-10T22:49:44.8820198Z - Title: Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex
2026-06-10T22:49:44.8820302Z - Required stages: impl, unit
2026-06-10T22:49:44.8820336Z 
2026-06-10T22:49:44.8820421Z ### REQ-NET-1
2026-06-10T22:49:44.8820593Z - Title: WAN messaging first-class, behind default-on net feature flag
2026-06-10T22:49:44.8820702Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8820736Z 
2026-06-10T22:49:44.8820827Z ### REQ-NET-2
2026-06-10T22:49:44.8820998Z - Title: n0 relay default + self-host knob + plain-language disclosure
2026-06-10T22:49:44.8821094Z - Required stages: impl
2026-06-10T22:49:44.8821124Z 
2026-06-10T22:49:44.8821218Z ### REQ-NET-3
2026-06-10T22:49:44.8821388Z - Title: Cross-node Psyche sync over P2P replaces gh-repo-sync
2026-06-10T22:49:44.8821483Z - Required stages: impl, unit
2026-06-10T22:49:44.8821512Z 
2026-06-10T22:49:44.8821601Z ### REQ-PAIR-1
2026-06-10T22:49:44.8821700Z - Title: TOTP-seeded SPAKE2 pairing
2026-06-10T22:49:44.8821811Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8821844Z 
2026-06-10T22:49:44.8821934Z ### REQ-PAIR-2
2026-06-10T22:49:44.8822078Z - Title: Local trust store with TOFU + warn-on-change
2026-06-10T22:49:44.8822173Z - Required stages: 
2026-06-10T22:49:44.8822202Z 
2026-06-10T22:49:44.8822421Z ### REQ-PAIR-3
2026-06-10T22:49:44.8822573Z - Title: Fetch current pairing code from any paired node
2026-06-10T22:49:44.8822673Z - Required stages: impl, unit
2026-06-10T22:49:44.8822708Z 
2026-06-10T22:49:44.8822808Z ### REQ-PAIR-4
2026-06-10T22:49:44.8822916Z - Title: Subnet naming on first pairing
2026-06-10T22:49:44.8823017Z - Required stages: impl, unit
2026-06-10T22:49:44.8823051Z 
2026-06-10T22:49:44.8823155Z ### REQ-PAIR-5
2026-06-10T22:49:44.8823446Z - Title: Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing
2026-06-10T22:49:44.8823560Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8823593Z 
2026-06-10T22:49:44.8823681Z ### REQ-PAIR-6
2026-06-10T22:49:44.8823928Z - Title: Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)
2026-06-10T22:49:44.8824038Z - Required stages: impl, unit
2026-06-10T22:49:44.8824072Z 
2026-06-10T22:49:44.8824160Z ### REQ-PAIR-7
2026-06-10T22:49:44.8824322Z - Title: Subnet icon (inline image metadata, GUI-only consumer)
2026-06-10T22:49:44.8824421Z - Required stages: 
2026-06-10T22:49:44.8824449Z 
2026-06-10T22:49:44.8824548Z ### REQ-SUBNET-1
2026-06-10T22:49:44.8824945Z - Title: spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted
2026-06-10T22:49:44.8825054Z - Required stages: impl, unit
2026-06-10T22:49:44.8825084Z 
2026-06-10T22:49:44.8825182Z ### REQ-SUBNET-2
2026-06-10T22:49:44.8825398Z - Title: Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder
2026-06-10T22:49:44.8825511Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8825540Z 
2026-06-10T22:49:44.8825637Z ### REQ-SUBNET-3
2026-06-10T22:49:44.8825894Z - Title: Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)
2026-06-10T22:49:44.8825999Z - Required stages: impl, unit
2026-06-10T22:49:44.8826031Z 
2026-06-10T22:49:44.8826122Z ### REQ-SUBNET-4
2026-06-10T22:49:44.8826398Z - Title: Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)
2026-06-10T22:49:44.8826504Z - Required stages: impl, unit
2026-06-10T22:49:44.8826534Z 
2026-06-10T22:49:44.8826633Z ### REQ-DOCS-6
2026-06-10T22:49:44.8826937Z - Title: spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)
2026-06-10T22:49:44.8827039Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8827073Z 
2026-06-10T22:49:44.8827173Z ### REQ-SEC-1
2026-06-10T22:49:44.8827536Z - Title: Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants
2026-06-10T22:49:44.8827636Z - Required stages: impl, unit
2026-06-10T22:49:44.8827664Z 
2026-06-10T22:49:44.8827759Z ### REQ-NOTIF-1
2026-06-10T22:49:44.8828088Z - Title: Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts
2026-06-10T22:49:44.8828199Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8828227Z 
2026-06-10T22:49:44.8828322Z ### REQ-NOTIF-2
2026-06-10T22:49:44.8828570Z - Title: spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)
2026-06-10T22:49:44.8828684Z - Required stages: doc, impl, unit, int
2026-06-10T22:49:44.8828718Z 
2026-06-10T22:49:44.8828814Z ### REQ-UPD-1
2026-06-10T22:49:44.8828932Z - Title: Peer-propagated update over P2P
2026-06-10T22:49:44.8829158Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8829186Z 
2026-06-10T22:49:44.8829275Z ### REQ-UPD-2
2026-06-10T22:49:44.8829419Z - Title: All binaries signature-verified before handoff
2026-06-10T22:49:44.8829524Z - Required stages: impl, unit
2026-06-10T22:49:44.8829556Z 
2026-06-10T22:49:44.8829646Z ### REQ-UPD-3
2026-06-10T22:49:44.8829814Z - Title: No endpoint process terminates/suspends during self-update
2026-06-10T22:49:44.8829918Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8830052Z 
2026-06-10T22:49:44.8830153Z ### REQ-UPD-4
2026-06-10T22:49:44.8830327Z - Title: Update gated on user confirmation by default; opt-in full-auto
2026-06-10T22:49:44.8830434Z - Required stages: impl, unit
2026-06-10T22:49:44.8830476Z 
2026-06-10T22:49:44.8830567Z ### REQ-UPD-5
2026-06-10T22:49:44.8830705Z - Title: spt-core ripple-updates registered adapters
2026-06-10T22:49:44.8830810Z - Required stages: impl, unit
2026-06-10T22:49:44.8830843Z 
2026-06-10T22:49:44.8830938Z ### REQ-UPD-6
2026-06-10T22:49:44.8831708Z - Title: Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)
2026-06-10T22:49:44.8831820Z - Required stages: doc, impl, unit, int
2026-06-10T22:49:44.8831849Z 
2026-06-10T22:49:44.8831939Z ### REQ-UPD-7
2026-06-10T22:49:44.8833959Z - Title: Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.
2026-06-10T22:49:44.8834072Z - Required stages: impl, unit
2026-06-10T22:49:44.8834107Z 
2026-06-10T22:49:44.8834197Z ### REQ-UPD-8
2026-06-10T22:49:44.8836545Z - Title: Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.
2026-06-10T22:49:44.8836654Z - Required stages: impl, unit
2026-06-10T22:49:44.8836687Z 
2026-06-10T22:49:44.8836779Z ### REQ-TERM-1
2026-06-10T22:49:44.8836944Z - Title: Process-supervisor terminal wrapper hosting broker PTYs
2026-06-10T22:49:44.8837050Z - Required stages: impl, unit
2026-06-10T22:49:44.8837079Z 
2026-06-10T22:49:44.8837175Z ### REQ-TERM-2
2026-06-10T22:49:44.8837354Z - Title: session-surface abstraction; send-keys + send-line injection
2026-06-10T22:49:44.8837444Z - Required stages: impl, unit
2026-06-10T22:49:44.8837468Z 
2026-06-10T22:49:44.8837562Z ### REQ-TERM-3
2026-06-10T22:49:44.8837694Z - Title: Byte-stream remote terminal streaming for v1
2026-06-10T22:49:44.8837785Z - Required stages: impl, unit
2026-06-10T22:49:44.8837819Z 
2026-06-10T22:49:44.8837910Z ### REQ-TERM-4
2026-06-10T22:49:44.8838234Z - Title: Live activity buffer (PTY digest): adapter-supplied patterns over broker PTY, spt digest pull + delta-stream, opt-in Path-B log
2026-06-10T22:49:44.8838347Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8838377Z 
2026-06-10T22:49:44.8838477Z ### REQ-FRONT-1
2026-06-10T22:49:44.8838629Z - Title: Day-one launcher/manager frontend (list/launch/attach/init)
2026-06-10T22:49:44.8838721Z - Required stages: 
2026-06-10T22:49:44.8838749Z 
2026-06-10T22:49:44.8838844Z ### REQ-INSTALL-1
2026-06-10T22:49:44.8839130Z - Title: Two install paths; signed one-line script; OS-service registration
2026-06-10T22:49:44.8839345Z - Required stages: doc, impl, int
2026-06-10T22:49:44.8839389Z 
2026-06-10T22:49:44.8839482Z ### REQ-INSTALL-2
2026-06-10T22:49:44.8839626Z - Title: Marketplace-repackaging-friendly install
2026-06-10T22:49:44.8839723Z - Required stages: doc
2026-06-10T22:49:44.8839755Z 
2026-06-10T22:49:44.8839855Z ### REQ-INSTALL-3
2026-06-10T22:49:44.8839985Z - Title: Idempotent + interactive-optional first run
2026-06-10T22:49:44.8840093Z - Required stages: impl, int
2026-06-10T22:49:44.8840126Z 
2026-06-10T22:49:44.8840225Z ### REQ-INSTALL-4
2026-06-10T22:49:44.8840807Z - Title: Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over
2026-06-10T22:49:44.8840922Z - Required stages: impl, unit
2026-06-10T22:49:44.8840951Z 
2026-06-10T22:49:44.8841041Z ### REQ-MIGRATE-1
2026-06-10T22:49:44.8841212Z - Title: Auto-detect and migrate a legacy claude_skill_owl install
2026-06-10T22:49:44.8841309Z - Required stages: 
2026-06-10T22:49:44.8841342Z 
2026-06-10T22:49:44.8841432Z ### REQ-INFRA-1
2026-06-10T22:49:44.8841847Z - Title: GitHub issue tracking for v1; tangled.org as migration target
2026-06-10T22:49:44.8841953Z - Required stages: 
2026-06-10T22:49:44.8841986Z 
2026-06-10T22:49:44.8842090Z ### REQ-INSTALL-5
2026-06-10T22:49:44.8842537Z - Title: Non-interactive install path: the canonical one-liner doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration
2026-06-10T22:49:44.8842637Z - Required stages: impl, int
2026-06-10T22:49:44.8842674Z 
2026-06-10T22:49:44.8842768Z ### REQ-REL-1
2026-06-10T22:49:44.8843116Z - Title: spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)
2026-06-10T22:49:44.8843227Z - Required stages: doc, impl
2026-06-10T22:49:44.8843265Z 
2026-06-10T22:49:44.8843365Z ### REQ-REL-2
2026-06-10T22:49:44.8843813Z - Title: Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline
2026-06-10T22:49:44.8843923Z - Required stages: impl, int
2026-06-10T22:49:44.8843956Z 
2026-06-10T22:49:44.8844051Z ### REQ-REL-3
2026-06-10T22:49:44.8844452Z - Title: Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)
2026-06-10T22:49:44.8844562Z - Required stages: impl, unit
2026-06-10T22:49:44.8844595Z 
2026-06-10T22:49:44.8844685Z ### REQ-DOCS-1
2026-06-10T22:49:44.8844877Z - Title: Dual-audience docs (human + AI dev-agent), markdown once / two depths
2026-06-10T22:49:44.8844986Z - Required stages: doc, impl
2026-06-10T22:49:44.8845019Z 
2026-06-10T22:49:44.8845116Z ### REQ-DOCS-2
2026-06-10T22:49:44.8845272Z - Title: Sub-10-minute runnable killer quickstart per audience
2026-06-10T22:49:44.8845375Z - Required stages: doc, int
2026-06-10T22:49:44.8845409Z 
2026-06-10T22:49:44.8845504Z ### REQ-DOCS-3
2026-06-10T22:49:44.8845692Z - Title: Diátaxis structure; one canonical way to do X
2026-06-10T22:49:44.8845798Z - Required stages: doc
2026-06-10T22:49:44.8845832Z 
2026-06-10T22:49:44.8845927Z ### REQ-DOCS-4
2026-06-10T22:49:44.8846152Z - Title: Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)
2026-06-10T22:49:44.8846265Z - Required stages: doc, impl, unit
2026-06-10T22:49:44.8846289Z 
2026-06-10T22:49:44.8846380Z ### REQ-DOCS-5
2026-06-10T22:49:44.8846561Z - Title: Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked
2026-06-10T22:49:44.8846661Z - Required stages: impl, int
2026-06-10T22:49:44.8846685Z 
2026-06-10T22:49:44.8846790Z ### REQ-HAZARD-GRACE-BEFORE-SIGNOFF
2026-06-10T22:49:44.8846971Z - Title: Grace-period wait completes before composing INIT_SIGNOFF (1.1)
2026-06-10T22:49:44.8847072Z - Required stages: impl, unit
2026-06-10T22:49:44.8847166Z 
2026-06-10T22:49:44.8847285Z ### REQ-HAZARD-INFO-JSON-TORN-READ
2026-06-10T22:49:44.8847458Z - Title: State-file reads tolerate concurrent writes (1.2)
2026-06-10T22:49:44.8847600Z - Required stages: impl, unit
2026-06-10T22:49:44.8847634Z 
2026-06-10T22:49:44.8847739Z ### REQ-HAZARD-STALE-INDEX-LOCK
2026-06-10T22:49:44.8847866Z - Title: Sweep stale lockfiles on daemon boot (1.3)
2026-06-10T22:49:44.8847971Z - Required stages: impl, unit
2026-06-10T22:49:44.8848005Z 
2026-06-10T22:49:44.8848113Z ### REQ-HAZARD-DEFERRED-DRAIN
2026-06-10T22:49:44.8848278Z - Title: Deferred spool rows excluded from the event-stream drain (1.4)
2026-06-10T22:49:44.8848389Z - Required stages: impl, unit
2026-06-10T22:49:44.8848423Z 
2026-06-10T22:49:44.8848531Z ### REQ-HAZARD-WORKER-PATH
2026-06-10T22:49:44.8848704Z - Title: Single source of truth for Worker/Psyche perch location (1.5)
2026-06-10T22:49:44.8848813Z - Required stages: impl, unit
2026-06-10T22:49:44.8848845Z 
2026-06-10T22:49:44.8849065Z ### REQ-HAZARD-PARENT-PID-PREFER
2026-06-10T22:49:44.8849247Z - Title: Prefer stable parent PID / broker handle over ephemeral PID (2.1)
2026-06-10T22:49:44.8849347Z - Required stages: 
2026-06-10T22:49:44.8849380Z 
2026-06-10T22:49:44.8849596Z ### REQ-HAZARD-STDIN-SESSION-ID
2026-06-10T22:49:44.8849738Z - Title: Stdin session_id precedence over env (2.2)
2026-06-10T22:49:44.8849838Z - Required stages: 
2026-06-10T22:49:44.8849867Z 
2026-06-10T22:49:44.8849982Z ### REQ-HAZARD-HANDOFF-ARGV-COMPAT
2026-06-10T22:49:44.8850138Z - Title: Broker/brain IPC + handoff argv version-tolerant (2.3)
2026-06-10T22:49:44.8850244Z - Required stages: impl, unit
2026-06-10T22:49:44.8850278Z 
2026-06-10T22:49:44.8850385Z ### REQ-HAZARD-GEN-START-NOW
2026-06-10T22:49:44.8850526Z - Title: gen_start = now() on cold-start and handoff (2.4)
2026-06-10T22:49:44.8850631Z - Required stages: impl, int
2026-06-10T22:49:44.8850663Z 
2026-06-10T22:49:44.8850772Z ### REQ-HAZARD-EPHEMERAL-CLEANUP
2026-06-10T22:49:44.8850930Z - Title: Ephemeral perch cleanup on every ring exit path (3.1)
2026-06-10T22:49:44.8851034Z - Required stages: impl, unit
2026-06-10T22:49:44.8851071Z 
2026-06-10T22:49:44.8851187Z ### REQ-HAZARD-STALE-SIGNOFF-SENTINEL
2026-06-10T22:49:44.8851353Z - Title: Stale signoff sentinel does not kill a fresh start (3.2)
2026-06-10T22:49:44.8851453Z - Required stages: impl, unit
2026-06-10T22:49:44.8851487Z 
2026-06-10T22:49:44.8851601Z ### REQ-HAZARD-ECHO-BEFORE-SIGNOFF
2026-06-10T22:49:44.8851773Z - Title: Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)
2026-06-10T22:49:44.8851879Z - Required stages: impl, unit
2026-06-10T22:49:44.8851912Z 
2026-06-10T22:49:44.8852025Z ### REQ-HAZARD-ENVELOPE-DECODE-ORDER
2026-06-10T22:49:44.8852174Z - Title: Envelope decode order, ampersand decoded last (4.1)
2026-06-10T22:49:44.8852278Z - Required stages: impl, unit
2026-06-10T22:49:44.8852312Z 
2026-06-10T22:49:44.8852421Z ### REQ-HAZARD-ENVELOPE-CR-LINESAFE
2026-06-10T22:49:44.8854135Z - Title: Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\n`→`<br>`) BEFORE framing, so a body carrying `\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).
2026-06-10T22:49:44.8854248Z - Required stages: impl, unit
2026-06-10T22:49:44.8854277Z 
2026-06-10T22:49:44.8854388Z ### REQ-HAZARD-ENVELOPE-PARSER-SAFE
2026-06-10T22:49:44.8854559Z - Title: Two-slice envelope parser is panic-free and tolerant (4.2)
2026-06-10T22:49:44.8854673Z - Required stages: impl, unit
2026-06-10T22:49:44.8854707Z 
2026-06-10T22:49:44.8854816Z ### REQ-HAZARD-EVENTPART-REASSEMBLY
2026-06-10T22:49:44.8855022Z - Title: EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently
2026-06-10T22:49:44.8855227Z - Required stages: impl, unit
2026-06-10T22:49:44.8855265Z 
2026-06-10T22:49:44.8855376Z ### REQ-HAZARD-ID-CHARSET
2026-06-10T22:49:44.8855623Z - Title: Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)
2026-06-10T22:49:44.8855728Z - Required stages: impl, unit
2026-06-10T22:49:44.8855756Z 
2026-06-10T22:49:44.8855874Z ### REQ-HAZARD-REGISTRY-STALE-CLEAN
2026-06-10T22:49:44.8856050Z - Title: Stale registry entries degrade to fallback, never hard-fail (4.3)
2026-06-10T22:49:44.8856158Z - Required stages: impl, unit
2026-06-10T22:49:44.8856191Z 
2026-06-10T22:49:44.8856301Z ### REQ-HAZARD-REGISTRY-CONCURRENT
2026-06-10T22:49:44.8856539Z - Title: Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)
2026-06-10T22:49:44.8856645Z - Required stages: impl, unit
2026-06-10T22:49:44.8856678Z 
2026-06-10T22:49:44.8856787Z ### REQ-HAZARD-REGISTRY-DIR-CREATE
2026-06-10T22:49:44.8857149Z - Title: SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)
2026-06-10T22:49:44.8857269Z - Required stages: doc, impl, unit
2026-06-10T22:49:44.8857303Z 
2026-06-10T22:49:44.8857488Z ### REQ-HAZARD-REGISTRY-EPOCH-LEASE
2026-06-10T22:49:44.8857914Z - Title: Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)
2026-06-10T22:49:44.8858018Z - Required stages: impl, unit
2026-06-10T22:49:44.8858060Z 
2026-06-10T22:49:44.8858175Z ### REQ-HAZARD-DEFERRED-SURVIVE-DRAIN
2026-06-10T22:49:44.8858304Z - Title: Deferred rows survive poll drain (4.4)
2026-06-10T22:49:44.8858403Z - Required stages: impl, unit
2026-06-10T22:49:44.8858426Z 
2026-06-10T22:49:44.8858526Z ### REQ-HAZARD-INBOX-NO-DOUBLE
2026-06-10T22:49:44.8858664Z - Title: No double-delivery via legacy inbox (4.5)
2026-06-10T22:49:44.8858762Z - Required stages: impl, unit
2026-06-10T22:49:44.8858795Z 
2026-06-10T22:49:44.8858910Z ### REQ-HAZARD-WINDOWS-PID-RECYCLE
2026-06-10T22:49:44.8859163Z - Title: Windows PID-recycling false positives guarded (5.1)
2026-06-10T22:49:44.8859269Z - Required stages: impl, unit
2026-06-10T22:49:44.8859297Z 
2026-06-10T22:49:44.8859406Z ### REQ-HAZARD-EBUSY-RENAME
2026-06-10T22:49:44.8859569Z - Title: tmp-write + atomic-rename + retry on Windows EBUSY (5.2)
2026-06-10T22:49:44.8859679Z - Required stages: impl, unit
2026-06-10T22:49:44.8859707Z 
2026-06-10T22:49:44.8859812Z ### REQ-HAZARD-SUBPROCESS-TIMEOUT
2026-06-10T22:49:44.8859955Z - Title: Every harness/git subprocess has a timeout (5.3)
2026-06-10T22:49:44.8860054Z - Required stages: impl, unit
2026-06-10T22:49:44.8860083Z 
2026-06-10T22:49:44.8860194Z ### REQ-HAZARD-UNC-PATH-STRIP
2026-06-10T22:49:44.8860341Z - Title: Strip Windows UNC prefix on serialized paths (5.4)
2026-06-10T22:49:44.8860441Z - Required stages: impl, unit
2026-06-10T22:49:44.8860476Z 
2026-06-10T22:49:44.8860584Z ### REQ-HAZARD-SINGLE-PATH-SOURCE
2026-06-10T22:49:44.8860761Z - Title: Single path/registry source of truth; no layout ambiguity (6.1)
2026-06-10T22:49:44.8860866Z - Required stages: impl, unit
2026-06-10T22:49:44.8860899Z 
2026-06-10T22:49:44.8861008Z ### REQ-HAZARD-SOFT-CLEANUP
2026-06-10T22:49:44.8861200Z - Title: Soft-cleanup preserves state, removes only the ready marker (6.2)
2026-06-10T22:49:44.8861308Z - Required stages: impl, unit
2026-06-10T22:49:44.8861341Z 
2026-06-10T22:49:44.8861446Z ### REQ-HAZARD-CASCADE-WIPE-GUARD
2026-06-10T22:49:44.8861617Z - Title: No hard-delete of a parent hosting non-empty children (6.3)
2026-06-10T22:49:44.8861727Z - Required stages: impl, unit
2026-06-10T22:49:44.8861756Z 
2026-06-10T22:49:44.8861876Z ### REQ-HAZARD-DROP-FILE-SINGLE-WRITER
2026-06-10T22:49:44.8862023Z - Title: Drop files are daemon-owned single-writer (6.4)
2026-06-10T22:49:44.8862124Z - Required stages: impl, unit
2026-06-10T22:49:44.8862157Z 
2026-06-10T22:49:44.8862275Z ### REQ-HAZARD-DIRECT-WRITE-PRECEDENCE
2026-06-10T22:49:44.8862491Z - Title: Direct-write precedence marker (with node id) guards stale overwrite (6.5)
2026-06-10T22:49:44.8862706Z - Required stages: impl, unit
2026-06-10T22:49:44.8862735Z 
2026-06-10T22:49:44.8862852Z ### REQ-HAZARD-CONFLICT-BOTH-PRESERVED
2026-06-10T22:49:44.8863374Z - Title: 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-0013)
2026-06-10T22:49:44.8863482Z - Required stages: impl, unit
2026-06-10T22:49:44.8863515Z 
2026-06-10T22:49:44.8863633Z ### REQ-HAZARD-DETACHED-PIPE-INHERIT
2026-06-10T22:49:44.8864738Z - Title: Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)
2026-06-10T22:49:44.8864852Z - Required stages: impl, unit
2026-06-10T22:49:44.8864880Z 
2026-06-10T22:49:44.8864987Z ### REQ-HAZARD-CONPTY-DSR
2026-06-10T22:49:44.8865287Z - Title: ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)
2026-06-10T22:49:44.8865395Z - Required stages: impl, unit
2026-06-10T22:49:44.8865429Z 
2026-06-10T22:49:44.8865534Z ### REQ-HAZARD-CHILD-CONSOLE-FLASH
2026-06-10T22:49:44.8865936Z - Title: Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)
2026-06-10T22:49:44.8866039Z - Required stages: impl, unit
2026-06-10T22:49:44.8866072Z 
2026-06-10T22:49:44.8866183Z ### REQ-HAZARD-INSTANT-UNDERFLOW
2026-06-10T22:49:44.8866723Z - Title: Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)
2026-06-10T22:49:44.8866827Z - Required stages: impl, unit
2026-06-10T22:49:44.8866861Z 
2026-06-10T22:49:44.8866976Z ### REQ-HAZARD-SUDO-SECURE-PATH
2026-06-10T22:49:44.8867796Z - Title: Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)
2026-06-10T22:49:44.8867901Z - Required stages: impl, unit
2026-06-10T22:49:44.8867934Z 
2026-06-10T22:49:44.8868043Z ### REQ-HAZARD-LOCAL-API-AUTH
2026-06-10T22:49:44.8868249Z - Title: Every local `api` mutation authenticated to an endpoint/session (codex #13)
2026-06-10T22:49:44.8868348Z - Required stages: impl, unit
2026-06-10T22:49:44.8868382Z 
2026-06-10T22:49:44.8868498Z ### REQ-HAZARD-RESTART-IDEMPOTENT
2026-06-10T22:49:44.8868740Z - Title: Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)
2026-06-10T22:49:44.8868855Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8868888Z 
2026-06-10T22:49:44.8869120Z ### REQ-HAZARD-UPDATE-ROLLBACK
2026-06-10T22:49:44.8869365Z - Title: Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)
2026-06-10T22:49:44.8869471Z - Required stages: impl, unit
2026-06-10T22:49:44.8869505Z 
2026-06-10T22:49:44.8869619Z ### REQ-HAZARD-DAEMON-HOSTED-LIVENESS
2026-06-10T22:49:44.8870009Z - 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.5)
2026-06-10T22:49:44.8870115Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8870143Z 
2026-06-10T22:49:44.8870257Z ### REQ-HAZARD-BROKER-PROCESS-ISOLATION
2026-06-10T22:49:44.8872741Z - Title: Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).
2026-06-10T22:49:44.8872994Z - Required stages: doc, impl, unit, int
2026-06-10T22:49:44.8873032Z 
2026-06-10T22:49:44.8873141Z ### REQ-HAZARD-ROLLBACK-STATE-COMPAT
2026-06-10T22:49:44.8874830Z - Title: A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.
2026-06-10T22:49:44.8874955Z - Required stages: doc, impl, unit
2026-06-10T22:49:44.8874988Z 
2026-06-10T22:49:44.8875097Z ### REQ-HAZARD-PSYCHE-OUTBOUND-PROXY
2026-06-10T22:49:44.8875847Z - Title: Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)
2026-06-10T22:49:44.8875955Z - Required stages: impl, unit
2026-06-10T22:49:44.8875990Z 
2026-06-10T22:49:44.8876108Z ### REQ-HAZARD-DAEMON-SCHED-NONBLOCKING
2026-06-10T22:49:44.8876709Z - Title: 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 call cannot stall another agent's tick (7.4)
2026-06-10T22:49:44.8876835Z - Required stages: impl, unit
2026-06-10T22:49:44.8876868Z 
2026-06-10T22:49:44.8876975Z ### REQ-HAZARD-PAIR-TRANSCRIPT-BIND
2026-06-10T22:49:44.8877597Z - Title: Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)
2026-06-10T22:49:44.8877702Z - Required stages: impl, unit
2026-06-10T22:49:44.8877736Z 
2026-06-10T22:49:44.8877846Z ### REQ-HAZARD-PAIR-SEED-ROTATION
2026-06-10T22:49:44.8878351Z - 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 seed is replicated to every trusted node (ADR-0005 #10)
2026-06-10T22:49:44.8878456Z - Required stages: impl, unit
2026-06-10T22:49:44.8878494Z 
2026-06-10T22:49:44.8878608Z ### REQ-HAZARD-PAIR-RATE-LIMIT
2026-06-10T22:49:44.8879566Z - Title: Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)
2026-06-10T22:49:44.8879680Z - Required stages: impl, unit
2026-06-10T22:49:44.8879714Z 
2026-06-10T22:49:44.8879830Z ### REQ-HAZARD-WAN-ORIGIN-AUTH
2026-06-10T22:49:44.8880574Z - Title: WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)
2026-06-10T22:49:44.8880684Z - Required stages: doc, impl, unit
2026-06-10T22:49:44.8880713Z 
2026-06-10T22:49:44.8880813Z ### REQ-CONSENT-1
2026-06-10T22:49:44.8881766Z - Title: Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)
2026-06-10T22:49:44.8881882Z - Required stages: impl, unit
2026-06-10T22:49:44.8881911Z 
2026-06-10T22:49:44.8882010Z ### REQ-CONSENT-2
2026-06-10T22:49:44.8882776Z - Title: Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)
2026-06-10T22:49:44.8882882Z - Required stages: impl, unit
2026-06-10T22:49:44.8882915Z 
2026-06-10T22:49:44.8883011Z ### REQ-PRES-1
2026-06-10T22:49:44.8884426Z - Title: Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)
2026-06-10T22:49:44.8884546Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8884579Z 
2026-06-10T22:49:44.8884673Z ### REQ-SHELL-1
2026-06-10T22:49:44.8885482Z - Title: Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)
2026-06-10T22:49:44.8885586Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8885629Z 
2026-06-10T22:49:44.8885724Z ### REQ-SHELL-2
2026-06-10T22:49:44.8887089Z - Title: Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)
2026-06-10T22:49:44.8887207Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8887241Z 
2026-06-10T22:49:44.8887352Z ### REQ-HAZARD-ELEVATED-DAEMON-SPAWN
2026-06-10T22:49:44.8888553Z - Title: 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: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)
2026-06-10T22:49:44.8888664Z - Required stages: doc, impl, unit
2026-06-10T22:49:44.8888702Z 
2026-06-10T22:49:44.8888811Z ### REQ-HAZARD-REGISTRY-GHOST-ROWS
2026-06-10T22:49:44.8890145Z - Title: A dead node identity's registry rows must decay: only the per-(endpoint,node) epoch lease supersedes rows, so without eviction a vanished node's rows are immortal and poison bare-id resolution with phantom AcrossNodes ambiguity — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window; own rows never decay; a revived node re-inserts from its durable epoch within one pump cadence (4.10)
2026-06-10T22:49:44.8890259Z - Required stages: doc, impl, unit
2026-06-10T22:49:44.8890293Z 
2026-06-10T22:49:44.8890386Z ### REQ-CLI-1
2026-06-10T22:49:44.8891368Z - Title: 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); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25)
2026-06-10T22:49:44.8891574Z - Required stages: impl, unit
2026-06-10T22:49:44.8891611Z 
2026-06-10T22:49:44.8891692Z ### REQ-CLI-2
2026-06-10T22:49:44.8892341Z - Title: spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)
2026-06-10T22:49:44.8892437Z - Required stages: impl, unit
2026-06-10T22:49:44.8892471Z 
2026-06-10T22:49:44.8892570Z ### REQ-CLI-3
2026-06-10T22:49:44.8893242Z - Title: Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)
2026-06-10T22:49:44.8893345Z - Required stages: impl, unit
2026-06-10T22:49:44.8893456Z 
2026-06-10T22:49:44.8893566Z ### REQ-SUBNET-5
2026-06-10T22:49:44.8894619Z - Title: Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)
2026-06-10T22:49:44.8894725Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8894758Z 
2026-06-10T22:49:44.8894857Z ### REQ-SUBNET-6
2026-06-10T22:49:44.8895498Z - Title: Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)
2026-06-10T22:49:44.8895607Z - Required stages: impl, unit
2026-06-10T22:49:44.8895636Z 
2026-06-10T22:49:44.8895742Z ### REQ-SUBNET-7
2026-06-10T22:49:44.8897273Z - Title: Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)
2026-06-10T22:49:44.8897381Z - Required stages: impl, unit
2026-06-10T22:49:44.8897414Z 
2026-06-10T22:49:44.8897509Z ### REQ-SUBNET-8
2026-06-10T22:49:44.8898532Z - Title: Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)
2026-06-10T22:49:44.8898647Z - Required stages: impl, unit
2026-06-10T22:49:44.8898681Z 
2026-06-10T22:49:44.8898774Z ### REQ-INSTALL-6
2026-06-10T22:49:44.8900020Z - 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) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)
2026-06-10T22:49:44.8900130Z - Required stages: impl, unit
2026-06-10T22:49:44.8900163Z 
2026-06-10T22:49:44.8900372Z ### REQ-INSTALL-7
2026-06-10T22:49:44.8901418Z - Title: Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)
2026-06-10T22:49:44.8901523Z - Required stages: impl
2026-06-10T22:49:44.8901557Z 
2026-06-10T22:49:44.8901656Z ### REQ-INSTALL-8
2026-06-10T22:49:44.8902634Z - Title: OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)
2026-06-10T22:49:44.8902740Z - Required stages: impl
2026-06-10T22:49:44.8902778Z 
2026-06-10T22:49:44.8902877Z ### REQ-CONV-1
2026-06-10T22:49:44.8904293Z - Title: Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)
2026-06-10T22:49:44.8904402Z - Required stages: impl, unit
2026-06-10T22:49:44.8904436Z 
2026-06-10T22:49:44.8904530Z ### REQ-CONV-2
2026-06-10T22:49:44.8905629Z - Title: Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)
2026-06-10T22:49:44.8905746Z - Required stages: impl, unit
2026-06-10T22:49:44.8905779Z 
2026-06-10T22:49:44.8905874Z ### REQ-PAIR-8
2026-06-10T22:49:44.8907116Z - Title: NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)
2026-06-10T22:49:44.8907227Z - Required stages: impl, unit
2026-06-10T22:49:44.8907255Z 
2026-06-10T22:49:44.8907355Z ### REQ-DAEMON-5
2026-06-10T22:49:44.8908618Z - 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); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)
2026-06-10T22:49:44.8908732Z - Required stages: impl, unit
2026-06-10T22:49:44.8908765Z 
2026-06-10T22:49:44.8908860Z ### REQ-DAEMON-6
2026-06-10T22:49:44.8910851Z - Title: Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.
2026-06-10T22:49:44.8911091Z - Required stages: impl, unit
2026-06-10T22:49:44.8911124Z 
2026-06-10T22:49:44.8911217Z ### REQ-DAEMON-7
2026-06-10T22:49:44.8912588Z - Title: `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-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).
2026-06-10T22:49:44.8912704Z - Required stages: impl, unit
2026-06-10T22:49:44.8912736Z 
2026-06-10T22:49:44.8912831Z ### REQ-DAEMON-8
2026-06-10T22:49:44.8913732Z - Title: Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.
2026-06-10T22:49:44.8913848Z - Required stages: impl, unit
2026-06-10T22:49:44.8913882Z 
2026-06-10T22:49:44.8914070Z ### REQ-DAEMON-9
2026-06-10T22:49:44.8916273Z - Title: Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.
2026-06-10T22:49:44.8916386Z - Required stages: impl, unit
2026-06-10T22:49:44.8916420Z 
2026-06-10T22:49:44.8916516Z ### REQ-HAZARD-EPOCH-RESET
2026-06-10T22:49:44.8917764Z - Title: Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)
2026-06-10T22:49:44.8917858Z - Required stages: 
2026-06-10T22:49:44.8917892Z 
2026-06-10T22:49:44.8917982Z ### REQ-MESH-1
2026-06-10T22:49:44.8920063Z - Title: Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).
2026-06-10T22:49:44.8920176Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8920210Z 
2026-06-10T22:49:44.8920306Z ### REQ-MESH-2
2026-06-10T22:49:44.8922743Z - Title: Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).
2026-06-10T22:49:44.8922959Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8922991Z 
2026-06-10T22:49:44.8923081Z ### REQ-MESH-3
2026-06-10T22:49:44.8924640Z - Title: Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.
2026-06-10T22:49:44.8924846Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8924884Z 
2026-06-10T22:49:44.8924978Z ### REQ-MESH-4
2026-06-10T22:49:44.8927095Z - Title: Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.
2026-06-10T22:49:44.8927245Z - Required stages: impl, unit, int
2026-06-10T22:49:44.8927278Z 
2026-06-10T22:49:44.8927374Z ### REQ-MESH-5
2026-06-10T22:49:44.8928686Z - Title: Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.
2026-06-10T22:49:44.8928790Z - Required stages: impl, unit
2026-06-10T22:49:44.8928823Z 
2026-06-10T22:49:44.8928919Z ### REQ-MESH-6
2026-06-10T22:49:44.8930169Z - Title: Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)
2026-06-10T22:49:44.8930284Z - Required stages: impl, unit
2026-06-10T22:49:44.8930318Z 
2026-06-10T22:49:44.8930417Z ## How to report back
2026-06-10T22:49:44.8930451Z 
2026-06-10T22:49:44.8930618Z For every (requirement, failing criterion) pair, emit one finding:
2026-06-10T22:49:44.8930651Z 
2026-06-10T22:49:44.8930736Z     {
2026-06-10T22:49:44.8930847Z       "code": "requirement_quality",
2026-06-10T22:49:44.8930956Z       "requirementId": "REQ-...",
2026-06-10T22:49:44.8931132Z       "criterion": "singular" | "verifiable" | "atomic" | "active-voice",
2026-06-10T22:49:44.8931229Z       "message": "<short reason>",
2026-06-10T22:49:44.8931357Z       "suggestedRevision": "<optional rewrite>"
2026-06-10T22:49:44.8931610Z     }
2026-06-10T22:49:44.8931638Z 
2026-06-10T22:49:44.8931825Z Wrap your response as { "findings": [ ... ] } listing only your concerns; the
2026-06-10T22:49:44.8931976Z deterministic findings above don't need to be repeated.
2026-06-10T22:49:44.9004348Z Post job cleanup.
2026-06-10T22:49:44.9671985Z [command]/usr/bin/git version
2026-06-10T22:49:44.9738840Z git version 2.43.0
2026-06-10T22:49:44.9771398Z Temporarily overriding HOME='/home/reavus/actions-runner/_work/_temp/8bb3a8ea-2f9a-4a70-8fba-b5a3e7efe424' before making global git config changes
2026-06-10T22:49:44.9771655Z Adding repository directory to the temporary git global config as a safe directory
2026-06-10T22:49:44.9774943Z [command]/usr/bin/git config --global --add safe.directory /home/reavus/actions-runner/_work/spt-core/spt-core
2026-06-10T22:49:44.9802515Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-06-10T22:49:44.9827056Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
2026-06-10T22:49:45.0017980Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
2026-06-10T22:49:45.0038428Z http.https://github.com/.extraheader
2026-06-10T22:49:45.0045782Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader
2026-06-10T22:49:45.0072511Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :"
2026-06-10T22:49:45.0253580Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
2026-06-10T22:49:45.0277913Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
2026-06-10T22:49:45.0569205Z Cleaning up orphan processes
