﻿2026-06-17T06:47:29.8056398Z Current runner version: '2.335.1'
2026-06-17T06:47:29.8061633Z Runner name: 'kitsubito'
2026-06-17T06:47:29.8062142Z Runner group name: 'Default'
2026-06-17T06:47:29.8062801Z Machine name: 'KITSUBITO'
2026-06-17T06:47:29.8064651Z ##[group]GITHUB_TOKEN Permissions
2026-06-17T06:47:29.8066388Z Contents: read
2026-06-17T06:47:29.8066797Z Metadata: read
2026-06-17T06:47:29.8067166Z Packages: read
2026-06-17T06:47:29.8067527Z ##[endgroup]
2026-06-17T06:47:29.8069189Z Secret source: Actions
2026-06-17T06:47:29.8069695Z Prepare workflow directory
2026-06-17T06:47:29.8444327Z Prepare all required actions
2026-06-17T06:47:29.8472849Z Getting action download info
2026-06-17T06:47:30.1950634Z Download action repository 'actions/checkout@v5' (SHA:93cb6efe18208431cddfb8368fd83d5badbf9bfd)
2026-06-17T06:47:30.7547078Z Complete job name: traceability
2026-06-17T06:47:30.8351139Z ##[group]Run actions/checkout@v5
2026-06-17T06:47:30.8351903Z with:
2026-06-17T06:47:30.8352289Z   repository: SaberMage/spt-core
2026-06-17T06:47:30.8355806Z   token: ***
2026-06-17T06:47:30.8356192Z   ssh-strict: true
2026-06-17T06:47:30.8356563Z   ssh-user: git
2026-06-17T06:47:30.8356940Z   persist-credentials: true
2026-06-17T06:47:30.8357346Z   clean: true
2026-06-17T06:47:30.8357714Z   sparse-checkout-cone-mode: true
2026-06-17T06:47:30.8358140Z   fetch-depth: 1
2026-06-17T06:47:30.8358498Z   fetch-tags: false
2026-06-17T06:47:30.8358870Z   show-progress: true
2026-06-17T06:47:30.8359324Z   lfs: false
2026-06-17T06:47:30.8359685Z   submodules: false
2026-06-17T06:47:30.8360057Z   set-safe-directory: true
2026-06-17T06:47:30.8360656Z ##[endgroup]
2026-06-17T06:47:30.9151238Z Syncing repository: SaberMage/spt-core
2026-06-17T06:47:30.9152703Z ##[group]Getting Git version info
2026-06-17T06:47:30.9153408Z Working directory is '/home/reavus/actions-runner/_work/spt-core/spt-core'
2026-06-17T06:47:30.9154339Z [command]/usr/bin/git version
2026-06-17T06:47:30.9154764Z git version 2.43.0
2026-06-17T06:47:30.9161350Z ##[endgroup]
2026-06-17T06:47:30.9172048Z Temporarily overriding HOME='/home/reavus/actions-runner/_work/_temp/2c14fe7f-0121-4719-9d00-24145f814bc2' before making global git config changes
2026-06-17T06:47:30.9173230Z Adding repository directory to the temporary git global config as a safe directory
2026-06-17T06:47:30.9175373Z [command]/usr/bin/git config --global --add safe.directory /home/reavus/actions-runner/_work/spt-core/spt-core
2026-06-17T06:47:30.9206992Z [command]/usr/bin/git config --local --get remote.origin.url
2026-06-17T06:47:30.9226135Z https://github.com/SaberMage/spt-core
2026-06-17T06:47:30.9236068Z ##[group]Removing previously created refs, to avoid conflicts
2026-06-17T06:47:30.9238571Z [command]/usr/bin/git rev-parse --symbolic-full-name --verify --quiet HEAD
2026-06-17T06:47:30.9258243Z HEAD
2026-06-17T06:47:30.9288658Z ##[endgroup]
2026-06-17T06:47:30.9289415Z [command]/usr/bin/git submodule status
2026-06-17T06:47:30.9467442Z ##[group]Cleaning the repository
2026-06-17T06:47:30.9470428Z [command]/usr/bin/git clean -ffdx
2026-06-17T06:47:30.9618345Z Removing dist/
2026-06-17T06:47:30.9625538Z [command]/usr/bin/git reset --hard HEAD
2026-06-17T06:47:30.9674700Z HEAD is now at b6470c1 release: v0.8.3
2026-06-17T06:47:30.9679359Z ##[endgroup]
2026-06-17T06:47:30.9681082Z ##[group]Disabling automatic garbage collection
2026-06-17T06:47:30.9683821Z [command]/usr/bin/git config --local gc.auto 0
2026-06-17T06:47:30.9706912Z ##[endgroup]
2026-06-17T06:47:30.9707612Z ##[group]Setting up auth
2026-06-17T06:47:30.9712057Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-06-17T06:47:30.9734952Z [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-17T06:47:30.9923722Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
2026-06-17T06:47:30.9949445Z [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-17T06:47:31.0133025Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
2026-06-17T06:47:31.0160023Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
2026-06-17T06:47:31.0348122Z [command]/usr/bin/git config --local http.https://github.com/.extraheader AUTHORIZATION: basic ***
2026-06-17T06:47:31.0378694Z ##[endgroup]
2026-06-17T06:47:31.0379716Z ##[group]Fetching the repository
2026-06-17T06:47:31.0386788Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +934b9dd4f538395a1d41c59261f8ae687f5becfe:refs/remotes/pull/20/merge
2026-06-17T06:47:31.5261752Z From https://github.com/SaberMage/spt-core
2026-06-17T06:47:31.5262692Z  * [new ref]         934b9dd4f538395a1d41c59261f8ae687f5becfe -> pull/20/merge
2026-06-17T06:47:31.5282195Z ##[endgroup]
2026-06-17T06:47:31.5282819Z ##[group]Determining the checkout info
2026-06-17T06:47:31.5283865Z ##[endgroup]
2026-06-17T06:47:31.5288170Z [command]/usr/bin/git sparse-checkout disable
2026-06-17T06:47:31.5324411Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig
2026-06-17T06:47:31.5350008Z ##[group]Checking out the ref
2026-06-17T06:47:31.5358663Z [command]/usr/bin/git checkout --progress --force refs/remotes/pull/20/merge
2026-06-17T06:47:31.5439565Z Previous HEAD position was b6470c1 release: v0.8.3
2026-06-17T06:47:31.5441380Z HEAD is now at 934b9dd Merge 5894bd60b9359694931a69c83415a70e25b09862 into b6470c1c4ababb407d44ed2c38b4354485f0b6b1
2026-06-17T06:47:31.5446825Z ##[endgroup]
2026-06-17T06:47:31.5480102Z [command]/usr/bin/git log -1 --format=%H
2026-06-17T06:47:31.5500398Z 934b9dd4f538395a1d41c59261f8ae687f5becfe
2026-06-17T06:47:31.5707779Z ##[group]Run WANT=0.1.2
2026-06-17T06:47:31.5708743Z [36;1mWANT=0.1.2[0m
2026-06-17T06:47:31.5709706Z [36;1mBIN="$HOME/.local/bin/traceable-reqs"[0m
2026-06-17T06:47:31.5710952Z [36;1mif [ -x "$BIN" ] && "$BIN" --version | grep -q " $WANT\$"; then[0m
2026-06-17T06:47:31.5712173Z [36;1m  ln -sf "$BIN" ./traceable-reqs[0m
2026-06-17T06:47:31.5713109Z [36;1melse[0m
2026-06-17T06:47:31.5714082Z [36;1m  # Build OUTSIDE the checkout: a clone inside it gets adopted by[0m
2026-06-17T06:47:31.5715492Z [36;1m  # the spt-core cargo workspace and refuses to build.[0m
2026-06-17T06:47:31.5716591Z [36;1m  SRC="$RUNNER_TEMP/tr-src"[0m
2026-06-17T06:47:31.5717460Z [36;1m  rm -rf "$SRC"[0m
2026-06-17T06:47:31.5718297Z [36;1m  git clone --depth 1 --branch "v$WANT" \[0m
2026-06-17T06:47:31.5719875Z [36;1m    "https://x-access-token:${GH_TOKEN}@github.com/BigscreenVR/traceable-reqs" "$SRC"[0m
2026-06-17T06:47:31.5721575Z [36;1m  cargo build --release --manifest-path "$SRC/rust/Cargo.toml"[0m
2026-06-17T06:47:31.5722785Z [36;1m  mkdir -p "$HOME/.local/bin"[0m
2026-06-17T06:47:31.5723826Z [36;1m  cp "$SRC/rust/target/release/traceable-reqs" "$BIN"[0m
2026-06-17T06:47:31.5724933Z [36;1m  ln -sf "$BIN" ./traceable-reqs[0m
2026-06-17T06:47:31.5725825Z [36;1mfi[0m
2026-06-17T06:47:31.5726509Z [36;1m./traceable-reqs --version[0m
2026-06-17T06:47:31.5742786Z shell: /usr/bin/bash -e {0}
2026-06-17T06:47:31.5743581Z env:
2026-06-17T06:47:31.5745132Z   GH_TOKEN: ***
2026-06-17T06:47:31.5745809Z ##[endgroup]
2026-06-17T06:47:31.5828774Z traceable-reqs 0.1.2
2026-06-17T06:47:31.5899064Z ##[group]Run ./traceable-reqs check --json
2026-06-17T06:47:31.5900131Z [36;1m./traceable-reqs check --json[0m
2026-06-17T06:47:31.5913611Z shell: /usr/bin/bash -e {0}
2026-06-17T06:47:31.5914372Z ##[endgroup]
2026-06-17T06:47:31.6129380Z {
2026-06-17T06:47:31.6130505Z   "schemaVersion": 1,
2026-06-17T06:47:31.6131749Z   "summary": {
2026-06-17T06:47:31.6132920Z     "requirementCount": 222,
2026-06-17T06:47:31.6134282Z     "completeCount": 222,
2026-06-17T06:47:31.6135482Z     "incompleteCount": 0,
2026-06-17T06:47:31.6136868Z     "findingCount": 0
2026-06-17T06:47:31.6137812Z   },
2026-06-17T06:47:31.6138663Z   "requirements": [
2026-06-17T06:47:31.6139674Z     {
2026-06-17T06:47:31.6140556Z       "id": "REQ-API-1",
2026-06-17T06:47:31.6141971Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-17T06:47:31.6143603Z       "requiredStages": [
2026-06-17T06:47:31.6144604Z         "impl",
2026-06-17T06:47:31.6145487Z         "unit",
2026-06-17T06:47:31.6146436Z         "int"
2026-06-17T06:47:31.6147300Z       ],
2026-06-17T06:47:31.6148141Z       "stages": {
2026-06-17T06:47:31.6149104Z         "doc": {
2026-06-17T06:47:31.6150038Z           "complete": false,
2026-06-17T06:47:31.6151093Z           "evidence": []
2026-06-17T06:47:31.6152069Z         },
2026-06-17T06:47:31.6152908Z         "impl": {
2026-06-17T06:47:31.6153824Z           "complete": true,
2026-06-17T06:47:31.6154865Z           "evidence": [
2026-06-17T06:47:31.6155799Z             {
2026-06-17T06:47:31.6156768Z               "path": "crates/spt/src/api/mod.rs",
2026-06-17T06:47:31.6158003Z               "line": 15
2026-06-17T06:47:31.6159027Z             }
2026-06-17T06:47:31.6159873Z           ]
2026-06-17T06:47:31.6160709Z         },
2026-06-17T06:47:31.6161529Z         "int": {
2026-06-17T06:47:31.6164370Z           "complete": true,
2026-06-17T06:47:31.6165406Z           "evidence": [
2026-06-17T06:47:31.6166350Z             {
2026-06-17T06:47:31.6167395Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-17T06:47:31.6168702Z               "line": 13
2026-06-17T06:47:31.6169729Z             }
2026-06-17T06:47:31.6170587Z           ]
2026-06-17T06:47:31.6171420Z         },
2026-06-17T06:47:31.6172251Z         "unit": {
2026-06-17T06:47:31.6173180Z           "complete": true,
2026-06-17T06:47:31.6174053Z           "evidence": [
2026-06-17T06:47:31.6174752Z             {
2026-06-17T06:47:31.6175432Z               "path": "crates/spt/src/api/mod.rs",
2026-06-17T06:47:31.6176329Z               "line": 574
2026-06-17T06:47:31.6177020Z             },
2026-06-17T06:47:31.6177619Z             {
2026-06-17T06:47:31.6178290Z               "path": "crates/spt/src/api/mod.rs",
2026-06-17T06:47:31.6179243Z               "line": 691
2026-06-17T06:47:31.6179911Z             },
2026-06-17T06:47:31.6180498Z             {
2026-06-17T06:47:31.6181166Z               "path": "crates/spt/src/api/mod.rs",
2026-06-17T06:47:31.6182053Z               "line": 778
2026-06-17T06:47:31.6182735Z             }
2026-06-17T06:47:31.6183329Z           ]
2026-06-17T06:47:31.6183906Z         }
2026-06-17T06:47:31.6184474Z       }
2026-06-17T06:47:31.6185047Z     },
2026-06-17T06:47:31.6185610Z     {
2026-06-17T06:47:31.6186186Z       "id": "REQ-API-2",
2026-06-17T06:47:31.6187317Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-17T06:47:31.6188620Z       "requiredStages": [
2026-06-17T06:47:31.6189722Z         "impl",
2026-06-17T06:47:31.6190617Z         "unit",
2026-06-17T06:47:31.6191502Z         "int"
2026-06-17T06:47:31.6192346Z       ],
2026-06-17T06:47:31.6193214Z       "stages": {
2026-06-17T06:47:31.6194062Z         "doc": {
2026-06-17T06:47:31.6194977Z           "complete": false,
2026-06-17T06:47:31.6196051Z           "evidence": []
2026-06-17T06:47:31.6197028Z         },
2026-06-17T06:47:31.6197882Z         "impl": {
2026-06-17T06:47:31.6198819Z           "complete": true,
2026-06-17T06:47:31.6199910Z           "evidence": [
2026-06-17T06:47:31.6201186Z             {
2026-06-17T06:47:31.6202224Z               "path": "crates/spt-store/src/history.rs",
2026-06-17T06:47:31.6203532Z               "line": 17
2026-06-17T06:47:31.6204498Z             },
2026-06-17T06:47:31.6205355Z             {
2026-06-17T06:47:31.6206370Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-17T06:47:31.6207675Z               "line": 20
2026-06-17T06:47:31.6208677Z             },
2026-06-17T06:47:31.6209449Z             {
2026-06-17T06:47:31.6210160Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-17T06:47:31.6211249Z               "line": 142
2026-06-17T06:47:31.6211946Z             },
2026-06-17T06:47:31.6212556Z             {
2026-06-17T06:47:31.6213290Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:31.6214219Z               "line": 24
2026-06-17T06:47:31.6214886Z             },
2026-06-17T06:47:31.6215487Z             {
2026-06-17T06:47:31.6216436Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:31.6217367Z               "line": 41
2026-06-17T06:47:31.6218039Z             },
2026-06-17T06:47:31.6218654Z             {
2026-06-17T06:47:31.6219456Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:31.6220400Z               "line": 209
2026-06-17T06:47:31.6221097Z             },
2026-06-17T06:47:31.6221712Z             {
2026-06-17T06:47:31.6222445Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:31.6223383Z               "line": 251
2026-06-17T06:47:31.6224069Z             },
2026-06-17T06:47:31.6224681Z             {
2026-06-17T06:47:31.6225394Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:31.6226362Z               "line": 330
2026-06-17T06:47:31.6227057Z             },
2026-06-17T06:47:31.6227656Z             {
2026-06-17T06:47:31.6228389Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:31.6229381Z               "line": 393
2026-06-17T06:47:31.6230074Z             },
2026-06-17T06:47:31.6230684Z             {
2026-06-17T06:47:31.6231410Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:31.6232354Z               "line": 432
2026-06-17T06:47:31.6233043Z             },
2026-06-17T06:47:31.6233643Z             {
2026-06-17T06:47:31.6234352Z               "path": "crates/spt/src/api/worker.rs",
2026-06-17T06:47:31.6235264Z               "line": 17
2026-06-17T06:47:31.6235936Z             },
2026-06-17T06:47:31.6236536Z             {
2026-06-17T06:47:31.6237222Z               "path": "crates/spt/src/api/worker.rs",
2026-06-17T06:47:31.6238141Z               "line": 30
2026-06-17T06:47:31.6238817Z             },
2026-06-17T06:47:31.6239470Z             {
2026-06-17T06:47:31.6240175Z               "path": "crates/spt/src/api/worker.rs",
2026-06-17T06:47:31.6241088Z               "line": 63
2026-06-17T06:47:31.6241769Z             },
2026-06-17T06:47:31.6242379Z             {
2026-06-17T06:47:31.6243066Z               "path": "crates/spt/src/api/worker.rs",
2026-06-17T06:47:31.6243965Z               "line": 77
2026-06-17T06:47:31.6244651Z             }
2026-06-17T06:47:31.6245236Z           ]
2026-06-17T06:47:31.6245815Z         },
2026-06-17T06:47:31.6246394Z         "int": {
2026-06-17T06:47:31.6247024Z           "complete": true,
2026-06-17T06:47:31.6247731Z           "evidence": [
2026-06-17T06:47:31.6248393Z             {
2026-06-17T06:47:31.6249176Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-17T06:47:31.6250106Z               "line": 14
2026-06-17T06:47:31.6250783Z             },
2026-06-17T06:47:31.6251373Z             {
2026-06-17T06:47:31.6252090Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-17T06:47:31.6253029Z               "line": 187
2026-06-17T06:47:31.6253717Z             }
2026-06-17T06:47:31.6254285Z           ]
2026-06-17T06:47:31.6254928Z         },
2026-06-17T06:47:31.6255535Z         "unit": {
2026-06-17T06:47:31.6256207Z           "complete": true,
2026-06-17T06:47:31.6257117Z           "evidence": [
2026-06-17T06:47:31.6258009Z             {
2026-06-17T06:47:31.6258848Z               "path": "crates/spt-store/src/history.rs",
2026-06-17T06:47:31.6260680Z               "line": 82
2026-06-17T06:47:31.6261581Z             },
2026-06-17T06:47:31.6262335Z             {
2026-06-17T06:47:31.6263289Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-17T06:47:31.6264662Z               "line": 279
2026-06-17T06:47:31.6265532Z             },
2026-06-17T06:47:31.6266147Z             {
2026-06-17T06:47:31.6266864Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:31.6268034Z               "line": 705
2026-06-17T06:47:31.6268721Z             },
2026-06-17T06:47:31.6269380Z             {
2026-06-17T06:47:31.6270096Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:31.6271036Z               "line": 716
2026-06-17T06:47:31.6271709Z             },
2026-06-17T06:47:31.6272300Z             {
2026-06-17T06:47:31.6273016Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:31.6273956Z               "line": 869
2026-06-17T06:47:31.6274647Z             },
2026-06-17T06:47:31.6275250Z             {
2026-06-17T06:47:31.6275954Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:31.6276875Z               "line": 915
2026-06-17T06:47:31.6277537Z             },
2026-06-17T06:47:31.6278313Z             {
2026-06-17T06:47:31.6279215Z               "path": "crates/spt/src/api/worker.rs",
2026-06-17T06:47:31.6280243Z               "line": 143
2026-06-17T06:47:31.6281086Z             },
2026-06-17T06:47:31.6281777Z             {
2026-06-17T06:47:31.6282579Z               "path": "crates/spt/src/api/worker.rs",
2026-06-17T06:47:31.6283586Z               "line": 187
2026-06-17T06:47:31.6284371Z             }
2026-06-17T06:47:31.6285078Z           ]
2026-06-17T06:47:31.6285744Z         }
2026-06-17T06:47:31.6286438Z       }
2026-06-17T06:47:31.6324885Z     },
2026-06-17T06:47:31.6325541Z     {
2026-06-17T06:47:31.6326112Z       "id": "REQ-API-3",
2026-06-17T06:47:31.6327008Z       "title": "commune/signoff are file-drops, not commands",
2026-06-17T06:47:31.6328027Z       "requiredStages": [
2026-06-17T06:47:31.6328699Z         "impl",
2026-06-17T06:47:31.6329470Z         "unit",
2026-06-17T06:47:31.6330061Z         "int"
2026-06-17T06:47:31.6330653Z       ],
2026-06-17T06:47:31.6331214Z       "stages": {
2026-06-17T06:47:31.6331825Z         "doc": {
2026-06-17T06:47:31.6332450Z           "complete": false,
2026-06-17T06:47:31.6333178Z           "evidence": []
2026-06-17T06:47:31.6333872Z         },
2026-06-17T06:47:31.6334426Z         "impl": {
2026-06-17T06:47:31.6335041Z           "complete": true,
2026-06-17T06:47:31.6335760Z           "evidence": [
2026-06-17T06:47:31.6336411Z             {
2026-06-17T06:47:31.6337102Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-17T06:47:31.6338003Z               "line": 27
2026-06-17T06:47:31.6338672Z             },
2026-06-17T06:47:31.6339335Z             {
2026-06-17T06:47:31.6340058Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:31.6340984Z               "line": 562
2026-06-17T06:47:31.6341659Z             }
2026-06-17T06:47:31.6342247Z           ]
2026-06-17T06:47:31.6342823Z         },
2026-06-17T06:47:31.6343368Z         "int": {
2026-06-17T06:47:31.6343988Z           "complete": true,
2026-06-17T06:47:31.6344695Z           "evidence": [
2026-06-17T06:47:31.6345338Z             {
2026-06-17T06:47:31.6346038Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-17T06:47:31.6346961Z               "line": 261
2026-06-17T06:47:31.6347633Z             }
2026-06-17T06:47:31.6348215Z           ]
2026-06-17T06:47:31.6348768Z         },
2026-06-17T06:47:31.6349393Z         "unit": {
2026-06-17T06:47:31.6350008Z           "complete": true,
2026-06-17T06:47:31.6350710Z           "evidence": [
2026-06-17T06:47:31.6351355Z             {
2026-06-17T06:47:31.6352034Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-17T06:47:31.6352930Z               "line": 280
2026-06-17T06:47:31.6353831Z             },
2026-06-17T06:47:31.6354424Z             {
2026-06-17T06:47:31.6355130Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:31.6356045Z               "line": 944
2026-06-17T06:47:31.6356708Z             }
2026-06-17T06:47:31.6357268Z           ]
2026-06-17T06:47:31.6357821Z         }
2026-06-17T06:47:31.6358360Z       }
2026-06-17T06:47:31.6358893Z     },
2026-06-17T06:47:31.6359527Z     {
2026-06-17T06:47:31.6360078Z       "id": "REQ-API-4",
2026-06-17T06:47:31.6365762Z       "title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)",
2026-06-17T06:47:31.6371239Z       "requiredStages": [
2026-06-17T06:47:31.6371930Z         "doc",
2026-06-17T06:47:31.6372504Z         "impl",
2026-06-17T06:47:31.6373097Z         "unit"
2026-06-17T06:47:31.6373683Z       ],
2026-06-17T06:47:31.6374232Z       "stages": {
2026-06-17T06:47:31.6374833Z         "doc": {
2026-06-17T06:47:31.6375442Z           "complete": true,
2026-06-17T06:47:31.6376146Z           "evidence": [
2026-06-17T06:47:31.6376775Z             {
2026-06-17T06:47:31.6377390Z               "path": "CONTEXT.md",
2026-06-17T06:47:31.6378171Z               "line": 149
2026-06-17T06:47:31.6378817Z             }
2026-06-17T06:47:31.6379704Z           ]
2026-06-17T06:47:31.6380285Z         },
2026-06-17T06:47:31.6380838Z         "impl": {
2026-06-17T06:47:31.6381446Z           "complete": true,
2026-06-17T06:47:31.6382147Z           "evidence": [
2026-06-17T06:47:31.6382782Z             {
2026-06-17T06:47:31.6383458Z               "path": "crates/spt/src/api/mod.rs",
2026-06-17T06:47:31.6384336Z               "line": 479
2026-06-17T06:47:31.6385007Z             }
2026-06-17T06:47:31.6385579Z           ]
2026-06-17T06:47:31.6386133Z         },
2026-06-17T06:47:31.6386682Z         "int": {
2026-06-17T06:47:31.6387297Z           "complete": false,
2026-06-17T06:47:31.6388007Z           "evidence": []
2026-06-17T06:47:31.6388664Z         },
2026-06-17T06:47:31.6389282Z         "unit": {
2026-06-17T06:47:31.6389893Z           "complete": true,
2026-06-17T06:47:31.6390589Z           "evidence": [
2026-06-17T06:47:31.6391231Z             {
2026-06-17T06:47:31.6391881Z               "path": "crates/spt/src/api/mod.rs",
2026-06-17T06:47:31.6392754Z               "line": 631
2026-06-17T06:47:31.6393421Z             },
2026-06-17T06:47:31.6393986Z             {
2026-06-17T06:47:31.6394628Z               "path": "crates/spt/src/api/mod.rs",
2026-06-17T06:47:31.6395491Z               "line": 655
2026-06-17T06:47:31.6396140Z             },
2026-06-17T06:47:31.6396707Z             {
2026-06-17T06:47:31.6397360Z               "path": "crates/spt/src/api/mod.rs",
2026-06-17T06:47:31.6398224Z               "line": 679
2026-06-17T06:47:31.6398882Z             }
2026-06-17T06:47:31.6399518Z           ]
2026-06-17T06:47:31.6400067Z         }
2026-06-17T06:47:31.6400605Z       }
2026-06-17T06:47:31.6401139Z     },
2026-06-17T06:47:31.6401679Z     {
2026-06-17T06:47:31.6402228Z       "id": "REQ-ARCH-1",
2026-06-17T06:47:31.6403029Z       "title": "Many small acyclically-layered crates",
2026-06-17T06:47:31.6403958Z       "requiredStages": [
2026-06-17T06:47:31.6404644Z         "impl"
2026-06-17T06:47:31.6405221Z       ],
2026-06-17T06:47:31.6405760Z       "stages": {
2026-06-17T06:47:31.6406351Z         "doc": {
2026-06-17T06:47:31.6406960Z           "complete": false,
2026-06-17T06:47:31.6407668Z           "evidence": []
2026-06-17T06:47:31.6408308Z         },
2026-06-17T06:47:31.6408861Z         "impl": {
2026-06-17T06:47:31.6409548Z           "complete": true,
2026-06-17T06:47:31.6410365Z           "evidence": [
2026-06-17T06:47:31.6411018Z             {
2026-06-17T06:47:31.6411665Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-17T06:47:31.6412527Z               "line": 18
2026-06-17T06:47:31.6413175Z             },
2026-06-17T06:47:31.6413747Z             {
2026-06-17T06:47:31.6414405Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-17T06:47:31.6415280Z               "line": 12
2026-06-17T06:47:31.6415924Z             },
2026-06-17T06:47:31.6416482Z             {
2026-06-17T06:47:31.6417145Z               "path": "crates/spt-store/src/lib.rs",
2026-06-17T06:47:31.6418138Z               "line": 12
2026-06-17T06:47:31.6418796Z             }
2026-06-17T06:47:31.6419463Z           ]
2026-06-17T06:47:31.6420012Z         },
2026-06-17T06:47:31.6420563Z         "int": {
2026-06-17T06:47:31.6421173Z           "complete": false,
2026-06-17T06:47:31.6421878Z           "evidence": []
2026-06-17T06:47:31.6422531Z         },
2026-06-17T06:47:31.6423078Z         "unit": {
2026-06-17T06:47:31.6423701Z           "complete": false,
2026-06-17T06:47:31.6424402Z           "evidence": []
2026-06-17T06:47:31.6425060Z         }
2026-06-17T06:47:31.6425609Z       }
2026-06-17T06:47:31.6426140Z     },
2026-06-17T06:47:31.6426670Z     {
2026-06-17T06:47:31.6427220Z       "id": "REQ-ARCH-2",
2026-06-17T06:47:31.6428157Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-17T06:47:31.6429341Z       "requiredStages": [
2026-06-17T06:47:31.6430048Z         "impl"
2026-06-17T06:47:31.6430673Z       ],
2026-06-17T06:47:31.6431255Z       "stages": {
2026-06-17T06:47:31.6431842Z         "doc": {
2026-06-17T06:47:31.6432452Z           "complete": false,
2026-06-17T06:47:31.6433163Z           "evidence": []
2026-06-17T06:47:31.6433831Z         },
2026-06-17T06:47:31.6434395Z         "impl": {
2026-06-17T06:47:31.6435010Z           "complete": true,
2026-06-17T06:47:31.6435706Z           "evidence": [
2026-06-17T06:47:31.6436348Z             {
2026-06-17T06:47:31.6437025Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-17T06:47:31.6437898Z               "line": 18
2026-06-17T06:47:31.6438551Z             }
2026-06-17T06:47:31.6439197Z           ]
2026-06-17T06:47:31.6439750Z         },
2026-06-17T06:47:31.6440303Z         "int": {
2026-06-17T06:47:31.6440918Z           "complete": false,
2026-06-17T06:47:31.6441627Z           "evidence": []
2026-06-17T06:47:31.6442279Z         },
2026-06-17T06:47:31.6442836Z         "unit": {
2026-06-17T06:47:31.6443460Z           "complete": false,
2026-06-17T06:47:31.6444180Z           "evidence": []
2026-06-17T06:47:31.6444831Z         }
2026-06-17T06:47:31.6445378Z       }
2026-06-17T06:47:31.6445918Z     },
2026-06-17T06:47:31.6446448Z     {
2026-06-17T06:47:31.6447008Z       "id": "REQ-ARCH-3",
2026-06-17T06:47:31.6448077Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-17T06:47:31.6449400Z       "requiredStages": [
2026-06-17T06:47:31.6450100Z         "impl",
2026-06-17T06:47:31.6450686Z         "unit"
2026-06-17T06:47:31.6451250Z       ],
2026-06-17T06:47:31.6451803Z       "stages": {
2026-06-17T06:47:31.6452399Z         "doc": {
2026-06-17T06:47:31.6453009Z           "complete": false,
2026-06-17T06:47:31.6453715Z           "evidence": []
2026-06-17T06:47:31.6454375Z         },
2026-06-17T06:47:31.6454933Z         "impl": {
2026-06-17T06:47:31.6455543Z           "complete": true,
2026-06-17T06:47:31.6456230Z           "evidence": [
2026-06-17T06:47:31.6456879Z             {
2026-06-17T06:47:31.6457559Z               "path": "crates/spt-proto/src/version.rs",
2026-06-17T06:47:31.6458465Z               "line": 34
2026-06-17T06:47:31.6459176Z             },
2026-06-17T06:47:31.6459761Z             {
2026-06-17T06:47:31.6460454Z               "path": "crates/spt-proto/src/version.rs",
2026-06-17T06:47:31.6461346Z               "line": 41
2026-06-17T06:47:31.6461990Z             }
2026-06-17T06:47:31.6462557Z           ]
2026-06-17T06:47:31.6463104Z         },
2026-06-17T06:47:31.6463814Z         "int": {
2026-06-17T06:47:31.6464438Z           "complete": false,
2026-06-17T06:47:31.6465147Z           "evidence": []
2026-06-17T06:47:31.6465860Z         },
2026-06-17T06:47:31.6466460Z         "unit": {
2026-06-17T06:47:31.6467095Z           "complete": true,
2026-06-17T06:47:31.6467792Z           "evidence": [
2026-06-17T06:47:31.6468443Z             {
2026-06-17T06:47:31.6469221Z               "path": "crates/spt-proto/src/version.rs",
2026-06-17T06:47:31.6470354Z               "line": 51
2026-06-17T06:47:31.6471015Z             },
2026-06-17T06:47:31.6471716Z             {
2026-06-17T06:47:31.6472417Z               "path": "crates/spt-proto/src/version.rs",
2026-06-17T06:47:31.6473303Z               "line": 71
2026-06-17T06:47:31.6473954Z             },
2026-06-17T06:47:31.6474535Z             {
2026-06-17T06:47:31.6475261Z               "path": "crates/spt-proto/src/version.rs",
2026-06-17T06:47:31.6476362Z               "line": 83
2026-06-17T06:47:31.6477020Z             }
2026-06-17T06:47:31.6477608Z           ]
2026-06-17T06:47:31.6478157Z         }
2026-06-17T06:47:31.6478703Z       }
2026-06-17T06:47:31.6479318Z     },
2026-06-17T06:47:31.6479852Z     {
2026-06-17T06:47:31.6480411Z       "id": "REQ-ARCH-4",
2026-06-17T06:47:31.6481390Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-17T06:47:31.6482495Z       "requiredStages": [
2026-06-17T06:47:31.6483173Z         "impl",
2026-06-17T06:47:31.6483757Z         "unit"
2026-06-17T06:47:31.6484375Z       ],
2026-06-17T06:47:31.6485000Z       "stages": {
2026-06-17T06:47:31.6485610Z         "doc": {
2026-06-17T06:47:31.6486235Z           "complete": false,
2026-06-17T06:47:31.6486937Z           "evidence": []
2026-06-17T06:47:31.6487585Z         },
2026-06-17T06:47:31.6488149Z         "impl": {
2026-06-17T06:47:31.6488768Z           "complete": true,
2026-06-17T06:47:31.6489506Z           "evidence": [
2026-06-17T06:47:31.6490145Z             {
2026-06-17T06:47:31.6490818Z               "path": "crates/spt-proto/src/event.rs",
2026-06-17T06:47:31.6491706Z               "line": 165
2026-06-17T06:47:31.6492369Z             },
2026-06-17T06:47:31.6492942Z             {
2026-06-17T06:47:31.6493609Z               "path": "crates/spt-proto/src/event.rs",
2026-06-17T06:47:31.6494489Z               "line": 188
2026-06-17T06:47:31.6495141Z             },
2026-06-17T06:47:31.6495709Z             {
2026-06-17T06:47:31.6496381Z               "path": "crates/spt-proto/src/event.rs",
2026-06-17T06:47:31.6497259Z               "line": 208
2026-06-17T06:47:31.6497932Z             },
2026-06-17T06:47:31.6498499Z             {
2026-06-17T06:47:31.6499254Z               "path": "crates/spt-proto/src/event.rs",
2026-06-17T06:47:31.6500123Z               "line": 223
2026-06-17T06:47:31.6500777Z             },
2026-06-17T06:47:31.6501368Z             {
2026-06-17T06:47:31.6502034Z               "path": "crates/spt-proto/src/event.rs",
2026-06-17T06:47:31.6502900Z               "line": 273
2026-06-17T06:47:31.6503558Z             }
2026-06-17T06:47:31.6504135Z           ]
2026-06-17T06:47:31.6504685Z         },
2026-06-17T06:47:31.6505243Z         "int": {
2026-06-17T06:47:31.6505853Z           "complete": false,
2026-06-17T06:47:31.6506560Z           "evidence": []
2026-06-17T06:47:31.6507228Z         },
2026-06-17T06:47:31.6507795Z         "unit": {
2026-06-17T06:47:31.6508410Z           "complete": true,
2026-06-17T06:47:31.6509188Z           "evidence": [
2026-06-17T06:47:31.6509809Z             {
2026-06-17T06:47:31.6510484Z               "path": "crates/spt-proto/src/event.rs",
2026-06-17T06:47:31.6511357Z               "line": 334
2026-06-17T06:47:31.6512025Z             },
2026-06-17T06:47:31.6512599Z             {
2026-06-17T06:47:31.6513284Z               "path": "crates/spt-proto/src/event.rs",
2026-06-17T06:47:31.6514343Z               "line": 344
2026-06-17T06:47:31.6515005Z             },
2026-06-17T06:47:31.6515586Z             {
2026-06-17T06:47:31.6516256Z               "path": "crates/spt-proto/src/event.rs",
2026-06-17T06:47:31.6517267Z               "line": 355
2026-06-17T06:47:31.6517943Z             },
2026-06-17T06:47:31.6518523Z             {
2026-06-17T06:47:31.6519304Z               "path": "crates/spt-proto/src/event.rs",
2026-06-17T06:47:31.6520192Z               "line": 366
2026-06-17T06:47:31.6520858Z             },
2026-06-17T06:47:31.6521431Z             {
2026-06-17T06:47:31.6522107Z               "path": "crates/spt-proto/src/event.rs",
2026-06-17T06:47:31.6522985Z               "line": 378
2026-06-17T06:47:31.6523631Z             },
2026-06-17T06:47:31.6524331Z             {
2026-06-17T06:47:31.6524998Z               "path": "crates/spt-proto/src/event.rs",
2026-06-17T06:47:31.6525885Z               "line": 391
2026-06-17T06:47:31.6526536Z             },
2026-06-17T06:47:31.6527117Z             {
2026-06-17T06:47:31.6527789Z               "path": "crates/spt-proto/src/event.rs",
2026-06-17T06:47:31.6528665Z               "line": 402
2026-06-17T06:47:31.6529412Z             },
2026-06-17T06:47:31.6529998Z             {
2026-06-17T06:47:31.6530680Z               "path": "crates/spt-proto/src/event.rs",
2026-06-17T06:47:31.6531561Z               "line": 419
2026-06-17T06:47:31.6532225Z             },
2026-06-17T06:47:31.6532812Z             {
2026-06-17T06:47:31.6533484Z               "path": "crates/spt-proto/src/event.rs",
2026-06-17T06:47:31.6534361Z               "line": 547
2026-06-17T06:47:31.6535015Z             }
2026-06-17T06:47:31.6535601Z           ]
2026-06-17T06:47:31.6536168Z         }
2026-06-17T06:47:31.6536706Z       }
2026-06-17T06:47:31.6537257Z     },
2026-06-17T06:47:31.6537786Z     {
2026-06-17T06:47:31.6538345Z       "id": "REQ-CLI-1",
2026-06-17T06:47:31.6542489Z       "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-17T06:47:31.6546738Z       "requiredStages": [
2026-06-17T06:47:31.6547407Z         "impl",
2026-06-17T06:47:31.6547994Z         "unit"
2026-06-17T06:47:31.6548562Z       ],
2026-06-17T06:47:31.6549173Z       "stages": {
2026-06-17T06:47:31.6549771Z         "doc": {
2026-06-17T06:47:31.6550379Z           "complete": false,
2026-06-17T06:47:31.6551076Z           "evidence": []
2026-06-17T06:47:31.6551725Z         },
2026-06-17T06:47:31.6552283Z         "impl": {
2026-06-17T06:47:31.6552900Z           "complete": true,
2026-06-17T06:47:31.6553588Z           "evidence": [
2026-06-17T06:47:31.6554218Z             {
2026-06-17T06:47:31.6554854Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.6555682Z               "line": 225
2026-06-17T06:47:31.6565087Z             },
2026-06-17T06:47:31.6565693Z             {
2026-06-17T06:47:31.6566341Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.6567196Z               "line": 1045
2026-06-17T06:47:31.6567868Z             },
2026-06-17T06:47:31.6568470Z             {
2026-06-17T06:47:31.6569204Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.6570049Z               "line": 1573
2026-06-17T06:47:31.6570711Z             },
2026-06-17T06:47:31.6571290Z             {
2026-06-17T06:47:31.6571943Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.6572773Z               "line": 2866
2026-06-17T06:47:31.6573432Z             }
2026-06-17T06:47:31.6574006Z           ]
2026-06-17T06:47:31.6574574Z         },
2026-06-17T06:47:31.6575132Z         "int": {
2026-06-17T06:47:31.6575762Z           "complete": false,
2026-06-17T06:47:31.6576473Z           "evidence": []
2026-06-17T06:47:31.6577136Z         },
2026-06-17T06:47:31.6577694Z         "unit": {
2026-06-17T06:47:31.6578305Z           "complete": true,
2026-06-17T06:47:31.6579054Z           "evidence": [
2026-06-17T06:47:31.6579731Z             {
2026-06-17T06:47:31.6580533Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.6581389Z               "line": 7278
2026-06-17T06:47:31.6582074Z             }
2026-06-17T06:47:31.6582636Z           ]
2026-06-17T06:47:31.6583190Z         }
2026-06-17T06:47:31.6583730Z       }
2026-06-17T06:47:31.6584261Z     },
2026-06-17T06:47:31.6584801Z     {
2026-06-17T06:47:31.6585373Z       "id": "REQ-CLI-2",
2026-06-17T06:47:31.6588226Z       "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-17T06:47:31.6591455Z       "requiredStages": [
2026-06-17T06:47:31.6592139Z         "impl",
2026-06-17T06:47:31.6592726Z         "unit"
2026-06-17T06:47:31.6593289Z       ],
2026-06-17T06:47:31.6593845Z       "stages": {
2026-06-17T06:47:31.6594432Z         "doc": {
2026-06-17T06:47:31.6595084Z           "complete": false,
2026-06-17T06:47:31.6595795Z           "evidence": []
2026-06-17T06:47:31.6596458Z         },
2026-06-17T06:47:31.6597029Z         "impl": {
2026-06-17T06:47:31.6597641Z           "complete": true,
2026-06-17T06:47:31.6598313Z           "evidence": [
2026-06-17T06:47:31.6599020Z             {
2026-06-17T06:47:31.6599717Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:31.6600603Z               "line": 382
2026-06-17T06:47:31.6601252Z             },
2026-06-17T06:47:31.6601810Z             {
2026-06-17T06:47:31.6602509Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-17T06:47:31.6603404Z               "line": 97
2026-06-17T06:47:31.6604057Z             },
2026-06-17T06:47:31.6604620Z             {
2026-06-17T06:47:31.6605311Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-17T06:47:31.6606202Z               "line": 239
2026-06-17T06:47:31.6606846Z             },
2026-06-17T06:47:31.6607414Z             {
2026-06-17T06:47:31.6608049Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.6608873Z               "line": 419
2026-06-17T06:47:31.6609590Z             },
2026-06-17T06:47:31.6610156Z             {
2026-06-17T06:47:31.6610782Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.6611617Z               "line": 1128
2026-06-17T06:47:31.6612279Z             },
2026-06-17T06:47:31.6612834Z             {
2026-06-17T06:47:31.6613459Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.6614288Z               "line": 1774
2026-06-17T06:47:31.6614937Z             },
2026-06-17T06:47:31.6615513Z             {
2026-06-17T06:47:31.6616138Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.6616953Z               "line": 1853
2026-06-17T06:47:31.6617608Z             },
2026-06-17T06:47:31.6618158Z             {
2026-06-17T06:47:31.6618780Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.6619677Z               "line": 1914
2026-06-17T06:47:31.6620311Z             }
2026-06-17T06:47:31.6620875Z           ]
2026-06-17T06:47:31.6621419Z         },
2026-06-17T06:47:31.6621957Z         "int": {
2026-06-17T06:47:31.6622569Z           "complete": false,
2026-06-17T06:47:31.6623264Z           "evidence": []
2026-06-17T06:47:31.6623909Z         },
2026-06-17T06:47:31.6624468Z         "unit": {
2026-06-17T06:47:31.6625077Z           "complete": true,
2026-06-17T06:47:31.6625754Z           "evidence": [
2026-06-17T06:47:31.6626383Z             {
2026-06-17T06:47:31.6627060Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-17T06:47:31.6627956Z               "line": 309
2026-06-17T06:47:31.6628604Z             },
2026-06-17T06:47:31.6629274Z             {
2026-06-17T06:47:31.6629908Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.6630744Z               "line": 7416
2026-06-17T06:47:31.6631402Z             }
2026-06-17T06:47:31.6631964Z           ]
2026-06-17T06:47:31.6632518Z         }
2026-06-17T06:47:31.6633048Z       }
2026-06-17T06:47:31.6633582Z     },
2026-06-17T06:47:31.6634229Z     {
2026-06-17T06:47:31.6634798Z       "id": "REQ-CLI-3",
2026-06-17T06:47:31.6637691Z       "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-17T06:47:31.6640831Z       "requiredStages": [
2026-06-17T06:47:31.6641503Z         "impl",
2026-06-17T06:47:31.6642084Z         "unit"
2026-06-17T06:47:31.6642801Z       ],
2026-06-17T06:47:31.6643355Z       "stages": {
2026-06-17T06:47:31.6643946Z         "doc": {
2026-06-17T06:47:31.6644562Z           "complete": false,
2026-06-17T06:47:31.6645264Z           "evidence": []
2026-06-17T06:47:31.6645917Z         },
2026-06-17T06:47:31.6646480Z         "impl": {
2026-06-17T06:47:31.6647091Z           "complete": true,
2026-06-17T06:47:31.6647776Z           "evidence": [
2026-06-17T06:47:31.6648414Z             {
2026-06-17T06:47:31.6649115Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.6649944Z               "line": 1039
2026-06-17T06:47:31.6650585Z             }
2026-06-17T06:47:31.6651147Z           ]
2026-06-17T06:47:31.6651686Z         },
2026-06-17T06:47:31.6652231Z         "int": {
2026-06-17T06:47:31.6652825Z           "complete": false,
2026-06-17T06:47:31.6653520Z           "evidence": []
2026-06-17T06:47:31.6654149Z         },
2026-06-17T06:47:31.6654688Z         "unit": {
2026-06-17T06:47:31.6655291Z           "complete": true,
2026-06-17T06:47:31.6655985Z           "evidence": [
2026-06-17T06:47:31.6656620Z             {
2026-06-17T06:47:31.6657254Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.6658078Z               "line": 7243
2026-06-17T06:47:31.6658750Z             }
2026-06-17T06:47:31.6659380Z           ]
2026-06-17T06:47:31.6659924Z         }
2026-06-17T06:47:31.6660461Z       }
2026-06-17T06:47:31.6660997Z     },
2026-06-17T06:47:31.6661517Z     {
2026-06-17T06:47:31.6662095Z       "id": "REQ-CONSENT-1",
2026-06-17T06:47:31.6665563Z       "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-17T06:47:31.6669229Z       "requiredStages": [
2026-06-17T06:47:31.6669911Z         "impl",
2026-06-17T06:47:31.6670494Z         "unit"
2026-06-17T06:47:31.6671059Z       ],
2026-06-17T06:47:31.6671595Z       "stages": {
2026-06-17T06:47:31.6672182Z         "doc": {
2026-06-17T06:47:31.6672783Z           "complete": false,
2026-06-17T06:47:31.6673474Z           "evidence": []
2026-06-17T06:47:31.6674105Z         },
2026-06-17T06:47:31.6674663Z         "impl": {
2026-06-17T06:47:31.6675274Z           "complete": true,
2026-06-17T06:47:31.6675941Z           "evidence": [
2026-06-17T06:47:31.6676582Z             {
2026-06-17T06:47:31.6677268Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-17T06:47:31.6678150Z               "line": 27
2026-06-17T06:47:31.6678799Z             },
2026-06-17T06:47:31.6679461Z             {
2026-06-17T06:47:31.6680138Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-17T06:47:31.6681001Z               "line": 75
2026-06-17T06:47:31.6681633Z             },
2026-06-17T06:47:31.6682208Z             {
2026-06-17T06:47:31.6682891Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-17T06:47:31.6683767Z               "line": 98
2026-06-17T06:47:31.6684400Z             },
2026-06-17T06:47:31.6684980Z             {
2026-06-17T06:47:31.6685656Z               "path": "crates/spt-store/src/grants.rs",
2026-06-17T06:47:31.6686529Z               "line": 82
2026-06-17T06:47:31.6687180Z             },
2026-06-17T06:47:31.6687752Z             {
2026-06-17T06:47:31.6688533Z               "path": "crates/spt-store/src/grants.rs",
2026-06-17T06:47:31.6689463Z               "line": 109
2026-06-17T06:47:31.6690106Z             },
2026-06-17T06:47:31.6690684Z             {
2026-06-17T06:47:31.6691365Z               "path": "crates/spt-store/src/grants.rs",
2026-06-17T06:47:31.6692222Z               "line": 127
2026-06-17T06:47:31.6692874Z             },
2026-06-17T06:47:31.6693442Z             {
2026-06-17T06:47:31.6694119Z               "path": "crates/spt-store/src/grants.rs",
2026-06-17T06:47:31.6694975Z               "line": 142
2026-06-17T06:47:31.6695741Z             },
2026-06-17T06:47:31.6696303Z             {
2026-06-17T06:47:31.6696938Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.6697745Z               "line": 6720
2026-06-17T06:47:31.6698393Z             }
2026-06-17T06:47:31.6699032Z           ]
2026-06-17T06:47:31.6699586Z         },
2026-06-17T06:47:31.6700135Z         "int": {
2026-06-17T06:47:31.6700728Z           "complete": false,
2026-06-17T06:47:31.6701420Z           "evidence": []
2026-06-17T06:47:31.6702059Z         },
2026-06-17T06:47:31.6702615Z         "unit": {
2026-06-17T06:47:31.6703224Z           "complete": true,
2026-06-17T06:47:31.6703896Z           "evidence": [
2026-06-17T06:47:31.6704516Z             {
2026-06-17T06:47:31.6705193Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-17T06:47:31.6706067Z               "line": 334
2026-06-17T06:47:31.6706697Z             },
2026-06-17T06:47:31.6707255Z             {
2026-06-17T06:47:31.6707928Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-17T06:47:31.6708801Z               "line": 380
2026-06-17T06:47:31.6709502Z             },
2026-06-17T06:47:31.6710070Z             {
2026-06-17T06:47:31.6710742Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-17T06:47:31.6711608Z               "line": 391
2026-06-17T06:47:31.6712251Z             },
2026-06-17T06:47:31.6712823Z             {
2026-06-17T06:47:31.6713502Z               "path": "crates/spt-store/src/grants.rs",
2026-06-17T06:47:31.6714361Z               "line": 165
2026-06-17T06:47:31.6714990Z             },
2026-06-17T06:47:31.6715554Z             {
2026-06-17T06:47:31.6716214Z               "path": "crates/spt-store/src/grants.rs",
2026-06-17T06:47:31.6717070Z               "line": 184
2026-06-17T06:47:31.6717714Z             },
2026-06-17T06:47:31.6718282Z             {
2026-06-17T06:47:31.6719027Z               "path": "crates/spt-store/src/grants.rs",
2026-06-17T06:47:31.6719871Z               "line": 204
2026-06-17T06:47:31.6720496Z             },
2026-06-17T06:47:31.6721068Z             {
2026-06-17T06:47:31.6721697Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.6722497Z               "line": 7596
2026-06-17T06:47:31.6723136Z             }
2026-06-17T06:47:31.6723693Z           ]
2026-06-17T06:47:31.6724244Z         }
2026-06-17T06:47:31.6724768Z       }
2026-06-17T06:47:31.6725297Z     },
2026-06-17T06:47:31.6725818Z     {
2026-06-17T06:47:31.6726376Z       "id": "REQ-CONSENT-2",
2026-06-17T06:47:31.6729606Z       "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-17T06:47:31.6732919Z       "requiredStages": [
2026-06-17T06:47:31.6733577Z         "impl",
2026-06-17T06:47:31.6734155Z         "unit"
2026-06-17T06:47:31.6734718Z       ],
2026-06-17T06:47:31.6735261Z       "stages": {
2026-06-17T06:47:31.6735848Z         "doc": {
2026-06-17T06:47:31.6736458Z           "complete": false,
2026-06-17T06:47:31.6737154Z           "evidence": []
2026-06-17T06:47:31.6737795Z         },
2026-06-17T06:47:31.6738348Z         "impl": {
2026-06-17T06:47:31.6739030Z           "complete": true,
2026-06-17T06:47:31.6739729Z           "evidence": [
2026-06-17T06:47:31.6740352Z             {
2026-06-17T06:47:31.6741149Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-17T06:47:31.6742016Z               "line": 140
2026-06-17T06:47:31.6742659Z             },
2026-06-17T06:47:31.6743222Z             {
2026-06-17T06:47:31.6743884Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-17T06:47:31.6744748Z               "line": 165
2026-06-17T06:47:31.6745389Z             },
2026-06-17T06:47:31.6745947Z             {
2026-06-17T06:47:31.6746633Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-17T06:47:31.6747487Z               "line": 199
2026-06-17T06:47:31.6748260Z             },
2026-06-17T06:47:31.6748833Z             {
2026-06-17T06:47:31.6749580Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-17T06:47:31.6750457Z               "line": 241
2026-06-17T06:47:31.6751104Z             },
2026-06-17T06:47:31.6751671Z             {
2026-06-17T06:47:31.6752344Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-17T06:47:31.6753204Z               "line": 269
2026-06-17T06:47:31.6753848Z             },
2026-06-17T06:47:31.6754416Z             {
2026-06-17T06:47:31.6755093Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-17T06:47:31.6755949Z               "line": 300
2026-06-17T06:47:31.6756592Z             },
2026-06-17T06:47:31.6757169Z             {
2026-06-17T06:47:31.6757809Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.6758614Z               "line": 6511
2026-06-17T06:47:31.6759359Z             },
2026-06-17T06:47:31.6759949Z             {
2026-06-17T06:47:31.6760589Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.6761397Z               "line": 6569
2026-06-17T06:47:31.6762045Z             }
2026-06-17T06:47:31.6762613Z           ]
2026-06-17T06:47:31.6763156Z         },
2026-06-17T06:47:31.6763703Z         "int": {
2026-06-17T06:47:31.6764304Z           "complete": false,
2026-06-17T06:47:31.6765000Z           "evidence": []
2026-06-17T06:47:31.6765644Z         },
2026-06-17T06:47:31.6766185Z         "unit": {
2026-06-17T06:47:31.6766790Z           "complete": true,
2026-06-17T06:47:31.6767462Z           "evidence": [
2026-06-17T06:47:31.6768092Z             {
2026-06-17T06:47:31.6768768Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-17T06:47:31.6769724Z               "line": 419
2026-06-17T06:47:31.6770357Z             },
2026-06-17T06:47:31.6770940Z             {
2026-06-17T06:47:31.6771601Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-17T06:47:31.6772457Z               "line": 436
2026-06-17T06:47:31.6773101Z             },
2026-06-17T06:47:31.6773683Z             {
2026-06-17T06:47:31.6774353Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-17T06:47:31.6775212Z               "line": 472
2026-06-17T06:47:31.6775851Z             },
2026-06-17T06:47:31.6776432Z             {
2026-06-17T06:47:31.6777106Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-17T06:47:31.6777970Z               "line": 516
2026-06-17T06:47:31.6778609Z             },
2026-06-17T06:47:31.6779248Z             {
2026-06-17T06:47:31.6779873Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.6780684Z               "line": 8838
2026-06-17T06:47:31.6781337Z             },
2026-06-17T06:47:31.6781895Z             {
2026-06-17T06:47:31.6782527Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.6783342Z               "line": 8920
2026-06-17T06:47:31.6783991Z             }
2026-06-17T06:47:31.6784552Z           ]
2026-06-17T06:47:31.6785091Z         }
2026-06-17T06:47:31.6785625Z       }
2026-06-17T06:47:31.6786163Z     },
2026-06-17T06:47:31.6786692Z     {
2026-06-17T06:47:31.6787254Z       "id": "REQ-CONSENT-3",
2026-06-17T06:47:31.6793587Z       "title": "Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).",
2026-06-17T06:47:31.6799672Z       "requiredStages": [
2026-06-17T06:47:31.6800326Z         "doc",
2026-06-17T06:47:31.6800893Z         "impl",
2026-06-17T06:47:31.6801485Z         "unit",
2026-06-17T06:47:31.6802057Z         "int"
2026-06-17T06:47:31.6802738Z       ],
2026-06-17T06:47:31.6803281Z       "stages": {
2026-06-17T06:47:31.6803876Z         "doc": {
2026-06-17T06:47:31.6804486Z           "complete": true,
2026-06-17T06:47:31.6805168Z           "evidence": [
2026-06-17T06:47:31.6805798Z             {
2026-06-17T06:47:31.6806392Z               "path": "CONTEXT.md",
2026-06-17T06:47:31.6807155Z               "line": 292
2026-06-17T06:47:31.6807793Z             }
2026-06-17T06:47:31.6808346Z           ]
2026-06-17T06:47:31.6808891Z         },
2026-06-17T06:47:31.6809511Z         "impl": {
2026-06-17T06:47:31.6867402Z           "complete": true,
2026-06-17T06:47:31.6868333Z           "evidence": [
2026-06-17T06:47:31.6869058Z             {
2026-06-17T06:47:31.6869801Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-17T06:47:31.6870711Z               "line": 123
2026-06-17T06:47:31.6871346Z             },
2026-06-17T06:47:31.6871913Z             {
2026-06-17T06:47:31.6872585Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-17T06:47:31.6873487Z               "line": 162
2026-06-17T06:47:31.6874117Z             },
2026-06-17T06:47:31.6874668Z             {
2026-06-17T06:47:31.6875344Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-17T06:47:31.6876198Z               "line": 291
2026-06-17T06:47:31.6876832Z             },
2026-06-17T06:47:31.6877376Z             {
2026-06-17T06:47:31.6878044Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:31.6878903Z               "line": 519
2026-06-17T06:47:31.6879652Z             },
2026-06-17T06:47:31.6880217Z             {
2026-06-17T06:47:31.6880884Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:31.6881738Z               "line": 769
2026-06-17T06:47:31.6882370Z             },
2026-06-17T06:47:31.6882918Z             {
2026-06-17T06:47:31.6883519Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.6884300Z               "line": 6637
2026-06-17T06:47:31.6884925Z             }
2026-06-17T06:47:31.6885485Z           ]
2026-06-17T06:47:31.6886017Z         },
2026-06-17T06:47:31.6886548Z         "int": {
2026-06-17T06:47:31.6887135Z           "complete": true,
2026-06-17T06:47:31.6887795Z           "evidence": [
2026-06-17T06:47:31.6888409Z             {
2026-06-17T06:47:31.6889353Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-17T06:47:31.6890217Z               "line": 16
2026-06-17T06:47:31.6890839Z             }
2026-06-17T06:47:31.6891411Z           ]
2026-06-17T06:47:31.6891946Z         },
2026-06-17T06:47:31.6892476Z         "unit": {
2026-06-17T06:47:31.6893057Z           "complete": true,
2026-06-17T06:47:31.6893711Z           "evidence": [
2026-06-17T06:47:31.6894321Z             {
2026-06-17T06:47:31.6894975Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-17T06:47:31.6895839Z               "line": 1019
2026-06-17T06:47:31.6896474Z             },
2026-06-17T06:47:31.6897046Z             {
2026-06-17T06:47:31.6897709Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-17T06:47:31.6898559Z               "line": 1066
2026-06-17T06:47:31.6899355Z             },
2026-06-17T06:47:31.6899975Z             {
2026-06-17T06:47:31.6900651Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:31.6901520Z               "line": 1180
2026-06-17T06:47:31.6902158Z             }
2026-06-17T06:47:31.6902717Z           ]
2026-06-17T06:47:31.6903263Z         }
2026-06-17T06:47:31.6903791Z       }
2026-06-17T06:47:31.6904567Z     },
2026-06-17T06:47:31.6905096Z     {
2026-06-17T06:47:31.6905674Z       "id": "REQ-CONV-1",
2026-06-17T06:47:31.6910387Z       "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-17T06:47:31.6914998Z       "requiredStages": [
2026-06-17T06:47:31.6915656Z         "impl",
2026-06-17T06:47:31.6916225Z         "unit"
2026-06-17T06:47:31.6916795Z       ],
2026-06-17T06:47:31.6917341Z       "stages": {
2026-06-17T06:47:31.6917928Z         "doc": {
2026-06-17T06:47:31.6918518Z           "complete": false,
2026-06-17T06:47:31.6919280Z           "evidence": []
2026-06-17T06:47:31.6919955Z         },
2026-06-17T06:47:31.6920513Z         "impl": {
2026-06-17T06:47:31.6921105Z           "complete": true,
2026-06-17T06:47:31.6921777Z           "evidence": [
2026-06-17T06:47:31.6922401Z             {
2026-06-17T06:47:31.6923068Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:31.6923927Z               "line": 938
2026-06-17T06:47:31.6924564Z             },
2026-06-17T06:47:31.6925130Z             {
2026-06-17T06:47:31.6925812Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-17T06:47:31.6926675Z               "line": 94
2026-06-17T06:47:31.6927302Z             },
2026-06-17T06:47:31.6927858Z             {
2026-06-17T06:47:31.6928539Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-17T06:47:31.6929498Z               "line": 345
2026-06-17T06:47:31.6930134Z             },
2026-06-17T06:47:31.6930698Z             {
2026-06-17T06:47:31.6931369Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-17T06:47:31.6932238Z               "line": 387
2026-06-17T06:47:31.6932871Z             },
2026-06-17T06:47:31.6933423Z             {
2026-06-17T06:47:31.6934102Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-17T06:47:31.6934967Z               "line": 472
2026-06-17T06:47:31.6935622Z             },
2026-06-17T06:47:31.6936200Z             {
2026-06-17T06:47:31.6936891Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-17T06:47:31.6937744Z               "line": 667
2026-06-17T06:47:31.6938381Z             },
2026-06-17T06:47:31.6939034Z             {
2026-06-17T06:47:31.6939716Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-17T06:47:31.6940582Z               "line": 693
2026-06-17T06:47:31.6941224Z             },
2026-06-17T06:47:31.6941787Z             {
2026-06-17T06:47:31.6942474Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-17T06:47:31.6943349Z               "line": 369
2026-06-17T06:47:31.6943988Z             },
2026-06-17T06:47:31.6944560Z             {
2026-06-17T06:47:31.6945242Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-17T06:47:31.6946097Z               "line": 19
2026-06-17T06:47:31.6946722Z             }
2026-06-17T06:47:31.6947275Z           ]
2026-06-17T06:47:31.6947810Z         },
2026-06-17T06:47:31.6948352Z         "int": {
2026-06-17T06:47:31.6949049Z           "complete": false,
2026-06-17T06:47:31.6949776Z           "evidence": []
2026-06-17T06:47:31.6950434Z         },
2026-06-17T06:47:31.6950985Z         "unit": {
2026-06-17T06:47:31.6951597Z           "complete": true,
2026-06-17T06:47:31.6952270Z           "evidence": [
2026-06-17T06:47:31.6952890Z             {
2026-06-17T06:47:31.6953583Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-17T06:47:31.6954467Z               "line": 1263
2026-06-17T06:47:31.6955110Z             },
2026-06-17T06:47:31.6955668Z             {
2026-06-17T06:47:31.6956347Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-17T06:47:31.6957353Z               "line": 108
2026-06-17T06:47:31.6957997Z             },
2026-06-17T06:47:31.6958559Z             {
2026-06-17T06:47:31.6959338Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-17T06:47:31.6960234Z               "line": 134
2026-06-17T06:47:31.6960874Z             },
2026-06-17T06:47:31.6961436Z             {
2026-06-17T06:47:31.6962115Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-17T06:47:31.6962983Z               "line": 144
2026-06-17T06:47:31.6963613Z             }
2026-06-17T06:47:31.6964308Z           ]
2026-06-17T06:47:31.6964847Z         }
2026-06-17T06:47:31.6965380Z       }
2026-06-17T06:47:31.6965904Z     },
2026-06-17T06:47:31.6966431Z     {
2026-06-17T06:47:31.6966974Z       "id": "REQ-CONV-2",
2026-06-17T06:47:31.6970833Z       "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-17T06:47:31.6974378Z       "requiredStages": [
2026-06-17T06:47:31.6975034Z         "impl",
2026-06-17T06:47:31.6975616Z         "unit"
2026-06-17T06:47:31.6976170Z       ],
2026-06-17T06:47:31.6976700Z       "stages": {
2026-06-17T06:47:31.6977279Z         "doc": {
2026-06-17T06:47:31.6977872Z           "complete": false,
2026-06-17T06:47:31.6978546Z           "evidence": []
2026-06-17T06:47:31.6979276Z         },
2026-06-17T06:47:31.6979838Z         "impl": {
2026-06-17T06:47:31.6980420Z           "complete": true,
2026-06-17T06:47:31.6981083Z           "evidence": [
2026-06-17T06:47:31.6981693Z             {
2026-06-17T06:47:31.6982362Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.6983216Z               "line": 384
2026-06-17T06:47:31.6983836Z             },
2026-06-17T06:47:31.6984385Z             {
2026-06-17T06:47:31.6985104Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-17T06:47:31.6986043Z               "line": 119
2026-06-17T06:47:31.6986696Z             },
2026-06-17T06:47:31.6987250Z             {
2026-06-17T06:47:31.6987930Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:31.6988796Z               "line": 789
2026-06-17T06:47:31.6989512Z             },
2026-06-17T06:47:31.6990070Z             {
2026-06-17T06:47:31.6990754Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:31.6991633Z               "line": 800
2026-06-17T06:47:31.6992272Z             },
2026-06-17T06:47:31.6992821Z             {
2026-06-17T06:47:31.6993481Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:31.6994325Z               "line": 334
2026-06-17T06:47:31.6994950Z             },
2026-06-17T06:47:31.6995518Z             {
2026-06-17T06:47:31.6996131Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.6996918Z               "line": 2819
2026-06-17T06:47:31.6997619Z             },
2026-06-17T06:47:31.6998333Z             {
2026-06-17T06:47:31.6999232Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7000200Z               "line": 2835
2026-06-17T06:47:31.7000911Z             },
2026-06-17T06:47:31.7001617Z             {
2026-06-17T06:47:31.7002342Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7003254Z               "line": 2894
2026-06-17T06:47:31.7004012Z             }
2026-06-17T06:47:31.7004665Z           ]
2026-06-17T06:47:31.7005357Z         },
2026-06-17T06:47:31.7006054Z         "int": {
2026-06-17T06:47:31.7006787Z           "complete": false,
2026-06-17T06:47:31.7007592Z           "evidence": []
2026-06-17T06:47:31.7008313Z         },
2026-06-17T06:47:31.7009078Z         "unit": {
2026-06-17T06:47:31.7009773Z           "complete": true,
2026-06-17T06:47:31.7010517Z           "evidence": [
2026-06-17T06:47:31.7011308Z             {
2026-06-17T06:47:31.7012259Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-17T06:47:31.7013279Z               "line": 889
2026-06-17T06:47:31.7014008Z             },
2026-06-17T06:47:31.7014653Z             {
2026-06-17T06:47:31.7015522Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-17T06:47:31.7016465Z               "line": 1014
2026-06-17T06:47:31.7017236Z             },
2026-06-17T06:47:31.7017905Z             {
2026-06-17T06:47:31.7018748Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-17T06:47:31.7020065Z               "line": 215
2026-06-17T06:47:31.7020801Z             }
2026-06-17T06:47:31.7021469Z           ]
2026-06-17T06:47:31.7022099Z         }
2026-06-17T06:47:31.7022723Z       }
2026-06-17T06:47:31.7023386Z     },
2026-06-17T06:47:31.7024016Z     {
2026-06-17T06:47:31.7024736Z       "id": "REQ-DAEMON-1",
2026-06-17T06:47:31.7025753Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-17T06:47:31.7026874Z       "requiredStages": [
2026-06-17T06:47:31.7027668Z         "impl",
2026-06-17T06:47:31.7028349Z         "unit",
2026-06-17T06:47:31.7029079Z         "int"
2026-06-17T06:47:31.7029811Z       ],
2026-06-17T06:47:31.7030474Z       "stages": {
2026-06-17T06:47:31.7031203Z         "doc": {
2026-06-17T06:47:31.7031894Z           "complete": false,
2026-06-17T06:47:31.7032649Z           "evidence": []
2026-06-17T06:47:31.7033455Z         },
2026-06-17T06:47:31.7034089Z         "impl": {
2026-06-17T06:47:31.7034809Z           "complete": true,
2026-06-17T06:47:31.7035609Z           "evidence": [
2026-06-17T06:47:31.7036337Z             {
2026-06-17T06:47:31.7037191Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7038140Z               "line": 229
2026-06-17T06:47:31.7038900Z             },
2026-06-17T06:47:31.7039712Z             {
2026-06-17T06:47:31.7040454Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-17T06:47:31.7041439Z               "line": 12
2026-06-17T06:47:31.7042154Z             },
2026-06-17T06:47:31.7042889Z             {
2026-06-17T06:47:31.7043676Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.7044635Z               "line": 16
2026-06-17T06:47:31.7045383Z             },
2026-06-17T06:47:31.7046040Z             {
2026-06-17T06:47:31.7046807Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.7047812Z               "line": 284
2026-06-17T06:47:31.7048580Z             },
2026-06-17T06:47:31.7049352Z             {
2026-06-17T06:47:31.7050142Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-17T06:47:31.7051057Z               "line": 24
2026-06-17T06:47:31.7051822Z             },
2026-06-17T06:47:31.7052486Z             {
2026-06-17T06:47:31.7053291Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-17T06:47:31.7054270Z               "line": 225
2026-06-17T06:47:31.7055019Z             },
2026-06-17T06:47:31.7055730Z             {
2026-06-17T06:47:31.7056496Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-17T06:47:31.7057447Z               "line": 242
2026-06-17T06:47:31.7058186Z             },
2026-06-17T06:47:31.7058835Z             {
2026-06-17T06:47:31.7059744Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-17T06:47:31.7060736Z               "line": 319
2026-06-17T06:47:31.7061476Z             },
2026-06-17T06:47:31.7062145Z             {
2026-06-17T06:47:31.7062888Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-17T06:47:31.7063880Z               "line": 449
2026-06-17T06:47:31.7064608Z             },
2026-06-17T06:47:31.7065221Z             {
2026-06-17T06:47:31.7066031Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-17T06:47:31.7066986Z               "line": 15
2026-06-17T06:47:31.7067754Z             },
2026-06-17T06:47:31.7068398Z             {
2026-06-17T06:47:31.7069186Z               "path": "crates/spt-store/src/info.rs",
2026-06-17T06:47:31.7070181Z               "line": 218
2026-06-17T06:47:31.7071024Z             },
2026-06-17T06:47:31.7071741Z             {
2026-06-17T06:47:31.7072504Z               "path": "crates/spt/src/api/live.rs",
2026-06-17T06:47:31.7073400Z               "line": 13
2026-06-17T06:47:31.7074177Z             },
2026-06-17T06:47:31.7074851Z             {
2026-06-17T06:47:31.7075620Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:31.7076550Z               "line": 281
2026-06-17T06:47:31.7077283Z             },
2026-06-17T06:47:31.7077971Z             {
2026-06-17T06:47:31.7078910Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:31.7079984Z               "line": 369
2026-06-17T06:47:31.7080737Z             }
2026-06-17T06:47:31.7081375Z           ]
2026-06-17T06:47:31.7082052Z         },
2026-06-17T06:47:31.7082733Z         "int": {
2026-06-17T06:47:31.7083393Z           "complete": true,
2026-06-17T06:47:31.7084219Z           "evidence": [
2026-06-17T06:47:31.7084957Z             {
2026-06-17T06:47:31.7085917Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-17T06:47:31.7087028Z               "line": 2
2026-06-17T06:47:31.7087716Z             },
2026-06-17T06:47:31.7088447Z             {
2026-06-17T06:47:31.7089461Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-17T06:47:31.7090626Z               "line": 16
2026-06-17T06:47:31.7091391Z             },
2026-06-17T06:47:31.7092030Z             {
2026-06-17T06:47:31.7092931Z               "path": "crates/spt/tests/live_bind_firsthost_e2e.rs",
2026-06-17T06:47:31.7093954Z               "line": 12
2026-06-17T06:47:31.7094722Z             },
2026-06-17T06:47:31.7095399Z             {
2026-06-17T06:47:31.7096198Z               "path": "crates/spt/tests/live_firsthost_e2e.rs",
2026-06-17T06:47:31.7097331Z               "line": 12
2026-06-17T06:47:31.7098051Z             },
2026-06-17T06:47:31.7098760Z             {
2026-06-17T06:47:31.7099697Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-17T06:47:31.7100703Z               "line": 44
2026-06-17T06:47:31.7101472Z             }
2026-06-17T06:47:31.7102119Z           ]
2026-06-17T06:47:31.7102739Z         },
2026-06-17T06:47:31.7103477Z         "unit": {
2026-06-17T06:47:31.7104189Z           "complete": true,
2026-06-17T06:47:31.7104996Z           "evidence": [
2026-06-17T06:47:31.7105725Z             {
2026-06-17T06:47:31.7106454Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-17T06:47:31.7107451Z               "line": 285
2026-06-17T06:47:31.7108201Z             },
2026-06-17T06:47:31.7108879Z             {
2026-06-17T06:47:31.7109799Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-17T06:47:31.7110730Z               "line": 293
2026-06-17T06:47:31.7111515Z             },
2026-06-17T06:47:31.7112159Z             {
2026-06-17T06:47:31.7112936Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-17T06:47:31.7113910Z               "line": 309
2026-06-17T06:47:31.7114749Z             },
2026-06-17T06:47:31.7115459Z             {
2026-06-17T06:47:31.7116181Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-17T06:47:31.7117187Z               "line": 317
2026-06-17T06:47:31.7117898Z             },
2026-06-17T06:47:31.7125116Z             {
2026-06-17T06:47:31.7125972Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.7126845Z               "line": 634
2026-06-17T06:47:31.7127488Z             },
2026-06-17T06:47:31.7128050Z             {
2026-06-17T06:47:31.7128735Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.7129689Z               "line": 704
2026-06-17T06:47:31.7130309Z             },
2026-06-17T06:47:31.7130862Z             {
2026-06-17T06:47:31.7131531Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-17T06:47:31.7132374Z               "line": 570
2026-06-17T06:47:31.7132999Z             },
2026-06-17T06:47:31.7133537Z             {
2026-06-17T06:47:31.7134357Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-17T06:47:31.7135234Z               "line": 607
2026-06-17T06:47:31.7135869Z             },
2026-06-17T06:47:31.7136432Z             {
2026-06-17T06:47:31.7137105Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-17T06:47:31.7137960Z               "line": 630
2026-06-17T06:47:31.7138586Z             },
2026-06-17T06:47:31.7139224Z             {
2026-06-17T06:47:31.7139901Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-17T06:47:31.7140744Z               "line": 659
2026-06-17T06:47:31.7141519Z             },
2026-06-17T06:47:31.7142062Z             {
2026-06-17T06:47:31.7142715Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-17T06:47:31.7143554Z               "line": 707
2026-06-17T06:47:31.7144178Z             },
2026-06-17T06:47:31.7144727Z             {
2026-06-17T06:47:31.7145380Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-17T06:47:31.7146212Z               "line": 750
2026-06-17T06:47:31.7146849Z             },
2026-06-17T06:47:31.7147411Z             {
2026-06-17T06:47:31.7148041Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-17T06:47:31.7148858Z               "line": 106
2026-06-17T06:47:31.7149565Z             },
2026-06-17T06:47:31.7150118Z             {
2026-06-17T06:47:31.7150757Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-17T06:47:31.7151589Z               "line": 132
2026-06-17T06:47:31.7152207Z             },
2026-06-17T06:47:31.7152746Z             {
2026-06-17T06:47:31.7153390Z               "path": "crates/spt-store/src/info.rs",
2026-06-17T06:47:31.7154186Z               "line": 473
2026-06-17T06:47:31.7154809Z             }
2026-06-17T06:47:31.7155405Z           ]
2026-06-17T06:47:31.7155978Z         }
2026-06-17T06:47:31.7156504Z       }
2026-06-17T06:47:31.7157009Z     },
2026-06-17T06:47:31.7157525Z     {
2026-06-17T06:47:31.7158068Z       "id": "REQ-DAEMON-2",
2026-06-17T06:47:31.7158892Z       "title": "Broker/brain split for seamless self-update",
2026-06-17T06:47:31.7159914Z       "requiredStages": [
2026-06-17T06:47:31.7160548Z         "impl",
2026-06-17T06:47:31.7161126Z         "unit",
2026-06-17T06:47:31.7161684Z         "int"
2026-06-17T06:47:31.7162231Z       ],
2026-06-17T06:47:31.7162762Z       "stages": {
2026-06-17T06:47:31.7163325Z         "doc": {
2026-06-17T06:47:31.7163903Z           "complete": true,
2026-06-17T06:47:31.7164561Z           "evidence": [
2026-06-17T06:47:31.7165165Z             {
2026-06-17T06:47:31.7165828Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-06-17T06:47:31.7166633Z               "line": 250
2026-06-17T06:47:31.7167252Z             }
2026-06-17T06:47:31.7167827Z           ]
2026-06-17T06:47:31.7168371Z         },
2026-06-17T06:47:31.7168919Z         "impl": {
2026-06-17T06:47:31.7169724Z           "complete": true,
2026-06-17T06:47:31.7170375Z           "evidence": [
2026-06-17T06:47:31.7170989Z             {
2026-06-17T06:47:31.7171647Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-17T06:47:31.7172469Z               "line": 23
2026-06-17T06:47:31.7173088Z             },
2026-06-17T06:47:31.7173641Z             {
2026-06-17T06:47:31.7174299Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-17T06:47:31.7175135Z               "line": 795
2026-06-17T06:47:31.7175768Z             },
2026-06-17T06:47:31.7176326Z             {
2026-06-17T06:47:31.7176970Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-17T06:47:31.7177798Z               "line": 820
2026-06-17T06:47:31.7178420Z             },
2026-06-17T06:47:31.7179049Z             {
2026-06-17T06:47:31.7179707Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-17T06:47:31.7180548Z               "line": 1026
2026-06-17T06:47:31.7181193Z             },
2026-06-17T06:47:31.7181750Z             {
2026-06-17T06:47:31.7182414Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:31.7183236Z               "line": 32
2026-06-17T06:47:31.7183859Z             },
2026-06-17T06:47:31.7184530Z             {
2026-06-17T06:47:31.7185203Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:31.7186038Z               "line": 549
2026-06-17T06:47:31.7186676Z             },
2026-06-17T06:47:31.7187244Z             {
2026-06-17T06:47:31.7187902Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:31.7188751Z               "line": 1055
2026-06-17T06:47:31.7189477Z             },
2026-06-17T06:47:31.7190029Z             {
2026-06-17T06:47:31.7190693Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:31.7191666Z               "line": 1342
2026-06-17T06:47:31.7192305Z             },
2026-06-17T06:47:31.7192863Z             {
2026-06-17T06:47:31.7193507Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-17T06:47:31.7194334Z               "line": 11
2026-06-17T06:47:31.7194953Z             },
2026-06-17T06:47:31.7195516Z             {
2026-06-17T06:47:31.7196179Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:31.7197016Z               "line": 148
2026-06-17T06:47:31.7197645Z             },
2026-06-17T06:47:31.7198213Z             {
2026-06-17T06:47:31.7198857Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:31.7199775Z               "line": 311
2026-06-17T06:47:31.7200408Z             },
2026-06-17T06:47:31.7200967Z             {
2026-06-17T06:47:31.7201592Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-17T06:47:31.7202393Z               "line": 13
2026-06-17T06:47:31.7203018Z             },
2026-06-17T06:47:31.7203581Z             {
2026-06-17T06:47:31.7204244Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:31.7205064Z               "line": 27
2026-06-17T06:47:31.7205679Z             },
2026-06-17T06:47:31.7206233Z             {
2026-06-17T06:47:31.7206905Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:31.7207745Z               "line": 147
2026-06-17T06:47:31.7208379Z             },
2026-06-17T06:47:31.7209013Z             {
2026-06-17T06:47:31.7209725Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:31.7210573Z               "line": 632
2026-06-17T06:47:31.7211207Z             },
2026-06-17T06:47:31.7211793Z             {
2026-06-17T06:47:31.7212503Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:31.7213435Z               "line": 853
2026-06-17T06:47:31.7214170Z             },
2026-06-17T06:47:31.7214733Z             {
2026-06-17T06:47:31.7215387Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:31.7216226Z               "line": 1000
2026-06-17T06:47:31.7216855Z             },
2026-06-17T06:47:31.7217417Z             {
2026-06-17T06:47:31.7218104Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:31.7219023Z               "line": 1089
2026-06-17T06:47:31.7219667Z             },
2026-06-17T06:47:31.7220215Z             {
2026-06-17T06:47:31.7220885Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:31.7221728Z               "line": 1211
2026-06-17T06:47:31.7222363Z             },
2026-06-17T06:47:31.7222981Z             {
2026-06-17T06:47:31.7223738Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-17T06:47:31.7224635Z               "line": 10
2026-06-17T06:47:31.7225303Z             }
2026-06-17T06:47:31.7225908Z           ]
2026-06-17T06:47:31.7226461Z         },
2026-06-17T06:47:31.7227005Z         "int": {
2026-06-17T06:47:31.7227597Z           "complete": true,
2026-06-17T06:47:31.7228264Z           "evidence": [
2026-06-17T06:47:31.7228898Z             {
2026-06-17T06:47:31.7229618Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-17T06:47:31.7230458Z               "line": 17
2026-06-17T06:47:31.7231078Z             },
2026-06-17T06:47:31.7231630Z             {
2026-06-17T06:47:31.7232323Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-17T06:47:31.7233180Z               "line": 90
2026-06-17T06:47:31.7234065Z             },
2026-06-17T06:47:31.7234642Z             {
2026-06-17T06:47:31.7235327Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-17T06:47:31.7236180Z               "line": 110
2026-06-17T06:47:31.7236817Z             },
2026-06-17T06:47:31.7237388Z             {
2026-06-17T06:47:31.7238076Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-17T06:47:31.7238933Z               "line": 186
2026-06-17T06:47:31.7239667Z             },
2026-06-17T06:47:31.7240225Z             {
2026-06-17T06:47:31.7241032Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-17T06:47:31.7241881Z               "line": 309
2026-06-17T06:47:31.7242500Z             },
2026-06-17T06:47:31.7243045Z             {
2026-06-17T06:47:31.7243727Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-17T06:47:31.7244577Z               "line": 128
2026-06-17T06:47:31.7245202Z             },
2026-06-17T06:47:31.7245769Z             {
2026-06-17T06:47:31.7246437Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-17T06:47:31.7247272Z               "line": 59
2026-06-17T06:47:31.7247896Z             }
2026-06-17T06:47:31.7248449Z           ]
2026-06-17T06:47:31.7249436Z         },
2026-06-17T06:47:31.7249980Z         "unit": {
2026-06-17T06:47:31.7250561Z           "complete": true,
2026-06-17T06:47:31.7251211Z           "evidence": [
2026-06-17T06:47:31.7251819Z             {
2026-06-17T06:47:31.7252460Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-17T06:47:31.7253285Z               "line": 62
2026-06-17T06:47:31.7253905Z             },
2026-06-17T06:47:31.7254454Z             {
2026-06-17T06:47:31.7255084Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-17T06:47:31.7255899Z               "line": 76
2026-06-17T06:47:31.7256524Z             },
2026-06-17T06:47:31.7257078Z             {
2026-06-17T06:47:31.7257733Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-17T06:47:31.7258553Z               "line": 88
2026-06-17T06:47:31.7259273Z             },
2026-06-17T06:47:31.7259832Z             {
2026-06-17T06:47:31.7260492Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-17T06:47:31.7261330Z               "line": 294
2026-06-17T06:47:31.7261951Z             },
2026-06-17T06:47:31.7262502Z             {
2026-06-17T06:47:31.7263140Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-17T06:47:31.7263950Z               "line": 771
2026-06-17T06:47:31.7264561Z             },
2026-06-17T06:47:31.7265113Z             {
2026-06-17T06:47:31.7265759Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-17T06:47:31.7266565Z               "line": 779
2026-06-17T06:47:31.7267190Z             },
2026-06-17T06:47:31.7267732Z             {
2026-06-17T06:47:31.7268363Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-17T06:47:31.7269246Z               "line": 796
2026-06-17T06:47:31.7269871Z             },
2026-06-17T06:47:31.7270425Z             {
2026-06-17T06:47:31.7271066Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-17T06:47:31.7271872Z               "line": 850
2026-06-17T06:47:31.7272516Z             },
2026-06-17T06:47:31.7273067Z             {
2026-06-17T06:47:31.7273734Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:31.7274563Z               "line": 1282
2026-06-17T06:47:31.7275184Z             },
2026-06-17T06:47:31.7275735Z             {
2026-06-17T06:47:31.7276390Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:31.7277220Z               "line": 1294
2026-06-17T06:47:31.7277855Z             },
2026-06-17T06:47:31.7278401Z             {
2026-06-17T06:47:31.7279148Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-17T06:47:31.7280002Z               "line": 110
2026-06-17T06:47:31.7280627Z             },
2026-06-17T06:47:31.7281173Z             {
2026-06-17T06:47:31.7281831Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-17T06:47:31.7282671Z               "line": 143
2026-06-17T06:47:31.7283409Z             }
2026-06-17T06:47:31.7283998Z           ]
2026-06-17T06:47:31.7284537Z         }
2026-06-17T06:47:31.7285075Z       }
2026-06-17T06:47:31.7285594Z     },
2026-06-17T06:47:31.7286121Z     {
2026-06-17T06:47:31.7286698Z       "id": "REQ-DAEMON-3",
2026-06-17T06:47:31.7287608Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-17T06:47:31.7288572Z       "requiredStages": [
2026-06-17T06:47:31.7289269Z         "impl",
2026-06-17T06:47:31.7289841Z         "unit",
2026-06-17T06:47:31.7290528Z         "int"
2026-06-17T06:47:31.7291100Z       ],
2026-06-17T06:47:31.7291635Z       "stages": {
2026-06-17T06:47:31.7292211Z         "doc": {
2026-06-17T06:47:31.7292797Z           "complete": false,
2026-06-17T06:47:31.7293461Z           "evidence": []
2026-06-17T06:47:31.7293722Z         },
2026-06-17T06:47:31.7293974Z         "impl": {
2026-06-17T06:47:31.7294248Z           "complete": true,
2026-06-17T06:47:31.7294516Z           "evidence": [
2026-06-17T06:47:31.7294773Z             {
2026-06-17T06:47:31.7295126Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:31.7295398Z               "line": 14
2026-06-17T06:47:31.7295654Z             },
2026-06-17T06:47:31.7295892Z             {
2026-06-17T06:47:31.7296270Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-17T06:47:31.7296536Z               "line": 11
2026-06-17T06:47:31.7296826Z             },
2026-06-17T06:47:31.7297073Z             {
2026-06-17T06:47:31.7297407Z               "path": "crates/spt/src/api/mod.rs",
2026-06-17T06:47:31.7297673Z               "line": 301
2026-06-17T06:47:31.7297921Z             },
2026-06-17T06:47:31.7298178Z             {
2026-06-17T06:47:31.7298479Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7298750Z               "line": 1772
2026-06-17T06:47:31.7299079Z             },
2026-06-17T06:47:31.7299332Z             {
2026-06-17T06:47:31.7299640Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7299901Z               "line": 3959
2026-06-17T06:47:31.7300158Z             },
2026-06-17T06:47:31.7300415Z             {
2026-06-17T06:47:31.7300730Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7300998Z               "line": 3980
2026-06-17T06:47:31.7301241Z             }
2026-06-17T06:47:31.7301490Z           ]
2026-06-17T06:47:31.7301733Z         },
2026-06-17T06:47:31.7301995Z         "int": {
2026-06-17T06:47:31.7302256Z           "complete": true,
2026-06-17T06:47:31.7302524Z           "evidence": [
2026-06-17T06:47:31.7302771Z             {
2026-06-17T06:47:31.7303133Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-17T06:47:31.7303391Z               "line": 49
2026-06-17T06:47:31.7303638Z             },
2026-06-17T06:47:31.7303901Z             {
2026-06-17T06:47:31.7304258Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-17T06:47:31.7304529Z               "line": 487
2026-06-17T06:47:31.7304780Z             }
2026-06-17T06:47:31.7305033Z           ]
2026-06-17T06:47:31.7305290Z         },
2026-06-17T06:47:31.7305532Z         "unit": {
2026-06-17T06:47:31.7305809Z           "complete": true,
2026-06-17T06:47:31.7306077Z           "evidence": [
2026-06-17T06:47:31.7306334Z             {
2026-06-17T06:47:31.7306696Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:31.7306964Z               "line": 804
2026-06-17T06:47:31.7307217Z             },
2026-06-17T06:47:31.7307472Z             {
2026-06-17T06:47:31.7307784Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7308056Z               "line": 9922
2026-06-17T06:47:31.7308310Z             }
2026-06-17T06:47:31.7308562Z           ]
2026-06-17T06:47:31.7308810Z         }
2026-06-17T06:47:31.7309130Z       }
2026-06-17T06:47:31.7309378Z     },
2026-06-17T06:47:31.7309635Z     {
2026-06-17T06:47:31.7309911Z       "id": "REQ-DAEMON-4",
2026-06-17T06:47:31.7310266Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-17T06:47:31.7310670Z       "requiredStages": [
2026-06-17T06:47:31.7310928Z         "impl",
2026-06-17T06:47:31.7311177Z         "unit",
2026-06-17T06:47:31.7311434Z         "int"
2026-06-17T06:47:31.7311692Z       ],
2026-06-17T06:47:31.7311953Z       "stages": {
2026-06-17T06:47:31.7312216Z         "doc": {
2026-06-17T06:47:31.7312492Z           "complete": false,
2026-06-17T06:47:31.7312759Z           "evidence": []
2026-06-17T06:47:31.7313016Z         },
2026-06-17T06:47:31.7313268Z         "impl": {
2026-06-17T06:47:31.7313549Z           "complete": true,
2026-06-17T06:47:31.7313970Z           "evidence": [
2026-06-17T06:47:31.7314223Z             {
2026-06-17T06:47:31.7314595Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.7314862Z               "line": 439
2026-06-17T06:47:31.7315118Z             },
2026-06-17T06:47:31.7315368Z             {
2026-06-17T06:47:31.7315735Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.7315998Z               "line": 504
2026-06-17T06:47:31.7316260Z             },
2026-06-17T06:47:31.7316504Z             {
2026-06-17T06:47:31.7316871Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.7317138Z               "line": 526
2026-06-17T06:47:31.7317390Z             }
2026-06-17T06:47:31.7317643Z           ]
2026-06-17T06:47:31.7317891Z         },
2026-06-17T06:47:31.7318142Z         "int": {
2026-06-17T06:47:31.7318412Z           "complete": true,
2026-06-17T06:47:31.7318674Z           "evidence": [
2026-06-17T06:47:31.7318917Z             {
2026-06-17T06:47:31.7319395Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-17T06:47:31.7319700Z               "line": 42
2026-06-17T06:47:31.7319952Z             }
2026-06-17T06:47:31.7320209Z           ]
2026-06-17T06:47:31.7320457Z         },
2026-06-17T06:47:31.7320704Z         "unit": {
2026-06-17T06:47:31.7320983Z           "complete": true,
2026-06-17T06:47:31.7321245Z           "evidence": [
2026-06-17T06:47:31.7321502Z             {
2026-06-17T06:47:31.7321870Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-17T06:47:31.7322136Z               "line": 428
2026-06-17T06:47:31.7322395Z             },
2026-06-17T06:47:31.7322638Z             {
2026-06-17T06:47:31.7323014Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.7323273Z               "line": 932
2026-06-17T06:47:31.7323523Z             },
2026-06-17T06:47:31.7323776Z             {
2026-06-17T06:47:31.7324148Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.7324419Z               "line": 1002
2026-06-17T06:47:31.7324668Z             },
2026-06-17T06:47:31.7324930Z             {
2026-06-17T06:47:31.7325302Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.7325564Z               "line": 1032
2026-06-17T06:47:31.7325811Z             },
2026-06-17T06:47:31.7326066Z             {
2026-06-17T06:47:31.7326439Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.7326710Z               "line": 1065
2026-06-17T06:47:31.7326972Z             }
2026-06-17T06:47:31.7327220Z           ]
2026-06-17T06:47:31.7327473Z         }
2026-06-17T06:47:31.7327717Z       }
2026-06-17T06:47:31.7327965Z     },
2026-06-17T06:47:31.7328213Z     {
2026-06-17T06:47:31.7328474Z       "id": "REQ-DAEMON-5",
2026-06-17T06:47:31.7332377Z       "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-17T06:47:31.7332669Z       "requiredStages": [
2026-06-17T06:47:31.7332935Z         "impl",
2026-06-17T06:47:31.7333194Z         "unit"
2026-06-17T06:47:31.7333528Z       ],
2026-06-17T06:47:31.7333800Z       "stages": {
2026-06-17T06:47:31.7334175Z         "doc": {
2026-06-17T06:47:31.7334461Z           "complete": false,
2026-06-17T06:47:31.7334733Z           "evidence": []
2026-06-17T06:47:31.7334989Z         },
2026-06-17T06:47:31.7335247Z         "impl": {
2026-06-17T06:47:31.7335524Z           "complete": true,
2026-06-17T06:47:31.7335791Z           "evidence": [
2026-06-17T06:47:31.7336040Z             {
2026-06-17T06:47:31.7336414Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-17T06:47:31.7336675Z               "line": 476
2026-06-17T06:47:31.7337028Z             },
2026-06-17T06:47:31.7337295Z             {
2026-06-17T06:47:31.7337662Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-17T06:47:31.7337929Z               "line": 769
2026-06-17T06:47:31.7338176Z             },
2026-06-17T06:47:31.7338424Z             {
2026-06-17T06:47:31.7338792Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-17T06:47:31.7343176Z               "line": 782
2026-06-17T06:47:31.7343444Z             },
2026-06-17T06:47:31.7343692Z             {
2026-06-17T06:47:31.7344074Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-17T06:47:31.7344331Z               "line": 800
2026-06-17T06:47:31.7344581Z             },
2026-06-17T06:47:31.7344834Z             {
2026-06-17T06:47:31.7345192Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-17T06:47:31.7345459Z               "line": 841
2026-06-17T06:47:31.7345698Z             }
2026-06-17T06:47:31.7345937Z           ]
2026-06-17T06:47:31.7346189Z         },
2026-06-17T06:47:31.7346437Z         "int": {
2026-06-17T06:47:31.7346713Z           "complete": false,
2026-06-17T06:47:31.7346983Z           "evidence": []
2026-06-17T06:47:31.7347230Z         },
2026-06-17T06:47:31.7347472Z         "unit": {
2026-06-17T06:47:31.7347735Z           "complete": true,
2026-06-17T06:47:31.7347988Z           "evidence": [
2026-06-17T06:47:31.7348236Z             {
2026-06-17T06:47:31.7348612Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-17T06:47:31.7348880Z               "line": 1189
2026-06-17T06:47:31.7349228Z             },
2026-06-17T06:47:31.7349500Z             {
2026-06-17T06:47:31.7349920Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-17T06:47:31.7350188Z               "line": 1213
2026-06-17T06:47:31.7350441Z             },
2026-06-17T06:47:31.7350732Z             {
2026-06-17T06:47:31.7351113Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-17T06:47:31.7351404Z               "line": 1239
2026-06-17T06:47:31.7351681Z             }
2026-06-17T06:47:31.7351957Z           ]
2026-06-17T06:47:31.7352203Z         }
2026-06-17T06:47:31.7352445Z       }
2026-06-17T06:47:31.7352678Z     },
2026-06-17T06:47:31.7352921Z     {
2026-06-17T06:47:31.7353216Z       "id": "REQ-DAEMON-6",
2026-06-17T06:47:31.7358844Z       "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-17T06:47:31.7359211Z       "requiredStages": [
2026-06-17T06:47:31.7359468Z         "impl",
2026-06-17T06:47:31.7359718Z         "unit"
2026-06-17T06:47:31.7359970Z       ],
2026-06-17T06:47:31.7360225Z       "stages": {
2026-06-17T06:47:31.7360471Z         "doc": {
2026-06-17T06:47:31.7360729Z           "complete": false,
2026-06-17T06:47:31.7360987Z           "evidence": []
2026-06-17T06:47:31.7361228Z         },
2026-06-17T06:47:31.7361481Z         "impl": {
2026-06-17T06:47:31.7361749Z           "complete": true,
2026-06-17T06:47:31.7362135Z           "evidence": [
2026-06-17T06:47:31.7362402Z             {
2026-06-17T06:47:31.7362764Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:31.7363019Z               "line": 463
2026-06-17T06:47:31.7363272Z             },
2026-06-17T06:47:31.7363509Z             {
2026-06-17T06:47:31.7363873Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:31.7364135Z               "line": 494
2026-06-17T06:47:31.7364387Z             },
2026-06-17T06:47:31.7364630Z             {
2026-06-17T06:47:31.7365093Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-17T06:47:31.7365360Z               "line": 55
2026-06-17T06:47:31.7365607Z             },
2026-06-17T06:47:31.7365851Z             {
2026-06-17T06:47:31.7366203Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-17T06:47:31.7366471Z               "line": 70
2026-06-17T06:47:31.7366723Z             },
2026-06-17T06:47:31.7366965Z             {
2026-06-17T06:47:31.7367280Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7367547Z               "line": 1826
2026-06-17T06:47:31.7367796Z             },
2026-06-17T06:47:31.7368042Z             {
2026-06-17T06:47:31.7368350Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7368612Z               "line": 1852
2026-06-17T06:47:31.7368860Z             }
2026-06-17T06:47:31.7369165Z           ]
2026-06-17T06:47:31.7369404Z         },
2026-06-17T06:47:31.7369653Z         "int": {
2026-06-17T06:47:31.7369915Z           "complete": false,
2026-06-17T06:47:31.7370191Z           "evidence": []
2026-06-17T06:47:31.7370438Z         },
2026-06-17T06:47:31.7370682Z         "unit": {
2026-06-17T06:47:31.7370948Z           "complete": true,
2026-06-17T06:47:31.7371212Z           "evidence": [
2026-06-17T06:47:31.7371469Z             {
2026-06-17T06:47:31.7371823Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-17T06:47:31.7372085Z               "line": 288
2026-06-17T06:47:31.7372333Z             },
2026-06-17T06:47:31.7372581Z             {
2026-06-17T06:47:31.7372933Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-17T06:47:31.7373187Z               "line": 299
2026-06-17T06:47:31.7373438Z             },
2026-06-17T06:47:31.7373678Z             {
2026-06-17T06:47:31.7374036Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-17T06:47:31.7374299Z               "line": 325
2026-06-17T06:47:31.7374547Z             },
2026-06-17T06:47:31.7374795Z             {
2026-06-17T06:47:31.7375143Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-17T06:47:31.7375411Z               "line": 351
2026-06-17T06:47:31.7375649Z             }
2026-06-17T06:47:31.7375896Z           ]
2026-06-17T06:47:31.7376134Z         }
2026-06-17T06:47:31.7376367Z       }
2026-06-17T06:47:31.7376615Z     },
2026-06-17T06:47:31.7376853Z     {
2026-06-17T06:47:31.7377145Z       "id": "REQ-DAEMON-7",
2026-06-17T06:47:31.7381214Z       "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-17T06:47:31.7381489Z       "requiredStages": [
2026-06-17T06:47:31.7381734Z         "impl",
2026-06-17T06:47:31.7381982Z         "unit"
2026-06-17T06:47:31.7382226Z       ],
2026-06-17T06:47:31.7382483Z       "stages": {
2026-06-17T06:47:31.7382731Z         "doc": {
2026-06-17T06:47:31.7383002Z           "complete": false,
2026-06-17T06:47:31.7383260Z           "evidence": []
2026-06-17T06:47:31.7383517Z         },
2026-06-17T06:47:31.7383757Z         "impl": {
2026-06-17T06:47:31.7384027Z           "complete": true,
2026-06-17T06:47:31.7384291Z           "evidence": [
2026-06-17T06:47:31.7384644Z             {
2026-06-17T06:47:31.7385012Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:31.7385279Z               "line": 513
2026-06-17T06:47:31.7385536Z             },
2026-06-17T06:47:31.7385784Z             {
2026-06-17T06:47:31.7386151Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-17T06:47:31.7386418Z               "line": 601
2026-06-17T06:47:31.7386671Z             },
2026-06-17T06:47:31.7386923Z             {
2026-06-17T06:47:31.7387281Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-17T06:47:31.7387662Z               "line": 89
2026-06-17T06:47:31.7387910Z             },
2026-06-17T06:47:31.7388173Z             {
2026-06-17T06:47:31.7388483Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7388754Z               "line": 1773
2026-06-17T06:47:31.7389067Z             }
2026-06-17T06:47:31.7389313Z           ]
2026-06-17T06:47:31.7389567Z         },
2026-06-17T06:47:31.7389814Z         "int": {
2026-06-17T06:47:31.7390115Z           "complete": false,
2026-06-17T06:47:31.7390376Z           "evidence": []
2026-06-17T06:47:31.7390633Z         },
2026-06-17T06:47:31.7390882Z         "unit": {
2026-06-17T06:47:31.7391154Z           "complete": true,
2026-06-17T06:47:31.7391412Z           "evidence": [
2026-06-17T06:47:31.7391650Z             {
2026-06-17T06:47:31.7392011Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-17T06:47:31.7392275Z               "line": 314
2026-06-17T06:47:31.7392532Z             },
2026-06-17T06:47:31.7392791Z             {
2026-06-17T06:47:31.7393096Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7393368Z               "line": 7416
2026-06-17T06:47:31.7393607Z             }
2026-06-17T06:47:31.7393854Z           ]
2026-06-17T06:47:31.7394101Z         }
2026-06-17T06:47:31.7394345Z       }
2026-06-17T06:47:31.7394592Z     },
2026-06-17T06:47:31.7394827Z     {
2026-06-17T06:47:31.7395104Z       "id": "REQ-DAEMON-8",
2026-06-17T06:47:31.7397822Z       "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-17T06:47:31.7398113Z       "requiredStages": [
2026-06-17T06:47:31.7398360Z         "impl",
2026-06-17T06:47:31.7398617Z         "unit"
2026-06-17T06:47:31.7398870Z       ],
2026-06-17T06:47:31.7399209Z       "stages": {
2026-06-17T06:47:31.7399480Z         "doc": {
2026-06-17T06:47:31.7399751Z           "complete": false,
2026-06-17T06:47:31.7400016Z           "evidence": []
2026-06-17T06:47:31.7400268Z         },
2026-06-17T06:47:31.7400526Z         "impl": {
2026-06-17T06:47:31.7400789Z           "complete": true,
2026-06-17T06:47:31.7401046Z           "evidence": [
2026-06-17T06:47:31.7401290Z             {
2026-06-17T06:47:31.7401638Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:31.7401910Z               "line": 413
2026-06-17T06:47:31.7402157Z             },
2026-06-17T06:47:31.7402405Z             {
2026-06-17T06:47:31.7402754Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-17T06:47:31.7403013Z               "line": 56
2026-06-17T06:47:31.7403261Z             }
2026-06-17T06:47:31.7403508Z           ]
2026-06-17T06:47:31.7403755Z         },
2026-06-17T06:47:31.7404009Z         "int": {
2026-06-17T06:47:31.7404280Z           "complete": false,
2026-06-17T06:47:31.7404548Z           "evidence": []
2026-06-17T06:47:31.7404792Z         },
2026-06-17T06:47:31.7405052Z         "unit": {
2026-06-17T06:47:31.7405311Z           "complete": true,
2026-06-17T06:47:31.7405584Z           "evidence": [
2026-06-17T06:47:31.7405832Z             {
2026-06-17T06:47:31.7406184Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-17T06:47:31.7406443Z               "line": 288
2026-06-17T06:47:31.7406689Z             },
2026-06-17T06:47:31.7407039Z             {
2026-06-17T06:47:31.7407397Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-17T06:47:31.7407659Z               "line": 325
2026-06-17T06:47:31.7407919Z             }
2026-06-17T06:47:31.7408162Z           ]
2026-06-17T06:47:31.7408406Z         }
2026-06-17T06:47:31.7408649Z       }
2026-06-17T06:47:31.7408887Z     },
2026-06-17T06:47:31.7409206Z     {
2026-06-17T06:47:31.7409487Z       "id": "REQ-DAEMON-9",
2026-06-17T06:47:31.7420216Z       "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-17T06:47:31.7420672Z       "requiredStages": [
2026-06-17T06:47:31.7420932Z         "impl",
2026-06-17T06:47:31.7421194Z         "unit"
2026-06-17T06:47:31.7421437Z       ],
2026-06-17T06:47:31.7421698Z       "stages": {
2026-06-17T06:47:31.7421956Z         "doc": {
2026-06-17T06:47:31.7422238Z           "complete": false,
2026-06-17T06:47:31.7422495Z           "evidence": []
2026-06-17T06:47:31.7422745Z         },
2026-06-17T06:47:31.7423001Z         "impl": {
2026-06-17T06:47:31.7423278Z           "complete": true,
2026-06-17T06:47:31.7423539Z           "evidence": [
2026-06-17T06:47:31.7423785Z             {
2026-06-17T06:47:31.7424170Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7424438Z               "line": 276
2026-06-17T06:47:31.7424700Z             },
2026-06-17T06:47:31.7424952Z             {
2026-06-17T06:47:31.7425316Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:31.7425577Z               "line": 600
2026-06-17T06:47:31.7425834Z             },
2026-06-17T06:47:31.7426082Z             {
2026-06-17T06:47:31.7426441Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:31.7426709Z               "line": 192
2026-06-17T06:47:31.7426972Z             },
2026-06-17T06:47:31.7427224Z             {
2026-06-17T06:47:31.7427591Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:31.7427854Z               "line": 312
2026-06-17T06:47:31.7428106Z             },
2026-06-17T06:47:31.7428354Z             {
2026-06-17T06:47:31.7428716Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:31.7429058Z               "line": 349
2026-06-17T06:47:31.7429306Z             },
2026-06-17T06:47:31.7429554Z             {
2026-06-17T06:47:31.7429864Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7430137Z               "line": 1881
2026-06-17T06:47:31.7430384Z             }
2026-06-17T06:47:31.7430631Z           ]
2026-06-17T06:47:31.7430884Z         },
2026-06-17T06:47:31.7431129Z         "int": {
2026-06-17T06:47:31.7431398Z           "complete": false,
2026-06-17T06:47:31.7431668Z           "evidence": []
2026-06-17T06:47:31.7431911Z         },
2026-06-17T06:47:31.7432187Z         "unit": {
2026-06-17T06:47:31.7432483Z           "complete": true,
2026-06-17T06:47:31.7432774Z           "evidence": [
2026-06-17T06:47:31.7433060Z             {
2026-06-17T06:47:31.7433432Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:31.7433709Z               "line": 760
2026-06-17T06:47:31.7433953Z             },
2026-06-17T06:47:31.7434198Z             {
2026-06-17T06:47:31.7434510Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7434788Z               "line": 9787
2026-06-17T06:47:31.7435036Z             }
2026-06-17T06:47:31.7435388Z           ]
2026-06-17T06:47:31.7435646Z         }
2026-06-17T06:47:31.7435899Z       }
2026-06-17T06:47:31.7436147Z     },
2026-06-17T06:47:31.7436390Z     {
2026-06-17T06:47:31.7436670Z       "id": "REQ-DOCS-1",
2026-06-17T06:47:31.7437265Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-17T06:47:31.7437546Z       "requiredStages": [
2026-06-17T06:47:31.7437798Z         "doc",
2026-06-17T06:47:31.7438051Z         "impl"
2026-06-17T06:47:31.7438303Z       ],
2026-06-17T06:47:31.7438656Z       "stages": {
2026-06-17T06:47:31.7438909Z         "doc": {
2026-06-17T06:47:31.7439257Z           "complete": true,
2026-06-17T06:47:31.7439528Z           "evidence": [
2026-06-17T06:47:31.7439771Z             {
2026-06-17T06:47:31.7440077Z               "path": "docs-site/src/index.md",
2026-06-17T06:47:31.7440344Z               "line": 50
2026-06-17T06:47:31.7440581Z             }
2026-06-17T06:47:31.7440821Z           ]
2026-06-17T06:47:31.7441064Z         },
2026-06-17T06:47:31.7441312Z         "impl": {
2026-06-17T06:47:31.7441578Z           "complete": true,
2026-06-17T06:47:31.7441830Z           "evidence": [
2026-06-17T06:47:31.7442071Z             {
2026-06-17T06:47:31.7442452Z               "path": ".github/workflows/docs-publish.yml",
2026-06-17T06:47:31.7442720Z               "line": 12
2026-06-17T06:47:31.7442977Z             },
2026-06-17T06:47:31.7443225Z             {
2026-06-17T06:47:31.7443545Z               "path": "crates/xtask/src/main.rs",
2026-06-17T06:47:31.7443806Z               "line": 14
2026-06-17T06:47:31.7444054Z             }
2026-06-17T06:47:31.7444306Z           ]
2026-06-17T06:47:31.7444561Z         },
2026-06-17T06:47:31.7444811Z         "int": {
2026-06-17T06:47:31.7445085Z           "complete": false,
2026-06-17T06:47:31.7445348Z           "evidence": []
2026-06-17T06:47:31.7445596Z         },
2026-06-17T06:47:31.7445853Z         "unit": {
2026-06-17T06:47:31.7446126Z           "complete": false,
2026-06-17T06:47:31.7446393Z           "evidence": []
2026-06-17T06:47:31.7446635Z         }
2026-06-17T06:47:31.7446878Z       }
2026-06-17T06:47:31.7447117Z     },
2026-06-17T06:47:31.7447359Z     {
2026-06-17T06:47:31.7447633Z       "id": "REQ-DOCS-2",
2026-06-17T06:47:31.7448097Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-17T06:47:31.7448387Z       "requiredStages": [
2026-06-17T06:47:31.7448635Z         "doc",
2026-06-17T06:47:31.7448891Z         "int"
2026-06-17T06:47:31.7449216Z       ],
2026-06-17T06:47:31.7449498Z       "stages": {
2026-06-17T06:47:31.7449745Z         "doc": {
2026-06-17T06:47:31.7450013Z           "complete": true,
2026-06-17T06:47:31.7450283Z           "evidence": [
2026-06-17T06:47:31.7450526Z             {
2026-06-17T06:47:31.7451042Z               "path": "docs-site/src/harness-contract/integration-checklist.md",
2026-06-17T06:47:31.7451290Z               "line": 3
2026-06-17T06:47:31.7451529Z             },
2026-06-17T06:47:31.7451780Z             {
2026-06-17T06:47:31.7452158Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-17T06:47:31.7452428Z               "line": 3
2026-06-17T06:47:31.7452678Z             },
2026-06-17T06:47:31.7452928Z             {
2026-06-17T06:47:31.7453317Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-17T06:47:31.7453575Z               "line": 3
2026-06-17T06:47:31.7453829Z             }
2026-06-17T06:47:31.7454071Z           ]
2026-06-17T06:47:31.7454328Z         },
2026-06-17T06:47:31.7454586Z         "impl": {
2026-06-17T06:47:31.7454862Z           "complete": false,
2026-06-17T06:47:31.7455130Z           "evidence": []
2026-06-17T06:47:31.7455376Z         },
2026-06-17T06:47:31.7455640Z         "int": {
2026-06-17T06:47:31.7455908Z           "complete": true,
2026-06-17T06:47:31.7456170Z           "evidence": [
2026-06-17T06:47:31.7456413Z             {
2026-06-17T06:47:31.7456785Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-17T06:47:31.7457162Z               "line": 14
2026-06-17T06:47:31.7457424Z             }
2026-06-17T06:47:31.7457682Z           ]
2026-06-17T06:47:31.7457928Z         },
2026-06-17T06:47:31.7458178Z         "unit": {
2026-06-17T06:47:31.7458460Z           "complete": false,
2026-06-17T06:47:31.7458723Z           "evidence": []
2026-06-17T06:47:31.7459061Z         }
2026-06-17T06:47:31.7459314Z       }
2026-06-17T06:47:31.7459563Z     },
2026-06-17T06:47:31.7459800Z     {
2026-06-17T06:47:31.7460067Z       "id": "REQ-DOCS-3",
2026-06-17T06:47:31.7460564Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-17T06:47:31.7460954Z       "requiredStages": [
2026-06-17T06:47:31.7461216Z         "doc"
2026-06-17T06:47:31.7461469Z       ],
2026-06-17T06:47:31.7461735Z       "stages": {
2026-06-17T06:47:31.7461988Z         "doc": {
2026-06-17T06:47:31.7462255Z           "complete": true,
2026-06-17T06:47:31.7462513Z           "evidence": [
2026-06-17T06:47:31.7462776Z             {
2026-06-17T06:47:31.7463102Z               "path": "docs-site/src/index.md",
2026-06-17T06:47:31.7463368Z               "line": 42
2026-06-17T06:47:31.7463615Z             }
2026-06-17T06:47:31.7463854Z           ]
2026-06-17T06:47:31.7464107Z         },
2026-06-17T06:47:31.7464365Z         "impl": {
2026-06-17T06:47:31.7464641Z           "complete": false,
2026-06-17T06:47:31.7464907Z           "evidence": []
2026-06-17T06:47:31.7465156Z         },
2026-06-17T06:47:31.7465418Z         "int": {
2026-06-17T06:47:31.7465686Z           "complete": false,
2026-06-17T06:47:31.7465955Z           "evidence": []
2026-06-17T06:47:31.7466210Z         },
2026-06-17T06:47:31.7466468Z         "unit": {
2026-06-17T06:47:31.7466745Z           "complete": false,
2026-06-17T06:47:31.7467012Z           "evidence": []
2026-06-17T06:47:31.7467261Z         }
2026-06-17T06:47:31.7467513Z       }
2026-06-17T06:47:31.7467760Z     },
2026-06-17T06:47:31.7468012Z     {
2026-06-17T06:47:31.7468285Z       "id": "REQ-DOCS-4",
2026-06-17T06:47:31.7468873Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-17T06:47:31.7469226Z       "requiredStages": [
2026-06-17T06:47:31.7469484Z         "doc",
2026-06-17T06:47:31.7469736Z         "impl",
2026-06-17T06:47:31.7469998Z         "unit"
2026-06-17T06:47:31.7470251Z       ],
2026-06-17T06:47:31.7470513Z       "stages": {
2026-06-17T06:47:31.7470777Z         "doc": {
2026-06-17T06:47:31.7471043Z           "complete": true,
2026-06-17T06:47:31.7471308Z           "evidence": [
2026-06-17T06:47:31.7471556Z             {
2026-06-17T06:47:31.7471880Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-17T06:47:31.7472143Z               "line": 35
2026-06-17T06:47:31.7472400Z             }
2026-06-17T06:47:31.7472654Z           ]
2026-06-17T06:47:31.7472896Z         },
2026-06-17T06:47:31.7473153Z         "impl": {
2026-06-17T06:47:31.7473415Z           "complete": true,
2026-06-17T06:47:31.7473686Z           "evidence": [
2026-06-17T06:47:31.7473932Z             {
2026-06-17T06:47:31.7474310Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:31.7474562Z               "line": 691
2026-06-17T06:47:31.7474814Z             },
2026-06-17T06:47:31.7475072Z             {
2026-06-17T06:47:31.7475387Z               "path": "crates/xtask/src/main.rs",
2026-06-17T06:47:31.7475649Z               "line": 15
2026-06-17T06:47:31.7475893Z             }
2026-06-17T06:47:31.7476150Z           ]
2026-06-17T06:47:31.7476406Z         },
2026-06-17T06:47:31.7476652Z         "int": {
2026-06-17T06:47:31.7476934Z           "complete": false,
2026-06-17T06:47:31.7477196Z           "evidence": []
2026-06-17T06:47:31.7477449Z         },
2026-06-17T06:47:31.7477695Z         "unit": {
2026-06-17T06:47:31.7477977Z           "complete": true,
2026-06-17T06:47:31.7478239Z           "evidence": [
2026-06-17T06:47:31.7478479Z             {
2026-06-17T06:47:31.7478850Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:31.7479186Z               "line": 1444
2026-06-17T06:47:31.7479443Z             }
2026-06-17T06:47:31.7479786Z           ]
2026-06-17T06:47:31.7480054Z         }
2026-06-17T06:47:31.7480301Z       }
2026-06-17T06:47:31.7480538Z     },
2026-06-17T06:47:31.7480787Z     {
2026-06-17T06:47:31.7481064Z       "id": "REQ-DOCS-5",
2026-06-17T06:47:31.7481642Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-17T06:47:31.7481925Z       "requiredStages": [
2026-06-17T06:47:31.7482187Z         "impl",
2026-06-17T06:47:31.7482435Z         "int"
2026-06-17T06:47:31.7482689Z       ],
2026-06-17T06:47:31.7483065Z       "stages": {
2026-06-17T06:47:31.7483313Z         "doc": {
2026-06-17T06:47:31.7483595Z           "complete": false,
2026-06-17T06:47:31.7483863Z           "evidence": []
2026-06-17T06:47:31.7484113Z         },
2026-06-17T06:47:31.7484373Z         "impl": {
2026-06-17T06:47:31.7484645Z           "complete": true,
2026-06-17T06:47:31.7484908Z           "evidence": [
2026-06-17T06:47:31.7485156Z             {
2026-06-17T06:47:31.7485527Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:31.7485786Z               "line": 692
2026-06-17T06:47:31.7486037Z             },
2026-06-17T06:47:31.7486290Z             {
2026-06-17T06:47:31.7486605Z               "path": "crates/xtask/src/main.rs",
2026-06-17T06:47:31.7486871Z               "line": 113
2026-06-17T06:47:31.7487118Z             }
2026-06-17T06:47:31.7487374Z           ]
2026-06-17T06:47:31.7487621Z         },
2026-06-17T06:47:31.7487903Z         "int": {
2026-06-17T06:47:31.7488213Z           "complete": true,
2026-06-17T06:47:31.7488470Z           "evidence": [
2026-06-17T06:47:31.7488719Z             {
2026-06-17T06:47:31.7489118Z               "path": ".github/workflows/ci.yml",
2026-06-17T06:47:31.7489392Z               "line": 126
2026-06-17T06:47:31.7489637Z             },
2026-06-17T06:47:31.7489887Z             {
2026-06-17T06:47:31.7490260Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:31.7490526Z               "line": 1481
2026-06-17T06:47:31.7490784Z             }
2026-06-17T06:47:31.7491037Z           ]
2026-06-17T06:47:31.7491295Z         },
2026-06-17T06:47:31.7491539Z         "unit": {
2026-06-17T06:47:31.7491820Z           "complete": false,
2026-06-17T06:47:31.7492081Z           "evidence": []
2026-06-17T06:47:31.7492328Z         }
2026-06-17T06:47:31.7492577Z       }
2026-06-17T06:47:31.7492820Z     },
2026-06-17T06:47:31.7493072Z     {
2026-06-17T06:47:31.7493339Z       "id": "REQ-DOCS-6",
2026-06-17T06:47:31.7494336Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-17T06:47:31.7494621Z       "requiredStages": [
2026-06-17T06:47:31.7494872Z         "impl",
2026-06-17T06:47:31.7495120Z         "unit",
2026-06-17T06:47:31.7495367Z         "int"
2026-06-17T06:47:31.7495614Z       ],
2026-06-17T06:47:31.7495863Z       "stages": {
2026-06-17T06:47:31.7496107Z         "doc": {
2026-06-17T06:47:31.7496379Z           "complete": true,
2026-06-17T06:47:31.7496651Z           "evidence": [
2026-06-17T06:47:31.7496897Z             {
2026-06-17T06:47:31.7497280Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-17T06:47:31.7497550Z               "line": 4
2026-06-17T06:47:31.7497796Z             }
2026-06-17T06:47:31.7498044Z           ]
2026-06-17T06:47:31.7498297Z         },
2026-06-17T06:47:31.7498549Z         "impl": {
2026-06-17T06:47:31.7498815Z           "complete": true,
2026-06-17T06:47:31.7499164Z           "evidence": [
2026-06-17T06:47:31.7499440Z             {
2026-06-17T06:47:31.7499774Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7500040Z               "line": 4957
2026-06-17T06:47:31.7500287Z             }
2026-06-17T06:47:31.7500554Z           ]
2026-06-17T06:47:31.7500806Z         },
2026-06-17T06:47:31.7501048Z         "int": {
2026-06-17T06:47:31.7501321Z           "complete": true,
2026-06-17T06:47:31.7501569Z           "evidence": [
2026-06-17T06:47:31.7501823Z             {
2026-06-17T06:47:31.7502303Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-17T06:47:31.7502574Z               "line": 39
2026-06-17T06:47:31.7502856Z             }
2026-06-17T06:47:31.7503109Z           ]
2026-06-17T06:47:31.7503366Z         },
2026-06-17T06:47:31.7503623Z         "unit": {
2026-06-17T06:47:31.7503894Z           "complete": true,
2026-06-17T06:47:31.7504172Z           "evidence": [
2026-06-17T06:47:31.7504415Z             {
2026-06-17T06:47:31.7504739Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7505105Z               "line": 9949
2026-06-17T06:47:31.7505362Z             }
2026-06-17T06:47:31.7505608Z           ]
2026-06-17T06:47:31.7505865Z         }
2026-06-17T06:47:31.7506108Z       }
2026-06-17T06:47:31.7506357Z     },
2026-06-17T06:47:31.7506596Z     {
2026-06-17T06:47:31.7506872Z       "id": "REQ-ELEVATE-1",
2026-06-17T06:47:31.7515870Z       "title": "Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.",
2026-06-17T06:47:31.7516163Z       "requiredStages": [
2026-06-17T06:47:31.7516420Z         "doc",
2026-06-17T06:47:31.7516668Z         "impl",
2026-06-17T06:47:31.7516931Z         "unit"
2026-06-17T06:47:31.7517175Z       ],
2026-06-17T06:47:31.7517432Z       "stages": {
2026-06-17T06:47:31.7517679Z         "doc": {
2026-06-17T06:47:31.7517956Z           "complete": true,
2026-06-17T06:47:31.7518213Z           "evidence": [
2026-06-17T06:47:31.7518468Z             {
2026-06-17T06:47:31.7518756Z               "path": "CONTEXT.md",
2026-06-17T06:47:31.7519098Z               "line": 639
2026-06-17T06:47:31.7519359Z             }
2026-06-17T06:47:31.7519616Z           ]
2026-06-17T06:47:31.7519865Z         },
2026-06-17T06:47:31.7520113Z         "impl": {
2026-06-17T06:47:31.7520385Z           "complete": true,
2026-06-17T06:47:31.7520653Z           "evidence": [
2026-06-17T06:47:31.7520904Z             {
2026-06-17T06:47:31.7521227Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7521492Z               "line": 3296
2026-06-17T06:47:31.7521741Z             },
2026-06-17T06:47:31.7521989Z             {
2026-06-17T06:47:31.7522303Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7522571Z               "line": 3341
2026-06-17T06:47:31.7522812Z             },
2026-06-17T06:47:31.7523066Z             {
2026-06-17T06:47:31.7523370Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7523647Z               "line": 3403
2026-06-17T06:47:31.7523896Z             },
2026-06-17T06:47:31.7524142Z             {
2026-06-17T06:47:31.7524481Z               "path": "crates/spt/src/elevation.rs",
2026-06-17T06:47:31.7524747Z               "line": 92
2026-06-17T06:47:31.7525005Z             },
2026-06-17T06:47:31.7525253Z             {
2026-06-17T06:47:31.7525591Z               "path": "crates/spt/src/elevation.rs",
2026-06-17T06:47:31.7525855Z               "line": 148
2026-06-17T06:47:31.7526098Z             }
2026-06-17T06:47:31.7526344Z           ]
2026-06-17T06:47:31.7526580Z         },
2026-06-17T06:47:31.7526839Z         "int": {
2026-06-17T06:47:31.7527224Z           "complete": false,
2026-06-17T06:47:31.7527501Z           "evidence": []
2026-06-17T06:47:31.7527750Z         },
2026-06-17T06:47:31.7528002Z         "unit": {
2026-06-17T06:47:31.7528273Z           "complete": true,
2026-06-17T06:47:31.7528544Z           "evidence": [
2026-06-17T06:47:31.7528802Z             {
2026-06-17T06:47:31.7529206Z               "path": "crates/spt/src/elevation.rs",
2026-06-17T06:47:31.7529486Z               "line": 442
2026-06-17T06:47:31.7529748Z             },
2026-06-17T06:47:31.7530001Z             {
2026-06-17T06:47:31.7530443Z               "path": "crates/spt/src/elevation.rs",
2026-06-17T06:47:31.7530706Z               "line": 460
2026-06-17T06:47:31.7530959Z             }
2026-06-17T06:47:31.7531208Z           ]
2026-06-17T06:47:31.7531469Z         }
2026-06-17T06:47:31.7531716Z       }
2026-06-17T06:47:31.7531963Z     },
2026-06-17T06:47:31.7532205Z     {
2026-06-17T06:47:31.7532472Z       "id": "REQ-EP-1",
2026-06-17T06:47:31.7532863Z       "title": "Day-one endpoint types; open type system",
2026-06-17T06:47:31.7533141Z       "requiredStages": [
2026-06-17T06:47:31.7533382Z         "impl",
2026-06-17T06:47:31.7533631Z         "unit"
2026-06-17T06:47:31.7533883Z       ],
2026-06-17T06:47:31.7534147Z       "stages": {
2026-06-17T06:47:31.7534390Z         "doc": {
2026-06-17T06:47:31.7534659Z           "complete": false,
2026-06-17T06:47:31.7534908Z           "evidence": []
2026-06-17T06:47:31.7535165Z         },
2026-06-17T06:47:31.7535414Z         "impl": {
2026-06-17T06:47:31.7535685Z           "complete": true,
2026-06-17T06:47:31.7535956Z           "evidence": [
2026-06-17T06:47:31.7536205Z             {
2026-06-17T06:47:31.7536562Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-17T06:47:31.7536823Z               "line": 77
2026-06-17T06:47:31.7537080Z             },
2026-06-17T06:47:31.7537326Z             {
2026-06-17T06:47:31.7537685Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-17T06:47:31.7537952Z               "line": 94
2026-06-17T06:47:31.7538199Z             }
2026-06-17T06:47:31.7538447Z           ]
2026-06-17T06:47:31.7538690Z         },
2026-06-17T06:47:31.7539033Z         "int": {
2026-06-17T06:47:31.7539311Z           "complete": false,
2026-06-17T06:47:31.7539588Z           "evidence": []
2026-06-17T06:47:31.7539838Z         },
2026-06-17T06:47:31.7540098Z         "unit": {
2026-06-17T06:47:31.7540374Z           "complete": true,
2026-06-17T06:47:31.7540638Z           "evidence": [
2026-06-17T06:47:31.7540895Z             {
2026-06-17T06:47:31.7541271Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-17T06:47:31.7541538Z               "line": 161
2026-06-17T06:47:31.7541792Z             },
2026-06-17T06:47:31.7542039Z             {
2026-06-17T06:47:31.7542391Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-17T06:47:31.7542659Z               "line": 178
2026-06-17T06:47:31.7542918Z             }
2026-06-17T06:47:31.7543171Z           ]
2026-06-17T06:47:31.7543424Z         }
2026-06-17T06:47:31.7543676Z       }
2026-06-17T06:47:31.7543933Z     },
2026-06-17T06:47:31.7544186Z     {
2026-06-17T06:47:31.7544453Z       "id": "REQ-EP-2",
2026-06-17T06:47:31.7544941Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-17T06:47:31.7545224Z       "requiredStages": [
2026-06-17T06:47:31.7545477Z         "impl",
2026-06-17T06:47:31.7545730Z         "unit"
2026-06-17T06:47:31.7545969Z       ],
2026-06-17T06:47:31.7546235Z       "stages": {
2026-06-17T06:47:31.7546492Z         "doc": {
2026-06-17T06:47:31.7546774Z           "complete": false,
2026-06-17T06:47:31.7547036Z           "evidence": []
2026-06-17T06:47:31.7547285Z         },
2026-06-17T06:47:31.7547541Z         "impl": {
2026-06-17T06:47:31.7547805Z           "complete": true,
2026-06-17T06:47:31.7548067Z           "evidence": [
2026-06-17T06:47:31.7548311Z             {
2026-06-17T06:47:31.7548673Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-17T06:47:31.7549030Z               "line": 114
2026-06-17T06:47:31.7549393Z             },
2026-06-17T06:47:31.7549656Z             {
2026-06-17T06:47:31.7550013Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-17T06:47:31.7550289Z               "line": 131
2026-06-17T06:47:31.7550545Z             },
2026-06-17T06:47:31.7550807Z             {
2026-06-17T06:47:31.7551159Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-17T06:47:31.7551422Z               "line": 138
2026-06-17T06:47:31.7551684Z             }
2026-06-17T06:47:31.7551936Z           ]
2026-06-17T06:47:31.7552299Z         },
2026-06-17T06:47:31.7552556Z         "int": {
2026-06-17T06:47:31.7552836Z           "complete": false,
2026-06-17T06:47:31.7553102Z           "evidence": []
2026-06-17T06:47:31.7556977Z         },
2026-06-17T06:47:31.7557268Z         "unit": {
2026-06-17T06:47:31.7557568Z           "complete": true,
2026-06-17T06:47:31.7557859Z           "evidence": [
2026-06-17T06:47:31.7558125Z             {
2026-06-17T06:47:31.7558505Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-17T06:47:31.7558771Z               "line": 190
2026-06-17T06:47:31.7559101Z             },
2026-06-17T06:47:31.7559343Z             {
2026-06-17T06:47:31.7559716Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-17T06:47:31.7559978Z               "line": 208
2026-06-17T06:47:31.7560225Z             },
2026-06-17T06:47:31.7560468Z             {
2026-06-17T06:47:31.7560825Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-17T06:47:31.7561081Z               "line": 221
2026-06-17T06:47:31.7561343Z             }
2026-06-17T06:47:31.7561585Z           ]
2026-06-17T06:47:31.7561833Z         }
2026-06-17T06:47:31.7562078Z       }
2026-06-17T06:47:31.7562321Z     },
2026-06-17T06:47:31.7562569Z     {
2026-06-17T06:47:31.7562830Z       "id": "REQ-EP-3",
2026-06-17T06:47:31.7563396Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-17T06:47:31.7563671Z       "requiredStages": [
2026-06-17T06:47:31.7563919Z         "impl",
2026-06-17T06:47:31.7564172Z         "unit"
2026-06-17T06:47:31.7564419Z       ],
2026-06-17T06:47:31.7564677Z       "stages": {
2026-06-17T06:47:31.7564929Z         "doc": {
2026-06-17T06:47:31.7565207Z           "complete": false,
2026-06-17T06:47:31.7565469Z           "evidence": []
2026-06-17T06:47:31.7565707Z         },
2026-06-17T06:47:31.7565945Z         "impl": {
2026-06-17T06:47:31.7566221Z           "complete": true,
2026-06-17T06:47:31.7566479Z           "evidence": [
2026-06-17T06:47:31.7566731Z             {
2026-06-17T06:47:31.7567104Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-17T06:47:31.7567361Z               "line": 31
2026-06-17T06:47:31.7567618Z             },
2026-06-17T06:47:31.7567856Z             {
2026-06-17T06:47:31.7568204Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-17T06:47:31.7568466Z               "line": 49
2026-06-17T06:47:31.7568708Z             }
2026-06-17T06:47:31.7569041Z           ]
2026-06-17T06:47:31.7569293Z         },
2026-06-17T06:47:31.7569550Z         "int": {
2026-06-17T06:47:31.7569812Z           "complete": false,
2026-06-17T06:47:31.7570085Z           "evidence": []
2026-06-17T06:47:31.7570323Z         },
2026-06-17T06:47:31.7570572Z         "unit": {
2026-06-17T06:47:31.7570848Z           "complete": true,
2026-06-17T06:47:31.7571105Z           "evidence": [
2026-06-17T06:47:31.7571362Z             {
2026-06-17T06:47:31.7571731Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-17T06:47:31.7571989Z               "line": 156
2026-06-17T06:47:31.7572247Z             },
2026-06-17T06:47:31.7572485Z             {
2026-06-17T06:47:31.7572852Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-17T06:47:31.7573109Z               "line": 164
2026-06-17T06:47:31.7573352Z             },
2026-06-17T06:47:31.7573600Z             {
2026-06-17T06:47:31.7573956Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-17T06:47:31.7574232Z               "line": 177
2026-06-17T06:47:31.7574616Z             },
2026-06-17T06:47:31.7574880Z             {
2026-06-17T06:47:31.7575228Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-17T06:47:31.7575489Z               "line": 200
2026-06-17T06:47:31.7575734Z             },
2026-06-17T06:47:31.7575981Z             {
2026-06-17T06:47:31.7576344Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-17T06:47:31.7576606Z               "line": 216
2026-06-17T06:47:31.7576867Z             },
2026-06-17T06:47:31.7577111Z             {
2026-06-17T06:47:31.7577582Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-17T06:47:31.7577853Z               "line": 233
2026-06-17T06:47:31.7578097Z             }
2026-06-17T06:47:31.7578350Z           ]
2026-06-17T06:47:31.7578599Z         }
2026-06-17T06:47:31.7578841Z       }
2026-06-17T06:47:31.7579178Z     },
2026-06-17T06:47:31.7579424Z     {
2026-06-17T06:47:31.7579696Z       "id": "REQ-EP-4",
2026-06-17T06:47:31.7580144Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-17T06:47:31.7580411Z       "requiredStages": [
2026-06-17T06:47:31.7580668Z         "impl",
2026-06-17T06:47:31.7580921Z         "unit"
2026-06-17T06:47:31.7581170Z       ],
2026-06-17T06:47:31.7581427Z       "stages": {
2026-06-17T06:47:31.7581680Z         "doc": {
2026-06-17T06:47:31.7581960Z           "complete": false,
2026-06-17T06:47:31.7582225Z           "evidence": []
2026-06-17T06:47:31.7582478Z         },
2026-06-17T06:47:31.7582725Z         "impl": {
2026-06-17T06:47:31.7582996Z           "complete": true,
2026-06-17T06:47:31.7583249Z           "evidence": [
2026-06-17T06:47:31.7583521Z             {
2026-06-17T06:47:31.7583874Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-17T06:47:31.7584141Z               "line": 717
2026-06-17T06:47:31.7584390Z             },
2026-06-17T06:47:31.7584645Z             {
2026-06-17T06:47:31.7584972Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-17T06:47:31.7585239Z               "line": 1048
2026-06-17T06:47:31.7585482Z             },
2026-06-17T06:47:31.7585735Z             {
2026-06-17T06:47:31.7586093Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:31.7586360Z               "line": 1359
2026-06-17T06:47:31.7586618Z             },
2026-06-17T06:47:31.7586866Z             {
2026-06-17T06:47:31.7587210Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-17T06:47:31.7587469Z               "line": 118
2026-06-17T06:47:31.7587708Z             },
2026-06-17T06:47:31.7587961Z             {
2026-06-17T06:47:31.7588300Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-17T06:47:31.7588572Z               "line": 609
2026-06-17T06:47:31.7588815Z             },
2026-06-17T06:47:31.7589149Z             {
2026-06-17T06:47:31.7589479Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-17T06:47:31.7589743Z               "line": 734
2026-06-17T06:47:31.7589994Z             },
2026-06-17T06:47:31.7590237Z             {
2026-06-17T06:47:31.7590585Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:31.7590847Z               "line": 271
2026-06-17T06:47:31.7591091Z             },
2026-06-17T06:47:31.7591338Z             {
2026-06-17T06:47:31.7591702Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:31.7591963Z               "line": 458
2026-06-17T06:47:31.7592211Z             },
2026-06-17T06:47:31.7592458Z             {
2026-06-17T06:47:31.7592813Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:31.7593071Z               "line": 1246
2026-06-17T06:47:31.7593324Z             }
2026-06-17T06:47:31.7593571Z           ]
2026-06-17T06:47:31.7593814Z         },
2026-06-17T06:47:31.7594058Z         "int": {
2026-06-17T06:47:31.7594339Z           "complete": false,
2026-06-17T06:47:31.7594607Z           "evidence": []
2026-06-17T06:47:31.7594859Z         },
2026-06-17T06:47:31.7595110Z         "unit": {
2026-06-17T06:47:31.7595394Z           "complete": true,
2026-06-17T06:47:31.7595760Z           "evidence": [
2026-06-17T06:47:31.7596019Z             {
2026-06-17T06:47:31.7596371Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-17T06:47:31.7596633Z               "line": 825
2026-06-17T06:47:31.7596882Z             },
2026-06-17T06:47:31.7597131Z             {
2026-06-17T06:47:31.7597508Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-17T06:47:31.7597775Z               "line": 76
2026-06-17T06:47:31.7598020Z             },
2026-06-17T06:47:31.7598273Z             {
2026-06-17T06:47:31.7598760Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-17T06:47:31.7599108Z               "line": 147
2026-06-17T06:47:31.7599371Z             }
2026-06-17T06:47:31.7599617Z           ]
2026-06-17T06:47:31.7599865Z         }
2026-06-17T06:47:31.7600110Z       }
2026-06-17T06:47:31.7600351Z     },
2026-06-17T06:47:31.7600591Z     {
2026-06-17T06:47:31.7600868Z       "id": "REQ-EP-5",
2026-06-17T06:47:31.7602915Z       "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-17T06:47:31.7603175Z       "requiredStages": [
2026-06-17T06:47:31.7603440Z         "impl",
2026-06-17T06:47:31.7603697Z         "unit",
2026-06-17T06:47:31.7603941Z         "int"
2026-06-17T06:47:31.7604180Z       ],
2026-06-17T06:47:31.7604441Z       "stages": {
2026-06-17T06:47:31.7604694Z         "doc": {
2026-06-17T06:47:31.7604970Z           "complete": false,
2026-06-17T06:47:31.7605238Z           "evidence": []
2026-06-17T06:47:31.7605482Z         },
2026-06-17T06:47:31.7605727Z         "impl": {
2026-06-17T06:47:31.7605987Z           "complete": true,
2026-06-17T06:47:31.7606255Z           "evidence": [
2026-06-17T06:47:31.7606503Z             {
2026-06-17T06:47:31.7606889Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:31.7607161Z               "line": 367
2026-06-17T06:47:31.7607409Z             },
2026-06-17T06:47:31.7607657Z             {
2026-06-17T06:47:31.7608030Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-17T06:47:31.7608292Z               "line": 18
2026-06-17T06:47:31.7608542Z             },
2026-06-17T06:47:31.7608786Z             {
2026-06-17T06:47:31.7609204Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-17T06:47:31.7609468Z               "line": 63
2026-06-17T06:47:31.7609716Z             },
2026-06-17T06:47:31.7609964Z             {
2026-06-17T06:47:31.7610346Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-17T06:47:31.7610608Z               "line": 92
2026-06-17T06:47:31.7610853Z             },
2026-06-17T06:47:31.7611099Z             {
2026-06-17T06:47:31.7611452Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-17T06:47:31.7611719Z               "line": 167
2026-06-17T06:47:31.7611963Z             },
2026-06-17T06:47:31.7612211Z             {
2026-06-17T06:47:31.7612578Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-17T06:47:31.7612831Z               "line": 179
2026-06-17T06:47:31.7613074Z             },
2026-06-17T06:47:31.7613317Z             {
2026-06-17T06:47:31.7613683Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.7613952Z               "line": 114
2026-06-17T06:47:31.7614201Z             },
2026-06-17T06:47:31.7614459Z             {
2026-06-17T06:47:31.7614806Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-17T06:47:31.7615079Z               "line": 22
2026-06-17T06:47:31.7615330Z             },
2026-06-17T06:47:31.7615573Z             {
2026-06-17T06:47:31.7615917Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-17T06:47:31.7616179Z               "line": 145
2026-06-17T06:47:31.7616439Z             },
2026-06-17T06:47:31.7616682Z             {
2026-06-17T06:47:31.7617039Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-17T06:47:31.7617416Z               "line": 174
2026-06-17T06:47:31.7617673Z             },
2026-06-17T06:47:31.7617936Z             {
2026-06-17T06:47:31.7618299Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-17T06:47:31.7618571Z               "line": 196
2026-06-17T06:47:31.7618817Z             },
2026-06-17T06:47:31.7619150Z             {
2026-06-17T06:47:31.7619507Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-17T06:47:31.7619765Z               "line": 221
2026-06-17T06:47:31.7620014Z             },
2026-06-17T06:47:31.7620361Z             {
2026-06-17T06:47:31.7620728Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-17T06:47:31.7620990Z               "line": 247
2026-06-17T06:47:31.7621243Z             },
2026-06-17T06:47:31.7621490Z             {
2026-06-17T06:47:31.7621851Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-17T06:47:31.7622122Z               "line": 270
2026-06-17T06:47:31.7622370Z             },
2026-06-17T06:47:31.7622622Z             {
2026-06-17T06:47:31.7622975Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:31.7623248Z               "line": 100
2026-06-17T06:47:31.7623495Z             },
2026-06-17T06:47:31.7623740Z             {
2026-06-17T06:47:31.7624055Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7624319Z               "line": 5740
2026-06-17T06:47:31.7624574Z             },
2026-06-17T06:47:31.7624822Z             {
2026-06-17T06:47:31.7625133Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7625399Z               "line": 5874
2026-06-17T06:47:31.7625663Z             },
2026-06-17T06:47:31.7625925Z             {
2026-06-17T06:47:31.7626225Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7626496Z               "line": 6040
2026-06-17T06:47:31.7626753Z             },
2026-06-17T06:47:31.7626999Z             {
2026-06-17T06:47:31.7627309Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7627576Z               "line": 6568
2026-06-17T06:47:31.7627838Z             }
2026-06-17T06:47:31.7628090Z           ]
2026-06-17T06:47:31.7628352Z         },
2026-06-17T06:47:31.7628605Z         "int": {
2026-06-17T06:47:31.7628878Z           "complete": true,
2026-06-17T06:47:31.7629193Z           "evidence": [
2026-06-17T06:47:31.7629455Z             {
2026-06-17T06:47:31.7629835Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-17T06:47:31.7630097Z               "line": 16
2026-06-17T06:47:31.7630353Z             },
2026-06-17T06:47:31.7630606Z             {
2026-06-17T06:47:31.7630955Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-17T06:47:31.7631222Z               "line": 15
2026-06-17T06:47:31.7631475Z             }
2026-06-17T06:47:31.7631728Z           ]
2026-06-17T06:47:31.7631964Z         },
2026-06-17T06:47:31.7632229Z         "unit": {
2026-06-17T06:47:31.7632492Z           "complete": true,
2026-06-17T06:47:31.7632764Z           "evidence": [
2026-06-17T06:47:31.7633007Z             {
2026-06-17T06:47:31.7633393Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-17T06:47:31.7633651Z               "line": 246
2026-06-17T06:47:31.7633898Z             },
2026-06-17T06:47:31.7634155Z             {
2026-06-17T06:47:31.7634524Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-17T06:47:31.7634789Z               "line": 306
2026-06-17T06:47:31.7635054Z             },
2026-06-17T06:47:31.7635288Z             {
2026-06-17T06:47:31.7635655Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-17T06:47:31.7635922Z               "line": 363
2026-06-17T06:47:31.7636175Z             },
2026-06-17T06:47:31.7636422Z             {
2026-06-17T06:47:31.7636785Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-17T06:47:31.7637051Z               "line": 286
2026-06-17T06:47:31.7637289Z             },
2026-06-17T06:47:31.7637532Z             {
2026-06-17T06:47:31.7637903Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-17T06:47:31.7638273Z               "line": 338
2026-06-17T06:47:31.7638531Z             },
2026-06-17T06:47:31.7638790Z             {
2026-06-17T06:47:31.7639218Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:31.7639484Z               "line": 779
2026-06-17T06:47:31.7639739Z             },
2026-06-17T06:47:31.7639982Z             {
2026-06-17T06:47:31.7640294Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7640556Z               "line": 7975
2026-06-17T06:47:31.7640814Z             },
2026-06-17T06:47:31.7641157Z             {
2026-06-17T06:47:31.7641463Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7641720Z               "line": 8128
2026-06-17T06:47:31.7641965Z             },
2026-06-17T06:47:31.7642216Z             {
2026-06-17T06:47:31.7642524Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7642784Z               "line": 8717
2026-06-17T06:47:31.7643037Z             },
2026-06-17T06:47:31.7643286Z             {
2026-06-17T06:47:31.7643601Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7643859Z               "line": 8833
2026-06-17T06:47:31.7644115Z             }
2026-06-17T06:47:31.7644353Z           ]
2026-06-17T06:47:31.7644606Z         }
2026-06-17T06:47:31.7644855Z       }
2026-06-17T06:47:31.7645098Z     },
2026-06-17T06:47:31.7645330Z     {
2026-06-17T06:47:31.7645586Z       "id": "REQ-EP-6",
2026-06-17T06:47:31.7649830Z       "title": "Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6",
2026-06-17T06:47:31.7650112Z       "requiredStages": [
2026-06-17T06:47:31.7650360Z         "doc",
2026-06-17T06:47:31.7650618Z         "impl",
2026-06-17T06:47:31.7650859Z         "unit"
2026-06-17T06:47:31.7651116Z       ],
2026-06-17T06:47:31.7651369Z       "stages": {
2026-06-17T06:47:31.7651613Z         "doc": {
2026-06-17T06:47:31.7651885Z           "complete": true,
2026-06-17T06:47:31.7652137Z           "evidence": [
2026-06-17T06:47:31.7652390Z             {
2026-06-17T06:47:31.7652671Z               "path": "CONTEXT.md",
2026-06-17T06:47:31.7652933Z               "line": 215
2026-06-17T06:47:31.7653180Z             }
2026-06-17T06:47:31.7653435Z           ]
2026-06-17T06:47:31.7653674Z         },
2026-06-17T06:47:31.7653926Z         "impl": {
2026-06-17T06:47:31.7654204Z           "complete": true,
2026-06-17T06:47:31.7654466Z           "evidence": [
2026-06-17T06:47:31.7654718Z             {
2026-06-17T06:47:31.7655068Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:31.7655334Z               "line": 166
2026-06-17T06:47:31.7655581Z             }
2026-06-17T06:47:31.7655824Z           ]
2026-06-17T06:47:31.7656076Z         },
2026-06-17T06:47:31.7656317Z         "int": {
2026-06-17T06:47:31.7656598Z           "complete": true,
2026-06-17T06:47:31.7656856Z           "evidence": [
2026-06-17T06:47:31.7657104Z             {
2026-06-17T06:47:31.7657466Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-17T06:47:31.7657724Z               "line": 18
2026-06-17T06:47:31.7657972Z             }
2026-06-17T06:47:31.7658211Z           ]
2026-06-17T06:47:31.7658461Z         },
2026-06-17T06:47:31.7658713Z         "unit": {
2026-06-17T06:47:31.7659060Z           "complete": true,
2026-06-17T06:47:31.7659322Z           "evidence": [
2026-06-17T06:47:31.7659585Z             {
2026-06-17T06:47:31.7659966Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-17T06:47:31.7660253Z               "line": 552
2026-06-17T06:47:31.7660530Z             },
2026-06-17T06:47:31.7660792Z             {
2026-06-17T06:47:31.7661159Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:31.7661569Z               "line": 627
2026-06-17T06:47:31.7661854Z             }
2026-06-17T06:47:31.7662126Z           ]
2026-06-17T06:47:31.7662397Z         }
2026-06-17T06:47:31.7662678Z       }
2026-06-17T06:47:31.7662940Z     },
2026-06-17T06:47:31.7663212Z     {
2026-06-17T06:47:31.7663498Z       "id": "REQ-EP-7",
2026-06-17T06:47:31.7668175Z       "title": "Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)",
2026-06-17T06:47:31.7668589Z       "requiredStages": [
2026-06-17T06:47:31.7668847Z         "doc",
2026-06-17T06:47:31.7669155Z         "impl",
2026-06-17T06:47:31.7669415Z         "unit"
2026-06-17T06:47:31.7669667Z       ],
2026-06-17T06:47:31.7669912Z       "stages": {
2026-06-17T06:47:31.7670183Z         "doc": {
2026-06-17T06:47:31.7670460Z           "complete": true,
2026-06-17T06:47:31.7670722Z           "evidence": [
2026-06-17T06:47:31.7670969Z             {
2026-06-17T06:47:31.7671256Z               "path": "CONTEXT.md",
2026-06-17T06:47:31.7671518Z               "line": 442
2026-06-17T06:47:31.7671758Z             }
2026-06-17T06:47:31.7672018Z           ]
2026-06-17T06:47:31.7672270Z         },
2026-06-17T06:47:31.7672523Z         "impl": {
2026-06-17T06:47:31.7672796Z           "complete": true,
2026-06-17T06:47:31.7673058Z           "evidence": [
2026-06-17T06:47:31.7673301Z             {
2026-06-17T06:47:31.7673645Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-17T06:47:31.7673906Z               "line": 505
2026-06-17T06:47:31.7674190Z             },
2026-06-17T06:47:31.7674465Z             {
2026-06-17T06:47:31.7674827Z               "path": "crates/spt-live/src/resume.rs",
2026-06-17T06:47:31.7675104Z               "line": 87
2026-06-17T06:47:31.7675376Z             },
2026-06-17T06:47:31.7675629Z             {
2026-06-17T06:47:31.7676006Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-17T06:47:31.7676268Z               "line": 81
2026-06-17T06:47:31.7676522Z             },
2026-06-17T06:47:31.7676769Z             {
2026-06-17T06:47:31.7677139Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-17T06:47:31.7677408Z               "line": 166
2026-06-17T06:47:31.7677656Z             },
2026-06-17T06:47:31.7677900Z             {
2026-06-17T06:47:31.7678215Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7678477Z               "line": 1501
2026-06-17T06:47:31.7678725Z             }
2026-06-17T06:47:31.7679045Z           ]
2026-06-17T06:47:31.7679292Z         },
2026-06-17T06:47:31.7679549Z         "int": {
2026-06-17T06:47:31.7679828Z           "complete": false,
2026-06-17T06:47:31.7680095Z           "evidence": []
2026-06-17T06:47:31.7680338Z         },
2026-06-17T06:47:31.7680590Z         "unit": {
2026-06-17T06:47:31.7680862Z           "complete": true,
2026-06-17T06:47:31.7681115Z           "evidence": [
2026-06-17T06:47:31.7681359Z             {
2026-06-17T06:47:31.7681702Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-17T06:47:31.7681965Z               "line": 623
2026-06-17T06:47:31.7682208Z             },
2026-06-17T06:47:31.7682458Z             {
2026-06-17T06:47:31.7682801Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-17T06:47:31.7683060Z               "line": 212
2026-06-17T06:47:31.7683322Z             },
2026-06-17T06:47:31.7683561Z             {
2026-06-17T06:47:31.7683895Z               "path": "crates/spt-live/src/resume.rs",
2026-06-17T06:47:31.7684157Z               "line": 307
2026-06-17T06:47:31.7684403Z             },
2026-06-17T06:47:31.7684656Z             {
2026-06-17T06:47:31.7685068Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7685339Z               "line": 7055
2026-06-17T06:47:31.7685589Z             },
2026-06-17T06:47:31.7685837Z             {
2026-06-17T06:47:31.7686147Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7686413Z               "line": 7082
2026-06-17T06:47:31.7686661Z             }
2026-06-17T06:47:31.7686914Z           ]
2026-06-17T06:47:31.7687166Z         }
2026-06-17T06:47:31.7687416Z       }
2026-06-17T06:47:31.7687661Z     },
2026-06-17T06:47:31.7688016Z     {
2026-06-17T06:47:31.7688288Z       "id": "REQ-FRONT-1",
2026-06-17T06:47:31.7688822Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-17T06:47:31.7689156Z       "requiredStages": [],
2026-06-17T06:47:31.7689423Z       "stages": {
2026-06-17T06:47:31.7689681Z         "doc": {
2026-06-17T06:47:31.7689982Z           "complete": false,
2026-06-17T06:47:31.7690276Z           "evidence": []
2026-06-17T06:47:31.7690550Z         },
2026-06-17T06:47:31.7690825Z         "impl": {
2026-06-17T06:47:31.7691126Z           "complete": false,
2026-06-17T06:47:31.7691427Z           "evidence": []
2026-06-17T06:47:31.7691670Z         },
2026-06-17T06:47:31.7691928Z         "int": {
2026-06-17T06:47:31.7692206Z           "complete": false,
2026-06-17T06:47:31.7692472Z           "evidence": []
2026-06-17T06:47:31.7692729Z         },
2026-06-17T06:47:31.7692986Z         "unit": {
2026-06-17T06:47:31.7693267Z           "complete": false,
2026-06-17T06:47:31.7693530Z           "evidence": []
2026-06-17T06:47:31.7693783Z         }
2026-06-17T06:47:31.7694034Z       }
2026-06-17T06:47:31.7694273Z     },
2026-06-17T06:47:31.7694530Z     {
2026-06-17T06:47:31.7694869Z       "id": "REQ-HAZARD-BRAIN-RESPAWN-PATH",
2026-06-17T06:47:31.7701902Z       "title": "The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.",
2026-06-17T06:47:31.7702202Z       "requiredStages": [
2026-06-17T06:47:31.7702460Z         "doc",
2026-06-17T06:47:31.7702703Z         "impl",
2026-06-17T06:47:31.7702960Z         "unit",
2026-06-17T06:47:31.7703203Z         "int"
2026-06-17T06:47:31.7703461Z       ],
2026-06-17T06:47:31.7703718Z       "stages": {
2026-06-17T06:47:31.7703970Z         "doc": {
2026-06-17T06:47:31.7704241Z           "complete": true,
2026-06-17T06:47:31.7704504Z           "evidence": [
2026-06-17T06:47:31.7704785Z             {
2026-06-17T06:47:31.7705124Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-17T06:47:31.7705405Z               "line": 333
2026-06-17T06:47:31.7705678Z             }
2026-06-17T06:47:31.7705957Z           ]
2026-06-17T06:47:31.7706236Z         },
2026-06-17T06:47:31.7706512Z         "impl": {
2026-06-17T06:47:31.7706812Z           "complete": true,
2026-06-17T06:47:31.7707094Z           "evidence": [
2026-06-17T06:47:31.7707371Z             {
2026-06-17T06:47:31.7707752Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7708034Z               "line": 494
2026-06-17T06:47:31.7708315Z             },
2026-06-17T06:47:31.7708583Z             {
2026-06-17T06:47:31.7709026Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7709290Z               "line": 499
2026-06-17T06:47:31.7709547Z             },
2026-06-17T06:47:31.7709910Z             {
2026-06-17T06:47:31.7710281Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7710552Z               "line": 874
2026-06-17T06:47:31.7710802Z             },
2026-06-17T06:47:31.7711059Z             {
2026-06-17T06:47:31.7711429Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7711703Z               "line": 915
2026-06-17T06:47:31.7711960Z             },
2026-06-17T06:47:31.7712208Z             {
2026-06-17T06:47:31.7712576Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7712943Z               "line": 926
2026-06-17T06:47:31.7713200Z             },
2026-06-17T06:47:31.7713448Z             {
2026-06-17T06:47:31.7713816Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:31.7714068Z               "line": 358
2026-06-17T06:47:31.7714316Z             }
2026-06-17T06:47:31.7714563Z           ]
2026-06-17T06:47:31.7714811Z         },
2026-06-17T06:47:31.7715073Z         "int": {
2026-06-17T06:47:31.7715345Z           "complete": true,
2026-06-17T06:47:31.7715608Z           "evidence": [
2026-06-17T06:47:31.7715857Z             {
2026-06-17T06:47:31.7716242Z               "path": "crates/spt/tests/brain_respawn_rename.rs",
2026-06-17T06:47:31.7716508Z               "line": 30
2026-06-17T06:47:31.7716753Z             }
2026-06-17T06:47:31.7717006Z           ]
2026-06-17T06:47:31.7717250Z         },
2026-06-17T06:47:31.7717493Z         "unit": {
2026-06-17T06:47:31.7717765Z           "complete": true,
2026-06-17T06:47:31.7718026Z           "evidence": [
2026-06-17T06:47:31.7718284Z             {
2026-06-17T06:47:31.7718646Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7718908Z               "line": 1467
2026-06-17T06:47:31.7719241Z             },
2026-06-17T06:47:31.7719493Z             {
2026-06-17T06:47:31.7719859Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7720107Z               "line": 1492
2026-06-17T06:47:31.7720355Z             },
2026-06-17T06:47:31.7720603Z             {
2026-06-17T06:47:31.7720966Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7721227Z               "line": 1509
2026-06-17T06:47:31.7721470Z             },
2026-06-17T06:47:31.7721728Z             {
2026-06-17T06:47:31.7722083Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7722335Z               "line": 1552
2026-06-17T06:47:31.7722588Z             }
2026-06-17T06:47:31.7722835Z           ]
2026-06-17T06:47:31.7723079Z         }
2026-06-17T06:47:31.7723326Z       }
2026-06-17T06:47:31.7723586Z     },
2026-06-17T06:47:31.7723828Z     {
2026-06-17T06:47:31.7724186Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-06-17T06:47:31.7731264Z       "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-17T06:47:31.7731545Z       "requiredStages": [
2026-06-17T06:47:31.7731807Z         "doc",
2026-06-17T06:47:31.7732060Z         "impl",
2026-06-17T06:47:31.7732307Z         "unit",
2026-06-17T06:47:31.7732564Z         "int"
2026-06-17T06:47:31.7732805Z       ],
2026-06-17T06:47:31.7733071Z       "stages": {
2026-06-17T06:47:31.7733329Z         "doc": {
2026-06-17T06:47:31.7733700Z           "complete": true,
2026-06-17T06:47:31.7733982Z           "evidence": [
2026-06-17T06:47:31.7734220Z             {
2026-06-17T06:47:31.7734535Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-17T06:47:31.7734794Z               "line": 302
2026-06-17T06:47:31.7735047Z             }
2026-06-17T06:47:31.7735297Z           ]
2026-06-17T06:47:31.7735550Z         },
2026-06-17T06:47:31.7735803Z         "impl": {
2026-06-17T06:47:31.7736071Z           "complete": true,
2026-06-17T06:47:31.7736328Z           "evidence": [
2026-06-17T06:47:31.7736681Z             {
2026-06-17T06:47:31.7737062Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-17T06:47:31.7737330Z               "line": 108
2026-06-17T06:47:31.7737590Z             },
2026-06-17T06:47:31.7737849Z             {
2026-06-17T06:47:31.7738197Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-17T06:47:31.7738474Z               "line": 794
2026-06-17T06:47:31.7738713Z             },
2026-06-17T06:47:31.7739051Z             {
2026-06-17T06:47:31.7739418Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-17T06:47:31.7739685Z               "line": 994
2026-06-17T06:47:31.7739934Z             },
2026-06-17T06:47:31.7740178Z             {
2026-06-17T06:47:31.7740543Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7740793Z               "line": 23
2026-06-17T06:47:31.7741050Z             },
2026-06-17T06:47:31.7741299Z             {
2026-06-17T06:47:31.7741670Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7741928Z               "line": 113
2026-06-17T06:47:31.7742172Z             },
2026-06-17T06:47:31.7742411Z             {
2026-06-17T06:47:31.7742768Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7743038Z               "line": 158
2026-06-17T06:47:31.7743293Z             },
2026-06-17T06:47:31.7743537Z             {
2026-06-17T06:47:31.7743912Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7744171Z               "line": 218
2026-06-17T06:47:31.7744429Z             },
2026-06-17T06:47:31.7744667Z             {
2026-06-17T06:47:31.7745044Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7745302Z               "line": 261
2026-06-17T06:47:31.7745559Z             },
2026-06-17T06:47:31.7745805Z             {
2026-06-17T06:47:31.7746172Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7746434Z               "line": 275
2026-06-17T06:47:31.7746692Z             },
2026-06-17T06:47:31.7746950Z             {
2026-06-17T06:47:31.7747317Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7747575Z               "line": 320
2026-06-17T06:47:31.7747822Z             },
2026-06-17T06:47:31.7748064Z             {
2026-06-17T06:47:31.7748428Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7748691Z               "line": 347
2026-06-17T06:47:31.7749010Z             },
2026-06-17T06:47:31.7749274Z             {
2026-06-17T06:47:31.7749635Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7749893Z               "line": 359
2026-06-17T06:47:31.7750142Z             },
2026-06-17T06:47:31.7750404Z             {
2026-06-17T06:47:31.7750772Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7751041Z               "line": 373
2026-06-17T06:47:31.7751291Z             },
2026-06-17T06:47:31.7751539Z             {
2026-06-17T06:47:31.7751906Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7752174Z               "line": 400
2026-06-17T06:47:31.7752426Z             },
2026-06-17T06:47:31.7752676Z             {
2026-06-17T06:47:31.7753037Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7753315Z               "line": 643
2026-06-17T06:47:31.7753555Z             },
2026-06-17T06:47:31.7753815Z             {
2026-06-17T06:47:31.7754293Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7754569Z               "line": 972
2026-06-17T06:47:31.7754830Z             },
2026-06-17T06:47:31.7755088Z             {
2026-06-17T06:47:31.7755445Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:31.7755703Z               "line": 178
2026-06-17T06:47:31.7755961Z             },
2026-06-17T06:47:31.7756219Z             {
2026-06-17T06:47:31.7756580Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:31.7756847Z               "line": 590
2026-06-17T06:47:31.7757205Z             },
2026-06-17T06:47:31.7757453Z             {
2026-06-17T06:47:31.7757806Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:31.7758073Z               "line": 662
2026-06-17T06:47:31.7758324Z             },
2026-06-17T06:47:31.7758586Z             {
2026-06-17T06:47:31.7759007Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:31.7759270Z               "line": 674
2026-06-17T06:47:31.7759533Z             },
2026-06-17T06:47:31.7759772Z             {
2026-06-17T06:47:31.7760129Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:31.7760387Z               "line": 1084
2026-06-17T06:47:31.7760640Z             },
2026-06-17T06:47:31.7760891Z             {
2026-06-17T06:47:31.7761231Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:31.7761501Z               "line": 183
2026-06-17T06:47:31.7764848Z             },
2026-06-17T06:47:31.7765139Z             {
2026-06-17T06:47:31.7765501Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:31.7765788Z               "line": 260
2026-06-17T06:47:31.7766039Z             },
2026-06-17T06:47:31.7766292Z             {
2026-06-17T06:47:31.7766674Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:31.7766944Z               "line": 271
2026-06-17T06:47:31.7767193Z             },
2026-06-17T06:47:31.7767436Z             {
2026-06-17T06:47:31.7767789Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:31.7768070Z               "line": 297
2026-06-17T06:47:31.7768328Z             },
2026-06-17T06:47:31.7768584Z             {
2026-06-17T06:47:31.7769039Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-17T06:47:31.7769313Z               "line": 56
2026-06-17T06:47:31.7769746Z             },
2026-06-17T06:47:31.7770022Z             {
2026-06-17T06:47:31.7770374Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-17T06:47:31.7770637Z               "line": 188
2026-06-17T06:47:31.7770890Z             },
2026-06-17T06:47:31.7771137Z             {
2026-06-17T06:47:31.7771490Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-17T06:47:31.7771747Z               "line": 82
2026-06-17T06:47:31.7771995Z             },
2026-06-17T06:47:31.7772256Z             {
2026-06-17T06:47:31.7772622Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.7772889Z               "line": 283
2026-06-17T06:47:31.7773137Z             },
2026-06-17T06:47:31.7773384Z             {
2026-06-17T06:47:31.7773727Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:31.7773985Z               "line": 424
2026-06-17T06:47:31.7774242Z             },
2026-06-17T06:47:31.7774501Z             {
2026-06-17T06:47:31.7774818Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.7775093Z               "line": 1812
2026-06-17T06:47:31.7775346Z             }
2026-06-17T06:47:31.7775588Z           ]
2026-06-17T06:47:31.7775903Z         },
2026-06-17T06:47:31.7776227Z         "int": {
2026-06-17T06:47:31.7776495Z           "complete": true,
2026-06-17T06:47:31.7776757Z           "evidence": [
2026-06-17T06:47:31.7777002Z             {
2026-06-17T06:47:31.7777363Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-17T06:47:31.7777629Z               "line": 57
2026-06-17T06:47:31.7777871Z             },
2026-06-17T06:47:31.7778134Z             {
2026-06-17T06:47:31.7778616Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-17T06:47:31.7778898Z               "line": 41
2026-06-17T06:47:31.7779288Z             }
2026-06-17T06:47:31.7779594Z           ]
2026-06-17T06:47:31.7779840Z         },
2026-06-17T06:47:31.7780085Z         "unit": {
2026-06-17T06:47:31.7780357Z           "complete": true,
2026-06-17T06:47:31.7780615Z           "evidence": [
2026-06-17T06:47:31.7780864Z             {
2026-06-17T06:47:31.7781226Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-17T06:47:31.7781478Z               "line": 532
2026-06-17T06:47:31.7781817Z             },
2026-06-17T06:47:31.7782075Z             {
2026-06-17T06:47:31.7782452Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-17T06:47:31.7782712Z               "line": 755
2026-06-17T06:47:31.7782967Z             },
2026-06-17T06:47:31.7783211Z             {
2026-06-17T06:47:31.7783563Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7783821Z               "line": 1041
2026-06-17T06:47:31.7784069Z             },
2026-06-17T06:47:31.7784317Z             {
2026-06-17T06:47:31.7784685Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7784947Z               "line": 1075
2026-06-17T06:47:31.7785193Z             },
2026-06-17T06:47:31.7785439Z             {
2026-06-17T06:47:31.7785801Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7786068Z               "line": 1117
2026-06-17T06:47:31.7786316Z             },
2026-06-17T06:47:31.7786564Z             {
2026-06-17T06:47:31.7786932Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7787189Z               "line": 1189
2026-06-17T06:47:31.7787426Z             },
2026-06-17T06:47:31.7787679Z             {
2026-06-17T06:47:31.7788031Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7788290Z               "line": 1202
2026-06-17T06:47:31.7788547Z             },
2026-06-17T06:47:31.7788794Z             {
2026-06-17T06:47:31.7789262Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7789539Z               "line": 1225
2026-06-17T06:47:31.7789792Z             },
2026-06-17T06:47:31.7790034Z             {
2026-06-17T06:47:31.7790400Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7790669Z               "line": 1251
2026-06-17T06:47:31.7790903Z             },
2026-06-17T06:47:31.7791152Z             {
2026-06-17T06:47:31.7791509Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7791781Z               "line": 1265
2026-06-17T06:47:31.7792030Z             },
2026-06-17T06:47:31.7792276Z             {
2026-06-17T06:47:31.7792625Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7792886Z               "line": 1289
2026-06-17T06:47:31.7793134Z             },
2026-06-17T06:47:31.7793372Z             {
2026-06-17T06:47:31.7793738Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7794000Z               "line": 1421
2026-06-17T06:47:31.7794248Z             },
2026-06-17T06:47:31.7794494Z             {
2026-06-17T06:47:31.7794848Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7795105Z               "line": 1597
2026-06-17T06:47:31.7795357Z             },
2026-06-17T06:47:31.7795607Z             {
2026-06-17T06:47:31.7795962Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7796228Z               "line": 1652
2026-06-17T06:47:31.7796475Z             },
2026-06-17T06:47:31.7796732Z             {
2026-06-17T06:47:31.7797124Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7797414Z               "line": 1698
2026-06-17T06:47:31.7797681Z             },
2026-06-17T06:47:31.7797924Z             {
2026-06-17T06:47:31.7798287Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7798558Z               "line": 1743
2026-06-17T06:47:31.7798802Z             },
2026-06-17T06:47:31.7799211Z             {
2026-06-17T06:47:31.7799602Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7799865Z               "line": 1787
2026-06-17T06:47:31.7800113Z             },
2026-06-17T06:47:31.7800362Z             {
2026-06-17T06:47:31.7800723Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.7800989Z               "line": 1829
2026-06-17T06:47:31.7801248Z             },
2026-06-17T06:47:31.7801487Z             {
2026-06-17T06:47:31.7801835Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:31.7802202Z               "line": 1418
2026-06-17T06:47:31.7802460Z             },
2026-06-17T06:47:31.7802713Z             {
2026-06-17T06:47:31.7803094Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-17T06:47:31.7803380Z               "line": 217
2026-06-17T06:47:31.7803699Z             },
2026-06-17T06:47:31.7803946Z             {
2026-06-17T06:47:31.7804312Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-17T06:47:31.7804607Z               "line": 233
2026-06-17T06:47:31.7804894Z             },
2026-06-17T06:47:31.7805151Z             {
2026-06-17T06:47:31.7805509Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-17T06:47:31.7805767Z               "line": 254
2026-06-17T06:47:31.7806023Z             },
2026-06-17T06:47:31.7806279Z             {
2026-06-17T06:47:31.7806649Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-17T06:47:31.7806916Z               "line": 265
2026-06-17T06:47:31.7807184Z             },
2026-06-17T06:47:31.7807432Z             {
2026-06-17T06:47:31.7807798Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-17T06:47:31.7808062Z               "line": 278
2026-06-17T06:47:31.7808314Z             },
2026-06-17T06:47:31.7808566Z             {
2026-06-17T06:47:31.7808919Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-17T06:47:31.7809261Z               "line": 289
2026-06-17T06:47:31.7809552Z             },
2026-06-17T06:47:31.7809809Z             {
2026-06-17T06:47:31.7810152Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-17T06:47:31.7810420Z               "line": 301
2026-06-17T06:47:31.7810663Z             },
2026-06-17T06:47:31.7810912Z             {
2026-06-17T06:47:31.7811270Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-17T06:47:31.7811520Z               "line": 312
2026-06-17T06:47:31.7811779Z             },
2026-06-17T06:47:31.7812028Z             {
2026-06-17T06:47:31.7812386Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-17T06:47:31.7812662Z               "line": 323
2026-06-17T06:47:31.7812906Z             },
2026-06-17T06:47:31.7813159Z             {
2026-06-17T06:47:31.7813531Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-17T06:47:31.7813799Z               "line": 332
2026-06-17T06:47:31.7814061Z             },
2026-06-17T06:47:31.7814311Z             {
2026-06-17T06:47:31.7814675Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-17T06:47:31.7814929Z               "line": 342
2026-06-17T06:47:31.7815172Z             },
2026-06-17T06:47:31.7815420Z             {
2026-06-17T06:47:31.7815773Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-17T06:47:31.7816031Z               "line": 358
2026-06-17T06:47:31.7816283Z             },
2026-06-17T06:47:31.7816531Z             {
2026-06-17T06:47:31.7816901Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.7817171Z               "line": 733
2026-06-17T06:47:31.7817434Z             },
2026-06-17T06:47:31.7817687Z             {
2026-06-17T06:47:31.7818058Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.7818316Z               "line": 769
2026-06-17T06:47:31.7818579Z             },
2026-06-17T06:47:31.7818811Z             {
2026-06-17T06:47:31.7819237Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:31.7819499Z               "line": 966
2026-06-17T06:47:31.7819860Z             },
2026-06-17T06:47:31.7820121Z             {
2026-06-17T06:47:31.7820475Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-17T06:47:31.7820756Z               "line": 143
2026-06-17T06:47:31.7821008Z             },
2026-06-17T06:47:31.7821256Z             {
2026-06-17T06:47:31.7821614Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-17T06:47:31.7821877Z               "line": 222
2026-06-17T06:47:31.7822133Z             },
2026-06-17T06:47:31.7822393Z             {
2026-06-17T06:47:31.7822946Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-17T06:47:31.7823213Z               "line": 291
2026-06-17T06:47:31.7823466Z             },
2026-06-17T06:47:31.7823710Z             {
2026-06-17T06:47:31.7824068Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-17T06:47:31.7824330Z               "line": 17
2026-06-17T06:47:31.7824582Z             },
2026-06-17T06:47:31.7824833Z             {
2026-06-17T06:47:31.7825184Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-17T06:47:31.7825465Z               "line": 104
2026-06-17T06:47:31.7825723Z             }
2026-06-17T06:47:31.7825976Z           ]
2026-06-17T06:47:31.7826233Z         }
2026-06-17T06:47:31.7826481Z       }
2026-06-17T06:47:31.7826728Z     },
2026-06-17T06:47:31.7826963Z     {
2026-06-17T06:47:31.7827306Z       "id": "REQ-HAZARD-BROKER-QUIC-DEADLINE",
2026-06-17T06:47:31.7836110Z       "title": "The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.",
2026-06-17T06:47:31.7836411Z       "requiredStages": [
2026-06-17T06:47:31.7836669Z         "doc",
2026-06-17T06:47:31.7836931Z         "impl",
2026-06-17T06:47:31.7837185Z         "unit",
2026-06-17T06:47:31.7837433Z         "int"
2026-06-17T06:47:31.7837680Z       ],
2026-06-17T06:47:31.7837937Z       "stages": {
2026-06-17T06:47:31.7838188Z         "doc": {
2026-06-17T06:47:31.7838463Z           "complete": true,
2026-06-17T06:47:31.7838735Z           "evidence": [
2026-06-17T06:47:31.7839045Z             {
2026-06-17T06:47:31.7839385Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-17T06:47:31.7839646Z               "line": 388
2026-06-17T06:47:31.7839903Z             }
2026-06-17T06:47:31.7840151Z           ]
2026-06-17T06:47:31.7840400Z         },
2026-06-17T06:47:31.7840658Z         "impl": {
2026-06-17T06:47:31.7840927Z           "complete": true,
2026-06-17T06:47:31.7841194Z           "evidence": [
2026-06-17T06:47:31.7841429Z             {
2026-06-17T06:47:31.7841791Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:31.7842057Z               "line": 773
2026-06-17T06:47:31.7842311Z             },
2026-06-17T06:47:31.7842564Z             {
2026-06-17T06:47:31.7842917Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:31.7843186Z               "line": 796
2026-06-17T06:47:31.7843442Z             }
2026-06-17T06:47:31.7843699Z           ]
2026-06-17T06:47:31.7843952Z         },
2026-06-17T06:47:31.7844201Z         "int": {
2026-06-17T06:47:31.7844467Z           "complete": true,
2026-06-17T06:47:31.7844839Z           "evidence": [
2026-06-17T06:47:31.7845111Z             {
2026-06-17T06:47:31.7845493Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-17T06:47:31.7845751Z               "line": 228
2026-06-17T06:47:31.7846006Z             },
2026-06-17T06:47:31.7846256Z             {
2026-06-17T06:47:31.7846623Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-17T06:47:31.7846891Z               "line": 468
2026-06-17T06:47:31.7847158Z             }
2026-06-17T06:47:31.7847402Z           ]
2026-06-17T06:47:31.7847754Z         },
2026-06-17T06:47:31.7848012Z         "unit": {
2026-06-17T06:47:31.7848278Z           "complete": true,
2026-06-17T06:47:31.7848549Z           "evidence": [
2026-06-17T06:47:31.7848804Z             {
2026-06-17T06:47:31.7849237Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:31.7849524Z               "line": 1495
2026-06-17T06:47:31.7849767Z             }
2026-06-17T06:47:31.7850025Z           ]
2026-06-17T06:47:31.7850279Z         }
2026-06-17T06:47:31.7850535Z       }
2026-06-17T06:47:31.7850783Z     },
2026-06-17T06:47:31.7851030Z     {
2026-06-17T06:47:31.7851354Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-17T06:47:31.7851879Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-17T06:47:31.7852165Z       "requiredStages": [
2026-06-17T06:47:31.7852412Z         "impl",
2026-06-17T06:47:31.7852675Z         "unit"
2026-06-17T06:47:31.7852923Z       ],
2026-06-17T06:47:31.7853200Z       "stages": {
2026-06-17T06:47:31.7853458Z         "doc": {
2026-06-17T06:47:31.7853736Z           "complete": false,
2026-06-17T06:47:31.7854002Z           "evidence": []
2026-06-17T06:47:31.7854240Z         },
2026-06-17T06:47:31.7854498Z         "impl": {
2026-06-17T06:47:31.7854775Z           "complete": true,
2026-06-17T06:47:31.7855037Z           "evidence": [
2026-06-17T06:47:31.7855284Z             {
2026-06-17T06:47:31.7855637Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:31.7855909Z               "line": 168
2026-06-17T06:47:31.7856152Z             },
2026-06-17T06:47:31.7856406Z             {
2026-06-17T06:47:31.7856742Z               "path": "crates/spt/src/api/worker.rs",
2026-06-17T06:47:31.7857007Z               "line": 18
2026-06-17T06:47:31.7857259Z             },
2026-06-17T06:47:31.7857502Z             {
2026-06-17T06:47:31.7857841Z               "path": "crates/spt/src/api/worker.rs",
2026-06-17T06:47:31.7858104Z               "line": 100
2026-06-17T06:47:31.7858361Z             }
2026-06-17T06:47:31.7858615Z           ]
2026-06-17T06:47:31.7858868Z         },
2026-06-17T06:47:31.7859200Z         "int": {
2026-06-17T06:47:31.7859487Z           "complete": false,
2026-06-17T06:47:31.7859764Z           "evidence": []
2026-06-17T06:47:31.7860013Z         },
2026-06-17T06:47:31.7860270Z         "unit": {
2026-06-17T06:47:31.7860538Z           "complete": true,
2026-06-17T06:47:31.7860800Z           "evidence": [
2026-06-17T06:47:31.7861042Z             {
2026-06-17T06:47:31.7861410Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:31.7861677Z               "line": 853
2026-06-17T06:47:31.7861914Z             },
2026-06-17T06:47:31.7862158Z             {
2026-06-17T06:47:31.7862482Z               "path": "crates/spt/src/api/worker.rs",
2026-06-17T06:47:31.7862764Z               "line": 161
2026-06-17T06:47:31.7863016Z             },
2026-06-17T06:47:31.7863258Z             {
2026-06-17T06:47:31.7863597Z               "path": "crates/spt/src/api/worker.rs",
2026-06-17T06:47:31.7863859Z               "line": 233
2026-06-17T06:47:31.7864103Z             }
2026-06-17T06:47:31.7864350Z           ]
2026-06-17T06:47:31.7864604Z         }
2026-06-17T06:47:31.7864848Z       }
2026-06-17T06:47:31.7865101Z     },
2026-06-17T06:47:31.7865345Z     {
2026-06-17T06:47:31.7865669Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-17T06:47:31.7867088Z       "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-17T06:47:31.7867372Z       "requiredStages": [
2026-06-17T06:47:31.7867639Z         "impl",
2026-06-17T06:47:31.7867897Z         "unit"
2026-06-17T06:47:31.7868139Z       ],
2026-06-17T06:47:31.7868415Z       "stages": {
2026-06-17T06:47:31.7868665Z         "doc": {
2026-06-17T06:47:31.7869035Z           "complete": true,
2026-06-17T06:47:31.7869307Z           "evidence": [
2026-06-17T06:47:31.7869584Z             {
2026-06-17T06:47:31.7869892Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-17T06:47:31.7870253Z               "line": 220
2026-06-17T06:47:31.7870502Z             }
2026-06-17T06:47:31.7870760Z           ]
2026-06-17T06:47:31.7871006Z         },
2026-06-17T06:47:31.7871263Z         "impl": {
2026-06-17T06:47:31.7871541Z           "complete": true,
2026-06-17T06:47:31.7871807Z           "evidence": [
2026-06-17T06:47:31.7872057Z             {
2026-06-17T06:47:31.7872423Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-17T06:47:31.7872689Z               "line": 312
2026-06-17T06:47:31.7872936Z             },
2026-06-17T06:47:31.7873184Z             {
2026-06-17T06:47:31.7873556Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:31.7873828Z               "line": 331
2026-06-17T06:47:31.7874076Z             },
2026-06-17T06:47:31.7874329Z             {
2026-06-17T06:47:31.7874682Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:31.7874938Z               "line": 536
2026-06-17T06:47:31.7875198Z             },
2026-06-17T06:47:31.7875450Z             {
2026-06-17T06:47:31.7875798Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-17T06:47:31.7876052Z               "line": 77
2026-06-17T06:47:31.7876309Z             }
2026-06-17T06:47:31.7876558Z           ]
2026-06-17T06:47:31.7876811Z         },
2026-06-17T06:47:31.7877067Z         "int": {
2026-06-17T06:47:31.7877344Z           "complete": false,
2026-06-17T06:47:31.7877615Z           "evidence": []
2026-06-17T06:47:31.7877857Z         },
2026-06-17T06:47:31.7878109Z         "unit": {
2026-06-17T06:47:31.7878366Z           "complete": true,
2026-06-17T06:47:31.7878637Z           "evidence": [
2026-06-17T06:47:31.7878886Z             {
2026-06-17T06:47:31.7879343Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:31.7879629Z               "line": 705
2026-06-17T06:47:31.7879882Z             },
2026-06-17T06:47:31.7880135Z             {
2026-06-17T06:47:31.7880494Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:31.7880767Z               "line": 743
2026-06-17T06:47:31.7881015Z             },
2026-06-17T06:47:31.7881271Z             {
2026-06-17T06:47:31.7881610Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-17T06:47:31.7881877Z               "line": 166
2026-06-17T06:47:31.7882129Z             }
2026-06-17T06:47:31.7882368Z           ]
2026-06-17T06:47:31.7882627Z         }
2026-06-17T06:47:31.7882875Z       }
2026-06-17T06:47:31.7883130Z     },
2026-06-17T06:47:31.7883368Z     {
2026-06-17T06:47:31.7883711Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-17T06:47:31.7885432Z       "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-17T06:47:31.7885710Z       "requiredStages": [
2026-06-17T06:47:31.7885973Z         "impl",
2026-06-17T06:47:31.7886226Z         "unit"
2026-06-17T06:47:31.7886474Z       ],
2026-06-17T06:47:31.7886732Z       "stages": {
2026-06-17T06:47:31.7886979Z         "doc": {
2026-06-17T06:47:31.7887251Z           "complete": false,
2026-06-17T06:47:31.7887513Z           "evidence": []
2026-06-17T06:47:31.7887757Z         },
2026-06-17T06:47:31.7888010Z         "impl": {
2026-06-17T06:47:31.7888284Z           "complete": true,
2026-06-17T06:47:31.7888549Z           "evidence": [
2026-06-17T06:47:31.7888901Z             {
2026-06-17T06:47:31.7889375Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-17T06:47:31.7889680Z               "line": 22
2026-06-17T06:47:31.7889938Z             },
2026-06-17T06:47:31.7890199Z             {
2026-06-17T06:47:31.7890543Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-17T06:47:31.7890808Z               "line": 487
2026-06-17T06:47:31.7891059Z             },
2026-06-17T06:47:31.7891322Z             {
2026-06-17T06:47:31.7891670Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-17T06:47:31.7892037Z               "line": 17
2026-06-17T06:47:31.7892284Z             },
2026-06-17T06:47:31.7892543Z             {
2026-06-17T06:47:31.7892900Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-17T06:47:31.7893158Z               "line": 147
2026-06-17T06:47:31.7893401Z             },
2026-06-17T06:47:31.7893652Z             {
2026-06-17T06:47:31.7894033Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-17T06:47:31.7894309Z               "line": 226
2026-06-17T06:47:31.7894563Z             },
2026-06-17T06:47:31.7894811Z             {
2026-06-17T06:47:31.7895187Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-17T06:47:31.7895478Z               "line": 251
2026-06-17T06:47:31.7895751Z             },
2026-06-17T06:47:31.7896006Z             {
2026-06-17T06:47:31.7896390Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-17T06:47:31.7896647Z               "line": 277
2026-06-17T06:47:31.7896900Z             },
2026-06-17T06:47:31.7897152Z             {
2026-06-17T06:47:31.7897515Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-17T06:47:31.7897768Z               "line": 124
2026-06-17T06:47:31.7898012Z             },
2026-06-17T06:47:31.7898251Z             {
2026-06-17T06:47:31.7898609Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-17T06:47:31.7898873Z               "line": 224
2026-06-17T06:47:31.7899200Z             }
2026-06-17T06:47:31.7899486Z           ]
2026-06-17T06:47:31.7899748Z         },
2026-06-17T06:47:31.7900006Z         "int": {
2026-06-17T06:47:31.7900278Z           "complete": false,
2026-06-17T06:47:31.7900531Z           "evidence": []
2026-06-17T06:47:31.7900784Z         },
2026-06-17T06:47:31.7901031Z         "unit": {
2026-06-17T06:47:31.7901302Z           "complete": true,
2026-06-17T06:47:31.7901554Z           "evidence": [
2026-06-17T06:47:31.7901796Z             {
2026-06-17T06:47:31.7902159Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-17T06:47:31.7902426Z               "line": 63
2026-06-17T06:47:31.7902672Z             },
2026-06-17T06:47:31.7902916Z             {
2026-06-17T06:47:31.7903278Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-17T06:47:31.7903535Z               "line": 73
2026-06-17T06:47:31.7903784Z             },
2026-06-17T06:47:31.7904028Z             {
2026-06-17T06:47:31.7904384Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-17T06:47:31.7904651Z               "line": 85
2026-06-17T06:47:31.7904903Z             },
2026-06-17T06:47:31.7905161Z             {
2026-06-17T06:47:31.7905503Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-17T06:47:31.7905761Z               "line": 346
2026-06-17T06:47:31.7906015Z             },
2026-06-17T06:47:31.7906268Z             {
2026-06-17T06:47:31.7906619Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-17T06:47:31.7906874Z               "line": 281
2026-06-17T06:47:31.7907131Z             },
2026-06-17T06:47:31.7907384Z             {
2026-06-17T06:47:31.7907736Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-17T06:47:31.7908005Z               "line": 322
2026-06-17T06:47:31.7908248Z             },
2026-06-17T06:47:31.7908506Z             {
2026-06-17T06:47:31.7908868Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-17T06:47:31.7909202Z               "line": 360
2026-06-17T06:47:31.7909447Z             },
2026-06-17T06:47:31.7909799Z             {
2026-06-17T06:47:31.7910185Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-17T06:47:31.7910452Z               "line": 688
2026-06-17T06:47:31.7910709Z             },
2026-06-17T06:47:31.7910952Z             {
2026-06-17T06:47:31.7911319Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-17T06:47:31.7911582Z               "line": 397
2026-06-17T06:47:31.7911825Z             },
2026-06-17T06:47:31.7912081Z             {
2026-06-17T06:47:31.7912452Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-17T06:47:31.7912851Z               "line": 440
2026-06-17T06:47:31.7913100Z             }
2026-06-17T06:47:31.7913348Z           ]
2026-06-17T06:47:31.7913586Z         }
2026-06-17T06:47:31.7913824Z       }
2026-06-17T06:47:31.7914077Z     },
2026-06-17T06:47:31.7914312Z     {
2026-06-17T06:47:31.7914612Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-17T06:47:31.7915244Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-17T06:47:31.7915550Z       "requiredStages": [
2026-06-17T06:47:31.7915811Z         "impl",
2026-06-17T06:47:31.7916059Z         "unit"
2026-06-17T06:47:31.7916312Z       ],
2026-06-17T06:47:31.7916575Z       "stages": {
2026-06-17T06:47:31.7916833Z         "doc": {
2026-06-17T06:47:31.7917092Z           "complete": false,
2026-06-17T06:47:31.7917363Z           "evidence": []
2026-06-17T06:47:31.7917620Z         },
2026-06-17T06:47:31.7917868Z         "impl": {
2026-06-17T06:47:31.7918150Z           "complete": true,
2026-06-17T06:47:31.7918412Z           "evidence": [
2026-06-17T06:47:31.7918659Z             {
2026-06-17T06:47:31.7919085Z               "path": "crates/spt-term/src/reader.rs",
2026-06-17T06:47:31.7919357Z               "line": 169
2026-06-17T06:47:31.7919623Z             }
2026-06-17T06:47:31.7919865Z           ]
2026-06-17T06:47:31.7920107Z         },
2026-06-17T06:47:31.7920354Z         "int": {
2026-06-17T06:47:31.7920620Z           "complete": true,
2026-06-17T06:47:31.7920878Z           "evidence": [
2026-06-17T06:47:31.7921122Z             {
2026-06-17T06:47:31.7921455Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-17T06:47:31.7921713Z               "line": 44
2026-06-17T06:47:31.7921967Z             },
2026-06-17T06:47:31.7922204Z             {
2026-06-17T06:47:31.7922536Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-17T06:47:31.7922782Z               "line": 66
2026-06-17T06:47:31.7923040Z             }
2026-06-17T06:47:31.7923298Z           ]
2026-06-17T06:47:31.7923546Z         },
2026-06-17T06:47:31.7923792Z         "unit": {
2026-06-17T06:47:31.7924060Z           "complete": true,
2026-06-17T06:47:31.7924313Z           "evidence": [
2026-06-17T06:47:31.7924552Z             {
2026-06-17T06:47:31.7924895Z               "path": "crates/spt-term/src/reader.rs",
2026-06-17T06:47:31.7925172Z               "line": 186
2026-06-17T06:47:31.7925437Z             },
2026-06-17T06:47:31.7925713Z             {
2026-06-17T06:47:31.7926076Z               "path": "crates/spt-term/src/reader.rs",
2026-06-17T06:47:31.7926367Z               "line": 238
2026-06-17T06:47:31.7926634Z             },
2026-06-17T06:47:31.7926911Z             {
2026-06-17T06:47:31.7927273Z               "path": "crates/spt-term/src/reader.rs",
2026-06-17T06:47:31.7927558Z               "line": 266
2026-06-17T06:47:31.7927824Z             }
2026-06-17T06:47:31.7928090Z           ]
2026-06-17T06:47:31.7928371Z         }
2026-06-17T06:47:31.7928628Z       }
2026-06-17T06:47:31.7928904Z     },
2026-06-17T06:47:31.7929257Z     {
2026-06-17T06:47:31.7929631Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-17T06:47:31.7930923Z       "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-17T06:47:31.7931205Z       "requiredStages": [
2026-06-17T06:47:31.7931457Z         "impl",
2026-06-17T06:47:31.7931719Z         "unit",
2026-06-17T06:47:31.7932063Z         "int"
2026-06-17T06:47:31.7932329Z       ],
2026-06-17T06:47:31.7932588Z       "stages": {
2026-06-17T06:47:31.7932842Z         "doc": {
2026-06-17T06:47:31.7933120Z           "complete": false,
2026-06-17T06:47:31.7933399Z           "evidence": []
2026-06-17T06:47:31.7933652Z         },
2026-06-17T06:47:31.7933915Z         "impl": {
2026-06-17T06:47:31.7934191Z           "complete": true,
2026-06-17T06:47:31.7934459Z           "evidence": [
2026-06-17T06:47:31.7934711Z             {
2026-06-17T06:47:31.7935084Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.7935460Z               "line": 177
2026-06-17T06:47:31.7935704Z             },
2026-06-17T06:47:31.7935963Z             {
2026-06-17T06:47:31.7936346Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.7936617Z               "line": 201
2026-06-17T06:47:31.7936879Z             },
2026-06-17T06:47:31.7937132Z             {
2026-06-17T06:47:31.7937485Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-17T06:47:31.7937761Z               "line": 79
2026-06-17T06:47:31.7938001Z             },
2026-06-17T06:47:31.7938261Z             {
2026-06-17T06:47:31.7938578Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-17T06:47:31.7938850Z               "line": 52
2026-06-17T06:47:31.7939188Z             },
2026-06-17T06:47:31.7939440Z             {
2026-06-17T06:47:31.7939779Z               "path": "crates/spt-store/src/info.rs",
2026-06-17T06:47:31.7940037Z               "line": 240
2026-06-17T06:47:31.7940295Z             },
2026-06-17T06:47:31.7940548Z             {
2026-06-17T06:47:31.7940911Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-17T06:47:31.7941171Z               "line": 27
2026-06-17T06:47:31.7941416Z             },
2026-06-17T06:47:31.7941664Z             {
2026-06-17T06:47:31.7942007Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-17T06:47:31.7942270Z               "line": 79
2026-06-17T06:47:31.7942518Z             },
2026-06-17T06:47:31.7942772Z             {
2026-06-17T06:47:31.7943130Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-17T06:47:31.7943392Z               "line": 102
2026-06-17T06:47:31.7943637Z             },
2026-06-17T06:47:31.7943883Z             {
2026-06-17T06:47:31.7944250Z               "path": "crates/spt-store/src/registry.rs",
2026-06-17T06:47:31.7944508Z               "line": 116
2026-06-17T06:47:31.7944766Z             }
2026-06-17T06:47:31.7945014Z           ]
2026-06-17T06:47:31.7945261Z         },
2026-06-17T06:47:31.7945523Z         "int": {
2026-06-17T06:47:31.7945791Z           "complete": true,
2026-06-17T06:47:31.7946062Z           "evidence": [
2026-06-17T06:47:31.7946312Z             {
2026-06-17T06:47:31.7946692Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-17T06:47:31.7946949Z               "line": 43
2026-06-17T06:47:31.7947206Z             }
2026-06-17T06:47:31.7947458Z           ]
2026-06-17T06:47:31.7947702Z         },
2026-06-17T06:47:31.7947959Z         "unit": {
2026-06-17T06:47:31.7948222Z           "complete": true,
2026-06-17T06:47:31.7948484Z           "evidence": [
2026-06-17T06:47:31.7948735Z             {
2026-06-17T06:47:31.7949176Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.7949438Z               "line": 653
2026-06-17T06:47:31.7949695Z             },
2026-06-17T06:47:31.7949944Z             {
2026-06-17T06:47:31.7950264Z               "path": "crates/spt-store/src/info.rs",
2026-06-17T06:47:31.7950536Z               "line": 438
2026-06-17T06:47:31.7950784Z             },
2026-06-17T06:47:31.7951037Z             {
2026-06-17T06:47:31.7951386Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-17T06:47:31.7951645Z               "line": 124
2026-06-17T06:47:31.7951886Z             },
2026-06-17T06:47:31.7952140Z             {
2026-06-17T06:47:31.7952492Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-17T06:47:31.7952754Z               "line": 143
2026-06-17T06:47:31.7953116Z             },
2026-06-17T06:47:31.7953384Z             {
2026-06-17T06:47:31.7953736Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-17T06:47:31.7954000Z               "line": 160
2026-06-17T06:47:31.7954255Z             },
2026-06-17T06:47:31.7954515Z             {
2026-06-17T06:47:31.7954858Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-17T06:47:31.7955125Z               "line": 187
2026-06-17T06:47:31.7955374Z             },
2026-06-17T06:47:31.7955622Z             {
2026-06-17T06:47:31.7956093Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-17T06:47:31.7956365Z               "line": 206
2026-06-17T06:47:31.7956617Z             },
2026-06-17T06:47:31.7956877Z             {
2026-06-17T06:47:31.7957228Z               "path": "crates/spt-store/src/registry.rs",
2026-06-17T06:47:31.7962465Z               "line": 229
2026-06-17T06:47:31.7962771Z             }
2026-06-17T06:47:31.7963057Z           ]
2026-06-17T06:47:31.7963300Z         }
2026-06-17T06:47:31.7963563Z       }
2026-06-17T06:47:31.7963810Z     },
2026-06-17T06:47:31.7964053Z     {
2026-06-17T06:47:31.7964425Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-17T06:47:31.7966425Z       "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-17T06:47:31.7966706Z       "requiredStages": [
2026-06-17T06:47:31.7966958Z         "impl",
2026-06-17T06:47:31.7967210Z         "unit"
2026-06-17T06:47:31.7967465Z       ],
2026-06-17T06:47:31.7967711Z       "stages": {
2026-06-17T06:47:31.7967958Z         "doc": {
2026-06-17T06:47:31.7968230Z           "complete": false,
2026-06-17T06:47:31.7968484Z           "evidence": []
2026-06-17T06:47:31.7968727Z         },
2026-06-17T06:47:31.7969056Z         "impl": {
2026-06-17T06:47:31.7969324Z           "complete": true,
2026-06-17T06:47:31.7969580Z           "evidence": [
2026-06-17T06:47:31.7969832Z             {
2026-06-17T06:47:31.7970177Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:31.7970445Z               "line": 621
2026-06-17T06:47:31.7970679Z             },
2026-06-17T06:47:31.7970927Z             {
2026-06-17T06:47:31.7971275Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:31.7971537Z               "line": 834
2026-06-17T06:47:31.7971779Z             }
2026-06-17T06:47:31.7972018Z           ]
2026-06-17T06:47:31.7972266Z         },
2026-06-17T06:47:31.7972511Z         "int": {
2026-06-17T06:47:31.7972799Z           "complete": false,
2026-06-17T06:47:31.7973073Z           "evidence": []
2026-06-17T06:47:31.7973326Z         },
2026-06-17T06:47:31.7973574Z         "unit": {
2026-06-17T06:47:31.7973837Z           "complete": true,
2026-06-17T06:47:31.7974104Z           "evidence": [
2026-06-17T06:47:31.7974351Z             {
2026-06-17T06:47:31.7974739Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-17T06:47:31.7974995Z               "line": 161
2026-06-17T06:47:31.7975246Z             }
2026-06-17T06:47:31.7975493Z           ]
2026-06-17T06:47:31.7975740Z         }
2026-06-17T06:47:31.7975988Z       }
2026-06-17T06:47:31.7976235Z     },
2026-06-17T06:47:31.7976475Z     {
2026-06-17T06:47:31.7976784Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-17T06:47:31.7977329Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-17T06:47:31.7977601Z       "requiredStages": [
2026-06-17T06:47:31.7977852Z         "impl",
2026-06-17T06:47:31.7978109Z         "unit"
2026-06-17T06:47:31.7978348Z       ],
2026-06-17T06:47:31.7978600Z       "stages": {
2026-06-17T06:47:31.7978857Z         "doc": {
2026-06-17T06:47:31.7979201Z           "complete": false,
2026-06-17T06:47:31.7979477Z           "evidence": []
2026-06-17T06:47:31.7979721Z         },
2026-06-17T06:47:31.7979959Z         "impl": {
2026-06-17T06:47:31.7980540Z           "complete": true,
2026-06-17T06:47:31.7980823Z           "evidence": [
2026-06-17T06:47:31.7981080Z             {
2026-06-17T06:47:31.7981409Z               "path": "crates/spt-store/src/spool.rs",
2026-06-17T06:47:31.7981667Z               "line": 40
2026-06-17T06:47:31.7981921Z             },
2026-06-17T06:47:31.7982173Z             {
2026-06-17T06:47:31.7982502Z               "path": "crates/spt-store/src/spool.rs",
2026-06-17T06:47:31.7982771Z               "line": 103
2026-06-17T06:47:31.7983013Z             },
2026-06-17T06:47:31.7983364Z             {
2026-06-17T06:47:31.7983724Z               "path": "crates/spt-store/src/spool.rs",
2026-06-17T06:47:31.7984005Z               "line": 218
2026-06-17T06:47:31.7984257Z             },
2026-06-17T06:47:31.7984511Z             {
2026-06-17T06:47:31.7984859Z               "path": "crates/spt-store/src/spool.rs",
2026-06-17T06:47:31.7985121Z               "line": 323
2026-06-17T06:47:31.7985360Z             }
2026-06-17T06:47:31.7985613Z           ]
2026-06-17T06:47:31.7985863Z         },
2026-06-17T06:47:31.7986119Z         "int": {
2026-06-17T06:47:31.7986392Z           "complete": false,
2026-06-17T06:47:31.7986659Z           "evidence": []
2026-06-17T06:47:31.7986911Z         },
2026-06-17T06:47:31.7987163Z         "unit": {
2026-06-17T06:47:31.7987440Z           "complete": true,
2026-06-17T06:47:31.7987698Z           "evidence": [
2026-06-17T06:47:31.7987946Z             {
2026-06-17T06:47:31.7988284Z               "path": "crates/spt-store/src/spool.rs",
2026-06-17T06:47:31.7988547Z               "line": 361
2026-06-17T06:47:31.7988802Z             },
2026-06-17T06:47:31.7989122Z             {
2026-06-17T06:47:31.7989471Z               "path": "crates/spt-store/src/spool.rs",
2026-06-17T06:47:31.7989742Z               "line": 433
2026-06-17T06:47:31.7989994Z             },
2026-06-17T06:47:31.7990233Z             {
2026-06-17T06:47:31.7990576Z               "path": "crates/spt-store/src/spool.rs",
2026-06-17T06:47:31.7990835Z               "line": 496
2026-06-17T06:47:31.7991081Z             },
2026-06-17T06:47:31.7991330Z             {
2026-06-17T06:47:31.7991660Z               "path": "crates/spt-store/src/spool.rs",
2026-06-17T06:47:31.7991912Z               "line": 517
2026-06-17T06:47:31.7992162Z             }
2026-06-17T06:47:31.7992400Z           ]
2026-06-17T06:47:31.7992648Z         }
2026-06-17T06:47:31.7992890Z       }
2026-06-17T06:47:31.7993138Z     },
2026-06-17T06:47:31.7993373Z     {
2026-06-17T06:47:31.7993711Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-17T06:47:31.7994079Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-17T06:47:31.7994352Z       "requiredStages": [
2026-06-17T06:47:31.7994605Z         "impl",
2026-06-17T06:47:31.7994841Z         "unit"
2026-06-17T06:47:31.7995089Z       ],
2026-06-17T06:47:31.7995333Z       "stages": {
2026-06-17T06:47:31.7995578Z         "doc": {
2026-06-17T06:47:31.7995849Z           "complete": false,
2026-06-17T06:47:31.7996106Z           "evidence": []
2026-06-17T06:47:31.7996358Z         },
2026-06-17T06:47:31.7996604Z         "impl": {
2026-06-17T06:47:31.7996870Z           "complete": true,
2026-06-17T06:47:31.7997113Z           "evidence": [
2026-06-17T06:47:31.7997365Z             {
2026-06-17T06:47:31.7997699Z               "path": "crates/spt-store/src/spool.rs",
2026-06-17T06:47:31.7997962Z               "line": 116
2026-06-17T06:47:31.7998215Z             },
2026-06-17T06:47:31.7998449Z             {
2026-06-17T06:47:31.7998783Z               "path": "crates/spt-store/src/spool.rs",
2026-06-17T06:47:31.7999102Z               "line": 211
2026-06-17T06:47:31.7999362Z             }
2026-06-17T06:47:31.7999600Z           ]
2026-06-17T06:47:31.7999836Z         },
2026-06-17T06:47:31.8000084Z         "int": {
2026-06-17T06:47:31.8000351Z           "complete": false,
2026-06-17T06:47:31.8000612Z           "evidence": []
2026-06-17T06:47:31.8000855Z         },
2026-06-17T06:47:31.8001108Z         "unit": {
2026-06-17T06:47:31.8001366Z           "complete": true,
2026-06-17T06:47:31.8001749Z           "evidence": [
2026-06-17T06:47:31.8001997Z             {
2026-06-17T06:47:31.8002331Z               "path": "crates/spt-store/src/spool.rs",
2026-06-17T06:47:31.8002593Z               "line": 388
2026-06-17T06:47:31.8002830Z             },
2026-06-17T06:47:31.8003074Z             {
2026-06-17T06:47:31.8003408Z               "path": "crates/spt-store/src/spool.rs",
2026-06-17T06:47:31.8003660Z               "line": 469
2026-06-17T06:47:31.8003914Z             }
2026-06-17T06:47:31.8004153Z           ]
2026-06-17T06:47:31.8004503Z         }
2026-06-17T06:47:31.8004753Z       }
2026-06-17T06:47:31.8004997Z     },
2026-06-17T06:47:31.8005245Z     {
2026-06-17T06:47:31.8005589Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-17T06:47:31.8008690Z       "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-17T06:47:31.8009047Z       "requiredStages": [
2026-06-17T06:47:31.8009305Z         "impl",
2026-06-17T06:47:31.8009547Z         "unit"
2026-06-17T06:47:31.8009790Z       ],
2026-06-17T06:47:31.8010048Z       "stages": {
2026-06-17T06:47:31.8010300Z         "doc": {
2026-06-17T06:47:31.8010562Z           "complete": true,
2026-06-17T06:47:31.8010809Z           "evidence": [
2026-06-17T06:47:31.8011058Z             {
2026-06-17T06:47:31.8011367Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-17T06:47:31.8011626Z               "line": 206
2026-06-17T06:47:31.8011874Z             }
2026-06-17T06:47:31.8012115Z           ]
2026-06-17T06:47:31.8012361Z         },
2026-06-17T06:47:31.8012600Z         "impl": {
2026-06-17T06:47:31.8012882Z           "complete": true,
2026-06-17T06:47:31.8013139Z           "evidence": [
2026-06-17T06:47:31.8013385Z             {
2026-06-17T06:47:31.8013748Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:31.8014005Z               "line": 630
2026-06-17T06:47:31.8014253Z             },
2026-06-17T06:47:31.8014503Z             {
2026-06-17T06:47:31.8014850Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:31.8015121Z               "line": 722
2026-06-17T06:47:31.8015371Z             },
2026-06-17T06:47:31.8015623Z             {
2026-06-17T06:47:31.8015976Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-17T06:47:31.8016238Z               "line": 184
2026-06-17T06:47:31.8016472Z             }
2026-06-17T06:47:31.8016717Z           ]
2026-06-17T06:47:31.8016960Z         },
2026-06-17T06:47:31.8017216Z         "int": {
2026-06-17T06:47:31.8017487Z           "complete": false,
2026-06-17T06:47:31.8017748Z           "evidence": []
2026-06-17T06:47:31.8017981Z         },
2026-06-17T06:47:31.8018219Z         "unit": {
2026-06-17T06:47:31.8018495Z           "complete": true,
2026-06-17T06:47:31.8018748Z           "evidence": [
2026-06-17T06:47:31.8019068Z             {
2026-06-17T06:47:31.8019430Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:31.8019702Z               "line": 771
2026-06-17T06:47:31.8019945Z             },
2026-06-17T06:47:31.8020185Z             {
2026-06-17T06:47:31.8020555Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-17T06:47:31.8020807Z               "line": 44
2026-06-17T06:47:31.8021055Z             },
2026-06-17T06:47:31.8021303Z             {
2026-06-17T06:47:31.8021680Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-17T06:47:31.8021937Z               "line": 52
2026-06-17T06:47:31.8022171Z             },
2026-06-17T06:47:31.8022425Z             {
2026-06-17T06:47:31.8022761Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-17T06:47:31.8023011Z               "line": 57
2026-06-17T06:47:31.8023264Z             },
2026-06-17T06:47:31.8023503Z             {
2026-06-17T06:47:31.8023999Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-17T06:47:31.8024270Z               "line": 54
2026-06-17T06:47:31.8024514Z             }
2026-06-17T06:47:31.8024766Z           ]
2026-06-17T06:47:31.8025011Z         }
2026-06-17T06:47:31.8025258Z       }
2026-06-17T06:47:31.8025499Z     },
2026-06-17T06:47:31.8025746Z     {
2026-06-17T06:47:31.8026089Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-17T06:47:31.8026733Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-17T06:47:31.8027123Z       "requiredStages": [
2026-06-17T06:47:31.8027380Z         "impl",
2026-06-17T06:47:31.8027634Z         "unit"
2026-06-17T06:47:31.8027868Z       ],
2026-06-17T06:47:31.8028132Z       "stages": {
2026-06-17T06:47:31.8028379Z         "doc": {
2026-06-17T06:47:31.8028651Z           "complete": false,
2026-06-17T06:47:31.8028918Z           "evidence": []
2026-06-17T06:47:31.8029232Z         },
2026-06-17T06:47:31.8029491Z         "impl": {
2026-06-17T06:47:31.8029757Z           "complete": true,
2026-06-17T06:47:31.8030024Z           "evidence": [
2026-06-17T06:47:31.8030267Z             {
2026-06-17T06:47:31.8030610Z               "path": "crates/spt-live/src/context.rs",
2026-06-17T06:47:31.8030886Z               "line": 26
2026-06-17T06:47:31.8031134Z             },
2026-06-17T06:47:31.8031387Z             {
2026-06-17T06:47:31.8031717Z               "path": "crates/spt-live/src/context.rs",
2026-06-17T06:47:31.8031978Z               "line": 135
2026-06-17T06:47:31.8032230Z             },
2026-06-17T06:47:31.8032474Z             {
2026-06-17T06:47:31.8032864Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-17T06:47:31.8033117Z               "line": 26
2026-06-17T06:47:31.8033369Z             },
2026-06-17T06:47:31.8033615Z             {
2026-06-17T06:47:31.8033982Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-17T06:47:31.8034244Z               "line": 237
2026-06-17T06:47:31.8034501Z             }
2026-06-17T06:47:31.8034745Z           ]
2026-06-17T06:47:31.8034997Z         },
2026-06-17T06:47:31.8035246Z         "int": {
2026-06-17T06:47:31.8035518Z           "complete": false,
2026-06-17T06:47:31.8035794Z           "evidence": []
2026-06-17T06:47:31.8036036Z         },
2026-06-17T06:47:31.8036287Z         "unit": {
2026-06-17T06:47:31.8036569Z           "complete": true,
2026-06-17T06:47:31.8036830Z           "evidence": [
2026-06-17T06:47:31.8037082Z             {
2026-06-17T06:47:31.8037426Z               "path": "crates/spt-live/src/context.rs",
2026-06-17T06:47:31.8037692Z               "line": 161
2026-06-17T06:47:31.8037940Z             },
2026-06-17T06:47:31.8038180Z             {
2026-06-17T06:47:31.8038523Z               "path": "crates/spt-live/src/context.rs",
2026-06-17T06:47:31.8038784Z               "line": 170
2026-06-17T06:47:31.8039111Z             },
2026-06-17T06:47:31.8039353Z             {
2026-06-17T06:47:31.8039702Z               "path": "crates/spt-live/src/context.rs",
2026-06-17T06:47:31.8039964Z               "line": 179
2026-06-17T06:47:31.8040216Z             },
2026-06-17T06:47:31.8040469Z             {
2026-06-17T06:47:31.8040812Z               "path": "crates/spt-live/src/context.rs",
2026-06-17T06:47:31.8041075Z               "line": 190
2026-06-17T06:47:31.8041319Z             },
2026-06-17T06:47:31.8041574Z             {
2026-06-17T06:47:31.8041918Z               "path": "crates/spt-live/src/context.rs",
2026-06-17T06:47:31.8042185Z               "line": 199
2026-06-17T06:47:31.8042428Z             },
2026-06-17T06:47:31.8042671Z             {
2026-06-17T06:47:31.8043005Z               "path": "crates/spt-live/src/context.rs",
2026-06-17T06:47:31.8043264Z               "line": 216
2026-06-17T06:47:31.8043526Z             },
2026-06-17T06:47:31.8043767Z             {
2026-06-17T06:47:31.8044107Z               "path": "crates/spt-live/src/context.rs",
2026-06-17T06:47:31.8044361Z               "line": 242
2026-06-17T06:47:31.8044609Z             },
2026-06-17T06:47:31.8044966Z             {
2026-06-17T06:47:31.8045314Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-17T06:47:31.8045586Z               "line": 295
2026-06-17T06:47:31.8045849Z             },
2026-06-17T06:47:31.8046093Z             {
2026-06-17T06:47:31.8046441Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-17T06:47:31.8046701Z               "line": 244
2026-06-17T06:47:31.8046956Z             },
2026-06-17T06:47:31.8047200Z             {
2026-06-17T06:47:31.8047576Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-17T06:47:31.8047933Z               "line": 265
2026-06-17T06:47:31.8048172Z             },
2026-06-17T06:47:31.8048430Z             {
2026-06-17T06:47:31.8048792Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-17T06:47:31.8049139Z               "line": 293
2026-06-17T06:47:31.8049386Z             },
2026-06-17T06:47:31.8049637Z             {
2026-06-17T06:47:31.8050029Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-17T06:47:31.8050286Z               "line": 317
2026-06-17T06:47:31.8050529Z             },
2026-06-17T06:47:31.8050772Z             {
2026-06-17T06:47:31.8051139Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-17T06:47:31.8051392Z               "line": 327
2026-06-17T06:47:31.8051640Z             },
2026-06-17T06:47:31.8051889Z             {
2026-06-17T06:47:31.8052236Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-17T06:47:31.8052493Z               "line": 540
2026-06-17T06:47:31.8052745Z             }
2026-06-17T06:47:31.8052998Z           ]
2026-06-17T06:47:31.8053232Z         }
2026-06-17T06:47:31.8053476Z       }
2026-06-17T06:47:31.8053727Z     },
2026-06-17T06:47:31.8053970Z     {
2026-06-17T06:47:31.8054313Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-17T06:47:31.8054725Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-17T06:47:31.8055006Z       "requiredStages": [
2026-06-17T06:47:31.8055254Z         "impl",
2026-06-17T06:47:31.8055493Z         "unit"
2026-06-17T06:47:31.8055737Z       ],
2026-06-17T06:47:31.8055989Z       "stages": {
2026-06-17T06:47:31.8056251Z         "doc": {
2026-06-17T06:47:31.8056523Z           "complete": false,
2026-06-17T06:47:31.8056789Z           "evidence": []
2026-06-17T06:47:31.8057025Z         },
2026-06-17T06:47:31.8057304Z         "impl": {
2026-06-17T06:47:31.8057616Z           "complete": true,
2026-06-17T06:47:31.8057873Z           "evidence": [
2026-06-17T06:47:31.8058117Z             {
2026-06-17T06:47:31.8058427Z               "path": "crates/spt-live/src/echo.rs",
2026-06-17T06:47:31.8058689Z               "line": 25
2026-06-17T06:47:31.8058933Z             },
2026-06-17T06:47:31.8059276Z             {
2026-06-17T06:47:31.8059610Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-17T06:47:31.8059866Z               "line": 26
2026-06-17T06:47:31.8060111Z             },
2026-06-17T06:47:31.8060355Z             {
2026-06-17T06:47:31.8060698Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-17T06:47:31.8060951Z               "line": 159
2026-06-17T06:47:31.8061209Z             }
2026-06-17T06:47:31.8061452Z           ]
2026-06-17T06:47:31.8061694Z         },
2026-06-17T06:47:31.8061937Z         "int": {
2026-06-17T06:47:31.8062214Z           "complete": false,
2026-06-17T06:47:31.8062483Z           "evidence": []
2026-06-17T06:47:31.8062728Z         },
2026-06-17T06:47:31.8062976Z         "unit": {
2026-06-17T06:47:31.8063248Z           "complete": true,
2026-06-17T06:47:31.8063506Z           "evidence": [
2026-06-17T06:47:31.8063740Z             {
2026-06-17T06:47:31.8064065Z               "path": "crates/spt-live/src/echo.rs",
2026-06-17T06:47:31.8064327Z               "line": 188
2026-06-17T06:47:31.8064568Z             },
2026-06-17T06:47:31.8064816Z             {
2026-06-17T06:47:31.8065147Z               "path": "crates/spt-live/src/echo.rs",
2026-06-17T06:47:31.8065401Z               "line": 240
2026-06-17T06:47:31.8065653Z             },
2026-06-17T06:47:31.8066006Z             {
2026-06-17T06:47:31.8066354Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-17T06:47:31.8066607Z               "line": 186
2026-06-17T06:47:31.8066859Z             }
2026-06-17T06:47:31.8067111Z           ]
2026-06-17T06:47:31.8067364Z         }
2026-06-17T06:47:31.8067613Z       }
2026-06-17T06:47:31.8067859Z     },
2026-06-17T06:47:31.8068100Z     {
2026-06-17T06:47:31.8068400Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-17T06:47:31.8068883Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-17T06:47:31.8069387Z       "requiredStages": [
2026-06-17T06:47:31.8069645Z         "impl",
2026-06-17T06:47:31.8069898Z         "unit"
2026-06-17T06:47:31.8070147Z       ],
2026-06-17T06:47:31.8070411Z       "stages": {
2026-06-17T06:47:31.8070661Z         "doc": {
2026-06-17T06:47:31.8070939Z           "complete": false,
2026-06-17T06:47:31.8071202Z           "evidence": []
2026-06-17T06:47:31.8071454Z         },
2026-06-17T06:47:31.8071717Z         "impl": {
2026-06-17T06:47:31.8071988Z           "complete": true,
2026-06-17T06:47:31.8072250Z           "evidence": [
2026-06-17T06:47:31.8072497Z             {
2026-06-17T06:47:31.8072841Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-17T06:47:31.8073108Z               "line": 48
2026-06-17T06:47:31.8073341Z             },
2026-06-17T06:47:31.8073603Z             {
2026-06-17T06:47:31.8073943Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-17T06:47:31.8074204Z               "line": 55
2026-06-17T06:47:31.8074461Z             },
2026-06-17T06:47:31.8074709Z             {
2026-06-17T06:47:31.8075052Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-17T06:47:31.8075301Z               "line": 74
2026-06-17T06:47:31.8075552Z             },
2026-06-17T06:47:31.8075807Z             {
2026-06-17T06:47:31.8076155Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-17T06:47:31.8076422Z               "line": 91
2026-06-17T06:47:31.8076671Z             }
2026-06-17T06:47:31.8076923Z           ]
2026-06-17T06:47:31.8077167Z         },
2026-06-17T06:47:31.8077419Z         "int": {
2026-06-17T06:47:31.8077691Z           "complete": false,
2026-06-17T06:47:31.8077963Z           "evidence": []
2026-06-17T06:47:31.8078215Z         },
2026-06-17T06:47:31.8078472Z         "unit": {
2026-06-17T06:47:31.8078741Z           "complete": true,
2026-06-17T06:47:31.8079091Z           "evidence": [
2026-06-17T06:47:31.8079371Z             {
2026-06-17T06:47:31.8079720Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-17T06:47:31.8079986Z               "line": 149
2026-06-17T06:47:31.8080238Z             },
2026-06-17T06:47:31.8080486Z             {
2026-06-17T06:47:31.8080834Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-17T06:47:31.8081085Z               "line": 166
2026-06-17T06:47:31.8081346Z             },
2026-06-17T06:47:31.8081594Z             {
2026-06-17T06:47:31.8081938Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-17T06:47:31.8082214Z               "line": 176
2026-06-17T06:47:31.8082462Z             },
2026-06-17T06:47:31.8082710Z             {
2026-06-17T06:47:31.8083048Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-17T06:47:31.8083306Z               "line": 194
2026-06-17T06:47:31.8083556Z             },
2026-06-17T06:47:31.8083810Z             {
2026-06-17T06:47:31.8084153Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-17T06:47:31.8084425Z               "line": 207
2026-06-17T06:47:31.8084678Z             }
2026-06-17T06:47:31.8084927Z           ]
2026-06-17T06:47:31.8085180Z         }
2026-06-17T06:47:31.8085432Z       }
2026-06-17T06:47:31.8085684Z     },
2026-06-17T06:47:31.8085937Z     {
2026-06-17T06:47:31.8086268Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-17T06:47:31.8086817Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-17T06:47:31.8087093Z       "requiredStages": [
2026-06-17T06:47:31.8087479Z         "impl",
2026-06-17T06:47:31.8087722Z         "unit"
2026-06-17T06:47:31.8087979Z       ],
2026-06-17T06:47:31.8088232Z       "stages": {
2026-06-17T06:47:31.8088489Z         "doc": {
2026-06-17T06:47:31.8088757Z           "complete": false,
2026-06-17T06:47:31.8089088Z           "evidence": []
2026-06-17T06:47:31.8089345Z         },
2026-06-17T06:47:31.8089602Z         "impl": {
2026-06-17T06:47:31.8089878Z           "complete": true,
2026-06-17T06:47:31.8090131Z           "evidence": [
2026-06-17T06:47:31.8090379Z             {
2026-06-17T06:47:31.8090846Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.8091099Z               "line": 441
2026-06-17T06:47:31.8091356Z             },
2026-06-17T06:47:31.8091594Z             {
2026-06-17T06:47:31.8091936Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-17T06:47:31.8092188Z               "line": 26
2026-06-17T06:47:31.8092435Z             }
2026-06-17T06:47:31.8092683Z           ]
2026-06-17T06:47:31.8092927Z         },
2026-06-17T06:47:31.8093181Z         "int": {
2026-06-17T06:47:31.8093452Z           "complete": false,
2026-06-17T06:47:31.8093723Z           "evidence": []
2026-06-17T06:47:31.8093971Z         },
2026-06-17T06:47:31.8094214Z         "unit": {
2026-06-17T06:47:31.8094471Z           "complete": true,
2026-06-17T06:47:31.8094728Z           "evidence": [
2026-06-17T06:47:31.8094980Z             {
2026-06-17T06:47:31.8095314Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-17T06:47:31.8095577Z               "line": 150
2026-06-17T06:47:31.8095835Z             },
2026-06-17T06:47:31.8096074Z             {
2026-06-17T06:47:31.8096417Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-17T06:47:31.8096668Z               "line": 208
2026-06-17T06:47:31.8096913Z             }
2026-06-17T06:47:31.8097162Z           ]
2026-06-17T06:47:31.8097414Z         }
2026-06-17T06:47:31.8097658Z       }
2026-06-17T06:47:31.8097905Z     },
2026-06-17T06:47:31.8098153Z     {
2026-06-17T06:47:31.8098496Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-17T06:47:31.8102238Z       "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-17T06:47:31.8102525Z       "requiredStages": [
2026-06-17T06:47:31.8102768Z         "doc",
2026-06-17T06:47:31.8103014Z         "impl",
2026-06-17T06:47:31.8103262Z         "unit"
2026-06-17T06:47:31.8103520Z       ],
2026-06-17T06:47:31.8103774Z       "stages": {
2026-06-17T06:47:31.8104036Z         "doc": {
2026-06-17T06:47:31.8104308Z           "complete": true,
2026-06-17T06:47:31.8104565Z           "evidence": [
2026-06-17T06:47:31.8104811Z             {
2026-06-17T06:47:31.8105122Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-17T06:47:31.8105384Z               "line": 214
2026-06-17T06:47:31.8105628Z             }
2026-06-17T06:47:31.8105879Z           ]
2026-06-17T06:47:31.8106132Z         },
2026-06-17T06:47:31.8106380Z         "impl": {
2026-06-17T06:47:31.8106657Z           "complete": true,
2026-06-17T06:47:31.8106911Z           "evidence": [
2026-06-17T06:47:31.8107166Z             {
2026-06-17T06:47:31.8107516Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:31.8107783Z               "line": 56
2026-06-17T06:47:31.8108036Z             },
2026-06-17T06:47:31.8108285Z             {
2026-06-17T06:47:31.8108637Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:31.8108904Z               "line": 548
2026-06-17T06:47:31.8109219Z             },
2026-06-17T06:47:31.8109473Z             {
2026-06-17T06:47:31.8109849Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-17T06:47:31.8110208Z               "line": 36
2026-06-17T06:47:31.8110455Z             },
2026-06-17T06:47:31.8110707Z             {
2026-06-17T06:47:31.8111066Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-17T06:47:31.8111333Z               "line": 59
2026-06-17T06:47:31.8111576Z             },
2026-06-17T06:47:31.8111824Z             {
2026-06-17T06:47:31.8112180Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-17T06:47:31.8112435Z               "line": 83
2026-06-17T06:47:31.8112685Z             },
2026-06-17T06:47:31.8113017Z             {
2026-06-17T06:47:31.8113389Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-17T06:47:31.8113638Z               "line": 140
2026-06-17T06:47:31.8113885Z             },
2026-06-17T06:47:31.8114137Z             {
2026-06-17T06:47:31.8114485Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-17T06:47:31.8114748Z               "line": 159
2026-06-17T06:47:31.8114992Z             },
2026-06-17T06:47:31.8115240Z             {
2026-06-17T06:47:31.8115601Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-17T06:47:31.8115853Z               "line": 384
2026-06-17T06:47:31.8116101Z             },
2026-06-17T06:47:31.8116344Z             {
2026-06-17T06:47:31.8116711Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-17T06:47:31.8116974Z               "line": 526
2026-06-17T06:47:31.8117227Z             },
2026-06-17T06:47:31.8117476Z             {
2026-06-17T06:47:31.8117831Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-17T06:47:31.8118096Z               "line": 572
2026-06-17T06:47:31.8118343Z             },
2026-06-17T06:47:31.8118606Z             {
2026-06-17T06:47:31.8118930Z               "path": "crates/spt/src/elevation.rs",
2026-06-17T06:47:31.8119273Z               "line": 300
2026-06-17T06:47:31.8119536Z             },
2026-06-17T06:47:31.8119784Z             {
2026-06-17T06:47:31.8120094Z               "path": "crates/spt/src/main.rs",
2026-06-17T06:47:31.8120358Z               "line": 41
2026-06-17T06:47:31.8120602Z             }
2026-06-17T06:47:31.8120853Z           ]
2026-06-17T06:47:31.8121111Z         },
2026-06-17T06:47:31.8121359Z         "int": {
2026-06-17T06:47:31.8121636Z           "complete": false,
2026-06-17T06:47:31.8121898Z           "evidence": []
2026-06-17T06:47:31.8122136Z         },
2026-06-17T06:47:31.8122389Z         "unit": {
2026-06-17T06:47:31.8122657Z           "complete": true,
2026-06-17T06:47:31.8122919Z           "evidence": [
2026-06-17T06:47:31.8123160Z             {
2026-06-17T06:47:31.8123515Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-17T06:47:31.8123782Z               "line": 785
2026-06-17T06:47:31.8124049Z             },
2026-06-17T06:47:31.8124302Z             {
2026-06-17T06:47:31.8124670Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-17T06:47:31.8124941Z               "line": 826
2026-06-17T06:47:31.8125190Z             },
2026-06-17T06:47:31.8125438Z             {
2026-06-17T06:47:31.8125805Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-17T06:47:31.8126060Z               "line": 900
2026-06-17T06:47:31.8126313Z             }
2026-06-17T06:47:31.8126562Z           ]
2026-06-17T06:47:31.8126814Z         }
2026-06-17T06:47:31.8127057Z       }
2026-06-17T06:47:31.8127295Z     },
2026-06-17T06:47:31.8127534Z     {
2026-06-17T06:47:31.8127872Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-17T06:47:31.8132949Z       "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-17T06:47:31.8133254Z       "requiredStages": [
2026-06-17T06:47:31.8133503Z         "impl",
2026-06-17T06:47:31.8133763Z         "unit"
2026-06-17T06:47:31.8134008Z       ],
2026-06-17T06:47:31.8134271Z       "stages": {
2026-06-17T06:47:31.8134519Z         "doc": {
2026-06-17T06:47:31.8134787Z           "complete": false,
2026-06-17T06:47:31.8135049Z           "evidence": []
2026-06-17T06:47:31.8135296Z         },
2026-06-17T06:47:31.8135549Z         "impl": {
2026-06-17T06:47:31.8135920Z           "complete": true,
2026-06-17T06:47:31.8136187Z           "evidence": [
2026-06-17T06:47:31.8136446Z             {
2026-06-17T06:47:31.8136812Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-17T06:47:31.8137074Z               "line": 31
2026-06-17T06:47:31.8137322Z             }
2026-06-17T06:47:31.8137569Z           ]
2026-06-17T06:47:31.8137808Z         },
2026-06-17T06:47:31.8138056Z         "int": {
2026-06-17T06:47:31.8138338Z           "complete": false,
2026-06-17T06:47:31.8138601Z           "evidence": []
2026-06-17T06:47:31.8138855Z         },
2026-06-17T06:47:31.8139182Z         "unit": {
2026-06-17T06:47:31.8139464Z           "complete": true,
2026-06-17T06:47:31.8139730Z           "evidence": [
2026-06-17T06:47:31.8139970Z             {
2026-06-17T06:47:31.8140327Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-17T06:47:31.8140585Z               "line": 181
2026-06-17T06:47:31.8140838Z             }
2026-06-17T06:47:31.8141076Z           ]
2026-06-17T06:47:31.8141328Z         }
2026-06-17T06:47:31.8141571Z       }
2026-06-17T06:47:31.8141824Z     },
2026-06-17T06:47:31.8142078Z     {
2026-06-17T06:47:31.8142422Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-17T06:47:31.8142875Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-17T06:47:31.8143161Z       "requiredStages": [
2026-06-17T06:47:31.8143410Z         "impl",
2026-06-17T06:47:31.8143657Z         "unit"
2026-06-17T06:47:31.8143914Z       ],
2026-06-17T06:47:31.8144162Z       "stages": {
2026-06-17T06:47:31.8144404Z         "doc": {
2026-06-17T06:47:31.8144669Z           "complete": false,
2026-06-17T06:47:31.8144931Z           "evidence": []
2026-06-17T06:47:31.8145184Z         },
2026-06-17T06:47:31.8145432Z         "impl": {
2026-06-17T06:47:31.8145704Z           "complete": true,
2026-06-17T06:47:31.8145967Z           "evidence": [
2026-06-17T06:47:31.8146204Z             {
2026-06-17T06:47:31.8146558Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-17T06:47:31.8146814Z               "line": 49
2026-06-17T06:47:31.8147067Z             },
2026-06-17T06:47:31.8147315Z             {
2026-06-17T06:47:31.8147682Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-17T06:47:31.8147949Z               "line": 81
2026-06-17T06:47:31.8148197Z             }
2026-06-17T06:47:31.8148449Z           ]
2026-06-17T06:47:31.8148697Z         },
2026-06-17T06:47:31.8149040Z         "int": {
2026-06-17T06:47:31.8149330Z           "complete": false,
2026-06-17T06:47:31.8149638Z           "evidence": []
2026-06-17T06:47:31.8149892Z         },
2026-06-17T06:47:31.8150149Z         "unit": {
2026-06-17T06:47:31.8150415Z           "complete": true,
2026-06-17T06:47:31.8150677Z           "evidence": [
2026-06-17T06:47:31.8150925Z             {
2026-06-17T06:47:31.8151278Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-17T06:47:31.8151545Z               "line": 156
2026-06-17T06:47:31.8151807Z             },
2026-06-17T06:47:31.8152052Z             {
2026-06-17T06:47:31.8152416Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-17T06:47:31.8152662Z               "line": 173
2026-06-17T06:47:31.8152905Z             },
2026-06-17T06:47:31.8153158Z             {
2026-06-17T06:47:31.8153515Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-17T06:47:31.8157142Z               "line": 196
2026-06-17T06:47:31.8157433Z             }
2026-06-17T06:47:31.8157697Z           ]
2026-06-17T06:47:31.8158109Z         }
2026-06-17T06:47:31.8158360Z       }
2026-06-17T06:47:31.8158595Z     },
2026-06-17T06:47:31.8158843Z     {
2026-06-17T06:47:31.8159295Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-17T06:47:31.8159820Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-17T06:47:31.8160100Z       "requiredStages": [
2026-06-17T06:47:31.8160346Z         "impl",
2026-06-17T06:47:31.8160603Z         "unit"
2026-06-17T06:47:31.8160842Z       ],
2026-06-17T06:47:31.8161090Z       "stages": {
2026-06-17T06:47:31.8161476Z         "doc": {
2026-06-17T06:47:31.8161747Z           "complete": false,
2026-06-17T06:47:31.8162016Z           "evidence": []
2026-06-17T06:47:31.8162254Z         },
2026-06-17T06:47:31.8162511Z         "impl": {
2026-06-17T06:47:31.8162777Z           "complete": true,
2026-06-17T06:47:31.8163042Z           "evidence": [
2026-06-17T06:47:31.8163290Z             {
2026-06-17T06:47:31.8163652Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-17T06:47:31.8163919Z               "line": 120
2026-06-17T06:47:31.8164167Z             }
2026-06-17T06:47:31.8164419Z           ]
2026-06-17T06:47:31.8164662Z         },
2026-06-17T06:47:31.8164911Z         "int": {
2026-06-17T06:47:31.8165184Z           "complete": false,
2026-06-17T06:47:31.8165443Z           "evidence": []
2026-06-17T06:47:31.8165689Z         },
2026-06-17T06:47:31.8165932Z         "unit": {
2026-06-17T06:47:31.8166200Z           "complete": true,
2026-06-17T06:47:31.8166462Z           "evidence": [
2026-06-17T06:47:31.8166715Z             {
2026-06-17T06:47:31.8167073Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-17T06:47:31.8167319Z               "line": 212
2026-06-17T06:47:31.8167568Z             },
2026-06-17T06:47:31.8167806Z             {
2026-06-17T06:47:31.8168168Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-17T06:47:31.8168426Z               "line": 221
2026-06-17T06:47:31.8168673Z             },
2026-06-17T06:47:31.8168925Z             {
2026-06-17T06:47:31.8169355Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-17T06:47:31.8169618Z               "line": 229
2026-06-17T06:47:31.8169850Z             },
2026-06-17T06:47:31.8170098Z             {
2026-06-17T06:47:31.8170446Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-17T06:47:31.8170711Z               "line": 239
2026-06-17T06:47:31.8170954Z             },
2026-06-17T06:47:31.8171192Z             {
2026-06-17T06:47:31.8171541Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-17T06:47:31.8171807Z               "line": 249
2026-06-17T06:47:31.8172060Z             }
2026-06-17T06:47:31.8172298Z           ]
2026-06-17T06:47:31.8172547Z         }
2026-06-17T06:47:31.8172795Z       }
2026-06-17T06:47:31.8173037Z     },
2026-06-17T06:47:31.8173271Z     {
2026-06-17T06:47:31.8173579Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-17T06:47:31.8174054Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-17T06:47:31.8174321Z       "requiredStages": [
2026-06-17T06:47:31.8174579Z         "impl",
2026-06-17T06:47:31.8174837Z         "unit"
2026-06-17T06:47:31.8175076Z       ],
2026-06-17T06:47:31.8175323Z       "stages": {
2026-06-17T06:47:31.8175571Z         "doc": {
2026-06-17T06:47:31.8175842Z           "complete": false,
2026-06-17T06:47:31.8176099Z           "evidence": []
2026-06-17T06:47:31.8176335Z         },
2026-06-17T06:47:31.8176597Z         "impl": {
2026-06-17T06:47:31.8176854Z           "complete": true,
2026-06-17T06:47:31.8177122Z           "evidence": [
2026-06-17T06:47:31.8177365Z             {
2026-06-17T06:47:31.8177690Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-17T06:47:31.8177948Z               "line": 14
2026-06-17T06:47:31.8178199Z             },
2026-06-17T06:47:31.8178447Z             {
2026-06-17T06:47:31.8178761Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-17T06:47:31.8179109Z               "line": 63
2026-06-17T06:47:31.8179353Z             }
2026-06-17T06:47:31.8179710Z           ]
2026-06-17T06:47:31.8179963Z         },
2026-06-17T06:47:31.8180221Z         "int": {
2026-06-17T06:47:31.8180498Z           "complete": false,
2026-06-17T06:47:31.8180754Z           "evidence": []
2026-06-17T06:47:31.8181006Z         },
2026-06-17T06:47:31.8181253Z         "unit": {
2026-06-17T06:47:31.8181519Z           "complete": true,
2026-06-17T06:47:31.8181786Z           "evidence": [
2026-06-17T06:47:31.8182028Z             {
2026-06-17T06:47:31.8182357Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-17T06:47:31.8182715Z               "line": 164
2026-06-17T06:47:31.8182963Z             },
2026-06-17T06:47:31.8183202Z             {
2026-06-17T06:47:31.8183535Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-17T06:47:31.8183794Z               "line": 198
2026-06-17T06:47:31.8184054Z             },
2026-06-17T06:47:31.8184299Z             {
2026-06-17T06:47:31.8184623Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-17T06:47:31.8184881Z               "line": 220
2026-06-17T06:47:31.8185135Z             }
2026-06-17T06:47:31.8185378Z           ]
2026-06-17T06:47:31.8185622Z         }
2026-06-17T06:47:31.8185864Z       }
2026-06-17T06:47:31.8186111Z     },
2026-06-17T06:47:31.8186351Z     {
2026-06-17T06:47:31.8186654Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-17T06:47:31.8190485Z       "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-17T06:47:31.8190777Z       "requiredStages": [],
2026-06-17T06:47:31.8191024Z       "stages": {
2026-06-17T06:47:31.8191276Z         "doc": {
2026-06-17T06:47:31.8191548Z           "complete": true,
2026-06-17T06:47:31.8191808Z           "evidence": [
2026-06-17T06:47:31.8192064Z             {
2026-06-17T06:47:31.8192379Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-17T06:47:31.8192636Z               "line": 165
2026-06-17T06:47:31.8192889Z             }
2026-06-17T06:47:31.8193128Z           ]
2026-06-17T06:47:31.8193390Z         },
2026-06-17T06:47:31.8193630Z         "impl": {
2026-06-17T06:47:31.8193901Z           "complete": false,
2026-06-17T06:47:31.8194163Z           "evidence": []
2026-06-17T06:47:31.8194400Z         },
2026-06-17T06:47:31.8194657Z         "int": {
2026-06-17T06:47:31.8194918Z           "complete": false,
2026-06-17T06:47:31.8195184Z           "evidence": []
2026-06-17T06:47:31.8195422Z         },
2026-06-17T06:47:31.8195676Z         "unit": {
2026-06-17T06:47:31.8195948Z           "complete": false,
2026-06-17T06:47:31.8196201Z           "evidence": []
2026-06-17T06:47:31.8196453Z         }
2026-06-17T06:47:31.8196696Z       }
2026-06-17T06:47:31.8196939Z     },
2026-06-17T06:47:31.8197186Z     {
2026-06-17T06:47:31.8197528Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-17T06:47:31.8198162Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-17T06:47:31.8198438Z       "requiredStages": [
2026-06-17T06:47:31.8198695Z         "impl",
2026-06-17T06:47:31.8199019Z         "unit"
2026-06-17T06:47:31.8199271Z       ],
2026-06-17T06:47:31.8199524Z       "stages": {
2026-06-17T06:47:31.8199774Z         "doc": {
2026-06-17T06:47:31.8200039Z           "complete": false,
2026-06-17T06:47:31.8200315Z           "evidence": []
2026-06-17T06:47:31.8200563Z         },
2026-06-17T06:47:31.8200802Z         "impl": {
2026-06-17T06:47:31.8201083Z           "complete": true,
2026-06-17T06:47:31.8201342Z           "evidence": [
2026-06-17T06:47:31.8201584Z             {
2026-06-17T06:47:31.8201923Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-17T06:47:31.8202178Z               "line": 76
2026-06-17T06:47:31.8202434Z             },
2026-06-17T06:47:31.8202777Z             {
2026-06-17T06:47:31.8203106Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-17T06:47:31.8203359Z               "line": 167
2026-06-17T06:47:31.8203602Z             },
2026-06-17T06:47:31.8203855Z             {
2026-06-17T06:47:31.8204190Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-17T06:47:31.8204451Z               "line": 233
2026-06-17T06:47:31.8204694Z             },
2026-06-17T06:47:31.8204937Z             {
2026-06-17T06:47:31.8205263Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-17T06:47:31.8205625Z               "line": 272
2026-06-17T06:47:31.8205864Z             }
2026-06-17T06:47:31.8206108Z           ]
2026-06-17T06:47:31.8206344Z         },
2026-06-17T06:47:31.8206589Z         "int": {
2026-06-17T06:47:31.8206855Z           "complete": false,
2026-06-17T06:47:31.8207114Z           "evidence": []
2026-06-17T06:47:31.8207357Z         },
2026-06-17T06:47:31.8207612Z         "unit": {
2026-06-17T06:47:31.8207873Z           "complete": true,
2026-06-17T06:47:31.8208141Z           "evidence": [
2026-06-17T06:47:31.8208388Z             {
2026-06-17T06:47:31.8208736Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-17T06:47:31.8209051Z               "line": 321
2026-06-17T06:47:31.8209309Z             },
2026-06-17T06:47:31.8209551Z             {
2026-06-17T06:47:31.8209890Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-17T06:47:31.8210151Z               "line": 329
2026-06-17T06:47:31.8210404Z             },
2026-06-17T06:47:31.8210661Z             {
2026-06-17T06:47:31.8210985Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-17T06:47:31.8211248Z               "line": 356
2026-06-17T06:47:31.8211490Z             },
2026-06-17T06:47:31.8211733Z             {
2026-06-17T06:47:31.8212077Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-17T06:47:31.8212329Z               "line": 395
2026-06-17T06:47:31.8212574Z             },
2026-06-17T06:47:31.8212819Z             {
2026-06-17T06:47:31.8213156Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-17T06:47:31.8213413Z               "line": 406
2026-06-17T06:47:31.8213656Z             },
2026-06-17T06:47:31.8213895Z             {
2026-06-17T06:47:31.8214224Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-17T06:47:31.8214491Z               "line": 418
2026-06-17T06:47:31.8214725Z             },
2026-06-17T06:47:31.8214977Z             {
2026-06-17T06:47:31.8215316Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-17T06:47:31.8215578Z               "line": 442
2026-06-17T06:47:31.8215823Z             }
2026-06-17T06:47:31.8216071Z           ]
2026-06-17T06:47:31.8216319Z         }
2026-06-17T06:47:31.8216562Z       }
2026-06-17T06:47:31.8216806Z     },
2026-06-17T06:47:31.8217049Z     {
2026-06-17T06:47:31.8217345Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-17T06:47:31.8217758Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-17T06:47:31.8218027Z       "requiredStages": [
2026-06-17T06:47:31.8218283Z         "impl",
2026-06-17T06:47:31.8218523Z         "int"
2026-06-17T06:47:31.8218776Z       ],
2026-06-17T06:47:31.8219109Z       "stages": {
2026-06-17T06:47:31.8219358Z         "doc": {
2026-06-17T06:47:31.8219649Z           "complete": false,
2026-06-17T06:47:31.8219907Z           "evidence": []
2026-06-17T06:47:31.8220154Z         },
2026-06-17T06:47:31.8220406Z         "impl": {
2026-06-17T06:47:31.8220668Z           "complete": true,
2026-06-17T06:47:31.8220936Z           "evidence": [
2026-06-17T06:47:31.8221183Z             {
2026-06-17T06:47:31.8221532Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-17T06:47:31.8221789Z               "line": 22
2026-06-17T06:47:31.8222041Z             }
2026-06-17T06:47:31.8222284Z           ]
2026-06-17T06:47:31.8222528Z         },
2026-06-17T06:47:31.8222781Z         "int": {
2026-06-17T06:47:31.8223048Z           "complete": true,
2026-06-17T06:47:31.8223308Z           "evidence": [
2026-06-17T06:47:31.8223658Z             {
2026-06-17T06:47:31.8224031Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-17T06:47:31.8224288Z               "line": 18
2026-06-17T06:47:31.8224545Z             }
2026-06-17T06:47:31.8224789Z           ]
2026-06-17T06:47:31.8225038Z         },
2026-06-17T06:47:31.8225290Z         "unit": {
2026-06-17T06:47:31.8225557Z           "complete": false,
2026-06-17T06:47:31.8225819Z           "evidence": []
2026-06-17T06:47:31.8226062Z         }
2026-06-17T06:47:31.8226304Z       }
2026-06-17T06:47:31.8226651Z     },
2026-06-17T06:47:31.8226898Z     {
2026-06-17T06:47:31.8227228Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-17T06:47:31.8227775Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-17T06:47:31.8228052Z       "requiredStages": [
2026-06-17T06:47:31.8228295Z         "impl",
2026-06-17T06:47:31.8228549Z         "unit"
2026-06-17T06:47:31.8228799Z       ],
2026-06-17T06:47:31.8229131Z       "stages": {
2026-06-17T06:47:31.8229383Z         "doc": {
2026-06-17T06:47:31.8229665Z           "complete": false,
2026-06-17T06:47:31.8229932Z           "evidence": []
2026-06-17T06:47:31.8230166Z         },
2026-06-17T06:47:31.8230429Z         "impl": {
2026-06-17T06:47:31.8230685Z           "complete": true,
2026-06-17T06:47:31.8230934Z           "evidence": [
2026-06-17T06:47:31.8231176Z             {
2026-06-17T06:47:31.8231538Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.8231796Z               "line": 440
2026-06-17T06:47:31.8232044Z             },
2026-06-17T06:47:31.8232291Z             {
2026-06-17T06:47:31.8232634Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-17T06:47:31.8232877Z               "line": 27
2026-06-17T06:47:31.8233120Z             }
2026-06-17T06:47:31.8233360Z           ]
2026-06-17T06:47:31.8233598Z         },
2026-06-17T06:47:31.8233840Z         "int": {
2026-06-17T06:47:31.8234105Z           "complete": false,
2026-06-17T06:47:31.8234363Z           "evidence": []
2026-06-17T06:47:31.8234615Z         },
2026-06-17T06:47:31.8234867Z         "unit": {
2026-06-17T06:47:31.8235134Z           "complete": true,
2026-06-17T06:47:31.8235392Z           "evidence": [
2026-06-17T06:47:31.8235636Z             {
2026-06-17T06:47:31.8235992Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.8236265Z               "line": 965
2026-06-17T06:47:31.8236519Z             },
2026-06-17T06:47:31.8236763Z             {
2026-06-17T06:47:31.8237090Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-17T06:47:31.8237358Z               "line": 181
2026-06-17T06:47:31.8237602Z             }
2026-06-17T06:47:31.8237850Z           ]
2026-06-17T06:47:31.8238088Z         }
2026-06-17T06:47:31.8238326Z       }
2026-06-17T06:47:31.8238564Z     },
2026-06-17T06:47:31.8238799Z     {
2026-06-17T06:47:31.8239207Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-17T06:47:31.8239681Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-17T06:47:31.8239962Z       "requiredStages": [
2026-06-17T06:47:31.8240215Z         "impl",
2026-06-17T06:47:31.8240464Z         "unit"
2026-06-17T06:47:31.8240717Z       ],
2026-06-17T06:47:31.8240964Z       "stages": {
2026-06-17T06:47:31.8241212Z         "doc": {
2026-06-17T06:47:31.8241479Z           "complete": false,
2026-06-17T06:47:31.8241750Z           "evidence": []
2026-06-17T06:47:31.8242005Z         },
2026-06-17T06:47:31.8242255Z         "impl": {
2026-06-17T06:47:31.8242527Z           "complete": true,
2026-06-17T06:47:31.8242780Z           "evidence": [
2026-06-17T06:47:31.8243023Z             {
2026-06-17T06:47:31.8243386Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.8243639Z               "line": 73
2026-06-17T06:47:31.8243878Z             },
2026-06-17T06:47:31.8244125Z             {
2026-06-17T06:47:31.8244481Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.8244745Z               "line": 955
2026-06-17T06:47:31.8245103Z             },
2026-06-17T06:47:31.8245341Z             {
2026-06-17T06:47:31.8245680Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-17T06:47:31.8245938Z               "line": 20
2026-06-17T06:47:31.8246191Z             },
2026-06-17T06:47:31.8246439Z             {
2026-06-17T06:47:31.8246778Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-17T06:47:31.8247040Z               "line": 100
2026-06-17T06:47:31.8247286Z             },
2026-06-17T06:47:31.8247537Z             {
2026-06-17T06:47:31.8247994Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-17T06:47:31.8248256Z               "line": 555
2026-06-17T06:47:31.8248500Z             },
2026-06-17T06:47:31.8248743Z             {
2026-06-17T06:47:31.8249163Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-17T06:47:31.8249420Z               "line": 68
2026-06-17T06:47:31.8249670Z             },
2026-06-17T06:47:31.8249910Z             {
2026-06-17T06:47:31.8250265Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-17T06:47:31.8250527Z               "line": 80
2026-06-17T06:47:31.8250770Z             }
2026-06-17T06:47:31.8251029Z           ]
2026-06-17T06:47:31.8251277Z         },
2026-06-17T06:47:31.8251515Z         "int": {
2026-06-17T06:47:31.8251791Z           "complete": true,
2026-06-17T06:47:31.8252049Z           "evidence": [
2026-06-17T06:47:31.8252292Z             {
2026-06-17T06:47:31.8252630Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-17T06:47:31.8252893Z               "line": 44
2026-06-17T06:47:31.8253145Z             }
2026-06-17T06:47:31.8253387Z           ]
2026-06-17T06:47:31.8253626Z         },
2026-06-17T06:47:31.8253879Z         "unit": {
2026-06-17T06:47:31.8254151Z           "complete": true,
2026-06-17T06:47:31.8254404Z           "evidence": [
2026-06-17T06:47:31.8254651Z             {
2026-06-17T06:47:31.8254998Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.8255263Z               "line": 1155
2026-06-17T06:47:31.8255507Z             },
2026-06-17T06:47:31.8255750Z             {
2026-06-17T06:47:31.8256098Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:31.8256365Z               "line": 1171
2026-06-17T06:47:31.8256617Z             },
2026-06-17T06:47:31.8256865Z             {
2026-06-17T06:47:31.8257217Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:31.8257485Z               "line": 1488
2026-06-17T06:47:31.8257724Z             },
2026-06-17T06:47:31.8257975Z             {
2026-06-17T06:47:31.8258307Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-17T06:47:31.8258579Z               "line": 152
2026-06-17T06:47:31.8258821Z             },
2026-06-17T06:47:31.8259150Z             {
2026-06-17T06:47:31.8259489Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-17T06:47:31.8259746Z               "line": 175
2026-06-17T06:47:31.8259999Z             },
2026-06-17T06:47:31.8260258Z             {
2026-06-17T06:47:31.8260598Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-17T06:47:31.8260864Z               "line": 186
2026-06-17T06:47:31.8261102Z             },
2026-06-17T06:47:31.8261345Z             {
2026-06-17T06:47:31.8261674Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-17T06:47:31.8261932Z               "line": 202
2026-06-17T06:47:31.8262180Z             },
2026-06-17T06:47:31.8262438Z             {
2026-06-17T06:47:31.8262777Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-17T06:47:31.8263039Z               "line": 216
2026-06-17T06:47:31.8263290Z             },
2026-06-17T06:47:31.8263533Z             {
2026-06-17T06:47:31.8263890Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-17T06:47:31.8264149Z               "line": 137
2026-06-17T06:47:31.8264401Z             },
2026-06-17T06:47:31.8264654Z             {
2026-06-17T06:47:31.8264955Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.8265337Z               "line": 7455
2026-06-17T06:47:31.8265587Z             },
2026-06-17T06:47:31.8265828Z             {
2026-06-17T06:47:31.8266157Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-17T06:47:31.8266405Z               "line": 30
2026-06-17T06:47:31.8266663Z             },
2026-06-17T06:47:31.8266902Z             {
2026-06-17T06:47:31.8267236Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-17T06:47:31.8267497Z               "line": 73
2026-06-17T06:47:31.8267740Z             }
2026-06-17T06:47:31.8268083Z           ]
2026-06-17T06:47:31.8268340Z         }
2026-06-17T06:47:31.8268573Z       }
2026-06-17T06:47:31.8268814Z     },
2026-06-17T06:47:31.8269129Z     {
2026-06-17T06:47:31.8269415Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-17T06:47:31.8270155Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-17T06:47:31.8270432Z       "requiredStages": [
2026-06-17T06:47:31.8270693Z         "impl",
2026-06-17T06:47:31.8270949Z         "unit"
2026-06-17T06:47:31.8271187Z       ],
2026-06-17T06:47:31.8271444Z       "stages": {
2026-06-17T06:47:31.8271691Z         "doc": {
2026-06-17T06:47:31.8271967Z           "complete": true,
2026-06-17T06:47:31.8272224Z           "evidence": [
2026-06-17T06:47:31.8272477Z             {
2026-06-17T06:47:31.8272792Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-17T06:47:31.8273051Z               "line": 133
2026-06-17T06:47:31.8273299Z             }
2026-06-17T06:47:31.8273623Z           ]
2026-06-17T06:47:31.8273989Z         },
2026-06-17T06:47:31.8274236Z         "impl": {
2026-06-17T06:47:31.8274517Z           "complete": true,
2026-06-17T06:47:31.8274774Z           "evidence": [
2026-06-17T06:47:31.8275028Z             {
2026-06-17T06:47:31.8275352Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-17T06:47:31.8275615Z               "line": 65
2026-06-17T06:47:31.8275858Z             },
2026-06-17T06:47:31.8276099Z             {
2026-06-17T06:47:31.8276411Z               "path": "crates/spt-proto/src/id.rs",
2026-06-17T06:47:31.8276679Z               "line": 17
2026-06-17T06:47:31.8276918Z             },
2026-06-17T06:47:31.8277166Z             {
2026-06-17T06:47:31.8277523Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-17T06:47:31.8277786Z               "line": 146
2026-06-17T06:47:31.8278037Z             },
2026-06-17T06:47:31.8278276Z             {
2026-06-17T06:47:31.8278615Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:31.8278872Z               "line": 241
2026-06-17T06:47:31.8279208Z             },
2026-06-17T06:47:31.8279461Z             {
2026-06-17T06:47:31.8279799Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:31.8280066Z               "line": 340
2026-06-17T06:47:31.8280314Z             },
2026-06-17T06:47:31.8280552Z             {
2026-06-17T06:47:31.8280886Z               "path": "crates/spt/src/api/worker.rs",
2026-06-17T06:47:31.8281138Z               "line": 32
2026-06-17T06:47:31.8281388Z             },
2026-06-17T06:47:31.8281638Z             {
2026-06-17T06:47:31.8281946Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.8282208Z               "line": 1232
2026-06-17T06:47:31.8282460Z             },
2026-06-17T06:47:31.8282709Z             {
2026-06-17T06:47:31.8283014Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.8283268Z               "line": 5833
2026-06-17T06:47:31.8283525Z             },
2026-06-17T06:47:31.8283777Z             {
2026-06-17T06:47:31.8284082Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.8284343Z               "line": 6115
2026-06-17T06:47:31.8284592Z             }
2026-06-17T06:47:31.8284839Z           ]
2026-06-17T06:47:31.8285077Z         },
2026-06-17T06:47:31.8285334Z         "int": {
2026-06-17T06:47:31.8285602Z           "complete": false,
2026-06-17T06:47:31.8285860Z           "evidence": []
2026-06-17T06:47:31.8286104Z         },
2026-06-17T06:47:31.8286346Z         "unit": {
2026-06-17T06:47:31.8286722Z           "complete": true,
2026-06-17T06:47:31.8286981Z           "evidence": [
2026-06-17T06:47:31.8287239Z             {
2026-06-17T06:47:31.8287554Z               "path": "crates/spt-proto/src/id.rs",
2026-06-17T06:47:31.8287812Z               "line": 94
2026-06-17T06:47:31.8288065Z             },
2026-06-17T06:47:31.8288302Z             {
2026-06-17T06:47:31.8288622Z               "path": "crates/spt-proto/src/id.rs",
2026-06-17T06:47:31.8288879Z               "line": 111
2026-06-17T06:47:31.8289185Z             },
2026-06-17T06:47:31.8289569Z             {
2026-06-17T06:47:31.8289891Z               "path": "crates/spt-proto/src/id.rs",
2026-06-17T06:47:31.8290158Z               "line": 124
2026-06-17T06:47:31.8290402Z             },
2026-06-17T06:47:31.8290641Z             {
2026-06-17T06:47:31.8290960Z               "path": "crates/spt-proto/src/id.rs",
2026-06-17T06:47:31.8291213Z               "line": 134
2026-06-17T06:47:31.8291470Z             },
2026-06-17T06:47:31.8291722Z             {
2026-06-17T06:47:31.8292041Z               "path": "crates/spt-proto/src/id.rs",
2026-06-17T06:47:31.8292307Z               "line": 144
2026-06-17T06:47:31.8292559Z             },
2026-06-17T06:47:31.8292801Z             {
2026-06-17T06:47:31.8293131Z               "path": "crates/spt-proto/src/id.rs",
2026-06-17T06:47:31.8293392Z               "line": 156
2026-06-17T06:47:31.8293632Z             },
2026-06-17T06:47:31.8293875Z             {
2026-06-17T06:47:31.8294246Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-17T06:47:31.8294514Z               "line": 746
2026-06-17T06:47:31.8294758Z             },
2026-06-17T06:47:31.8295008Z             {
2026-06-17T06:47:31.8295366Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-17T06:47:31.8295628Z               "line": 309
2026-06-17T06:47:31.8295872Z             }
2026-06-17T06:47:31.8296124Z           ]
2026-06-17T06:47:31.8296378Z         }
2026-06-17T06:47:31.8296611Z       }
2026-06-17T06:47:31.8296858Z     },
2026-06-17T06:47:31.8297111Z     {
2026-06-17T06:47:31.8297414Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-17T06:47:31.8297799Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-17T06:47:31.8298076Z       "requiredStages": [
2026-06-17T06:47:31.8298338Z         "impl",
2026-06-17T06:47:31.8298577Z         "unit"
2026-06-17T06:47:31.8298829Z       ],
2026-06-17T06:47:31.8299167Z       "stages": {
2026-06-17T06:47:31.8299430Z         "doc": {
2026-06-17T06:47:31.8299711Z           "complete": false,
2026-06-17T06:47:31.8299969Z           "evidence": []
2026-06-17T06:47:31.8300225Z         },
2026-06-17T06:47:31.8300476Z         "impl": {
2026-06-17T06:47:31.8300747Z           "complete": true,
2026-06-17T06:47:31.8301009Z           "evidence": [
2026-06-17T06:47:31.8301248Z             {
2026-06-17T06:47:31.8301591Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-17T06:47:31.8301844Z               "line": 128
2026-06-17T06:47:31.8302088Z             }
2026-06-17T06:47:31.8302335Z           ]
2026-06-17T06:47:31.8302578Z         },
2026-06-17T06:47:31.8302825Z         "int": {
2026-06-17T06:47:31.8303090Z           "complete": false,
2026-06-17T06:47:31.8303371Z           "evidence": []
2026-06-17T06:47:31.8303628Z         },
2026-06-17T06:47:31.8303905Z         "unit": {
2026-06-17T06:47:31.8304192Z           "complete": true,
2026-06-17T06:47:31.8304478Z           "evidence": [
2026-06-17T06:47:31.8304754Z             {
2026-06-17T06:47:31.8305111Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-17T06:47:31.8305394Z               "line": 205
2026-06-17T06:47:31.8305664Z             }
2026-06-17T06:47:31.8305931Z           ]
2026-06-17T06:47:31.8306197Z         }
2026-06-17T06:47:31.8306469Z       }
2026-06-17T06:47:31.8306732Z     },
2026-06-17T06:47:31.8306990Z     {
2026-06-17T06:47:31.8307310Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-17T06:47:31.8307742Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-17T06:47:31.8308125Z       "requiredStages": [
2026-06-17T06:47:31.8308373Z         "impl",
2026-06-17T06:47:31.8308627Z         "unit"
2026-06-17T06:47:31.8308880Z       ],
2026-06-17T06:47:31.8309209Z       "stages": {
2026-06-17T06:47:31.8309457Z         "doc": {
2026-06-17T06:47:31.8309723Z           "complete": false,
2026-06-17T06:47:31.8309985Z           "evidence": []
2026-06-17T06:47:31.8310233Z         },
2026-06-17T06:47:31.8310487Z         "impl": {
2026-06-17T06:47:31.8310766Z           "complete": true,
2026-06-17T06:47:31.8311021Z           "evidence": [
2026-06-17T06:47:31.8311370Z             {
2026-06-17T06:47:31.8311709Z               "path": "crates/spt-store/src/info.rs",
2026-06-17T06:47:31.8311980Z               "line": 331
2026-06-17T06:47:31.8312223Z             },
2026-06-17T06:47:31.8312471Z             {
2026-06-17T06:47:31.8312799Z               "path": "crates/spt-store/src/info.rs",
2026-06-17T06:47:31.8313058Z               "line": 342
2026-06-17T06:47:31.8313304Z             },
2026-06-17T06:47:31.8313554Z             {
2026-06-17T06:47:31.8313893Z               "path": "crates/spt-store/src/info.rs",
2026-06-17T06:47:31.8314151Z               "line": 360
2026-06-17T06:47:31.8314413Z             }
2026-06-17T06:47:31.8314652Z           ]
2026-06-17T06:47:31.8314895Z         },
2026-06-17T06:47:31.8315152Z         "int": {
2026-06-17T06:47:31.8315410Z           "complete": false,
2026-06-17T06:47:31.8315681Z           "evidence": []
2026-06-17T06:47:31.8315921Z         },
2026-06-17T06:47:31.8316166Z         "unit": {
2026-06-17T06:47:31.8316443Z           "complete": true,
2026-06-17T06:47:31.8316705Z           "evidence": [
2026-06-17T06:47:31.8316949Z             {
2026-06-17T06:47:31.8317278Z               "path": "crates/spt-store/src/info.rs",
2026-06-17T06:47:31.8317550Z               "line": 384
2026-06-17T06:47:31.8317789Z             },
2026-06-17T06:47:31.8318041Z             {
2026-06-17T06:47:31.8318378Z               "path": "crates/spt-store/src/info.rs",
2026-06-17T06:47:31.8318633Z               "line": 405
2026-06-17T06:47:31.8318878Z             },
2026-06-17T06:47:31.8319182Z             {
2026-06-17T06:47:31.8319516Z               "path": "crates/spt-store/src/info.rs",
2026-06-17T06:47:31.8319783Z               "line": 754
2026-06-17T06:47:31.8320036Z             },
2026-06-17T06:47:31.8320288Z             {
2026-06-17T06:47:31.8320617Z               "path": "crates/spt-store/src/info.rs",
2026-06-17T06:47:31.8320879Z               "line": 765
2026-06-17T06:47:31.8321122Z             },
2026-06-17T06:47:31.8321411Z             {
2026-06-17T06:47:31.8321735Z               "path": "crates/spt-store/src/info.rs",
2026-06-17T06:47:31.8321997Z               "line": 778
2026-06-17T06:47:31.8322245Z             }
2026-06-17T06:47:31.8322487Z           ]
2026-06-17T06:47:31.8322736Z         }
2026-06-17T06:47:31.8322975Z       }
2026-06-17T06:47:31.8323223Z     },
2026-06-17T06:47:31.8323456Z     {
2026-06-17T06:47:31.8323936Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-17T06:47:31.8325693Z       "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-17T06:47:31.8325965Z       "requiredStages": [
2026-06-17T06:47:31.8326217Z         "impl",
2026-06-17T06:47:31.8326462Z         "unit"
2026-06-17T06:47:31.8326708Z       ],
2026-06-17T06:47:31.8326965Z       "stages": {
2026-06-17T06:47:31.8327209Z         "doc": {
2026-06-17T06:47:31.8327476Z           "complete": false,
2026-06-17T06:47:31.8327734Z           "evidence": []
2026-06-17T06:47:31.8327991Z         },
2026-06-17T06:47:31.8328243Z         "impl": {
2026-06-17T06:47:31.8328505Z           "complete": true,
2026-06-17T06:47:31.8328764Z           "evidence": [
2026-06-17T06:47:31.8329071Z             {
2026-06-17T06:47:31.8329424Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-17T06:47:31.8329714Z               "line": 759
2026-06-17T06:47:31.8330118Z             }
2026-06-17T06:47:31.8330372Z           ]
2026-06-17T06:47:31.8330610Z         },
2026-06-17T06:47:31.8330853Z         "int": {
2026-06-17T06:47:31.8331129Z           "complete": false,
2026-06-17T06:47:31.8331391Z           "evidence": []
2026-06-17T06:47:31.8331636Z         },
2026-06-17T06:47:31.8331891Z         "unit": {
2026-06-17T06:47:31.8332156Z           "complete": true,
2026-06-17T06:47:31.8332413Z           "evidence": [
2026-06-17T06:47:31.8332662Z             {
2026-06-17T06:47:31.8333009Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-17T06:47:31.8333367Z               "line": 873
2026-06-17T06:47:31.8333614Z             }
2026-06-17T06:47:31.8333859Z           ]
2026-06-17T06:47:31.8334098Z         }
2026-06-17T06:47:31.8334343Z       }
2026-06-17T06:47:31.8334584Z     },
2026-06-17T06:47:31.8334823Z     {
2026-06-17T06:47:31.8335143Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-RACE",
2026-06-17T06:47:31.8345240Z       "title": "The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.",
2026-06-17T06:47:31.8345526Z       "requiredStages": [
2026-06-17T06:47:31.8345779Z         "impl",
2026-06-17T06:47:31.8346036Z         "unit",
2026-06-17T06:47:31.8346280Z         "int"
2026-06-17T06:47:31.8346527Z       ],
2026-06-17T06:47:31.8346775Z       "stages": {
2026-06-17T06:47:31.8347028Z         "doc": {
2026-06-17T06:47:31.8347291Z           "complete": false,
2026-06-17T06:47:31.8347568Z           "evidence": []
2026-06-17T06:47:31.8347808Z         },
2026-06-17T06:47:31.8348057Z         "impl": {
2026-06-17T06:47:31.8348329Z           "complete": true,
2026-06-17T06:47:31.8348586Z           "evidence": [
2026-06-17T06:47:31.8348845Z             {
2026-06-17T06:47:31.8349278Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-17T06:47:31.8349555Z               "line": 351
2026-06-17T06:47:31.8349813Z             },
2026-06-17T06:47:31.8350058Z             {
2026-06-17T06:47:31.8353763Z               "path": "crates/spt-store/src/info.rs",
2026-06-17T06:47:31.8354063Z               "line": 307
2026-06-17T06:47:31.8354312Z             },
2026-06-17T06:47:31.8354559Z             {
2026-06-17T06:47:31.8354879Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.8355145Z               "line": 1605
2026-06-17T06:47:31.8355397Z             },
2026-06-17T06:47:31.8355644Z             {
2026-06-17T06:47:31.8355953Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.8356230Z               "line": 2915
2026-06-17T06:47:31.8356482Z             }
2026-06-17T06:47:31.8356734Z           ]
2026-06-17T06:47:31.8356983Z         },
2026-06-17T06:47:31.8357226Z         "int": {
2026-06-17T06:47:31.8357494Z           "complete": true,
2026-06-17T06:47:31.8357751Z           "evidence": [
2026-06-17T06:47:31.8357993Z             {
2026-06-17T06:47:31.8358528Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-17T06:47:31.8358808Z               "line": 353
2026-06-17T06:47:31.8359146Z             },
2026-06-17T06:47:31.8359395Z             {
2026-06-17T06:47:31.8359828Z               "path": "crates/spt/tests/livehost_psyche_fail_e2e.rs",
2026-06-17T06:47:31.8360073Z               "line": 23
2026-06-17T06:47:31.8360320Z             }
2026-06-17T06:47:31.8360561Z           ]
2026-06-17T06:47:31.8360803Z         },
2026-06-17T06:47:31.8361046Z         "unit": {
2026-06-17T06:47:31.8361308Z           "complete": true,
2026-06-17T06:47:31.8361671Z           "evidence": [
2026-06-17T06:47:31.8361914Z             {
2026-06-17T06:47:31.8362252Z               "path": "crates/spt-store/src/info.rs",
2026-06-17T06:47:31.8362514Z               "line": 686
2026-06-17T06:47:31.8362762Z             },
2026-06-17T06:47:31.8363005Z             {
2026-06-17T06:47:31.8363311Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.8363577Z               "line": 7194
2026-06-17T06:47:31.8363822Z             }
2026-06-17T06:47:31.8364070Z           ]
2026-06-17T06:47:31.8364314Z         }
2026-06-17T06:47:31.8364552Z       }
2026-06-17T06:47:31.8364800Z     },
2026-06-17T06:47:31.8365043Z     {
2026-06-17T06:47:31.8365381Z       "id": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
2026-06-17T06:47:31.8374606Z       "title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:\"host not resident within <n>s (psyche perch missing/dead pid)\"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.",
2026-06-17T06:47:31.8374888Z       "requiredStages": [
2026-06-17T06:47:31.8375141Z         "impl",
2026-06-17T06:47:31.8375399Z         "unit",
2026-06-17T06:47:31.8375641Z         "int"
2026-06-17T06:47:31.8375879Z       ],
2026-06-17T06:47:31.8376123Z       "stages": {
2026-06-17T06:47:31.8376377Z         "doc": {
2026-06-17T06:47:31.8376651Z           "complete": false,
2026-06-17T06:47:31.8376910Z           "evidence": []
2026-06-17T06:47:31.8377159Z         },
2026-06-17T06:47:31.8377403Z         "impl": {
2026-06-17T06:47:31.8377660Z           "complete": true,
2026-06-17T06:47:31.8377912Z           "evidence": [
2026-06-17T06:47:31.8378169Z             {
2026-06-17T06:47:31.8378532Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-17T06:47:31.8378813Z               "line": 63
2026-06-17T06:47:31.8379167Z             },
2026-06-17T06:47:31.8379446Z             {
2026-06-17T06:47:31.8379823Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-17T06:47:31.8380104Z               "line": 77
2026-06-17T06:47:31.8380385Z             },
2026-06-17T06:47:31.8380648Z             {
2026-06-17T06:47:31.8381034Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-17T06:47:31.8381325Z               "line": 164
2026-06-17T06:47:31.8381592Z             },
2026-06-17T06:47:31.8381844Z             {
2026-06-17T06:47:31.8382200Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-17T06:47:31.8382467Z               "line": 171
2026-06-17T06:47:31.8382709Z             },
2026-06-17T06:47:31.8382957Z             {
2026-06-17T06:47:31.8383416Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-17T06:47:31.8383668Z               "line": 181
2026-06-17T06:47:31.8383920Z             },
2026-06-17T06:47:31.8384163Z             {
2026-06-17T06:47:31.8384520Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-17T06:47:31.8384776Z               "line": 257
2026-06-17T06:47:31.8385019Z             },
2026-06-17T06:47:31.8385266Z             {
2026-06-17T06:47:31.8385605Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-17T06:47:31.8385964Z               "line": 271
2026-06-17T06:47:31.8386215Z             },
2026-06-17T06:47:31.8386473Z             {
2026-06-17T06:47:31.8386826Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-17T06:47:31.8387078Z               "line": 340
2026-06-17T06:47:31.8387320Z             },
2026-06-17T06:47:31.8387567Z             {
2026-06-17T06:47:31.8387925Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-17T06:47:31.8388187Z               "line": 394
2026-06-17T06:47:31.8388438Z             },
2026-06-17T06:47:31.8388692Z             {
2026-06-17T06:47:31.8389116Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-17T06:47:31.8389383Z               "line": 414
2026-06-17T06:47:31.8389640Z             }
2026-06-17T06:47:31.8389893Z           ]
2026-06-17T06:47:31.8390135Z         },
2026-06-17T06:47:31.8390392Z         "int": {
2026-06-17T06:47:31.8390669Z           "complete": true,
2026-06-17T06:47:31.8390927Z           "evidence": [
2026-06-17T06:47:31.8391180Z             {
2026-06-17T06:47:31.8391580Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-17T06:47:31.8391842Z               "line": 45
2026-06-17T06:47:31.8392087Z             },
2026-06-17T06:47:31.8392328Z             {
2026-06-17T06:47:31.8392727Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-17T06:47:31.8392989Z               "line": 354
2026-06-17T06:47:31.8393245Z             },
2026-06-17T06:47:31.8393484Z             {
2026-06-17T06:47:31.8393908Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-17T06:47:31.8394170Z               "line": 31
2026-06-17T06:47:31.8394418Z             }
2026-06-17T06:47:31.8394663Z           ]
2026-06-17T06:47:31.8394901Z         },
2026-06-17T06:47:31.8395161Z         "unit": {
2026-06-17T06:47:31.8395417Z           "complete": true,
2026-06-17T06:47:31.8395684Z           "evidence": [
2026-06-17T06:47:31.8395923Z             {
2026-06-17T06:47:31.8396285Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-17T06:47:31.8396557Z               "line": 476
2026-06-17T06:47:31.8396795Z             }
2026-06-17T06:47:31.8397033Z           ]
2026-06-17T06:47:31.8397271Z         }
2026-06-17T06:47:31.8397525Z       }
2026-06-17T06:47:31.8397766Z     },
2026-06-17T06:47:31.8398007Z     {
2026-06-17T06:47:31.8398317Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-17T06:47:31.8398937Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-17T06:47:31.8399304Z       "requiredStages": [
2026-06-17T06:47:31.8399557Z         "impl",
2026-06-17T06:47:31.8399809Z         "unit"
2026-06-17T06:47:31.8400050Z       ],
2026-06-17T06:47:31.8400297Z       "stages": {
2026-06-17T06:47:31.8400557Z         "doc": {
2026-06-17T06:47:31.8400820Z           "complete": false,
2026-06-17T06:47:31.8401078Z           "evidence": []
2026-06-17T06:47:31.8401321Z         },
2026-06-17T06:47:31.8401563Z         "impl": {
2026-06-17T06:47:31.8401830Z           "complete": true,
2026-06-17T06:47:31.8402088Z           "evidence": [
2026-06-17T06:47:31.8402341Z             {
2026-06-17T06:47:31.8402665Z               "path": "crates/spt/src/api/auth.rs",
2026-06-17T06:47:31.8402931Z               "line": 14
2026-06-17T06:47:31.8403171Z             },
2026-06-17T06:47:31.8403415Z             {
2026-06-17T06:47:31.8403730Z               "path": "crates/spt/src/api/mod.rs",
2026-06-17T06:47:31.8403987Z               "line": 543
2026-06-17T06:47:31.8404340Z             }
2026-06-17T06:47:31.8404588Z           ]
2026-06-17T06:47:31.8404827Z         },
2026-06-17T06:47:31.8405069Z         "int": {
2026-06-17T06:47:31.8405337Z           "complete": false,
2026-06-17T06:47:31.8405589Z           "evidence": []
2026-06-17T06:47:31.8405836Z         },
2026-06-17T06:47:31.8406096Z         "unit": {
2026-06-17T06:47:31.8406358Z           "complete": true,
2026-06-17T06:47:31.8406611Z           "evidence": [
2026-06-17T06:47:31.8406854Z             {
2026-06-17T06:47:31.8407283Z               "path": "crates/spt/src/api/auth.rs",
2026-06-17T06:47:31.8407531Z               "line": 130
2026-06-17T06:47:31.8407780Z             },
2026-06-17T06:47:31.8408033Z             {
2026-06-17T06:47:31.8408350Z               "path": "crates/spt/src/api/auth.rs",
2026-06-17T06:47:31.8408605Z               "line": 138
2026-06-17T06:47:31.8408858Z             },
2026-06-17T06:47:31.8409177Z             {
2026-06-17T06:47:31.8409487Z               "path": "crates/spt/src/api/auth.rs",
2026-06-17T06:47:31.8409755Z               "line": 146
2026-06-17T06:47:31.8410008Z             },
2026-06-17T06:47:31.8410261Z             {
2026-06-17T06:47:31.8410590Z               "path": "crates/spt/src/api/auth.rs",
2026-06-17T06:47:31.8410852Z               "line": 154
2026-06-17T06:47:31.8411099Z             },
2026-06-17T06:47:31.8411347Z             {
2026-06-17T06:47:31.8411666Z               "path": "crates/spt/src/api/auth.rs",
2026-06-17T06:47:31.8411919Z               "line": 162
2026-06-17T06:47:31.8412171Z             },
2026-06-17T06:47:31.8412414Z             {
2026-06-17T06:47:31.8412734Z               "path": "crates/spt/src/api/auth.rs",
2026-06-17T06:47:31.8412995Z               "line": 170
2026-06-17T06:47:31.8413240Z             }
2026-06-17T06:47:31.8413486Z           ]
2026-06-17T06:47:31.8413727Z         }
2026-06-17T06:47:31.8413961Z       }
2026-06-17T06:47:31.8414209Z     },
2026-06-17T06:47:31.8414438Z     {
2026-06-17T06:47:31.8414758Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-17T06:47:31.8417176Z       "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-17T06:47:31.8417458Z       "requiredStages": [
2026-06-17T06:47:31.8417706Z         "impl",
2026-06-17T06:47:31.8417945Z         "unit"
2026-06-17T06:47:31.8418196Z       ],
2026-06-17T06:47:31.8418454Z       "stages": {
2026-06-17T06:47:31.8418706Z         "doc": {
2026-06-17T06:47:31.8419061Z           "complete": false,
2026-06-17T06:47:31.8419329Z           "evidence": []
2026-06-17T06:47:31.8419577Z         },
2026-06-17T06:47:31.8419823Z         "impl": {
2026-06-17T06:47:31.8420105Z           "complete": true,
2026-06-17T06:47:31.8420362Z           "evidence": [
2026-06-17T06:47:31.8420606Z             {
2026-06-17T06:47:31.8421030Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-17T06:47:31.8421292Z               "line": 34
2026-06-17T06:47:31.8421532Z             }
2026-06-17T06:47:31.8421768Z           ]
2026-06-17T06:47:31.8422016Z         },
2026-06-17T06:47:31.8422264Z         "int": {
2026-06-17T06:47:31.8422536Z           "complete": false,
2026-06-17T06:47:31.8422803Z           "evidence": []
2026-06-17T06:47:31.8423042Z         },
2026-06-17T06:47:31.8423303Z         "unit": {
2026-06-17T06:47:31.8423570Z           "complete": true,
2026-06-17T06:47:31.8423832Z           "evidence": [
2026-06-17T06:47:31.8424075Z             {
2026-06-17T06:47:31.8424492Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-17T06:47:31.8424751Z               "line": 188
2026-06-17T06:47:31.8424994Z             },
2026-06-17T06:47:31.8425235Z             {
2026-06-17T06:47:31.8425643Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-17T06:47:31.8425914Z               "line": 200
2026-06-17T06:47:31.8426296Z             },
2026-06-17T06:47:31.8426553Z             {
2026-06-17T06:47:31.8426966Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-17T06:47:31.8427226Z               "line": 211
2026-06-17T06:47:31.8427473Z             },
2026-06-17T06:47:31.8427717Z             {
2026-06-17T06:47:31.8428132Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-17T06:47:31.8428398Z               "line": 253
2026-06-17T06:47:31.8428637Z             },
2026-06-17T06:47:31.8429096Z             {
2026-06-17T06:47:31.8429528Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-17T06:47:31.8429788Z               "line": 277
2026-06-17T06:47:31.8430040Z             },
2026-06-17T06:47:31.8430293Z             {
2026-06-17T06:47:31.8430703Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-17T06:47:31.8430960Z               "line": 300
2026-06-17T06:47:31.8431209Z             },
2026-06-17T06:47:31.8431462Z             {
2026-06-17T06:47:31.8431876Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-17T06:47:31.8432129Z               "line": 316
2026-06-17T06:47:31.8432381Z             }
2026-06-17T06:47:31.8432628Z           ]
2026-06-17T06:47:31.8432867Z         }
2026-06-17T06:47:31.8433116Z       }
2026-06-17T06:47:31.8433359Z     },
2026-06-17T06:47:31.8433602Z     {
2026-06-17T06:47:31.8433912Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-17T06:47:31.8435500Z       "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-17T06:47:31.8435791Z       "requiredStages": [
2026-06-17T06:47:31.8436025Z         "impl",
2026-06-17T06:47:31.8436282Z         "unit"
2026-06-17T06:47:31.8436522Z       ],
2026-06-17T06:47:31.8436774Z       "stages": {
2026-06-17T06:47:31.8437017Z         "doc": {
2026-06-17T06:47:31.8437283Z           "complete": false,
2026-06-17T06:47:31.8437549Z           "evidence": []
2026-06-17T06:47:31.8437791Z         },
2026-06-17T06:47:31.8438033Z         "impl": {
2026-06-17T06:47:31.8438320Z           "complete": true,
2026-06-17T06:47:31.8438573Z           "evidence": [
2026-06-17T06:47:31.8438817Z             {
2026-06-17T06:47:31.8439211Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-17T06:47:31.8439470Z               "line": 29
2026-06-17T06:47:31.8439709Z             },
2026-06-17T06:47:31.8439964Z             {
2026-06-17T06:47:31.8440304Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-17T06:47:31.8440571Z               "line": 174
2026-06-17T06:47:31.8440811Z             },
2026-06-17T06:47:31.8441059Z             {
2026-06-17T06:47:31.8441393Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-17T06:47:31.8441646Z               "line": 194
2026-06-17T06:47:31.8441893Z             },
2026-06-17T06:47:31.8442132Z             {
2026-06-17T06:47:31.8442470Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-17T06:47:31.8442741Z               "line": 222
2026-06-17T06:47:31.8442984Z             }
2026-06-17T06:47:31.8443246Z           ]
2026-06-17T06:47:31.8443484Z         },
2026-06-17T06:47:31.8443727Z         "int": {
2026-06-17T06:47:31.8443985Z           "complete": false,
2026-06-17T06:47:31.8444248Z           "evidence": []
2026-06-17T06:47:31.8444492Z         },
2026-06-17T06:47:31.8444738Z         "unit": {
2026-06-17T06:47:31.8445014Z           "complete": true,
2026-06-17T06:47:31.8445270Z           "evidence": [
2026-06-17T06:47:31.8445522Z             {
2026-06-17T06:47:31.8445866Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-17T06:47:31.8446133Z               "line": 329
2026-06-17T06:47:31.8446380Z             },
2026-06-17T06:47:31.8446623Z             {
2026-06-17T06:47:31.8446962Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-17T06:47:31.8447219Z               "line": 344
2026-06-17T06:47:31.8447572Z             },
2026-06-17T06:47:31.8447820Z             {
2026-06-17T06:47:31.8448165Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-17T06:47:31.8448423Z               "line": 417
2026-06-17T06:47:31.8448661Z             },
2026-06-17T06:47:31.8448908Z             {
2026-06-17T06:47:31.8449305Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-17T06:47:31.8449571Z               "line": 433
2026-06-17T06:47:31.8449819Z             },
2026-06-17T06:47:31.8450077Z             {
2026-06-17T06:47:31.8450505Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-17T06:47:31.8450761Z               "line": 492
2026-06-17T06:47:31.8451014Z             },
2026-06-17T06:47:31.8451247Z             {
2026-06-17T06:47:31.8451576Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-17T06:47:31.8451833Z               "line": 506
2026-06-17T06:47:31.8452090Z             },
2026-06-17T06:47:31.8452344Z             {
2026-06-17T06:47:31.8452682Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-17T06:47:31.8452939Z               "line": 517
2026-06-17T06:47:31.8453184Z             },
2026-06-17T06:47:31.8453434Z             {
2026-06-17T06:47:31.8453768Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-17T06:47:31.8454030Z               "line": 528
2026-06-17T06:47:31.8454283Z             }
2026-06-17T06:47:31.8454531Z           ]
2026-06-17T06:47:31.8454775Z         }
2026-06-17T06:47:31.8455008Z       }
2026-06-17T06:47:31.8455251Z     },
2026-06-17T06:47:31.8455490Z     {
2026-06-17T06:47:31.8455835Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-17T06:47:31.8457638Z       "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-17T06:47:31.8457919Z       "requiredStages": [
2026-06-17T06:47:31.8458175Z         "impl",
2026-06-17T06:47:31.8458432Z         "unit"
2026-06-17T06:47:31.8458679Z       ],
2026-06-17T06:47:31.8459021Z       "stages": {
2026-06-17T06:47:31.8459274Z         "doc": {
2026-06-17T06:47:31.8459551Z           "complete": false,
2026-06-17T06:47:31.8459807Z           "evidence": []
2026-06-17T06:47:31.8460055Z         },
2026-06-17T06:47:31.8460308Z         "impl": {
2026-06-17T06:47:31.8460585Z           "complete": true,
2026-06-17T06:47:31.8460849Z           "evidence": [
2026-06-17T06:47:31.8461103Z             {
2026-06-17T06:47:31.8461488Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-17T06:47:31.8461740Z               "line": 27
2026-06-17T06:47:31.8461993Z             },
2026-06-17T06:47:31.8462236Z             {
2026-06-17T06:47:31.8462627Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-17T06:47:31.8462884Z               "line": 110
2026-06-17T06:47:31.8463124Z             },
2026-06-17T06:47:31.8463367Z             {
2026-06-17T06:47:31.8463753Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-17T06:47:31.8464018Z               "line": 153
2026-06-17T06:47:31.8464270Z             },
2026-06-17T06:47:31.8464519Z             {
2026-06-17T06:47:31.8464904Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-17T06:47:31.8465168Z               "line": 182
2026-06-17T06:47:31.8465416Z             },
2026-06-17T06:47:31.8465659Z             {
2026-06-17T06:47:31.8466078Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-17T06:47:31.8466339Z               "line": 31
2026-06-17T06:47:31.8466594Z             },
2026-06-17T06:47:31.8466851Z             {
2026-06-17T06:47:31.8467273Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-17T06:47:31.8467535Z               "line": 113
2026-06-17T06:47:31.8467781Z             },
2026-06-17T06:47:31.8468035Z             {
2026-06-17T06:47:31.8468445Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-17T06:47:31.8468822Z               "line": 138
2026-06-17T06:47:31.8469144Z             }
2026-06-17T06:47:31.8469394Z           ]
2026-06-17T06:47:31.8469643Z         },
2026-06-17T06:47:31.8469886Z         "int": {
2026-06-17T06:47:31.8470159Z           "complete": false,
2026-06-17T06:47:31.8470416Z           "evidence": []
2026-06-17T06:47:31.8470658Z         },
2026-06-17T06:47:31.8470920Z         "unit": {
2026-06-17T06:47:31.8471178Z           "complete": true,
2026-06-17T06:47:31.8471446Z           "evidence": [
2026-06-17T06:47:31.8471692Z             {
2026-06-17T06:47:31.8472176Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-17T06:47:31.8472439Z               "line": 261
2026-06-17T06:47:31.8472687Z             },
2026-06-17T06:47:31.8472924Z             {
2026-06-17T06:47:31.8473307Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-17T06:47:31.8473559Z               "line": 276
2026-06-17T06:47:31.8473807Z             },
2026-06-17T06:47:31.8474055Z             {
2026-06-17T06:47:31.8474431Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-17T06:47:31.8474694Z               "line": 293
2026-06-17T06:47:31.8474946Z             },
2026-06-17T06:47:31.8475184Z             {
2026-06-17T06:47:31.8475571Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-17T06:47:31.8475832Z               "line": 310
2026-06-17T06:47:31.8476085Z             },
2026-06-17T06:47:31.8476342Z             {
2026-06-17T06:47:31.8476718Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-17T06:47:31.8476983Z               "line": 327
2026-06-17T06:47:31.8477231Z             },
2026-06-17T06:47:31.8477479Z             {
2026-06-17T06:47:31.8477857Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-17T06:47:31.8478109Z               "line": 366
2026-06-17T06:47:31.8478361Z             },
2026-06-17T06:47:31.8478600Z             {
2026-06-17T06:47:31.8479092Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-17T06:47:31.8479344Z               "line": 179
2026-06-17T06:47:31.8479623Z             },
2026-06-17T06:47:31.8479874Z             {
2026-06-17T06:47:31.8480288Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-17T06:47:31.8480550Z               "line": 194
2026-06-17T06:47:31.8480790Z             },
2026-06-17T06:47:31.8481038Z             {
2026-06-17T06:47:31.8481452Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-17T06:47:31.8481719Z               "line": 204
2026-06-17T06:47:31.8481964Z             },
2026-06-17T06:47:31.8482218Z             {
2026-06-17T06:47:31.8482641Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-17T06:47:31.8482898Z               "line": 259
2026-06-17T06:47:31.8483146Z             },
2026-06-17T06:47:31.8483390Z             {
2026-06-17T06:47:31.8483804Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-17T06:47:31.8484066Z               "line": 269
2026-06-17T06:47:31.8484324Z             },
2026-06-17T06:47:31.8484573Z             {
2026-06-17T06:47:31.8484991Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-17T06:47:31.8485244Z               "line": 283
2026-06-17T06:47:31.8485492Z             }
2026-06-17T06:47:31.8485744Z           ]
2026-06-17T06:47:31.8485997Z         }
2026-06-17T06:47:31.8486240Z       }
2026-06-17T06:47:31.8486484Z     },
2026-06-17T06:47:31.8486722Z     {
2026-06-17T06:47:31.8487041Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-17T06:47:31.8487600Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-17T06:47:31.8487882Z       "requiredStages": [],
2026-06-17T06:47:31.8488134Z       "stages": {
2026-06-17T06:47:31.8488388Z         "doc": {
2026-06-17T06:47:31.8488650Z           "complete": false,
2026-06-17T06:47:31.8488901Z           "evidence": []
2026-06-17T06:47:31.8489226Z         },
2026-06-17T06:47:31.8489479Z         "impl": {
2026-06-17T06:47:31.8489851Z           "complete": false,
2026-06-17T06:47:31.8490112Z           "evidence": []
2026-06-17T06:47:31.8490364Z         },
2026-06-17T06:47:31.8490620Z         "int": {
2026-06-17T06:47:31.8490882Z           "complete": false,
2026-06-17T06:47:31.8491149Z           "evidence": []
2026-06-17T06:47:31.8491393Z         },
2026-06-17T06:47:31.8491645Z         "unit": {
2026-06-17T06:47:31.8491913Z           "complete": false,
2026-06-17T06:47:31.8492176Z           "evidence": []
2026-06-17T06:47:31.8492418Z         }
2026-06-17T06:47:31.8492783Z       }
2026-06-17T06:47:31.8493025Z     },
2026-06-17T06:47:31.8493255Z     {
2026-06-17T06:47:31.8493612Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-17T06:47:31.8495790Z       "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-17T06:47:31.8496066Z       "requiredStages": [
2026-06-17T06:47:31.8496319Z         "impl",
2026-06-17T06:47:31.8496561Z         "unit"
2026-06-17T06:47:31.8496814Z       ],
2026-06-17T06:47:31.8497072Z       "stages": {
2026-06-17T06:47:31.8497326Z         "doc": {
2026-06-17T06:47:31.8497592Z           "complete": false,
2026-06-17T06:47:31.8497853Z           "evidence": []
2026-06-17T06:47:31.8498108Z         },
2026-06-17T06:47:31.8498361Z         "impl": {
2026-06-17T06:47:31.8498638Z           "complete": true,
2026-06-17T06:47:31.8498885Z           "evidence": [
2026-06-17T06:47:31.8499200Z             {
2026-06-17T06:47:31.8499559Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-17T06:47:31.8499820Z               "line": 26
2026-06-17T06:47:31.8500068Z             },
2026-06-17T06:47:31.8500311Z             {
2026-06-17T06:47:31.8500663Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-17T06:47:31.8500915Z               "line": 95
2026-06-17T06:47:31.8501161Z             },
2026-06-17T06:47:31.8501409Z             {
2026-06-17T06:47:31.8501757Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-17T06:47:31.8502014Z               "line": 166
2026-06-17T06:47:31.8502253Z             },
2026-06-17T06:47:31.8502502Z             {
2026-06-17T06:47:31.8502840Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-17T06:47:31.8503089Z               "line": 19
2026-06-17T06:47:31.8503343Z             },
2026-06-17T06:47:31.8503594Z             {
2026-06-17T06:47:31.8503947Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-17T06:47:31.8504209Z               "line": 50
2026-06-17T06:47:31.8504467Z             },
2026-06-17T06:47:31.8504730Z             {
2026-06-17T06:47:31.8505054Z               "path": "crates/spt-live/src/turn.rs",
2026-06-17T06:47:31.8505312Z               "line": 18
2026-06-17T06:47:31.8505559Z             },
2026-06-17T06:47:31.8505812Z             {
2026-06-17T06:47:31.8506135Z               "path": "crates/spt-live/src/turn.rs",
2026-06-17T06:47:31.8506393Z               "line": 71
2026-06-17T06:47:31.8506641Z             },
2026-06-17T06:47:31.8506889Z             {
2026-06-17T06:47:31.8507227Z               "path": "crates/spt-proto/src/event.rs",
2026-06-17T06:47:31.8507488Z               "line": 87
2026-06-17T06:47:31.8507741Z             }
2026-06-17T06:47:31.8507980Z           ]
2026-06-17T06:47:31.8508225Z         },
2026-06-17T06:47:31.8508475Z         "int": {
2026-06-17T06:47:31.8508739Z           "complete": false,
2026-06-17T06:47:31.8509082Z           "evidence": []
2026-06-17T06:47:31.8509321Z         },
2026-06-17T06:47:31.8509589Z         "unit": {
2026-06-17T06:47:31.8509851Z           "complete": true,
2026-06-17T06:47:31.8510119Z           "evidence": [
2026-06-17T06:47:31.8510375Z             {
2026-06-17T06:47:31.8510734Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-17T06:47:31.8511010Z               "line": 289
2026-06-17T06:47:31.8511252Z             },
2026-06-17T06:47:31.8511597Z             {
2026-06-17T06:47:31.8511954Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-17T06:47:31.8512222Z               "line": 314
2026-06-17T06:47:31.8512475Z             },
2026-06-17T06:47:31.8512718Z             {
2026-06-17T06:47:31.8513071Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-17T06:47:31.8513329Z               "line": 350
2026-06-17T06:47:31.8513572Z             },
2026-06-17T06:47:31.8513813Z             {
2026-06-17T06:47:31.8514168Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-17T06:47:31.8514526Z               "line": 418
2026-06-17T06:47:31.8514765Z             },
2026-06-17T06:47:31.8515017Z             {
2026-06-17T06:47:31.8515375Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-17T06:47:31.8515647Z               "line": 429
2026-06-17T06:47:31.8515886Z             },
2026-06-17T06:47:31.8516143Z             {
2026-06-17T06:47:31.8516506Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-17T06:47:31.8516761Z               "line": 460
2026-06-17T06:47:31.8517009Z             },
2026-06-17T06:47:31.8517258Z             {
2026-06-17T06:47:31.8517616Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-17T06:47:31.8517877Z               "line": 471
2026-06-17T06:47:31.8518131Z             },
2026-06-17T06:47:31.8518378Z             {
2026-06-17T06:47:31.8518727Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-17T06:47:31.8519040Z               "line": 77
2026-06-17T06:47:31.8519285Z             },
2026-06-17T06:47:31.8519533Z             {
2026-06-17T06:47:31.8519872Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-17T06:47:31.8520130Z               "line": 97
2026-06-17T06:47:31.8520374Z             },
2026-06-17T06:47:31.8520625Z             {
2026-06-17T06:47:31.8520969Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-17T06:47:31.8521231Z               "line": 112
2026-06-17T06:47:31.8521479Z             },
2026-06-17T06:47:31.8521727Z             {
2026-06-17T06:47:31.8522072Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-17T06:47:31.8522349Z               "line": 123
2026-06-17T06:47:31.8522592Z             },
2026-06-17T06:47:31.8522843Z             {
2026-06-17T06:47:31.8523173Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-17T06:47:31.8523435Z               "line": 130
2026-06-17T06:47:31.8523683Z             },
2026-06-17T06:47:31.8523932Z             {
2026-06-17T06:47:31.8524280Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-17T06:47:31.8524536Z               "line": 145
2026-06-17T06:47:31.8524790Z             },
2026-06-17T06:47:31.8525029Z             {
2026-06-17T06:47:31.8525358Z               "path": "crates/spt-live/src/turn.rs",
2026-06-17T06:47:31.8525621Z               "line": 115
2026-06-17T06:47:31.8525864Z             },
2026-06-17T06:47:31.8526108Z             {
2026-06-17T06:47:31.8526432Z               "path": "crates/spt-live/src/turn.rs",
2026-06-17T06:47:31.8526694Z               "line": 130
2026-06-17T06:47:31.8526927Z             },
2026-06-17T06:47:31.8527180Z             {
2026-06-17T06:47:31.8527518Z               "path": "crates/spt-proto/src/event.rs",
2026-06-17T06:47:31.8527780Z               "line": 428
2026-06-17T06:47:31.8528038Z             }
2026-06-17T06:47:31.8528285Z           ]
2026-06-17T06:47:31.8528519Z         }
2026-06-17T06:47:31.8528762Z       }
2026-06-17T06:47:31.8529077Z     },
2026-06-17T06:47:31.8529321Z     {
2026-06-17T06:47:31.8529633Z       "id": "REQ-HAZARD-PUMP-IPC-DEADLINE",
2026-06-17T06:47:31.8531883Z       "title": "The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump",
2026-06-17T06:47:31.8532150Z       "requiredStages": [
2026-06-17T06:47:31.8532405Z         "doc",
2026-06-17T06:47:31.8532769Z         "impl",
2026-06-17T06:47:31.8533027Z         "unit"
2026-06-17T06:47:31.8533276Z       ],
2026-06-17T06:47:31.8533519Z       "stages": {
2026-06-17T06:47:31.8533771Z         "doc": {
2026-06-17T06:47:31.8534043Z           "complete": true,
2026-06-17T06:47:31.8534310Z           "evidence": [
2026-06-17T06:47:31.8534567Z             {
2026-06-17T06:47:31.8534868Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-17T06:47:31.8535124Z               "line": 374
2026-06-17T06:47:31.8535365Z             }
2026-06-17T06:47:31.8535709Z           ]
2026-06-17T06:47:31.8535961Z         },
2026-06-17T06:47:31.8536219Z         "impl": {
2026-06-17T06:47:31.8536481Z           "complete": true,
2026-06-17T06:47:31.8536734Z           "evidence": [
2026-06-17T06:47:31.8536978Z             {
2026-06-17T06:47:31.8537326Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-17T06:47:31.8537583Z               "line": 199
2026-06-17T06:47:31.8537834Z             },
2026-06-17T06:47:31.8538088Z             {
2026-06-17T06:47:31.8538426Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-17T06:47:31.8538688Z               "line": 303
2026-06-17T06:47:31.8538927Z             },
2026-06-17T06:47:31.8539237Z             {
2026-06-17T06:47:31.8539590Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-17T06:47:31.8539852Z               "line": 515
2026-06-17T06:47:31.8540108Z             },
2026-06-17T06:47:31.8540363Z             {
2026-06-17T06:47:31.8540701Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-17T06:47:31.8540964Z               "line": 530
2026-06-17T06:47:31.8541208Z             },
2026-06-17T06:47:31.8541451Z             {
2026-06-17T06:47:31.8541789Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-17T06:47:31.8542051Z               "line": 1127
2026-06-17T06:47:31.8542308Z             },
2026-06-17T06:47:31.8542556Z             {
2026-06-17T06:47:31.8542904Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-17T06:47:31.8543165Z               "line": 443
2026-06-17T06:47:31.8543421Z             },
2026-06-17T06:47:31.8543668Z             {
2026-06-17T06:47:31.8544022Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-17T06:47:31.8544279Z               "line": 590
2026-06-17T06:47:31.8544522Z             },
2026-06-17T06:47:31.8544761Z             {
2026-06-17T06:47:31.8545113Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-17T06:47:31.8545381Z               "line": 731
2026-06-17T06:47:31.8545613Z             }
2026-06-17T06:47:31.8545867Z           ]
2026-06-17T06:47:31.8546116Z         },
2026-06-17T06:47:31.8546369Z         "int": {
2026-06-17T06:47:31.8546641Z           "complete": false,
2026-06-17T06:47:31.8546899Z           "evidence": []
2026-06-17T06:47:31.8547150Z         },
2026-06-17T06:47:31.8547394Z         "unit": {
2026-06-17T06:47:31.8547666Z           "complete": true,
2026-06-17T06:47:31.8547920Z           "evidence": [
2026-06-17T06:47:31.8548163Z             {
2026-06-17T06:47:31.8548514Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-17T06:47:31.8548776Z               "line": 1155
2026-06-17T06:47:31.8549109Z             },
2026-06-17T06:47:31.8549367Z             {
2026-06-17T06:47:31.8549768Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-06-17T06:47:31.8550020Z               "line": 30
2026-06-17T06:47:31.8550272Z             }
2026-06-17T06:47:31.8550517Z           ]
2026-06-17T06:47:31.8550754Z         }
2026-06-17T06:47:31.8551008Z       }
2026-06-17T06:47:31.8551256Z     },
2026-06-17T06:47:31.8554844Z     {
2026-06-17T06:47:31.8555216Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-17T06:47:31.8555969Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-17T06:47:31.8556245Z       "requiredStages": [
2026-06-17T06:47:31.8556486Z         "impl",
2026-06-17T06:47:31.8556743Z         "unit"
2026-06-17T06:47:31.8556991Z       ],
2026-06-17T06:47:31.8557382Z       "stages": {
2026-06-17T06:47:31.8557635Z         "doc": {
2026-06-17T06:47:31.8557906Z           "complete": true,
2026-06-17T06:47:31.8558160Z           "evidence": [
2026-06-17T06:47:31.8558398Z             {
2026-06-17T06:47:31.8558709Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-17T06:47:31.8559035Z               "line": 139
2026-06-17T06:47:31.8559288Z             }
2026-06-17T06:47:31.8559541Z           ]
2026-06-17T06:47:31.8559785Z         },
2026-06-17T06:47:31.8560038Z         "impl": {
2026-06-17T06:47:31.8560414Z           "complete": true,
2026-06-17T06:47:31.8560677Z           "evidence": [
2026-06-17T06:47:31.8560919Z             {
2026-06-17T06:47:31.8561242Z               "path": "crates/spt-store/src/db.rs",
2026-06-17T06:47:31.8561502Z               "line": 29
2026-06-17T06:47:31.8561742Z             },
2026-06-17T06:47:31.8561994Z             {
2026-06-17T06:47:31.8562328Z               "path": "crates/spt-store/src/notif.rs",
2026-06-17T06:47:31.8562586Z               "line": 101
2026-06-17T06:47:31.8562832Z             },
2026-06-17T06:47:31.8563085Z             {
2026-06-17T06:47:31.8563447Z               "path": "crates/spt-store/src/registry.rs",
2026-06-17T06:47:31.8563700Z               "line": 30
2026-06-17T06:47:31.8563954Z             },
2026-06-17T06:47:31.8564200Z             {
2026-06-17T06:47:31.8564541Z               "path": "crates/spt-store/src/spool.rs",
2026-06-17T06:47:31.8564798Z               "line": 48
2026-06-17T06:47:31.8565036Z             }
2026-06-17T06:47:31.8565276Z           ]
2026-06-17T06:47:31.8565519Z         },
2026-06-17T06:47:31.8565762Z         "int": {
2026-06-17T06:47:31.8566034Z           "complete": false,
2026-06-17T06:47:31.8566300Z           "evidence": []
2026-06-17T06:47:31.8566553Z         },
2026-06-17T06:47:31.8566791Z         "unit": {
2026-06-17T06:47:31.8567060Z           "complete": true,
2026-06-17T06:47:31.8567317Z           "evidence": [
2026-06-17T06:47:31.8567556Z             {
2026-06-17T06:47:31.8567908Z               "path": "crates/spt-store/src/registry.rs",
2026-06-17T06:47:31.8568171Z               "line": 162
2026-06-17T06:47:31.8568419Z             }
2026-06-17T06:47:31.8568668Z           ]
2026-06-17T06:47:31.8568906Z         }
2026-06-17T06:47:31.8569206Z       }
2026-06-17T06:47:31.8569457Z     },
2026-06-17T06:47:31.8569701Z     {
2026-06-17T06:47:31.8570021Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-17T06:47:31.8571069Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-17T06:47:31.8571341Z       "requiredStages": [
2026-06-17T06:47:31.8571590Z         "doc",
2026-06-17T06:47:31.8571840Z         "impl",
2026-06-17T06:47:31.8572081Z         "unit"
2026-06-17T06:47:31.8572321Z       ],
2026-06-17T06:47:31.8572569Z       "stages": {
2026-06-17T06:47:31.8572826Z         "doc": {
2026-06-17T06:47:31.8573082Z           "complete": true,
2026-06-17T06:47:31.8573340Z           "evidence": [
2026-06-17T06:47:31.8573574Z             {
2026-06-17T06:47:31.8573879Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-17T06:47:31.8574133Z               "line": 151
2026-06-17T06:47:31.8574376Z             }
2026-06-17T06:47:31.8574622Z           ]
2026-06-17T06:47:31.8574864Z         },
2026-06-17T06:47:31.8575111Z         "impl": {
2026-06-17T06:47:31.8575373Z           "complete": true,
2026-06-17T06:47:31.8575639Z           "evidence": [
2026-06-17T06:47:31.8575893Z             {
2026-06-17T06:47:31.8576235Z               "path": "crates/spt-store/src/registry.rs",
2026-06-17T06:47:31.8576497Z               "line": 22
2026-06-17T06:47:31.8576743Z             }
2026-06-17T06:47:31.8576986Z           ]
2026-06-17T06:47:31.8577222Z         },
2026-06-17T06:47:31.8577472Z         "int": {
2026-06-17T06:47:31.8577741Z           "complete": false,
2026-06-17T06:47:31.8578012Z           "evidence": []
2026-06-17T06:47:31.8578255Z         },
2026-06-17T06:47:31.8578502Z         "unit": {
2026-06-17T06:47:31.8578869Z           "complete": true,
2026-06-17T06:47:31.8579204Z           "evidence": [
2026-06-17T06:47:31.8579456Z             {
2026-06-17T06:47:31.8579809Z               "path": "crates/spt-store/src/registry.rs",
2026-06-17T06:47:31.8580075Z               "line": 298
2026-06-17T06:47:31.8580318Z             }
2026-06-17T06:47:31.8580562Z           ]
2026-06-17T06:47:31.8580800Z         }
2026-06-17T06:47:31.8581038Z       }
2026-06-17T06:47:31.8581281Z     },
2026-06-17T06:47:31.8581520Z     {
2026-06-17T06:47:31.8581854Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-17T06:47:31.8583162Z       "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-17T06:47:31.8583429Z       "requiredStages": [
2026-06-17T06:47:31.8583681Z         "impl",
2026-06-17T06:47:31.8583924Z         "unit"
2026-06-17T06:47:31.8584167Z       ],
2026-06-17T06:47:31.8584416Z       "stages": {
2026-06-17T06:47:31.8584674Z         "doc": {
2026-06-17T06:47:31.8584946Z           "complete": true,
2026-06-17T06:47:31.8585224Z           "evidence": [
2026-06-17T06:47:31.8585466Z             {
2026-06-17T06:47:31.8585776Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-17T06:47:31.8586029Z               "line": 145
2026-06-17T06:47:31.8586268Z             }
2026-06-17T06:47:31.8586514Z           ]
2026-06-17T06:47:31.8586749Z         },
2026-06-17T06:47:31.8586997Z         "impl": {
2026-06-17T06:47:31.8587274Z           "complete": true,
2026-06-17T06:47:31.8587532Z           "evidence": [
2026-06-17T06:47:31.8587782Z             {
2026-06-17T06:47:31.8588151Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-17T06:47:31.8588409Z               "line": 160
2026-06-17T06:47:31.8588658Z             },
2026-06-17T06:47:31.8588896Z             {
2026-06-17T06:47:31.8589372Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:31.8589626Z               "line": 200
2026-06-17T06:47:31.8589874Z             },
2026-06-17T06:47:31.8590117Z             {
2026-06-17T06:47:31.8590470Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.8590730Z               "line": 298
2026-06-17T06:47:31.8590968Z             },
2026-06-17T06:47:31.8591222Z             {
2026-06-17T06:47:31.8591546Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-17T06:47:31.8591803Z               "line": 20
2026-06-17T06:47:31.8592052Z             }
2026-06-17T06:47:31.8592294Z           ]
2026-06-17T06:47:31.8592547Z         },
2026-06-17T06:47:31.8592789Z         "int": {
2026-06-17T06:47:31.8593060Z           "complete": false,
2026-06-17T06:47:31.8593321Z           "evidence": []
2026-06-17T06:47:31.8593588Z         },
2026-06-17T06:47:31.8593859Z         "unit": {
2026-06-17T06:47:31.8594160Z           "complete": true,
2026-06-17T06:47:31.8594436Z           "evidence": [
2026-06-17T06:47:31.8594699Z             {
2026-06-17T06:47:31.8595104Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:31.8595385Z               "line": 885
2026-06-17T06:47:31.8595662Z             },
2026-06-17T06:47:31.8595928Z             {
2026-06-17T06:47:31.8596336Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-17T06:47:31.8596613Z               "line": 88
2026-06-17T06:47:31.8596856Z             },
2026-06-17T06:47:31.8597099Z             {
2026-06-17T06:47:31.8597452Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.8597709Z               "line": 819
2026-06-17T06:47:31.8597956Z             },
2026-06-17T06:47:31.8598206Z             {
2026-06-17T06:47:31.8598565Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.8598822Z               "line": 838
2026-06-17T06:47:31.8599147Z             },
2026-06-17T06:47:31.8599409Z             {
2026-06-17T06:47:31.8599776Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-17T06:47:31.8600034Z               "line": 279
2026-06-17T06:47:31.8600271Z             },
2026-06-17T06:47:31.8600610Z             {
2026-06-17T06:47:31.8600944Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-17T06:47:31.8601205Z               "line": 82
2026-06-17T06:47:31.8601444Z             },
2026-06-17T06:47:31.8601696Z             {
2026-06-17T06:47:31.8602034Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-17T06:47:31.8602288Z               "line": 99
2026-06-17T06:47:31.8602539Z             },
2026-06-17T06:47:31.8602782Z             {
2026-06-17T06:47:31.8603116Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-17T06:47:31.8603473Z               "line": 119
2026-06-17T06:47:31.8603728Z             }
2026-06-17T06:47:31.8603982Z           ]
2026-06-17T06:47:31.8604215Z         }
2026-06-17T06:47:31.8604462Z       }
2026-06-17T06:47:31.8604705Z     },
2026-06-17T06:47:31.8604949Z     {
2026-06-17T06:47:31.8605264Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-17T06:47:31.8608812Z       "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-17T06:47:31.8609163Z       "requiredStages": [
2026-06-17T06:47:31.8609406Z         "doc",
2026-06-17T06:47:31.8609659Z         "impl",
2026-06-17T06:47:31.8609915Z         "unit"
2026-06-17T06:47:31.8610159Z       ],
2026-06-17T06:47:31.8610411Z       "stages": {
2026-06-17T06:47:31.8610660Z         "doc": {
2026-06-17T06:47:31.8610923Z           "complete": true,
2026-06-17T06:47:31.8611175Z           "evidence": [
2026-06-17T06:47:31.8611428Z             {
2026-06-17T06:47:31.8611736Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-17T06:47:31.8611995Z               "line": 157
2026-06-17T06:47:31.8612238Z             }
2026-06-17T06:47:31.8612475Z           ]
2026-06-17T06:47:31.8612718Z         },
2026-06-17T06:47:31.8612966Z         "impl": {
2026-06-17T06:47:31.8613248Z           "complete": true,
2026-06-17T06:47:31.8613501Z           "evidence": [
2026-06-17T06:47:31.8613748Z             {
2026-06-17T06:47:31.8614129Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-17T06:47:31.8614388Z               "line": 137
2026-06-17T06:47:31.8614641Z             },
2026-06-17T06:47:31.8614881Z             {
2026-06-17T06:47:31.8615265Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:31.8615514Z               "line": 512
2026-06-17T06:47:31.8615758Z             },
2026-06-17T06:47:31.8616006Z             {
2026-06-17T06:47:31.8616374Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:31.8616641Z               "line": 519
2026-06-17T06:47:31.8616877Z             },
2026-06-17T06:47:31.8617132Z             {
2026-06-17T06:47:31.8617494Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.8617752Z               "line": 227
2026-06-17T06:47:31.8618000Z             }
2026-06-17T06:47:31.8618248Z           ]
2026-06-17T06:47:31.8618500Z         },
2026-06-17T06:47:31.8618743Z         "int": {
2026-06-17T06:47:31.8619096Z           "complete": false,
2026-06-17T06:47:31.8619349Z           "evidence": []
2026-06-17T06:47:31.8619610Z         },
2026-06-17T06:47:31.8619861Z         "unit": {
2026-06-17T06:47:31.8620122Z           "complete": true,
2026-06-17T06:47:31.8620380Z           "evidence": [
2026-06-17T06:47:31.8620624Z             {
2026-06-17T06:47:31.8621019Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:31.8621277Z               "line": 1515
2026-06-17T06:47:31.8621530Z             },
2026-06-17T06:47:31.8621784Z             {
2026-06-17T06:47:31.8622165Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:31.8622420Z               "line": 1573
2026-06-17T06:47:31.8622769Z             },
2026-06-17T06:47:31.8623026Z             {
2026-06-17T06:47:31.8623394Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.8623660Z               "line": 851
2026-06-17T06:47:31.8623913Z             }
2026-06-17T06:47:31.8624151Z           ]
2026-06-17T06:47:31.8624400Z         }
2026-06-17T06:47:31.8624636Z       }
2026-06-17T06:47:31.8624892Z     },
2026-06-17T06:47:31.8625140Z     {
2026-06-17T06:47:31.8625469Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-17T06:47:31.8626131Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-17T06:47:31.8626403Z       "requiredStages": [
2026-06-17T06:47:31.8626671Z         "impl",
2026-06-17T06:47:31.8626914Z         "unit"
2026-06-17T06:47:31.8627166Z       ],
2026-06-17T06:47:31.8627408Z       "stages": {
2026-06-17T06:47:31.8627660Z         "doc": {
2026-06-17T06:47:31.8627940Z           "complete": false,
2026-06-17T06:47:31.8628203Z           "evidence": []
2026-06-17T06:47:31.8628454Z         },
2026-06-17T06:47:31.8628707Z         "impl": {
2026-06-17T06:47:31.8629079Z           "complete": true,
2026-06-17T06:47:31.8629370Z           "evidence": [
2026-06-17T06:47:31.8629642Z             {
2026-06-17T06:47:31.8630003Z               "path": "crates/spt-store/src/proc.rs",
2026-06-17T06:47:31.8630287Z               "line": 15
2026-06-17T06:47:31.8630564Z             },
2026-06-17T06:47:31.8630822Z             {
2026-06-17T06:47:31.8631203Z               "path": "crates/spt-store/src/registry.rs",
2026-06-17T06:47:31.8631489Z               "line": 55
2026-06-17T06:47:31.8631766Z             },
2026-06-17T06:47:31.8632014Z             {
2026-06-17T06:47:31.8632358Z               "path": "crates/spt-store/src/registry.rs",
2026-06-17T06:47:31.8632620Z               "line": 66
2026-06-17T06:47:31.8632861Z             },
2026-06-17T06:47:31.8633124Z             {
2026-06-17T06:47:31.8633472Z               "path": "crates/spt-store/src/registry.rs",
2026-06-17T06:47:31.8633730Z               "line": 115
2026-06-17T06:47:31.8633977Z             },
2026-06-17T06:47:31.8634225Z             {
2026-06-17T06:47:31.8634574Z               "path": "crates/spt-store/src/registry.rs",
2026-06-17T06:47:31.8634830Z               "line": 138
2026-06-17T06:47:31.8635078Z             }
2026-06-17T06:47:31.8635329Z           ]
2026-06-17T06:47:31.8635571Z         },
2026-06-17T06:47:31.8635819Z         "int": {
2026-06-17T06:47:31.8636095Z           "complete": false,
2026-06-17T06:47:31.8636362Z           "evidence": []
2026-06-17T06:47:31.8636601Z         },
2026-06-17T06:47:31.8636859Z         "unit": {
2026-06-17T06:47:31.8637126Z           "complete": true,
2026-06-17T06:47:31.8637387Z           "evidence": [
2026-06-17T06:47:31.8637635Z             {
2026-06-17T06:47:31.8637954Z               "path": "crates/spt-store/src/proc.rs",
2026-06-17T06:47:31.8638211Z               "line": 149
2026-06-17T06:47:31.8638457Z             },
2026-06-17T06:47:31.8638709Z             {
2026-06-17T06:47:31.8639121Z               "path": "crates/spt-store/src/proc.rs",
2026-06-17T06:47:31.8639387Z               "line": 155
2026-06-17T06:47:31.8639625Z             },
2026-06-17T06:47:31.8639873Z             {
2026-06-17T06:47:31.8640207Z               "path": "crates/spt-store/src/proc.rs",
2026-06-17T06:47:31.8640460Z               "line": 169
2026-06-17T06:47:31.8640721Z             },
2026-06-17T06:47:31.8640962Z             {
2026-06-17T06:47:31.8641291Z               "path": "crates/spt-store/src/proc.rs",
2026-06-17T06:47:31.8641553Z               "line": 178
2026-06-17T06:47:31.8641787Z             },
2026-06-17T06:47:31.8642040Z             {
2026-06-17T06:47:31.8642378Z               "path": "crates/spt-store/src/registry.rs",
2026-06-17T06:47:31.8642641Z               "line": 195
2026-06-17T06:47:31.8642889Z             },
2026-06-17T06:47:31.8643136Z             {
2026-06-17T06:47:31.8643487Z               "path": "crates/spt-store/src/registry.rs",
2026-06-17T06:47:31.8643855Z               "line": 208
2026-06-17T06:47:31.8644117Z             },
2026-06-17T06:47:31.8644361Z             {
2026-06-17T06:47:31.8644708Z               "path": "crates/spt-store/src/registry.rs",
2026-06-17T06:47:31.8644976Z               "line": 271
2026-06-17T06:47:31.8645210Z             },
2026-06-17T06:47:31.8645448Z             {
2026-06-17T06:47:31.8645790Z               "path": "crates/spt-store/src/registry.rs",
2026-06-17T06:47:31.8646045Z               "line": 290
2026-06-17T06:47:31.8646298Z             },
2026-06-17T06:47:31.8646641Z             {
2026-06-17T06:47:31.8646979Z               "path": "crates/spt-store/src/registry.rs",
2026-06-17T06:47:31.8647228Z               "line": 319
2026-06-17T06:47:31.8647485Z             }
2026-06-17T06:47:31.8647720Z           ]
2026-06-17T06:47:31.8647962Z         }
2026-06-17T06:47:31.8648200Z       }
2026-06-17T06:47:31.8648454Z     },
2026-06-17T06:47:31.8648700Z     {
2026-06-17T06:47:31.8649080Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-17T06:47:31.8649861Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-17T06:47:31.8650142Z       "requiredStages": [
2026-06-17T06:47:31.8650404Z         "impl",
2026-06-17T06:47:31.8650644Z         "unit",
2026-06-17T06:47:31.8650883Z         "int"
2026-06-17T06:47:31.8651138Z       ],
2026-06-17T06:47:31.8651384Z       "stages": {
2026-06-17T06:47:31.8651632Z         "doc": {
2026-06-17T06:47:31.8651895Z           "complete": false,
2026-06-17T06:47:31.8652171Z           "evidence": []
2026-06-17T06:47:31.8652418Z         },
2026-06-17T06:47:31.8652690Z         "impl": {
2026-06-17T06:47:31.8652962Z           "complete": true,
2026-06-17T06:47:31.8653225Z           "evidence": [
2026-06-17T06:47:31.8653473Z             {
2026-06-17T06:47:31.8653812Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-17T06:47:31.8654072Z               "line": 447
2026-06-17T06:47:31.8654315Z             },
2026-06-17T06:47:31.8654568Z             {
2026-06-17T06:47:31.8654907Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-17T06:47:31.8655159Z               "line": 867
2026-06-17T06:47:31.8655399Z             },
2026-06-17T06:47:31.8655640Z             {
2026-06-17T06:47:31.8655984Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-17T06:47:31.8656240Z               "line": 912
2026-06-17T06:47:31.8656496Z             },
2026-06-17T06:47:31.8656740Z             {
2026-06-17T06:47:31.8657088Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-17T06:47:31.8657402Z               "line": 937
2026-06-17T06:47:31.8657641Z             },
2026-06-17T06:47:31.8657893Z             {
2026-06-17T06:47:31.8658261Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:31.8658547Z               "line": 987
2026-06-17T06:47:31.8658799Z             },
2026-06-17T06:47:31.8659122Z             {
2026-06-17T06:47:31.8659491Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:31.8659787Z               "line": 1113
2026-06-17T06:47:31.8660064Z             },
2026-06-17T06:47:31.8660312Z             {
2026-06-17T06:47:31.8660650Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:31.8660913Z               "line": 1244
2026-06-17T06:47:31.8661152Z             },
2026-06-17T06:47:31.8661418Z             {
2026-06-17T06:47:31.8661760Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:31.8662039Z               "line": 1292
2026-06-17T06:47:31.8662296Z             },
2026-06-17T06:47:31.8662555Z             {
2026-06-17T06:47:31.8662926Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-17T06:47:31.8663193Z               "line": 46
2026-06-17T06:47:31.8663447Z             },
2026-06-17T06:47:31.8663704Z             {
2026-06-17T06:47:31.8664156Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-17T06:47:31.8664434Z               "line": 167
2026-06-17T06:47:31.8664694Z             },
2026-06-17T06:47:31.8665062Z             {
2026-06-17T06:47:31.8665414Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-17T06:47:31.8665677Z               "line": 132
2026-06-17T06:47:31.8665934Z             },
2026-06-17T06:47:31.8666196Z             {
2026-06-17T06:47:31.8666530Z               "path": "crates/spt-store/src/spool.rs",
2026-06-17T06:47:31.8666791Z               "line": 137
2026-06-17T06:47:31.8667047Z             },
2026-06-17T06:47:31.8667300Z             {
2026-06-17T06:47:31.8667634Z               "path": "crates/spt-store/src/spool.rs",
2026-06-17T06:47:31.8667991Z               "line": 183
2026-06-17T06:47:31.8668248Z             }
2026-06-17T06:47:31.8668496Z           ]
2026-06-17T06:47:31.8668739Z         },
2026-06-17T06:47:31.8669054Z         "int": {
2026-06-17T06:47:31.8669340Z           "complete": true,
2026-06-17T06:47:31.8669597Z           "evidence": [
2026-06-17T06:47:31.8669844Z             {
2026-06-17T06:47:31.8670219Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-17T06:47:31.8670472Z               "line": 27
2026-06-17T06:47:31.8670724Z             },
2026-06-17T06:47:31.8670971Z             {
2026-06-17T06:47:31.8671349Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-17T06:47:31.8671620Z               "line": 148
2026-06-17T06:47:31.8671863Z             },
2026-06-17T06:47:31.8672113Z             {
2026-06-17T06:47:31.8672481Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-17T06:47:31.8672757Z               "line": 200
2026-06-17T06:47:31.8673010Z             }
2026-06-17T06:47:31.8673267Z           ]
2026-06-17T06:47:31.8673524Z         },
2026-06-17T06:47:31.8673935Z         "unit": {
2026-06-17T06:47:31.8674221Z           "complete": true,
2026-06-17T06:47:31.8674473Z           "evidence": [
2026-06-17T06:47:31.8674721Z             {
2026-06-17T06:47:31.8675073Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-17T06:47:31.8675337Z               "line": 313
2026-06-17T06:47:31.8675599Z             },
2026-06-17T06:47:31.8675851Z             {
2026-06-17T06:47:31.8676199Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-17T06:47:31.8676470Z               "line": 345
2026-06-17T06:47:31.8676727Z             },
2026-06-17T06:47:31.8676975Z             {
2026-06-17T06:47:31.8677323Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-17T06:47:31.8677583Z               "line": 366
2026-06-17T06:47:31.8677826Z             },
2026-06-17T06:47:31.8678083Z             {
2026-06-17T06:47:31.8678427Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-17T06:47:31.8678698Z               "line": 508
2026-06-17T06:47:31.8679027Z             },
2026-06-17T06:47:31.8679290Z             {
2026-06-17T06:47:31.8679652Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-17T06:47:31.8679910Z               "line": 289
2026-06-17T06:47:31.8680157Z             },
2026-06-17T06:47:31.8680404Z             {
2026-06-17T06:47:31.8680761Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-17T06:47:31.8681009Z               "line": 230
2026-06-17T06:47:31.8681255Z             },
2026-06-17T06:47:31.8681503Z             {
2026-06-17T06:47:31.8681837Z               "path": "crates/spt-store/src/spool.rs",
2026-06-17T06:47:31.8682109Z               "line": 526
2026-06-17T06:47:31.8682358Z             },
2026-06-17T06:47:31.8682611Z             {
2026-06-17T06:47:31.8682956Z               "path": "crates/spt-store/src/spool.rs",
2026-06-17T06:47:31.8683226Z               "line": 556
2026-06-17T06:47:31.8683474Z             }
2026-06-17T06:47:31.8683722Z           ]
2026-06-17T06:47:31.8683975Z         }
2026-06-17T06:47:31.8684219Z       }
2026-06-17T06:47:31.8684461Z     },
2026-06-17T06:47:31.8684709Z     {
2026-06-17T06:47:31.8685071Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-06-17T06:47:31.8689927Z       "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-17T06:47:31.8690212Z       "requiredStages": [
2026-06-17T06:47:31.8690470Z         "doc",
2026-06-17T06:47:31.8690717Z         "impl",
2026-06-17T06:47:31.8691081Z         "unit"
2026-06-17T06:47:31.8691335Z       ],
2026-06-17T06:47:31.8691588Z       "stages": {
2026-06-17T06:47:31.8691840Z         "doc": {
2026-06-17T06:47:31.8692102Z           "complete": true,
2026-06-17T06:47:31.8692369Z           "evidence": [
2026-06-17T06:47:31.8692617Z             {
2026-06-17T06:47:31.8692932Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-17T06:47:31.8693204Z               "line": 314
2026-06-17T06:47:31.8693450Z             }
2026-06-17T06:47:31.8693700Z           ]
2026-06-17T06:47:31.8693930Z         },
2026-06-17T06:47:31.8694188Z         "impl": {
2026-06-17T06:47:31.8694464Z           "complete": true,
2026-06-17T06:47:31.8694716Z           "evidence": [
2026-06-17T06:47:31.8694978Z             {
2026-06-17T06:47:31.8695370Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-17T06:47:31.8695636Z               "line": 33
2026-06-17T06:47:31.8695889Z             },
2026-06-17T06:47:31.8696142Z             {
2026-06-17T06:47:31.8696541Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-17T06:47:31.8696795Z               "line": 39
2026-06-17T06:47:31.8697043Z             }
2026-06-17T06:47:31.8697285Z           ]
2026-06-17T06:47:31.8697532Z         },
2026-06-17T06:47:31.8697771Z         "int": {
2026-06-17T06:47:31.8698053Z           "complete": false,
2026-06-17T06:47:31.8698321Z           "evidence": []
2026-06-17T06:47:31.8698562Z         },
2026-06-17T06:47:31.8698817Z         "unit": {
2026-06-17T06:47:31.8699174Z           "complete": true,
2026-06-17T06:47:31.8699451Z           "evidence": [
2026-06-17T06:47:31.8699700Z             {
2026-06-17T06:47:31.8700090Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-17T06:47:31.8700353Z               "line": 95
2026-06-17T06:47:31.8700606Z             }
2026-06-17T06:47:31.8700855Z           ]
2026-06-17T06:47:31.8701092Z         }
2026-06-17T06:47:31.8701344Z       }
2026-06-17T06:47:31.8701585Z     },
2026-06-17T06:47:31.8701838Z     {
2026-06-17T06:47:31.8702148Z       "id": "REQ-HAZARD-SELF-ELEVATE",
2026-06-17T06:47:31.8708122Z       "title": "Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.",
2026-06-17T06:47:31.8708412Z       "requiredStages": [
2026-06-17T06:47:31.8708674Z         "unit"
2026-06-17T06:47:31.8708914Z       ],
2026-06-17T06:47:31.8709232Z       "stages": {
2026-06-17T06:47:31.8709487Z         "doc": {
2026-06-17T06:47:31.8709759Z           "complete": false,
2026-06-17T06:47:31.8710030Z           "evidence": []
2026-06-17T06:47:31.8710269Z         },
2026-06-17T06:47:31.8710518Z         "impl": {
2026-06-17T06:47:31.8710790Z           "complete": true,
2026-06-17T06:47:31.8711047Z           "evidence": [
2026-06-17T06:47:31.8711299Z             {
2026-06-17T06:47:31.8711725Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.8711989Z               "line": 3244
2026-06-17T06:47:31.8712239Z             },
2026-06-17T06:47:31.8712488Z             {
2026-06-17T06:47:31.8712799Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.8713065Z               "line": 3296
2026-06-17T06:47:31.8713313Z             },
2026-06-17T06:47:31.8713570Z             {
2026-06-17T06:47:31.8713890Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.8714152Z               "line": 3341
2026-06-17T06:47:31.8714494Z             },
2026-06-17T06:47:31.8714735Z             {
2026-06-17T06:47:31.8715059Z               "path": "crates/spt/src/elevation.rs",
2026-06-17T06:47:31.8715317Z               "line": 92
2026-06-17T06:47:31.8715571Z             },
2026-06-17T06:47:31.8715822Z             {
2026-06-17T06:47:31.8716156Z               "path": "crates/spt/src/elevation.rs",
2026-06-17T06:47:31.8716418Z               "line": 148
2026-06-17T06:47:31.8716666Z             },
2026-06-17T06:47:31.8716919Z             {
2026-06-17T06:47:31.8717248Z               "path": "crates/spt/src/elevation.rs",
2026-06-17T06:47:31.8717514Z               "line": 192
2026-06-17T06:47:31.8717766Z             },
2026-06-17T06:47:31.8718009Z             {
2026-06-17T06:47:31.8718343Z               "path": "crates/spt/src/elevation.rs",
2026-06-17T06:47:31.8718597Z               "line": 200
2026-06-17T06:47:31.8718859Z             },
2026-06-17T06:47:31.8719183Z             {
2026-06-17T06:47:31.8719521Z               "path": "crates/spt/src/elevation.rs",
2026-06-17T06:47:31.8719782Z               "line": 211
2026-06-17T06:47:31.8720024Z             },
2026-06-17T06:47:31.8720280Z             {
2026-06-17T06:47:31.8720600Z               "path": "crates/spt/src/elevation.rs",
2026-06-17T06:47:31.8720872Z               "line": 265
2026-06-17T06:47:31.8721106Z             },
2026-06-17T06:47:31.8721364Z             {
2026-06-17T06:47:31.8721693Z               "path": "crates/spt/src/elevation.rs",
2026-06-17T06:47:31.8721956Z               "line": 279
2026-06-17T06:47:31.8722208Z             }
2026-06-17T06:47:31.8722464Z           ]
2026-06-17T06:47:31.8722715Z         },
2026-06-17T06:47:31.8722968Z         "int": {
2026-06-17T06:47:31.8723229Z           "complete": false,
2026-06-17T06:47:31.8723505Z           "evidence": []
2026-06-17T06:47:31.8723744Z         },
2026-06-17T06:47:31.8724001Z         "unit": {
2026-06-17T06:47:31.8724274Z           "complete": true,
2026-06-17T06:47:31.8724541Z           "evidence": [
2026-06-17T06:47:31.8724794Z             {
2026-06-17T06:47:31.8725121Z               "path": "crates/spt/src/elevation.rs",
2026-06-17T06:47:31.8725386Z               "line": 419
2026-06-17T06:47:31.8725638Z             },
2026-06-17T06:47:31.8725891Z             {
2026-06-17T06:47:31.8726220Z               "path": "crates/spt/src/elevation.rs",
2026-06-17T06:47:31.8726488Z               "line": 470
2026-06-17T06:47:31.8726731Z             },
2026-06-17T06:47:31.8726993Z             {
2026-06-17T06:47:31.8727322Z               "path": "crates/spt/src/elevation.rs",
2026-06-17T06:47:31.8727584Z               "line": 499
2026-06-17T06:47:31.8727841Z             },
2026-06-17T06:47:31.8728089Z             {
2026-06-17T06:47:31.8728423Z               "path": "crates/spt/src/elevation.rs",
2026-06-17T06:47:31.8728681Z               "line": 526
2026-06-17T06:47:31.8728932Z             }
2026-06-17T06:47:31.8729246Z           ]
2026-06-17T06:47:31.8729490Z         }
2026-06-17T06:47:31.8729738Z       }
2026-06-17T06:47:31.8729983Z     },
2026-06-17T06:47:31.8730237Z     {
2026-06-17T06:47:31.8730564Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-17T06:47:31.8731117Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-17T06:47:31.8731399Z       "requiredStages": [
2026-06-17T06:47:31.8731643Z         "impl",
2026-06-17T06:47:31.8731891Z         "unit"
2026-06-17T06:47:31.8732138Z       ],
2026-06-17T06:47:31.8732400Z       "stages": {
2026-06-17T06:47:31.8732753Z         "doc": {
2026-06-17T06:47:31.8733033Z           "complete": false,
2026-06-17T06:47:31.8733303Z           "evidence": []
2026-06-17T06:47:31.8733556Z         },
2026-06-17T06:47:31.8733809Z         "impl": {
2026-06-17T06:47:31.8734070Z           "complete": true,
2026-06-17T06:47:31.8734332Z           "evidence": [
2026-06-17T06:47:31.8734581Z             {
2026-06-17T06:47:31.8734966Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-17T06:47:31.8735228Z               "line": 62
2026-06-17T06:47:31.8735571Z             },
2026-06-17T06:47:31.8735828Z             {
2026-06-17T06:47:31.8736208Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-17T06:47:31.8736466Z               "line": 71
2026-06-17T06:47:31.8736719Z             },
2026-06-17T06:47:31.8736962Z             {
2026-06-17T06:47:31.8737339Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-17T06:47:31.8737591Z               "line": 80
2026-06-17T06:47:31.8737853Z             },
2026-06-17T06:47:31.8738091Z             {
2026-06-17T06:47:31.8738467Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-17T06:47:31.8738730Z               "line": 88
2026-06-17T06:47:31.8739068Z             },
2026-06-17T06:47:31.8739326Z             {
2026-06-17T06:47:31.8739660Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.8739927Z               "line": 33
2026-06-17T06:47:31.8740166Z             },
2026-06-17T06:47:31.8740441Z             {
2026-06-17T06:47:31.8740783Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.8741043Z               "line": 65
2026-06-17T06:47:31.8741296Z             },
2026-06-17T06:47:31.8741550Z             {
2026-06-17T06:47:31.8741878Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.8742136Z               "line": 74
2026-06-17T06:47:31.8742388Z             },
2026-06-17T06:47:31.8742627Z             {
2026-06-17T06:47:31.8742956Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.8743218Z               "line": 93
2026-06-17T06:47:31.8743453Z             },
2026-06-17T06:47:31.8743703Z             {
2026-06-17T06:47:31.8744040Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.8744306Z               "line": 102
2026-06-17T06:47:31.8744550Z             },
2026-06-17T06:47:31.8744798Z             {
2026-06-17T06:47:31.8745136Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.8745399Z               "line": 111
2026-06-17T06:47:31.8745657Z             },
2026-06-17T06:47:31.8745909Z             {
2026-06-17T06:47:31.8746251Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.8746510Z               "line": 122
2026-06-17T06:47:31.8746759Z             },
2026-06-17T06:47:31.8747016Z             {
2026-06-17T06:47:31.8747340Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.8747604Z               "line": 140
2026-06-17T06:47:31.8747851Z             },
2026-06-17T06:47:31.8748108Z             {
2026-06-17T06:47:31.8754757Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.8755081Z               "line": 149
2026-06-17T06:47:31.8755334Z             },
2026-06-17T06:47:31.8755582Z             {
2026-06-17T06:47:31.8755935Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.8756198Z               "line": 158
2026-06-17T06:47:31.8756455Z             },
2026-06-17T06:47:31.8756706Z             {
2026-06-17T06:47:31.8757046Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.8757324Z               "line": 169
2026-06-17T06:47:31.8757567Z             },
2026-06-17T06:47:31.8757820Z             {
2026-06-17T06:47:31.8758154Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.8758421Z               "line": 177
2026-06-17T06:47:31.8758673Z             },
2026-06-17T06:47:31.8758921Z             {
2026-06-17T06:47:31.8759375Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.8759818Z               "line": 186
2026-06-17T06:47:31.8760070Z             },
2026-06-17T06:47:31.8760317Z             {
2026-06-17T06:47:31.8760646Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.8760903Z               "line": 195
2026-06-17T06:47:31.8761152Z             },
2026-06-17T06:47:31.8761405Z             {
2026-06-17T06:47:31.8761733Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.8761995Z               "line": 204
2026-06-17T06:47:31.8762259Z             },
2026-06-17T06:47:31.8762612Z             {
2026-06-17T06:47:31.8762961Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.8763213Z               "line": 216
2026-06-17T06:47:31.8763465Z             },
2026-06-17T06:47:31.8763714Z             {
2026-06-17T06:47:31.8764057Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.8764323Z               "line": 223
2026-06-17T06:47:31.8764563Z             },
2026-06-17T06:47:31.8764818Z             {
2026-06-17T06:47:31.8765155Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.8765426Z               "line": 232
2026-06-17T06:47:31.8765674Z             },
2026-06-17T06:47:31.8765923Z             {
2026-06-17T06:47:31.8766266Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.8766519Z               "line": 239
2026-06-17T06:47:31.8766777Z             },
2026-06-17T06:47:31.8767025Z             {
2026-06-17T06:47:31.8767361Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.8767616Z               "line": 306
2026-06-17T06:47:31.8767870Z             },
2026-06-17T06:47:31.8768123Z             {
2026-06-17T06:47:31.8768456Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.8768714Z               "line": 318
2026-06-17T06:47:31.8769057Z             },
2026-06-17T06:47:31.8769306Z             {
2026-06-17T06:47:31.8769654Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.8769916Z               "line": 405
2026-06-17T06:47:31.8770171Z             }
2026-06-17T06:47:31.8770406Z           ]
2026-06-17T06:47:31.8770659Z         },
2026-06-17T06:47:31.8770907Z         "int": {
2026-06-17T06:47:31.8771187Z           "complete": false,
2026-06-17T06:47:31.8771449Z           "evidence": []
2026-06-17T06:47:31.8771697Z         },
2026-06-17T06:47:31.8771951Z         "unit": {
2026-06-17T06:47:31.8772214Z           "complete": true,
2026-06-17T06:47:31.8772473Z           "evidence": [
2026-06-17T06:47:31.8772710Z             {
2026-06-17T06:47:31.8773043Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.8773301Z               "line": 487
2026-06-17T06:47:31.8773540Z             },
2026-06-17T06:47:31.8773783Z             {
2026-06-17T06:47:31.8774112Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.8774369Z               "line": 528
2026-06-17T06:47:31.8774622Z             },
2026-06-17T06:47:31.8774869Z             {
2026-06-17T06:47:31.8775212Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.8775501Z               "line": 541
2026-06-17T06:47:31.8775754Z             },
2026-06-17T06:47:31.8775996Z             {
2026-06-17T06:47:31.8776340Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.8776597Z               "line": 627
2026-06-17T06:47:31.8776850Z             }
2026-06-17T06:47:31.8777098Z           ]
2026-06-17T06:47:31.8777342Z         }
2026-06-17T06:47:31.8777585Z       }
2026-06-17T06:47:31.8777836Z     },
2026-06-17T06:47:31.8778087Z     {
2026-06-17T06:47:31.8778383Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-17T06:47:31.8779050Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-17T06:47:31.8779317Z       "requiredStages": [
2026-06-17T06:47:31.8779584Z         "impl",
2026-06-17T06:47:31.8779846Z         "unit"
2026-06-17T06:47:31.8780089Z       ],
2026-06-17T06:47:31.8780346Z       "stages": {
2026-06-17T06:47:31.8780703Z         "doc": {
2026-06-17T06:47:31.8780989Z           "complete": false,
2026-06-17T06:47:31.8781256Z           "evidence": []
2026-06-17T06:47:31.8781505Z         },
2026-06-17T06:47:31.8781752Z         "impl": {
2026-06-17T06:47:31.8782018Z           "complete": true,
2026-06-17T06:47:31.8782277Z           "evidence": [
2026-06-17T06:47:31.8782516Z             {
2026-06-17T06:47:31.8782854Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-17T06:47:31.8783100Z               "line": 152
2026-06-17T06:47:31.8783350Z             },
2026-06-17T06:47:31.8783699Z             {
2026-06-17T06:47:31.8784062Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:31.8784324Z               "line": 167
2026-06-17T06:47:31.8784576Z             }
2026-06-17T06:47:31.8784820Z           ]
2026-06-17T06:47:31.8785073Z         },
2026-06-17T06:47:31.8785331Z         "int": {
2026-06-17T06:47:31.8785598Z           "complete": false,
2026-06-17T06:47:31.8785853Z           "evidence": []
2026-06-17T06:47:31.8786104Z         },
2026-06-17T06:47:31.8786352Z         "unit": {
2026-06-17T06:47:31.8786615Z           "complete": true,
2026-06-17T06:47:31.8786876Z           "evidence": [
2026-06-17T06:47:31.8787128Z             {
2026-06-17T06:47:31.8787448Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-17T06:47:31.8787705Z               "line": 274
2026-06-17T06:47:31.8787963Z             },
2026-06-17T06:47:31.8788198Z             {
2026-06-17T06:47:31.8788554Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:31.8788804Z               "line": 832
2026-06-17T06:47:31.8789133Z             },
2026-06-17T06:47:31.8789399Z             {
2026-06-17T06:47:31.8789767Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:31.8790029Z               "line": 845
2026-06-17T06:47:31.8790277Z             }
2026-06-17T06:47:31.8790520Z           ]
2026-06-17T06:47:31.8790770Z         }
2026-06-17T06:47:31.8791027Z       }
2026-06-17T06:47:31.8791277Z     },
2026-06-17T06:47:31.8791531Z     {
2026-06-17T06:47:31.8791841Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-17T06:47:31.8792221Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-17T06:47:31.8792503Z       "requiredStages": [
2026-06-17T06:47:31.8792742Z         "impl",
2026-06-17T06:47:31.8792991Z         "unit"
2026-06-17T06:47:31.8793242Z       ],
2026-06-17T06:47:31.8793503Z       "stages": {
2026-06-17T06:47:31.8793759Z         "doc": {
2026-06-17T06:47:31.8794022Z           "complete": false,
2026-06-17T06:47:31.8794293Z           "evidence": []
2026-06-17T06:47:31.8794540Z         },
2026-06-17T06:47:31.8794793Z         "impl": {
2026-06-17T06:47:31.8795065Z           "complete": true,
2026-06-17T06:47:31.8795327Z           "evidence": [
2026-06-17T06:47:31.8795576Z             {
2026-06-17T06:47:31.8795919Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:31.8796187Z               "line": 116
2026-06-17T06:47:31.8796432Z             },
2026-06-17T06:47:31.8796683Z             {
2026-06-17T06:47:31.8797049Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-17T06:47:31.8797308Z               "line": 481
2026-06-17T06:47:31.8797565Z             }
2026-06-17T06:47:31.8797814Z           ]
2026-06-17T06:47:31.8798065Z         },
2026-06-17T06:47:31.8798304Z         "int": {
2026-06-17T06:47:31.8798575Z           "complete": false,
2026-06-17T06:47:31.8798839Z           "evidence": []
2026-06-17T06:47:31.8799151Z         },
2026-06-17T06:47:31.8799417Z         "unit": {
2026-06-17T06:47:31.8799683Z           "complete": true,
2026-06-17T06:47:31.8799955Z           "evidence": [
2026-06-17T06:47:31.8800194Z             {
2026-06-17T06:47:31.8800565Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-17T06:47:31.8800828Z               "line": 515
2026-06-17T06:47:31.8801076Z             }
2026-06-17T06:47:31.8801320Z           ]
2026-06-17T06:47:31.8801557Z         }
2026-06-17T06:47:31.8801800Z       }
2026-06-17T06:47:31.8802029Z     },
2026-06-17T06:47:31.8802382Z     {
2026-06-17T06:47:31.8802730Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-17T06:47:31.8803211Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-17T06:47:31.8803497Z       "requiredStages": [
2026-06-17T06:47:31.8803740Z         "impl",
2026-06-17T06:47:31.8804002Z         "unit"
2026-06-17T06:47:31.8804254Z       ],
2026-06-17T06:47:31.8804509Z       "stages": {
2026-06-17T06:47:31.8804757Z         "doc": {
2026-06-17T06:47:31.8805029Z           "complete": false,
2026-06-17T06:47:31.8805386Z           "evidence": []
2026-06-17T06:47:31.8805635Z         },
2026-06-17T06:47:31.8805892Z         "impl": {
2026-06-17T06:47:31.8806160Z           "complete": true,
2026-06-17T06:47:31.8806428Z           "evidence": [
2026-06-17T06:47:31.8806674Z             {
2026-06-17T06:47:31.8807035Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.8807295Z               "line": 527
2026-06-17T06:47:31.8807539Z             },
2026-06-17T06:47:31.8807792Z             {
2026-06-17T06:47:31.8808130Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-17T06:47:31.8808378Z               "line": 28
2026-06-17T06:47:31.8808626Z             }
2026-06-17T06:47:31.8808859Z           ]
2026-06-17T06:47:31.8809202Z         },
2026-06-17T06:47:31.8809459Z         "int": {
2026-06-17T06:47:31.8809735Z           "complete": false,
2026-06-17T06:47:31.8809996Z           "evidence": []
2026-06-17T06:47:31.8810253Z         },
2026-06-17T06:47:31.8810505Z         "unit": {
2026-06-17T06:47:31.8810772Z           "complete": true,
2026-06-17T06:47:31.8811044Z           "evidence": [
2026-06-17T06:47:31.8811293Z             {
2026-06-17T06:47:31.8811632Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-17T06:47:31.8811890Z               "line": 229
2026-06-17T06:47:31.8812137Z             }
2026-06-17T06:47:31.8812388Z           ]
2026-06-17T06:47:31.8812632Z         }
2026-06-17T06:47:31.8812880Z       }
2026-06-17T06:47:31.8813128Z     },
2026-06-17T06:47:31.8813375Z     {
2026-06-17T06:47:31.8813685Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-17T06:47:31.8814077Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-17T06:47:31.8814357Z       "requiredStages": [],
2026-06-17T06:47:31.8814624Z       "stages": {
2026-06-17T06:47:31.8814875Z         "doc": {
2026-06-17T06:47:31.8815142Z           "complete": false,
2026-06-17T06:47:31.8815413Z           "evidence": []
2026-06-17T06:47:31.8815670Z         },
2026-06-17T06:47:31.8815928Z         "impl": {
2026-06-17T06:47:31.8816204Z           "complete": false,
2026-06-17T06:47:31.8816467Z           "evidence": []
2026-06-17T06:47:31.8816734Z         },
2026-06-17T06:47:31.8817016Z         "int": {
2026-06-17T06:47:31.8817312Z           "complete": false,
2026-06-17T06:47:31.8817595Z           "evidence": []
2026-06-17T06:47:31.8817869Z         },
2026-06-17T06:47:31.8818151Z         "unit": {
2026-06-17T06:47:31.8818447Z           "complete": false,
2026-06-17T06:47:31.8818734Z           "evidence": []
2026-06-17T06:47:31.8819072Z         }
2026-06-17T06:47:31.8819325Z       }
2026-06-17T06:47:31.8819559Z     },
2026-06-17T06:47:31.8819801Z     {
2026-06-17T06:47:31.8820124Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-17T06:47:31.8820551Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-17T06:47:31.8820833Z       "requiredStages": [
2026-06-17T06:47:31.8821075Z         "impl",
2026-06-17T06:47:31.8821328Z         "unit"
2026-06-17T06:47:31.8821581Z       ],
2026-06-17T06:47:31.8821835Z       "stages": {
2026-06-17T06:47:31.8822087Z         "doc": {
2026-06-17T06:47:31.8822349Z           "complete": false,
2026-06-17T06:47:31.8822616Z           "evidence": []
2026-06-17T06:47:31.8822859Z         },
2026-06-17T06:47:31.8823116Z         "impl": {
2026-06-17T06:47:31.8823382Z           "complete": true,
2026-06-17T06:47:31.8823639Z           "evidence": [
2026-06-17T06:47:31.8823883Z             {
2026-06-17T06:47:31.8824307Z               "path": "crates/spt-live/src/turn.rs",
2026-06-17T06:47:31.8824574Z               "line": 19
2026-06-17T06:47:31.8824812Z             },
2026-06-17T06:47:31.8825061Z             {
2026-06-17T06:47:31.8825416Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:31.8825673Z               "line": 421
2026-06-17T06:47:31.8825916Z             },
2026-06-17T06:47:31.8826159Z             {
2026-06-17T06:47:31.8826511Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:31.8826903Z               "line": 457
2026-06-17T06:47:31.8827160Z             },
2026-06-17T06:47:31.8827418Z             {
2026-06-17T06:47:31.8827771Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:31.8828032Z               "line": 505
2026-06-17T06:47:31.8828288Z             },
2026-06-17T06:47:31.8828535Z             {
2026-06-17T06:47:31.8828879Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-17T06:47:31.8829217Z               "line": 15
2026-06-17T06:47:31.8829485Z             },
2026-06-17T06:47:31.8829732Z             {
2026-06-17T06:47:31.8830075Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-17T06:47:31.8830328Z               "line": 48
2026-06-17T06:47:31.8830575Z             },
2026-06-17T06:47:31.8830822Z             {
2026-06-17T06:47:31.8831174Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-17T06:47:31.8831422Z               "line": 119
2026-06-17T06:47:31.8831659Z             },
2026-06-17T06:47:31.8831912Z             {
2026-06-17T06:47:31.8832213Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.8832489Z               "line": 3672
2026-06-17T06:47:31.8832724Z             }
2026-06-17T06:47:31.8832977Z           ]
2026-06-17T06:47:31.8833228Z         },
2026-06-17T06:47:31.8833480Z         "int": {
2026-06-17T06:47:31.8833753Z           "complete": false,
2026-06-17T06:47:31.8834015Z           "evidence": []
2026-06-17T06:47:31.8834272Z         },
2026-06-17T06:47:31.8834524Z         "unit": {
2026-06-17T06:47:31.8834800Z           "complete": true,
2026-06-17T06:47:31.8835058Z           "evidence": [
2026-06-17T06:47:31.8835307Z             {
2026-06-17T06:47:31.8835673Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:31.8835925Z               "line": 723
2026-06-17T06:47:31.8836175Z             },
2026-06-17T06:47:31.8836418Z             {
2026-06-17T06:47:31.8836757Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-17T06:47:31.8837024Z               "line": 165
2026-06-17T06:47:31.8837268Z             },
2026-06-17T06:47:31.8837507Z             {
2026-06-17T06:47:31.8837836Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-17T06:47:31.8838103Z               "line": 175
2026-06-17T06:47:31.8838350Z             }
2026-06-17T06:47:31.8838597Z           ]
2026-06-17T06:47:31.8838843Z         }
2026-06-17T06:47:31.8839181Z       }
2026-06-17T06:47:31.8839439Z     },
2026-06-17T06:47:31.8839682Z     {
2026-06-17T06:47:31.8840001Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-17T06:47:31.8842439Z       "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-17T06:47:31.8842720Z       "requiredStages": [
2026-06-17T06:47:31.8842974Z         "impl",
2026-06-17T06:47:31.8843227Z         "unit"
2026-06-17T06:47:31.8843488Z       ],
2026-06-17T06:47:31.8843736Z       "stages": {
2026-06-17T06:47:31.8844003Z         "doc": {
2026-06-17T06:47:31.8844279Z           "complete": false,
2026-06-17T06:47:31.8844541Z           "evidence": []
2026-06-17T06:47:31.8844793Z         },
2026-06-17T06:47:31.8845045Z         "impl": {
2026-06-17T06:47:31.8845332Z           "complete": true,
2026-06-17T06:47:31.8845594Z           "evidence": [
2026-06-17T06:47:31.8845858Z             {
2026-06-17T06:47:31.8846299Z               "path": "crates/spt/src/elevation.rs",
2026-06-17T06:47:31.8846564Z               "line": 192
2026-06-17T06:47:31.8846822Z             },
2026-06-17T06:47:31.8847074Z             {
2026-06-17T06:47:31.8847404Z               "path": "crates/spt/src/elevation.rs",
2026-06-17T06:47:31.8847660Z               "line": 279
2026-06-17T06:47:31.8847903Z             }
2026-06-17T06:47:31.8848161Z           ]
2026-06-17T06:47:31.8848406Z         },
2026-06-17T06:47:31.8848658Z         "int": {
2026-06-17T06:47:31.8849124Z           "complete": false,
2026-06-17T06:47:31.8849385Z           "evidence": []
2026-06-17T06:47:31.8849631Z         },
2026-06-17T06:47:31.8849888Z         "unit": {
2026-06-17T06:47:31.8850165Z           "complete": true,
2026-06-17T06:47:31.8850418Z           "evidence": [
2026-06-17T06:47:31.8850671Z             {
2026-06-17T06:47:31.8851000Z               "path": "crates/spt/src/elevation.rs",
2026-06-17T06:47:31.8851268Z               "line": 470
2026-06-17T06:47:31.8851506Z             },
2026-06-17T06:47:31.8851771Z             {
2026-06-17T06:47:31.8852097Z               "path": "crates/spt/src/elevation.rs",
2026-06-17T06:47:31.8852351Z               "line": 526
2026-06-17T06:47:31.8852604Z             }
2026-06-17T06:47:31.8852847Z           ]
2026-06-17T06:47:31.8853099Z         }
2026-06-17T06:47:31.8853342Z       }
2026-06-17T06:47:31.8853590Z     },
2026-06-17T06:47:31.8853829Z     {
2026-06-17T06:47:31.8854168Z       "id": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
2026-06-17T06:47:31.8864676Z       "title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `\"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = \"PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)\" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.",
2026-06-17T06:47:31.8864972Z       "requiredStages": [
2026-06-17T06:47:31.8865231Z         "impl",
2026-06-17T06:47:31.8865490Z         "unit",
2026-06-17T06:47:31.8865747Z         "int"
2026-06-17T06:47:31.8865995Z       ],
2026-06-17T06:47:31.8866252Z       "stages": {
2026-06-17T06:47:31.8866500Z         "doc": {
2026-06-17T06:47:31.8866777Z           "complete": false,
2026-06-17T06:47:31.8867034Z           "evidence": []
2026-06-17T06:47:31.8867293Z         },
2026-06-17T06:47:31.8867553Z         "impl": {
2026-06-17T06:47:31.8867822Z           "complete": true,
2026-06-17T06:47:31.8868079Z           "evidence": [
2026-06-17T06:47:31.8868338Z             {
2026-06-17T06:47:31.8868718Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-17T06:47:31.8869061Z               "line": 88
2026-06-17T06:47:31.8869315Z             },
2026-06-17T06:47:31.8869605Z             {
2026-06-17T06:47:31.8869968Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-17T06:47:31.8870221Z               "line": 132
2026-06-17T06:47:31.8870458Z             },
2026-06-17T06:47:31.8870713Z             {
2026-06-17T06:47:31.8871076Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-17T06:47:31.8871444Z               "line": 434
2026-06-17T06:47:31.8871710Z             },
2026-06-17T06:47:31.8871958Z             {
2026-06-17T06:47:31.8872311Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:31.8872573Z               "line": 139
2026-06-17T06:47:31.8872825Z             },
2026-06-17T06:47:31.8873067Z             {
2026-06-17T06:47:31.8873424Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:31.8873681Z               "line": 301
2026-06-17T06:47:31.8874029Z             },
2026-06-17T06:47:31.8874282Z             {
2026-06-17T06:47:31.8874635Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:31.8874892Z               "line": 513
2026-06-17T06:47:31.8875130Z             }
2026-06-17T06:47:31.8875368Z           ]
2026-06-17T06:47:31.8875622Z         },
2026-06-17T06:47:31.8875863Z         "int": {
2026-06-17T06:47:31.8876125Z           "complete": true,
2026-06-17T06:47:31.8876393Z           "evidence": [
2026-06-17T06:47:31.8876679Z             {
2026-06-17T06:47:31.8877127Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-17T06:47:31.8877380Z               "line": 32
2026-06-17T06:47:31.8877641Z             }
2026-06-17T06:47:31.8877881Z           ]
2026-06-17T06:47:31.8878142Z         },
2026-06-17T06:47:31.8878392Z         "unit": {
2026-06-17T06:47:31.8878658Z           "complete": true,
2026-06-17T06:47:31.8878917Z           "evidence": [
2026-06-17T06:47:31.8879241Z             {
2026-06-17T06:47:31.8879612Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:31.8879880Z               "line": 583
2026-06-17T06:47:31.8880137Z             },
2026-06-17T06:47:31.8880386Z             {
2026-06-17T06:47:31.8880753Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:31.8881018Z               "line": 604
2026-06-17T06:47:31.8881259Z             },
2026-06-17T06:47:31.8881516Z             {
2026-06-17T06:47:31.8881869Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:31.8882127Z               "line": 620
2026-06-17T06:47:31.8882366Z             },
2026-06-17T06:47:31.8882614Z             {
2026-06-17T06:47:31.8882972Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:31.8883225Z               "line": 638
2026-06-17T06:47:31.8883475Z             },
2026-06-17T06:47:31.8883721Z             {
2026-06-17T06:47:31.8884078Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:31.8884341Z               "line": 662
2026-06-17T06:47:31.8884594Z             }
2026-06-17T06:47:31.8884838Z           ]
2026-06-17T06:47:31.8885085Z         }
2026-06-17T06:47:31.8885333Z       }
2026-06-17T06:47:31.8885580Z     },
2026-06-17T06:47:31.8885830Z     {
2026-06-17T06:47:31.8886130Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-17T06:47:31.8886586Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-17T06:47:31.8886868Z       "requiredStages": [
2026-06-17T06:47:31.8887125Z         "impl",
2026-06-17T06:47:31.8887363Z         "unit"
2026-06-17T06:47:31.8887606Z       ],
2026-06-17T06:47:31.8887864Z       "stages": {
2026-06-17T06:47:31.8888107Z         "doc": {
2026-06-17T06:47:31.8888385Z           "complete": false,
2026-06-17T06:47:31.8888644Z           "evidence": []
2026-06-17T06:47:31.8888885Z         },
2026-06-17T06:47:31.8889223Z         "impl": {
2026-06-17T06:47:31.8889491Z           "complete": true,
2026-06-17T06:47:31.8889763Z           "evidence": [
2026-06-17T06:47:31.8890011Z             {
2026-06-17T06:47:31.8890354Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-17T06:47:31.8890613Z               "line": 35
2026-06-17T06:47:31.8890865Z             }
2026-06-17T06:47:31.8891141Z           ]
2026-06-17T06:47:31.8891384Z         },
2026-06-17T06:47:31.8891635Z         "int": {
2026-06-17T06:47:31.8891910Z           "complete": false,
2026-06-17T06:47:31.8892177Z           "evidence": []
2026-06-17T06:47:31.8892434Z         },
2026-06-17T06:47:31.8892787Z         "unit": {
2026-06-17T06:47:31.8893073Z           "complete": true,
2026-06-17T06:47:31.8893341Z           "evidence": [
2026-06-17T06:47:31.8893593Z             {
2026-06-17T06:47:31.8893936Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-17T06:47:31.8894202Z               "line": 220
2026-06-17T06:47:31.8894448Z             }
2026-06-17T06:47:31.8894691Z           ]
2026-06-17T06:47:31.8894948Z         }
2026-06-17T06:47:31.8895197Z       }
2026-06-17T06:47:31.8895450Z     },
2026-06-17T06:47:31.8895784Z     {
2026-06-17T06:47:31.8896099Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-17T06:47:31.8896869Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-17T06:47:31.8897150Z       "requiredStages": [
2026-06-17T06:47:31.8897413Z         "impl",
2026-06-17T06:47:31.8897657Z         "unit"
2026-06-17T06:47:31.8897914Z       ],
2026-06-17T06:47:31.8898161Z       "stages": {
2026-06-17T06:47:31.8898419Z         "doc": {
2026-06-17T06:47:31.8898691Z           "complete": false,
2026-06-17T06:47:31.8899029Z           "evidence": []
2026-06-17T06:47:31.8899286Z         },
2026-06-17T06:47:31.8899526Z         "impl": {
2026-06-17T06:47:31.8899807Z           "complete": true,
2026-06-17T06:47:31.8900075Z           "evidence": [
2026-06-17T06:47:31.8900351Z             {
2026-06-17T06:47:31.8900747Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-17T06:47:31.8901000Z               "line": 405
2026-06-17T06:47:31.8901257Z             },
2026-06-17T06:47:31.8901507Z             {
2026-06-17T06:47:31.8901859Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:31.8902125Z               "line": 409
2026-06-17T06:47:31.8902379Z             },
2026-06-17T06:47:31.8902632Z             {
2026-06-17T06:47:31.8902979Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-17T06:47:31.8903247Z               "line": 156
2026-06-17T06:47:31.8903495Z             }
2026-06-17T06:47:31.8903749Z           ]
2026-06-17T06:47:31.8903991Z         },
2026-06-17T06:47:31.8904253Z         "int": {
2026-06-17T06:47:31.8904520Z           "complete": false,
2026-06-17T06:47:31.8904776Z           "evidence": []
2026-06-17T06:47:31.8905022Z         },
2026-06-17T06:47:31.8905280Z         "unit": {
2026-06-17T06:47:31.8905556Z           "complete": true,
2026-06-17T06:47:31.8905819Z           "evidence": [
2026-06-17T06:47:31.8906071Z             {
2026-06-17T06:47:31.8906420Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:31.8906682Z               "line": 865
2026-06-17T06:47:31.8906931Z             },
2026-06-17T06:47:31.8907169Z             {
2026-06-17T06:47:31.8907530Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:31.8907782Z               "line": 879
2026-06-17T06:47:31.8908035Z             },
2026-06-17T06:47:31.8908278Z             {
2026-06-17T06:47:31.8908626Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:31.8908885Z               "line": 898
2026-06-17T06:47:31.8909205Z             },
2026-06-17T06:47:31.8909466Z             {
2026-06-17T06:47:31.8909817Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:31.8910082Z               "line": 915
2026-06-17T06:47:31.8910344Z             },
2026-06-17T06:47:31.8910597Z             {
2026-06-17T06:47:31.8910973Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-17T06:47:31.8911231Z               "line": 441
2026-06-17T06:47:31.8911488Z             }
2026-06-17T06:47:31.8911747Z           ]
2026-06-17T06:47:31.8911990Z         }
2026-06-17T06:47:31.8912223Z       }
2026-06-17T06:47:31.8912475Z     },
2026-06-17T06:47:31.8912727Z     {
2026-06-17T06:47:31.8913030Z       "id": "REQ-HAZARD-VIEWER-ISOLATION",
2026-06-17T06:47:31.8919121Z       "title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.",
2026-06-17T06:47:31.8919549Z       "requiredStages": [
2026-06-17T06:47:31.8919797Z         "unit",
2026-06-17T06:47:31.8920051Z         "int"
2026-06-17T06:47:31.8920305Z       ],
2026-06-17T06:47:31.8920561Z       "stages": {
2026-06-17T06:47:31.8920805Z         "doc": {
2026-06-17T06:47:31.8921067Z           "complete": true,
2026-06-17T06:47:31.8921339Z           "evidence": [
2026-06-17T06:47:31.8921586Z             {
2026-06-17T06:47:31.8921910Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-17T06:47:31.8922182Z               "line": 381
2026-06-17T06:47:31.8922425Z             }
2026-06-17T06:47:31.8922678Z           ]
2026-06-17T06:47:31.8922923Z         },
2026-06-17T06:47:31.8923177Z         "impl": {
2026-06-17T06:47:31.8923447Z           "complete": true,
2026-06-17T06:47:31.8923714Z           "evidence": [
2026-06-17T06:47:31.8923967Z             {
2026-06-17T06:47:31.8924316Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:31.8924573Z               "line": 97
2026-06-17T06:47:31.8924821Z             }
2026-06-17T06:47:31.8925068Z           ]
2026-06-17T06:47:31.8925321Z         },
2026-06-17T06:47:31.8925574Z         "int": {
2026-06-17T06:47:31.8925854Z           "complete": true,
2026-06-17T06:47:31.8926114Z           "evidence": [
2026-06-17T06:47:31.8926381Z             {
2026-06-17T06:47:31.8926729Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-17T06:47:31.8927000Z               "line": 918
2026-06-17T06:47:31.8927254Z             }
2026-06-17T06:47:31.8927502Z           ]
2026-06-17T06:47:31.8927755Z         },
2026-06-17T06:47:31.8928013Z         "unit": {
2026-06-17T06:47:31.8928289Z           "complete": true,
2026-06-17T06:47:31.8928545Z           "evidence": [
2026-06-17T06:47:31.8928789Z             {
2026-06-17T06:47:31.8929226Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:31.8929494Z               "line": 1459
2026-06-17T06:47:31.8929746Z             }
2026-06-17T06:47:31.8930000Z           ]
2026-06-17T06:47:31.8930253Z         }
2026-06-17T06:47:31.8930504Z       }
2026-06-17T06:47:31.8930752Z     },
2026-06-17T06:47:31.8930999Z     {
2026-06-17T06:47:31.8931317Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-17T06:47:31.8933497Z       "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-17T06:47:31.8933771Z       "requiredStages": [
2026-06-17T06:47:31.8934026Z         "doc",
2026-06-17T06:47:31.8934284Z         "impl",
2026-06-17T06:47:31.8934542Z         "unit"
2026-06-17T06:47:31.8934786Z       ],
2026-06-17T06:47:31.8935038Z       "stages": {
2026-06-17T06:47:31.8935285Z         "doc": {
2026-06-17T06:47:31.8935542Z           "complete": true,
2026-06-17T06:47:31.8935805Z           "evidence": [
2026-06-17T06:47:31.8936050Z             {
2026-06-17T06:47:31.8936367Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-17T06:47:31.8936631Z               "line": 366
2026-06-17T06:47:31.8936874Z             }
2026-06-17T06:47:31.8937128Z           ]
2026-06-17T06:47:31.8937375Z         },
2026-06-17T06:47:31.8937648Z         "impl": {
2026-06-17T06:47:31.8937919Z           "complete": true,
2026-06-17T06:47:31.8938181Z           "evidence": [
2026-06-17T06:47:31.8938429Z             {
2026-06-17T06:47:31.8938888Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-17T06:47:31.8939229Z               "line": 87
2026-06-17T06:47:31.8939481Z             },
2026-06-17T06:47:31.8939734Z             {
2026-06-17T06:47:31.8940082Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-17T06:47:31.8940355Z               "line": 105
2026-06-17T06:47:31.8940608Z             },
2026-06-17T06:47:31.8940861Z             {
2026-06-17T06:47:31.8941204Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-17T06:47:31.8941464Z               "line": 55
2026-06-17T06:47:31.8941824Z             },
2026-06-17T06:47:31.8942072Z             {
2026-06-17T06:47:31.8942431Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-17T06:47:31.8942692Z               "line": 31
2026-06-17T06:47:31.8942945Z             },
2026-06-17T06:47:31.8943193Z             {
2026-06-17T06:47:31.8943531Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-17T06:47:31.8943799Z               "line": 446
2026-06-17T06:47:31.8944052Z             },
2026-06-17T06:47:31.8944307Z             {
2026-06-17T06:47:31.8944677Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-17T06:47:31.8944925Z               "line": 95
2026-06-17T06:47:31.8945182Z             },
2026-06-17T06:47:31.8945426Z             {
2026-06-17T06:47:31.8945798Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-17T06:47:31.8946055Z               "line": 29
2026-06-17T06:47:31.8946314Z             },
2026-06-17T06:47:31.8946562Z             {
2026-06-17T06:47:31.8946932Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-17T06:47:31.8947191Z               "line": 104
2026-06-17T06:47:31.8947444Z             },
2026-06-17T06:47:31.8947702Z             {
2026-06-17T06:47:31.8948078Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:31.8948345Z               "line": 208
2026-06-17T06:47:31.8948598Z             },
2026-06-17T06:47:31.8948847Z             {
2026-06-17T06:47:31.8949270Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-17T06:47:31.8949538Z               "line": 28
2026-06-17T06:47:31.8949794Z             },
2026-06-17T06:47:31.8950041Z             {
2026-06-17T06:47:31.8950390Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-17T06:47:31.8950643Z               "line": 74
2026-06-17T06:47:31.8950886Z             },
2026-06-17T06:47:31.8951139Z             {
2026-06-17T06:47:31.8951506Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-17T06:47:31.8961347Z               "line": 32
2026-06-17T06:47:31.8961662Z             },
2026-06-17T06:47:31.8961914Z             {
2026-06-17T06:47:31.8962262Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-17T06:47:31.8962518Z               "line": 40
2026-06-17T06:47:31.8962773Z             },
2026-06-17T06:47:31.8963022Z             {
2026-06-17T06:47:31.8963360Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-17T06:47:31.8963646Z               "line": 184
2026-06-17T06:47:31.8963904Z             },
2026-06-17T06:47:31.8964146Z             {
2026-06-17T06:47:31.8964476Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-17T06:47:31.8964737Z               "line": 61
2026-06-17T06:47:31.8964985Z             },
2026-06-17T06:47:31.8965239Z             {
2026-06-17T06:47:31.8965561Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-17T06:47:31.8965812Z               "line": 131
2026-06-17T06:47:31.8966060Z             },
2026-06-17T06:47:31.8966307Z             {
2026-06-17T06:47:31.8966646Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-17T06:47:31.8966889Z               "line": 223
2026-06-17T06:47:31.8967133Z             },
2026-06-17T06:47:31.8967372Z             {
2026-06-17T06:47:31.8967706Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-17T06:47:31.8967970Z               "line": 37
2026-06-17T06:47:31.8968211Z             },
2026-06-17T06:47:31.8968466Z             {
2026-06-17T06:47:31.8969023Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-17T06:47:31.8969300Z               "line": 38
2026-06-17T06:47:31.8969547Z             },
2026-06-17T06:47:31.8969786Z             {
2026-06-17T06:47:31.8970147Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-17T06:47:31.8970404Z               "line": 36
2026-06-17T06:47:31.8970654Z             },
2026-06-17T06:47:31.8970895Z             {
2026-06-17T06:47:31.8971243Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-17T06:47:31.8971611Z               "line": 40
2026-06-17T06:47:31.8971859Z             }
2026-06-17T06:47:31.8972111Z           ]
2026-06-17T06:47:31.8972354Z         },
2026-06-17T06:47:31.8972603Z         "int": {
2026-06-17T06:47:31.8972871Z           "complete": false,
2026-06-17T06:47:31.8973140Z           "evidence": []
2026-06-17T06:47:31.8973390Z         },
2026-06-17T06:47:31.8973634Z         "unit": {
2026-06-17T06:47:31.8973901Z           "complete": true,
2026-06-17T06:47:31.8974163Z           "evidence": [
2026-06-17T06:47:31.8974411Z             {
2026-06-17T06:47:31.8974770Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-17T06:47:31.8975036Z               "line": 212
2026-06-17T06:47:31.8975283Z             },
2026-06-17T06:47:31.8975526Z             {
2026-06-17T06:47:31.8975902Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-17T06:47:31.8976163Z               "line": 136
2026-06-17T06:47:31.8976411Z             },
2026-06-17T06:47:31.8976643Z             {
2026-06-17T06:47:31.8977035Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-17T06:47:31.8977292Z               "line": 685
2026-06-17T06:47:31.8977540Z             },
2026-06-17T06:47:31.8977787Z             {
2026-06-17T06:47:31.8978131Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-17T06:47:31.8978394Z               "line": 224
2026-06-17T06:47:31.8978640Z             },
2026-06-17T06:47:31.8978896Z             {
2026-06-17T06:47:31.8979339Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-17T06:47:31.8979631Z               "line": 206
2026-06-17T06:47:31.8979879Z             },
2026-06-17T06:47:31.8980121Z             {
2026-06-17T06:47:31.8980474Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-17T06:47:31.8980726Z               "line": 112
2026-06-17T06:47:31.8980979Z             },
2026-06-17T06:47:31.8981238Z             {
2026-06-17T06:47:31.8981581Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-17T06:47:31.8981852Z               "line": 157
2026-06-17T06:47:31.8982099Z             },
2026-06-17T06:47:31.8982356Z             {
2026-06-17T06:47:31.8982690Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-17T06:47:31.8982962Z               "line": 215
2026-06-17T06:47:31.8983214Z             },
2026-06-17T06:47:31.8983459Z             {
2026-06-17T06:47:31.8983809Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-17T06:47:31.8984075Z               "line": 141
2026-06-17T06:47:31.8984327Z             },
2026-06-17T06:47:31.8984584Z             {
2026-06-17T06:47:31.8984918Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-17T06:47:31.8985176Z               "line": 162
2026-06-17T06:47:31.8985419Z             }
2026-06-17T06:47:31.8985696Z           ]
2026-06-17T06:47:31.8985940Z         }
2026-06-17T06:47:31.8986196Z       }
2026-06-17T06:47:31.8986933Z     },
2026-06-17T06:47:31.8987456Z     {
2026-06-17T06:47:31.8988077Z       "id": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
2026-06-17T06:47:31.8994005Z       "title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).",
2026-06-17T06:47:31.8999552Z       "requiredStages": [
2026-06-17T06:47:31.9000193Z         "doc",
2026-06-17T06:47:31.9000736Z         "impl",
2026-06-17T06:47:31.9001347Z         "unit",
2026-06-17T06:47:31.9001991Z         "int"
2026-06-17T06:47:31.9002556Z       ],
2026-06-17T06:47:31.9003105Z       "stages": {
2026-06-17T06:47:31.9003667Z         "doc": {
2026-06-17T06:47:31.9004383Z           "complete": true,
2026-06-17T06:47:31.9005042Z           "evidence": [
2026-06-17T06:47:31.9005638Z             {
2026-06-17T06:47:31.9006244Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-17T06:47:31.9007016Z               "line": 250
2026-06-17T06:47:31.9007621Z             }
2026-06-17T06:47:31.9008153Z           ]
2026-06-17T06:47:31.9008678Z         },
2026-06-17T06:47:31.9009283Z         "impl": {
2026-06-17T06:47:31.9009888Z           "complete": true,
2026-06-17T06:47:31.9010533Z           "evidence": [
2026-06-17T06:47:31.9011129Z             {
2026-06-17T06:47:31.9011749Z               "path": "crates/spt-term/src/pty.rs",
2026-06-17T06:47:31.9012533Z               "line": 131
2026-06-17T06:47:31.9013145Z             }
2026-06-17T06:47:31.9013684Z           ]
2026-06-17T06:47:31.9014218Z         },
2026-06-17T06:47:31.9014753Z         "int": {
2026-06-17T06:47:31.9015328Z           "complete": true,
2026-06-17T06:47:31.9015969Z           "evidence": [
2026-06-17T06:47:31.9016579Z             {
2026-06-17T06:47:31.9017218Z               "path": "crates/spt-term/tests/winspawn.rs",
2026-06-17T06:47:31.9018030Z               "line": 15
2026-06-17T06:47:31.9018637Z             }
2026-06-17T06:47:31.9019276Z           ]
2026-06-17T06:47:31.9019800Z         },
2026-06-17T06:47:31.9020333Z         "unit": {
2026-06-17T06:47:31.9020923Z           "complete": true,
2026-06-17T06:47:31.9021580Z           "evidence": [
2026-06-17T06:47:31.9022181Z             {
2026-06-17T06:47:31.9022839Z               "path": "crates/spt-term/src/winprog.rs",
2026-06-17T06:47:31.9023648Z               "line": 222
2026-06-17T06:47:31.9024267Z             }
2026-06-17T06:47:31.9024811Z           ]
2026-06-17T06:47:31.9025342Z         }
2026-06-17T06:47:31.9025869Z       }
2026-06-17T06:47:31.9026397Z     },
2026-06-17T06:47:31.9026916Z     {
2026-06-17T06:47:31.9027521Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-17T06:47:31.9028500Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-17T06:47:31.9029550Z       "requiredStages": [
2026-06-17T06:47:31.9030203Z         "impl",
2026-06-17T06:47:31.9030752Z         "unit"
2026-06-17T06:47:31.9031294Z       ],
2026-06-17T06:47:31.9031831Z       "stages": {
2026-06-17T06:47:31.9032403Z         "doc": {
2026-06-17T06:47:31.9032979Z           "complete": false,
2026-06-17T06:47:31.9033633Z           "evidence": []
2026-06-17T06:47:31.9034242Z         },
2026-06-17T06:47:31.9034785Z         "impl": {
2026-06-17T06:47:31.9035367Z           "complete": true,
2026-06-17T06:47:31.9036015Z           "evidence": [
2026-06-17T06:47:31.9036614Z             {
2026-06-17T06:47:31.9037252Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-17T06:47:31.9038043Z               "line": 95
2026-06-17T06:47:31.9038649Z             },
2026-06-17T06:47:31.9039272Z             {
2026-06-17T06:47:31.9039932Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:31.9040730Z               "line": 94
2026-06-17T06:47:31.9041345Z             }
2026-06-17T06:47:31.9041877Z           ]
2026-06-17T06:47:31.9042414Z         },
2026-06-17T06:47:31.9042939Z         "int": {
2026-06-17T06:47:31.9043505Z           "complete": false,
2026-06-17T06:47:31.9044165Z           "evidence": []
2026-06-17T06:47:31.9044777Z         },
2026-06-17T06:47:31.9045298Z         "unit": {
2026-06-17T06:47:31.9045880Z           "complete": true,
2026-06-17T06:47:31.9046666Z           "evidence": [
2026-06-17T06:47:31.9047259Z             {
2026-06-17T06:47:31.9047888Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-17T06:47:31.9048676Z               "line": 250
2026-06-17T06:47:31.9049372Z             },
2026-06-17T06:47:31.9049923Z             {
2026-06-17T06:47:31.9050541Z               "path": "crates/spt-store/src/proc.rs",
2026-06-17T06:47:31.9051333Z               "line": 198
2026-06-17T06:47:31.9051949Z             },
2026-06-17T06:47:31.9052485Z             {
2026-06-17T06:47:31.9053126Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:31.9054061Z               "line": 487
2026-06-17T06:47:31.9054696Z             },
2026-06-17T06:47:31.9055238Z             {
2026-06-17T06:47:31.9055867Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:31.9056650Z               "line": 520
2026-06-17T06:47:31.9057255Z             }
2026-06-17T06:47:31.9057800Z           ]
2026-06-17T06:47:31.9058330Z         }
2026-06-17T06:47:31.9058839Z       }
2026-06-17T06:47:31.9059421Z     },
2026-06-17T06:47:31.9059946Z     {
2026-06-17T06:47:31.9060507Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-17T06:47:31.9061483Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-17T06:47:31.9062504Z       "requiredStages": [
2026-06-17T06:47:31.9063126Z         "impl",
2026-06-17T06:47:31.9063721Z         "unit"
2026-06-17T06:47:31.9064277Z       ],
2026-06-17T06:47:31.9064827Z       "stages": {
2026-06-17T06:47:31.9065381Z         "doc": {
2026-06-17T06:47:31.9066018Z           "complete": false,
2026-06-17T06:47:31.9066671Z           "evidence": []
2026-06-17T06:47:31.9067273Z         },
2026-06-17T06:47:31.9067806Z         "impl": {
2026-06-17T06:47:31.9068389Z           "complete": true,
2026-06-17T06:47:31.9069098Z           "evidence": [
2026-06-17T06:47:31.9069743Z             {
2026-06-17T06:47:31.9070377Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.9071171Z               "line": 262
2026-06-17T06:47:31.9071781Z             },
2026-06-17T06:47:31.9072329Z             {
2026-06-17T06:47:31.9072954Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.9073747Z               "line": 307
2026-06-17T06:47:31.9074353Z             },
2026-06-17T06:47:31.9074901Z             {
2026-06-17T06:47:31.9075520Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.9076307Z               "line": 319
2026-06-17T06:47:31.9076912Z             }
2026-06-17T06:47:31.9077455Z           ]
2026-06-17T06:47:31.9077989Z         },
2026-06-17T06:47:31.9078514Z         "int": {
2026-06-17T06:47:31.9079159Z           "complete": false,
2026-06-17T06:47:31.9079826Z           "evidence": []
2026-06-17T06:47:31.9080441Z         },
2026-06-17T06:47:31.9080972Z         "unit": {
2026-06-17T06:47:31.9081551Z           "complete": true,
2026-06-17T06:47:31.9082187Z           "evidence": [
2026-06-17T06:47:31.9082765Z             {
2026-06-17T06:47:31.9083408Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.9084199Z               "line": 455
2026-06-17T06:47:31.9084807Z             },
2026-06-17T06:47:31.9085365Z             {
2026-06-17T06:47:31.9086018Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.9086825Z               "line": 499
2026-06-17T06:47:31.9087453Z             }
2026-06-17T06:47:31.9088015Z           ]
2026-06-17T06:47:31.9088535Z         }
2026-06-17T06:47:31.9089154Z       }
2026-06-17T06:47:31.9089691Z     },
2026-06-17T06:47:31.9090214Z     {
2026-06-17T06:47:31.9090754Z       "id": "REQ-HOST-RUN-1",
2026-06-17T06:47:31.9097641Z       "title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind=\"harness\" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.",
2026-06-17T06:47:31.9104004Z       "requiredStages": [
2026-06-17T06:47:31.9104644Z         "impl",
2026-06-17T06:47:31.9105191Z         "unit",
2026-06-17T06:47:31.9105874Z         "int"
2026-06-17T06:47:31.9106419Z       ],
2026-06-17T06:47:31.9106944Z       "stages": {
2026-06-17T06:47:31.9107521Z         "doc": {
2026-06-17T06:47:31.9108100Z           "complete": false,
2026-06-17T06:47:31.9108753Z           "evidence": []
2026-06-17T06:47:31.9109465Z         },
2026-06-17T06:47:31.9109994Z         "impl": {
2026-06-17T06:47:31.9110573Z           "complete": true,
2026-06-17T06:47:31.9111216Z           "evidence": [
2026-06-17T06:47:31.9111817Z             {
2026-06-17T06:47:31.9112479Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-17T06:47:31.9113303Z               "line": 24
2026-06-17T06:47:31.9113911Z             },
2026-06-17T06:47:31.9114455Z             {
2026-06-17T06:47:31.9115122Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-17T06:47:31.9115946Z               "line": 63
2026-06-17T06:47:31.9116551Z             },
2026-06-17T06:47:31.9117088Z             {
2026-06-17T06:47:31.9117756Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-17T06:47:31.9118589Z               "line": 110
2026-06-17T06:47:31.9119290Z             },
2026-06-17T06:47:31.9119872Z             {
2026-06-17T06:47:31.9120463Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9121218Z               "line": 1220
2026-06-17T06:47:31.9121823Z             }
2026-06-17T06:47:31.9122363Z           ]
2026-06-17T06:47:31.9122892Z         },
2026-06-17T06:47:31.9123416Z         "int": {
2026-06-17T06:47:31.9123991Z           "complete": true,
2026-06-17T06:47:31.9124639Z           "evidence": [
2026-06-17T06:47:31.9125235Z             {
2026-06-17T06:47:31.9125879Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-17T06:47:31.9126699Z               "line": 279
2026-06-17T06:47:31.9127300Z             }
2026-06-17T06:47:31.9127839Z           ]
2026-06-17T06:47:31.9128369Z         },
2026-06-17T06:47:31.9128902Z         "unit": {
2026-06-17T06:47:31.9129568Z           "complete": true,
2026-06-17T06:47:31.9130217Z           "evidence": [
2026-06-17T06:47:31.9130818Z             {
2026-06-17T06:47:31.9131485Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-17T06:47:31.9132336Z               "line": 150
2026-06-17T06:47:31.9132952Z             },
2026-06-17T06:47:31.9133491Z             {
2026-06-17T06:47:31.9134149Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-17T06:47:31.9134974Z               "line": 170
2026-06-17T06:47:31.9135580Z             },
2026-06-17T06:47:31.9136133Z             {
2026-06-17T06:47:31.9136796Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-17T06:47:31.9137622Z               "line": 203
2026-06-17T06:47:31.9138237Z             }
2026-06-17T06:47:31.9138776Z           ]
2026-06-17T06:47:31.9139390Z         }
2026-06-17T06:47:31.9139900Z       }
2026-06-17T06:47:31.9140405Z     },
2026-06-17T06:47:31.9140916Z     {
2026-06-17T06:47:31.9141465Z       "id": "REQ-HOST-RUN-2",
2026-06-17T06:47:31.9147108Z       "title": "Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).",
2026-06-17T06:47:31.9152831Z       "requiredStages": [
2026-06-17T06:47:31.9153466Z         "impl",
2026-06-17T06:47:31.9154005Z         "unit",
2026-06-17T06:47:31.9154553Z         "int"
2026-06-17T06:47:31.9155087Z       ],
2026-06-17T06:47:31.9155610Z       "stages": {
2026-06-17T06:47:31.9156171Z         "doc": {
2026-06-17T06:47:31.9156747Z           "complete": false,
2026-06-17T06:47:31.9157516Z           "evidence": []
2026-06-17T06:47:31.9158110Z         },
2026-06-17T06:47:31.9158642Z         "impl": {
2026-06-17T06:47:31.9159295Z           "complete": true,
2026-06-17T06:47:31.9159953Z           "evidence": [
2026-06-17T06:47:31.9160545Z             {
2026-06-17T06:47:31.9161201Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-17T06:47:31.9162032Z               "line": 111
2026-06-17T06:47:31.9162648Z             },
2026-06-17T06:47:31.9163198Z             {
2026-06-17T06:47:31.9163802Z               "path": "crates/spt-term/src/pty.rs",
2026-06-17T06:47:31.9164589Z               "line": 113
2026-06-17T06:47:31.9165195Z             }
2026-06-17T06:47:31.9165738Z           ]
2026-06-17T06:47:31.9166263Z         },
2026-06-17T06:47:31.9166785Z         "int": {
2026-06-17T06:47:31.9167361Z           "complete": true,
2026-06-17T06:47:31.9167995Z           "evidence": [
2026-06-17T06:47:31.9168575Z             {
2026-06-17T06:47:31.9169279Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-17T06:47:31.9170094Z               "line": 454
2026-06-17T06:47:31.9170728Z             }
2026-06-17T06:47:31.9171259Z           ]
2026-06-17T06:47:31.9171775Z         },
2026-06-17T06:47:31.9172296Z         "unit": {
2026-06-17T06:47:31.9172874Z           "complete": true,
2026-06-17T06:47:31.9173527Z           "evidence": [
2026-06-17T06:47:31.9174304Z             {
2026-06-17T06:47:31.9174948Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-17T06:47:31.9175755Z               "line": 86
2026-06-17T06:47:31.9176356Z             }
2026-06-17T06:47:31.9176885Z           ]
2026-06-17T06:47:31.9177401Z         }
2026-06-17T06:47:31.9177925Z       }
2026-06-17T06:47:31.9178430Z     },
2026-06-17T06:47:31.9179017Z     {
2026-06-17T06:47:31.9179572Z       "id": "REQ-INFRA-1",
2026-06-17T06:47:31.9180473Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-17T06:47:31.9181485Z       "requiredStages": [],
2026-06-17T06:47:31.9182127Z       "stages": {
2026-06-17T06:47:31.9182693Z         "doc": {
2026-06-17T06:47:31.9183275Z           "complete": false,
2026-06-17T06:47:31.9183929Z           "evidence": []
2026-06-17T06:47:31.9184527Z         },
2026-06-17T06:47:31.9185052Z         "impl": {
2026-06-17T06:47:31.9185619Z           "complete": false,
2026-06-17T06:47:31.9186268Z           "evidence": []
2026-06-17T06:47:31.9186863Z         },
2026-06-17T06:47:31.9187389Z         "int": {
2026-06-17T06:47:31.9187961Z           "complete": false,
2026-06-17T06:47:31.9188605Z           "evidence": []
2026-06-17T06:47:31.9195016Z         },
2026-06-17T06:47:31.9195573Z         "unit": {
2026-06-17T06:47:31.9196169Z           "complete": false,
2026-06-17T06:47:31.9196838Z           "evidence": []
2026-06-17T06:47:31.9197452Z         }
2026-06-17T06:47:31.9197977Z       }
2026-06-17T06:47:31.9198484Z     },
2026-06-17T06:47:31.9199080Z     {
2026-06-17T06:47:31.9199617Z       "id": "REQ-INST-1",
2026-06-17T06:47:31.9200455Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-17T06:47:31.9201389Z       "requiredStages": [],
2026-06-17T06:47:31.9202028Z       "stages": {
2026-06-17T06:47:31.9202586Z         "doc": {
2026-06-17T06:47:31.9203160Z           "complete": false,
2026-06-17T06:47:31.9203813Z           "evidence": []
2026-06-17T06:47:31.9204419Z         },
2026-06-17T06:47:31.9204940Z         "impl": {
2026-06-17T06:47:31.9205666Z           "complete": false,
2026-06-17T06:47:31.9206324Z           "evidence": []
2026-06-17T06:47:31.9206910Z         },
2026-06-17T06:47:31.9207431Z         "int": {
2026-06-17T06:47:31.9207998Z           "complete": false,
2026-06-17T06:47:31.9208647Z           "evidence": []
2026-06-17T06:47:31.9209339Z         },
2026-06-17T06:47:31.9209877Z         "unit": {
2026-06-17T06:47:31.9210449Z           "complete": false,
2026-06-17T06:47:31.9211099Z           "evidence": []
2026-06-17T06:47:31.9211697Z         }
2026-06-17T06:47:31.9212211Z       }
2026-06-17T06:47:31.9212841Z     },
2026-06-17T06:47:31.9213359Z     {
2026-06-17T06:47:31.9213884Z       "id": "REQ-INST-10",
2026-06-17T06:47:31.9214870Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-17T06:47:31.9215984Z       "requiredStages": [
2026-06-17T06:47:31.9216602Z         "impl",
2026-06-17T06:47:31.9217151Z         "unit"
2026-06-17T06:47:31.9217695Z       ],
2026-06-17T06:47:31.9218234Z       "stages": {
2026-06-17T06:47:31.9218804Z         "doc": {
2026-06-17T06:47:31.9219455Z           "complete": false,
2026-06-17T06:47:31.9220103Z           "evidence": []
2026-06-17T06:47:31.9220709Z         },
2026-06-17T06:47:31.9221240Z         "impl": {
2026-06-17T06:47:31.9221803Z           "complete": true,
2026-06-17T06:47:31.9222438Z           "evidence": [
2026-06-17T06:47:31.9223037Z             {
2026-06-17T06:47:31.9223735Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9224596Z               "line": 616
2026-06-17T06:47:31.9225206Z             },
2026-06-17T06:47:31.9225749Z             {
2026-06-17T06:47:31.9226389Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9227206Z               "line": 693
2026-06-17T06:47:31.9227810Z             },
2026-06-17T06:47:31.9228359Z             {
2026-06-17T06:47:31.9229041Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-17T06:47:31.9229835Z               "line": 13
2026-06-17T06:47:31.9230446Z             },
2026-06-17T06:47:31.9230993Z             {
2026-06-17T06:47:31.9231618Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-17T06:47:31.9232401Z               "line": 67
2026-06-17T06:47:31.9232998Z             },
2026-06-17T06:47:31.9233531Z             {
2026-06-17T06:47:31.9234147Z               "path": "crates/spt/src/wansend.rs",
2026-06-17T06:47:31.9234923Z               "line": 18
2026-06-17T06:47:31.9235528Z             },
2026-06-17T06:47:31.9236071Z             {
2026-06-17T06:47:31.9236667Z               "path": "crates/spt/src/wansend.rs",
2026-06-17T06:47:31.9237446Z               "line": 444
2026-06-17T06:47:31.9238065Z             }
2026-06-17T06:47:31.9238596Z           ]
2026-06-17T06:47:31.9239186Z         },
2026-06-17T06:47:31.9239712Z         "int": {
2026-06-17T06:47:31.9240337Z           "complete": false,
2026-06-17T06:47:31.9240976Z           "evidence": []
2026-06-17T06:47:31.9241581Z         },
2026-06-17T06:47:31.9242134Z         "unit": {
2026-06-17T06:47:31.9242714Z           "complete": true,
2026-06-17T06:47:31.9243352Z           "evidence": [
2026-06-17T06:47:31.9243934Z             {
2026-06-17T06:47:31.9244583Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9245434Z               "line": 900
2026-06-17T06:47:31.9246049Z             },
2026-06-17T06:47:31.9246599Z             {
2026-06-17T06:47:31.9247251Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9248064Z               "line": 1233
2026-06-17T06:47:31.9248689Z             },
2026-06-17T06:47:31.9249299Z             {
2026-06-17T06:47:31.9249957Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9250759Z               "line": 1244
2026-06-17T06:47:31.9251370Z             },
2026-06-17T06:47:31.9251914Z             {
2026-06-17T06:47:31.9252563Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9253373Z               "line": 1260
2026-06-17T06:47:31.9253983Z             },
2026-06-17T06:47:31.9254661Z             {
2026-06-17T06:47:31.9255319Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9256120Z               "line": 1276
2026-06-17T06:47:31.9256749Z             },
2026-06-17T06:47:31.9257287Z             {
2026-06-17T06:47:31.9257922Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9258748Z               "line": 1298
2026-06-17T06:47:31.9259477Z             },
2026-06-17T06:47:31.9260016Z             {
2026-06-17T06:47:31.9260673Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9261597Z               "line": 1603
2026-06-17T06:47:31.9262211Z             },
2026-06-17T06:47:31.9262746Z             {
2026-06-17T06:47:31.9263356Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-17T06:47:31.9264144Z               "line": 130
2026-06-17T06:47:31.9264754Z             },
2026-06-17T06:47:31.9265288Z             {
2026-06-17T06:47:31.9265903Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-17T06:47:31.9266690Z               "line": 167
2026-06-17T06:47:31.9267309Z             },
2026-06-17T06:47:31.9267857Z             {
2026-06-17T06:47:31.9268477Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-17T06:47:31.9269369Z               "line": 175
2026-06-17T06:47:31.9269985Z             },
2026-06-17T06:47:31.9270529Z             {
2026-06-17T06:47:31.9271145Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-17T06:47:31.9271946Z               "line": 183
2026-06-17T06:47:31.9272560Z             },
2026-06-17T06:47:31.9273109Z             {
2026-06-17T06:47:31.9273721Z               "path": "crates/spt/src/wansend.rs",
2026-06-17T06:47:31.9274493Z               "line": 896
2026-06-17T06:47:31.9275108Z             }
2026-06-17T06:47:31.9275657Z           ]
2026-06-17T06:47:31.9276182Z         }
2026-06-17T06:47:31.9276701Z       }
2026-06-17T06:47:31.9277211Z     },
2026-06-17T06:47:31.9277729Z     {
2026-06-17T06:47:31.9278264Z       "id": "REQ-INST-11",
2026-06-17T06:47:31.9279322Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-17T06:47:31.9280422Z       "requiredStages": [
2026-06-17T06:47:31.9281037Z         "impl",
2026-06-17T06:47:31.9281585Z         "unit"
2026-06-17T06:47:31.9282132Z       ],
2026-06-17T06:47:31.9282660Z       "stages": {
2026-06-17T06:47:31.9283222Z         "doc": {
2026-06-17T06:47:31.9283788Z           "complete": false,
2026-06-17T06:47:31.9284437Z           "evidence": []
2026-06-17T06:47:31.9285035Z         },
2026-06-17T06:47:31.9285564Z         "impl": {
2026-06-17T06:47:31.9286147Z           "complete": true,
2026-06-17T06:47:31.9286781Z           "evidence": [
2026-06-17T06:47:31.9287382Z             {
2026-06-17T06:47:31.9288038Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9288858Z               "line": 482
2026-06-17T06:47:31.9289544Z             },
2026-06-17T06:47:31.9290085Z             {
2026-06-17T06:47:31.9290757Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-17T06:47:31.9291588Z               "line": 297
2026-06-17T06:47:31.9292203Z             },
2026-06-17T06:47:31.9292744Z             {
2026-06-17T06:47:31.9293362Z               "path": "crates/spt-store/src/rename.rs",
2026-06-17T06:47:31.9294154Z               "line": 59
2026-06-17T06:47:31.9294760Z             },
2026-06-17T06:47:31.9295292Z             {
2026-06-17T06:47:31.9295891Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9296654Z               "line": 4996
2026-06-17T06:47:31.9297269Z             },
2026-06-17T06:47:31.9297817Z             {
2026-06-17T06:47:31.9298413Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9299281Z               "line": 6809
2026-06-17T06:47:31.9299901Z             }
2026-06-17T06:47:31.9300442Z           ]
2026-06-17T06:47:31.9300965Z         },
2026-06-17T06:47:31.9301500Z         "int": {
2026-06-17T06:47:31.9302085Z           "complete": false,
2026-06-17T06:47:31.9302853Z           "evidence": []
2026-06-17T06:47:31.9303475Z         },
2026-06-17T06:47:31.9304022Z         "unit": {
2026-06-17T06:47:31.9304608Z           "complete": true,
2026-06-17T06:47:31.9305257Z           "evidence": [
2026-06-17T06:47:31.9305842Z             {
2026-06-17T06:47:31.9306488Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9307300Z               "line": 1403
2026-06-17T06:47:31.9307925Z             },
2026-06-17T06:47:31.9308473Z             {
2026-06-17T06:47:31.9309182Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9310122Z               "line": 1436
2026-06-17T06:47:31.9310737Z             },
2026-06-17T06:47:31.9311281Z             {
2026-06-17T06:47:31.9311949Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-17T06:47:31.9312769Z               "line": 527
2026-06-17T06:47:31.9313371Z             },
2026-06-17T06:47:31.9313922Z             {
2026-06-17T06:47:31.9314553Z               "path": "crates/spt-store/src/rename.rs",
2026-06-17T06:47:31.9315331Z               "line": 160
2026-06-17T06:47:31.9315937Z             },
2026-06-17T06:47:31.9316488Z             {
2026-06-17T06:47:31.9317125Z               "path": "crates/spt-store/src/rename.rs",
2026-06-17T06:47:31.9317907Z               "line": 190
2026-06-17T06:47:31.9318518Z             },
2026-06-17T06:47:31.9319139Z             {
2026-06-17T06:47:31.9319767Z               "path": "crates/spt-store/src/rename.rs",
2026-06-17T06:47:31.9320566Z               "line": 225
2026-06-17T06:47:31.9321177Z             },
2026-06-17T06:47:31.9321734Z             {
2026-06-17T06:47:31.9322329Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9323086Z               "line": 7308
2026-06-17T06:47:31.9323677Z             }
2026-06-17T06:47:31.9324222Z           ]
2026-06-17T06:47:31.9324747Z         }
2026-06-17T06:47:31.9325277Z       }
2026-06-17T06:47:31.9325786Z     },
2026-06-17T06:47:31.9326296Z     {
2026-06-17T06:47:31.9326855Z       "id": "REQ-INST-12",
2026-06-17T06:47:31.9328063Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-17T06:47:31.9329483Z       "requiredStages": [
2026-06-17T06:47:31.9330107Z         "impl",
2026-06-17T06:47:31.9330665Z         "unit"
2026-06-17T06:47:31.9331208Z       ],
2026-06-17T06:47:31.9331732Z       "stages": {
2026-06-17T06:47:31.9332317Z         "doc": {
2026-06-17T06:47:31.9332903Z           "complete": false,
2026-06-17T06:47:31.9333551Z           "evidence": []
2026-06-17T06:47:31.9334162Z         },
2026-06-17T06:47:31.9334700Z         "impl": {
2026-06-17T06:47:31.9335283Z           "complete": true,
2026-06-17T06:47:31.9335936Z           "evidence": [
2026-06-17T06:47:31.9336532Z             {
2026-06-17T06:47:31.9337176Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9337979Z               "line": 534
2026-06-17T06:47:31.9338589Z             },
2026-06-17T06:47:31.9339258Z             {
2026-06-17T06:47:31.9339920Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9340738Z               "line": 627
2026-06-17T06:47:31.9340996Z             },
2026-06-17T06:47:31.9341239Z             {
2026-06-17T06:47:31.9341597Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9341859Z               "line": 707
2026-06-17T06:47:31.9342113Z             },
2026-06-17T06:47:31.9342359Z             {
2026-06-17T06:47:31.9342706Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-17T06:47:31.9342971Z               "line": 96
2026-06-17T06:47:31.9343219Z             },
2026-06-17T06:47:31.9343463Z             {
2026-06-17T06:47:31.9343792Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-17T06:47:31.9344054Z               "line": 269
2026-06-17T06:47:31.9344292Z             },
2026-06-17T06:47:31.9344545Z             {
2026-06-17T06:47:31.9344897Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-17T06:47:31.9345275Z               "line": 135
2026-06-17T06:47:31.9345531Z             }
2026-06-17T06:47:31.9345782Z           ]
2026-06-17T06:47:31.9346030Z         },
2026-06-17T06:47:31.9346273Z         "int": {
2026-06-17T06:47:31.9346553Z           "complete": false,
2026-06-17T06:47:31.9346820Z           "evidence": []
2026-06-17T06:47:31.9347064Z         },
2026-06-17T06:47:31.9347317Z         "unit": {
2026-06-17T06:47:31.9347575Z           "complete": true,
2026-06-17T06:47:31.9347837Z           "evidence": [
2026-06-17T06:47:31.9348188Z             {
2026-06-17T06:47:31.9348544Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9348810Z               "line": 1478
2026-06-17T06:47:31.9349115Z             },
2026-06-17T06:47:31.9349373Z             {
2026-06-17T06:47:31.9349745Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9350012Z               "line": 1501
2026-06-17T06:47:31.9350255Z             },
2026-06-17T06:47:31.9350509Z             {
2026-06-17T06:47:31.9350865Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9351122Z               "line": 1538
2026-06-17T06:47:31.9351379Z             },
2026-06-17T06:47:31.9351622Z             {
2026-06-17T06:47:31.9351961Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-17T06:47:31.9352219Z               "line": 457
2026-06-17T06:47:31.9352467Z             },
2026-06-17T06:47:31.9352720Z             {
2026-06-17T06:47:31.9353068Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-17T06:47:31.9353339Z               "line": 172
2026-06-17T06:47:31.9353574Z             },
2026-06-17T06:47:31.9353827Z             {
2026-06-17T06:47:31.9354184Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-17T06:47:31.9354451Z               "line": 193
2026-06-17T06:47:31.9354705Z             },
2026-06-17T06:47:31.9354953Z             {
2026-06-17T06:47:31.9355315Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-17T06:47:31.9355573Z               "line": 219
2026-06-17T06:47:31.9355830Z             }
2026-06-17T06:47:31.9356076Z           ]
2026-06-17T06:47:31.9356323Z         }
2026-06-17T06:47:31.9356571Z       }
2026-06-17T06:47:31.9356813Z     },
2026-06-17T06:47:31.9357061Z     {
2026-06-17T06:47:31.9357329Z       "id": "REQ-INST-13",
2026-06-17T06:47:31.9357854Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-17T06:47:31.9358140Z       "requiredStages": [
2026-06-17T06:47:31.9358387Z         "impl",
2026-06-17T06:47:31.9358653Z         "unit"
2026-06-17T06:47:31.9358894Z       ],
2026-06-17T06:47:31.9359237Z       "stages": {
2026-06-17T06:47:31.9359504Z         "doc": {
2026-06-17T06:47:31.9359777Z           "complete": false,
2026-06-17T06:47:31.9360039Z           "evidence": []
2026-06-17T06:47:31.9360295Z         },
2026-06-17T06:47:31.9360553Z         "impl": {
2026-06-17T06:47:31.9360819Z           "complete": true,
2026-06-17T06:47:31.9361074Z           "evidence": [
2026-06-17T06:47:31.9361327Z             {
2026-06-17T06:47:31.9361668Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-17T06:47:31.9361930Z               "line": 100
2026-06-17T06:47:31.9362183Z             },
2026-06-17T06:47:31.9362431Z             {
2026-06-17T06:47:31.9362797Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-17T06:47:31.9363060Z               "line": 158
2026-06-17T06:47:31.9363304Z             }
2026-06-17T06:47:31.9363557Z           ]
2026-06-17T06:47:31.9363798Z         },
2026-06-17T06:47:31.9364058Z         "int": {
2026-06-17T06:47:31.9364344Z           "complete": false,
2026-06-17T06:47:31.9364603Z           "evidence": []
2026-06-17T06:47:31.9364874Z         },
2026-06-17T06:47:31.9365141Z         "unit": {
2026-06-17T06:47:31.9365441Z           "complete": true,
2026-06-17T06:47:31.9365726Z           "evidence": [
2026-06-17T06:47:31.9365985Z             {
2026-06-17T06:47:31.9366352Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-17T06:47:31.9366727Z               "line": 248
2026-06-17T06:47:31.9366991Z             },
2026-06-17T06:47:31.9367240Z             {
2026-06-17T06:47:31.9367602Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-17T06:47:31.9367870Z               "line": 266
2026-06-17T06:47:31.9368109Z             }
2026-06-17T06:47:31.9368362Z           ]
2026-06-17T06:47:31.9368599Z         }
2026-06-17T06:47:31.9368856Z       }
2026-06-17T06:47:31.9369165Z     },
2026-06-17T06:47:31.9369417Z     {
2026-06-17T06:47:31.9369825Z       "id": "REQ-INST-14",
2026-06-17T06:47:31.9370938Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-17T06:47:31.9371224Z       "requiredStages": [
2026-06-17T06:47:31.9371471Z         "doc",
2026-06-17T06:47:31.9371723Z         "impl",
2026-06-17T06:47:31.9371972Z         "unit"
2026-06-17T06:47:31.9372228Z       ],
2026-06-17T06:47:31.9372485Z       "stages": {
2026-06-17T06:47:31.9372738Z         "doc": {
2026-06-17T06:47:31.9373005Z           "complete": true,
2026-06-17T06:47:31.9373263Z           "evidence": [
2026-06-17T06:47:31.9373517Z             {
2026-06-17T06:47:31.9373803Z               "path": "CONTEXT.md",
2026-06-17T06:47:31.9374073Z               "line": 540
2026-06-17T06:47:31.9374334Z             },
2026-06-17T06:47:31.9374585Z             {
2026-06-17T06:47:31.9374877Z               "path": "docs/STORAGE.md",
2026-06-17T06:47:31.9375129Z               "line": 49
2026-06-17T06:47:31.9375391Z             }
2026-06-17T06:47:31.9375643Z           ]
2026-06-17T06:47:31.9375901Z         },
2026-06-17T06:47:31.9376158Z         "impl": {
2026-06-17T06:47:31.9376435Z           "complete": true,
2026-06-17T06:47:31.9376708Z           "evidence": [
2026-06-17T06:47:31.9376956Z             {
2026-06-17T06:47:31.9377340Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:31.9377609Z               "line": 404
2026-06-17T06:47:31.9377871Z             },
2026-06-17T06:47:31.9378115Z             {
2026-06-17T06:47:31.9378467Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9378739Z               "line": 346
2026-06-17T06:47:31.9379059Z             },
2026-06-17T06:47:31.9379322Z             {
2026-06-17T06:47:31.9379651Z               "path": "crates/spt-store/src/info.rs",
2026-06-17T06:47:31.9379911Z               "line": 270
2026-06-17T06:47:31.9380161Z             },
2026-06-17T06:47:31.9380400Z             {
2026-06-17T06:47:31.9380715Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9380992Z               "line": 1433
2026-06-17T06:47:31.9381254Z             }
2026-06-17T06:47:31.9381517Z           ]
2026-06-17T06:47:31.9381774Z         },
2026-06-17T06:47:31.9382031Z         "int": {
2026-06-17T06:47:31.9382308Z           "complete": false,
2026-06-17T06:47:31.9382570Z           "evidence": []
2026-06-17T06:47:31.9382818Z         },
2026-06-17T06:47:31.9383060Z         "unit": {
2026-06-17T06:47:31.9383331Z           "complete": true,
2026-06-17T06:47:31.9383593Z           "evidence": [
2026-06-17T06:47:31.9383837Z             {
2026-06-17T06:47:31.9384233Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:31.9384490Z               "line": 1111
2026-06-17T06:47:31.9384735Z             },
2026-06-17T06:47:31.9384976Z             {
2026-06-17T06:47:31.9385326Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9385588Z               "line": 912
2026-06-17T06:47:31.9385846Z             },
2026-06-17T06:47:31.9386090Z             {
2026-06-17T06:47:31.9386451Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9386714Z               "line": 1173
2026-06-17T06:47:31.9386995Z             },
2026-06-17T06:47:31.9387235Z             {
2026-06-17T06:47:31.9387564Z               "path": "crates/spt-store/src/info.rs",
2026-06-17T06:47:31.9387823Z               "line": 602
2026-06-17T06:47:31.9388065Z             },
2026-06-17T06:47:31.9388436Z             {
2026-06-17T06:47:31.9388751Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9389094Z               "line": 7384
2026-06-17T06:47:31.9389352Z             }
2026-06-17T06:47:31.9389605Z           ]
2026-06-17T06:47:31.9389858Z         }
2026-06-17T06:47:31.9390107Z       }
2026-06-17T06:47:31.9390347Z     },
2026-06-17T06:47:31.9390584Z     {
2026-06-17T06:47:31.9390847Z       "id": "REQ-INST-15",
2026-06-17T06:47:31.9392945Z       "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-17T06:47:31.9393334Z       "requiredStages": [
2026-06-17T06:47:31.9393591Z         "doc",
2026-06-17T06:47:31.9393843Z         "impl",
2026-06-17T06:47:31.9394093Z         "unit"
2026-06-17T06:47:31.9394345Z       ],
2026-06-17T06:47:31.9394598Z       "stages": {
2026-06-17T06:47:31.9394855Z         "doc": {
2026-06-17T06:47:31.9395122Z           "complete": true,
2026-06-17T06:47:31.9395384Z           "evidence": [
2026-06-17T06:47:31.9395641Z             {
2026-06-17T06:47:31.9396153Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-17T06:47:31.9396410Z               "line": 3
2026-06-17T06:47:31.9396669Z             }
2026-06-17T06:47:31.9396926Z           ]
2026-06-17T06:47:31.9397175Z         },
2026-06-17T06:47:31.9397436Z         "impl": {
2026-06-17T06:47:31.9397708Z           "complete": true,
2026-06-17T06:47:31.9403875Z           "evidence": [
2026-06-17T06:47:31.9404185Z             {
2026-06-17T06:47:31.9404582Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:31.9404844Z               "line": 353
2026-06-17T06:47:31.9405086Z             },
2026-06-17T06:47:31.9405339Z             {
2026-06-17T06:47:31.9405663Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-17T06:47:31.9405939Z               "line": 60
2026-06-17T06:47:31.9406182Z             },
2026-06-17T06:47:31.9406437Z             {
2026-06-17T06:47:31.9406815Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-17T06:47:31.9407067Z               "line": 368
2026-06-17T06:47:31.9407319Z             },
2026-06-17T06:47:31.9407563Z             {
2026-06-17T06:47:31.9407939Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-17T06:47:31.9408201Z               "line": 417
2026-06-17T06:47:31.9408459Z             },
2026-06-17T06:47:31.9408708Z             {
2026-06-17T06:47:31.9409147Z               "path": "crates/spt-store/src/home.rs",
2026-06-17T06:47:31.9409434Z               "line": 19
2026-06-17T06:47:31.9409682Z             },
2026-06-17T06:47:31.9409929Z             {
2026-06-17T06:47:31.9410258Z               "path": "crates/spt-store/src/home.rs",
2026-06-17T06:47:31.9410520Z               "line": 70
2026-06-17T06:47:31.9410768Z             },
2026-06-17T06:47:31.9411016Z             {
2026-06-17T06:47:31.9411354Z               "path": "crates/spt-store/src/home.rs",
2026-06-17T06:47:31.9411616Z               "line": 96
2026-06-17T06:47:31.9411871Z             },
2026-06-17T06:47:31.9412109Z             {
2026-06-17T06:47:31.9412438Z               "path": "crates/spt-store/src/home.rs",
2026-06-17T06:47:31.9412696Z               "line": 121
2026-06-17T06:47:31.9412944Z             },
2026-06-17T06:47:31.9413193Z             {
2026-06-17T06:47:31.9413522Z               "path": "crates/spt-store/src/home.rs",
2026-06-17T06:47:31.9413803Z               "line": 172
2026-06-17T06:47:31.9414036Z             },
2026-06-17T06:47:31.9414297Z             {
2026-06-17T06:47:31.9414640Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:31.9414898Z               "line": 138
2026-06-17T06:47:31.9415151Z             },
2026-06-17T06:47:31.9415389Z             {
2026-06-17T06:47:31.9415699Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9416171Z               "line": 1325
2026-06-17T06:47:31.9416424Z             }
2026-06-17T06:47:31.9416680Z           ]
2026-06-17T06:47:31.9416925Z         },
2026-06-17T06:47:31.9417169Z         "int": {
2026-06-17T06:47:31.9417436Z           "complete": false,
2026-06-17T06:47:31.9417699Z           "evidence": []
2026-06-17T06:47:31.9417952Z         },
2026-06-17T06:47:31.9418208Z         "unit": {
2026-06-17T06:47:31.9418480Z           "complete": true,
2026-06-17T06:47:31.9418737Z           "evidence": [
2026-06-17T06:47:31.9419177Z             {
2026-06-17T06:47:31.9419580Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-17T06:47:31.9419855Z               "line": 577
2026-06-17T06:47:31.9420107Z             },
2026-06-17T06:47:31.9420356Z             {
2026-06-17T06:47:31.9420727Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-17T06:47:31.9420990Z               "line": 638
2026-06-17T06:47:31.9421238Z             },
2026-06-17T06:47:31.9421486Z             {
2026-06-17T06:47:31.9421816Z               "path": "crates/spt-store/src/home.rs",
2026-06-17T06:47:31.9422075Z               "line": 213
2026-06-17T06:47:31.9422312Z             },
2026-06-17T06:47:31.9422565Z             {
2026-06-17T06:47:31.9422894Z               "path": "crates/spt-store/src/home.rs",
2026-06-17T06:47:31.9423151Z               "line": 249
2026-06-17T06:47:31.9423400Z             },
2026-06-17T06:47:31.9423656Z             {
2026-06-17T06:47:31.9423990Z               "path": "crates/spt-store/src/home.rs",
2026-06-17T06:47:31.9424257Z               "line": 262
2026-06-17T06:47:31.9424505Z             },
2026-06-17T06:47:31.9424758Z             {
2026-06-17T06:47:31.9425092Z               "path": "crates/spt-store/src/home.rs",
2026-06-17T06:47:31.9425363Z               "line": 338
2026-06-17T06:47:31.9425615Z             },
2026-06-17T06:47:31.9425868Z             {
2026-06-17T06:47:31.9426196Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:31.9426469Z               "line": 541
2026-06-17T06:47:31.9426707Z             },
2026-06-17T06:47:31.9426961Z             {
2026-06-17T06:47:31.9427259Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9427528Z               "line": 7321
2026-06-17T06:47:31.9427781Z             },
2026-06-17T06:47:31.9428029Z             {
2026-06-17T06:47:31.9428330Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9428588Z               "line": 9061
2026-06-17T06:47:31.9428846Z             }
2026-06-17T06:47:31.9429175Z           ]
2026-06-17T06:47:31.9429436Z         }
2026-06-17T06:47:31.9429698Z       }
2026-06-17T06:47:31.9429950Z     },
2026-06-17T06:47:31.9430193Z     {
2026-06-17T06:47:31.9430467Z       "id": "REQ-INST-2",
2026-06-17T06:47:31.9430821Z       "title": "Per-node files, synced Psyche mind",
2026-06-17T06:47:31.9431093Z       "requiredStages": [
2026-06-17T06:47:31.9431354Z         "impl",
2026-06-17T06:47:31.9431606Z         "unit"
2026-06-17T06:47:31.9431859Z       ],
2026-06-17T06:47:31.9432118Z       "stages": {
2026-06-17T06:47:31.9432361Z         "doc": {
2026-06-17T06:47:31.9432630Z           "complete": false,
2026-06-17T06:47:31.9432900Z           "evidence": []
2026-06-17T06:47:31.9433149Z         },
2026-06-17T06:47:31.9433402Z         "impl": {
2026-06-17T06:47:31.9433669Z           "complete": true,
2026-06-17T06:47:31.9433921Z           "evidence": [
2026-06-17T06:47:31.9434163Z             {
2026-06-17T06:47:31.9434527Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.9434784Z               "line": 107
2026-06-17T06:47:31.9435032Z             },
2026-06-17T06:47:31.9435272Z             {
2026-06-17T06:47:31.9435599Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-17T06:47:31.9435861Z               "line": 28
2026-06-17T06:47:31.9436108Z             },
2026-06-17T06:47:31.9436357Z             {
2026-06-17T06:47:31.9436690Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-17T06:47:31.9436948Z               "line": 74
2026-06-17T06:47:31.9437310Z             },
2026-06-17T06:47:31.9437563Z             {
2026-06-17T06:47:31.9437895Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-17T06:47:31.9438156Z               "line": 96
2026-06-17T06:47:31.9438413Z             },
2026-06-17T06:47:31.9438661Z             {
2026-06-17T06:47:31.9439082Z               "path": "crates/spt-live/src/resume.rs",
2026-06-17T06:47:31.9439338Z               "line": 86
2026-06-17T06:47:31.9439591Z             },
2026-06-17T06:47:31.9439844Z             {
2026-06-17T06:47:31.9440287Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-17T06:47:31.9440557Z               "line": 118
2026-06-17T06:47:31.9440799Z             }
2026-06-17T06:47:31.9441047Z           ]
2026-06-17T06:47:31.9441299Z         },
2026-06-17T06:47:31.9441537Z         "int": {
2026-06-17T06:47:31.9441819Z           "complete": false,
2026-06-17T06:47:31.9442072Z           "evidence": []
2026-06-17T06:47:31.9442325Z         },
2026-06-17T06:47:31.9442568Z         "unit": {
2026-06-17T06:47:31.9442834Z           "complete": true,
2026-06-17T06:47:31.9443091Z           "evidence": [
2026-06-17T06:47:31.9443338Z             {
2026-06-17T06:47:31.9443672Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-17T06:47:31.9443934Z               "line": 250
2026-06-17T06:47:31.9444186Z             },
2026-06-17T06:47:31.9444423Z             {
2026-06-17T06:47:31.9444767Z               "path": "crates/spt-live/src/resume.rs",
2026-06-17T06:47:31.9445020Z               "line": 280
2026-06-17T06:47:31.9445272Z             }
2026-06-17T06:47:31.9445527Z           ]
2026-06-17T06:47:31.9445775Z         }
2026-06-17T06:47:31.9446030Z       }
2026-06-17T06:47:31.9446273Z     },
2026-06-17T06:47:31.9446521Z     {
2026-06-17T06:47:31.9446789Z       "id": "REQ-INST-3",
2026-06-17T06:47:31.9447222Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-17T06:47:31.9447503Z       "requiredStages": [
2026-06-17T06:47:31.9447743Z         "doc",
2026-06-17T06:47:31.9447999Z         "impl",
2026-06-17T06:47:31.9448241Z         "unit"
2026-06-17T06:47:31.9448497Z       ],
2026-06-17T06:47:31.9448750Z       "stages": {
2026-06-17T06:47:31.9449084Z         "doc": {
2026-06-17T06:47:31.9449355Z           "complete": true,
2026-06-17T06:47:31.9449608Z           "evidence": [
2026-06-17T06:47:31.9449855Z             {
2026-06-17T06:47:31.9450165Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-17T06:47:31.9450427Z               "line": 3
2026-06-17T06:47:31.9450671Z             }
2026-06-17T06:47:31.9450915Z           ]
2026-06-17T06:47:31.9451165Z         },
2026-06-17T06:47:31.9451416Z         "impl": {
2026-06-17T06:47:31.9451688Z           "complete": true,
2026-06-17T06:47:31.9451927Z           "evidence": [
2026-06-17T06:47:31.9452179Z             {
2026-06-17T06:47:31.9452528Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-17T06:47:31.9452775Z               "line": 59
2026-06-17T06:47:31.9453032Z             },
2026-06-17T06:47:31.9453285Z             {
2026-06-17T06:47:31.9453642Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-17T06:47:31.9453884Z               "line": 480
2026-06-17T06:47:31.9454135Z             },
2026-06-17T06:47:31.9454383Z             {
2026-06-17T06:47:31.9454731Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.9454993Z               "line": 229
2026-06-17T06:47:31.9455242Z             },
2026-06-17T06:47:31.9455480Z             {
2026-06-17T06:47:31.9455842Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.9456106Z               "line": 359
2026-06-17T06:47:31.9456354Z             },
2026-06-17T06:47:31.9456599Z             {
2026-06-17T06:47:31.9456956Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.9457214Z               "line": 393
2026-06-17T06:47:31.9457477Z             },
2026-06-17T06:47:31.9457716Z             {
2026-06-17T06:47:31.9458182Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-17T06:47:31.9458449Z               "line": 74
2026-06-17T06:47:31.9458688Z             },
2026-06-17T06:47:31.9458940Z             {
2026-06-17T06:47:31.9459385Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:31.9459648Z               "line": 234
2026-06-17T06:47:31.9459887Z             },
2026-06-17T06:47:31.9460138Z             {
2026-06-17T06:47:31.9460516Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:31.9460768Z               "line": 390
2026-06-17T06:47:31.9461160Z             },
2026-06-17T06:47:31.9461407Z             {
2026-06-17T06:47:31.9461768Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:31.9462032Z               "line": 45
2026-06-17T06:47:31.9462286Z             },
2026-06-17T06:47:31.9462539Z             {
2026-06-17T06:47:31.9462882Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:31.9463140Z               "line": 114
2026-06-17T06:47:31.9463393Z             },
2026-06-17T06:47:31.9463649Z             {
2026-06-17T06:47:31.9463999Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:31.9464264Z               "line": 152
2026-06-17T06:47:31.9464505Z             },
2026-06-17T06:47:31.9464754Z             {
2026-06-17T06:47:31.9465101Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:31.9465359Z               "line": 168
2026-06-17T06:47:31.9465611Z             },
2026-06-17T06:47:31.9465858Z             {
2026-06-17T06:47:31.9466207Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:31.9466474Z               "line": 178
2026-06-17T06:47:31.9466717Z             },
2026-06-17T06:47:31.9466971Z             {
2026-06-17T06:47:31.9467308Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:31.9467589Z               "line": 210
2026-06-17T06:47:31.9467841Z             },
2026-06-17T06:47:31.9468089Z             {
2026-06-17T06:47:31.9468437Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:31.9468700Z               "line": 287
2026-06-17T06:47:31.9469029Z             },
2026-06-17T06:47:31.9469281Z             {
2026-06-17T06:47:31.9469636Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:31.9469904Z               "line": 311
2026-06-17T06:47:31.9470151Z             },
2026-06-17T06:47:31.9470398Z             {
2026-06-17T06:47:31.9470742Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:31.9471013Z               "line": 389
2026-06-17T06:47:31.9471261Z             },
2026-06-17T06:47:31.9471514Z             {
2026-06-17T06:47:31.9471862Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:31.9472125Z               "line": 438
2026-06-17T06:47:31.9472386Z             },
2026-06-17T06:47:31.9472641Z             {
2026-06-17T06:47:31.9472999Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-17T06:47:31.9473265Z               "line": 37
2026-06-17T06:47:31.9473518Z             },
2026-06-17T06:47:31.9473776Z             {
2026-06-17T06:47:31.9474128Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9474386Z               "line": 62
2026-06-17T06:47:31.9474636Z             },
2026-06-17T06:47:31.9474881Z             {
2026-06-17T06:47:31.9475212Z               "path": "crates/spt-store/src/info.rs",
2026-06-17T06:47:31.9475469Z               "line": 256
2026-06-17T06:47:31.9475709Z             },
2026-06-17T06:47:31.9475957Z             {
2026-06-17T06:47:31.9476271Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9476525Z               "line": 1664
2026-06-17T06:47:31.9476776Z             }
2026-06-17T06:47:31.9477025Z           ]
2026-06-17T06:47:31.9477268Z         },
2026-06-17T06:47:31.9477512Z         "int": {
2026-06-17T06:47:31.9477786Z           "complete": false,
2026-06-17T06:47:31.9478058Z           "evidence": []
2026-06-17T06:47:31.9478301Z         },
2026-06-17T06:47:31.9478549Z         "unit": {
2026-06-17T06:47:31.9478936Z           "complete": true,
2026-06-17T06:47:31.9479274Z           "evidence": [
2026-06-17T06:47:31.9479517Z             {
2026-06-17T06:47:31.9479865Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-17T06:47:31.9480126Z               "line": 360
2026-06-17T06:47:31.9480367Z             },
2026-06-17T06:47:31.9480615Z             {
2026-06-17T06:47:31.9480978Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.9481240Z               "line": 812
2026-06-17T06:47:31.9481602Z             },
2026-06-17T06:47:31.9481840Z             {
2026-06-17T06:47:31.9482198Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.9482466Z               "line": 869
2026-06-17T06:47:31.9482718Z             },
2026-06-17T06:47:31.9482961Z             {
2026-06-17T06:47:31.9483307Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-17T06:47:31.9483569Z               "line": 889
2026-06-17T06:47:31.9483816Z             },
2026-06-17T06:47:31.9484068Z             {
2026-06-17T06:47:31.9484412Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-17T06:47:31.9484684Z               "line": 1014
2026-06-17T06:47:31.9484937Z             },
2026-06-17T06:47:31.9485186Z             {
2026-06-17T06:47:31.9485564Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:31.9485816Z               "line": 1212
2026-06-17T06:47:31.9486078Z             },
2026-06-17T06:47:31.9486321Z             {
2026-06-17T06:47:31.9486697Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:31.9486969Z               "line": 1353
2026-06-17T06:47:31.9487208Z             },
2026-06-17T06:47:31.9487461Z             {
2026-06-17T06:47:31.9487809Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:31.9488077Z               "line": 449
2026-06-17T06:47:31.9488318Z             },
2026-06-17T06:47:31.9488575Z             {
2026-06-17T06:47:31.9488932Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:31.9489281Z               "line": 485
2026-06-17T06:47:31.9489538Z             },
2026-06-17T06:47:31.9489777Z             {
2026-06-17T06:47:31.9490129Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:31.9490397Z               "line": 540
2026-06-17T06:47:31.9490648Z             },
2026-06-17T06:47:31.9490899Z             {
2026-06-17T06:47:31.9491243Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:31.9491514Z               "line": 697
2026-06-17T06:47:31.9491766Z             },
2026-06-17T06:47:31.9492005Z             {
2026-06-17T06:47:31.9492349Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:31.9492611Z               "line": 931
2026-06-17T06:47:31.9492865Z             },
2026-06-17T06:47:31.9493107Z             {
2026-06-17T06:47:31.9493449Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:31.9493713Z               "line": 945
2026-06-17T06:47:31.9493966Z             },
2026-06-17T06:47:31.9494234Z             {
2026-06-17T06:47:31.9494587Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9494844Z               "line": 1214
2026-06-17T06:47:31.9495093Z             },
2026-06-17T06:47:31.9495340Z             {
2026-06-17T06:47:31.9495664Z               "path": "crates/spt-store/src/info.rs",
2026-06-17T06:47:31.9495925Z               "line": 552
2026-06-17T06:47:31.9496185Z             },
2026-06-17T06:47:31.9496434Z             {
2026-06-17T06:47:31.9496748Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9497011Z               "line": 7345
2026-06-17T06:47:31.9497267Z             }
2026-06-17T06:47:31.9497515Z           ]
2026-06-17T06:47:31.9497758Z         }
2026-06-17T06:47:31.9498012Z       }
2026-06-17T06:47:31.9498255Z     },
2026-06-17T06:47:31.9498498Z     {
2026-06-17T06:47:31.9498764Z       "id": "REQ-INST-4",
2026-06-17T06:47:31.9499445Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-17T06:47:31.9499722Z       "requiredStages": [
2026-06-17T06:47:31.9499980Z         "impl",
2026-06-17T06:47:31.9500233Z         "unit"
2026-06-17T06:47:31.9500481Z       ],
2026-06-17T06:47:31.9500728Z       "stages": {
2026-06-17T06:47:31.9500971Z         "doc": {
2026-06-17T06:47:31.9501246Z           "complete": false,
2026-06-17T06:47:31.9501493Z           "evidence": []
2026-06-17T06:47:31.9501745Z         },
2026-06-17T06:47:31.9502035Z         "impl": {
2026-06-17T06:47:31.9502413Z           "complete": true,
2026-06-17T06:47:31.9502679Z           "evidence": [
2026-06-17T06:47:31.9502919Z             {
2026-06-17T06:47:31.9503285Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.9503547Z               "line": 360
2026-06-17T06:47:31.9503806Z             },
2026-06-17T06:47:31.9504057Z             {
2026-06-17T06:47:31.9504403Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:31.9504675Z               "line": 202
2026-06-17T06:47:31.9504922Z             },
2026-06-17T06:47:31.9505180Z             {
2026-06-17T06:47:31.9505527Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:31.9505789Z               "line": 234
2026-06-17T06:47:31.9506067Z             },
2026-06-17T06:47:31.9506311Z             {
2026-06-17T06:47:31.9506657Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:31.9506912Z               "line": 274
2026-06-17T06:47:31.9507169Z             }
2026-06-17T06:47:31.9507422Z           ]
2026-06-17T06:47:31.9507675Z         },
2026-06-17T06:47:31.9507929Z         "int": {
2026-06-17T06:47:31.9508200Z           "complete": false,
2026-06-17T06:47:31.9508466Z           "evidence": []
2026-06-17T06:47:31.9508710Z         },
2026-06-17T06:47:31.9509024Z         "unit": {
2026-06-17T06:47:31.9509295Z           "complete": true,
2026-06-17T06:47:31.9509563Z           "evidence": [
2026-06-17T06:47:31.9509820Z             {
2026-06-17T06:47:31.9510183Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.9510450Z               "line": 864
2026-06-17T06:47:31.9510692Z             },
2026-06-17T06:47:31.9510950Z             {
2026-06-17T06:47:31.9511293Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:31.9511565Z               "line": 561
2026-06-17T06:47:31.9511820Z             },
2026-06-17T06:47:31.9512058Z             {
2026-06-17T06:47:31.9512406Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:31.9512673Z               "line": 668
2026-06-17T06:47:31.9512924Z             },
2026-06-17T06:47:31.9513178Z             {
2026-06-17T06:47:31.9513526Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:31.9513797Z               "line": 750
2026-06-17T06:47:31.9514046Z             }
2026-06-17T06:47:31.9514290Z           ]
2026-06-17T06:47:31.9514545Z         }
2026-06-17T06:47:31.9514800Z       }
2026-06-17T06:47:31.9515040Z     },
2026-06-17T06:47:31.9515293Z     {
2026-06-17T06:47:31.9515560Z       "id": "REQ-INST-5",
2026-06-17T06:47:31.9516078Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-17T06:47:31.9516359Z       "requiredStages": [
2026-06-17T06:47:31.9516609Z         "impl",
2026-06-17T06:47:31.9516871Z         "unit",
2026-06-17T06:47:31.9517131Z         "int"
2026-06-17T06:47:31.9517381Z       ],
2026-06-17T06:47:31.9517639Z       "stages": {
2026-06-17T06:47:31.9517892Z         "doc": {
2026-06-17T06:47:31.9518160Z           "complete": false,
2026-06-17T06:47:31.9518431Z           "evidence": []
2026-06-17T06:47:31.9518693Z         },
2026-06-17T06:47:31.9519008Z         "impl": {
2026-06-17T06:47:31.9519288Z           "complete": true,
2026-06-17T06:47:31.9519550Z           "evidence": [
2026-06-17T06:47:31.9519791Z             {
2026-06-17T06:47:31.9520152Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-17T06:47:31.9520400Z               "line": 85
2026-06-17T06:47:31.9520661Z             },
2026-06-17T06:47:31.9521015Z             {
2026-06-17T06:47:31.9521363Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-17T06:47:31.9521620Z               "line": 68
2026-06-17T06:47:31.9521867Z             },
2026-06-17T06:47:31.9522125Z             {
2026-06-17T06:47:31.9522446Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-17T06:47:31.9522714Z               "line": 99
2026-06-17T06:47:31.9522961Z             },
2026-06-17T06:47:31.9523199Z             {
2026-06-17T06:47:31.9523538Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-17T06:47:31.9523906Z               "line": 183
2026-06-17T06:47:31.9524168Z             },
2026-06-17T06:47:31.9524420Z             {
2026-06-17T06:47:31.9524749Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-17T06:47:31.9525015Z               "line": 314
2026-06-17T06:47:31.9525257Z             }
2026-06-17T06:47:31.9525509Z           ]
2026-06-17T06:47:31.9525766Z         },
2026-06-17T06:47:31.9526027Z         "int": {
2026-06-17T06:47:31.9526300Z           "complete": true,
2026-06-17T06:47:31.9526572Z           "evidence": [
2026-06-17T06:47:31.9526825Z             {
2026-06-17T06:47:31.9527192Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-17T06:47:31.9527450Z               "line": 156
2026-06-17T06:47:31.9527701Z             },
2026-06-17T06:47:31.9527960Z             {
2026-06-17T06:47:31.9528313Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-17T06:47:31.9528585Z               "line": 145
2026-06-17T06:47:31.9528839Z             },
2026-06-17T06:47:31.9529168Z             {
2026-06-17T06:47:31.9529529Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:31.9529791Z               "line": 705
2026-06-17T06:47:31.9530045Z             },
2026-06-17T06:47:31.9530289Z             {
2026-06-17T06:47:31.9530655Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:31.9530921Z               "line": 1067
2026-06-17T06:47:31.9531164Z             }
2026-06-17T06:47:31.9531416Z           ]
2026-06-17T06:47:31.9531665Z         },
2026-06-17T06:47:31.9531909Z         "unit": {
2026-06-17T06:47:31.9532181Z           "complete": true,
2026-06-17T06:47:31.9532442Z           "evidence": [
2026-06-17T06:47:31.9532694Z             {
2026-06-17T06:47:31.9533020Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-17T06:47:31.9533302Z               "line": 552
2026-06-17T06:47:31.9533550Z             },
2026-06-17T06:47:31.9533803Z             {
2026-06-17T06:47:31.9534137Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-17T06:47:31.9534398Z               "line": 595
2026-06-17T06:47:31.9534656Z             },
2026-06-17T06:47:31.9534899Z             {
2026-06-17T06:47:31.9535242Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-17T06:47:31.9535495Z               "line": 219
2026-06-17T06:47:31.9535747Z             }
2026-06-17T06:47:31.9535992Z           ]
2026-06-17T06:47:31.9536250Z         }
2026-06-17T06:47:31.9536508Z       }
2026-06-17T06:47:31.9536751Z     },
2026-06-17T06:47:31.9537004Z     {
2026-06-17T06:47:31.9537270Z       "id": "REQ-INST-6",
2026-06-17T06:47:31.9537818Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-17T06:47:31.9538095Z       "requiredStages": [
2026-06-17T06:47:31.9538351Z         "impl",
2026-06-17T06:47:31.9538607Z         "unit",
2026-06-17T06:47:31.9538859Z         "int"
2026-06-17T06:47:31.9539174Z       ],
2026-06-17T06:47:31.9539436Z       "stages": {
2026-06-17T06:47:31.9539698Z         "doc": {
2026-06-17T06:47:31.9539976Z           "complete": true,
2026-06-17T06:47:31.9540238Z           "evidence": [
2026-06-17T06:47:31.9540496Z             {
2026-06-17T06:47:31.9540787Z               "path": "docs/DEFERRED.md",
2026-06-17T06:47:31.9541047Z               "line": 13
2026-06-17T06:47:31.9541301Z             }
2026-06-17T06:47:31.9541558Z           ]
2026-06-17T06:47:31.9541801Z         },
2026-06-17T06:47:31.9542202Z         "impl": {
2026-06-17T06:47:31.9542479Z           "complete": true,
2026-06-17T06:47:31.9542741Z           "evidence": [
2026-06-17T06:47:31.9542997Z             {
2026-06-17T06:47:31.9543334Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-17T06:47:31.9543604Z               "line": 391
2026-06-17T06:47:31.9543843Z             },
2026-06-17T06:47:31.9544096Z             {
2026-06-17T06:47:31.9544448Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-17T06:47:31.9544712Z               "line": 27
2026-06-17T06:47:31.9545073Z             },
2026-06-17T06:47:31.9545312Z             {
2026-06-17T06:47:31.9545666Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-17T06:47:31.9545918Z               "line": 73
2026-06-17T06:47:31.9546173Z             },
2026-06-17T06:47:31.9546424Z             {
2026-06-17T06:47:31.9546777Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-17T06:47:31.9547039Z               "line": 182
2026-06-17T06:47:31.9547287Z             },
2026-06-17T06:47:31.9547540Z             {
2026-06-17T06:47:31.9547884Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:31.9548150Z               "line": 426
2026-06-17T06:47:31.9548403Z             },
2026-06-17T06:47:31.9548641Z             {
2026-06-17T06:47:31.9561840Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-17T06:47:31.9562125Z               "line": 31
2026-06-17T06:47:31.9562378Z             },
2026-06-17T06:47:31.9562630Z             {
2026-06-17T06:47:31.9562984Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-17T06:47:31.9563279Z               "line": 202
2026-06-17T06:47:31.9563526Z             },
2026-06-17T06:47:31.9563783Z             {
2026-06-17T06:47:31.9564117Z               "path": "crates/spt/src/api/worker.rs",
2026-06-17T06:47:31.9564379Z               "line": 83
2026-06-17T06:47:31.9564645Z             },
2026-06-17T06:47:31.9564902Z             {
2026-06-17T06:47:31.9565231Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9565522Z               "line": 1665
2026-06-17T06:47:31.9565808Z             },
2026-06-17T06:47:31.9566078Z             {
2026-06-17T06:47:31.9566437Z               "path": "crates/spt/src/wansend.rs",
2026-06-17T06:47:31.9566728Z               "line": 179
2026-06-17T06:47:31.9567009Z             },
2026-06-17T06:47:31.9567265Z             {
2026-06-17T06:47:31.9567587Z               "path": "crates/spt/src/wansend.rs",
2026-06-17T06:47:31.9567855Z               "line": 215
2026-06-17T06:47:31.9568107Z             }
2026-06-17T06:47:31.9568365Z           ]
2026-06-17T06:47:31.9568626Z         },
2026-06-17T06:47:31.9568879Z         "int": {
2026-06-17T06:47:31.9569246Z           "complete": true,
2026-06-17T06:47:31.9569508Z           "evidence": [
2026-06-17T06:47:31.9569761Z             {
2026-06-17T06:47:31.9570135Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:31.9570407Z               "line": 719
2026-06-17T06:47:31.9570664Z             },
2026-06-17T06:47:31.9570927Z             {
2026-06-17T06:47:31.9571298Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:31.9571571Z               "line": 1112
2026-06-17T06:47:31.9571827Z             },
2026-06-17T06:47:31.9572080Z             {
2026-06-17T06:47:31.9572433Z               "path": "crates/spt/src/wansend.rs",
2026-06-17T06:47:31.9572713Z               "line": 726
2026-06-17T06:47:31.9572995Z             }
2026-06-17T06:47:31.9573276Z           ]
2026-06-17T06:47:31.9573548Z         },
2026-06-17T06:47:31.9573816Z         "unit": {
2026-06-17T06:47:31.9574091Z           "complete": true,
2026-06-17T06:47:31.9574372Z           "evidence": [
2026-06-17T06:47:31.9574630Z             {
2026-06-17T06:47:31.9575001Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-17T06:47:31.9575275Z               "line": 661
2026-06-17T06:47:31.9575529Z             },
2026-06-17T06:47:31.9575791Z             {
2026-06-17T06:47:31.9576339Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:31.9576605Z               "line": 899
2026-06-17T06:47:31.9576868Z             },
2026-06-17T06:47:31.9577120Z             {
2026-06-17T06:47:31.9577477Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-17T06:47:31.9577732Z               "line": 66
2026-06-17T06:47:31.9577992Z             },
2026-06-17T06:47:31.9578242Z             {
2026-06-17T06:47:31.9578586Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-17T06:47:31.9578852Z               "line": 297
2026-06-17T06:47:31.9579297Z             },
2026-06-17T06:47:31.9579554Z             {
2026-06-17T06:47:31.9579893Z               "path": "crates/spt/src/api/worker.rs",
2026-06-17T06:47:31.9580170Z               "line": 203
2026-06-17T06:47:31.9580425Z             }
2026-06-17T06:47:31.9580680Z           ]
2026-06-17T06:47:31.9580934Z         }
2026-06-17T06:47:31.9581182Z       }
2026-06-17T06:47:31.9581433Z     },
2026-06-17T06:47:31.9581676Z     {
2026-06-17T06:47:31.9581954Z       "id": "REQ-INST-7",
2026-06-17T06:47:31.9582364Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-17T06:47:31.9582649Z       "requiredStages": [
2026-06-17T06:47:31.9582907Z         "impl",
2026-06-17T06:47:31.9583165Z         "unit",
2026-06-17T06:47:31.9583426Z         "int"
2026-06-17T06:47:31.9583674Z       ],
2026-06-17T06:47:31.9583945Z       "stages": {
2026-06-17T06:47:31.9584203Z         "doc": {
2026-06-17T06:47:31.9584480Z           "complete": false,
2026-06-17T06:47:31.9584762Z           "evidence": []
2026-06-17T06:47:31.9585020Z         },
2026-06-17T06:47:31.9585281Z         "impl": {
2026-06-17T06:47:31.9585556Z           "complete": true,
2026-06-17T06:47:31.9585826Z           "evidence": [
2026-06-17T06:47:31.9586080Z             {
2026-06-17T06:47:31.9586451Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-17T06:47:31.9586722Z               "line": 436
2026-06-17T06:47:31.9586990Z             },
2026-06-17T06:47:31.9587243Z             {
2026-06-17T06:47:31.9587634Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:31.9587892Z               "line": 27
2026-06-17T06:47:31.9588144Z             },
2026-06-17T06:47:31.9588409Z             {
2026-06-17T06:47:31.9588797Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:31.9589131Z               "line": 207
2026-06-17T06:47:31.9589384Z             },
2026-06-17T06:47:31.9589624Z             {
2026-06-17T06:47:31.9590008Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:31.9590290Z               "line": 344
2026-06-17T06:47:31.9590543Z             },
2026-06-17T06:47:31.9590792Z             {
2026-06-17T06:47:31.9591143Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-17T06:47:31.9591412Z               "line": 59
2026-06-17T06:47:31.9591669Z             },
2026-06-17T06:47:31.9591917Z             {
2026-06-17T06:47:31.9592284Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9592565Z               "line": 41
2026-06-17T06:47:31.9592819Z             },
2026-06-17T06:47:31.9593077Z             {
2026-06-17T06:47:31.9593447Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-17T06:47:31.9593707Z               "line": 27
2026-06-17T06:47:31.9593962Z             },
2026-06-17T06:47:31.9594219Z             {
2026-06-17T06:47:31.9594592Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-17T06:47:31.9594853Z               "line": 119
2026-06-17T06:47:31.9595106Z             },
2026-06-17T06:47:31.9595369Z             {
2026-06-17T06:47:31.9600812Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-17T06:47:31.9601141Z               "line": 134
2026-06-17T06:47:31.9601400Z             },
2026-06-17T06:47:31.9601655Z             {
2026-06-17T06:47:31.9602030Z               "path": "crates/spt-store/src/registry.rs",
2026-06-17T06:47:31.9602297Z               "line": 139
2026-06-17T06:47:31.9602549Z             }
2026-06-17T06:47:31.9602960Z           ]
2026-06-17T06:47:31.9603222Z         },
2026-06-17T06:47:31.9603494Z         "int": {
2026-06-17T06:47:31.9603769Z           "complete": true,
2026-06-17T06:47:31.9604041Z           "evidence": [
2026-06-17T06:47:31.9604295Z             {
2026-06-17T06:47:31.9604661Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-17T06:47:31.9604923Z               "line": 145
2026-06-17T06:47:31.9605177Z             },
2026-06-17T06:47:31.9605438Z             {
2026-06-17T06:47:31.9605806Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:31.9606201Z               "line": 663
2026-06-17T06:47:31.9606460Z             },
2026-06-17T06:47:31.9606705Z             {
2026-06-17T06:47:31.9607075Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:31.9607341Z               "line": 962
2026-06-17T06:47:31.9607599Z             }
2026-06-17T06:47:31.9607848Z           ]
2026-06-17T06:47:31.9608096Z         },
2026-06-17T06:47:31.9608353Z         "unit": {
2026-06-17T06:47:31.9608634Z           "complete": true,
2026-06-17T06:47:31.9608891Z           "evidence": [
2026-06-17T06:47:31.9609230Z             {
2026-06-17T06:47:31.9609615Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:31.9609889Z               "line": 1082
2026-06-17T06:47:31.9610142Z             },
2026-06-17T06:47:31.9610391Z             {
2026-06-17T06:47:31.9610781Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:31.9611039Z               "line": 1414
2026-06-17T06:47:31.9611301Z             },
2026-06-17T06:47:31.9611565Z             {
2026-06-17T06:47:31.9611950Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-17T06:47:31.9612220Z               "line": 84
2026-06-17T06:47:31.9612479Z             },
2026-06-17T06:47:31.9612732Z             {
2026-06-17T06:47:31.9613095Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9613366Z               "line": 780
2026-06-17T06:47:31.9613629Z             },
2026-06-17T06:47:31.9613887Z             {
2026-06-17T06:47:31.9614253Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9614522Z               "line": 791
2026-06-17T06:47:31.9614784Z             },
2026-06-17T06:47:31.9615034Z             {
2026-06-17T06:47:31.9615397Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9615668Z               "line": 806
2026-06-17T06:47:31.9615916Z             },
2026-06-17T06:47:31.9616179Z             {
2026-06-17T06:47:31.9616555Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-17T06:47:31.9616817Z               "line": 166
2026-06-17T06:47:31.9617077Z             },
2026-06-17T06:47:31.9617332Z             {
2026-06-17T06:47:31.9617712Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-17T06:47:31.9617983Z               "line": 181
2026-06-17T06:47:31.9618245Z             },
2026-06-17T06:47:31.9618502Z             {
2026-06-17T06:47:31.9618884Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-17T06:47:31.9619219Z               "line": 214
2026-06-17T06:47:31.9619475Z             }
2026-06-17T06:47:31.9619728Z           ]
2026-06-17T06:47:31.9619986Z         }
2026-06-17T06:47:31.9620238Z       }
2026-06-17T06:47:31.9620492Z     },
2026-06-17T06:47:31.9620745Z     {
2026-06-17T06:47:31.9621007Z       "id": "REQ-INST-8",
2026-06-17T06:47:31.9621460Z       "title": "Remote-control mode distinct from local operation",
2026-06-17T06:47:31.9621746Z       "requiredStages": [
2026-06-17T06:47:31.9622004Z         "impl",
2026-06-17T06:47:31.9622261Z         "unit",
2026-06-17T06:47:31.9622505Z         "int"
2026-06-17T06:47:31.9622766Z       ],
2026-06-17T06:47:31.9623030Z       "stages": {
2026-06-17T06:47:31.9623278Z         "doc": {
2026-06-17T06:47:31.9623556Z           "complete": false,
2026-06-17T06:47:31.9623813Z           "evidence": []
2026-06-17T06:47:31.9624075Z         },
2026-06-17T06:47:31.9624332Z         "impl": {
2026-06-17T06:47:31.9624715Z           "complete": true,
2026-06-17T06:47:31.9624997Z           "evidence": [
2026-06-17T06:47:31.9625248Z             {
2026-06-17T06:47:31.9625614Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-17T06:47:31.9625876Z               "line": 104
2026-06-17T06:47:31.9626139Z             },
2026-06-17T06:47:31.9626391Z             {
2026-06-17T06:47:31.9626759Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-17T06:47:31.9627035Z               "line": 299
2026-06-17T06:47:31.9627392Z             },
2026-06-17T06:47:31.9627655Z             {
2026-06-17T06:47:31.9628005Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-17T06:47:31.9628272Z               "line": 339
2026-06-17T06:47:31.9628534Z             },
2026-06-17T06:47:31.9628800Z             {
2026-06-17T06:47:31.9629230Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-17T06:47:31.9629498Z               "line": 62
2026-06-17T06:47:31.9629793Z             }
2026-06-17T06:47:31.9630050Z           ]
2026-06-17T06:47:31.9630298Z         },
2026-06-17T06:47:31.9630555Z         "int": {
2026-06-17T06:47:31.9630844Z           "complete": true,
2026-06-17T06:47:31.9631115Z           "evidence": [
2026-06-17T06:47:31.9631367Z             {
2026-06-17T06:47:31.9631745Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-17T06:47:31.9632011Z               "line": 415
2026-06-17T06:47:31.9632269Z             },
2026-06-17T06:47:31.9632521Z             {
2026-06-17T06:47:31.9632893Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:31.9633169Z               "line": 1026
2026-06-17T06:47:31.9633430Z             }
2026-06-17T06:47:31.9633691Z           ]
2026-06-17T06:47:31.9633929Z         },
2026-06-17T06:47:31.9634191Z         "unit": {
2026-06-17T06:47:31.9634463Z           "complete": true,
2026-06-17T06:47:31.9634735Z           "evidence": [
2026-06-17T06:47:31.9634993Z             {
2026-06-17T06:47:31.9635360Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-17T06:47:31.9635637Z               "line": 358
2026-06-17T06:47:31.9635895Z             },
2026-06-17T06:47:31.9636155Z             {
2026-06-17T06:47:31.9636508Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-17T06:47:31.9636779Z               "line": 513
2026-06-17T06:47:31.9637037Z             },
2026-06-17T06:47:31.9637290Z             {
2026-06-17T06:47:31.9637658Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-17T06:47:31.9637910Z               "line": 116
2026-06-17T06:47:31.9638169Z             },
2026-06-17T06:47:31.9638419Z             {
2026-06-17T06:47:31.9638774Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-17T06:47:31.9639133Z               "line": 160
2026-06-17T06:47:31.9639385Z             }
2026-06-17T06:47:31.9639642Z           ]
2026-06-17T06:47:31.9639900Z         }
2026-06-17T06:47:31.9640157Z       }
2026-06-17T06:47:31.9640401Z     },
2026-06-17T06:47:31.9640659Z     {
2026-06-17T06:47:31.9640944Z       "id": "REQ-INST-9",
2026-06-17T06:47:31.9641498Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-17T06:47:31.9641780Z       "requiredStages": [
2026-06-17T06:47:31.9642033Z         "impl",
2026-06-17T06:47:31.9642291Z         "unit"
2026-06-17T06:47:31.9642552Z       ],
2026-06-17T06:47:31.9642814Z       "stages": {
2026-06-17T06:47:31.9643071Z         "doc": {
2026-06-17T06:47:31.9643339Z           "complete": false,
2026-06-17T06:47:31.9643612Z           "evidence": []
2026-06-17T06:47:31.9643867Z         },
2026-06-17T06:47:31.9644131Z         "impl": {
2026-06-17T06:47:31.9644403Z           "complete": true,
2026-06-17T06:47:31.9644680Z           "evidence": [
2026-06-17T06:47:31.9644943Z             {
2026-06-17T06:47:31.9645305Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9645582Z               "line": 417
2026-06-17T06:47:31.9645831Z             }
2026-06-17T06:47:31.9646092Z           ]
2026-06-17T06:47:31.9646493Z         },
2026-06-17T06:47:31.9646758Z         "int": {
2026-06-17T06:47:31.9647044Z           "complete": false,
2026-06-17T06:47:31.9647310Z           "evidence": []
2026-06-17T06:47:31.9647592Z         },
2026-06-17T06:47:31.9647850Z         "unit": {
2026-06-17T06:47:31.9648137Z           "complete": true,
2026-06-17T06:47:31.9648399Z           "evidence": [
2026-06-17T06:47:31.9648651Z             {
2026-06-17T06:47:31.9649098Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9649473Z               "line": 1321
2026-06-17T06:47:31.9649740Z             },
2026-06-17T06:47:31.9649993Z             {
2026-06-17T06:47:31.9650374Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9650646Z               "line": 1330
2026-06-17T06:47:31.9650909Z             },
2026-06-17T06:47:31.9651170Z             {
2026-06-17T06:47:31.9651534Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9651817Z               "line": 1346
2026-06-17T06:47:31.9652073Z             },
2026-06-17T06:47:31.9652327Z             {
2026-06-17T06:47:31.9652697Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9652975Z               "line": 1358
2026-06-17T06:47:31.9653232Z             },
2026-06-17T06:47:31.9653485Z             {
2026-06-17T06:47:31.9653857Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:31.9654129Z               "line": 1378
2026-06-17T06:47:31.9654388Z             }
2026-06-17T06:47:31.9654649Z           ]
2026-06-17T06:47:31.9654902Z         }
2026-06-17T06:47:31.9655160Z       }
2026-06-17T06:47:31.9655413Z     },
2026-06-17T06:47:31.9655664Z     {
2026-06-17T06:47:31.9655946Z       "id": "REQ-INSTALL-1",
2026-06-17T06:47:31.9656518Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-17T06:47:31.9656804Z       "requiredStages": [
2026-06-17T06:47:31.9657063Z         "doc",
2026-06-17T06:47:31.9657318Z         "impl",
2026-06-17T06:47:31.9657565Z         "int"
2026-06-17T06:47:31.9657809Z       ],
2026-06-17T06:47:31.9658067Z       "stages": {
2026-06-17T06:47:31.9658320Z         "doc": {
2026-06-17T06:47:31.9658597Z           "complete": true,
2026-06-17T06:47:31.9658873Z           "evidence": [
2026-06-17T06:47:31.9659207Z             {
2026-06-17T06:47:31.9659496Z               "path": "CONTEXT.md",
2026-06-17T06:47:31.9659770Z               "line": 702
2026-06-17T06:47:31.9660028Z             }
2026-06-17T06:47:31.9660286Z           ]
2026-06-17T06:47:31.9660539Z         },
2026-06-17T06:47:31.9660796Z         "impl": {
2026-06-17T06:47:31.9661076Z           "complete": true,
2026-06-17T06:47:31.9661349Z           "evidence": [
2026-06-17T06:47:31.9661611Z             {
2026-06-17T06:47:31.9661926Z               "path": "installer/install.ps1",
2026-06-17T06:47:31.9662194Z               "line": 57
2026-06-17T06:47:31.9662445Z             },
2026-06-17T06:47:31.9662699Z             {
2026-06-17T06:47:31.9663014Z               "path": "installer/install.sh",
2026-06-17T06:47:31.9663276Z               "line": 52
2026-06-17T06:47:31.9663535Z             }
2026-06-17T06:47:31.9663788Z           ]
2026-06-17T06:47:31.9664045Z         },
2026-06-17T06:47:31.9664302Z         "int": {
2026-06-17T06:47:31.9664578Z           "complete": true,
2026-06-17T06:47:31.9664859Z           "evidence": [
2026-06-17T06:47:31.9665115Z             {
2026-06-17T06:47:31.9665490Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-17T06:47:31.9665763Z               "line": 21
2026-06-17T06:47:31.9666025Z             }
2026-06-17T06:47:31.9666278Z           ]
2026-06-17T06:47:31.9666544Z         },
2026-06-17T06:47:31.9666873Z         "unit": {
2026-06-17T06:47:31.9667164Z           "complete": false,
2026-06-17T06:47:31.9667436Z           "evidence": []
2026-06-17T06:47:31.9667693Z         }
2026-06-17T06:47:31.9667951Z       }
2026-06-17T06:47:31.9668203Z     },
2026-06-17T06:47:31.9668459Z     {
2026-06-17T06:47:31.9668847Z       "id": "REQ-INSTALL-10",
2026-06-17T06:47:31.9672754Z       "title": "Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)",
2026-06-17T06:47:31.9673033Z       "requiredStages": [
2026-06-17T06:47:31.9673399Z         "impl",
2026-06-17T06:47:31.9673656Z         "unit"
2026-06-17T06:47:31.9673908Z       ],
2026-06-17T06:47:31.9674161Z       "stages": {
2026-06-17T06:47:31.9674418Z         "doc": {
2026-06-17T06:47:31.9674719Z           "complete": false,
2026-06-17T06:47:31.9675015Z           "evidence": []
2026-06-17T06:47:31.9675297Z         },
2026-06-17T06:47:31.9675585Z         "impl": {
2026-06-17T06:47:31.9675898Z           "complete": true,
2026-06-17T06:47:31.9676189Z           "evidence": [
2026-06-17T06:47:31.9676460Z             {
2026-06-17T06:47:31.9676814Z               "path": "installer/install.ps1",
2026-06-17T06:47:31.9677104Z               "line": 191
2026-06-17T06:47:31.9677381Z             }
2026-06-17T06:47:31.9677658Z           ]
2026-06-17T06:47:31.9677938Z         },
2026-06-17T06:47:31.9678216Z         "int": {
2026-06-17T06:47:31.9678520Z           "complete": false,
2026-06-17T06:47:31.9678811Z           "evidence": []
2026-06-17T06:47:31.9679163Z         },
2026-06-17T06:47:31.9679455Z         "unit": {
2026-06-17T06:47:31.9679756Z           "complete": true,
2026-06-17T06:47:31.9680051Z           "evidence": [
2026-06-17T06:47:31.9680332Z             {
2026-06-17T06:47:31.9680726Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-17T06:47:31.9681010Z               "line": 211
2026-06-17T06:47:31.9681287Z             }
2026-06-17T06:47:31.9681567Z           ]
2026-06-17T06:47:31.9681849Z         }
2026-06-17T06:47:31.9682107Z       }
2026-06-17T06:47:31.9682360Z     },
2026-06-17T06:47:31.9682614Z     {
2026-06-17T06:47:31.9682899Z       "id": "REQ-INSTALL-11",
2026-06-17T06:47:31.9688023Z       "title": "Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)",
2026-06-17T06:47:31.9688313Z       "requiredStages": [
2026-06-17T06:47:31.9688575Z         "doc",
2026-06-17T06:47:31.9688837Z         "impl",
2026-06-17T06:47:31.9689165Z         "unit"
2026-06-17T06:47:31.9689423Z       ],
2026-06-17T06:47:31.9689696Z       "stages": {
2026-06-17T06:47:31.9689953Z         "doc": {
2026-06-17T06:47:31.9690233Z           "complete": true,
2026-06-17T06:47:31.9690505Z           "evidence": [
2026-06-17T06:47:31.9690762Z             {
2026-06-17T06:47:31.9691053Z               "path": "CONTEXT.md",
2026-06-17T06:47:31.9691328Z               "line": 138
2026-06-17T06:47:31.9691585Z             },
2026-06-17T06:47:31.9691842Z             {
2026-06-17T06:47:31.9692146Z               "path": "docs/MANIFEST.md",
2026-06-17T06:47:31.9692419Z               "line": 63
2026-06-17T06:47:31.9692672Z             }
2026-06-17T06:47:31.9692924Z           ]
2026-06-17T06:47:31.9693178Z         },
2026-06-17T06:47:31.9693440Z         "impl": {
2026-06-17T06:47:31.9693716Z           "complete": true,
2026-06-17T06:47:31.9693987Z           "evidence": [
2026-06-17T06:47:31.9694238Z             {
2026-06-17T06:47:31.9694614Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-17T06:47:31.9694981Z               "line": 223
2026-06-17T06:47:31.9695248Z             },
2026-06-17T06:47:31.9695505Z             {
2026-06-17T06:47:31.9695882Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.9696145Z               "line": 98
2026-06-17T06:47:31.9696398Z             },
2026-06-17T06:47:31.9696672Z             {
2026-06-17T06:47:31.9697037Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:31.9697309Z               "line": 116
2026-06-17T06:47:31.9697552Z             },
2026-06-17T06:47:31.9697910Z             {
2026-06-17T06:47:31.9698278Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-17T06:47:31.9698535Z               "line": 295
2026-06-17T06:47:31.9698797Z             },
2026-06-17T06:47:31.9699131Z             {
2026-06-17T06:47:31.9699473Z               "path": "crates/spt-live/src/digest.rs",
2026-06-17T06:47:31.9699744Z               "line": 88
2026-06-17T06:47:31.9700003Z             },
2026-06-17T06:47:31.9700246Z             {
2026-06-17T06:47:31.9700589Z               "path": "crates/spt-live/src/digest.rs",
2026-06-17T06:47:31.9700866Z               "line": 104
2026-06-17T06:47:31.9701123Z             },
2026-06-17T06:47:31.9701370Z             {
2026-06-17T06:47:31.9701732Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:31.9702006Z               "line": 272
2026-06-17T06:47:31.9702269Z             },
2026-06-17T06:47:31.9702531Z             {
2026-06-17T06:47:31.9702899Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:31.9703170Z               "line": 307
2026-06-17T06:47:31.9703423Z             },
2026-06-17T06:47:31.9703670Z             {
2026-06-17T06:47:31.9704034Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:31.9704315Z               "line": 481
2026-06-17T06:47:31.9704566Z             },
2026-06-17T06:47:31.9704826Z             {
2026-06-17T06:47:31.9705197Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:31.9705470Z               "line": 504
2026-06-17T06:47:31.9705737Z             },
2026-06-17T06:47:31.9705990Z             {
2026-06-17T06:47:31.9706352Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:31.9706620Z               "line": 519
2026-06-17T06:47:31.9706887Z             },
2026-06-17T06:47:31.9707142Z             {
2026-06-17T06:47:31.9707459Z               "path": "crates/spt/src/api/mod.rs",
2026-06-17T06:47:31.9707731Z               "line": 486
2026-06-17T06:47:31.9707984Z             }
2026-06-17T06:47:31.9708247Z           ]
2026-06-17T06:47:31.9708509Z         },
2026-06-17T06:47:31.9708775Z         "int": {
2026-06-17T06:47:31.9709124Z           "complete": false,
2026-06-17T06:47:31.9709395Z           "evidence": []
2026-06-17T06:47:31.9709643Z         },
2026-06-17T06:47:31.9709901Z         "unit": {
2026-06-17T06:47:31.9710182Z           "complete": true,
2026-06-17T06:47:31.9710448Z           "evidence": [
2026-06-17T06:47:31.9710705Z             {
2026-06-17T06:47:31.9711068Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:31.9711335Z               "line": 757
2026-06-17T06:47:31.9711593Z             },
2026-06-17T06:47:31.9711845Z             {
2026-06-17T06:47:31.9712211Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:31.9712482Z               "line": 769
2026-06-17T06:47:31.9712739Z             },
2026-06-17T06:47:31.9712996Z             {
2026-06-17T06:47:31.9713354Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:31.9713626Z               "line": 778
2026-06-17T06:47:31.9713882Z             }
2026-06-17T06:47:31.9714140Z           ]
2026-06-17T06:47:31.9714388Z         }
2026-06-17T06:47:31.9714633Z       }
2026-06-17T06:47:31.9714904Z     },
2026-06-17T06:47:31.9715145Z     {
2026-06-17T06:47:31.9715434Z       "id": "REQ-INSTALL-2",
2026-06-17T06:47:31.9715829Z       "title": "Marketplace-repackaging-friendly install",
2026-06-17T06:47:31.9716115Z       "requiredStages": [
2026-06-17T06:47:31.9716463Z         "doc"
2026-06-17T06:47:31.9716726Z       ],
2026-06-17T06:47:31.9716992Z       "stages": {
2026-06-17T06:47:31.9717241Z         "doc": {
2026-06-17T06:47:31.9717519Z           "complete": true,
2026-06-17T06:47:31.9717788Z           "evidence": [
2026-06-17T06:47:31.9718052Z             {
2026-06-17T06:47:31.9718329Z               "path": "CONTEXT.md",
2026-06-17T06:47:31.9718592Z               "line": 703
2026-06-17T06:47:31.9718845Z             }
2026-06-17T06:47:31.9719183Z           ]
2026-06-17T06:47:31.9719569Z         },
2026-06-17T06:47:31.9719831Z         "impl": {
2026-06-17T06:47:31.9720109Z           "complete": false,
2026-06-17T06:47:31.9720372Z           "evidence": []
2026-06-17T06:47:31.9720631Z         },
2026-06-17T06:47:31.9720898Z         "int": {
2026-06-17T06:47:31.9721170Z           "complete": false,
2026-06-17T06:47:31.9721442Z           "evidence": []
2026-06-17T06:47:31.9721695Z         },
2026-06-17T06:47:31.9721958Z         "unit": {
2026-06-17T06:47:31.9722239Z           "complete": false,
2026-06-17T06:47:31.9722519Z           "evidence": []
2026-06-17T06:47:31.9722771Z         }
2026-06-17T06:47:31.9723028Z       }
2026-06-17T06:47:31.9723289Z     },
2026-06-17T06:47:31.9723532Z     {
2026-06-17T06:47:31.9723813Z       "id": "REQ-INSTALL-3",
2026-06-17T06:47:31.9724238Z       "title": "Idempotent + interactive-optional first run",
2026-06-17T06:47:31.9724524Z       "requiredStages": [
2026-06-17T06:47:31.9724786Z         "impl",
2026-06-17T06:47:31.9725039Z         "int"
2026-06-17T06:47:31.9725300Z       ],
2026-06-17T06:47:31.9725550Z       "stages": {
2026-06-17T06:47:31.9725805Z         "doc": {
2026-06-17T06:47:31.9726089Z           "complete": false,
2026-06-17T06:47:31.9726365Z           "evidence": []
2026-06-17T06:47:31.9726627Z         },
2026-06-17T06:47:31.9726886Z         "impl": {
2026-06-17T06:47:31.9727167Z           "complete": true,
2026-06-17T06:47:31.9727425Z           "evidence": [
2026-06-17T06:47:31.9727687Z             {
2026-06-17T06:47:31.9728012Z               "path": "installer/install.ps1",
2026-06-17T06:47:31.9728295Z               "line": 100
2026-06-17T06:47:31.9728556Z             },
2026-06-17T06:47:31.9728804Z             {
2026-06-17T06:47:31.9729209Z               "path": "installer/install.ps1",
2026-06-17T06:47:31.9729471Z               "line": 111
2026-06-17T06:47:31.9729724Z             },
2026-06-17T06:47:31.9729983Z             {
2026-06-17T06:47:31.9730302Z               "path": "installer/install.sh",
2026-06-17T06:47:31.9730564Z               "line": 79
2026-06-17T06:47:31.9730821Z             }
2026-06-17T06:47:31.9731072Z           ]
2026-06-17T06:47:31.9731326Z         },
2026-06-17T06:47:31.9731593Z         "int": {
2026-06-17T06:47:31.9731869Z           "complete": true,
2026-06-17T06:47:31.9732135Z           "evidence": [
2026-06-17T06:47:31.9732393Z             {
2026-06-17T06:47:31.9732750Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-17T06:47:31.9733017Z               "line": 167
2026-06-17T06:47:31.9733275Z             }
2026-06-17T06:47:31.9733531Z           ]
2026-06-17T06:47:31.9733787Z         },
2026-06-17T06:47:31.9734049Z         "unit": {
2026-06-17T06:47:31.9734330Z           "complete": false,
2026-06-17T06:47:31.9734602Z           "evidence": []
2026-06-17T06:47:31.9734860Z         }
2026-06-17T06:47:31.9735113Z       }
2026-06-17T06:47:31.9735365Z     },
2026-06-17T06:47:31.9735604Z     {
2026-06-17T06:47:31.9735894Z       "id": "REQ-INSTALL-4",
2026-06-17T06:47:31.9737855Z       "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-17T06:47:31.9738142Z       "requiredStages": [
2026-06-17T06:47:31.9738399Z         "impl",
2026-06-17T06:47:31.9738653Z         "unit"
2026-06-17T06:47:31.9738913Z       ],
2026-06-17T06:47:31.9739230Z       "stages": {
2026-06-17T06:47:31.9739497Z         "doc": {
2026-06-17T06:47:31.9739894Z           "complete": false,
2026-06-17T06:47:31.9740165Z           "evidence": []
2026-06-17T06:47:31.9740427Z         },
2026-06-17T06:47:31.9740689Z         "impl": {
2026-06-17T06:47:31.9740966Z           "complete": true,
2026-06-17T06:47:31.9741234Z           "evidence": [
2026-06-17T06:47:31.9741482Z             {
2026-06-17T06:47:31.9741896Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-17T06:47:31.9742162Z               "line": 165
2026-06-17T06:47:31.9742415Z             },
2026-06-17T06:47:31.9742758Z             {
2026-06-17T06:47:31.9743135Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:31.9743398Z               "line": 29
2026-06-17T06:47:31.9743659Z             },
2026-06-17T06:47:31.9743915Z             {
2026-06-17T06:47:31.9744284Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:31.9744552Z               "line": 275
2026-06-17T06:47:31.9744810Z             },
2026-06-17T06:47:31.9745068Z             {
2026-06-17T06:47:31.9745439Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:31.9745702Z               "line": 343
2026-06-17T06:47:31.9745965Z             },
2026-06-17T06:47:31.9746216Z             {
2026-06-17T06:47:31.9746589Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:31.9746859Z               "line": 373
2026-06-17T06:47:31.9747118Z             },
2026-06-17T06:47:31.9747363Z             {
2026-06-17T06:47:31.9747729Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:31.9747991Z               "line": 405
2026-06-17T06:47:31.9748235Z             },
2026-06-17T06:47:31.9748497Z             {
2026-06-17T06:47:31.9748837Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9749213Z               "line": 5101
2026-06-17T06:47:31.9749469Z             }
2026-06-17T06:47:31.9749728Z           ]
2026-06-17T06:47:31.9749995Z         },
2026-06-17T06:47:31.9750259Z         "int": {
2026-06-17T06:47:31.9750539Z           "complete": false,
2026-06-17T06:47:31.9750817Z           "evidence": []
2026-06-17T06:47:31.9751103Z         },
2026-06-17T06:47:31.9751384Z         "unit": {
2026-06-17T06:47:31.9751684Z           "complete": true,
2026-06-17T06:47:31.9751975Z           "evidence": [
2026-06-17T06:47:31.9752250Z             {
2026-06-17T06:47:31.9752674Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-17T06:47:31.9752960Z               "line": 375
2026-06-17T06:47:31.9753241Z             },
2026-06-17T06:47:31.9753532Z             {
2026-06-17T06:47:31.9753904Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:31.9754171Z               "line": 767
2026-06-17T06:47:31.9754433Z             },
2026-06-17T06:47:31.9754689Z             {
2026-06-17T06:47:31.9755056Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:31.9755323Z               "line": 808
2026-06-17T06:47:31.9755580Z             },
2026-06-17T06:47:31.9755832Z             {
2026-06-17T06:47:31.9756205Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:31.9756466Z               "line": 828
2026-06-17T06:47:31.9756733Z             },
2026-06-17T06:47:31.9756971Z             {
2026-06-17T06:47:31.9757291Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9757557Z               "line": 7665
2026-06-17T06:47:31.9757813Z             }
2026-06-17T06:47:31.9758070Z           ]
2026-06-17T06:47:31.9758322Z         }
2026-06-17T06:47:31.9758586Z       }
2026-06-17T06:47:31.9758843Z     },
2026-06-17T06:47:31.9759172Z     {
2026-06-17T06:47:31.9759454Z       "id": "REQ-INSTALL-5",
2026-06-17T06:47:31.9760960Z       "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-17T06:47:31.9761246Z       "requiredStages": [
2026-06-17T06:47:31.9761500Z         "impl",
2026-06-17T06:47:31.9761862Z         "int"
2026-06-17T06:47:31.9762109Z       ],
2026-06-17T06:47:31.9762373Z       "stages": {
2026-06-17T06:47:31.9762641Z         "doc": {
2026-06-17T06:47:31.9762915Z           "complete": false,
2026-06-17T06:47:31.9763186Z           "evidence": []
2026-06-17T06:47:31.9763439Z         },
2026-06-17T06:47:31.9763702Z         "impl": {
2026-06-17T06:47:31.9763973Z           "complete": true,
2026-06-17T06:47:31.9764242Z           "evidence": [
2026-06-17T06:47:31.9764499Z             {
2026-06-17T06:47:31.9764823Z               "path": "installer/install.ps1",
2026-06-17T06:47:31.9765188Z               "line": 5
2026-06-17T06:47:31.9765448Z             },
2026-06-17T06:47:31.9765710Z             {
2026-06-17T06:47:31.9766025Z               "path": "installer/install.sh",
2026-06-17T06:47:31.9766296Z               "line": 6
2026-06-17T06:47:31.9766545Z             }
2026-06-17T06:47:31.9766794Z           ]
2026-06-17T06:47:31.9767056Z         },
2026-06-17T06:47:31.9767308Z         "int": {
2026-06-17T06:47:31.9767584Z           "complete": true,
2026-06-17T06:47:31.9767851Z           "evidence": [
2026-06-17T06:47:31.9768112Z             {
2026-06-17T06:47:31.9768473Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-17T06:47:31.9768745Z               "line": 22
2026-06-17T06:47:31.9769088Z             }
2026-06-17T06:47:31.9769341Z           ]
2026-06-17T06:47:31.9769598Z         },
2026-06-17T06:47:31.9769860Z         "unit": {
2026-06-17T06:47:31.9770141Z           "complete": false,
2026-06-17T06:47:31.9770413Z           "evidence": []
2026-06-17T06:47:31.9770670Z         }
2026-06-17T06:47:31.9770920Z       }
2026-06-17T06:47:31.9771172Z     },
2026-06-17T06:47:31.9771430Z     {
2026-06-17T06:47:31.9771712Z       "id": "REQ-INSTALL-6",
2026-06-17T06:47:31.9775112Z       "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-17T06:47:31.9775402Z       "requiredStages": [
2026-06-17T06:47:31.9775657Z         "impl",
2026-06-17T06:47:31.9775913Z         "unit"
2026-06-17T06:47:31.9776166Z       ],
2026-06-17T06:47:31.9776428Z       "stages": {
2026-06-17T06:47:31.9776696Z         "doc": {
2026-06-17T06:47:31.9776972Z           "complete": false,
2026-06-17T06:47:31.9777253Z           "evidence": []
2026-06-17T06:47:31.9777505Z         },
2026-06-17T06:47:31.9777768Z         "impl": {
2026-06-17T06:47:31.9778045Z           "complete": true,
2026-06-17T06:47:31.9778323Z           "evidence": [
2026-06-17T06:47:31.9778582Z             {
2026-06-17T06:47:31.9778938Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:31.9779263Z               "line": 61
2026-06-17T06:47:31.9779524Z             },
2026-06-17T06:47:31.9779791Z             {
2026-06-17T06:47:31.9780134Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:31.9780401Z               "line": 596
2026-06-17T06:47:31.9780663Z             },
2026-06-17T06:47:31.9780927Z             {
2026-06-17T06:47:31.9781300Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-17T06:47:31.9781567Z               "line": 191
2026-06-17T06:47:31.9781834Z             },
2026-06-17T06:47:31.9782090Z             {
2026-06-17T06:47:31.9782463Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-17T06:47:31.9782739Z               "line": 276
2026-06-17T06:47:31.9782991Z             },
2026-06-17T06:47:31.9783244Z             {
2026-06-17T06:47:31.9783559Z               "path": "crates/spt/src/main.rs",
2026-06-17T06:47:31.9783831Z               "line": 42
2026-06-17T06:47:31.9784093Z             },
2026-06-17T06:47:31.9784350Z             {
2026-06-17T06:47:31.9784655Z               "path": "installer/install.sh",
2026-06-17T06:47:31.9785018Z               "line": 104
2026-06-17T06:47:31.9785275Z             }
2026-06-17T06:47:31.9785527Z           ]
2026-06-17T06:47:31.9785784Z         },
2026-06-17T06:47:31.9786043Z         "int": {
2026-06-17T06:47:31.9786318Z           "complete": false,
2026-06-17T06:47:31.9786588Z           "evidence": []
2026-06-17T06:47:31.9786845Z         },
2026-06-17T06:47:31.9787093Z         "unit": {
2026-06-17T06:47:31.9787365Z           "complete": true,
2026-06-17T06:47:31.9787637Z           "evidence": [
2026-06-17T06:47:31.9787880Z             {
2026-06-17T06:47:31.9788346Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-17T06:47:31.9788605Z               "line": 866
2026-06-17T06:47:31.9788863Z             }
2026-06-17T06:47:31.9789204Z           ]
2026-06-17T06:47:31.9789455Z         }
2026-06-17T06:47:31.9789712Z       }
2026-06-17T06:47:31.9789951Z     },
2026-06-17T06:47:31.9790199Z     {
2026-06-17T06:47:31.9790486Z       "id": "REQ-INSTALL-7",
2026-06-17T06:47:31.9793644Z       "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-17T06:47:31.9793939Z       "requiredStages": [
2026-06-17T06:47:31.9794196Z         "impl"
2026-06-17T06:47:31.9794453Z       ],
2026-06-17T06:47:31.9794720Z       "stages": {
2026-06-17T06:47:31.9794978Z         "doc": {
2026-06-17T06:47:31.9795263Z           "complete": false,
2026-06-17T06:47:31.9795534Z           "evidence": []
2026-06-17T06:47:31.9795787Z         },
2026-06-17T06:47:31.9796055Z         "impl": {
2026-06-17T06:47:31.9796331Z           "complete": true,
2026-06-17T06:47:31.9796608Z           "evidence": [
2026-06-17T06:47:31.9796859Z             {
2026-06-17T06:47:31.9797181Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9797457Z               "line": 3644
2026-06-17T06:47:31.9797719Z             },
2026-06-17T06:47:31.9797973Z             {
2026-06-17T06:47:31.9798297Z               "path": "installer/install.ps1",
2026-06-17T06:47:31.9798559Z               "line": 157
2026-06-17T06:47:31.9798823Z             }
2026-06-17T06:47:31.9799165Z           ]
2026-06-17T06:47:31.9799423Z         },
2026-06-17T06:47:31.9799673Z         "int": {
2026-06-17T06:47:31.9799953Z           "complete": false,
2026-06-17T06:47:31.9800224Z           "evidence": []
2026-06-17T06:47:31.9800483Z         },
2026-06-17T06:47:31.9800726Z         "unit": {
2026-06-17T06:47:31.9801007Z           "complete": false,
2026-06-17T06:47:31.9801268Z           "evidence": []
2026-06-17T06:47:31.9805919Z         }
2026-06-17T06:47:31.9806219Z       }
2026-06-17T06:47:31.9806501Z     },
2026-06-17T06:47:31.9806749Z     {
2026-06-17T06:47:31.9807049Z       "id": "REQ-INSTALL-8",
2026-06-17T06:47:31.9810513Z       "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-17T06:47:31.9810798Z       "requiredStages": [
2026-06-17T06:47:31.9811048Z         "impl"
2026-06-17T06:47:31.9811315Z       ],
2026-06-17T06:47:31.9811582Z       "stages": {
2026-06-17T06:47:31.9811848Z         "doc": {
2026-06-17T06:47:31.9812139Z           "complete": false,
2026-06-17T06:47:31.9812401Z           "evidence": []
2026-06-17T06:47:31.9812653Z         },
2026-06-17T06:47:31.9812910Z         "impl": {
2026-06-17T06:47:31.9813190Z           "complete": true,
2026-06-17T06:47:31.9813456Z           "evidence": [
2026-06-17T06:47:31.9813714Z             {
2026-06-17T06:47:31.9814168Z               "path": "installer/install.ps1",
2026-06-17T06:47:31.9814454Z               "line": 184
2026-06-17T06:47:31.9814710Z             },
2026-06-17T06:47:31.9814954Z             {
2026-06-17T06:47:31.9815263Z               "path": "installer/install.sh",
2026-06-17T06:47:31.9815530Z               "line": 121
2026-06-17T06:47:31.9815793Z             }
2026-06-17T06:47:31.9816045Z           ]
2026-06-17T06:47:31.9816296Z         },
2026-06-17T06:47:31.9816554Z         "int": {
2026-06-17T06:47:31.9816841Z           "complete": false,
2026-06-17T06:47:31.9817236Z           "evidence": []
2026-06-17T06:47:31.9817489Z         },
2026-06-17T06:47:31.9817747Z         "unit": {
2026-06-17T06:47:31.9818022Z           "complete": false,
2026-06-17T06:47:31.9818282Z           "evidence": []
2026-06-17T06:47:31.9818534Z         }
2026-06-17T06:47:31.9818792Z       }
2026-06-17T06:47:31.9819112Z     },
2026-06-17T06:47:31.9819360Z     {
2026-06-17T06:47:31.9819651Z       "id": "REQ-INSTALL-9",
2026-06-17T06:47:31.9823120Z       "title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)",
2026-06-17T06:47:31.9823413Z       "requiredStages": [
2026-06-17T06:47:31.9823682Z         "doc",
2026-06-17T06:47:31.9823940Z         "impl",
2026-06-17T06:47:31.9824203Z         "unit"
2026-06-17T06:47:31.9824455Z       ],
2026-06-17T06:47:31.9824738Z       "stages": {
2026-06-17T06:47:31.9825004Z         "doc": {
2026-06-17T06:47:31.9825275Z           "complete": true,
2026-06-17T06:47:31.9825547Z           "evidence": [
2026-06-17T06:47:31.9825804Z             {
2026-06-17T06:47:31.9826090Z               "path": "CONTEXT.md",
2026-06-17T06:47:31.9826357Z               "line": 719
2026-06-17T06:47:31.9826624Z             }
2026-06-17T06:47:31.9826866Z           ]
2026-06-17T06:47:31.9827129Z         },
2026-06-17T06:47:31.9827387Z         "impl": {
2026-06-17T06:47:31.9827663Z           "complete": true,
2026-06-17T06:47:31.9827936Z           "evidence": [
2026-06-17T06:47:31.9828188Z             {
2026-06-17T06:47:31.9828511Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9828775Z               "line": 2334
2026-06-17T06:47:31.9829099Z             },
2026-06-17T06:47:31.9829362Z             {
2026-06-17T06:47:31.9829672Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9829939Z               "line": 2358
2026-06-17T06:47:31.9830197Z             }
2026-06-17T06:47:31.9830460Z           ]
2026-06-17T06:47:31.9830722Z         },
2026-06-17T06:47:31.9830974Z         "int": {
2026-06-17T06:47:31.9831254Z           "complete": false,
2026-06-17T06:47:31.9831520Z           "evidence": []
2026-06-17T06:47:31.9831772Z         },
2026-06-17T06:47:31.9832019Z         "unit": {
2026-06-17T06:47:31.9832300Z           "complete": true,
2026-06-17T06:47:31.9832577Z           "evidence": [
2026-06-17T06:47:31.9832830Z             {
2026-06-17T06:47:31.9833153Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9833431Z               "line": 6922
2026-06-17T06:47:31.9833685Z             },
2026-06-17T06:47:31.9833940Z             {
2026-06-17T06:47:31.9834262Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9834538Z               "line": 7695
2026-06-17T06:47:31.9834791Z             }
2026-06-17T06:47:31.9835054Z           ]
2026-06-17T06:47:31.9835312Z         }
2026-06-17T06:47:31.9835564Z       }
2026-06-17T06:47:31.9835821Z     },
2026-06-17T06:47:31.9836078Z     {
2026-06-17T06:47:31.9836340Z       "id": "REQ-KICK-1",
2026-06-17T06:47:31.9843596Z       "title": "Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).",
2026-06-17T06:47:31.9843982Z       "requiredStages": [
2026-06-17T06:47:31.9844240Z         "doc",
2026-06-17T06:47:31.9844500Z         "impl",
2026-06-17T06:47:31.9844750Z         "unit",
2026-06-17T06:47:31.9845004Z         "int"
2026-06-17T06:47:31.9845261Z       ],
2026-06-17T06:47:31.9845519Z       "stages": {
2026-06-17T06:47:31.9845781Z         "doc": {
2026-06-17T06:47:31.9846067Z           "complete": true,
2026-06-17T06:47:31.9846338Z           "evidence": [
2026-06-17T06:47:31.9846590Z             {
2026-06-17T06:47:31.9846877Z               "path": "CONTEXT.md",
2026-06-17T06:47:31.9847155Z               "line": 330
2026-06-17T06:47:31.9847410Z             }
2026-06-17T06:47:31.9847663Z           ]
2026-06-17T06:47:31.9847929Z         },
2026-06-17T06:47:31.9848184Z         "impl": {
2026-06-17T06:47:31.9848464Z           "complete": true,
2026-06-17T06:47:31.9848728Z           "evidence": [
2026-06-17T06:47:31.9849047Z             {
2026-06-17T06:47:31.9849413Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-17T06:47:31.9849684Z               "line": 41
2026-06-17T06:47:31.9849939Z             },
2026-06-17T06:47:31.9850187Z             {
2026-06-17T06:47:31.9850492Z               "path": "crates/spt/src/rc.rs",
2026-06-17T06:47:31.9850763Z               "line": 181
2026-06-17T06:47:31.9851017Z             }
2026-06-17T06:47:31.9851275Z           ]
2026-06-17T06:47:31.9851537Z         },
2026-06-17T06:47:31.9851794Z         "int": {
2026-06-17T06:47:31.9852060Z           "complete": true,
2026-06-17T06:47:31.9852337Z           "evidence": [
2026-06-17T06:47:31.9852588Z             {
2026-06-17T06:47:31.9852959Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-17T06:47:31.9853231Z               "line": 789
2026-06-17T06:47:31.9853489Z             }
2026-06-17T06:47:31.9853750Z           ]
2026-06-17T06:47:31.9854008Z         },
2026-06-17T06:47:31.9854279Z         "unit": {
2026-06-17T06:47:31.9854561Z           "complete": true,
2026-06-17T06:47:31.9854838Z           "evidence": [
2026-06-17T06:47:31.9855089Z             {
2026-06-17T06:47:31.9855454Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-17T06:47:31.9855726Z               "line": 205
2026-06-17T06:47:31.9855983Z             }
2026-06-17T06:47:31.9856240Z           ]
2026-06-17T06:47:31.9856484Z         }
2026-06-17T06:47:31.9856742Z       }
2026-06-17T06:47:31.9856995Z     },
2026-06-17T06:47:31.9857256Z     {
2026-06-17T06:47:31.9857537Z       "id": "REQ-MANIFEST-1",
2026-06-17T06:47:31.9858105Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-17T06:47:31.9858390Z       "requiredStages": [
2026-06-17T06:47:31.9858639Z         "doc",
2026-06-17T06:47:31.9858900Z         "impl",
2026-06-17T06:47:31.9859200Z         "unit"
2026-06-17T06:47:31.9859458Z       ],
2026-06-17T06:47:31.9859715Z       "stages": {
2026-06-17T06:47:31.9859969Z         "doc": {
2026-06-17T06:47:31.9860253Z           "complete": true,
2026-06-17T06:47:31.9860513Z           "evidence": [
2026-06-17T06:47:31.9860775Z             {
2026-06-17T06:47:31.9861080Z               "path": "docs/MANIFEST.md",
2026-06-17T06:47:31.9861338Z               "line": 19
2026-06-17T06:47:31.9861591Z             }
2026-06-17T06:47:31.9861849Z           ]
2026-06-17T06:47:31.9862107Z         },
2026-06-17T06:47:31.9862358Z         "impl": {
2026-06-17T06:47:31.9862732Z           "complete": true,
2026-06-17T06:47:31.9863010Z           "evidence": [
2026-06-17T06:47:31.9863276Z             {
2026-06-17T06:47:31.9863642Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:31.9863909Z               "line": 18
2026-06-17T06:47:31.9864168Z             }
2026-06-17T06:47:31.9864416Z           ]
2026-06-17T06:47:31.9864668Z         },
2026-06-17T06:47:31.9864930Z         "int": {
2026-06-17T06:47:31.9865202Z           "complete": false,
2026-06-17T06:47:31.9865478Z           "evidence": []
2026-06-17T06:47:31.9865842Z         },
2026-06-17T06:47:31.9866105Z         "unit": {
2026-06-17T06:47:31.9866382Z           "complete": true,
2026-06-17T06:47:31.9866653Z           "evidence": [
2026-06-17T06:47:31.9866906Z             {
2026-06-17T06:47:31.9867293Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:31.9867565Z               "line": 959
2026-06-17T06:47:31.9867826Z             },
2026-06-17T06:47:31.9868088Z             {
2026-06-17T06:47:31.9868449Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:31.9868726Z               "line": 1111
2026-06-17T06:47:31.9869054Z             },
2026-06-17T06:47:31.9869318Z             {
2026-06-17T06:47:31.9869684Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:31.9869951Z               "line": 1123
2026-06-17T06:47:31.9870210Z             },
2026-06-17T06:47:31.9870458Z             {
2026-06-17T06:47:31.9870833Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:31.9871102Z               "line": 1134
2026-06-17T06:47:31.9871354Z             },
2026-06-17T06:47:31.9871607Z             {
2026-06-17T06:47:31.9871969Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:31.9872250Z               "line": 1151
2026-06-17T06:47:31.9872514Z             },
2026-06-17T06:47:31.9872771Z             {
2026-06-17T06:47:31.9873137Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:31.9873415Z               "line": 1165
2026-06-17T06:47:31.9873756Z             },
2026-06-17T06:47:31.9874112Z             {
2026-06-17T06:47:31.9874498Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:31.9874765Z               "line": 1281
2026-06-17T06:47:31.9875023Z             },
2026-06-17T06:47:31.9875282Z             {
2026-06-17T06:47:31.9875657Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:31.9875935Z               "line": 1296
2026-06-17T06:47:31.9876190Z             },
2026-06-17T06:47:31.9876449Z             {
2026-06-17T06:47:31.9876813Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:31.9877088Z               "line": 1407
2026-06-17T06:47:31.9877356Z             },
2026-06-17T06:47:31.9877614Z             {
2026-06-17T06:47:31.9877986Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:31.9878252Z               "line": 1418
2026-06-17T06:47:31.9878515Z             }
2026-06-17T06:47:31.9878774Z           ]
2026-06-17T06:47:31.9879101Z         }
2026-06-17T06:47:31.9879353Z       }
2026-06-17T06:47:31.9879601Z     },
2026-06-17T06:47:31.9879859Z     {
2026-06-17T06:47:31.9880135Z       "id": "REQ-MANIFEST-2",
2026-06-17T06:47:31.9881552Z       "title": "Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors",
2026-06-17T06:47:31.9881838Z       "requiredStages": [
2026-06-17T06:47:31.9882115Z         "doc",
2026-06-17T06:47:31.9882387Z         "impl",
2026-06-17T06:47:31.9882674Z         "unit"
2026-06-17T06:47:31.9882931Z       ],
2026-06-17T06:47:31.9883188Z       "stages": {
2026-06-17T06:47:31.9883455Z         "doc": {
2026-06-17T06:47:31.9883726Z           "complete": true,
2026-06-17T06:47:31.9883994Z           "evidence": [
2026-06-17T06:47:31.9884250Z             {
2026-06-17T06:47:31.9884539Z               "path": "CONTEXT.md",
2026-06-17T06:47:31.9884916Z               "line": 75
2026-06-17T06:47:31.9885174Z             }
2026-06-17T06:47:31.9885440Z           ]
2026-06-17T06:47:31.9885688Z         },
2026-06-17T06:47:31.9885950Z         "impl": {
2026-06-17T06:47:31.9886231Z           "complete": true,
2026-06-17T06:47:31.9886505Z           "evidence": [
2026-06-17T06:47:31.9886764Z             {
2026-06-17T06:47:31.9887139Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:31.9887411Z               "line": 62
2026-06-17T06:47:31.9887663Z             },
2026-06-17T06:47:31.9888012Z             {
2026-06-17T06:47:31.9888385Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-17T06:47:31.9888651Z               "line": 15
2026-06-17T06:47:31.9888913Z             },
2026-06-17T06:47:31.9889247Z             {
2026-06-17T06:47:31.9889617Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-17T06:47:31.9889879Z               "line": 65
2026-06-17T06:47:31.9890142Z             },
2026-06-17T06:47:31.9890405Z             {
2026-06-17T06:47:31.9890762Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-17T06:47:31.9891034Z               "line": 83
2026-06-17T06:47:31.9891297Z             },
2026-06-17T06:47:31.9891554Z             {
2026-06-17T06:47:31.9891914Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-17T06:47:31.9892184Z               "line": 183
2026-06-17T06:47:31.9892436Z             },
2026-06-17T06:47:31.9892695Z             {
2026-06-17T06:47:31.9893061Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:31.9893333Z               "line": 486
2026-06-17T06:47:31.9893596Z             },
2026-06-17T06:47:31.9893844Z             {
2026-06-17T06:47:31.9894216Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:31.9894484Z               "line": 512
2026-06-17T06:47:31.9894734Z             },
2026-06-17T06:47:31.9894989Z             {
2026-06-17T06:47:31.9895347Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:31.9895623Z               "line": 630
2026-06-17T06:47:31.9895882Z             },
2026-06-17T06:47:31.9896139Z             {
2026-06-17T06:47:31.9896505Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:31.9896769Z               "line": 655
2026-06-17T06:47:31.9897027Z             },
2026-06-17T06:47:31.9897276Z             {
2026-06-17T06:47:31.9897642Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:31.9897913Z               "line": 678
2026-06-17T06:47:31.9898161Z             },
2026-06-17T06:47:31.9898424Z             {
2026-06-17T06:47:31.9898791Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:31.9899120Z               "line": 693
2026-06-17T06:47:31.9899386Z             },
2026-06-17T06:47:31.9899640Z             {
2026-06-17T06:47:31.9899951Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9900226Z               "line": 5266
2026-06-17T06:47:31.9900502Z             },
2026-06-17T06:47:31.9900777Z             {
2026-06-17T06:47:31.9901112Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9901379Z               "line": 5280
2026-06-17T06:47:31.9901632Z             },
2026-06-17T06:47:31.9901885Z             {
2026-06-17T06:47:31.9902190Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9902470Z               "line": 5314
2026-06-17T06:47:31.9902725Z             }
2026-06-17T06:47:31.9902991Z           ]
2026-06-17T06:47:31.9903245Z         },
2026-06-17T06:47:31.9903508Z         "int": {
2026-06-17T06:47:31.9903803Z           "complete": false,
2026-06-17T06:47:31.9904066Z           "evidence": []
2026-06-17T06:47:31.9904337Z         },
2026-06-17T06:47:31.9904594Z         "unit": {
2026-06-17T06:47:31.9904861Z           "complete": true,
2026-06-17T06:47:31.9905124Z           "evidence": [
2026-06-17T06:47:31.9905380Z             {
2026-06-17T06:47:31.9905745Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-17T06:47:31.9906136Z               "line": 921
2026-06-17T06:47:31.9906403Z             },
2026-06-17T06:47:31.9906656Z             {
2026-06-17T06:47:31.9907019Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-17T06:47:31.9907286Z               "line": 211
2026-06-17T06:47:31.9907554Z             },
2026-06-17T06:47:31.9907808Z             {
2026-06-17T06:47:31.9908173Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-17T06:47:31.9908445Z               "line": 272
2026-06-17T06:47:31.9908693Z             },
2026-06-17T06:47:31.9909122Z             {
2026-06-17T06:47:31.9909534Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-17T06:47:31.9909805Z               "line": 313
2026-06-17T06:47:31.9910066Z             },
2026-06-17T06:47:31.9910319Z             {
2026-06-17T06:47:31.9910680Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-17T06:47:31.9910943Z               "line": 325
2026-06-17T06:47:31.9911201Z             },
2026-06-17T06:47:31.9911449Z             {
2026-06-17T06:47:31.9911815Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-17T06:47:31.9912084Z               "line": 336
2026-06-17T06:47:31.9912336Z             },
2026-06-17T06:47:31.9912592Z             {
2026-06-17T06:47:31.9912949Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-17T06:47:31.9913228Z               "line": 345
2026-06-17T06:47:31.9913486Z             },
2026-06-17T06:47:31.9913753Z             {
2026-06-17T06:47:31.9914120Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-17T06:47:31.9914392Z               "line": 361
2026-06-17T06:47:31.9914659Z             },
2026-06-17T06:47:31.9914907Z             {
2026-06-17T06:47:31.9915270Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-17T06:47:31.9915546Z               "line": 444
2026-06-17T06:47:31.9915787Z             },
2026-06-17T06:47:31.9916043Z             {
2026-06-17T06:47:31.9916410Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:31.9916691Z               "line": 881
2026-06-17T06:47:31.9916945Z             },
2026-06-17T06:47:31.9917197Z             {
2026-06-17T06:47:31.9917569Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:31.9917865Z               "line": 905
2026-06-17T06:47:31.9918147Z             },
2026-06-17T06:47:31.9918426Z             {
2026-06-17T06:47:31.9918815Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:31.9919168Z               "line": 931
2026-06-17T06:47:31.9919450Z             },
2026-06-17T06:47:31.9919735Z             {
2026-06-17T06:47:31.9920126Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:31.9920427Z               "line": 950
2026-06-17T06:47:31.9920709Z             },
2026-06-17T06:47:31.9920995Z             {
2026-06-17T06:47:31.9921380Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:31.9921675Z               "line": 981
2026-06-17T06:47:31.9921956Z             },
2026-06-17T06:47:31.9922242Z             {
2026-06-17T06:47:31.9922629Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-17T06:47:31.9922920Z               "line": 309
2026-06-17T06:47:31.9923205Z             },
2026-06-17T06:47:31.9923485Z             {
2026-06-17T06:47:31.9923835Z               "path": "crates/spt/src/api/mod.rs",
2026-06-17T06:47:31.9924135Z               "line": 580
2026-06-17T06:47:31.9924384Z             },
2026-06-17T06:47:31.9924637Z             {
2026-06-17T06:47:31.9924947Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9925233Z               "line": 7872
2026-06-17T06:47:31.9925477Z             },
2026-06-17T06:47:31.9925743Z             {
2026-06-17T06:47:31.9926073Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9926352Z               "line": 8782
2026-06-17T06:47:31.9926641Z             }
2026-06-17T06:47:31.9926918Z           ]
2026-06-17T06:47:31.9927209Z         }
2026-06-17T06:47:31.9927485Z       }
2026-06-17T06:47:31.9927772Z     },
2026-06-17T06:47:31.9928148Z     {
2026-06-17T06:47:31.9928463Z       "id": "REQ-MANIFEST-3",
2026-06-17T06:47:31.9930329Z       "title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)",
2026-06-17T06:47:31.9930611Z       "requiredStages": [
2026-06-17T06:47:31.9930872Z         "doc",
2026-06-17T06:47:31.9931158Z         "impl",
2026-06-17T06:47:31.9931400Z         "unit"
2026-06-17T06:47:31.9931753Z       ],
2026-06-17T06:47:31.9932021Z       "stages": {
2026-06-17T06:47:31.9932278Z         "doc": {
2026-06-17T06:47:31.9932550Z           "complete": true,
2026-06-17T06:47:31.9932816Z           "evidence": [
2026-06-17T06:47:31.9933083Z             {
2026-06-17T06:47:31.9933364Z               "path": "CONTEXT.md",
2026-06-17T06:47:31.9933631Z               "line": 81
2026-06-17T06:47:31.9933890Z             }
2026-06-17T06:47:31.9934150Z           ]
2026-06-17T06:47:31.9934415Z         },
2026-06-17T06:47:31.9934687Z         "impl": {
2026-06-17T06:47:31.9934953Z           "complete": true,
2026-06-17T06:47:31.9935249Z           "evidence": [
2026-06-17T06:47:31.9935507Z             {
2026-06-17T06:47:31.9935879Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:31.9936146Z               "line": 72
2026-06-17T06:47:31.9936405Z             },
2026-06-17T06:47:31.9936662Z             {
2026-06-17T06:47:31.9937032Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-17T06:47:31.9937306Z               "line": 101
2026-06-17T06:47:31.9937563Z             },
2026-06-17T06:47:31.9937807Z             {
2026-06-17T06:47:31.9938178Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-17T06:47:31.9938441Z               "line": 132
2026-06-17T06:47:31.9938699Z             },
2026-06-17T06:47:31.9939028Z             {
2026-06-17T06:47:31.9939418Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:31.9939692Z               "line": 536
2026-06-17T06:47:31.9939950Z             },
2026-06-17T06:47:31.9940207Z             {
2026-06-17T06:47:31.9940574Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:31.9940842Z               "line": 592
2026-06-17T06:47:31.9941093Z             },
2026-06-17T06:47:31.9941337Z             {
2026-06-17T06:47:31.9941656Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9941918Z               "line": 5327
2026-06-17T06:47:31.9942182Z             },
2026-06-17T06:47:31.9942437Z             {
2026-06-17T06:47:31.9942757Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9943028Z               "line": 5353
2026-06-17T06:47:31.9943276Z             }
2026-06-17T06:47:31.9943524Z           ]
2026-06-17T06:47:31.9943773Z         },
2026-06-17T06:47:31.9944040Z         "int": {
2026-06-17T06:47:31.9944321Z           "complete": false,
2026-06-17T06:47:31.9944596Z           "evidence": []
2026-06-17T06:47:31.9944846Z         },
2026-06-17T06:47:31.9945100Z         "unit": {
2026-06-17T06:47:31.9945377Z           "complete": true,
2026-06-17T06:47:31.9945643Z           "evidence": [
2026-06-17T06:47:31.9945905Z             {
2026-06-17T06:47:31.9946258Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-17T06:47:31.9946534Z               "line": 371
2026-06-17T06:47:31.9946797Z             },
2026-06-17T06:47:31.9947053Z             {
2026-06-17T06:47:31.9947416Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-17T06:47:31.9947686Z               "line": 429
2026-06-17T06:47:31.9947948Z             },
2026-06-17T06:47:31.9948205Z             {
2026-06-17T06:47:31.9948568Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:31.9948839Z               "line": 1005
2026-06-17T06:47:31.9949164Z             },
2026-06-17T06:47:31.9949425Z             {
2026-06-17T06:47:31.9949735Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:31.9950015Z               "line": 7927
2026-06-17T06:47:31.9950365Z             }
2026-06-17T06:47:31.9950629Z           ]
2026-06-17T06:47:31.9950882Z         }
2026-06-17T06:47:31.9951125Z       }
2026-06-17T06:47:31.9951373Z     },
2026-06-17T06:47:31.9951630Z     {
2026-06-17T06:47:31.9951911Z       "id": "REQ-MANIFEST-4",
2026-06-17T06:47:31.9953888Z       "title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace",
2026-06-17T06:47:31.9954286Z       "requiredStages": [
2026-06-17T06:47:31.9954547Z         "doc",
2026-06-17T06:47:31.9954800Z         "impl",
2026-06-17T06:47:31.9955066Z         "unit"
2026-06-17T06:47:31.9955318Z       ],
2026-06-17T06:47:31.9955569Z       "stages": {
2026-06-17T06:47:31.9955835Z         "doc": {
2026-06-17T06:47:31.9956112Z           "complete": true,
2026-06-17T06:47:31.9956379Z           "evidence": [
2026-06-17T06:47:31.9956637Z             {
2026-06-17T06:47:31.9956924Z               "path": "CONTEXT.md",
2026-06-17T06:47:31.9957210Z               "line": 88
2026-06-17T06:47:31.9957491Z             }
2026-06-17T06:47:31.9957778Z           ]
2026-06-17T06:47:31.9958047Z         },
2026-06-17T06:47:31.9958331Z         "impl": {
2026-06-17T06:47:31.9958631Z           "complete": true,
2026-06-17T06:47:31.9958922Z           "evidence": [
2026-06-17T06:47:31.9959256Z             {
2026-06-17T06:47:31.9959657Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:31.9959942Z               "line": 80
2026-06-17T06:47:31.9960224Z             },
2026-06-17T06:47:31.9960491Z             {
2026-06-17T06:47:31.9960879Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:31.9961179Z               "line": 152
2026-06-17T06:47:31.9961456Z             },
2026-06-17T06:47:31.9961737Z             {
2026-06-17T06:47:31.9962104Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:31.9962390Z               "line": 83
2026-06-17T06:47:31.9962672Z             },
2026-06-17T06:47:31.9962950Z             {
2026-06-17T06:47:31.9963335Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:31.9963620Z               "line": 625
2026-06-17T06:47:31.9963906Z             },
2026-06-17T06:47:31.9964192Z             {
2026-06-17T06:47:31.9964564Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:31.9964860Z               "line": 650
2026-06-17T06:47:31.9965131Z             }
2026-06-17T06:47:31.9965422Z           ]
2026-06-17T06:47:31.9965707Z         },
2026-06-17T06:47:31.9965990Z         "int": {
2026-06-17T06:47:31.9966305Z           "complete": false,
2026-06-17T06:47:31.9966601Z           "evidence": []
2026-06-17T06:47:31.9966877Z         },
2026-06-17T06:47:31.9967136Z         "unit": {
2026-06-17T06:47:31.9967408Z           "complete": true,
2026-06-17T06:47:31.9967674Z           "evidence": [
2026-06-17T06:47:31.9967927Z             {
2026-06-17T06:47:31.9968294Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:31.9968555Z               "line": 1231
2026-06-17T06:47:31.9968806Z             },
2026-06-17T06:47:31.9969131Z             {
2026-06-17T06:47:31.9969506Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:31.9969774Z               "line": 1264
2026-06-17T06:47:31.9970032Z             },
2026-06-17T06:47:31.9970289Z             {
2026-06-17T06:47:31.9970642Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:31.9970919Z               "line": 984
2026-06-17T06:47:31.9971169Z             }
2026-06-17T06:47:31.9971434Z           ]
2026-06-17T06:47:31.9971688Z         }
2026-06-17T06:47:31.9971935Z       }
2026-06-17T06:47:31.9972197Z     },
2026-06-17T06:47:31.9972440Z     {
2026-06-17T06:47:31.9972730Z       "id": "REQ-MANIFEST-5",
2026-06-17T06:47:31.9981082Z       "title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = \"rel/path\" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].",
2026-06-17T06:47:31.9981465Z       "requiredStages": [
2026-06-17T06:47:31.9981725Z         "doc",
2026-06-17T06:47:31.9981989Z         "impl",
2026-06-17T06:47:31.9982257Z         "unit"
2026-06-17T06:47:31.9982514Z       ],
2026-06-17T06:47:31.9982767Z       "stages": {
2026-06-17T06:47:31.9983028Z         "doc": {
2026-06-17T06:47:31.9983295Z           "complete": true,
2026-06-17T06:47:31.9983563Z           "evidence": [
2026-06-17T06:47:31.9983807Z             {
2026-06-17T06:47:31.9984089Z               "path": "CONTEXT.md",
2026-06-17T06:47:31.9984355Z               "line": 83
2026-06-17T06:47:31.9984615Z             }
2026-06-17T06:47:31.9984868Z           ]
2026-06-17T06:47:31.9985122Z         },
2026-06-17T06:47:31.9985384Z         "impl": {
2026-06-17T06:47:31.9985666Z           "complete": true,
2026-06-17T06:47:31.9985937Z           "evidence": [
2026-06-17T06:47:31.9986199Z             {
2026-06-17T06:47:31.9986571Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-17T06:47:31.9986846Z               "line": 120
2026-06-17T06:47:31.9987111Z             }
2026-06-17T06:47:31.9987379Z           ]
2026-06-17T06:47:31.9987627Z         },
2026-06-17T06:47:31.9987894Z         "int": {
2026-06-17T06:47:31.9988174Z           "complete": false,
2026-06-17T06:47:31.9988441Z           "evidence": []
2026-06-17T06:47:31.9988699Z         },
2026-06-17T06:47:31.9989033Z         "unit": {
2026-06-17T06:47:31.9989318Z           "complete": true,
2026-06-17T06:47:31.9989581Z           "evidence": [
2026-06-17T06:47:31.9989846Z             {
2026-06-17T06:47:31.9990222Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-17T06:47:31.9990494Z               "line": 404
2026-06-17T06:47:31.9990756Z             },
2026-06-17T06:47:31.9991017Z             {
2026-06-17T06:47:31.9991385Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:31.9991652Z               "line": 1078
2026-06-17T06:47:31.9991919Z             },
2026-06-17T06:47:31.9992176Z             {
2026-06-17T06:47:31.9992531Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:31.9992808Z               "line": 1107
2026-06-17T06:47:31.9993066Z             },
2026-06-17T06:47:31.9993318Z             {
2026-06-17T06:47:31.9993676Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:31.9993947Z               "line": 1147
2026-06-17T06:47:31.9994199Z             },
2026-06-17T06:47:31.9994447Z             {
2026-06-17T06:47:31.9994814Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:31.9995076Z               "line": 1162
2026-06-17T06:47:31.9995344Z             }
2026-06-17T06:47:31.9995611Z           ]
2026-06-17T06:47:31.9995863Z         }
2026-06-17T06:47:31.9996124Z       }
2026-06-17T06:47:31.9996377Z     },
2026-06-17T06:47:31.9996635Z     {
2026-06-17T06:47:31.9996921Z       "id": "REQ-MANIFEST-6",
2026-06-17T06:47:32.0003053Z       "title": "Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled (\"ccs is a profile; cross-adapter fallback may target <adapter>:<profile>\"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.",
2026-06-17T06:47:32.0003354Z       "requiredStages": [
2026-06-17T06:47:32.0003711Z         "doc",
2026-06-17T06:47:32.0003973Z         "unit"
2026-06-17T06:47:32.0004226Z       ],
2026-06-17T06:47:32.0004483Z       "stages": {
2026-06-17T06:47:32.0004731Z         "doc": {
2026-06-17T06:47:32.0004997Z           "complete": true,
2026-06-17T06:47:32.0005270Z           "evidence": [
2026-06-17T06:47:32.0005528Z             {
2026-06-17T06:47:32.0005803Z               "path": "CONTEXT.md",
2026-06-17T06:47:32.0006074Z               "line": 141
2026-06-17T06:47:32.0006327Z             }
2026-06-17T06:47:32.0006576Z           ]
2026-06-17T06:47:32.0006824Z         },
2026-06-17T06:47:32.0007086Z         "impl": {
2026-06-17T06:47:32.0007367Z           "complete": false,
2026-06-17T06:47:32.0007638Z           "evidence": []
2026-06-17T06:47:32.0007895Z         },
2026-06-17T06:47:32.0008156Z         "int": {
2026-06-17T06:47:32.0008442Z           "complete": false,
2026-06-17T06:47:32.0008708Z           "evidence": []
2026-06-17T06:47:32.0009047Z         },
2026-06-17T06:47:32.0009319Z         "unit": {
2026-06-17T06:47:32.0009595Z           "complete": true,
2026-06-17T06:47:32.0009886Z           "evidence": [
2026-06-17T06:47:32.0010143Z             {
2026-06-17T06:47:32.0010515Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:32.0010781Z               "line": 1184
2026-06-17T06:47:32.0011042Z             }
2026-06-17T06:47:32.0011294Z           ]
2026-06-17T06:47:32.0011551Z         }
2026-06-17T06:47:32.0011813Z       }
2026-06-17T06:47:32.0012061Z     },
2026-06-17T06:47:32.0012324Z     {
2026-06-17T06:47:32.0012610Z       "id": "REQ-MANIFEST-7",
2026-06-17T06:47:32.0020923Z       "title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.",
2026-06-17T06:47:32.0021210Z       "requiredStages": [
2026-06-17T06:47:32.0021470Z         "doc",
2026-06-17T06:47:32.0021715Z         "impl",
2026-06-17T06:47:32.0021978Z         "unit"
2026-06-17T06:47:32.0022231Z       ],
2026-06-17T06:47:32.0022498Z       "stages": {
2026-06-17T06:47:32.0022780Z         "doc": {
2026-06-17T06:47:32.0023080Z           "complete": true,
2026-06-17T06:47:32.0023371Z           "evidence": [
2026-06-17T06:47:32.0023633Z             {
2026-06-17T06:47:32.0023946Z               "path": "docs/MANIFEST.md",
2026-06-17T06:47:32.0024206Z               "line": 34
2026-06-17T06:47:32.0024464Z             }
2026-06-17T06:47:32.0024722Z           ]
2026-06-17T06:47:32.0024969Z         },
2026-06-17T06:47:32.0025231Z         "impl": {
2026-06-17T06:47:32.0025508Z           "complete": true,
2026-06-17T06:47:32.0025780Z           "evidence": [
2026-06-17T06:47:32.0026142Z             {
2026-06-17T06:47:32.0026505Z               "path": "crates/spt/src/picker/data.rs",
2026-06-17T06:47:32.0026771Z               "line": 54
2026-06-17T06:47:32.0027029Z             }
2026-06-17T06:47:32.0027291Z           ]
2026-06-17T06:47:32.0027543Z         },
2026-06-17T06:47:32.0027804Z         "int": {
2026-06-17T06:47:32.0028077Z           "complete": false,
2026-06-17T06:47:32.0028353Z           "evidence": []
2026-06-17T06:47:32.0032633Z         },
2026-06-17T06:47:32.0032938Z         "unit": {
2026-06-17T06:47:32.0033378Z           "complete": true,
2026-06-17T06:47:32.0033645Z           "evidence": [
2026-06-17T06:47:32.0033911Z             {
2026-06-17T06:47:32.0034284Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:32.0034553Z               "line": 1424
2026-06-17T06:47:32.0034795Z             }
2026-06-17T06:47:32.0035053Z           ]
2026-06-17T06:47:32.0035315Z         }
2026-06-17T06:47:32.0035558Z       }
2026-06-17T06:47:32.0035819Z     },
2026-06-17T06:47:32.0036077Z     {
2026-06-17T06:47:32.0036359Z       "id": "REQ-MESH-1",
2026-06-17T06:47:32.0042514Z       "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-17T06:47:32.0042807Z       "requiredStages": [
2026-06-17T06:47:32.0043070Z         "impl",
2026-06-17T06:47:32.0043318Z         "unit",
2026-06-17T06:47:32.0043566Z         "int"
2026-06-17T06:47:32.0043818Z       ],
2026-06-17T06:47:32.0044071Z       "stages": {
2026-06-17T06:47:32.0044323Z         "doc": {
2026-06-17T06:47:32.0044596Z           "complete": false,
2026-06-17T06:47:32.0044864Z           "evidence": []
2026-06-17T06:47:32.0045113Z         },
2026-06-17T06:47:32.0045374Z         "impl": {
2026-06-17T06:47:32.0045650Z           "complete": true,
2026-06-17T06:47:32.0045928Z           "evidence": [
2026-06-17T06:47:32.0046194Z             {
2026-06-17T06:47:32.0046561Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:32.0046838Z               "line": 922
2026-06-17T06:47:32.0047101Z             },
2026-06-17T06:47:32.0047358Z             {
2026-06-17T06:47:32.0047731Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-17T06:47:32.0048005Z               "line": 38
2026-06-17T06:47:32.0048253Z             },
2026-06-17T06:47:32.0048502Z             {
2026-06-17T06:47:32.0048877Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-17T06:47:32.0049235Z               "line": 161
2026-06-17T06:47:32.0049493Z             },
2026-06-17T06:47:32.0049746Z             {
2026-06-17T06:47:32.0050112Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-17T06:47:32.0050392Z               "line": 206
2026-06-17T06:47:32.0050658Z             },
2026-06-17T06:47:32.0050910Z             {
2026-06-17T06:47:32.0051278Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-17T06:47:32.0051545Z               "line": 57
2026-06-17T06:47:32.0051796Z             },
2026-06-17T06:47:32.0052055Z             {
2026-06-17T06:47:32.0052445Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-17T06:47:32.0052713Z               "line": 24
2026-06-17T06:47:32.0052970Z             },
2026-06-17T06:47:32.0053222Z             {
2026-06-17T06:47:32.0053616Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-17T06:47:32.0053888Z               "line": 142
2026-06-17T06:47:32.0054141Z             },
2026-06-17T06:47:32.0054503Z             {
2026-06-17T06:47:32.0054898Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-17T06:47:32.0055166Z               "line": 162
2026-06-17T06:47:32.0055419Z             }
2026-06-17T06:47:32.0055673Z           ]
2026-06-17T06:47:32.0055925Z         },
2026-06-17T06:47:32.0056169Z         "int": {
2026-06-17T06:47:32.0056454Z           "complete": true,
2026-06-17T06:47:32.0056727Z           "evidence": [
2026-06-17T06:47:32.0056979Z             {
2026-06-17T06:47:32.0057460Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-17T06:47:32.0057732Z               "line": 67
2026-06-17T06:47:32.0058000Z             },
2026-06-17T06:47:32.0058243Z             {
2026-06-17T06:47:32.0058632Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-17T06:47:32.0058899Z               "line": 93
2026-06-17T06:47:32.0059238Z             },
2026-06-17T06:47:32.0059504Z             {
2026-06-17T06:47:32.0059892Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-17T06:47:32.0060173Z               "line": 117
2026-06-17T06:47:32.0060420Z             },
2026-06-17T06:47:32.0060687Z             {
2026-06-17T06:47:32.0061070Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-17T06:47:32.0061337Z               "line": 134
2026-06-17T06:47:32.0061600Z             }
2026-06-17T06:47:32.0061853Z           ]
2026-06-17T06:47:32.0062105Z         },
2026-06-17T06:47:32.0062357Z         "unit": {
2026-06-17T06:47:32.0062634Z           "complete": true,
2026-06-17T06:47:32.0062910Z           "evidence": [
2026-06-17T06:47:32.0063159Z             {
2026-06-17T06:47:32.0063530Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-17T06:47:32.0063791Z               "line": 427
2026-06-17T06:47:32.0064047Z             },
2026-06-17T06:47:32.0064294Z             {
2026-06-17T06:47:32.0064691Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-17T06:47:32.0064962Z               "line": 376
2026-06-17T06:47:32.0065215Z             },
2026-06-17T06:47:32.0065472Z             {
2026-06-17T06:47:32.0065859Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-17T06:47:32.0066130Z               "line": 412
2026-06-17T06:47:32.0066391Z             },
2026-06-17T06:47:32.0066647Z             {
2026-06-17T06:47:32.0067043Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-17T06:47:32.0067315Z               "line": 427
2026-06-17T06:47:32.0067563Z             },
2026-06-17T06:47:32.0067810Z             {
2026-06-17T06:47:32.0068207Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-17T06:47:32.0068478Z               "line": 438
2026-06-17T06:47:32.0068730Z             },
2026-06-17T06:47:32.0069064Z             {
2026-06-17T06:47:32.0069454Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-17T06:47:32.0069721Z               "line": 449
2026-06-17T06:47:32.0069965Z             },
2026-06-17T06:47:32.0070217Z             {
2026-06-17T06:47:32.0070613Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-17T06:47:32.0070875Z               "line": 460
2026-06-17T06:47:32.0071120Z             },
2026-06-17T06:47:32.0071380Z             {
2026-06-17T06:47:32.0071764Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-17T06:47:32.0072030Z               "line": 496
2026-06-17T06:47:32.0072283Z             },
2026-06-17T06:47:32.0072531Z             {
2026-06-17T06:47:32.0072922Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-17T06:47:32.0073199Z               "line": 519
2026-06-17T06:47:32.0073456Z             },
2026-06-17T06:47:32.0073719Z             {
2026-06-17T06:47:32.0074109Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-17T06:47:32.0074384Z               "line": 546
2026-06-17T06:47:32.0074640Z             }
2026-06-17T06:47:32.0074883Z           ]
2026-06-17T06:47:32.0075136Z         }
2026-06-17T06:47:32.0075474Z       }
2026-06-17T06:47:32.0075742Z     },
2026-06-17T06:47:32.0075990Z     {
2026-06-17T06:47:32.0076262Z       "id": "REQ-MESH-2",
2026-06-17T06:47:32.0083702Z       "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-17T06:47:32.0084126Z       "requiredStages": [
2026-06-17T06:47:32.0084388Z         "impl",
2026-06-17T06:47:32.0084650Z         "unit",
2026-06-17T06:47:32.0084893Z         "int"
2026-06-17T06:47:32.0085153Z       ],
2026-06-17T06:47:32.0085405Z       "stages": {
2026-06-17T06:47:32.0085663Z         "doc": {
2026-06-17T06:47:32.0085945Z           "complete": false,
2026-06-17T06:47:32.0086207Z           "evidence": []
2026-06-17T06:47:32.0086475Z         },
2026-06-17T06:47:32.0086732Z         "impl": {
2026-06-17T06:47:32.0087003Z           "complete": true,
2026-06-17T06:47:32.0087269Z           "evidence": [
2026-06-17T06:47:32.0087525Z             {
2026-06-17T06:47:32.0087906Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:32.0088178Z               "line": 757
2026-06-17T06:47:32.0088440Z             },
2026-06-17T06:47:32.0088689Z             {
2026-06-17T06:47:32.0089135Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-17T06:47:32.0089408Z               "line": 118
2026-06-17T06:47:32.0089666Z             },
2026-06-17T06:47:32.0089923Z             {
2026-06-17T06:47:32.0090289Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-17T06:47:32.0090550Z               "line": 347
2026-06-17T06:47:32.0090803Z             },
2026-06-17T06:47:32.0091062Z             {
2026-06-17T06:47:32.0091414Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-17T06:47:32.0091685Z               "line": 389
2026-06-17T06:47:32.0091944Z             },
2026-06-17T06:47:32.0092187Z             {
2026-06-17T06:47:32.0092557Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-17T06:47:32.0092827Z               "line": 403
2026-06-17T06:47:32.0093089Z             },
2026-06-17T06:47:32.0093346Z             {
2026-06-17T06:47:32.0093713Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-17T06:47:32.0093990Z               "line": 492
2026-06-17T06:47:32.0094238Z             },
2026-06-17T06:47:32.0094497Z             {
2026-06-17T06:47:32.0094858Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-17T06:47:32.0095136Z               "line": 507
2026-06-17T06:47:32.0095381Z             },
2026-06-17T06:47:32.0095636Z             {
2026-06-17T06:47:32.0095999Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-17T06:47:32.0096271Z               "line": 534
2026-06-17T06:47:32.0096519Z             },
2026-06-17T06:47:32.0096772Z             {
2026-06-17T06:47:32.0097153Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-17T06:47:32.0097416Z               "line": 207
2026-06-17T06:47:32.0097670Z             },
2026-06-17T06:47:32.0097924Z             {
2026-06-17T06:47:32.0098294Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-17T06:47:32.0098570Z               "line": 755
2026-06-17T06:47:32.0098823Z             },
2026-06-17T06:47:32.0099156Z             {
2026-06-17T06:47:32.0099634Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-17T06:47:32.0099911Z               "line": 816
2026-06-17T06:47:32.0100168Z             },
2026-06-17T06:47:32.0100421Z             {
2026-06-17T06:47:32.0100801Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-17T06:47:32.0101067Z               "line": 869
2026-06-17T06:47:32.0101321Z             },
2026-06-17T06:47:32.0101574Z             {
2026-06-17T06:47:32.0101950Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-17T06:47:32.0102218Z               "line": 891
2026-06-17T06:47:32.0102551Z             },
2026-06-17T06:47:32.0102795Z             {
2026-06-17T06:47:32.0103141Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:32.0103411Z               "line": 122
2026-06-17T06:47:32.0103658Z             },
2026-06-17T06:47:32.0103915Z             {
2026-06-17T06:47:32.0104264Z               "path": "crates/spt-store/src/roster.rs",
2026-06-17T06:47:32.0104532Z               "line": 44
2026-06-17T06:47:32.0104789Z             },
2026-06-17T06:47:32.0105038Z             {
2026-06-17T06:47:32.0105386Z               "path": "crates/spt-store/src/roster.rs",
2026-06-17T06:47:32.0105648Z               "line": 184
2026-06-17T06:47:32.0105903Z             },
2026-06-17T06:47:32.0106154Z             {
2026-06-17T06:47:32.0106487Z               "path": "crates/spt-store/src/roster.rs",
2026-06-17T06:47:32.0106759Z               "line": 211
2026-06-17T06:47:32.0107012Z             },
2026-06-17T06:47:32.0107280Z             {
2026-06-17T06:47:32.0107632Z               "path": "crates/spt-store/src/roster.rs",
2026-06-17T06:47:32.0107895Z               "line": 251
2026-06-17T06:47:32.0108157Z             },
2026-06-17T06:47:32.0108418Z             {
2026-06-17T06:47:32.0108763Z               "path": "crates/spt-store/src/roster.rs",
2026-06-17T06:47:32.0109121Z               "line": 275
2026-06-17T06:47:32.0109369Z             },
2026-06-17T06:47:32.0109622Z             {
2026-06-17T06:47:32.0109975Z               "path": "crates/spt-store/src/roster.rs",
2026-06-17T06:47:32.0110246Z               "line": 289
2026-06-17T06:47:32.0110519Z             },
2026-06-17T06:47:32.0110805Z             {
2026-06-17T06:47:32.0111177Z               "path": "crates/spt-store/src/roster.rs",
2026-06-17T06:47:32.0111467Z               "line": 300
2026-06-17T06:47:32.0111762Z             },
2026-06-17T06:47:32.0112039Z             {
2026-06-17T06:47:32.0112406Z               "path": "crates/spt-store/src/roster.rs",
2026-06-17T06:47:32.0112693Z               "line": 313
2026-06-17T06:47:32.0112978Z             }
2026-06-17T06:47:32.0113254Z           ]
2026-06-17T06:47:32.0113506Z         },
2026-06-17T06:47:32.0113772Z         "int": {
2026-06-17T06:47:32.0114052Z           "complete": true,
2026-06-17T06:47:32.0114324Z           "evidence": [
2026-06-17T06:47:32.0114566Z             {
2026-06-17T06:47:32.0114954Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-17T06:47:32.0115235Z               "line": 116
2026-06-17T06:47:32.0115496Z             },
2026-06-17T06:47:32.0115750Z             {
2026-06-17T06:47:32.0116136Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-17T06:47:32.0116392Z               "line": 181
2026-06-17T06:47:32.0116653Z             }
2026-06-17T06:47:32.0116915Z           ]
2026-06-17T06:47:32.0117172Z         },
2026-06-17T06:47:32.0117429Z         "unit": {
2026-06-17T06:47:32.0117700Z           "complete": true,
2026-06-17T06:47:32.0117968Z           "evidence": [
2026-06-17T06:47:32.0118235Z             {
2026-06-17T06:47:32.0118606Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-17T06:47:32.0118874Z               "line": 999
2026-06-17T06:47:32.0119224Z             },
2026-06-17T06:47:32.0119477Z             {
2026-06-17T06:47:32.0119853Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-17T06:47:32.0120125Z               "line": 1016
2026-06-17T06:47:32.0120378Z             },
2026-06-17T06:47:32.0120630Z             {
2026-06-17T06:47:32.0121111Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-17T06:47:32.0121394Z               "line": 1024
2026-06-17T06:47:32.0121647Z             },
2026-06-17T06:47:32.0121902Z             {
2026-06-17T06:47:32.0122274Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-17T06:47:32.0122531Z               "line": 1048
2026-06-17T06:47:32.0122784Z             },
2026-06-17T06:47:32.0123042Z             {
2026-06-17T06:47:32.0123424Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-17T06:47:32.0123786Z               "line": 1499
2026-06-17T06:47:32.0124048Z             },
2026-06-17T06:47:32.0124299Z             {
2026-06-17T06:47:32.0124647Z               "path": "crates/spt-store/src/roster.rs",
2026-06-17T06:47:32.0124923Z               "line": 347
2026-06-17T06:47:32.0125180Z             },
2026-06-17T06:47:32.0125432Z             {
2026-06-17T06:47:32.0125771Z               "path": "crates/spt-store/src/roster.rs",
2026-06-17T06:47:32.0126047Z               "line": 370
2026-06-17T06:47:32.0126300Z             },
2026-06-17T06:47:32.0126553Z             {
2026-06-17T06:47:32.0126891Z               "path": "crates/spt-store/src/roster.rs",
2026-06-17T06:47:32.0127157Z               "line": 407
2026-06-17T06:47:32.0127417Z             },
2026-06-17T06:47:32.0127670Z             {
2026-06-17T06:47:32.0128013Z               "path": "crates/spt-store/src/roster.rs",
2026-06-17T06:47:32.0128284Z               "line": 431
2026-06-17T06:47:32.0128543Z             },
2026-06-17T06:47:32.0128809Z             {
2026-06-17T06:47:32.0129243Z               "path": "crates/spt-store/src/roster.rs",
2026-06-17T06:47:32.0129514Z               "line": 483
2026-06-17T06:47:32.0129765Z             },
2026-06-17T06:47:32.0130018Z             {
2026-06-17T06:47:32.0130356Z               "path": "crates/spt-store/src/roster.rs",
2026-06-17T06:47:32.0130629Z               "line": 499
2026-06-17T06:47:32.0130895Z             },
2026-06-17T06:47:32.0131157Z             {
2026-06-17T06:47:32.0131505Z               "path": "crates/spt-store/src/roster.rs",
2026-06-17T06:47:32.0131776Z               "line": 514
2026-06-17T06:47:32.0132029Z             },
2026-06-17T06:47:32.0132287Z             {
2026-06-17T06:47:32.0132630Z               "path": "crates/spt-store/src/roster.rs",
2026-06-17T06:47:32.0132911Z               "line": 531
2026-06-17T06:47:32.0133154Z             }
2026-06-17T06:47:32.0133411Z           ]
2026-06-17T06:47:32.0133664Z         }
2026-06-17T06:47:32.0133926Z       }
2026-06-17T06:47:32.0134170Z     },
2026-06-17T06:47:32.0134413Z     {
2026-06-17T06:47:32.0134683Z       "id": "REQ-MESH-3",
2026-06-17T06:47:32.0139427Z       "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-17T06:47:32.0139712Z       "requiredStages": [
2026-06-17T06:47:32.0139976Z         "impl",
2026-06-17T06:47:32.0140236Z         "unit",
2026-06-17T06:47:32.0140491Z         "int"
2026-06-17T06:47:32.0140749Z       ],
2026-06-17T06:47:32.0141007Z       "stages": {
2026-06-17T06:47:32.0141264Z         "doc": {
2026-06-17T06:47:32.0141556Z           "complete": false,
2026-06-17T06:47:32.0141828Z           "evidence": []
2026-06-17T06:47:32.0142089Z         },
2026-06-17T06:47:32.0142351Z         "impl": {
2026-06-17T06:47:32.0142623Z           "complete": true,
2026-06-17T06:47:32.0142899Z           "evidence": [
2026-06-17T06:47:32.0143142Z             {
2026-06-17T06:47:32.0143519Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-17T06:47:32.0143886Z               "line": 641
2026-06-17T06:47:32.0144143Z             }
2026-06-17T06:47:32.0144406Z           ]
2026-06-17T06:47:32.0144659Z         },
2026-06-17T06:47:32.0144920Z         "int": {
2026-06-17T06:47:32.0145191Z           "complete": true,
2026-06-17T06:47:32.0145466Z           "evidence": [
2026-06-17T06:47:32.0145714Z             {
2026-06-17T06:47:32.0146076Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-17T06:47:32.0146343Z               "line": 373
2026-06-17T06:47:32.0146591Z             },
2026-06-17T06:47:32.0146949Z             {
2026-06-17T06:47:32.0147307Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-17T06:47:32.0147593Z               "line": 436
2026-06-17T06:47:32.0147850Z             }
2026-06-17T06:47:32.0148101Z           ]
2026-06-17T06:47:32.0148356Z         },
2026-06-17T06:47:32.0148605Z         "unit": {
2026-06-17T06:47:32.0148881Z           "complete": true,
2026-06-17T06:47:32.0149230Z           "evidence": [
2026-06-17T06:47:32.0149501Z             {
2026-06-17T06:47:32.0149888Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-17T06:47:32.0150150Z               "line": 910
2026-06-17T06:47:32.0150407Z             }
2026-06-17T06:47:32.0150663Z           ]
2026-06-17T06:47:32.0150928Z         }
2026-06-17T06:47:32.0151167Z       }
2026-06-17T06:47:32.0151424Z     },
2026-06-17T06:47:32.0151681Z     {
2026-06-17T06:47:32.0151962Z       "id": "REQ-MESH-4",
2026-06-17T06:47:32.0158224Z       "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-17T06:47:32.0158511Z       "requiredStages": [
2026-06-17T06:47:32.0158761Z         "impl",
2026-06-17T06:47:32.0159098Z         "unit",
2026-06-17T06:47:32.0159360Z         "int"
2026-06-17T06:47:32.0159617Z       ],
2026-06-17T06:47:32.0159880Z       "stages": {
2026-06-17T06:47:32.0160142Z         "doc": {
2026-06-17T06:47:32.0160438Z           "complete": false,
2026-06-17T06:47:32.0160706Z           "evidence": []
2026-06-17T06:47:32.0160963Z         },
2026-06-17T06:47:32.0161228Z         "impl": {
2026-06-17T06:47:32.0161512Z           "complete": true,
2026-06-17T06:47:32.0161775Z           "evidence": [
2026-06-17T06:47:32.0162032Z             {
2026-06-17T06:47:32.0162428Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-17T06:47:32.0162695Z               "line": 33
2026-06-17T06:47:32.0162953Z             },
2026-06-17T06:47:32.0163214Z             {
2026-06-17T06:47:32.0163616Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-17T06:47:32.0163873Z               "line": 68
2026-06-17T06:47:32.0164133Z             },
2026-06-17T06:47:32.0164390Z             {
2026-06-17T06:47:32.0164767Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-17T06:47:32.0165039Z               "line": 111
2026-06-17T06:47:32.0165296Z             },
2026-06-17T06:47:32.0165546Z             {
2026-06-17T06:47:32.0165916Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-17T06:47:32.0166199Z               "line": 462
2026-06-17T06:47:32.0166449Z             },
2026-06-17T06:47:32.0166709Z             {
2026-06-17T06:47:32.0167081Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-17T06:47:32.0167343Z               "line": 711
2026-06-17T06:47:32.0167601Z             },
2026-06-17T06:47:32.0167845Z             {
2026-06-17T06:47:32.0168316Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-17T06:47:32.0168588Z               "line": 725
2026-06-17T06:47:32.0168836Z             },
2026-06-17T06:47:32.0169193Z             {
2026-06-17T06:47:32.0169538Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:32.0169815Z               "line": 132
2026-06-17T06:47:32.0170059Z             },
2026-06-17T06:47:32.0170312Z             {
2026-06-17T06:47:32.0170669Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-17T06:47:32.0171064Z               "line": 26
2026-06-17T06:47:32.0171327Z             },
2026-06-17T06:47:32.0171576Z             {
2026-06-17T06:47:32.0171935Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-17T06:47:32.0172205Z               "line": 97
2026-06-17T06:47:32.0172472Z             },
2026-06-17T06:47:32.0172730Z             {
2026-06-17T06:47:32.0173077Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-17T06:47:32.0173350Z               "line": 119
2026-06-17T06:47:32.0173612Z             },
2026-06-17T06:47:32.0173870Z             {
2026-06-17T06:47:32.0174218Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-17T06:47:32.0174476Z               "line": 82
2026-06-17T06:47:32.0174731Z             },
2026-06-17T06:47:32.0174979Z             {
2026-06-17T06:47:32.0175313Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-17T06:47:32.0175576Z               "line": 111
2026-06-17T06:47:32.0175842Z             },
2026-06-17T06:47:32.0176106Z             {
2026-06-17T06:47:32.0176449Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-17T06:47:32.0176702Z               "line": 232
2026-06-17T06:47:32.0176952Z             },
2026-06-17T06:47:32.0177208Z             {
2026-06-17T06:47:32.0177541Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-17T06:47:32.0177809Z               "line": 245
2026-06-17T06:47:32.0178066Z             },
2026-06-17T06:47:32.0178324Z             {
2026-06-17T06:47:32.0178644Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0178906Z               "line": 4382
2026-06-17T06:47:32.0179230Z             }
2026-06-17T06:47:32.0179482Z           ]
2026-06-17T06:47:32.0179739Z         },
2026-06-17T06:47:32.0179995Z         "int": {
2026-06-17T06:47:32.0180266Z           "complete": true,
2026-06-17T06:47:32.0180533Z           "evidence": [
2026-06-17T06:47:32.0180784Z             {
2026-06-17T06:47:32.0181138Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-17T06:47:32.0181405Z               "line": 98
2026-06-17T06:47:32.0181672Z             },
2026-06-17T06:47:32.0181929Z             {
2026-06-17T06:47:32.0182272Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-17T06:47:32.0182547Z               "line": 140
2026-06-17T06:47:32.0182799Z             }
2026-06-17T06:47:32.0183061Z           ]
2026-06-17T06:47:32.0183309Z         },
2026-06-17T06:47:32.0183562Z         "unit": {
2026-06-17T06:47:32.0183843Z           "complete": true,
2026-06-17T06:47:32.0184111Z           "evidence": [
2026-06-17T06:47:32.0184374Z             {
2026-06-17T06:47:32.0184750Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-17T06:47:32.0185027Z               "line": 178
2026-06-17T06:47:32.0185282Z             },
2026-06-17T06:47:32.0185539Z             {
2026-06-17T06:47:32.0185930Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-17T06:47:32.0186197Z               "line": 242
2026-06-17T06:47:32.0186456Z             },
2026-06-17T06:47:32.0186708Z             {
2026-06-17T06:47:32.0187084Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-17T06:47:32.0187361Z               "line": 1079
2026-06-17T06:47:32.0187613Z             },
2026-06-17T06:47:32.0187873Z             {
2026-06-17T06:47:32.0188235Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-17T06:47:32.0188517Z               "line": 1109
2026-06-17T06:47:32.0188764Z             },
2026-06-17T06:47:32.0189204Z             {
2026-06-17T06:47:32.0189580Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-17T06:47:32.0189853Z               "line": 1129
2026-06-17T06:47:32.0190105Z             },
2026-06-17T06:47:32.0190356Z             {
2026-06-17T06:47:32.0190740Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-17T06:47:32.0191007Z               "line": 602
2026-06-17T06:47:32.0191255Z             },
2026-06-17T06:47:32.0191503Z             {
2026-06-17T06:47:32.0191860Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-17T06:47:32.0192227Z               "line": 148
2026-06-17T06:47:32.0192489Z             },
2026-06-17T06:47:32.0192748Z             {
2026-06-17T06:47:32.0193098Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-17T06:47:32.0193359Z               "line": 169
2026-06-17T06:47:32.0193626Z             },
2026-06-17T06:47:32.0193883Z             {
2026-06-17T06:47:32.0194241Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-17T06:47:32.0194508Z               "line": 181
2026-06-17T06:47:32.0194766Z             },
2026-06-17T06:47:32.0195014Z             {
2026-06-17T06:47:32.0195371Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-17T06:47:32.0195639Z               "line": 202
2026-06-17T06:47:32.0195890Z             },
2026-06-17T06:47:32.0196147Z             {
2026-06-17T06:47:32.0196481Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-17T06:47:32.0196748Z               "line": 375
2026-06-17T06:47:32.0197006Z             },
2026-06-17T06:47:32.0197259Z             {
2026-06-17T06:47:32.0197611Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-17T06:47:32.0197874Z               "line": 407
2026-06-17T06:47:32.0198130Z             },
2026-06-17T06:47:32.0198385Z             {
2026-06-17T06:47:32.0198704Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0199057Z               "line": 9276
2026-06-17T06:47:32.0199314Z             }
2026-06-17T06:47:32.0199568Z           ]
2026-06-17T06:47:32.0199825Z         }
2026-06-17T06:47:32.0200079Z       }
2026-06-17T06:47:32.0200331Z     },
2026-06-17T06:47:32.0200588Z     {
2026-06-17T06:47:32.0200854Z       "id": "REQ-MESH-5",
2026-06-17T06:47:32.0204772Z       "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-17T06:47:32.0205053Z       "requiredStages": [
2026-06-17T06:47:32.0205317Z         "impl",
2026-06-17T06:47:32.0205578Z         "unit"
2026-06-17T06:47:32.0205828Z       ],
2026-06-17T06:47:32.0206085Z       "stages": {
2026-06-17T06:47:32.0206350Z         "doc": {
2026-06-17T06:47:32.0206622Z           "complete": false,
2026-06-17T06:47:32.0206889Z           "evidence": []
2026-06-17T06:47:32.0207132Z         },
2026-06-17T06:47:32.0207389Z         "impl": {
2026-06-17T06:47:32.0207665Z           "complete": true,
2026-06-17T06:47:32.0207933Z           "evidence": [
2026-06-17T06:47:32.0208195Z             {
2026-06-17T06:47:32.0208566Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-17T06:47:32.0208841Z               "line": 61
2026-06-17T06:47:32.0209174Z             },
2026-06-17T06:47:32.0209441Z             {
2026-06-17T06:47:32.0209794Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-17T06:47:32.0210052Z               "line": 109
2026-06-17T06:47:32.0210314Z             },
2026-06-17T06:47:32.0210557Z             {
2026-06-17T06:47:32.0210921Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-17T06:47:32.0211187Z               "line": 104
2026-06-17T06:47:32.0211443Z             },
2026-06-17T06:47:32.0211802Z             {
2026-06-17T06:47:32.0212194Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-17T06:47:32.0212460Z               "line": 105
2026-06-17T06:47:32.0212700Z             },
2026-06-17T06:47:32.0212957Z             {
2026-06-17T06:47:32.0213333Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.0213601Z               "line": 85
2026-06-17T06:47:32.0213864Z             },
2026-06-17T06:47:32.0214124Z             {
2026-06-17T06:47:32.0214504Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.0214866Z               "line": 250
2026-06-17T06:47:32.0215129Z             },
2026-06-17T06:47:32.0215381Z             {
2026-06-17T06:47:32.0215768Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.0216035Z               "line": 314
2026-06-17T06:47:32.0216291Z             },
2026-06-17T06:47:32.0216549Z             {
2026-06-17T06:47:32.0216928Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.0217201Z               "line": 715
2026-06-17T06:47:32.0217445Z             },
2026-06-17T06:47:32.0217702Z             {
2026-06-17T06:47:32.0218040Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-17T06:47:32.0218308Z               "line": 101
2026-06-17T06:47:32.0218570Z             },
2026-06-17T06:47:32.0218822Z             {
2026-06-17T06:47:32.0219255Z               "path": "crates/spt-store/src/roster.rs",
2026-06-17T06:47:32.0219534Z               "line": 193
2026-06-17T06:47:32.0219805Z             }
2026-06-17T06:47:32.0220059Z           ]
2026-06-17T06:47:32.0220307Z         },
2026-06-17T06:47:32.0220555Z         "int": {
2026-06-17T06:47:32.0220831Z           "complete": false,
2026-06-17T06:47:32.0221107Z           "evidence": []
2026-06-17T06:47:32.0221365Z         },
2026-06-17T06:47:32.0221627Z         "unit": {
2026-06-17T06:47:32.0221904Z           "complete": true,
2026-06-17T06:47:32.0222179Z           "evidence": [
2026-06-17T06:47:32.0222444Z             {
2026-06-17T06:47:32.0222826Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.0223089Z               "line": 957
2026-06-17T06:47:32.0223345Z             },
2026-06-17T06:47:32.0223631Z             {
2026-06-17T06:47:32.0224004Z               "path": "crates/spt-store/src/roster.rs",
2026-06-17T06:47:32.0224284Z               "line": 462
2026-06-17T06:47:32.0224560Z             }
2026-06-17T06:47:32.0224830Z           ]
2026-06-17T06:47:32.0225117Z         }
2026-06-17T06:47:32.0225398Z       }
2026-06-17T06:47:32.0225674Z     },
2026-06-17T06:47:32.0225946Z     {
2026-06-17T06:47:32.0226241Z       "id": "REQ-MESH-6",
2026-06-17T06:47:32.0229786Z       "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-17T06:47:32.0230099Z       "requiredStages": [
2026-06-17T06:47:32.0230389Z         "impl",
2026-06-17T06:47:32.0230666Z         "unit"
2026-06-17T06:47:32.0230938Z       ],
2026-06-17T06:47:32.0231201Z       "stages": {
2026-06-17T06:47:32.0231454Z         "doc": {
2026-06-17T06:47:32.0231736Z           "complete": false,
2026-06-17T06:47:32.0232002Z           "evidence": []
2026-06-17T06:47:32.0232259Z         },
2026-06-17T06:47:32.0232521Z         "impl": {
2026-06-17T06:47:32.0232795Z           "complete": true,
2026-06-17T06:47:32.0233057Z           "evidence": [
2026-06-17T06:47:32.0233300Z             {
2026-06-17T06:47:32.0233614Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0233885Z               "line": 3905
2026-06-17T06:47:32.0234149Z             }
2026-06-17T06:47:32.0234416Z           ]
2026-06-17T06:47:32.0234664Z         },
2026-06-17T06:47:32.0235036Z         "int": {
2026-06-17T06:47:32.0235316Z           "complete": false,
2026-06-17T06:47:32.0235590Z           "evidence": []
2026-06-17T06:47:32.0235842Z         },
2026-06-17T06:47:32.0236104Z         "unit": {
2026-06-17T06:47:32.0236377Z           "complete": true,
2026-06-17T06:47:32.0236648Z           "evidence": [
2026-06-17T06:47:32.0236912Z             {
2026-06-17T06:47:32.0237217Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0237494Z               "line": 9809
2026-06-17T06:47:32.0237746Z             },
2026-06-17T06:47:32.0238111Z             {
2026-06-17T06:47:32.0238426Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0238698Z               "line": 9836
2026-06-17T06:47:32.0239036Z             },
2026-06-17T06:47:32.0239298Z             {
2026-06-17T06:47:32.0239613Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0239880Z               "line": 9860
2026-06-17T06:47:32.0240134Z             }
2026-06-17T06:47:32.0240404Z           ]
2026-06-17T06:47:32.0240664Z         }
2026-06-17T06:47:32.0240921Z       }
2026-06-17T06:47:32.0241160Z     },
2026-06-17T06:47:32.0241417Z     {
2026-06-17T06:47:32.0241699Z       "id": "REQ-MIGRATE-1",
2026-06-17T06:47:32.0242209Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-17T06:47:32.0242504Z       "requiredStages": [],
2026-06-17T06:47:32.0242766Z       "stages": {
2026-06-17T06:47:32.0243029Z         "doc": {
2026-06-17T06:47:32.0243290Z           "complete": false,
2026-06-17T06:47:32.0243574Z           "evidence": []
2026-06-17T06:47:32.0243826Z         },
2026-06-17T06:47:32.0244098Z         "impl": {
2026-06-17T06:47:32.0244370Z           "complete": false,
2026-06-17T06:47:32.0244637Z           "evidence": []
2026-06-17T06:47:32.0244895Z         },
2026-06-17T06:47:32.0245168Z         "int": {
2026-06-17T06:47:32.0245468Z           "complete": false,
2026-06-17T06:47:32.0245761Z           "evidence": []
2026-06-17T06:47:32.0246040Z         },
2026-06-17T06:47:32.0246336Z         "unit": {
2026-06-17T06:47:32.0246636Z           "complete": false,
2026-06-17T06:47:32.0246928Z           "evidence": []
2026-06-17T06:47:32.0247209Z         }
2026-06-17T06:47:32.0247462Z       }
2026-06-17T06:47:32.0247715Z     },
2026-06-17T06:47:32.0251529Z     {
2026-06-17T06:47:32.0251858Z       "id": "REQ-MSG-1",
2026-06-17T06:47:32.0253228Z       "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-17T06:47:32.0253533Z       "requiredStages": [
2026-06-17T06:47:32.0253793Z         "impl",
2026-06-17T06:47:32.0254052Z         "unit",
2026-06-17T06:47:32.0254306Z         "int"
2026-06-17T06:47:32.0254569Z       ],
2026-06-17T06:47:32.0254831Z       "stages": {
2026-06-17T06:47:32.0255078Z         "doc": {
2026-06-17T06:47:32.0255354Z           "complete": false,
2026-06-17T06:47:32.0255626Z           "evidence": []
2026-06-17T06:47:32.0255893Z         },
2026-06-17T06:47:32.0256147Z         "impl": {
2026-06-17T06:47:32.0256426Z           "complete": true,
2026-06-17T06:47:32.0256686Z           "evidence": [
2026-06-17T06:47:32.0256938Z             {
2026-06-17T06:47:32.0257282Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-17T06:47:32.0257545Z               "line": 28
2026-06-17T06:47:32.0257807Z             },
2026-06-17T06:47:32.0258060Z             {
2026-06-17T06:47:32.0258403Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-17T06:47:32.0258680Z               "line": 94
2026-06-17T06:47:32.0258924Z             },
2026-06-17T06:47:32.0259279Z             {
2026-06-17T06:47:32.0259619Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-17T06:47:32.0259895Z               "line": 127
2026-06-17T06:47:32.0260147Z             },
2026-06-17T06:47:32.0260409Z             {
2026-06-17T06:47:32.0260752Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-17T06:47:32.0261024Z               "line": 149
2026-06-17T06:47:32.0261424Z             },
2026-06-17T06:47:32.0261684Z             {
2026-06-17T06:47:32.0262027Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-17T06:47:32.0262299Z               "line": 174
2026-06-17T06:47:32.0262542Z             },
2026-06-17T06:47:32.0262796Z             {
2026-06-17T06:47:32.0263144Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-17T06:47:32.0263411Z               "line": 18
2026-06-17T06:47:32.0263653Z             },
2026-06-17T06:47:32.0263916Z             {
2026-06-17T06:47:32.0264344Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-17T06:47:32.0264613Z               "line": 13
2026-06-17T06:47:32.0264870Z             },
2026-06-17T06:47:32.0265124Z             {
2026-06-17T06:47:32.0265458Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-17T06:47:32.0265715Z               "line": 62
2026-06-17T06:47:32.0265963Z             },
2026-06-17T06:47:32.0266220Z             {
2026-06-17T06:47:32.0266549Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-17T06:47:32.0266815Z               "line": 13
2026-06-17T06:47:32.0267070Z             }
2026-06-17T06:47:32.0267333Z           ]
2026-06-17T06:47:32.0267581Z         },
2026-06-17T06:47:32.0267842Z         "int": {
2026-06-17T06:47:32.0268119Z           "complete": true,
2026-06-17T06:47:32.0268382Z           "evidence": [
2026-06-17T06:47:32.0268630Z             {
2026-06-17T06:47:32.0269121Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-17T06:47:32.0269388Z               "line": 9
2026-06-17T06:47:32.0269639Z             },
2026-06-17T06:47:32.0269893Z             {
2026-06-17T06:47:32.0270297Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-17T06:47:32.0270555Z               "line": 56
2026-06-17T06:47:32.0270813Z             },
2026-06-17T06:47:32.0271070Z             {
2026-06-17T06:47:32.0271476Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-17T06:47:32.0271734Z               "line": 113
2026-06-17T06:47:32.0271998Z             }
2026-06-17T06:47:32.0272258Z           ]
2026-06-17T06:47:32.0272503Z         },
2026-06-17T06:47:32.0272765Z         "unit": {
2026-06-17T06:47:32.0273032Z           "complete": true,
2026-06-17T06:47:32.0273313Z           "evidence": [
2026-06-17T06:47:32.0273564Z             {
2026-06-17T06:47:32.0273898Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-17T06:47:32.0274175Z               "line": 203
2026-06-17T06:47:32.0274427Z             },
2026-06-17T06:47:32.0274691Z             {
2026-06-17T06:47:32.0275032Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-17T06:47:32.0275288Z               "line": 232
2026-06-17T06:47:32.0275545Z             },
2026-06-17T06:47:32.0275807Z             {
2026-06-17T06:47:32.0276146Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-17T06:47:32.0276408Z               "line": 277
2026-06-17T06:47:32.0276694Z             },
2026-06-17T06:47:32.0276952Z             {
2026-06-17T06:47:32.0277290Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-17T06:47:32.0277556Z               "line": 300
2026-06-17T06:47:32.0277816Z             },
2026-06-17T06:47:32.0278068Z             {
2026-06-17T06:47:32.0278412Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-17T06:47:32.0278679Z               "line": 325
2026-06-17T06:47:32.0279027Z             },
2026-06-17T06:47:32.0279289Z             {
2026-06-17T06:47:32.0279628Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-17T06:47:32.0279895Z               "line": 204
2026-06-17T06:47:32.0280157Z             },
2026-06-17T06:47:32.0280405Z             {
2026-06-17T06:47:32.0280758Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-17T06:47:32.0281021Z               "line": 237
2026-06-17T06:47:32.0281282Z             },
2026-06-17T06:47:32.0281539Z             {
2026-06-17T06:47:32.0281891Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-17T06:47:32.0282264Z               "line": 251
2026-06-17T06:47:32.0282516Z             },
2026-06-17T06:47:32.0282781Z             {
2026-06-17T06:47:32.0283124Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-17T06:47:32.0283391Z               "line": 263
2026-06-17T06:47:32.0283644Z             },
2026-06-17T06:47:32.0283902Z             {
2026-06-17T06:47:32.0284231Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-17T06:47:32.0284502Z               "line": 162
2026-06-17T06:47:32.0284759Z             },
2026-06-17T06:47:32.0285011Z             {
2026-06-17T06:47:32.0285439Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-17T06:47:32.0285714Z               "line": 242
2026-06-17T06:47:32.0285972Z             },
2026-06-17T06:47:32.0286224Z             {
2026-06-17T06:47:32.0286544Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-17T06:47:32.0286821Z               "line": 134
2026-06-17T06:47:32.0287093Z             },
2026-06-17T06:47:32.0287374Z             {
2026-06-17T06:47:32.0287723Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-17T06:47:32.0287996Z               "line": 153
2026-06-17T06:47:32.0288271Z             }
2026-06-17T06:47:32.0288524Z           ]
2026-06-17T06:47:32.0288777Z         }
2026-06-17T06:47:32.0289116Z       }
2026-06-17T06:47:32.0289369Z     },
2026-06-17T06:47:32.0289626Z     {
2026-06-17T06:47:32.0289897Z       "id": "REQ-MSG-2",
2026-06-17T06:47:32.0290713Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-17T06:47:32.0291003Z       "requiredStages": [
2026-06-17T06:47:32.0291270Z         "impl",
2026-06-17T06:47:32.0291522Z         "unit"
2026-06-17T06:47:32.0291775Z       ],
2026-06-17T06:47:32.0292042Z       "stages": {
2026-06-17T06:47:32.0292291Z         "doc": {
2026-06-17T06:47:32.0292577Z           "complete": false,
2026-06-17T06:47:32.0292854Z           "evidence": []
2026-06-17T06:47:32.0293114Z         },
2026-06-17T06:47:32.0293374Z         "impl": {
2026-06-17T06:47:32.0293660Z           "complete": true,
2026-06-17T06:47:32.0293932Z           "evidence": [
2026-06-17T06:47:32.0294195Z             {
2026-06-17T06:47:32.0294505Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0294767Z               "line": 11
2026-06-17T06:47:32.0295028Z             },
2026-06-17T06:47:32.0295286Z             {
2026-06-17T06:47:32.0295601Z               "path": "crates/spt/src/main.rs",
2026-06-17T06:47:32.0295872Z               "line": 8
2026-06-17T06:47:32.0296128Z             }
2026-06-17T06:47:32.0296389Z           ]
2026-06-17T06:47:32.0296637Z         },
2026-06-17T06:47:32.0296903Z         "int": {
2026-06-17T06:47:32.0297185Z           "complete": false,
2026-06-17T06:47:32.0297457Z           "evidence": []
2026-06-17T06:47:32.0297720Z         },
2026-06-17T06:47:32.0297978Z         "unit": {
2026-06-17T06:47:32.0298254Z           "complete": true,
2026-06-17T06:47:32.0298515Z           "evidence": [
2026-06-17T06:47:32.0298779Z             {
2026-06-17T06:47:32.0299175Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0299446Z               "line": 7048
2026-06-17T06:47:32.0299710Z             },
2026-06-17T06:47:32.0299962Z             {
2026-06-17T06:47:32.0300287Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0300554Z               "line": 7090
2026-06-17T06:47:32.0300816Z             },
2026-06-17T06:47:32.0301087Z             {
2026-06-17T06:47:32.0301424Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0301696Z               "line": 7139
2026-06-17T06:47:32.0301954Z             },
2026-06-17T06:47:32.0302207Z             {
2026-06-17T06:47:32.0302517Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0302794Z               "line": 7162
2026-06-17T06:47:32.0303051Z             },
2026-06-17T06:47:32.0303303Z             {
2026-06-17T06:47:32.0303612Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0303882Z               "line": 9031
2026-06-17T06:47:32.0304239Z             },
2026-06-17T06:47:32.0304497Z             {
2026-06-17T06:47:32.0304821Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0305083Z               "line": 9040
2026-06-17T06:47:32.0305347Z             },
2026-06-17T06:47:32.0305603Z             {
2026-06-17T06:47:32.0305933Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0306213Z               "line": 9054
2026-06-17T06:47:32.0306461Z             }
2026-06-17T06:47:32.0306716Z           ]
2026-06-17T06:47:32.0306973Z         }
2026-06-17T06:47:32.0307336Z       }
2026-06-17T06:47:32.0307598Z     },
2026-06-17T06:47:32.0307836Z     {
2026-06-17T06:47:32.0308117Z       "id": "REQ-MSG-3",
2026-06-17T06:47:32.0309363Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-17T06:47:32.0309640Z       "requiredStages": [
2026-06-17T06:47:32.0309897Z         "impl",
2026-06-17T06:47:32.0310170Z         "unit",
2026-06-17T06:47:32.0310417Z         "int"
2026-06-17T06:47:32.0310669Z       ],
2026-06-17T06:47:32.0310928Z       "stages": {
2026-06-17T06:47:32.0311185Z         "doc": {
2026-06-17T06:47:32.0311472Z           "complete": false,
2026-06-17T06:47:32.0311729Z           "evidence": []
2026-06-17T06:47:32.0311989Z         },
2026-06-17T06:47:32.0312251Z         "impl": {
2026-06-17T06:47:32.0312519Z           "complete": true,
2026-06-17T06:47:32.0312781Z           "evidence": [
2026-06-17T06:47:32.0313039Z             {
2026-06-17T06:47:32.0313401Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-17T06:47:32.0313664Z               "line": 19
2026-06-17T06:47:32.0313925Z             },
2026-06-17T06:47:32.0314177Z             {
2026-06-17T06:47:32.0314508Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-17T06:47:32.0314780Z               "line": 21
2026-06-17T06:47:32.0315033Z             },
2026-06-17T06:47:32.0315287Z             {
2026-06-17T06:47:32.0315625Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-17T06:47:32.0315887Z               "line": 48
2026-06-17T06:47:32.0316143Z             },
2026-06-17T06:47:32.0316397Z             {
2026-06-17T06:47:32.0316721Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-17T06:47:32.0316987Z               "line": 151
2026-06-17T06:47:32.0317248Z             }
2026-06-17T06:47:32.0317505Z           ]
2026-06-17T06:47:32.0317762Z         },
2026-06-17T06:47:32.0318010Z         "int": {
2026-06-17T06:47:32.0318282Z           "complete": true,
2026-06-17T06:47:32.0318553Z           "evidence": [
2026-06-17T06:47:32.0318807Z             {
2026-06-17T06:47:32.0319283Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-17T06:47:32.0319540Z               "line": 10
2026-06-17T06:47:32.0319801Z             },
2026-06-17T06:47:32.0320052Z             {
2026-06-17T06:47:32.0320453Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-17T06:47:32.0320720Z               "line": 56
2026-06-17T06:47:32.0320977Z             }
2026-06-17T06:47:32.0321239Z           ]
2026-06-17T06:47:32.0321492Z         },
2026-06-17T06:47:32.0321750Z         "unit": {
2026-06-17T06:47:32.0322027Z           "complete": true,
2026-06-17T06:47:32.0322294Z           "evidence": [
2026-06-17T06:47:32.0322558Z             {
2026-06-17T06:47:32.0322878Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-17T06:47:32.0323145Z               "line": 205
2026-06-17T06:47:32.0323404Z             },
2026-06-17T06:47:32.0323665Z             {
2026-06-17T06:47:32.0324004Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-17T06:47:32.0324272Z               "line": 224
2026-06-17T06:47:32.0324529Z             },
2026-06-17T06:47:32.0324775Z             {
2026-06-17T06:47:32.0325111Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-17T06:47:32.0325383Z               "line": 247
2026-06-17T06:47:32.0325627Z             }
2026-06-17T06:47:32.0325880Z           ]
2026-06-17T06:47:32.0326232Z         }
2026-06-17T06:47:32.0326481Z       }
2026-06-17T06:47:32.0326733Z     },
2026-06-17T06:47:32.0326990Z     {
2026-06-17T06:47:32.0327262Z       "id": "REQ-MSG-4",
2026-06-17T06:47:32.0329629Z       "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-17T06:47:32.0329915Z       "requiredStages": [
2026-06-17T06:47:32.0330271Z         "impl",
2026-06-17T06:47:32.0330530Z         "unit",
2026-06-17T06:47:32.0330789Z         "int"
2026-06-17T06:47:32.0331046Z       ],
2026-06-17T06:47:32.0331299Z       "stages": {
2026-06-17T06:47:32.0331547Z         "doc": {
2026-06-17T06:47:32.0331833Z           "complete": false,
2026-06-17T06:47:32.0332105Z           "evidence": []
2026-06-17T06:47:32.0332366Z         },
2026-06-17T06:47:32.0332625Z         "impl": {
2026-06-17T06:47:32.0332907Z           "complete": true,
2026-06-17T06:47:32.0333172Z           "evidence": [
2026-06-17T06:47:32.0333419Z             {
2026-06-17T06:47:32.0333743Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-17T06:47:32.0334001Z               "line": 19
2026-06-17T06:47:32.0334263Z             },
2026-06-17T06:47:32.0334527Z             {
2026-06-17T06:47:32.0334856Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-17T06:47:32.0335133Z               "line": 46
2026-06-17T06:47:32.0335378Z             },
2026-06-17T06:47:32.0335634Z             {
2026-06-17T06:47:32.0335967Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:32.0336243Z               "line": 407
2026-06-17T06:47:32.0336502Z             },
2026-06-17T06:47:32.0336750Z             {
2026-06-17T06:47:32.0337070Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0337337Z               "line": 2855
2026-06-17T06:47:32.0337593Z             }
2026-06-17T06:47:32.0337851Z           ]
2026-06-17T06:47:32.0338107Z         },
2026-06-17T06:47:32.0338360Z         "int": {
2026-06-17T06:47:32.0338649Z           "complete": true,
2026-06-17T06:47:32.0338925Z           "evidence": [
2026-06-17T06:47:32.0339260Z             {
2026-06-17T06:47:32.0339631Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-17T06:47:32.0339909Z               "line": 98
2026-06-17T06:47:32.0340160Z             },
2026-06-17T06:47:32.0340408Z             {
2026-06-17T06:47:32.0340783Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-17T06:47:32.0341053Z               "line": 128
2026-06-17T06:47:32.0341306Z             }
2026-06-17T06:47:32.0341559Z           ]
2026-06-17T06:47:32.0341812Z         },
2026-06-17T06:47:32.0342073Z         "unit": {
2026-06-17T06:47:32.0342350Z           "complete": true,
2026-06-17T06:47:32.0342617Z           "evidence": [
2026-06-17T06:47:32.0342879Z             {
2026-06-17T06:47:32.0343199Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-17T06:47:32.0343476Z               "line": 68
2026-06-17T06:47:32.0343732Z             },
2026-06-17T06:47:32.0343989Z             {
2026-06-17T06:47:32.0344313Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-17T06:47:32.0344589Z               "line": 79
2026-06-17T06:47:32.0344843Z             },
2026-06-17T06:47:32.0345096Z             {
2026-06-17T06:47:32.0345411Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-17T06:47:32.0345674Z               "line": 90
2026-06-17T06:47:32.0345928Z             },
2026-06-17T06:47:32.0346189Z             {
2026-06-17T06:47:32.0346508Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-17T06:47:32.0346780Z               "line": 151
2026-06-17T06:47:32.0347028Z             }
2026-06-17T06:47:32.0347291Z           ]
2026-06-17T06:47:32.0347543Z         }
2026-06-17T06:47:32.0347800Z       }
2026-06-17T06:47:32.0348053Z     },
2026-06-17T06:47:32.0348306Z     {
2026-06-17T06:47:32.0348570Z       "id": "REQ-MSG-5",
2026-06-17T06:47:32.0350997Z       "title": "user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)",
2026-06-17T06:47:32.0351287Z       "requiredStages": [
2026-06-17T06:47:32.0351547Z         "doc",
2026-06-17T06:47:32.0351809Z         "impl",
2026-06-17T06:47:32.0352062Z         "unit"
2026-06-17T06:47:32.0352318Z       ],
2026-06-17T06:47:32.0352682Z       "stages": {
2026-06-17T06:47:32.0352938Z         "doc": {
2026-06-17T06:47:32.0353210Z           "complete": true,
2026-06-17T06:47:32.0353477Z           "evidence": [
2026-06-17T06:47:32.0353735Z             {
2026-06-17T06:47:32.0354032Z               "path": "CONTEXT.md",
2026-06-17T06:47:32.0354302Z               "line": 219
2026-06-17T06:47:32.0354554Z             }
2026-06-17T06:47:32.0354807Z           ]
2026-06-17T06:47:32.0355065Z         },
2026-06-17T06:47:32.0355327Z         "impl": {
2026-06-17T06:47:32.0355609Z           "complete": true,
2026-06-17T06:47:32.0355876Z           "evidence": [
2026-06-17T06:47:32.0356127Z             {
2026-06-17T06:47:32.0356461Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-17T06:47:32.0356730Z               "line": 60
2026-06-17T06:47:32.0356997Z             },
2026-06-17T06:47:32.0357246Z             {
2026-06-17T06:47:32.0357593Z               "path": "crates/spt-proto/src/event.rs",
2026-06-17T06:47:32.0357851Z               "line": 126
2026-06-17T06:47:32.0358113Z             },
2026-06-17T06:47:32.0358370Z             {
2026-06-17T06:47:32.0358714Z               "path": "crates/spt-proto/src/event.rs",
2026-06-17T06:47:32.0359077Z               "line": 135
2026-06-17T06:47:32.0359332Z             },
2026-06-17T06:47:32.0359587Z             {
2026-06-17T06:47:32.0359930Z               "path": "crates/spt-proto/src/event.rs",
2026-06-17T06:47:32.0360203Z               "line": 149
2026-06-17T06:47:32.0360460Z             },
2026-06-17T06:47:32.0360714Z             {
2026-06-17T06:47:32.0361062Z               "path": "crates/spt-proto/src/event.rs",
2026-06-17T06:47:32.0361329Z               "line": 178
2026-06-17T06:47:32.0361581Z             },
2026-06-17T06:47:32.0361837Z             {
2026-06-17T06:47:32.0362149Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0362413Z               "line": 2601
2026-06-17T06:47:32.0362665Z             }
2026-06-17T06:47:32.0362922Z           ]
2026-06-17T06:47:32.0363179Z         },
2026-06-17T06:47:32.0363437Z         "int": {
2026-06-17T06:47:32.0363714Z           "complete": true,
2026-06-17T06:47:32.0363980Z           "evidence": [
2026-06-17T06:47:32.0364230Z             {
2026-06-17T06:47:32.0364583Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-17T06:47:32.0364857Z               "line": 19
2026-06-17T06:47:32.0365099Z             }
2026-06-17T06:47:32.0365348Z           ]
2026-06-17T06:47:32.0365615Z         },
2026-06-17T06:47:32.0365877Z         "unit": {
2026-06-17T06:47:32.0366160Z           "complete": true,
2026-06-17T06:47:32.0366421Z           "evidence": [
2026-06-17T06:47:32.0366674Z             {
2026-06-17T06:47:32.0367006Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-17T06:47:32.0367271Z               "line": 192
2026-06-17T06:47:32.0367534Z             },
2026-06-17T06:47:32.0367792Z             {
2026-06-17T06:47:32.0368154Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-17T06:47:32.0368416Z               "line": 154
2026-06-17T06:47:32.0368678Z             },
2026-06-17T06:47:32.0368935Z             {
2026-06-17T06:47:32.0369346Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-17T06:47:32.0369608Z               "line": 122
2026-06-17T06:47:32.0369864Z             },
2026-06-17T06:47:32.0370148Z             {
2026-06-17T06:47:32.0370500Z               "path": "crates/spt-proto/src/event.rs",
2026-06-17T06:47:32.0370791Z               "line": 452
2026-06-17T06:47:32.0371172Z             },
2026-06-17T06:47:32.0371449Z             {
2026-06-17T06:47:32.0371826Z               "path": "crates/spt-proto/src/event.rs",
2026-06-17T06:47:32.0372112Z               "line": 501
2026-06-17T06:47:32.0372397Z             },
2026-06-17T06:47:32.0372649Z             {
2026-06-17T06:47:32.0373001Z               "path": "crates/spt-proto/src/event.rs",
2026-06-17T06:47:32.0373272Z               "line": 517
2026-06-17T06:47:32.0373531Z             },
2026-06-17T06:47:32.0373788Z             {
2026-06-17T06:47:32.0374126Z               "path": "crates/spt-proto/src/event.rs",
2026-06-17T06:47:32.0374494Z               "line": 536
2026-06-17T06:47:32.0374747Z             },
2026-06-17T06:47:32.0375013Z             {
2026-06-17T06:47:32.0375326Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0375593Z               "line": 6991
2026-06-17T06:47:32.0375842Z             }
2026-06-17T06:47:32.0376095Z           ]
2026-06-17T06:47:32.0376342Z         }
2026-06-17T06:47:32.0376599Z       }
2026-06-17T06:47:32.0376852Z     },
2026-06-17T06:47:32.0377115Z     {
2026-06-17T06:47:32.0377382Z       "id": "REQ-MSG-6",
2026-06-17T06:47:32.0381872Z       "title": "cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)",
2026-06-17T06:47:32.0382163Z       "requiredStages": [
2026-06-17T06:47:32.0382420Z         "doc",
2026-06-17T06:47:32.0382677Z         "impl",
2026-06-17T06:47:32.0382938Z         "unit"
2026-06-17T06:47:32.0383190Z       ],
2026-06-17T06:47:32.0383451Z       "stages": {
2026-06-17T06:47:32.0383713Z         "doc": {
2026-06-17T06:47:32.0383990Z           "complete": true,
2026-06-17T06:47:32.0384251Z           "evidence": [
2026-06-17T06:47:32.0384514Z             {
2026-06-17T06:47:32.0384810Z               "path": "CONTEXT.md",
2026-06-17T06:47:32.0385073Z               "line": 222
2026-06-17T06:47:32.0385331Z             }
2026-06-17T06:47:32.0385597Z           ]
2026-06-17T06:47:32.0385853Z         },
2026-06-17T06:47:32.0386125Z         "impl": {
2026-06-17T06:47:32.0386402Z           "complete": true,
2026-06-17T06:47:32.0386665Z           "evidence": [
2026-06-17T06:47:32.0386922Z             {
2026-06-17T06:47:32.0387304Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.0387585Z               "line": 177
2026-06-17T06:47:32.0387827Z             },
2026-06-17T06:47:32.0388079Z             {
2026-06-17T06:47:32.0388457Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.0388734Z               "line": 422
2026-06-17T06:47:32.0389063Z             },
2026-06-17T06:47:32.0389307Z             {
2026-06-17T06:47:32.0389693Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.0389965Z               "line": 445
2026-06-17T06:47:32.0390222Z             },
2026-06-17T06:47:32.0390486Z             {
2026-06-17T06:47:32.0390819Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-17T06:47:32.0391089Z               "line": 89
2026-06-17T06:47:32.0391348Z             },
2026-06-17T06:47:32.0391611Z             {
2026-06-17T06:47:32.0391978Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:32.0392240Z               "line": 155
2026-06-17T06:47:32.0392498Z             }
2026-06-17T06:47:32.0392747Z           ]
2026-06-17T06:47:32.0393005Z         },
2026-06-17T06:47:32.0393256Z         "int": {
2026-06-17T06:47:32.0393536Z           "complete": false,
2026-06-17T06:47:32.0393811Z           "evidence": []
2026-06-17T06:47:32.0394089Z         },
2026-06-17T06:47:32.0394351Z         "unit": {
2026-06-17T06:47:32.0394726Z           "complete": true,
2026-06-17T06:47:32.0394999Z           "evidence": [
2026-06-17T06:47:32.0395256Z             {
2026-06-17T06:47:32.0395638Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.0395910Z               "line": 1639
2026-06-17T06:47:32.0396162Z             },
2026-06-17T06:47:32.0396413Z             {
2026-06-17T06:47:32.0396742Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-17T06:47:32.0397014Z               "line": 219
2026-06-17T06:47:32.0397276Z             }
2026-06-17T06:47:32.0397629Z           ]
2026-06-17T06:47:32.0397883Z         }
2026-06-17T06:47:32.0398131Z       }
2026-06-17T06:47:32.0398383Z     },
2026-06-17T06:47:32.0398630Z     {
2026-06-17T06:47:32.0398913Z       "id": "REQ-MSG-ENVELOPE",
2026-06-17T06:47:32.0409409Z       "title": "The <EVENT type=\"msg\" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.",
2026-06-17T06:47:32.0409722Z       "requiredStages": [
2026-06-17T06:47:32.0409974Z         "doc",
2026-06-17T06:47:32.0410236Z         "impl",
2026-06-17T06:47:32.0410493Z         "unit",
2026-06-17T06:47:32.0410761Z         "int"
2026-06-17T06:47:32.0411018Z       ],
2026-06-17T06:47:32.0411277Z       "stages": {
2026-06-17T06:47:32.0411534Z         "doc": {
2026-06-17T06:47:32.0411800Z           "complete": true,
2026-06-17T06:47:32.0412066Z           "evidence": [
2026-06-17T06:47:32.0412327Z             {
2026-06-17T06:47:32.0413022Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-17T06:47:32.0413300Z               "line": 47
2026-06-17T06:47:32.0413552Z             }
2026-06-17T06:47:32.0413815Z           ]
2026-06-17T06:47:32.0414071Z         },
2026-06-17T06:47:32.0414329Z         "impl": {
2026-06-17T06:47:32.0414615Z           "complete": true,
2026-06-17T06:47:32.0414884Z           "evidence": [
2026-06-17T06:47:32.0415141Z             {
2026-06-17T06:47:32.0415480Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-17T06:47:32.0415757Z               "line": 20
2026-06-17T06:47:32.0416018Z             },
2026-06-17T06:47:32.0416280Z             {
2026-06-17T06:47:32.0416619Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-17T06:47:32.0416882Z               "line": 33
2026-06-17T06:47:32.0417138Z             },
2026-06-17T06:47:32.0417397Z             {
2026-06-17T06:47:32.0417730Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-17T06:47:32.0418001Z               "line": 47
2026-06-17T06:47:32.0418268Z             },
2026-06-17T06:47:32.0418525Z             {
2026-06-17T06:47:32.0418854Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-17T06:47:32.0419217Z               "line": 58
2026-06-17T06:47:32.0419478Z             },
2026-06-17T06:47:32.0419731Z             {
2026-06-17T06:47:32.0420053Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-17T06:47:32.0420434Z               "line": 14
2026-06-17T06:47:32.0420692Z             },
2026-06-17T06:47:32.0420940Z             {
2026-06-17T06:47:32.0421264Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-17T06:47:32.0421532Z               "line": 27
2026-06-17T06:47:32.0421794Z             },
2026-06-17T06:47:32.0422050Z             {
2026-06-17T06:47:32.0422370Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-17T06:47:32.0422646Z               "line": 40
2026-06-17T06:47:32.0422901Z             },
2026-06-17T06:47:32.0423159Z             {
2026-06-17T06:47:32.0423611Z               "path": "crates/spt-store/src/spool.rs",
2026-06-17T06:47:32.0423883Z               "line": 92
2026-06-17T06:47:32.0424140Z             },
2026-06-17T06:47:32.0424399Z             {
2026-06-17T06:47:32.0424752Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-17T06:47:32.0425019Z               "line": 143
2026-06-17T06:47:32.0425278Z             },
2026-06-17T06:47:32.0425539Z             {
2026-06-17T06:47:32.0425891Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-17T06:47:32.0426163Z               "line": 216
2026-06-17T06:47:32.0426426Z             },
2026-06-17T06:47:32.0426683Z             {
2026-06-17T06:47:32.0427022Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:32.0427294Z               "line": 408
2026-06-17T06:47:32.0427547Z             },
2026-06-17T06:47:32.0427804Z             {
2026-06-17T06:47:32.0428131Z               "path": "crates/spt/src/api/worker.rs",
2026-06-17T06:47:32.0428404Z               "line": 78
2026-06-17T06:47:32.0428676Z             },
2026-06-17T06:47:32.0428929Z             {
2026-06-17T06:47:32.0429319Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0429587Z               "line": 2856
2026-06-17T06:47:32.0429854Z             }
2026-06-17T06:47:32.0430111Z           ]
2026-06-17T06:47:32.0430358Z         },
2026-06-17T06:47:32.0430618Z         "int": {
2026-06-17T06:47:32.0430895Z           "complete": true,
2026-06-17T06:47:32.0431167Z           "evidence": [
2026-06-17T06:47:32.0431424Z             {
2026-06-17T06:47:32.0431815Z               "path": "crates/spt/tests/poll_envelope_e2e.rs",
2026-06-17T06:47:32.0432082Z               "line": 15
2026-06-17T06:47:32.0432339Z             }
2026-06-17T06:47:32.0432591Z           ]
2026-06-17T06:47:32.0432839Z         },
2026-06-17T06:47:32.0433103Z         "unit": {
2026-06-17T06:47:32.0433377Z           "complete": true,
2026-06-17T06:47:32.0433652Z           "evidence": [
2026-06-17T06:47:32.0433909Z             {
2026-06-17T06:47:32.0434242Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-17T06:47:32.0434514Z               "line": 102
2026-06-17T06:47:32.0434768Z             },
2026-06-17T06:47:32.0435034Z             {
2026-06-17T06:47:32.0435358Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-17T06:47:32.0435627Z               "line": 137
2026-06-17T06:47:32.0435886Z             },
2026-06-17T06:47:32.0436141Z             {
2026-06-17T06:47:32.0436465Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-17T06:47:32.0436728Z               "line": 98
2026-06-17T06:47:32.0436991Z             },
2026-06-17T06:47:32.0437248Z             {
2026-06-17T06:47:32.0437582Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-17T06:47:32.0437855Z               "line": 106
2026-06-17T06:47:32.0438112Z             },
2026-06-17T06:47:32.0438374Z             {
2026-06-17T06:47:32.0438706Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-17T06:47:32.0439045Z               "line": 113
2026-06-17T06:47:32.0439307Z             },
2026-06-17T06:47:32.0439565Z             {
2026-06-17T06:47:32.0439879Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-17T06:47:32.0440147Z               "line": 122
2026-06-17T06:47:32.0440400Z             }
2026-06-17T06:47:32.0440647Z           ]
2026-06-17T06:47:32.0440898Z         }
2026-06-17T06:47:32.0441150Z       }
2026-06-17T06:47:32.0441398Z     },
2026-06-17T06:47:32.0441650Z     {
2026-06-17T06:47:32.0442022Z       "id": "REQ-NET-1",
2026-06-17T06:47:32.0442575Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-17T06:47:32.0442860Z       "requiredStages": [
2026-06-17T06:47:32.0443119Z         "impl",
2026-06-17T06:47:32.0443376Z         "unit",
2026-06-17T06:47:32.0443630Z         "int"
2026-06-17T06:47:32.0443895Z       ],
2026-06-17T06:47:32.0444154Z       "stages": {
2026-06-17T06:47:32.0444411Z         "doc": {
2026-06-17T06:47:32.0444694Z           "complete": false,
2026-06-17T06:47:32.0445088Z           "evidence": []
2026-06-17T06:47:32.0445347Z         },
2026-06-17T06:47:32.0445609Z         "impl": {
2026-06-17T06:47:32.0454416Z           "complete": true,
2026-06-17T06:47:32.0454733Z           "evidence": [
2026-06-17T06:47:32.0455000Z             {
2026-06-17T06:47:32.0455382Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-17T06:47:32.0455668Z               "line": 54
2026-06-17T06:47:32.0455963Z             },
2026-06-17T06:47:32.0456245Z             {
2026-06-17T06:47:32.0456622Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-17T06:47:32.0456888Z               "line": 594
2026-06-17T06:47:32.0457149Z             },
2026-06-17T06:47:32.0457401Z             {
2026-06-17T06:47:32.0457739Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-17T06:47:32.0457988Z               "line": 130
2026-06-17T06:47:32.0458244Z             },
2026-06-17T06:47:32.0458496Z             {
2026-06-17T06:47:32.0458855Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-17T06:47:32.0459247Z               "line": 97
2026-06-17T06:47:32.0459499Z             },
2026-06-17T06:47:32.0459755Z             {
2026-06-17T06:47:32.0460122Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-17T06:47:32.0460379Z               "line": 159
2026-06-17T06:47:32.0460642Z             },
2026-06-17T06:47:32.0460891Z             {
2026-06-17T06:47:32.0461253Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-17T06:47:32.0461521Z               "line": 175
2026-06-17T06:47:32.0461782Z             },
2026-06-17T06:47:32.0462042Z             {
2026-06-17T06:47:32.0462407Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-17T06:47:32.0462670Z               "line": 190
2026-06-17T06:47:32.0462922Z             },
2026-06-17T06:47:32.0463180Z             {
2026-06-17T06:47:32.0467596Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-17T06:47:32.0483842Z               "line": 271
2026-06-17T06:47:32.0484171Z             },
2026-06-17T06:47:32.0484491Z             {
2026-06-17T06:47:32.0484953Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-17T06:47:32.0485273Z               "line": 306
2026-06-17T06:47:32.0485583Z             },
2026-06-17T06:47:32.0485884Z             {
2026-06-17T06:47:32.0486333Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-17T06:47:32.0486647Z               "line": 312
2026-06-17T06:47:32.0486957Z             },
2026-06-17T06:47:32.0487263Z             {
2026-06-17T06:47:32.0487707Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-17T06:47:32.0488031Z               "line": 318
2026-06-17T06:47:32.0488332Z             },
2026-06-17T06:47:32.0488620Z             {
2026-06-17T06:47:32.0489172Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-17T06:47:32.0489510Z               "line": 334
2026-06-17T06:47:32.0489825Z             },
2026-06-17T06:47:32.0490125Z             {
2026-06-17T06:47:32.0490559Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-17T06:47:32.0490884Z               "line": 354
2026-06-17T06:47:32.0491189Z             },
2026-06-17T06:47:32.0491497Z             {
2026-06-17T06:47:32.0491927Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-17T06:47:32.0492247Z               "line": 35
2026-06-17T06:47:32.0492542Z             },
2026-06-17T06:47:32.0492843Z             {
2026-06-17T06:47:32.0493462Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-17T06:47:32.0493737Z               "line": 85
2026-06-17T06:47:32.0493997Z             },
2026-06-17T06:47:32.0494242Z             {
2026-06-17T06:47:32.0494570Z               "path": "crates/spt-store/src/spool.rs",
2026-06-17T06:47:32.0494819Z               "line": 138
2026-06-17T06:47:32.0495061Z             },
2026-06-17T06:47:32.0495308Z             {
2026-06-17T06:47:32.0495604Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0495871Z               "line": 2698
2026-06-17T06:47:32.0496224Z             },
2026-06-17T06:47:32.0496477Z             {
2026-06-17T06:47:32.0496790Z               "path": "crates/spt/src/wansend.rs",
2026-06-17T06:47:32.0497051Z               "line": 17
2026-06-17T06:47:32.0497298Z             }
2026-06-17T06:47:32.0497551Z           ]
2026-06-17T06:47:32.0497795Z         },
2026-06-17T06:47:32.0498057Z         "int": {
2026-06-17T06:47:32.0498334Z           "complete": true,
2026-06-17T06:47:32.0498591Z           "evidence": [
2026-06-17T06:47:32.0498853Z             {
2026-06-17T06:47:32.0499365Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-17T06:47:32.0499637Z               "line": 341
2026-06-17T06:47:32.0499884Z             },
2026-06-17T06:47:32.0500131Z             {
2026-06-17T06:47:32.0500504Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:32.0500761Z               "line": 673
2026-06-17T06:47:32.0501029Z             },
2026-06-17T06:47:32.0501267Z             {
2026-06-17T06:47:32.0501629Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:32.0501897Z               "line": 971
2026-06-17T06:47:32.0502144Z             }
2026-06-17T06:47:32.0502381Z           ]
2026-06-17T06:47:32.0502634Z         },
2026-06-17T06:47:32.0502883Z         "unit": {
2026-06-17T06:47:32.0503150Z           "complete": true,
2026-06-17T06:47:32.0503403Z           "evidence": [
2026-06-17T06:47:32.0503650Z             {
2026-06-17T06:47:32.0503999Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-17T06:47:32.0504264Z               "line": 651
2026-06-17T06:47:32.0504515Z             },
2026-06-17T06:47:32.0504763Z             {
2026-06-17T06:47:32.0505125Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-17T06:47:32.0505398Z               "line": 686
2026-06-17T06:47:32.0505650Z             },
2026-06-17T06:47:32.0505902Z             {
2026-06-17T06:47:32.0506270Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-17T06:47:32.0506536Z               "line": 936
2026-06-17T06:47:32.0506794Z             },
2026-06-17T06:47:32.0507042Z             {
2026-06-17T06:47:32.0507406Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-17T06:47:32.0507678Z               "line": 201
2026-06-17T06:47:32.0507926Z             },
2026-06-17T06:47:32.0508173Z             {
2026-06-17T06:47:32.0508522Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-17T06:47:32.0508784Z               "line": 442
2026-06-17T06:47:32.0509161Z             },
2026-06-17T06:47:32.0509418Z             {
2026-06-17T06:47:32.0509769Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-17T06:47:32.0510034Z               "line": 456
2026-06-17T06:47:32.0510287Z             },
2026-06-17T06:47:32.0510536Z             {
2026-06-17T06:47:32.0510893Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-17T06:47:32.0511155Z               "line": 475
2026-06-17T06:47:32.0511398Z             },
2026-06-17T06:47:32.0511641Z             {
2026-06-17T06:47:32.0511989Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-17T06:47:32.0512247Z               "line": 120
2026-06-17T06:47:32.0512499Z             },
2026-06-17T06:47:32.0512747Z             {
2026-06-17T06:47:32.0513081Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-17T06:47:32.0513334Z               "line": 163
2026-06-17T06:47:32.0513580Z             },
2026-06-17T06:47:32.0513824Z             {
2026-06-17T06:47:32.0514273Z               "path": "crates/spt-store/src/spool.rs",
2026-06-17T06:47:32.0514534Z               "line": 530
2026-06-17T06:47:32.0514786Z             },
2026-06-17T06:47:32.0515033Z             {
2026-06-17T06:47:32.0515338Z               "path": "crates/spt/src/wansend.rs",
2026-06-17T06:47:32.0515604Z               "line": 616
2026-06-17T06:47:32.0515852Z             },
2026-06-17T06:47:32.0516100Z             {
2026-06-17T06:47:32.0516410Z               "path": "crates/spt/src/wansend.rs",
2026-06-17T06:47:32.0516672Z               "line": 1006
2026-06-17T06:47:32.0517020Z             }
2026-06-17T06:47:32.0517255Z           ]
2026-06-17T06:47:32.0517503Z         }
2026-06-17T06:47:32.0517753Z       }
2026-06-17T06:47:32.0517989Z     },
2026-06-17T06:47:32.0518228Z     {
2026-06-17T06:47:32.0518496Z       "id": "REQ-NET-2",
2026-06-17T06:47:32.0519144Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-17T06:47:32.0519416Z       "requiredStages": [
2026-06-17T06:47:32.0519682Z         "impl"
2026-06-17T06:47:32.0519930Z       ],
2026-06-17T06:47:32.0520187Z       "stages": {
2026-06-17T06:47:32.0520439Z         "doc": {
2026-06-17T06:47:32.0520704Z           "complete": false,
2026-06-17T06:47:32.0520971Z           "evidence": []
2026-06-17T06:47:32.0521214Z         },
2026-06-17T06:47:32.0521463Z         "impl": {
2026-06-17T06:47:32.0521734Z           "complete": true,
2026-06-17T06:47:32.0521998Z           "evidence": [
2026-06-17T06:47:32.0522239Z             {
2026-06-17T06:47:32.0522608Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-17T06:47:32.0522864Z               "line": 57
2026-06-17T06:47:32.0523106Z             },
2026-06-17T06:47:32.0523351Z             {
2026-06-17T06:47:32.0523708Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-17T06:47:32.0523965Z               "line": 71
2026-06-17T06:47:32.0524203Z             },
2026-06-17T06:47:32.0524455Z             {
2026-06-17T06:47:32.0524809Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-17T06:47:32.0525071Z               "line": 81
2026-06-17T06:47:32.0525318Z             },
2026-06-17T06:47:32.0525565Z             {
2026-06-17T06:47:32.0525922Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-17T06:47:32.0526179Z               "line": 159
2026-06-17T06:47:32.0526431Z             },
2026-06-17T06:47:32.0526669Z             {
2026-06-17T06:47:32.0527022Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-17T06:47:32.0527285Z               "line": 175
2026-06-17T06:47:32.0527533Z             },
2026-06-17T06:47:32.0527777Z             {
2026-06-17T06:47:32.0528134Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-17T06:47:32.0528399Z               "line": 190
2026-06-17T06:47:32.0528645Z             }
2026-06-17T06:47:32.0528892Z           ]
2026-06-17T06:47:32.0529250Z         },
2026-06-17T06:47:32.0529499Z         "int": {
2026-06-17T06:47:32.0529779Z           "complete": false,
2026-06-17T06:47:32.0530043Z           "evidence": []
2026-06-17T06:47:32.0530282Z         },
2026-06-17T06:47:32.0530533Z         "unit": {
2026-06-17T06:47:32.0530809Z           "complete": true,
2026-06-17T06:47:32.0531079Z           "evidence": [
2026-06-17T06:47:32.0531317Z             {
2026-06-17T06:47:32.0531660Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-17T06:47:32.0531918Z               "line": 402
2026-06-17T06:47:32.0532175Z             }
2026-06-17T06:47:32.0532432Z           ]
2026-06-17T06:47:32.0532681Z         }
2026-06-17T06:47:32.0532938Z       }
2026-06-17T06:47:32.0533192Z     },
2026-06-17T06:47:32.0533434Z     {
2026-06-17T06:47:32.0533690Z       "id": "REQ-NET-3",
2026-06-17T06:47:32.0534182Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-17T06:47:32.0534464Z       "requiredStages": [
2026-06-17T06:47:32.0534720Z         "impl",
2026-06-17T06:47:32.0534977Z         "unit"
2026-06-17T06:47:32.0535211Z       ],
2026-06-17T06:47:32.0535573Z       "stages": {
2026-06-17T06:47:32.0535827Z         "doc": {
2026-06-17T06:47:32.0536102Z           "complete": false,
2026-06-17T06:47:32.0536376Z           "evidence": []
2026-06-17T06:47:32.0536614Z         },
2026-06-17T06:47:32.0536867Z         "impl": {
2026-06-17T06:47:32.0537139Z           "complete": true,
2026-06-17T06:47:32.0537397Z           "evidence": [
2026-06-17T06:47:32.0537645Z             {
2026-06-17T06:47:32.0537980Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-17T06:47:32.0538241Z               "line": 39
2026-06-17T06:47:32.0538589Z             },
2026-06-17T06:47:32.0538835Z             {
2026-06-17T06:47:32.0539224Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-17T06:47:32.0539481Z               "line": 182
2026-06-17T06:47:32.0539725Z             },
2026-06-17T06:47:32.0539973Z             {
2026-06-17T06:47:32.0540298Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-17T06:47:32.0540551Z               "line": 333
2026-06-17T06:47:32.0540808Z             },
2026-06-17T06:47:32.0541051Z             {
2026-06-17T06:47:32.0541388Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-17T06:47:32.0541639Z               "line": 36
2026-06-17T06:47:32.0541887Z             },
2026-06-17T06:47:32.0542135Z             {
2026-06-17T06:47:32.0542498Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-17T06:47:32.0542755Z               "line": 158
2026-06-17T06:47:32.0542997Z             },
2026-06-17T06:47:32.0543246Z             {
2026-06-17T06:47:32.0543603Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-17T06:47:32.0543855Z               "line": 212
2026-06-17T06:47:32.0544115Z             },
2026-06-17T06:47:32.0544355Z             {
2026-06-17T06:47:32.0544718Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-17T06:47:32.0544975Z               "line": 233
2026-06-17T06:47:32.0545223Z             },
2026-06-17T06:47:32.0545471Z             {
2026-06-17T06:47:32.0545824Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-17T06:47:32.0546091Z               "line": 291
2026-06-17T06:47:32.0546336Z             },
2026-06-17T06:47:32.0546595Z             {
2026-06-17T06:47:32.0546951Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-17T06:47:32.0547213Z               "line": 310
2026-06-17T06:47:32.0547465Z             },
2026-06-17T06:47:32.0547709Z             {
2026-06-17T06:47:32.0548071Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-17T06:47:32.0548333Z               "line": 348
2026-06-17T06:47:32.0548587Z             },
2026-06-17T06:47:32.0548835Z             {
2026-06-17T06:47:32.0549320Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-17T06:47:32.0549585Z               "line": 393
2026-06-17T06:47:32.0549828Z             },
2026-06-17T06:47:32.0550075Z             {
2026-06-17T06:47:32.0550438Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-17T06:47:32.0550724Z               "line": 406
2026-06-17T06:47:32.0551000Z             },
2026-06-17T06:47:32.0551252Z             {
2026-06-17T06:47:32.0551601Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-17T06:47:32.0551863Z               "line": 29
2026-06-17T06:47:32.0552105Z             },
2026-06-17T06:47:32.0552351Z             {
2026-06-17T06:47:32.0552704Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-17T06:47:32.0552957Z               "line": 72
2026-06-17T06:47:32.0553223Z             },
2026-06-17T06:47:32.0553476Z             {
2026-06-17T06:47:32.0553820Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-17T06:47:32.0554082Z               "line": 123
2026-06-17T06:47:32.0554326Z             }
2026-06-17T06:47:32.0554579Z           ]
2026-06-17T06:47:32.0554815Z         },
2026-06-17T06:47:32.0555074Z         "int": {
2026-06-17T06:47:32.0555369Z           "complete": false,
2026-06-17T06:47:32.0555660Z           "evidence": []
2026-06-17T06:47:32.0555932Z         },
2026-06-17T06:47:32.0556308Z         "unit": {
2026-06-17T06:47:32.0556618Z           "complete": true,
2026-06-17T06:47:32.0556901Z           "evidence": [
2026-06-17T06:47:32.0557174Z             {
2026-06-17T06:47:32.0557554Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-17T06:47:32.0557835Z               "line": 223
2026-06-17T06:47:32.0558141Z             },
2026-06-17T06:47:32.0558407Z             {
2026-06-17T06:47:32.0558794Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-17T06:47:32.0559227Z               "line": 351
2026-06-17T06:47:32.0559773Z             },
2026-06-17T06:47:32.0560075Z             {
2026-06-17T06:47:32.0560445Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-17T06:47:32.0560722Z               "line": 504
2026-06-17T06:47:32.0560993Z             },
2026-06-17T06:47:32.0561264Z             {
2026-06-17T06:47:32.0561832Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-17T06:47:32.0562113Z               "line": 93
2026-06-17T06:47:32.0562405Z             },
2026-06-17T06:47:32.0562670Z             {
2026-06-17T06:47:32.0563026Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-17T06:47:32.0563308Z               "line": 142
2026-06-17T06:47:32.0563575Z             },
2026-06-17T06:47:32.0563836Z             {
2026-06-17T06:47:32.0564199Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-17T06:47:32.0564470Z               "line": 315
2026-06-17T06:47:32.0564733Z             },
2026-06-17T06:47:32.0564999Z             {
2026-06-17T06:47:32.0565370Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-17T06:47:32.0565652Z               "line": 355
2026-06-17T06:47:32.0565977Z             },
2026-06-17T06:47:32.0566243Z             {
2026-06-17T06:47:32.0566611Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-17T06:47:32.0566887Z               "line": 494
2026-06-17T06:47:32.0567160Z             }
2026-06-17T06:47:32.0567417Z           ]
2026-06-17T06:47:32.0567686Z         }
2026-06-17T06:47:32.0567947Z       }
2026-06-17T06:47:32.0568209Z     },
2026-06-17T06:47:32.0568506Z     {
2026-06-17T06:47:32.0568853Z       "id": "REQ-NODE-IDENTITY",
2026-06-17T06:47:32.0569796Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-17T06:47:32.0570150Z       "requiredStages": [
2026-06-17T06:47:32.0570488Z         "impl",
2026-06-17T06:47:32.0570814Z         "unit"
2026-06-17T06:47:32.0571119Z       ],
2026-06-17T06:47:32.0571438Z       "stages": {
2026-06-17T06:47:32.0571758Z         "doc": {
2026-06-17T06:47:32.0572101Z           "complete": false,
2026-06-17T06:47:32.0572421Z           "evidence": []
2026-06-17T06:47:32.0572741Z         },
2026-06-17T06:47:32.0573063Z         "impl": {
2026-06-17T06:47:32.0573395Z           "complete": true,
2026-06-17T06:47:32.0573723Z           "evidence": [
2026-06-17T06:47:32.0574034Z             {
2026-06-17T06:47:32.0574464Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-17T06:47:32.0574789Z               "line": 60
2026-06-17T06:47:32.0575094Z             },
2026-06-17T06:47:32.0575413Z             {
2026-06-17T06:47:32.0575841Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-17T06:47:32.0576175Z               "line": 68
2026-06-17T06:47:32.0576494Z             },
2026-06-17T06:47:32.0576813Z             {
2026-06-17T06:47:32.0577246Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-17T06:47:32.0577580Z               "line": 86
2026-06-17T06:47:32.0577895Z             },
2026-06-17T06:47:32.0578209Z             {
2026-06-17T06:47:32.0578622Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-17T06:47:32.0579174Z               "line": 120
2026-06-17T06:47:32.0579503Z             },
2026-06-17T06:47:32.0579813Z             {
2026-06-17T06:47:32.0580239Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-17T06:47:32.0580573Z               "line": 127
2026-06-17T06:47:32.0580888Z             },
2026-06-17T06:47:32.0581331Z             {
2026-06-17T06:47:32.0581750Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-17T06:47:32.0582084Z               "line": 143
2026-06-17T06:47:32.0582404Z             },
2026-06-17T06:47:32.0582718Z             {
2026-06-17T06:47:32.0583130Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-17T06:47:32.0583459Z               "line": 16
2026-06-17T06:47:32.0583767Z             }
2026-06-17T06:47:32.0584070Z           ]
2026-06-17T06:47:32.0584370Z         },
2026-06-17T06:47:32.0584771Z         "int": {
2026-06-17T06:47:32.0585100Z           "complete": false,
2026-06-17T06:47:32.0585410Z           "evidence": []
2026-06-17T06:47:32.0585701Z         },
2026-06-17T06:47:32.0586007Z         "unit": {
2026-06-17T06:47:32.0586326Z           "complete": true,
2026-06-17T06:47:32.0586644Z           "evidence": [
2026-06-17T06:47:32.0586944Z             {
2026-06-17T06:47:32.0587359Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-17T06:47:32.0587684Z               "line": 199
2026-06-17T06:47:32.0587984Z             },
2026-06-17T06:47:32.0588289Z             {
2026-06-17T06:47:32.0588698Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-17T06:47:32.0589129Z               "line": 218
2026-06-17T06:47:32.0589453Z             },
2026-06-17T06:47:32.0589753Z             {
2026-06-17T06:47:32.0590160Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-17T06:47:32.0590474Z               "line": 234
2026-06-17T06:47:32.0590780Z             },
2026-06-17T06:47:32.0591086Z             {
2026-06-17T06:47:32.0591481Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-17T06:47:32.0591794Z               "line": 256
2026-06-17T06:47:32.0592092Z             },
2026-06-17T06:47:32.0592398Z             {
2026-06-17T06:47:32.0592788Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-17T06:47:32.0593107Z               "line": 124
2026-06-17T06:47:32.0593404Z             },
2026-06-17T06:47:32.0593705Z             {
2026-06-17T06:47:32.0594103Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-17T06:47:32.0594425Z               "line": 140
2026-06-17T06:47:32.0594731Z             },
2026-06-17T06:47:32.0595026Z             {
2026-06-17T06:47:32.0595426Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-17T06:47:32.0595741Z               "line": 155
2026-06-17T06:47:32.0596056Z             }
2026-06-17T06:47:32.0596360Z           ]
2026-06-17T06:47:32.0596665Z         }
2026-06-17T06:47:32.0596971Z       }
2026-06-17T06:47:32.0597276Z     },
2026-06-17T06:47:32.0597576Z     {
2026-06-17T06:47:32.0597905Z       "id": "REQ-NOTIF-1",
2026-06-17T06:47:32.0599178Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-17T06:47:32.0599528Z       "requiredStages": [
2026-06-17T06:47:32.0599833Z         "impl",
2026-06-17T06:47:32.0600148Z         "unit",
2026-06-17T06:47:32.0600453Z         "int"
2026-06-17T06:47:32.0600753Z       ],
2026-06-17T06:47:32.0601063Z       "stages": {
2026-06-17T06:47:32.0601383Z         "doc": {
2026-06-17T06:47:32.0601707Z           "complete": false,
2026-06-17T06:47:32.0602027Z           "evidence": []
2026-06-17T06:47:32.0602325Z         },
2026-06-17T06:47:32.0602628Z         "impl": {
2026-06-17T06:47:32.0602963Z           "complete": true,
2026-06-17T06:47:32.0603292Z           "evidence": [
2026-06-17T06:47:32.0603606Z             {
2026-06-17T06:47:32.0604034Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-17T06:47:32.0604368Z               "line": 514
2026-06-17T06:47:32.0604682Z             },
2026-06-17T06:47:32.0604986Z             {
2026-06-17T06:47:32.0605395Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:32.0605714Z               "line": 30
2026-06-17T06:47:32.0606038Z             },
2026-06-17T06:47:32.0606353Z             {
2026-06-17T06:47:32.0606760Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:32.0607207Z               "line": 69
2026-06-17T06:47:32.0607526Z             },
2026-06-17T06:47:32.0607850Z             {
2026-06-17T06:47:32.0608240Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:32.0608564Z               "line": 93
2026-06-17T06:47:32.0608884Z             },
2026-06-17T06:47:32.0609285Z             {
2026-06-17T06:47:32.0609719Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:32.0610037Z               "line": 107
2026-06-17T06:47:32.0610345Z             },
2026-06-17T06:47:32.0610760Z             {
2026-06-17T06:47:32.0611160Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:32.0611489Z               "line": 142
2026-06-17T06:47:32.0611790Z             },
2026-06-17T06:47:32.0612095Z             {
2026-06-17T06:47:32.0612487Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:32.0612809Z               "line": 187
2026-06-17T06:47:32.0613102Z             },
2026-06-17T06:47:32.0613412Z             {
2026-06-17T06:47:32.0613809Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:32.0614113Z               "line": 258
2026-06-17T06:47:32.0614409Z             },
2026-06-17T06:47:32.0614700Z             {
2026-06-17T06:47:32.0615087Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:32.0615409Z               "line": 372
2026-06-17T06:47:32.0615707Z             },
2026-06-17T06:47:32.0616007Z             {
2026-06-17T06:47:32.0616404Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:32.0616724Z               "line": 479
2026-06-17T06:47:32.0617019Z             },
2026-06-17T06:47:32.0617315Z             {
2026-06-17T06:47:32.0617735Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-17T06:47:32.0618045Z               "line": 24
2026-06-17T06:47:32.0618353Z             },
2026-06-17T06:47:32.0618644Z             {
2026-06-17T06:47:32.0619120Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-17T06:47:32.0619435Z               "line": 34
2026-06-17T06:47:32.0619745Z             },
2026-06-17T06:47:32.0620045Z             {
2026-06-17T06:47:32.0620454Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-17T06:47:32.0620771Z               "line": 60
2026-06-17T06:47:32.0621067Z             },
2026-06-17T06:47:32.0621367Z             {
2026-06-17T06:47:32.0621768Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-17T06:47:32.0622083Z               "line": 82
2026-06-17T06:47:32.0622378Z             },
2026-06-17T06:47:32.0622664Z             {
2026-06-17T06:47:32.0623075Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-17T06:47:32.0623388Z               "line": 94
2026-06-17T06:47:32.0623696Z             },
2026-06-17T06:47:32.0623976Z             {
2026-06-17T06:47:32.0624388Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-17T06:47:32.0624698Z               "line": 96
2026-06-17T06:47:32.0624993Z             },
2026-06-17T06:47:32.0625303Z             {
2026-06-17T06:47:32.0625723Z               "path": "crates/spt-daemon/src/pump/notif.rs",
2026-06-17T06:47:32.0626031Z               "line": 44
2026-06-17T06:47:32.0626324Z             },
2026-06-17T06:47:32.0626630Z             {
2026-06-17T06:47:32.0627035Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-17T06:47:32.0627341Z               "line": 20
2026-06-17T06:47:32.0627632Z             },
2026-06-17T06:47:32.0627932Z             {
2026-06-17T06:47:32.0628323Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-17T06:47:32.0628642Z               "line": 30
2026-06-17T06:47:32.0628927Z             },
2026-06-17T06:47:32.0629375Z             {
2026-06-17T06:47:32.0629776Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-17T06:47:32.0630095Z               "line": 50
2026-06-17T06:47:32.0630396Z             },
2026-06-17T06:47:32.0630691Z             {
2026-06-17T06:47:32.0631185Z               "path": "crates/spt-store/src/notif.rs",
2026-06-17T06:47:32.0631504Z               "line": 28
2026-06-17T06:47:32.0631804Z             },
2026-06-17T06:47:32.0632105Z             {
2026-06-17T06:47:32.0632500Z               "path": "crates/spt-store/src/notif.rs",
2026-06-17T06:47:32.0632810Z               "line": 126
2026-06-17T06:47:32.0633105Z             },
2026-06-17T06:47:32.0633411Z             {
2026-06-17T06:47:32.0633791Z               "path": "crates/spt-store/src/notif.rs",
2026-06-17T06:47:32.0634108Z               "line": 161
2026-06-17T06:47:32.0634509Z             },
2026-06-17T06:47:32.0634814Z             {
2026-06-17T06:47:32.0635200Z               "path": "crates/spt-store/src/notif.rs",
2026-06-17T06:47:32.0635510Z               "line": 202
2026-06-17T06:47:32.0635820Z             },
2026-06-17T06:47:32.0636116Z             {
2026-06-17T06:47:32.0636500Z               "path": "crates/spt-store/src/notif.rs",
2026-06-17T06:47:32.0636808Z               "line": 213
2026-06-17T06:47:32.0637113Z             },
2026-06-17T06:47:32.0637418Z             {
2026-06-17T06:47:32.0637806Z               "path": "crates/spt-store/src/notif.rs",
2026-06-17T06:47:32.0638125Z               "line": 238
2026-06-17T06:47:32.0638420Z             },
2026-06-17T06:47:32.0638711Z             {
2026-06-17T06:47:32.0639221Z               "path": "crates/spt-store/src/notif.rs",
2026-06-17T06:47:32.0639536Z               "line": 261
2026-06-17T06:47:32.0639835Z             },
2026-06-17T06:47:32.0640141Z             {
2026-06-17T06:47:32.0640546Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:32.0640866Z               "line": 82
2026-06-17T06:47:32.0641165Z             }
2026-06-17T06:47:32.0641461Z           ]
2026-06-17T06:47:32.0641760Z         },
2026-06-17T06:47:32.0642054Z         "int": {
2026-06-17T06:47:32.0642369Z           "complete": true,
2026-06-17T06:47:32.0642688Z           "evidence": [
2026-06-17T06:47:32.0642985Z             {
2026-06-17T06:47:32.0643422Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-17T06:47:32.0643732Z               "line": 285
2026-06-17T06:47:32.0644027Z             },
2026-06-17T06:47:32.0644314Z             {
2026-06-17T06:47:32.0644716Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-17T06:47:32.0645021Z               "line": 145
2026-06-17T06:47:32.0645326Z             },
2026-06-17T06:47:32.0645651Z             {
2026-06-17T06:47:32.0646056Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:32.0646366Z               "line": 682
2026-06-17T06:47:32.0646671Z             },
2026-06-17T06:47:32.0646961Z             {
2026-06-17T06:47:32.0647373Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:32.0647688Z               "line": 1100
2026-06-17T06:47:32.0647988Z             }
2026-06-17T06:47:32.0648274Z           ]
2026-06-17T06:47:32.0648575Z         },
2026-06-17T06:47:32.0648871Z         "unit": {
2026-06-17T06:47:32.0649315Z           "complete": true,
2026-06-17T06:47:32.0649649Z           "evidence": [
2026-06-17T06:47:32.0649937Z             {
2026-06-17T06:47:32.0650329Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:32.0650634Z               "line": 572
2026-06-17T06:47:32.0650935Z             },
2026-06-17T06:47:32.0651220Z             {
2026-06-17T06:47:32.0651612Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:32.0651913Z               "line": 636
2026-06-17T06:47:32.0652206Z             },
2026-06-17T06:47:32.0652489Z             {
2026-06-17T06:47:32.0652871Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:32.0653197Z               "line": 740
2026-06-17T06:47:32.0653497Z             },
2026-06-17T06:47:32.0653807Z             {
2026-06-17T06:47:32.0654207Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:32.0654532Z               "line": 772
2026-06-17T06:47:32.0654837Z             },
2026-06-17T06:47:32.0655131Z             {
2026-06-17T06:47:32.0655653Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:32.0655967Z               "line": 840
2026-06-17T06:47:32.0656267Z             },
2026-06-17T06:47:32.0656568Z             {
2026-06-17T06:47:32.0656969Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:32.0657294Z               "line": 898
2026-06-17T06:47:32.0657601Z             },
2026-06-17T06:47:32.0657899Z             {
2026-06-17T06:47:32.0658291Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:32.0658596Z               "line": 1173
2026-06-17T06:47:32.0659111Z             },
2026-06-17T06:47:32.0659440Z             {
2026-06-17T06:47:32.0659885Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-17T06:47:32.0660199Z               "line": 157
2026-06-17T06:47:32.0660502Z             },
2026-06-17T06:47:32.0660798Z             {
2026-06-17T06:47:32.0661218Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-17T06:47:32.0661538Z               "line": 250
2026-06-17T06:47:32.0661838Z             },
2026-06-17T06:47:32.0662135Z             {
2026-06-17T06:47:32.0662554Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-17T06:47:32.0662875Z               "line": 273
2026-06-17T06:47:32.0663179Z             },
2026-06-17T06:47:32.0663480Z             {
2026-06-17T06:47:32.0663894Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-17T06:47:32.0664205Z               "line": 355
2026-06-17T06:47:32.0664499Z             },
2026-06-17T06:47:32.0664805Z             {
2026-06-17T06:47:32.0665229Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-17T06:47:32.0665557Z               "line": 392
2026-06-17T06:47:32.0665846Z             },
2026-06-17T06:47:32.0666137Z             {
2026-06-17T06:47:32.0666565Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-17T06:47:32.0666880Z               "line": 131
2026-06-17T06:47:32.0667181Z             },
2026-06-17T06:47:32.0667476Z             {
2026-06-17T06:47:32.0667897Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-17T06:47:32.0668209Z               "line": 72
2026-06-17T06:47:32.0668508Z             },
2026-06-17T06:47:32.0668803Z             {
2026-06-17T06:47:32.0669347Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-17T06:47:32.0669657Z               "line": 97
2026-06-17T06:47:32.0669962Z             },
2026-06-17T06:47:32.0670248Z             {
2026-06-17T06:47:32.0670625Z               "path": "crates/spt-store/src/notif.rs",
2026-06-17T06:47:32.0670944Z               "line": 379
2026-06-17T06:47:32.0671235Z             },
2026-06-17T06:47:32.0671526Z             {
2026-06-17T06:47:32.0671907Z               "path": "crates/spt-store/src/notif.rs",
2026-06-17T06:47:32.0672226Z               "line": 417
2026-06-17T06:47:32.0672522Z             },
2026-06-17T06:47:32.0672808Z             {
2026-06-17T06:47:32.0673189Z               "path": "crates/spt-store/src/notif.rs",
2026-06-17T06:47:32.0673491Z               "line": 433
2026-06-17T06:47:32.0673792Z             },
2026-06-17T06:47:32.0674082Z             {
2026-06-17T06:47:32.0674459Z               "path": "crates/spt-store/src/notif.rs",
2026-06-17T06:47:32.0674779Z               "line": 472
2026-06-17T06:47:32.0675074Z             },
2026-06-17T06:47:32.0675356Z             {
2026-06-17T06:47:32.0675746Z               "path": "crates/spt-store/src/notif.rs",
2026-06-17T06:47:32.0676065Z               "line": 489
2026-06-17T06:47:32.0676359Z             },
2026-06-17T06:47:32.0676650Z             {
2026-06-17T06:47:32.0677049Z               "path": "crates/spt-store/src/notif.rs",
2026-06-17T06:47:32.0677355Z               "line": 517
2026-06-17T06:47:32.0677651Z             },
2026-06-17T06:47:32.0677936Z             {
2026-06-17T06:47:32.0678318Z               "path": "crates/spt-store/src/notif.rs",
2026-06-17T06:47:32.0678622Z               "line": 548
2026-06-17T06:47:32.0678911Z             },
2026-06-17T06:47:32.0679320Z             {
2026-06-17T06:47:32.0679831Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:32.0680150Z               "line": 741
2026-06-17T06:47:32.0680442Z             }
2026-06-17T06:47:32.0680733Z           ]
2026-06-17T06:47:32.0681029Z         }
2026-06-17T06:47:32.0681315Z       }
2026-06-17T06:47:32.0681603Z     },
2026-06-17T06:47:32.0681885Z     {
2026-06-17T06:47:32.0682204Z       "id": "REQ-NOTIF-2",
2026-06-17T06:47:32.0682987Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-17T06:47:32.0683415Z       "requiredStages": [
2026-06-17T06:47:32.0683716Z         "doc",
2026-06-17T06:47:32.0684009Z         "impl",
2026-06-17T06:47:32.0684305Z         "unit",
2026-06-17T06:47:32.0684596Z         "int"
2026-06-17T06:47:32.0684891Z       ],
2026-06-17T06:47:32.0685182Z       "stages": {
2026-06-17T06:47:32.0685477Z         "doc": {
2026-06-17T06:47:32.0685797Z           "complete": true,
2026-06-17T06:47:32.0686097Z           "evidence": [
2026-06-17T06:47:32.0686393Z             {
2026-06-17T06:47:32.0686720Z               "path": "CONTEXT.md",
2026-06-17T06:47:32.0687032Z               "line": 461
2026-06-17T06:47:32.0687328Z             },
2026-06-17T06:47:32.0687614Z             {
2026-06-17T06:47:32.0687957Z               "path": "docs/MANIFEST.md",
2026-06-17T06:47:32.0688258Z               "line": 79
2026-06-17T06:47:32.0688549Z             }
2026-06-17T06:47:32.0688839Z           ]
2026-06-17T06:47:32.0693680Z         },
2026-06-17T06:47:32.0694014Z         "impl": {
2026-06-17T06:47:32.0694356Z           "complete": true,
2026-06-17T06:47:32.0694668Z           "evidence": [
2026-06-17T06:47:32.0694955Z             {
2026-06-17T06:47:32.0695359Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:32.0695669Z               "line": 287
2026-06-17T06:47:32.0695956Z             },
2026-06-17T06:47:32.0696237Z             {
2026-06-17T06:47:32.0696638Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:32.0696963Z               "line": 301
2026-06-17T06:47:32.0697247Z             },
2026-06-17T06:47:32.0697540Z             {
2026-06-17T06:47:32.0697931Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:32.0698231Z               "line": 326
2026-06-17T06:47:32.0698527Z             },
2026-06-17T06:47:32.0698823Z             {
2026-06-17T06:47:32.0699358Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:32.0699710Z               "line": 199
2026-06-17T06:47:32.0700008Z             },
2026-06-17T06:47:32.0700298Z             {
2026-06-17T06:47:32.0700704Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:32.0701014Z               "line": 91
2026-06-17T06:47:32.0701304Z             },
2026-06-17T06:47:32.0701595Z             {
2026-06-17T06:47:32.0701952Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0702258Z               "line": 2024
2026-06-17T06:47:32.0702549Z             },
2026-06-17T06:47:32.0702834Z             {
2026-06-17T06:47:32.0703201Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0703511Z               "line": 2073
2026-06-17T06:47:32.0703802Z             },
2026-06-17T06:47:32.0704074Z             {
2026-06-17T06:47:32.0704446Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0704756Z               "line": 2152
2026-06-17T06:47:32.0705060Z             },
2026-06-17T06:47:32.0705343Z             {
2026-06-17T06:47:32.0705706Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0706021Z               "line": 2191
2026-06-17T06:47:32.0706307Z             }
2026-06-17T06:47:32.0706602Z           ]
2026-06-17T06:47:32.0706883Z         },
2026-06-17T06:47:32.0707174Z         "int": {
2026-06-17T06:47:32.0707489Z           "complete": true,
2026-06-17T06:47:32.0707797Z           "evidence": [
2026-06-17T06:47:32.0708096Z             {
2026-06-17T06:47:32.0708506Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:32.0708825Z               "line": 808
2026-06-17T06:47:32.0709407Z             },
2026-06-17T06:47:32.0709703Z             {
2026-06-17T06:47:32.0710119Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:32.0710431Z               "line": 1343
2026-06-17T06:47:32.0710729Z             }
2026-06-17T06:47:32.0711010Z           ]
2026-06-17T06:47:32.0711296Z         },
2026-06-17T06:47:32.0711588Z         "unit": {
2026-06-17T06:47:32.0711908Z           "complete": true,
2026-06-17T06:47:32.0712213Z           "evidence": [
2026-06-17T06:47:32.0712508Z             {
2026-06-17T06:47:32.0713005Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:32.0713308Z               "line": 1022
2026-06-17T06:47:32.0713603Z             },
2026-06-17T06:47:32.0713894Z             {
2026-06-17T06:47:32.0714291Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:32.0714606Z               "line": 1090
2026-06-17T06:47:32.0714891Z             },
2026-06-17T06:47:32.0715172Z             {
2026-06-17T06:47:32.0715528Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0715831Z               "line": 7472
2026-06-17T06:47:32.0716122Z             },
2026-06-17T06:47:32.0716413Z             {
2026-06-17T06:47:32.0716771Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0717076Z               "line": 7527
2026-06-17T06:47:32.0717362Z             }
2026-06-17T06:47:32.0717643Z           ]
2026-06-17T06:47:32.0717939Z         }
2026-06-17T06:47:32.0718221Z       }
2026-06-17T06:47:32.0718506Z     },
2026-06-17T06:47:32.0718799Z     {
2026-06-17T06:47:32.0719243Z       "id": "REQ-PAIR-1",
2026-06-17T06:47:32.0719604Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-17T06:47:32.0719915Z       "requiredStages": [
2026-06-17T06:47:32.0720210Z         "impl",
2026-06-17T06:47:32.0720501Z         "unit",
2026-06-17T06:47:32.0720783Z         "int"
2026-06-17T06:47:32.0721058Z       ],
2026-06-17T06:47:32.0721361Z       "stages": {
2026-06-17T06:47:32.0721657Z         "doc": {
2026-06-17T06:47:32.0721982Z           "complete": false,
2026-06-17T06:47:32.0722292Z           "evidence": []
2026-06-17T06:47:32.0722577Z         },
2026-06-17T06:47:32.0722872Z         "impl": {
2026-06-17T06:47:32.0723173Z           "complete": true,
2026-06-17T06:47:32.0723473Z           "evidence": [
2026-06-17T06:47:32.0723754Z             {
2026-06-17T06:47:32.0724177Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-17T06:47:32.0724478Z               "line": 27
2026-06-17T06:47:32.0724773Z             },
2026-06-17T06:47:32.0725069Z             {
2026-06-17T06:47:32.0725491Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-17T06:47:32.0725795Z               "line": 88
2026-06-17T06:47:32.0726083Z             },
2026-06-17T06:47:32.0726363Z             {
2026-06-17T06:47:32.0726788Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-17T06:47:32.0727084Z               "line": 110
2026-06-17T06:47:32.0727369Z             },
2026-06-17T06:47:32.0727655Z             {
2026-06-17T06:47:32.0728076Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-17T06:47:32.0728372Z               "line": 153
2026-06-17T06:47:32.0728653Z             },
2026-06-17T06:47:32.0729037Z             {
2026-06-17T06:47:32.0729497Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-17T06:47:32.0729803Z               "line": 182
2026-06-17T06:47:32.0730094Z             },
2026-06-17T06:47:32.0730370Z             {
2026-06-17T06:47:32.0730794Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-17T06:47:32.0731099Z               "line": 29
2026-06-17T06:47:32.0731390Z             },
2026-06-17T06:47:32.0731670Z             {
2026-06-17T06:47:32.0732135Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-17T06:47:32.0732445Z               "line": 31
2026-06-17T06:47:32.0732727Z             },
2026-06-17T06:47:32.0733008Z             {
2026-06-17T06:47:32.0733534Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-17T06:47:32.0733830Z               "line": 44
2026-06-17T06:47:32.0734120Z             },
2026-06-17T06:47:32.0734409Z             {
2026-06-17T06:47:32.0734825Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-17T06:47:32.0735120Z               "line": 171
2026-06-17T06:47:32.0735411Z             },
2026-06-17T06:47:32.0735697Z             {
2026-06-17T06:47:32.0736117Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-17T06:47:32.0736418Z               "line": 376
2026-06-17T06:47:32.0736806Z             }
2026-06-17T06:47:32.0737095Z           ]
2026-06-17T06:47:32.0737382Z         },
2026-06-17T06:47:32.0737678Z         "int": {
2026-06-17T06:47:32.0737983Z           "complete": true,
2026-06-17T06:47:32.0738293Z           "evidence": [
2026-06-17T06:47:32.0738568Z             {
2026-06-17T06:47:32.0739069Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:32.0739430Z               "line": 643
2026-06-17T06:47:32.0739733Z             },
2026-06-17T06:47:32.0740016Z             {
2026-06-17T06:47:32.0740415Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:32.0740720Z               "line": 885
2026-06-17T06:47:32.0741007Z             }
2026-06-17T06:47:32.0741292Z           ]
2026-06-17T06:47:32.0741579Z         },
2026-06-17T06:47:32.0741866Z         "unit": {
2026-06-17T06:47:32.0742174Z           "complete": true,
2026-06-17T06:47:32.0742477Z           "evidence": [
2026-06-17T06:47:32.0742767Z             {
2026-06-17T06:47:32.0743192Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-17T06:47:32.0743502Z               "line": 236
2026-06-17T06:47:32.0743798Z             },
2026-06-17T06:47:32.0744075Z             {
2026-06-17T06:47:32.0744493Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-17T06:47:32.0744794Z               "line": 349
2026-06-17T06:47:32.0745080Z             },
2026-06-17T06:47:32.0745365Z             {
2026-06-17T06:47:32.0745747Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-17T06:47:32.0746057Z               "line": 194
2026-06-17T06:47:32.0746339Z             },
2026-06-17T06:47:32.0746611Z             {
2026-06-17T06:47:32.0746983Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-17T06:47:32.0747281Z               "line": 216
2026-06-17T06:47:32.0747560Z             },
2026-06-17T06:47:32.0747836Z             {
2026-06-17T06:47:32.0748209Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-17T06:47:32.0748509Z               "line": 230
2026-06-17T06:47:32.0748800Z             },
2026-06-17T06:47:32.0749187Z             {
2026-06-17T06:47:32.0749568Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-17T06:47:32.0749869Z               "line": 242
2026-06-17T06:47:32.0750143Z             },
2026-06-17T06:47:32.0750437Z             {
2026-06-17T06:47:32.0750809Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-17T06:47:32.0751086Z               "line": 256
2026-06-17T06:47:32.0751347Z             },
2026-06-17T06:47:32.0751562Z             {
2026-06-17T06:47:32.0751862Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-17T06:47:32.0752073Z               "line": 270
2026-06-17T06:47:32.0752263Z             },
2026-06-17T06:47:32.0752450Z             {
2026-06-17T06:47:32.0752729Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-17T06:47:32.0752927Z               "line": 277
2026-06-17T06:47:32.0753128Z             },
2026-06-17T06:47:32.0753313Z             {
2026-06-17T06:47:32.0753585Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-17T06:47:32.0753776Z               "line": 295
2026-06-17T06:47:32.0753948Z             },
2026-06-17T06:47:32.0754129Z             {
2026-06-17T06:47:32.0754381Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-17T06:47:32.0754562Z               "line": 968
2026-06-17T06:47:32.0754882Z             },
2026-06-17T06:47:32.0755058Z             {
2026-06-17T06:47:32.0755312Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-17T06:47:32.0755505Z               "line": 1051
2026-06-17T06:47:32.0755688Z             },
2026-06-17T06:47:32.0755863Z             {
2026-06-17T06:47:32.0756120Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-17T06:47:32.0756307Z               "line": 1121
2026-06-17T06:47:32.0756478Z             },
2026-06-17T06:47:32.0756646Z             {
2026-06-17T06:47:32.0756993Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-17T06:47:32.0757190Z               "line": 1182
2026-06-17T06:47:32.0757370Z             },
2026-06-17T06:47:32.0757547Z             {
2026-06-17T06:47:32.0757798Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-17T06:47:32.0757982Z               "line": 1238
2026-06-17T06:47:32.0758172Z             },
2026-06-17T06:47:32.0758344Z             {
2026-06-17T06:47:32.0758606Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-17T06:47:32.0758779Z               "line": 1457
2026-06-17T06:47:32.0758921Z             }
2026-06-17T06:47:32.0759208Z           ]
2026-06-17T06:47:32.0759355Z         }
2026-06-17T06:47:32.0759508Z       }
2026-06-17T06:47:32.0759655Z     },
2026-06-17T06:47:32.0759799Z     {
2026-06-17T06:47:32.0759969Z       "id": "REQ-PAIR-2",
2026-06-17T06:47:32.0760203Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-17T06:47:32.0760391Z       "requiredStages": [],
2026-06-17T06:47:32.0760551Z       "stages": {
2026-06-17T06:47:32.0760704Z         "doc": {
2026-06-17T06:47:32.0760873Z           "complete": false,
2026-06-17T06:47:32.0761044Z           "evidence": []
2026-06-17T06:47:32.0761197Z         },
2026-06-17T06:47:32.0761355Z         "impl": {
2026-06-17T06:47:32.0761530Z           "complete": false,
2026-06-17T06:47:32.0761694Z           "evidence": []
2026-06-17T06:47:32.0761850Z         },
2026-06-17T06:47:32.0762008Z         "int": {
2026-06-17T06:47:32.0762183Z           "complete": false,
2026-06-17T06:47:32.0762352Z           "evidence": []
2026-06-17T06:47:32.0762498Z         },
2026-06-17T06:47:32.0762657Z         "unit": {
2026-06-17T06:47:32.0762823Z           "complete": false,
2026-06-17T06:47:32.0762986Z           "evidence": []
2026-06-17T06:47:32.0763132Z         }
2026-06-17T06:47:32.0763279Z       }
2026-06-17T06:47:32.0763411Z     },
2026-06-17T06:47:32.0763559Z     {
2026-06-17T06:47:32.0763730Z       "id": "REQ-PAIR-3",
2026-06-17T06:47:32.0763979Z       "title": "Fetch current pairing code from any paired node",
2026-06-17T06:47:32.0764154Z       "requiredStages": [
2026-06-17T06:47:32.0764302Z         "impl",
2026-06-17T06:47:32.0764459Z         "unit"
2026-06-17T06:47:32.0764608Z       ],
2026-06-17T06:47:32.0764760Z       "stages": {
2026-06-17T06:47:32.0764923Z         "doc": {
2026-06-17T06:47:32.0765089Z           "complete": false,
2026-06-17T06:47:32.0765266Z           "evidence": []
2026-06-17T06:47:32.0765414Z         },
2026-06-17T06:47:32.0765572Z         "impl": {
2026-06-17T06:47:32.0765748Z           "complete": true,
2026-06-17T06:47:32.0765905Z           "evidence": [
2026-06-17T06:47:32.0766065Z             {
2026-06-17T06:47:32.0766262Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0766433Z               "line": 2983
2026-06-17T06:47:32.0766581Z             },
2026-06-17T06:47:32.0766738Z             {
2026-06-17T06:47:32.0766920Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0767091Z               "line": 3052
2026-06-17T06:47:32.0767248Z             },
2026-06-17T06:47:32.0767392Z             {
2026-06-17T06:47:32.0767582Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0767736Z               "line": 3433
2026-06-17T06:47:32.0767882Z             },
2026-06-17T06:47:32.0768031Z             {
2026-06-17T06:47:32.0768211Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0768495Z               "line": 4678
2026-06-17T06:47:32.0768641Z             }
2026-06-17T06:47:32.0768800Z           ]
2026-06-17T06:47:32.0769043Z         },
2026-06-17T06:47:32.0769224Z         "int": {
2026-06-17T06:47:32.0769401Z           "complete": false,
2026-06-17T06:47:32.0769557Z           "evidence": []
2026-06-17T06:47:32.0769711Z         },
2026-06-17T06:47:32.0769862Z         "unit": {
2026-06-17T06:47:32.0770025Z           "complete": true,
2026-06-17T06:47:32.0770182Z           "evidence": [
2026-06-17T06:47:32.0770331Z             {
2026-06-17T06:47:32.0770632Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0770787Z               "line": 9188
2026-06-17T06:47:32.0770937Z             },
2026-06-17T06:47:32.0771088Z             {
2026-06-17T06:47:32.0771273Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0771438Z               "line": 9403
2026-06-17T06:47:32.0771581Z             },
2026-06-17T06:47:32.0771724Z             {
2026-06-17T06:47:32.0771910Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0772067Z               "line": 10045
2026-06-17T06:47:32.0772211Z             },
2026-06-17T06:47:32.0772363Z             {
2026-06-17T06:47:32.0772535Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0772702Z               "line": 10064
2026-06-17T06:47:32.0772855Z             },
2026-06-17T06:47:32.0773001Z             {
2026-06-17T06:47:32.0773184Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0773344Z               "line": 10088
2026-06-17T06:47:32.0773499Z             },
2026-06-17T06:47:32.0773645Z             {
2026-06-17T06:47:32.0773839Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0774009Z               "line": 10107
2026-06-17T06:47:32.0774157Z             },
2026-06-17T06:47:32.0774305Z             {
2026-06-17T06:47:32.0774487Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0774652Z               "line": 10120
2026-06-17T06:47:32.0774801Z             },
2026-06-17T06:47:32.0774949Z             {
2026-06-17T06:47:32.0775135Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0775296Z               "line": 10129
2026-06-17T06:47:32.0775450Z             }
2026-06-17T06:47:32.0775592Z           ]
2026-06-17T06:47:32.0775741Z         }
2026-06-17T06:47:32.0775887Z       }
2026-06-17T06:47:32.0776037Z     },
2026-06-17T06:47:32.0776192Z     {
2026-06-17T06:47:32.0776361Z       "id": "REQ-PAIR-4",
2026-06-17T06:47:32.0776559Z       "title": "Subnet naming on first pairing",
2026-06-17T06:47:32.0776736Z       "requiredStages": [
2026-06-17T06:47:32.0776892Z         "impl",
2026-06-17T06:47:32.0777056Z         "unit"
2026-06-17T06:47:32.0777217Z       ],
2026-06-17T06:47:32.0777371Z       "stages": {
2026-06-17T06:47:32.0777546Z         "doc": {
2026-06-17T06:47:32.0777714Z           "complete": false,
2026-06-17T06:47:32.0777865Z           "evidence": []
2026-06-17T06:47:32.0778010Z         },
2026-06-17T06:47:32.0778156Z         "impl": {
2026-06-17T06:47:32.0778320Z           "complete": true,
2026-06-17T06:47:32.0778476Z           "evidence": [
2026-06-17T06:47:32.0778615Z             {
2026-06-17T06:47:32.0778823Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-17T06:47:32.0779069Z               "line": 174
2026-06-17T06:47:32.0779221Z             }
2026-06-17T06:47:32.0779365Z           ]
2026-06-17T06:47:32.0779511Z         },
2026-06-17T06:47:32.0779661Z         "int": {
2026-06-17T06:47:32.0779821Z           "complete": false,
2026-06-17T06:47:32.0779984Z           "evidence": []
2026-06-17T06:47:32.0780122Z         },
2026-06-17T06:47:32.0780275Z         "unit": {
2026-06-17T06:47:32.0780432Z           "complete": true,
2026-06-17T06:47:32.0780595Z           "evidence": [
2026-06-17T06:47:32.0780747Z             {
2026-06-17T06:47:32.0780957Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-17T06:47:32.0781109Z               "line": 1294
2026-06-17T06:47:32.0781248Z             }
2026-06-17T06:47:32.0781391Z           ]
2026-06-17T06:47:32.0781653Z         }
2026-06-17T06:47:32.0781799Z       }
2026-06-17T06:47:32.0781946Z     },
2026-06-17T06:47:32.0782093Z     {
2026-06-17T06:47:32.0782265Z       "id": "REQ-PAIR-5",
2026-06-17T06:47:32.0782703Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-17T06:47:32.0782871Z       "requiredStages": [
2026-06-17T06:47:32.0783017Z         "impl",
2026-06-17T06:47:32.0783171Z         "unit",
2026-06-17T06:47:32.0783323Z         "int"
2026-06-17T06:47:32.0783561Z       ],
2026-06-17T06:47:32.0783710Z       "stages": {
2026-06-17T06:47:32.0783853Z         "doc": {
2026-06-17T06:47:32.0784020Z           "complete": false,
2026-06-17T06:47:32.0784182Z           "evidence": []
2026-06-17T06:47:32.0784328Z         },
2026-06-17T06:47:32.0784475Z         "impl": {
2026-06-17T06:47:32.0784631Z           "complete": true,
2026-06-17T06:47:32.0784794Z           "evidence": [
2026-06-17T06:47:32.0784941Z             {
2026-06-17T06:47:32.0785161Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-17T06:47:32.0785318Z               "line": 44
2026-06-17T06:47:32.0785466Z             },
2026-06-17T06:47:32.0785609Z             {
2026-06-17T06:47:32.0785814Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-17T06:47:32.0785977Z               "line": 96
2026-06-17T06:47:32.0786124Z             },
2026-06-17T06:47:32.0786277Z             {
2026-06-17T06:47:32.0786491Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-17T06:47:32.0786654Z               "line": 107
2026-06-17T06:47:32.0786806Z             },
2026-06-17T06:47:32.0786954Z             {
2026-06-17T06:47:32.0787162Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-17T06:47:32.0787320Z               "line": 124
2026-06-17T06:47:32.0787472Z             },
2026-06-17T06:47:32.0787616Z             {
2026-06-17T06:47:32.0787825Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-17T06:47:32.0787997Z               "line": 155
2026-06-17T06:47:32.0788144Z             },
2026-06-17T06:47:32.0788283Z             {
2026-06-17T06:47:32.0788487Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-17T06:47:32.0788654Z               "line": 195
2026-06-17T06:47:32.0788802Z             },
2026-06-17T06:47:32.0789036Z             {
2026-06-17T06:47:32.0789302Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-17T06:47:32.0789478Z               "line": 251
2026-06-17T06:47:32.0789643Z             },
2026-06-17T06:47:32.0789781Z             {
2026-06-17T06:47:32.0790019Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-17T06:47:32.0790183Z               "line": 33
2026-06-17T06:47:32.0790329Z             },
2026-06-17T06:47:32.0790483Z             {
2026-06-17T06:47:32.0790711Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-17T06:47:32.0790869Z               "line": 45
2026-06-17T06:47:32.0791016Z             },
2026-06-17T06:47:32.0791164Z             {
2026-06-17T06:47:32.0791418Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-17T06:47:32.0791569Z               "line": 59
2026-06-17T06:47:32.0791723Z             },
2026-06-17T06:47:32.0791864Z             {
2026-06-17T06:47:32.0792081Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-17T06:47:32.0792236Z               "line": 376
2026-06-17T06:47:32.0792384Z             }
2026-06-17T06:47:32.0792534Z           ]
2026-06-17T06:47:32.0792686Z         },
2026-06-17T06:47:32.0792839Z         "int": {
2026-06-17T06:47:32.0793006Z           "complete": true,
2026-06-17T06:47:32.0793159Z           "evidence": [
2026-06-17T06:47:32.0793311Z             {
2026-06-17T06:47:32.0793525Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:32.0793689Z               "line": 885
2026-06-17T06:47:32.0793840Z             },
2026-06-17T06:47:32.0793980Z             {
2026-06-17T06:47:32.0794295Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-17T06:47:32.0794465Z               "line": 342
2026-06-17T06:47:32.0794609Z             }
2026-06-17T06:47:32.0794756Z           ]
2026-06-17T06:47:32.0794902Z         },
2026-06-17T06:47:32.0795054Z         "unit": {
2026-06-17T06:47:32.0795220Z           "complete": true,
2026-06-17T06:47:32.0795369Z           "evidence": [
2026-06-17T06:47:32.0795510Z             {
2026-06-17T06:47:32.0795717Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-17T06:47:32.0796002Z               "line": 293
2026-06-17T06:47:32.0796149Z             },
2026-06-17T06:47:32.0796298Z             {
2026-06-17T06:47:32.0796512Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-17T06:47:32.0796655Z               "line": 304
2026-06-17T06:47:32.0796803Z             },
2026-06-17T06:47:32.0796951Z             {
2026-06-17T06:47:32.0797172Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-17T06:47:32.0797336Z               "line": 406
2026-06-17T06:47:32.0797481Z             },
2026-06-17T06:47:32.0797632Z             {
2026-06-17T06:47:32.0797851Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-17T06:47:32.0798013Z               "line": 72
2026-06-17T06:47:32.0798156Z             },
2026-06-17T06:47:32.0798304Z             {
2026-06-17T06:47:32.0798538Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-17T06:47:32.0798690Z               "line": 82
2026-06-17T06:47:32.0798848Z             },
2026-06-17T06:47:32.0799106Z             {
2026-06-17T06:47:32.0799358Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-17T06:47:32.0799525Z               "line": 100
2026-06-17T06:47:32.0799673Z             },
2026-06-17T06:47:32.0799821Z             {
2026-06-17T06:47:32.0800039Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-17T06:47:32.0800203Z               "line": 110
2026-06-17T06:47:32.0800346Z             },
2026-06-17T06:47:32.0800495Z             {
2026-06-17T06:47:32.0800733Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-17T06:47:32.0800880Z               "line": 125
2026-06-17T06:47:32.0801029Z             },
2026-06-17T06:47:32.0801167Z             {
2026-06-17T06:47:32.0801377Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-17T06:47:32.0801524Z               "line": 1044
2026-06-17T06:47:32.0801668Z             },
2026-06-17T06:47:32.0801829Z             {
2026-06-17T06:47:32.0802035Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-17T06:47:32.0802196Z               "line": 1110
2026-06-17T06:47:32.0802341Z             },
2026-06-17T06:47:32.0802487Z             {
2026-06-17T06:47:32.0802698Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-17T06:47:32.0802857Z               "line": 1357
2026-06-17T06:47:32.0803006Z             }
2026-06-17T06:47:32.0803146Z           ]
2026-06-17T06:47:32.0803295Z         }
2026-06-17T06:47:32.0803447Z       }
2026-06-17T06:47:32.0803596Z     },
2026-06-17T06:47:32.0803800Z     {
2026-06-17T06:47:32.0803967Z       "id": "REQ-PAIR-6",
2026-06-17T06:47:32.0804343Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-17T06:47:32.0804506Z       "requiredStages": [
2026-06-17T06:47:32.0804658Z         "impl",
2026-06-17T06:47:32.0804806Z         "unit"
2026-06-17T06:47:32.0804954Z       ],
2026-06-17T06:47:32.0805097Z       "stages": {
2026-06-17T06:47:32.0805250Z         "doc": {
2026-06-17T06:47:32.0805415Z           "complete": false,
2026-06-17T06:47:32.0805567Z           "evidence": []
2026-06-17T06:47:32.0805717Z         },
2026-06-17T06:47:32.0805871Z         "impl": {
2026-06-17T06:47:32.0806037Z           "complete": true,
2026-06-17T06:47:32.0806196Z           "evidence": [
2026-06-17T06:47:32.0806347Z             {
2026-06-17T06:47:32.0806648Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0806811Z               "line": 3052
2026-06-17T06:47:32.0806963Z             },
2026-06-17T06:47:32.0807102Z             {
2026-06-17T06:47:32.0807287Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0807445Z               "line": 3433
2026-06-17T06:47:32.0807587Z             },
2026-06-17T06:47:32.0807741Z             {
2026-06-17T06:47:32.0807921Z               "path": "crates/spt/src/elevation.rs",
2026-06-17T06:47:32.0808080Z               "line": 18
2026-06-17T06:47:32.0808330Z             },
2026-06-17T06:47:32.0808469Z             {
2026-06-17T06:47:32.0808659Z               "path": "crates/spt/src/elevation.rs",
2026-06-17T06:47:32.0808817Z               "line": 49
2026-06-17T06:47:32.0809041Z             },
2026-06-17T06:47:32.0809441Z             {
2026-06-17T06:47:32.0809738Z               "path": "crates/spt/src/elevation.rs",
2026-06-17T06:47:32.0809898Z               "line": 318
2026-06-17T06:47:32.0810062Z             }
2026-06-17T06:47:32.0810228Z           ]
2026-06-17T06:47:32.0810372Z         },
2026-06-17T06:47:32.0810527Z         "int": {
2026-06-17T06:47:32.0810689Z           "complete": false,
2026-06-17T06:47:32.0810854Z           "evidence": []
2026-06-17T06:47:32.0810998Z         },
2026-06-17T06:47:32.0811159Z         "unit": {
2026-06-17T06:47:32.0811322Z           "complete": true,
2026-06-17T06:47:32.0811483Z           "evidence": [
2026-06-17T06:47:32.0811623Z             {
2026-06-17T06:47:32.0811812Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0811984Z               "line": 10142
2026-06-17T06:47:32.0812131Z             },
2026-06-17T06:47:32.0812281Z             {
2026-06-17T06:47:32.0812470Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0812633Z               "line": 10159
2026-06-17T06:47:32.0812785Z             },
2026-06-17T06:47:32.0812934Z             {
2026-06-17T06:47:32.0813129Z               "path": "crates/spt/src/elevation.rs",
2026-06-17T06:47:32.0813281Z               "line": 383
2026-06-17T06:47:32.0813427Z             },
2026-06-17T06:47:32.0813575Z             {
2026-06-17T06:47:32.0813763Z               "path": "crates/spt/src/elevation.rs",
2026-06-17T06:47:32.0813941Z               "line": 392
2026-06-17T06:47:32.0814088Z             }
2026-06-17T06:47:32.0814236Z           ]
2026-06-17T06:47:32.0814379Z         }
2026-06-17T06:47:32.0814523Z       }
2026-06-17T06:47:32.0814655Z     },
2026-06-17T06:47:32.0814809Z     {
2026-06-17T06:47:32.0814975Z       "id": "REQ-PAIR-7",
2026-06-17T06:47:32.0815246Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-17T06:47:32.0815410Z       "requiredStages": [],
2026-06-17T06:47:32.0815561Z       "stages": {
2026-06-17T06:47:32.0815711Z         "doc": {
2026-06-17T06:47:32.0815880Z           "complete": false,
2026-06-17T06:47:32.0816046Z           "evidence": []
2026-06-17T06:47:32.0816202Z         },
2026-06-17T06:47:32.0816350Z         "impl": {
2026-06-17T06:47:32.0816517Z           "complete": false,
2026-06-17T06:47:32.0816674Z           "evidence": []
2026-06-17T06:47:32.0816818Z         },
2026-06-17T06:47:32.0816969Z         "int": {
2026-06-17T06:47:32.0817137Z           "complete": false,
2026-06-17T06:47:32.0817294Z           "evidence": []
2026-06-17T06:47:32.0817437Z         },
2026-06-17T06:47:32.0817584Z         "unit": {
2026-06-17T06:47:32.0817752Z           "complete": false,
2026-06-17T06:47:32.0817909Z           "evidence": []
2026-06-17T06:47:32.0818052Z         }
2026-06-17T06:47:32.0818209Z       }
2026-06-17T06:47:32.0818358Z     },
2026-06-17T06:47:32.0818500Z     {
2026-06-17T06:47:32.0818668Z       "id": "REQ-PAIR-8",
2026-06-17T06:47:32.0820716Z       "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-17T06:47:32.0820894Z       "requiredStages": [
2026-06-17T06:47:32.0821044Z         "impl",
2026-06-17T06:47:32.0821192Z         "unit"
2026-06-17T06:47:32.0821352Z       ],
2026-06-17T06:47:32.0821505Z       "stages": {
2026-06-17T06:47:32.0821658Z         "doc": {
2026-06-17T06:47:32.0821815Z           "complete": false,
2026-06-17T06:47:32.0821972Z           "evidence": []
2026-06-17T06:47:32.0822120Z         },
2026-06-17T06:47:32.0822420Z         "impl": {
2026-06-17T06:47:32.0822592Z           "complete": true,
2026-06-17T06:47:32.0822739Z           "evidence": [
2026-06-17T06:47:32.0822887Z             {
2026-06-17T06:47:32.0823103Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-17T06:47:32.0823269Z               "line": 577
2026-06-17T06:47:32.0823422Z             },
2026-06-17T06:47:32.0823559Z             {
2026-06-17T06:47:32.0823780Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-17T06:47:32.0823931Z               "line": 22
2026-06-17T06:47:32.0824083Z             },
2026-06-17T06:47:32.0824248Z             {
2026-06-17T06:47:32.0824458Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-17T06:47:32.0824619Z               "line": 76
2026-06-17T06:47:32.0824759Z             },
2026-06-17T06:47:32.0824915Z             {
2026-06-17T06:47:32.0825125Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-17T06:47:32.0825302Z               "line": 127
2026-06-17T06:47:32.0825449Z             }
2026-06-17T06:47:32.0825597Z           ]
2026-06-17T06:47:32.0825750Z         },
2026-06-17T06:47:32.0825893Z         "int": {
2026-06-17T06:47:32.0826060Z           "complete": false,
2026-06-17T06:47:32.0826227Z           "evidence": []
2026-06-17T06:47:32.0826371Z         },
2026-06-17T06:47:32.0826521Z         "unit": {
2026-06-17T06:47:32.0826679Z           "complete": true,
2026-06-17T06:47:32.0826838Z           "evidence": [
2026-06-17T06:47:32.0826987Z             {
2026-06-17T06:47:32.0827229Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-17T06:47:32.0827383Z               "line": 183
2026-06-17T06:47:32.0827524Z             },
2026-06-17T06:47:32.0827668Z             {
2026-06-17T06:47:32.0827878Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-17T06:47:32.0828035Z               "line": 195
2026-06-17T06:47:32.0828173Z             },
2026-06-17T06:47:32.0828317Z             {
2026-06-17T06:47:32.0828537Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-17T06:47:32.0828693Z               "line": 211
2026-06-17T06:47:32.0828886Z             },
2026-06-17T06:47:32.0829113Z             {
2026-06-17T06:47:32.0829331Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-17T06:47:32.0829488Z               "line": 227
2026-06-17T06:47:32.0829641Z             }
2026-06-17T06:47:32.0829779Z           ]
2026-06-17T06:47:32.0829928Z         }
2026-06-17T06:47:32.0830074Z       }
2026-06-17T06:47:32.0830214Z     },
2026-06-17T06:47:32.0830356Z     {
2026-06-17T06:47:32.0830523Z       "id": "REQ-PRES-1",
2026-06-17T06:47:32.0832190Z       "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-17T06:47:32.0832370Z       "requiredStages": [
2026-06-17T06:47:32.0832513Z         "impl",
2026-06-17T06:47:32.0832665Z         "unit",
2026-06-17T06:47:32.0832813Z         "int"
2026-06-17T06:47:32.0832956Z       ],
2026-06-17T06:47:32.0833105Z       "stages": {
2026-06-17T06:47:32.0833256Z         "doc": {
2026-06-17T06:47:32.0833419Z           "complete": true,
2026-06-17T06:47:32.0833673Z           "evidence": [
2026-06-17T06:47:32.0833819Z             {
2026-06-17T06:47:32.0833983Z               "path": "docs/DEFERRED.md",
2026-06-17T06:47:32.0834138Z               "line": 11
2026-06-17T06:47:32.0834288Z             }
2026-06-17T06:47:32.0834434Z           ]
2026-06-17T06:47:32.0834586Z         },
2026-06-17T06:47:32.0834737Z         "impl": {
2026-06-17T06:47:32.0834903Z           "complete": true,
2026-06-17T06:47:32.0839553Z           "evidence": [
2026-06-17T06:47:32.0839731Z             {
2026-06-17T06:47:32.0840116Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-17T06:47:32.0840282Z               "line": 515
2026-06-17T06:47:32.0840431Z             },
2026-06-17T06:47:32.0840578Z             {
2026-06-17T06:47:32.0840793Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-17T06:47:32.0840940Z               "line": 567
2026-06-17T06:47:32.0841083Z             },
2026-06-17T06:47:32.0841231Z             {
2026-06-17T06:47:32.0841446Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:32.0841603Z               "line": 188
2026-06-17T06:47:32.0841742Z             },
2026-06-17T06:47:32.0841884Z             {
2026-06-17T06:47:32.0842066Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:32.0842231Z               "line": 214
2026-06-17T06:47:32.0842369Z             },
2026-06-17T06:47:32.0842510Z             {
2026-06-17T06:47:32.0842721Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-17T06:47:32.0842882Z               "line": 28
2026-06-17T06:47:32.0843040Z             },
2026-06-17T06:47:32.0843182Z             {
2026-06-17T06:47:32.0843398Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-17T06:47:32.0843550Z               "line": 105
2026-06-17T06:47:32.0843703Z             },
2026-06-17T06:47:32.0843850Z             {
2026-06-17T06:47:32.0844046Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-17T06:47:32.0844219Z               "line": 161
2026-06-17T06:47:32.0844360Z             },
2026-06-17T06:47:32.0844509Z             {
2026-06-17T06:47:32.0844723Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-17T06:47:32.0844881Z               "line": 180
2026-06-17T06:47:32.0845027Z             },
2026-06-17T06:47:32.0845170Z             {
2026-06-17T06:47:32.0845401Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.0845565Z               "line": 415
2026-06-17T06:47:32.0845711Z             },
2026-06-17T06:47:32.0845870Z             {
2026-06-17T06:47:32.0846083Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-17T06:47:32.0846246Z               "line": 289
2026-06-17T06:47:32.0846383Z             },
2026-06-17T06:47:32.0846523Z             {
2026-06-17T06:47:32.0846732Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-17T06:47:32.0846899Z               "line": 336
2026-06-17T06:47:32.0847042Z             },
2026-06-17T06:47:32.0847190Z             {
2026-06-17T06:47:32.0847401Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-17T06:47:32.0847552Z               "line": 362
2026-06-17T06:47:32.0847693Z             },
2026-06-17T06:47:32.0847836Z             {
2026-06-17T06:47:32.0848040Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:32.0848202Z               "line": 100
2026-06-17T06:47:32.0848345Z             }
2026-06-17T06:47:32.0848498Z           ]
2026-06-17T06:47:32.0848636Z         },
2026-06-17T06:47:32.0848793Z         "int": {
2026-06-17T06:47:32.0849056Z           "complete": true,
2026-06-17T06:47:32.0849221Z           "evidence": [
2026-06-17T06:47:32.0849366Z             {
2026-06-17T06:47:32.0849580Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-17T06:47:32.0849738Z               "line": 559
2026-06-17T06:47:32.0849885Z             },
2026-06-17T06:47:32.0850030Z             {
2026-06-17T06:47:32.0850224Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:32.0850480Z               "line": 745
2026-06-17T06:47:32.0850623Z             },
2026-06-17T06:47:32.0850771Z             {
2026-06-17T06:47:32.0850967Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:32.0851128Z               "line": 1163
2026-06-17T06:47:32.0851277Z             }
2026-06-17T06:47:32.0851410Z           ]
2026-06-17T06:47:32.0851563Z         },
2026-06-17T06:47:32.0851720Z         "unit": {
2026-06-17T06:47:32.0851873Z           "complete": true,
2026-06-17T06:47:32.0852030Z           "evidence": [
2026-06-17T06:47:32.0852260Z             {
2026-06-17T06:47:32.0852464Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:32.0852612Z               "line": 674
2026-06-17T06:47:32.0852758Z             },
2026-06-17T06:47:32.0852906Z             {
2026-06-17T06:47:32.0853103Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-17T06:47:32.0853267Z               "line": 238
2026-06-17T06:47:32.0853409Z             },
2026-06-17T06:47:32.0853562Z             {
2026-06-17T06:47:32.0853766Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-17T06:47:32.0853910Z               "line": 269
2026-06-17T06:47:32.0854062Z             },
2026-06-17T06:47:32.0854196Z             {
2026-06-17T06:47:32.0854396Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-17T06:47:32.0854558Z               "line": 305
2026-06-17T06:47:32.0854696Z             },
2026-06-17T06:47:32.0854854Z             {
2026-06-17T06:47:32.0855045Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-17T06:47:32.0855207Z               "line": 336
2026-06-17T06:47:32.0855345Z             },
2026-06-17T06:47:32.0855484Z             {
2026-06-17T06:47:32.0855697Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.0855862Z               "line": 1165
2026-06-17T06:47:32.0856009Z             },
2026-06-17T06:47:32.0856153Z             {
2026-06-17T06:47:32.0856362Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:32.0856520Z               "line": 1131
2026-06-17T06:47:32.0856662Z             }
2026-06-17T06:47:32.0856806Z           ]
2026-06-17T06:47:32.0856948Z         }
2026-06-17T06:47:32.0857083Z       }
2026-06-17T06:47:32.0857221Z     },
2026-06-17T06:47:32.0857364Z     {
2026-06-17T06:47:32.0857511Z       "id": "REQ-RC-1",
2026-06-17T06:47:32.0859964Z       "title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).",
2026-06-17T06:47:32.0860135Z       "requiredStages": [
2026-06-17T06:47:32.0860279Z         "impl",
2026-06-17T06:47:32.0860430Z         "unit",
2026-06-17T06:47:32.0860580Z         "int"
2026-06-17T06:47:32.0860722Z       ],
2026-06-17T06:47:32.0860871Z       "stages": {
2026-06-17T06:47:32.0861021Z         "doc": {
2026-06-17T06:47:32.0861188Z           "complete": false,
2026-06-17T06:47:32.0861336Z           "evidence": []
2026-06-17T06:47:32.0861469Z         },
2026-06-17T06:47:32.0861613Z         "impl": {
2026-06-17T06:47:32.0861784Z           "complete": true,
2026-06-17T06:47:32.0861942Z           "evidence": [
2026-06-17T06:47:32.0862084Z             {
2026-06-17T06:47:32.0862280Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-17T06:47:32.0862428Z               "line": 895
2026-06-17T06:47:32.0862580Z             },
2026-06-17T06:47:32.0862723Z             {
2026-06-17T06:47:32.0863047Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:32.0863205Z               "line": 1168
2026-06-17T06:47:32.0863351Z             },
2026-06-17T06:47:32.0863504Z             {
2026-06-17T06:47:32.0863697Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:32.0863856Z               "line": 967
2026-06-17T06:47:32.0863988Z             },
2026-06-17T06:47:32.0864132Z             {
2026-06-17T06:47:32.0864336Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:32.0864499Z               "line": 1001
2026-06-17T06:47:32.0864785Z             },
2026-06-17T06:47:32.0864923Z             {
2026-06-17T06:47:32.0865095Z               "path": "crates/spt/src/rc.rs",
2026-06-17T06:47:32.0865242Z               "line": 22
2026-06-17T06:47:32.0865386Z             },
2026-06-17T06:47:32.0865529Z             {
2026-06-17T06:47:32.0865701Z               "path": "crates/spt/src/rc.rs",
2026-06-17T06:47:32.0865858Z               "line": 181
2026-06-17T06:47:32.0865988Z             }
2026-06-17T06:47:32.0866143Z           ]
2026-06-17T06:47:32.0866285Z         },
2026-06-17T06:47:32.0866431Z         "int": {
2026-06-17T06:47:32.0866593Z           "complete": true,
2026-06-17T06:47:32.0866737Z           "evidence": [
2026-06-17T06:47:32.0866884Z             {
2026-06-17T06:47:32.0867085Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-17T06:47:32.0867247Z               "line": 252
2026-06-17T06:47:32.0867390Z             },
2026-06-17T06:47:32.0867528Z             {
2026-06-17T06:47:32.0867723Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-17T06:47:32.0867876Z               "line": 279
2026-06-17T06:47:32.0868024Z             },
2026-06-17T06:47:32.0868167Z             {
2026-06-17T06:47:32.0868376Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-17T06:47:32.0868526Z               "line": 404
2026-06-17T06:47:32.0868672Z             }
2026-06-17T06:47:32.0868823Z           ]
2026-06-17T06:47:32.0869032Z         },
2026-06-17T06:47:32.0869174Z         "unit": {
2026-06-17T06:47:32.0869337Z           "complete": true,
2026-06-17T06:47:32.0869504Z           "evidence": [
2026-06-17T06:47:32.0869647Z             {
2026-06-17T06:47:32.0869842Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:32.0870004Z               "line": 1327
2026-06-17T06:47:32.0870148Z             },
2026-06-17T06:47:32.0870285Z             {
2026-06-17T06:47:32.0870458Z               "path": "crates/spt/src/rc.rs",
2026-06-17T06:47:32.0870610Z               "line": 421
2026-06-17T06:47:32.0870768Z             },
2026-06-17T06:47:32.0870910Z             {
2026-06-17T06:47:32.0871093Z               "path": "crates/spt/src/rc.rs",
2026-06-17T06:47:32.0871243Z               "line": 450
2026-06-17T06:47:32.0871393Z             },
2026-06-17T06:47:32.0871525Z             {
2026-06-17T06:47:32.0871700Z               "path": "crates/spt/src/rc.rs",
2026-06-17T06:47:32.0871859Z               "line": 463
2026-06-17T06:47:32.0871996Z             }
2026-06-17T06:47:32.0872149Z           ]
2026-06-17T06:47:32.0872291Z         }
2026-06-17T06:47:32.0872436Z       }
2026-06-17T06:47:32.0872573Z     },
2026-06-17T06:47:32.0872712Z     {
2026-06-17T06:47:32.0872874Z       "id": "REQ-RCVIEW-1",
2026-06-17T06:47:32.0878245Z       "title": "Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).",
2026-06-17T06:47:32.0878522Z       "requiredStages": [
2026-06-17T06:47:32.0878670Z         "doc",
2026-06-17T06:47:32.0878818Z         "impl",
2026-06-17T06:47:32.0879062Z         "unit",
2026-06-17T06:47:32.0879204Z         "int"
2026-06-17T06:47:32.0879355Z       ],
2026-06-17T06:47:32.0879507Z       "stages": {
2026-06-17T06:47:32.0879662Z         "doc": {
2026-06-17T06:47:32.0879812Z           "complete": true,
2026-06-17T06:47:32.0879963Z           "evidence": [
2026-06-17T06:47:32.0880102Z             {
2026-06-17T06:47:32.0880273Z               "path": "CONTEXT.md",
2026-06-17T06:47:32.0880431Z               "line": 330
2026-06-17T06:47:32.0880578Z             }
2026-06-17T06:47:32.0880722Z           ]
2026-06-17T06:47:32.0880855Z         },
2026-06-17T06:47:32.0880998Z         "impl": {
2026-06-17T06:47:32.0881160Z           "complete": true,
2026-06-17T06:47:32.0881313Z           "evidence": [
2026-06-17T06:47:32.0881456Z             {
2026-06-17T06:47:32.0881657Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-17T06:47:32.0881822Z               "line": 323
2026-06-17T06:47:32.0881962Z             },
2026-06-17T06:47:32.0882104Z             {
2026-06-17T06:47:32.0882299Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:32.0882452Z               "line": 430
2026-06-17T06:47:32.0882604Z             },
2026-06-17T06:47:32.0882743Z             {
2026-06-17T06:47:32.0882943Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:32.0883100Z               "line": 441
2026-06-17T06:47:32.0883253Z             },
2026-06-17T06:47:32.0883400Z             {
2026-06-17T06:47:32.0883596Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-17T06:47:32.0883744Z               "line": 41
2026-06-17T06:47:32.0883888Z             },
2026-06-17T06:47:32.0884029Z             {
2026-06-17T06:47:32.0884226Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-17T06:47:32.0884372Z               "line": 62
2026-06-17T06:47:32.0884520Z             },
2026-06-17T06:47:32.0884666Z             {
2026-06-17T06:47:32.0884861Z               "path": "crates/spt-store/src/info.rs",
2026-06-17T06:47:32.0885009Z               "line": 286
2026-06-17T06:47:32.0885151Z             },
2026-06-17T06:47:32.0885300Z             {
2026-06-17T06:47:32.0885476Z               "path": "crates/spt/src/rc.rs",
2026-06-17T06:47:32.0885624Z               "line": 181
2026-06-17T06:47:32.0885776Z             }
2026-06-17T06:47:32.0885929Z           ]
2026-06-17T06:47:32.0886072Z         },
2026-06-17T06:47:32.0886220Z         "int": {
2026-06-17T06:47:32.0886377Z           "complete": true,
2026-06-17T06:47:32.0886540Z           "evidence": [
2026-06-17T06:47:32.0886682Z             {
2026-06-17T06:47:32.0886878Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-17T06:47:32.0887045Z               "line": 789
2026-06-17T06:47:32.0887183Z             },
2026-06-17T06:47:32.0887334Z             {
2026-06-17T06:47:32.0887538Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-17T06:47:32.0887689Z               "line": 829
2026-06-17T06:47:32.0887838Z             },
2026-06-17T06:47:32.0887980Z             {
2026-06-17T06:47:32.0888182Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-17T06:47:32.0888429Z               "line": 876
2026-06-17T06:47:32.0888581Z             },
2026-06-17T06:47:32.0888716Z             {
2026-06-17T06:47:32.0888925Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-17T06:47:32.0889163Z               "line": 988
2026-06-17T06:47:32.0889307Z             }
2026-06-17T06:47:32.0889454Z           ]
2026-06-17T06:47:32.0889597Z         },
2026-06-17T06:47:32.0889745Z         "unit": {
2026-06-17T06:47:32.0889900Z           "complete": true,
2026-06-17T06:47:32.0890156Z           "evidence": [
2026-06-17T06:47:32.0890304Z             {
2026-06-17T06:47:32.0890509Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-17T06:47:32.0890667Z               "line": 175
2026-06-17T06:47:32.0890814Z             },
2026-06-17T06:47:32.0890958Z             {
2026-06-17T06:47:32.0891157Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-17T06:47:32.0891306Z               "line": 195
2026-06-17T06:47:32.0891453Z             }
2026-06-17T06:47:32.0891598Z           ]
2026-06-17T06:47:32.0891749Z         }
2026-06-17T06:47:32.0891888Z       }
2026-06-17T06:47:32.0892025Z     },
2026-06-17T06:47:32.0892159Z     {
2026-06-17T06:47:32.0892326Z       "id": "REQ-REACH-1",
2026-06-17T06:47:32.0892566Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-17T06:47:32.0892730Z       "requiredStages": [
2026-06-17T06:47:32.0892874Z         "impl",
2026-06-17T06:47:32.0893021Z         "unit",
2026-06-17T06:47:32.0893164Z         "int"
2026-06-17T06:47:32.0893313Z       ],
2026-06-17T06:47:32.0893455Z       "stages": {
2026-06-17T06:47:32.0893608Z         "doc": {
2026-06-17T06:47:32.0893765Z           "complete": false,
2026-06-17T06:47:32.0893913Z           "evidence": []
2026-06-17T06:47:32.0894055Z         },
2026-06-17T06:47:32.0894204Z         "impl": {
2026-06-17T06:47:32.0894356Z           "complete": true,
2026-06-17T06:47:32.0894505Z           "evidence": [
2026-06-17T06:47:32.0894652Z             {
2026-06-17T06:47:32.0894857Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:32.0895008Z               "line": 430
2026-06-17T06:47:32.0895151Z             },
2026-06-17T06:47:32.0895287Z             {
2026-06-17T06:47:32.0895479Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-17T06:47:32.0895625Z               "line": 76
2026-06-17T06:47:32.0895774Z             },
2026-06-17T06:47:32.0895917Z             {
2026-06-17T06:47:32.0896108Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-17T06:47:32.0896264Z               "line": 222
2026-06-17T06:47:32.0896409Z             },
2026-06-17T06:47:32.0896546Z             {
2026-06-17T06:47:32.0896742Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-17T06:47:32.0896903Z               "line": 422
2026-06-17T06:47:32.0897043Z             },
2026-06-17T06:47:32.0897195Z             {
2026-06-17T06:47:32.0897382Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-17T06:47:32.0897542Z               "line": 529
2026-06-17T06:47:32.0897692Z             },
2026-06-17T06:47:32.0897837Z             {
2026-06-17T06:47:32.0898033Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-17T06:47:32.0898178Z               "line": 39
2026-06-17T06:47:32.0898317Z             },
2026-06-17T06:47:32.0898446Z             {
2026-06-17T06:47:32.0898642Z               "path": "crates/spt-store/src/info.rs",
2026-06-17T06:47:32.0898798Z               "line": 278
2026-06-17T06:47:32.0899013Z             },
2026-06-17T06:47:32.0899165Z             {
2026-06-17T06:47:32.0899360Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-17T06:47:32.0899527Z               "line": 88
2026-06-17T06:47:32.0899671Z             },
2026-06-17T06:47:32.0899809Z             {
2026-06-17T06:47:32.0899995Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-17T06:47:32.0900152Z               "line": 98
2026-06-17T06:47:32.0900305Z             },
2026-06-17T06:47:32.0900442Z             {
2026-06-17T06:47:32.0900750Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:32.0900903Z               "line": 229
2026-06-17T06:47:32.0901045Z             }
2026-06-17T06:47:32.0901179Z           ]
2026-06-17T06:47:32.0901322Z         },
2026-06-17T06:47:32.0901465Z         "int": {
2026-06-17T06:47:32.0901623Z           "complete": true,
2026-06-17T06:47:32.0901770Z           "evidence": [
2026-06-17T06:47:32.0901918Z             {
2026-06-17T06:47:32.0902133Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-17T06:47:32.0902376Z               "line": 415
2026-06-17T06:47:32.0902533Z             },
2026-06-17T06:47:32.0902681Z             {
2026-06-17T06:47:32.0902881Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-17T06:47:32.0903029Z               "line": 516
2026-06-17T06:47:32.0903177Z             },
2026-06-17T06:47:32.0903314Z             {
2026-06-17T06:47:32.0903506Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:32.0903671Z               "line": 996
2026-06-17T06:47:32.0903811Z             },
2026-06-17T06:47:32.0903953Z             {
2026-06-17T06:47:32.0904149Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:32.0904300Z               "line": 1381
2026-06-17T06:47:32.0904449Z             }
2026-06-17T06:47:32.0904592Z           ]
2026-06-17T06:47:32.0904736Z         },
2026-06-17T06:47:32.0904874Z         "unit": {
2026-06-17T06:47:32.0905037Z           "complete": true,
2026-06-17T06:47:32.0905178Z           "evidence": [
2026-06-17T06:47:32.0905317Z             {
2026-06-17T06:47:32.0905516Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-17T06:47:32.0905669Z               "line": 639
2026-06-17T06:47:32.0905814Z             },
2026-06-17T06:47:32.0905962Z             {
2026-06-17T06:47:32.0906148Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-17T06:47:32.0906301Z               "line": 660
2026-06-17T06:47:32.0906448Z             },
2026-06-17T06:47:32.0906596Z             {
2026-06-17T06:47:32.0906801Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-17T06:47:32.0906954Z               "line": 646
2026-06-17T06:47:32.0907097Z             },
2026-06-17T06:47:32.0907235Z             {
2026-06-17T06:47:32.0907435Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-17T06:47:32.0907584Z               "line": 93
2026-06-17T06:47:32.0907735Z             },
2026-06-17T06:47:32.0907885Z             {
2026-06-17T06:47:32.0908084Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-17T06:47:32.0908247Z               "line": 224
2026-06-17T06:47:32.0908383Z             },
2026-06-17T06:47:32.0908536Z             {
2026-06-17T06:47:32.0908724Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-17T06:47:32.0908877Z               "line": 96
2026-06-17T06:47:32.0909096Z             },
2026-06-17T06:47:32.0909240Z             {
2026-06-17T06:47:32.0909453Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-17T06:47:32.0909606Z               "line": 146
2026-06-17T06:47:32.0909749Z             },
2026-06-17T06:47:32.0909879Z             {
2026-06-17T06:47:32.0910059Z               "path": "crates/spt-store/src/info.rs",
2026-06-17T06:47:32.0910213Z               "line": 641
2026-06-17T06:47:32.0910354Z             },
2026-06-17T06:47:32.0910504Z             {
2026-06-17T06:47:32.0910689Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-17T06:47:32.0910838Z               "line": 118
2026-06-17T06:47:32.0910988Z             },
2026-06-17T06:47:32.0911136Z             {
2026-06-17T06:47:32.0911319Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-17T06:47:32.0911463Z               "line": 148
2026-06-17T06:47:32.0911615Z             },
2026-06-17T06:47:32.0911759Z             {
2026-06-17T06:47:32.0911948Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:32.0912098Z               "line": 924
2026-06-17T06:47:32.0912244Z             }
2026-06-17T06:47:32.0912388Z           ]
2026-06-17T06:47:32.0912635Z         }
2026-06-17T06:47:32.0912779Z       }
2026-06-17T06:47:32.0912902Z     },
2026-06-17T06:47:32.0913037Z     {
2026-06-17T06:47:32.0913198Z       "id": "REQ-REACH-2",
2026-06-17T06:47:32.0913441Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-17T06:47:32.0913609Z       "requiredStages": [],
2026-06-17T06:47:32.0913756Z       "stages": {
2026-06-17T06:47:32.0913897Z         "doc": {
2026-06-17T06:47:32.0914056Z           "complete": false,
2026-06-17T06:47:32.0914208Z           "evidence": []
2026-06-17T06:47:32.0914442Z         },
2026-06-17T06:47:32.0914585Z         "impl": {
2026-06-17T06:47:32.0914752Z           "complete": false,
2026-06-17T06:47:32.0914914Z           "evidence": []
2026-06-17T06:47:32.0915057Z         },
2026-06-17T06:47:32.0915204Z         "int": {
2026-06-17T06:47:32.0915357Z           "complete": false,
2026-06-17T06:47:32.0915500Z           "evidence": []
2026-06-17T06:47:32.0915648Z         },
2026-06-17T06:47:32.0915796Z         "unit": {
2026-06-17T06:47:32.0915949Z           "complete": false,
2026-06-17T06:47:32.0916100Z           "evidence": []
2026-06-17T06:47:32.0916239Z         }
2026-06-17T06:47:32.0916379Z       }
2026-06-17T06:47:32.0916517Z     },
2026-06-17T06:47:32.0916661Z     {
2026-06-17T06:47:32.0916808Z       "id": "REQ-REL-1",
2026-06-17T06:47:32.0917295Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-17T06:47:32.0917452Z       "requiredStages": [
2026-06-17T06:47:32.0917605Z         "doc",
2026-06-17T06:47:32.0917752Z         "impl"
2026-06-17T06:47:32.0917891Z       ],
2026-06-17T06:47:32.0918043Z       "stages": {
2026-06-17T06:47:32.0918192Z         "doc": {
2026-06-17T06:47:32.0918348Z           "complete": true,
2026-06-17T06:47:32.0918506Z           "evidence": [
2026-06-17T06:47:32.0918649Z             {
2026-06-17T06:47:32.0919048Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-17T06:47:32.0919209Z               "line": 3
2026-06-17T06:47:32.0919351Z             }
2026-06-17T06:47:32.0919499Z           ]
2026-06-17T06:47:32.0919632Z         },
2026-06-17T06:47:32.0919776Z         "impl": {
2026-06-17T06:47:32.0919928Z           "complete": true,
2026-06-17T06:47:32.0920072Z           "evidence": [
2026-06-17T06:47:32.0920215Z             {
2026-06-17T06:47:32.0920429Z               "path": ".github/workflows/docs-publish.yml",
2026-06-17T06:47:32.0920576Z               "line": 11
2026-06-17T06:47:32.0920725Z             },
2026-06-17T06:47:32.0920867Z             {
2026-06-17T06:47:32.0921049Z               "path": "crates/xtask/src/main.rs",
2026-06-17T06:47:32.0921211Z               "line": 265
2026-06-17T06:47:32.0921345Z             }
2026-06-17T06:47:32.0921486Z           ]
2026-06-17T06:47:32.0921624Z         },
2026-06-17T06:47:32.0921767Z         "int": {
2026-06-17T06:47:32.0921931Z           "complete": false,
2026-06-17T06:47:32.0922086Z           "evidence": []
2026-06-17T06:47:32.0922223Z         },
2026-06-17T06:47:32.0922366Z         "unit": {
2026-06-17T06:47:32.0922537Z           "complete": false,
2026-06-17T06:47:32.0922686Z           "evidence": []
2026-06-17T06:47:32.0922818Z         }
2026-06-17T06:47:32.0922958Z       }
2026-06-17T06:47:32.0923096Z     },
2026-06-17T06:47:32.0923239Z     {
2026-06-17T06:47:32.0923391Z       "id": "REQ-REL-2",
2026-06-17T06:47:32.0924015Z       "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-17T06:47:32.0924179Z       "requiredStages": [
2026-06-17T06:47:32.0924312Z         "impl",
2026-06-17T06:47:32.0924462Z         "int"
2026-06-17T06:47:32.0924602Z       ],
2026-06-17T06:47:32.0924744Z       "stages": {
2026-06-17T06:47:32.0924898Z         "doc": {
2026-06-17T06:47:32.0925054Z           "complete": true,
2026-06-17T06:47:32.0925317Z           "evidence": [
2026-06-17T06:47:32.0925460Z             {
2026-06-17T06:47:32.0925641Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-17T06:47:32.0925789Z               "line": 6
2026-06-17T06:47:32.0925936Z             }
2026-06-17T06:47:32.0926079Z           ]
2026-06-17T06:47:32.0926218Z         },
2026-06-17T06:47:32.0926365Z         "impl": {
2026-06-17T06:47:32.0926533Z           "complete": true,
2026-06-17T06:47:32.0926693Z           "evidence": [
2026-06-17T06:47:32.0926831Z             {
2026-06-17T06:47:32.0927029Z               "path": ".github/workflows/release.yml",
2026-06-17T06:47:32.0927278Z               "line": 16
2026-06-17T06:47:32.0927406Z             },
2026-06-17T06:47:32.0927550Z             {
2026-06-17T06:47:32.0927736Z               "path": "crates/xtask/src/main.rs",
2026-06-17T06:47:32.0927902Z               "line": 352
2026-06-17T06:47:32.0928046Z             },
2026-06-17T06:47:32.0928193Z             {
2026-06-17T06:47:32.0928375Z               "path": "crates/xtask/src/main.rs",
2026-06-17T06:47:32.0928522Z               "line": 426
2026-06-17T06:47:32.0928670Z             },
2026-06-17T06:47:32.0928808Z             {
2026-06-17T06:47:32.0929109Z               "path": "crates/xtask/src/main.rs",
2026-06-17T06:47:32.0929256Z               "line": 588
2026-06-17T06:47:32.0929405Z             },
2026-06-17T06:47:32.0929556Z             {
2026-06-17T06:47:32.0929736Z               "path": "crates/xtask/src/main.rs",
2026-06-17T06:47:32.0929887Z               "line": 720
2026-06-17T06:47:32.0930026Z             }
2026-06-17T06:47:32.0930173Z           ]
2026-06-17T06:47:32.0930312Z         },
2026-06-17T06:47:32.0930460Z         "int": {
2026-06-17T06:47:32.0930623Z           "complete": true,
2026-06-17T06:47:32.0930775Z           "evidence": [
2026-06-17T06:47:32.0930917Z             {
2026-06-17T06:47:32.0931122Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-17T06:47:32.0931280Z               "line": 13
2026-06-17T06:47:32.0931422Z             }
2026-06-17T06:47:32.0931572Z           ]
2026-06-17T06:47:32.0931718Z         },
2026-06-17T06:47:32.0931857Z         "unit": {
2026-06-17T06:47:32.0932024Z           "complete": false,
2026-06-17T06:47:32.0932174Z           "evidence": []
2026-06-17T06:47:32.0932317Z         }
2026-06-17T06:47:32.0932444Z       }
2026-06-17T06:47:32.0932588Z     },
2026-06-17T06:47:32.0932730Z     {
2026-06-17T06:47:32.0932879Z       "id": "REQ-REL-3",
2026-06-17T06:47:32.0933441Z       "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-17T06:47:32.0933599Z       "requiredStages": [
2026-06-17T06:47:32.0933751Z         "impl",
2026-06-17T06:47:32.0933895Z         "unit"
2026-06-17T06:47:32.0934032Z       ],
2026-06-17T06:47:32.0934181Z       "stages": {
2026-06-17T06:47:32.0934319Z         "doc": {
2026-06-17T06:47:32.0934472Z           "complete": false,
2026-06-17T06:47:32.0934623Z           "evidence": []
2026-06-17T06:47:32.0934773Z         },
2026-06-17T06:47:32.0934914Z         "impl": {
2026-06-17T06:47:32.0935071Z           "complete": true,
2026-06-17T06:47:32.0935229Z           "evidence": [
2026-06-17T06:47:32.0935366Z             {
2026-06-17T06:47:32.0935567Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.0935720Z               "line": 237
2026-06-17T06:47:32.0935868Z             },
2026-06-17T06:47:32.0936010Z             {
2026-06-17T06:47:32.0936206Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.0936368Z               "line": 289
2026-06-17T06:47:32.0936501Z             },
2026-06-17T06:47:32.0936649Z             {
2026-06-17T06:47:32.0936830Z               "path": "crates/xtask/src/main.rs",
2026-06-17T06:47:32.0936988Z               "line": 329
2026-06-17T06:47:32.0937126Z             },
2026-06-17T06:47:32.0937272Z             {
2026-06-17T06:47:32.0937457Z               "path": "crates/xtask/src/main.rs",
2026-06-17T06:47:32.0937709Z               "line": 353
2026-06-17T06:47:32.0937861Z             },
2026-06-17T06:47:32.0938005Z             {
2026-06-17T06:47:32.0938190Z               "path": "crates/xtask/src/main.rs",
2026-06-17T06:47:32.0938344Z               "line": 394
2026-06-17T06:47:32.0938481Z             }
2026-06-17T06:47:32.0938626Z           ]
2026-06-17T06:47:32.0938768Z         },
2026-06-17T06:47:32.0938916Z         "int": {
2026-06-17T06:47:32.0939139Z           "complete": false,
2026-06-17T06:47:32.0939303Z           "evidence": []
2026-06-17T06:47:32.0939550Z         },
2026-06-17T06:47:32.0939702Z         "unit": {
2026-06-17T06:47:32.0939861Z           "complete": true,
2026-06-17T06:47:32.0940012Z           "evidence": [
2026-06-17T06:47:32.0940158Z             {
2026-06-17T06:47:32.0940348Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.0940509Z               "line": 1045
2026-06-17T06:47:32.0940648Z             },
2026-06-17T06:47:32.0940795Z             {
2026-06-17T06:47:32.0941001Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.0941148Z               "line": 1104
2026-06-17T06:47:32.0941297Z             }
2026-06-17T06:47:32.0941429Z           ]
2026-06-17T06:47:32.0941573Z         }
2026-06-17T06:47:32.0941702Z       }
2026-06-17T06:47:32.0941841Z     },
2026-06-17T06:47:32.0941987Z     {
2026-06-17T06:47:32.0942151Z       "id": "REQ-RUN-PICKER",
2026-06-17T06:47:32.0947573Z       "title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind=\"harness\" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue \"attached\" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.",
2026-06-17T06:47:32.0947757Z       "requiredStages": [
2026-06-17T06:47:32.0947894Z         "doc",
2026-06-17T06:47:32.0948040Z         "impl",
2026-06-17T06:47:32.0948183Z         "unit"
2026-06-17T06:47:32.0948323Z       ],
2026-06-17T06:47:32.0948469Z       "stages": {
2026-06-17T06:47:32.0948613Z         "doc": {
2026-06-17T06:47:32.0948770Z           "complete": true,
2026-06-17T06:47:32.0948913Z           "evidence": [
2026-06-17T06:47:32.0949142Z             {
2026-06-17T06:47:32.0949304Z               "path": "CONTEXT.md",
2026-06-17T06:47:32.0949471Z               "line": 334
2026-06-17T06:47:32.0949614Z             }
2026-06-17T06:47:32.0949756Z           ]
2026-06-17T06:47:32.0949895Z         },
2026-06-17T06:47:32.0950038Z         "impl": {
2026-06-17T06:47:32.0950206Z           "complete": true,
2026-06-17T06:47:32.0950358Z           "evidence": [
2026-06-17T06:47:32.0950507Z             {
2026-06-17T06:47:32.0950676Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0950941Z               "line": 922
2026-06-17T06:47:32.0951084Z             },
2026-06-17T06:47:32.0951227Z             {
2026-06-17T06:47:32.0951413Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0951556Z               "line": 932
2026-06-17T06:47:32.0951699Z             },
2026-06-17T06:47:32.0951833Z             {
2026-06-17T06:47:32.0952024Z               "path": "crates/spt/src/picker/data.rs",
2026-06-17T06:47:32.0952171Z               "line": 9
2026-06-17T06:47:32.0952319Z             },
2026-06-17T06:47:32.0952467Z             {
2026-06-17T06:47:32.0952763Z               "path": "crates/spt/src/picker/data.rs",
2026-06-17T06:47:32.0952920Z               "line": 67
2026-06-17T06:47:32.0953054Z             },
2026-06-17T06:47:32.0953205Z             {
2026-06-17T06:47:32.0953395Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-17T06:47:32.0953541Z               "line": 16
2026-06-17T06:47:32.0953689Z             },
2026-06-17T06:47:32.0953832Z             {
2026-06-17T06:47:32.0954028Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-17T06:47:32.0954180Z               "line": 249
2026-06-17T06:47:32.0954323Z             },
2026-06-17T06:47:32.0954457Z             {
2026-06-17T06:47:32.0954638Z               "path": "crates/spt/src/picker/model.rs",
2026-06-17T06:47:32.0954791Z               "line": 11
2026-06-17T06:47:32.0954929Z             },
2026-06-17T06:47:32.0955076Z             {
2026-06-17T06:47:32.0955264Z               "path": "crates/spt/src/picker/model.rs",
2026-06-17T06:47:32.0955434Z               "line": 85
2026-06-17T06:47:32.0955583Z             },
2026-06-17T06:47:32.0955715Z             {
2026-06-17T06:47:32.0955917Z               "path": "crates/spt/src/picker/model.rs",
2026-06-17T06:47:32.0956067Z               "line": 452
2026-06-17T06:47:32.0956215Z             },
2026-06-17T06:47:32.0956349Z             {
2026-06-17T06:47:32.0956535Z               "path": "crates/spt/src/picker/model.rs",
2026-06-17T06:47:32.0956683Z               "line": 533
2026-06-17T06:47:32.0956820Z             },
2026-06-17T06:47:32.0956968Z             {
2026-06-17T06:47:32.0957159Z               "path": "crates/spt/src/picker/model.rs",
2026-06-17T06:47:32.0957311Z               "line": 586
2026-06-17T06:47:32.0961227Z             },
2026-06-17T06:47:32.0961530Z             {
2026-06-17T06:47:32.0961740Z               "path": "crates/spt/src/picker/view.rs",
2026-06-17T06:47:32.0961887Z               "line": 8
2026-06-17T06:47:32.0962035Z             }
2026-06-17T06:47:32.0962178Z           ]
2026-06-17T06:47:32.0962327Z         },
2026-06-17T06:47:32.0962473Z         "int": {
2026-06-17T06:47:32.0962637Z           "complete": false,
2026-06-17T06:47:32.0962784Z           "evidence": []
2026-06-17T06:47:32.0962913Z         },
2026-06-17T06:47:32.0963070Z         "unit": {
2026-06-17T06:47:32.0963213Z           "complete": true,
2026-06-17T06:47:32.0963365Z           "evidence": [
2026-06-17T06:47:32.0963508Z             {
2026-06-17T06:47:32.0963699Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0963855Z               "line": 6969
2026-06-17T06:47:32.0963988Z             },
2026-06-17T06:47:32.0964134Z             {
2026-06-17T06:47:32.0964307Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.0964458Z               "line": 6980
2026-06-17T06:47:32.0964602Z             },
2026-06-17T06:47:32.0964740Z             {
2026-06-17T06:47:32.0964936Z               "path": "crates/spt/src/picker/model.rs",
2026-06-17T06:47:32.0965088Z               "line": 737
2026-06-17T06:47:32.0965236Z             },
2026-06-17T06:47:32.0965379Z             {
2026-06-17T06:47:32.0965575Z               "path": "crates/spt/src/picker/model.rs",
2026-06-17T06:47:32.0965722Z               "line": 744
2026-06-17T06:47:32.0965866Z             },
2026-06-17T06:47:32.0966009Z             {
2026-06-17T06:47:32.0966200Z               "path": "crates/spt/src/picker/model.rs",
2026-06-17T06:47:32.0966361Z               "line": 761
2026-06-17T06:47:32.0966496Z             },
2026-06-17T06:47:32.0966775Z             {
2026-06-17T06:47:32.0966961Z               "path": "crates/spt/src/picker/model.rs",
2026-06-17T06:47:32.0967119Z               "line": 781
2026-06-17T06:47:32.0967266Z             },
2026-06-17T06:47:32.0967400Z             {
2026-06-17T06:47:32.0967586Z               "path": "crates/spt/src/picker/model.rs",
2026-06-17T06:47:32.0967724Z               "line": 795
2026-06-17T06:47:32.0967876Z             },
2026-06-17T06:47:32.0968015Z             {
2026-06-17T06:47:32.0968205Z               "path": "crates/spt/src/picker/model.rs",
2026-06-17T06:47:32.0968454Z               "line": 804
2026-06-17T06:47:32.0968596Z             },
2026-06-17T06:47:32.0968731Z             {
2026-06-17T06:47:32.0968915Z               "path": "crates/spt/src/picker/model.rs",
2026-06-17T06:47:32.0969147Z               "line": 815
2026-06-17T06:47:32.0969284Z             },
2026-06-17T06:47:32.0969418Z             {
2026-06-17T06:47:32.0969618Z               "path": "crates/spt/src/picker/model.rs",
2026-06-17T06:47:32.0969766Z               "line": 837
2026-06-17T06:47:32.0969904Z             },
2026-06-17T06:47:32.0970048Z             {
2026-06-17T06:47:32.0970238Z               "path": "crates/spt/src/picker/model.rs",
2026-06-17T06:47:32.0970391Z               "line": 856
2026-06-17T06:47:32.0970519Z             },
2026-06-17T06:47:32.0970659Z             {
2026-06-17T06:47:32.0970848Z               "path": "crates/spt/src/picker/model.rs",
2026-06-17T06:47:32.0971002Z               "line": 893
2026-06-17T06:47:32.0971148Z             },
2026-06-17T06:47:32.0971284Z             {
2026-06-17T06:47:32.0971497Z               "path": "crates/spt/src/picker/model.rs",
2026-06-17T06:47:32.0971651Z               "line": 922
2026-06-17T06:47:32.0971792Z             },
2026-06-17T06:47:32.0971930Z             {
2026-06-17T06:47:32.0972118Z               "path": "crates/spt/src/picker/model.rs",
2026-06-17T06:47:32.0972267Z               "line": 935
2026-06-17T06:47:32.0972413Z             },
2026-06-17T06:47:32.0972563Z             {
2026-06-17T06:47:32.0972752Z               "path": "crates/spt/src/picker/model.rs",
2026-06-17T06:47:32.0972897Z               "line": 979
2026-06-17T06:47:32.0973038Z             },
2026-06-17T06:47:32.0973182Z             {
2026-06-17T06:47:32.0973362Z               "path": "crates/spt/src/picker/model.rs",
2026-06-17T06:47:32.0973521Z               "line": 1006
2026-06-17T06:47:32.0973668Z             },
2026-06-17T06:47:32.0973807Z             {
2026-06-17T06:47:32.0973997Z               "path": "crates/spt/src/picker/model.rs",
2026-06-17T06:47:32.0974161Z               "line": 1022
2026-06-17T06:47:32.0974297Z             },
2026-06-17T06:47:32.0974430Z             {
2026-06-17T06:47:32.0974623Z               "path": "crates/spt/src/picker/view.rs",
2026-06-17T06:47:32.0974771Z               "line": 419
2026-06-17T06:47:32.0974910Z             },
2026-06-17T06:47:32.0975057Z             {
2026-06-17T06:47:32.0975229Z               "path": "crates/spt/src/picker/view.rs",
2026-06-17T06:47:32.0975386Z               "line": 431
2026-06-17T06:47:32.0975529Z             },
2026-06-17T06:47:32.0975676Z             {
2026-06-17T06:47:32.0975868Z               "path": "crates/spt/src/picker/view.rs",
2026-06-17T06:47:32.0976015Z               "line": 449
2026-06-17T06:47:32.0976163Z             },
2026-06-17T06:47:32.0976297Z             {
2026-06-17T06:47:32.0976478Z               "path": "crates/spt/src/picker/view.rs",
2026-06-17T06:47:32.0976630Z               "line": 471
2026-06-17T06:47:32.0976779Z             },
2026-06-17T06:47:32.0976922Z             {
2026-06-17T06:47:32.0977103Z               "path": "crates/spt/src/picker/view.rs",
2026-06-17T06:47:32.0977249Z               "line": 481
2026-06-17T06:47:32.0977388Z             },
2026-06-17T06:47:32.0977535Z             {
2026-06-17T06:47:32.0977717Z               "path": "crates/spt/src/picker/view.rs",
2026-06-17T06:47:32.0977869Z               "line": 504
2026-06-17T06:47:32.0978008Z             }
2026-06-17T06:47:32.0978365Z           ]
2026-06-17T06:47:32.0978508Z         }
2026-06-17T06:47:32.0978652Z       }
2026-06-17T06:47:32.0978799Z     },
2026-06-17T06:47:32.0978939Z     {
2026-06-17T06:47:32.0979190Z       "id": "REQ-RUN-SHORTCUT",
2026-06-17T06:47:32.0984518Z       "title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).",
2026-06-17T06:47:32.0984805Z       "requiredStages": [
2026-06-17T06:47:32.0984956Z         "doc",
2026-06-17T06:47:32.0985104Z         "impl",
2026-06-17T06:47:32.0985250Z         "unit"
2026-06-17T06:47:32.0985393Z       ],
2026-06-17T06:47:32.0985540Z       "stages": {
2026-06-17T06:47:32.0985690Z         "doc": {
2026-06-17T06:47:32.0985850Z           "complete": true,
2026-06-17T06:47:32.0986004Z           "evidence": [
2026-06-17T06:47:32.0986151Z             {
2026-06-17T06:47:32.0986305Z               "path": "CONTEXT.md",
2026-06-17T06:47:32.0986461Z               "line": 357
2026-06-17T06:47:32.0986605Z             }
2026-06-17T06:47:32.0986742Z           ]
2026-06-17T06:47:32.0986890Z         },
2026-06-17T06:47:32.0987042Z         "impl": {
2026-06-17T06:47:32.0987200Z           "complete": true,
2026-06-17T06:47:32.0987353Z           "evidence": [
2026-06-17T06:47:32.0987496Z             {
2026-06-17T06:47:32.0987700Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-17T06:47:32.0987847Z               "line": 39
2026-06-17T06:47:32.0987992Z             },
2026-06-17T06:47:32.0988138Z             {
2026-06-17T06:47:32.0988330Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-17T06:47:32.0988486Z               "line": 79
2026-06-17T06:47:32.0988625Z             },
2026-06-17T06:47:32.0988768Z             {
2026-06-17T06:47:32.0989044Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-17T06:47:32.0989203Z               "line": 162
2026-06-17T06:47:32.0989340Z             }
2026-06-17T06:47:32.0989484Z           ]
2026-06-17T06:47:32.0989626Z         },
2026-06-17T06:47:32.0989769Z         "int": {
2026-06-17T06:47:32.0989931Z           "complete": false,
2026-06-17T06:47:32.0990073Z           "evidence": []
2026-06-17T06:47:32.0990216Z         },
2026-06-17T06:47:32.0990362Z         "unit": {
2026-06-17T06:47:32.0990510Z           "complete": true,
2026-06-17T06:47:32.0990667Z           "evidence": [
2026-06-17T06:47:32.0990810Z             {
2026-06-17T06:47:32.0991000Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-17T06:47:32.0991154Z               "line": 206
2026-06-17T06:47:32.0991397Z             },
2026-06-17T06:47:32.0991544Z             {
2026-06-17T06:47:32.0991726Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-17T06:47:32.0991883Z               "line": 222
2026-06-17T06:47:32.0992026Z             },
2026-06-17T06:47:32.0992164Z             {
2026-06-17T06:47:32.0992361Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-17T06:47:32.0992512Z               "line": 238
2026-06-17T06:47:32.0992651Z             },
2026-06-17T06:47:32.0992799Z             {
2026-06-17T06:47:32.0993083Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-17T06:47:32.0993228Z               "line": 251
2026-06-17T06:47:32.0993372Z             },
2026-06-17T06:47:32.0993515Z             {
2026-06-17T06:47:32.0993702Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-17T06:47:32.0993853Z               "line": 258
2026-06-17T06:47:32.0993997Z             }
2026-06-17T06:47:32.0994131Z           ]
2026-06-17T06:47:32.0994273Z         }
2026-06-17T06:47:32.0994416Z       }
2026-06-17T06:47:32.0994555Z     },
2026-06-17T06:47:32.0994694Z     {
2026-06-17T06:47:32.0994865Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-17T06:47:32.0995136Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-17T06:47:32.0995295Z       "requiredStages": [
2026-06-17T06:47:32.0995436Z         "impl",
2026-06-17T06:47:32.0995583Z         "unit"
2026-06-17T06:47:32.0995711Z       ],
2026-06-17T06:47:32.0995857Z       "stages": {
2026-06-17T06:47:32.0996012Z         "doc": {
2026-06-17T06:47:32.0996172Z           "complete": false,
2026-06-17T06:47:32.0996325Z           "evidence": []
2026-06-17T06:47:32.0996468Z         },
2026-06-17T06:47:32.0996616Z         "impl": {
2026-06-17T06:47:32.0996768Z           "complete": true,
2026-06-17T06:47:32.0996917Z           "evidence": [
2026-06-17T06:47:32.0997063Z             {
2026-06-17T06:47:32.0997251Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-17T06:47:32.0997402Z               "line": 18
2026-06-17T06:47:32.0997537Z             },
2026-06-17T06:47:32.0997679Z             {
2026-06-17T06:47:32.0997867Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-17T06:47:32.0998013Z               "line": 35
2026-06-17T06:47:32.0998157Z             },
2026-06-17T06:47:32.0998298Z             {
2026-06-17T06:47:32.0998489Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-17T06:47:32.0998632Z               "line": 72
2026-06-17T06:47:32.0998770Z             }
2026-06-17T06:47:32.0998914Z           ]
2026-06-17T06:47:32.0999138Z         },
2026-06-17T06:47:32.0999285Z         "int": {
2026-06-17T06:47:32.0999444Z           "complete": false,
2026-06-17T06:47:32.0999595Z           "evidence": []
2026-06-17T06:47:32.0999734Z         },
2026-06-17T06:47:32.0999881Z         "unit": {
2026-06-17T06:47:32.1000039Z           "complete": true,
2026-06-17T06:47:32.1000181Z           "evidence": [
2026-06-17T06:47:32.1000320Z             {
2026-06-17T06:47:32.1000500Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-17T06:47:32.1000662Z               "line": 239
2026-06-17T06:47:32.1000799Z             },
2026-06-17T06:47:32.1000945Z             {
2026-06-17T06:47:32.1001128Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-17T06:47:32.1001279Z               "line": 256
2026-06-17T06:47:32.1001428Z             },
2026-06-17T06:47:32.1001565Z             {
2026-06-17T06:47:32.1001752Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-17T06:47:32.1001903Z               "line": 265
2026-06-17T06:47:32.1002038Z             }
2026-06-17T06:47:32.1002181Z           ]
2026-06-17T06:47:32.1002320Z         }
2026-06-17T06:47:32.1002458Z       }
2026-06-17T06:47:32.1002586Z     },
2026-06-17T06:47:32.1002729Z     {
2026-06-17T06:47:32.1002887Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-17T06:47:32.1003115Z       "title": "Hostable endpoint-types capability declaration",
2026-06-17T06:47:32.1003260Z       "requiredStages": [
2026-06-17T06:47:32.1003500Z         "impl",
2026-06-17T06:47:32.1003653Z         "unit"
2026-06-17T06:47:32.1003793Z       ],
2026-06-17T06:47:32.1003942Z       "stages": {
2026-06-17T06:47:32.1004080Z         "doc": {
2026-06-17T06:47:32.1004243Z           "complete": false,
2026-06-17T06:47:32.1004390Z           "evidence": []
2026-06-17T06:47:32.1004534Z         },
2026-06-17T06:47:32.1004682Z         "impl": {
2026-06-17T06:47:32.1004833Z           "complete": true,
2026-06-17T06:47:32.1004986Z           "evidence": [
2026-06-17T06:47:32.1005225Z             {
2026-06-17T06:47:32.1005429Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:32.1005569Z               "line": 594
2026-06-17T06:47:32.1005715Z             }
2026-06-17T06:47:32.1005860Z           ]
2026-06-17T06:47:32.1006005Z         },
2026-06-17T06:47:32.1006148Z         "int": {
2026-06-17T06:47:32.1006299Z           "complete": false,
2026-06-17T06:47:32.1006452Z           "evidence": []
2026-06-17T06:47:32.1006586Z         },
2026-06-17T06:47:32.1006723Z         "unit": {
2026-06-17T06:47:32.1006880Z           "complete": true,
2026-06-17T06:47:32.1007023Z           "evidence": [
2026-06-17T06:47:32.1007162Z             {
2026-06-17T06:47:32.1007347Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:32.1007496Z               "line": 963
2026-06-17T06:47:32.1007633Z             }
2026-06-17T06:47:32.1007768Z           ]
2026-06-17T06:47:32.1007911Z         }
2026-06-17T06:47:32.1008045Z       }
2026-06-17T06:47:32.1008191Z     },
2026-06-17T06:47:32.1008325Z     {
2026-06-17T06:47:32.1008492Z       "id": "REQ-SEAM-HISTORY",
2026-06-17T06:47:32.1008761Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-17T06:47:32.1008920Z       "requiredStages": [
2026-06-17T06:47:32.1009159Z         "impl",
2026-06-17T06:47:32.1009296Z         "unit",
2026-06-17T06:47:32.1009440Z         "int"
2026-06-17T06:47:32.1009578Z       ],
2026-06-17T06:47:32.1009726Z       "stages": {
2026-06-17T06:47:32.1009873Z         "doc": {
2026-06-17T06:47:32.1010027Z           "complete": false,
2026-06-17T06:47:32.1010183Z           "evidence": []
2026-06-17T06:47:32.1010319Z         },
2026-06-17T06:47:32.1010456Z         "impl": {
2026-06-17T06:47:32.1010604Z           "complete": true,
2026-06-17T06:47:32.1010751Z           "evidence": [
2026-06-17T06:47:32.1010885Z             {
2026-06-17T06:47:32.1011080Z               "path": "crates/spt-live/src/echo.rs",
2026-06-17T06:47:32.1011227Z               "line": 24
2026-06-17T06:47:32.1011373Z             },
2026-06-17T06:47:32.1011510Z             {
2026-06-17T06:47:32.1011702Z               "path": "crates/spt-live/src/history.rs",
2026-06-17T06:47:32.1011854Z               "line": 22
2026-06-17T06:47:32.1011988Z             }
2026-06-17T06:47:32.1012130Z           ]
2026-06-17T06:47:32.1012274Z         },
2026-06-17T06:47:32.1012412Z         "int": {
2026-06-17T06:47:32.1012561Z           "complete": true,
2026-06-17T06:47:32.1012703Z           "evidence": [
2026-06-17T06:47:32.1012846Z             {
2026-06-17T06:47:32.1013046Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-17T06:47:32.1013200Z               "line": 260
2026-06-17T06:47:32.1013341Z             }
2026-06-17T06:47:32.1013481Z           ]
2026-06-17T06:47:32.1013623Z         },
2026-06-17T06:47:32.1013767Z         "unit": {
2026-06-17T06:47:32.1013919Z           "complete": true,
2026-06-17T06:47:32.1014070Z           "evidence": [
2026-06-17T06:47:32.1014203Z             {
2026-06-17T06:47:32.1014396Z               "path": "crates/spt-live/src/echo.rs",
2026-06-17T06:47:32.1014541Z               "line": 171
2026-06-17T06:47:32.1014687Z             },
2026-06-17T06:47:32.1014817Z             {
2026-06-17T06:47:32.1015007Z               "path": "crates/spt-live/src/echo.rs",
2026-06-17T06:47:32.1015151Z               "line": 200
2026-06-17T06:47:32.1015293Z             },
2026-06-17T06:47:32.1015437Z             {
2026-06-17T06:47:32.1015713Z               "path": "crates/spt-live/src/echo.rs",
2026-06-17T06:47:32.1015870Z               "line": 220
2026-06-17T06:47:32.1016014Z             },
2026-06-17T06:47:32.1016162Z             {
2026-06-17T06:47:32.1016353Z               "path": "crates/spt-live/src/history.rs",
2026-06-17T06:47:32.1016500Z               "line": 199
2026-06-17T06:47:32.1016646Z             },
2026-06-17T06:47:32.1016789Z             {
2026-06-17T06:47:32.1016992Z               "path": "crates/spt-live/src/history.rs",
2026-06-17T06:47:32.1017146Z               "line": 219
2026-06-17T06:47:32.1017389Z             },
2026-06-17T06:47:32.1017526Z             {
2026-06-17T06:47:32.1017722Z               "path": "crates/spt-live/src/history.rs",
2026-06-17T06:47:32.1017883Z               "line": 244
2026-06-17T06:47:32.1018013Z             },
2026-06-17T06:47:32.1018161Z             {
2026-06-17T06:47:32.1018348Z               "path": "crates/spt-live/src/history.rs",
2026-06-17T06:47:32.1018508Z               "line": 276
2026-06-17T06:47:32.1018643Z             },
2026-06-17T06:47:32.1018785Z             {
2026-06-17T06:47:32.1019043Z               "path": "crates/spt-live/src/history.rs",
2026-06-17T06:47:32.1019201Z               "line": 297
2026-06-17T06:47:32.1019349Z             },
2026-06-17T06:47:32.1019490Z             {
2026-06-17T06:47:32.1019677Z               "path": "crates/spt-live/src/history.rs",
2026-06-17T06:47:32.1019833Z               "line": 324
2026-06-17T06:47:32.1019972Z             }
2026-06-17T06:47:32.1020119Z           ]
2026-06-17T06:47:32.1020268Z         }
2026-06-17T06:47:32.1020410Z       }
2026-06-17T06:47:32.1020544Z     },
2026-06-17T06:47:32.1020692Z     {
2026-06-17T06:47:32.1020859Z       "id": "REQ-SEAM-INJECT",
2026-06-17T06:47:32.1021097Z       "title": "inject-input methods configurable per activity-state",
2026-06-17T06:47:32.1021255Z       "requiredStages": [
2026-06-17T06:47:32.1021397Z         "impl",
2026-06-17T06:47:32.1021547Z         "unit"
2026-06-17T06:47:32.1021678Z       ],
2026-06-17T06:47:32.1021830Z       "stages": {
2026-06-17T06:47:32.1021975Z         "doc": {
2026-06-17T06:47:32.1022137Z           "complete": false,
2026-06-17T06:47:32.1022281Z           "evidence": []
2026-06-17T06:47:32.1022424Z         },
2026-06-17T06:47:32.1022567Z         "impl": {
2026-06-17T06:47:32.1022719Z           "complete": true,
2026-06-17T06:47:32.1022867Z           "evidence": [
2026-06-17T06:47:32.1023010Z             {
2026-06-17T06:47:32.1023201Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-17T06:47:32.1023353Z               "line": 19
2026-06-17T06:47:32.1023501Z             },
2026-06-17T06:47:32.1023649Z             {
2026-06-17T06:47:32.1023835Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-17T06:47:32.1023997Z               "line": 111
2026-06-17T06:47:32.1024131Z             }
2026-06-17T06:47:32.1024269Z           ]
2026-06-17T06:47:32.1024414Z         },
2026-06-17T06:47:32.1024559Z         "int": {
2026-06-17T06:47:32.1024721Z           "complete": false,
2026-06-17T06:47:32.1024871Z           "evidence": []
2026-06-17T06:47:32.1025019Z         },
2026-06-17T06:47:32.1025158Z         "unit": {
2026-06-17T06:47:32.1025319Z           "complete": true,
2026-06-17T06:47:32.1025468Z           "evidence": [
2026-06-17T06:47:32.1025610Z             {
2026-06-17T06:47:32.1025797Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-17T06:47:32.1025949Z               "line": 345
2026-06-17T06:47:32.1026092Z             },
2026-06-17T06:47:32.1026230Z             {
2026-06-17T06:47:32.1026431Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-17T06:47:32.1026579Z               "line": 365
2026-06-17T06:47:32.1026722Z             }
2026-06-17T06:47:32.1026859Z           ]
2026-06-17T06:47:32.1026999Z         }
2026-06-17T06:47:32.1027140Z       }
2026-06-17T06:47:32.1027288Z     },
2026-06-17T06:47:32.1027414Z     {
2026-06-17T06:47:32.1027581Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-17T06:47:32.1027891Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-17T06:47:32.1028058Z       "requiredStages": [
2026-06-17T06:47:32.1028206Z         "impl",
2026-06-17T06:47:32.1028339Z         "unit"
2026-06-17T06:47:32.1028482Z       ],
2026-06-17T06:47:32.1028621Z       "stages": {
2026-06-17T06:47:32.1028763Z         "doc": {
2026-06-17T06:47:32.1028926Z           "complete": false,
2026-06-17T06:47:32.1029165Z           "evidence": []
2026-06-17T06:47:32.1029307Z         },
2026-06-17T06:47:32.1029455Z         "impl": {
2026-06-17T06:47:32.1029608Z           "complete": true,
2026-06-17T06:47:32.1029861Z           "evidence": [
2026-06-17T06:47:32.1030002Z             {
2026-06-17T06:47:32.1030203Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:32.1030359Z               "line": 18
2026-06-17T06:47:32.1030504Z             },
2026-06-17T06:47:32.1030650Z             {
2026-06-17T06:47:32.1030843Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:32.1030989Z               "line": 330
2026-06-17T06:47:32.1031133Z             }
2026-06-17T06:47:32.1031266Z           ]
2026-06-17T06:47:32.1031410Z         },
2026-06-17T06:47:32.1031556Z         "int": {
2026-06-17T06:47:32.1031720Z           "complete": false,
2026-06-17T06:47:32.1031871Z           "evidence": []
2026-06-17T06:47:32.1032001Z         },
2026-06-17T06:47:32.1032149Z         "unit": {
2026-06-17T06:47:32.1032299Z           "complete": true,
2026-06-17T06:47:32.1032457Z           "evidence": [
2026-06-17T06:47:32.1032593Z             {
2026-06-17T06:47:32.1032789Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:32.1032950Z               "line": 604
2026-06-17T06:47:32.1033089Z             },
2026-06-17T06:47:32.1033241Z             {
2026-06-17T06:47:32.1033418Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:32.1033580Z               "line": 614
2026-06-17T06:47:32.1033724Z             }
2026-06-17T06:47:32.1033861Z           ]
2026-06-17T06:47:32.1034010Z         }
2026-06-17T06:47:32.1034147Z       }
2026-06-17T06:47:32.1034282Z     },
2026-06-17T06:47:32.1034414Z     {
2026-06-17T06:47:32.1034587Z       "id": "REQ-SEAM-PSYCHE",
2026-06-17T06:47:32.1034800Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-17T06:47:32.1034959Z       "requiredStages": [
2026-06-17T06:47:32.1035110Z         "impl",
2026-06-17T06:47:32.1035247Z         "unit",
2026-06-17T06:47:32.1035398Z         "int"
2026-06-17T06:47:32.1035536Z       ],
2026-06-17T06:47:32.1035685Z       "stages": {
2026-06-17T06:47:32.1035817Z         "doc": {
2026-06-17T06:47:32.1035985Z           "complete": false,
2026-06-17T06:47:32.1036141Z           "evidence": []
2026-06-17T06:47:32.1036276Z         },
2026-06-17T06:47:32.1036428Z         "impl": {
2026-06-17T06:47:32.1036586Z           "complete": true,
2026-06-17T06:47:32.1036747Z           "evidence": [
2026-06-17T06:47:32.1036887Z             {
2026-06-17T06:47:32.1037067Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-17T06:47:32.1037221Z               "line": 19
2026-06-17T06:47:32.1037362Z             },
2026-06-17T06:47:32.1037507Z             {
2026-06-17T06:47:32.1037681Z               "path": "crates/spt/src/api/live.rs",
2026-06-17T06:47:32.1037829Z               "line": 12
2026-06-17T06:47:32.1037974Z             },
2026-06-17T06:47:32.1038122Z             {
2026-06-17T06:47:32.1038313Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:32.1038466Z               "line": 233
2026-06-17T06:47:32.1038609Z             }
2026-06-17T06:47:32.1038756Z           ]
2026-06-17T06:47:32.1038904Z         },
2026-06-17T06:47:32.1039134Z         "int": {
2026-06-17T06:47:32.1039295Z           "complete": true,
2026-06-17T06:47:32.1039444Z           "evidence": [
2026-06-17T06:47:32.1039586Z             {
2026-06-17T06:47:32.1039787Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-17T06:47:32.1039934Z               "line": 259
2026-06-17T06:47:32.1040078Z             }
2026-06-17T06:47:32.1040220Z           ]
2026-06-17T06:47:32.1040473Z         },
2026-06-17T06:47:32.1040619Z         "unit": {
2026-06-17T06:47:32.1040782Z           "complete": true,
2026-06-17T06:47:32.1040934Z           "evidence": [
2026-06-17T06:47:32.1041069Z             {
2026-06-17T06:47:32.1041253Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-17T06:47:32.1041403Z               "line": 161
2026-06-17T06:47:32.1041554Z             },
2026-06-17T06:47:32.1041693Z             {
2026-06-17T06:47:32.1041878Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-17T06:47:32.1042126Z               "line": 168
2026-06-17T06:47:32.1042255Z             },
2026-06-17T06:47:32.1042408Z             {
2026-06-17T06:47:32.1042589Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-17T06:47:32.1042746Z               "line": 191
2026-06-17T06:47:32.1042892Z             },
2026-06-17T06:47:32.1043036Z             {
2026-06-17T06:47:32.1043224Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-17T06:47:32.1043374Z               "line": 106
2026-06-17T06:47:32.1043515Z             },
2026-06-17T06:47:32.1043649Z             {
2026-06-17T06:47:32.1043835Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-17T06:47:32.1043992Z               "line": 137
2026-06-17T06:47:32.1044140Z             },
2026-06-17T06:47:32.1044284Z             {
2026-06-17T06:47:32.1044474Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-17T06:47:32.1044631Z               "line": 161
2026-06-17T06:47:32.1044774Z             }
2026-06-17T06:47:32.1044923Z           ]
2026-06-17T06:47:32.1045074Z         }
2026-06-17T06:47:32.1045205Z       }
2026-06-17T06:47:32.1045351Z     },
2026-06-17T06:47:32.1045491Z     {
2026-06-17T06:47:32.1045656Z       "id": "REQ-SEAM-RESUME",
2026-06-17T06:47:32.1045931Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-17T06:47:32.1046096Z       "requiredStages": [
2026-06-17T06:47:32.1046245Z         "impl",
2026-06-17T06:47:32.1046387Z         "unit"
2026-06-17T06:47:32.1046521Z       ],
2026-06-17T06:47:32.1046659Z       "stages": {
2026-06-17T06:47:32.1046808Z         "doc": {
2026-06-17T06:47:32.1046959Z           "complete": false,
2026-06-17T06:47:32.1047118Z           "evidence": []
2026-06-17T06:47:32.1047260Z         },
2026-06-17T06:47:32.1047394Z         "impl": {
2026-06-17T06:47:32.1047551Z           "complete": true,
2026-06-17T06:47:32.1047704Z           "evidence": [
2026-06-17T06:47:32.1047851Z             {
2026-06-17T06:47:32.1048038Z               "path": "crates/spt-live/src/resume.rs",
2026-06-17T06:47:32.1048199Z               "line": 19
2026-06-17T06:47:32.1048341Z             }
2026-06-17T06:47:32.1048474Z           ]
2026-06-17T06:47:32.1048615Z         },
2026-06-17T06:47:32.1048759Z         "int": {
2026-06-17T06:47:32.1048916Z           "complete": false,
2026-06-17T06:47:32.1049145Z           "evidence": []
2026-06-17T06:47:32.1049292Z         },
2026-06-17T06:47:32.1049441Z         "unit": {
2026-06-17T06:47:32.1049592Z           "complete": true,
2026-06-17T06:47:32.1049736Z           "evidence": [
2026-06-17T06:47:32.1049879Z             {
2026-06-17T06:47:32.1050065Z               "path": "crates/spt-live/src/resume.rs",
2026-06-17T06:47:32.1050213Z               "line": 201
2026-06-17T06:47:32.1050357Z             },
2026-06-17T06:47:32.1050499Z             {
2026-06-17T06:47:32.1050686Z               "path": "crates/spt-live/src/resume.rs",
2026-06-17T06:47:32.1050843Z               "line": 223
2026-06-17T06:47:32.1050972Z             },
2026-06-17T06:47:32.1051123Z             {
2026-06-17T06:47:32.1051309Z               "path": "crates/spt-live/src/resume.rs",
2026-06-17T06:47:32.1051470Z               "line": 244
2026-06-17T06:47:32.1051614Z             }
2026-06-17T06:47:32.1051757Z           ]
2026-06-17T06:47:32.1051896Z         }
2026-06-17T06:47:32.1052034Z       }
2026-06-17T06:47:32.1052172Z     },
2026-06-17T06:47:32.1052306Z     {
2026-06-17T06:47:32.1052467Z       "id": "REQ-SEAM-SPAWN",
2026-06-17T06:47:32.1052753Z       "title": "spawn-session seam",
2026-06-17T06:47:32.1052916Z       "requiredStages": [
2026-06-17T06:47:32.1053063Z         "impl",
2026-06-17T06:47:32.1053203Z         "unit"
2026-06-17T06:47:32.1053353Z       ],
2026-06-17T06:47:32.1053496Z       "stages": {
2026-06-17T06:47:32.1053642Z         "doc": {
2026-06-17T06:47:32.1053804Z           "complete": false,
2026-06-17T06:47:32.1053953Z           "evidence": []
2026-06-17T06:47:32.1054094Z         },
2026-06-17T06:47:32.1054242Z         "impl": {
2026-06-17T06:47:32.1054404Z           "complete": true,
2026-06-17T06:47:32.1054648Z           "evidence": [
2026-06-17T06:47:32.1054796Z             {
2026-06-17T06:47:32.1054990Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:32.1055144Z               "line": 20
2026-06-17T06:47:32.1055282Z             }
2026-06-17T06:47:32.1055426Z           ]
2026-06-17T06:47:32.1055572Z         },
2026-06-17T06:47:32.1055722Z         "int": {
2026-06-17T06:47:32.1055887Z           "complete": false,
2026-06-17T06:47:32.1056051Z           "evidence": []
2026-06-17T06:47:32.1056192Z         },
2026-06-17T06:47:32.1056334Z         "unit": {
2026-06-17T06:47:32.1056491Z           "complete": true,
2026-06-17T06:47:32.1056642Z           "evidence": [
2026-06-17T06:47:32.1056781Z             {
2026-06-17T06:47:32.1056985Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:32.1057149Z               "line": 566
2026-06-17T06:47:32.1057290Z             },
2026-06-17T06:47:32.1057434Z             {
2026-06-17T06:47:32.1057629Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:32.1057786Z               "line": 573
2026-06-17T06:47:32.1057915Z             },
2026-06-17T06:47:32.1058054Z             {
2026-06-17T06:47:32.1058259Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:32.1058411Z               "line": 679
2026-06-17T06:47:32.1058555Z             },
2026-06-17T06:47:32.1058689Z             {
2026-06-17T06:47:32.1058896Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:32.1059118Z               "line": 685
2026-06-17T06:47:32.1059266Z             },
2026-06-17T06:47:32.1059414Z             {
2026-06-17T06:47:32.1059601Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:32.1059757Z               "line": 710
2026-06-17T06:47:32.1059901Z             },
2026-06-17T06:47:32.1060044Z             {
2026-06-17T06:47:32.1060230Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-17T06:47:32.1060387Z               "line": 747
2026-06-17T06:47:32.1060530Z             }
2026-06-17T06:47:32.1060668Z           ]
2026-06-17T06:47:32.1060811Z         }
2026-06-17T06:47:32.1060949Z       }
2026-06-17T06:47:32.1061097Z     },
2026-06-17T06:47:32.1061227Z     {
2026-06-17T06:47:32.1061398Z       "id": "REQ-SEAM-UPDATE",
2026-06-17T06:47:32.1061649Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-17T06:47:32.1061811Z       "requiredStages": [
2026-06-17T06:47:32.1061960Z         "impl",
2026-06-17T06:47:32.1062102Z         "unit"
2026-06-17T06:47:32.1062246Z       ],
2026-06-17T06:47:32.1062388Z       "stages": {
2026-06-17T06:47:32.1062537Z         "doc": {
2026-06-17T06:47:32.1062698Z           "complete": false,
2026-06-17T06:47:32.1062851Z           "evidence": []
2026-06-17T06:47:32.1062994Z         },
2026-06-17T06:47:32.1063143Z         "impl": {
2026-06-17T06:47:32.1063299Z           "complete": true,
2026-06-17T06:47:32.1063453Z           "evidence": [
2026-06-17T06:47:32.1063599Z             {
2026-06-17T06:47:32.1063918Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-17T06:47:32.1064137Z               "line": 28
2026-06-17T06:47:32.1064283Z             },
2026-06-17T06:47:32.1064426Z             {
2026-06-17T06:47:32.1064635Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-17T06:47:32.1064784Z               "line": 88
2026-06-17T06:47:32.1064926Z             }
2026-06-17T06:47:32.1065070Z           ]
2026-06-17T06:47:32.1065313Z         },
2026-06-17T06:47:32.1065456Z         "int": {
2026-06-17T06:47:32.1065609Z           "complete": false,
2026-06-17T06:47:32.1065766Z           "evidence": []
2026-06-17T06:47:32.1065904Z         },
2026-06-17T06:47:32.1066053Z         "unit": {
2026-06-17T06:47:32.1066209Z           "complete": true,
2026-06-17T06:47:32.1066358Z           "evidence": [
2026-06-17T06:47:32.1066505Z             {
2026-06-17T06:47:32.1066701Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-17T06:47:32.1066957Z               "line": 326
2026-06-17T06:47:32.1067102Z             },
2026-06-17T06:47:32.1067250Z             {
2026-06-17T06:47:32.1067459Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-17T06:47:32.1067604Z               "line": 337
2026-06-17T06:47:32.1067742Z             }
2026-06-17T06:47:32.1067880Z           ]
2026-06-17T06:47:32.1068018Z         }
2026-06-17T06:47:32.1068161Z       }
2026-06-17T06:47:32.1068304Z     },
2026-06-17T06:47:32.1068451Z     {
2026-06-17T06:47:32.1068610Z       "id": "REQ-SEC-1",
2026-06-17T06:47:32.1069182Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-17T06:47:32.1069347Z       "requiredStages": [
2026-06-17T06:47:32.1072825Z         "impl",
2026-06-17T06:47:32.1072996Z         "unit"
2026-06-17T06:47:32.1073135Z       ],
2026-06-17T06:47:32.1073277Z       "stages": {
2026-06-17T06:47:32.1073421Z         "doc": {
2026-06-17T06:47:32.1073601Z           "complete": false,
2026-06-17T06:47:32.1073745Z           "evidence": []
2026-06-17T06:47:32.1073888Z         },
2026-06-17T06:47:32.1074036Z         "impl": {
2026-06-17T06:47:32.1074193Z           "complete": true,
2026-06-17T06:47:32.1074351Z           "evidence": [
2026-06-17T06:47:32.1074492Z             {
2026-06-17T06:47:32.1074697Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-17T06:47:32.1074843Z               "line": 86
2026-06-17T06:47:32.1074986Z             },
2026-06-17T06:47:32.1075129Z             {
2026-06-17T06:47:32.1075335Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-17T06:47:32.1075486Z               "line": 116
2026-06-17T06:47:32.1075630Z             },
2026-06-17T06:47:32.1075782Z             {
2026-06-17T06:47:32.1075973Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-17T06:47:32.1076134Z               "line": 130
2026-06-17T06:47:32.1076279Z             },
2026-06-17T06:47:32.1076426Z             {
2026-06-17T06:47:32.1076631Z               "path": "crates/spt-store/src/access.rs",
2026-06-17T06:47:32.1076783Z               "line": 109
2026-06-17T06:47:32.1076932Z             },
2026-06-17T06:47:32.1077075Z             {
2026-06-17T06:47:32.1077266Z               "path": "crates/spt-store/src/access.rs",
2026-06-17T06:47:32.1077426Z               "line": 130
2026-06-17T06:47:32.1077555Z             },
2026-06-17T06:47:32.1077705Z             {
2026-06-17T06:47:32.1077897Z               "path": "crates/spt-store/src/access.rs",
2026-06-17T06:47:32.1078058Z               "line": 143
2026-06-17T06:47:32.1078197Z             },
2026-06-17T06:47:32.1078339Z             {
2026-06-17T06:47:32.1078526Z               "path": "crates/spt-store/src/access.rs",
2026-06-17T06:47:32.1078682Z               "line": 209
2026-06-17T06:47:32.1078822Z             },
2026-06-17T06:47:32.1079036Z             {
2026-06-17T06:47:32.1079231Z               "path": "crates/spt-store/src/access.rs",
2026-06-17T06:47:32.1079389Z               "line": 235
2026-06-17T06:47:32.1079536Z             },
2026-06-17T06:47:32.1079680Z             {
2026-06-17T06:47:32.1079856Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1080007Z               "line": 5000
2026-06-17T06:47:32.1080150Z             }
2026-06-17T06:47:32.1080281Z           ]
2026-06-17T06:47:32.1080420Z         },
2026-06-17T06:47:32.1080567Z         "int": {
2026-06-17T06:47:32.1080726Z           "complete": false,
2026-06-17T06:47:32.1081016Z           "evidence": []
2026-06-17T06:47:32.1081169Z         },
2026-06-17T06:47:32.1081302Z         "unit": {
2026-06-17T06:47:32.1081469Z           "complete": true,
2026-06-17T06:47:32.1081616Z           "evidence": [
2026-06-17T06:47:32.1081760Z             {
2026-06-17T06:47:32.1081951Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-17T06:47:32.1082103Z               "line": 142
2026-06-17T06:47:32.1082241Z             },
2026-06-17T06:47:32.1082385Z             {
2026-06-17T06:47:32.1082677Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-17T06:47:32.1082822Z               "line": 194
2026-06-17T06:47:32.1082970Z             },
2026-06-17T06:47:32.1083108Z             {
2026-06-17T06:47:32.1083295Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-17T06:47:32.1083451Z               "line": 235
2026-06-17T06:47:32.1083591Z             },
2026-06-17T06:47:32.1083738Z             {
2026-06-17T06:47:32.1083934Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-17T06:47:32.1084081Z               "line": 140
2026-06-17T06:47:32.1084225Z             },
2026-06-17T06:47:32.1084367Z             {
2026-06-17T06:47:32.1084564Z               "path": "crates/spt-store/src/access.rs",
2026-06-17T06:47:32.1084715Z               "line": 247
2026-06-17T06:47:32.1084864Z             },
2026-06-17T06:47:32.1085005Z             {
2026-06-17T06:47:32.1085196Z               "path": "crates/spt-store/src/access.rs",
2026-06-17T06:47:32.1085351Z               "line": 277
2026-06-17T06:47:32.1085498Z             },
2026-06-17T06:47:32.1085637Z             {
2026-06-17T06:47:32.1085823Z               "path": "crates/spt-store/src/access.rs",
2026-06-17T06:47:32.1085975Z               "line": 310
2026-06-17T06:47:32.1086118Z             },
2026-06-17T06:47:32.1086262Z             {
2026-06-17T06:47:32.1086443Z               "path": "crates/spt-store/src/access.rs",
2026-06-17T06:47:32.1086591Z               "line": 329
2026-06-17T06:47:32.1086738Z             },
2026-06-17T06:47:32.1086881Z             {
2026-06-17T06:47:32.1087072Z               "path": "crates/spt-store/src/access.rs",
2026-06-17T06:47:32.1087220Z               "line": 362
2026-06-17T06:47:32.1087353Z             },
2026-06-17T06:47:32.1087497Z             {
2026-06-17T06:47:32.1087678Z               "path": "crates/spt-store/src/access.rs",
2026-06-17T06:47:32.1087835Z               "line": 386
2026-06-17T06:47:32.1087976Z             },
2026-06-17T06:47:32.1088124Z             {
2026-06-17T06:47:32.1088313Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1088467Z               "line": 7558
2026-06-17T06:47:32.1088608Z             }
2026-06-17T06:47:32.1088738Z           ]
2026-06-17T06:47:32.1088885Z         }
2026-06-17T06:47:32.1089091Z       }
2026-06-17T06:47:32.1089233Z     },
2026-06-17T06:47:32.1089372Z     {
2026-06-17T06:47:32.1089548Z       "id": "REQ-SHELL-1",
2026-06-17T06:47:32.1090615Z       "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-17T06:47:32.1090771Z       "requiredStages": [
2026-06-17T06:47:32.1090913Z         "impl",
2026-06-17T06:47:32.1091062Z         "unit",
2026-06-17T06:47:32.1091204Z         "int"
2026-06-17T06:47:32.1091343Z       ],
2026-06-17T06:47:32.1091485Z       "stages": {
2026-06-17T06:47:32.1091634Z         "doc": {
2026-06-17T06:47:32.1091795Z           "complete": false,
2026-06-17T06:47:32.1091944Z           "evidence": []
2026-06-17T06:47:32.1092077Z         },
2026-06-17T06:47:32.1092225Z         "impl": {
2026-06-17T06:47:32.1092378Z           "complete": true,
2026-06-17T06:47:32.1092526Z           "evidence": [
2026-06-17T06:47:32.1092668Z             {
2026-06-17T06:47:32.1092964Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-17T06:47:32.1093126Z               "line": 189
2026-06-17T06:47:32.1093279Z             },
2026-06-17T06:47:32.1093420Z             {
2026-06-17T06:47:32.1093622Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-17T06:47:32.1093768Z               "line": 268
2026-06-17T06:47:32.1093912Z             },
2026-06-17T06:47:32.1094049Z             {
2026-06-17T06:47:32.1094250Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-17T06:47:32.1094407Z               "line": 27
2026-06-17T06:47:32.1094636Z             },
2026-06-17T06:47:32.1094785Z             {
2026-06-17T06:47:32.1094974Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-17T06:47:32.1095124Z               "line": 52
2026-06-17T06:47:32.1095270Z             },
2026-06-17T06:47:32.1095414Z             {
2026-06-17T06:47:32.1095613Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-17T06:47:32.1095765Z               "line": 144
2026-06-17T06:47:32.1095906Z             },
2026-06-17T06:47:32.1096049Z             {
2026-06-17T06:47:32.1096249Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-17T06:47:32.1096397Z               "line": 176
2026-06-17T06:47:32.1096540Z             },
2026-06-17T06:47:32.1096688Z             {
2026-06-17T06:47:32.1096878Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-17T06:47:32.1097037Z               "line": 22
2026-06-17T06:47:32.1097174Z             },
2026-06-17T06:47:32.1097308Z             {
2026-06-17T06:47:32.1097503Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-17T06:47:32.1097647Z               "line": 65
2026-06-17T06:47:32.1097794Z             },
2026-06-17T06:47:32.1097933Z             {
2026-06-17T06:47:32.1098123Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-17T06:47:32.1098272Z               "line": 76
2026-06-17T06:47:32.1098419Z             },
2026-06-17T06:47:32.1098560Z             {
2026-06-17T06:47:32.1098764Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-17T06:47:32.1098911Z               "line": 151
2026-06-17T06:47:32.1099135Z             },
2026-06-17T06:47:32.1099279Z             {
2026-06-17T06:47:32.1099464Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-17T06:47:32.1099627Z               "line": 210
2026-06-17T06:47:32.1099765Z             },
2026-06-17T06:47:32.1099909Z             {
2026-06-17T06:47:32.1100094Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-17T06:47:32.1100252Z               "line": 255
2026-06-17T06:47:32.1100399Z             },
2026-06-17T06:47:32.1100539Z             {
2026-06-17T06:47:32.1100723Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-17T06:47:32.1100873Z               "line": 277
2026-06-17T06:47:32.1101014Z             },
2026-06-17T06:47:32.1101156Z             {
2026-06-17T06:47:32.1101340Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-17T06:47:32.1101493Z               "line": 290
2026-06-17T06:47:32.1101636Z             },
2026-06-17T06:47:32.1101774Z             {
2026-06-17T06:47:32.1101951Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:32.1102093Z               "line": 217
2026-06-17T06:47:32.1102241Z             },
2026-06-17T06:47:32.1102383Z             {
2026-06-17T06:47:32.1102575Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:32.1102723Z               "line": 233
2026-06-17T06:47:32.1102861Z             },
2026-06-17T06:47:32.1102999Z             {
2026-06-17T06:47:32.1103195Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-17T06:47:32.1103338Z               "line": 41
2026-06-17T06:47:32.1103482Z             },
2026-06-17T06:47:32.1103629Z             {
2026-06-17T06:47:32.1103811Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-17T06:47:32.1103961Z               "line": 222
2026-06-17T06:47:32.1104095Z             },
2026-06-17T06:47:32.1104228Z             {
2026-06-17T06:47:32.1104530Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-17T06:47:32.1104677Z               "line": 173
2026-06-17T06:47:32.1104825Z             },
2026-06-17T06:47:32.1104963Z             {
2026-06-17T06:47:32.1105144Z               "path": "crates/spt/src/api/mod.rs",
2026-06-17T06:47:32.1105291Z               "line": 349
2026-06-17T06:47:32.1105421Z             },
2026-06-17T06:47:32.1105563Z             {
2026-06-17T06:47:32.1105741Z               "path": "crates/spt/src/api/mod.rs",
2026-06-17T06:47:32.1105994Z               "line": 414
2026-06-17T06:47:32.1106130Z             },
2026-06-17T06:47:32.1106273Z             {
2026-06-17T06:47:32.1106471Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:32.1106623Z               "line": 329
2026-06-17T06:47:32.1106757Z             },
2026-06-17T06:47:32.1106895Z             {
2026-06-17T06:47:32.1107068Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1107219Z               "line": 5992
2026-06-17T06:47:32.1107368Z             },
2026-06-17T06:47:32.1107515Z             {
2026-06-17T06:47:32.1107687Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1107834Z               "line": 6142
2026-06-17T06:47:32.1107973Z             },
2026-06-17T06:47:32.1108111Z             {
2026-06-17T06:47:32.1108279Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1108430Z               "line": 6318
2026-06-17T06:47:32.1108571Z             }
2026-06-17T06:47:32.1108712Z           ]
2026-06-17T06:47:32.1108856Z         },
2026-06-17T06:47:32.1109078Z         "int": {
2026-06-17T06:47:32.1109240Z           "complete": true,
2026-06-17T06:47:32.1109381Z           "evidence": [
2026-06-17T06:47:32.1109524Z             {
2026-06-17T06:47:32.1109733Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-17T06:47:32.1109873Z               "line": 709
2026-06-17T06:47:32.1110010Z             },
2026-06-17T06:47:32.1110145Z             {
2026-06-17T06:47:32.1110353Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-17T06:47:32.1110493Z               "line": 8
2026-06-17T06:47:32.1110635Z             },
2026-06-17T06:47:32.1110779Z             {
2026-06-17T06:47:32.1110983Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-17T06:47:32.1111128Z               "line": 49
2026-06-17T06:47:32.1111269Z             },
2026-06-17T06:47:32.1111404Z             {
2026-06-17T06:47:32.1111598Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:32.1111750Z               "line": 776
2026-06-17T06:47:32.1111891Z             },
2026-06-17T06:47:32.1112028Z             {
2026-06-17T06:47:32.1112220Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:32.1112362Z               "line": 1211
2026-06-17T06:47:32.1112496Z             },
2026-06-17T06:47:32.1112639Z             {
2026-06-17T06:47:32.1112835Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-17T06:47:32.1112983Z               "line": 17
2026-06-17T06:47:32.1113126Z             },
2026-06-17T06:47:32.1113273Z             {
2026-06-17T06:47:32.1113455Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-17T06:47:32.1113612Z               "line": 14
2026-06-17T06:47:32.1113746Z             }
2026-06-17T06:47:32.1113879Z           ]
2026-06-17T06:47:32.1114023Z         },
2026-06-17T06:47:32.1114165Z         "unit": {
2026-06-17T06:47:32.1114319Z           "complete": true,
2026-06-17T06:47:32.1114465Z           "evidence": [
2026-06-17T06:47:32.1114617Z             {
2026-06-17T06:47:32.1114807Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-17T06:47:32.1114956Z               "line": 246
2026-06-17T06:47:32.1115099Z             },
2026-06-17T06:47:32.1115232Z             {
2026-06-17T06:47:32.1115423Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-17T06:47:32.1115576Z               "line": 279
2026-06-17T06:47:32.1115713Z             },
2026-06-17T06:47:32.1115847Z             {
2026-06-17T06:47:32.1116128Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-17T06:47:32.1116282Z               "line": 319
2026-06-17T06:47:32.1116415Z             },
2026-06-17T06:47:32.1116544Z             {
2026-06-17T06:47:32.1116733Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-17T06:47:32.1116885Z               "line": 595
2026-06-17T06:47:32.1117021Z             },
2026-06-17T06:47:32.1117150Z             {
2026-06-17T06:47:32.1117336Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-17T06:47:32.1117585Z               "line": 668
2026-06-17T06:47:32.1117727Z             },
2026-06-17T06:47:32.1117862Z             {
2026-06-17T06:47:32.1118056Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-17T06:47:32.1118205Z               "line": 812
2026-06-17T06:47:32.1118342Z             },
2026-06-17T06:47:32.1118481Z             {
2026-06-17T06:47:32.1118657Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:32.1118806Z               "line": 595
2026-06-17T06:47:32.1119024Z             },
2026-06-17T06:47:32.1119164Z             {
2026-06-17T06:47:32.1119368Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-17T06:47:32.1119511Z               "line": 399
2026-06-17T06:47:32.1119648Z             },
2026-06-17T06:47:32.1119786Z             {
2026-06-17T06:47:32.1119955Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1120109Z               "line": 8200
2026-06-17T06:47:32.1120246Z             },
2026-06-17T06:47:32.1120395Z             {
2026-06-17T06:47:32.1120570Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1120719Z               "line": 8524
2026-06-17T06:47:32.1120847Z             },
2026-06-17T06:47:32.1120976Z             {
2026-06-17T06:47:32.1121143Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1121290Z               "line": 8941
2026-06-17T06:47:32.1121434Z             }
2026-06-17T06:47:32.1121562Z           ]
2026-06-17T06:47:32.1121716Z         }
2026-06-17T06:47:32.1121848Z       }
2026-06-17T06:47:32.1121988Z     },
2026-06-17T06:47:32.1122115Z     {
2026-06-17T06:47:32.1122267Z       "id": "REQ-SHELL-2",
2026-06-17T06:47:32.1124039Z       "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-17T06:47:32.1124206Z       "requiredStages": [
2026-06-17T06:47:32.1124348Z         "impl",
2026-06-17T06:47:32.1124497Z         "unit",
2026-06-17T06:47:32.1124639Z         "int"
2026-06-17T06:47:32.1124782Z       ],
2026-06-17T06:47:32.1124917Z       "stages": {
2026-06-17T06:47:32.1125067Z         "doc": {
2026-06-17T06:47:32.1125235Z           "complete": false,
2026-06-17T06:47:32.1125391Z           "evidence": []
2026-06-17T06:47:32.1125535Z         },
2026-06-17T06:47:32.1125668Z         "impl": {
2026-06-17T06:47:32.1125831Z           "complete": true,
2026-06-17T06:47:32.1125979Z           "evidence": [
2026-06-17T06:47:32.1126121Z             {
2026-06-17T06:47:32.1126331Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:32.1126489Z               "line": 217
2026-06-17T06:47:32.1126632Z             },
2026-06-17T06:47:32.1126776Z             {
2026-06-17T06:47:32.1126984Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-17T06:47:32.1127133Z               "line": 403
2026-06-17T06:47:32.1127279Z             },
2026-06-17T06:47:32.1127422Z             {
2026-06-17T06:47:32.1127610Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-17T06:47:32.1127768Z               "line": 250
2026-06-17T06:47:32.1127901Z             },
2026-06-17T06:47:32.1128149Z             {
2026-06-17T06:47:32.1128349Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:32.1128512Z               "line": 378
2026-06-17T06:47:32.1128654Z             },
2026-06-17T06:47:32.1128798Z             {
2026-06-17T06:47:32.1129089Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-17T06:47:32.1129236Z               "line": 30
2026-06-17T06:47:32.1129376Z             },
2026-06-17T06:47:32.1129513Z             {
2026-06-17T06:47:32.1129714Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-17T06:47:32.1129962Z               "line": 409
2026-06-17T06:47:32.1130104Z             },
2026-06-17T06:47:32.1130250Z             {
2026-06-17T06:47:32.1130435Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-17T06:47:32.1130592Z               "line": 445
2026-06-17T06:47:32.1130731Z             },
2026-06-17T06:47:32.1130873Z             {
2026-06-17T06:47:32.1131060Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-17T06:47:32.1131226Z               "line": 660
2026-06-17T06:47:32.1131364Z             },
2026-06-17T06:47:32.1131507Z             {
2026-06-17T06:47:32.1131698Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:32.1131845Z               "line": 348
2026-06-17T06:47:32.1131980Z             },
2026-06-17T06:47:32.1132117Z             {
2026-06-17T06:47:32.1132318Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-17T06:47:32.1132471Z               "line": 115
2026-06-17T06:47:32.1132610Z             },
2026-06-17T06:47:32.1132760Z             {
2026-06-17T06:47:32.1132950Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-17T06:47:32.1133101Z               "line": 120
2026-06-17T06:47:32.1133230Z             },
2026-06-17T06:47:32.1133359Z             {
2026-06-17T06:47:32.1133555Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-17T06:47:32.1133702Z               "line": 370
2026-06-17T06:47:32.1133851Z             },
2026-06-17T06:47:32.1133979Z             {
2026-06-17T06:47:32.1134175Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-17T06:47:32.1134322Z               "line": 496
2026-06-17T06:47:32.1134461Z             },
2026-06-17T06:47:32.1134599Z             {
2026-06-17T06:47:32.1134771Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-17T06:47:32.1134927Z               "line": 24
2026-06-17T06:47:32.1135062Z             },
2026-06-17T06:47:32.1135209Z             {
2026-06-17T06:47:32.1135391Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-17T06:47:32.1135542Z               "line": 76
2026-06-17T06:47:32.1135684Z             },
2026-06-17T06:47:32.1135819Z             {
2026-06-17T06:47:32.1136014Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-17T06:47:32.1136167Z               "line": 154
2026-06-17T06:47:32.1136313Z             },
2026-06-17T06:47:32.1136448Z             {
2026-06-17T06:47:32.1136643Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-17T06:47:32.1136796Z               "line": 177
2026-06-17T06:47:32.1136938Z             },
2026-06-17T06:47:32.1137078Z             {
2026-06-17T06:47:32.1137267Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-17T06:47:32.1137421Z               "line": 273
2026-06-17T06:47:32.1137568Z             },
2026-06-17T06:47:32.1137698Z             {
2026-06-17T06:47:32.1137896Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-17T06:47:32.1138039Z               "line": 456
2026-06-17T06:47:32.1138189Z             },
2026-06-17T06:47:32.1138318Z             {
2026-06-17T06:47:32.1138513Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-17T06:47:32.1138657Z               "line": 538
2026-06-17T06:47:32.1138805Z             },
2026-06-17T06:47:32.1139020Z             {
2026-06-17T06:47:32.1139215Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-17T06:47:32.1139372Z               "line": 27
2026-06-17T06:47:32.1139625Z             },
2026-06-17T06:47:32.1139773Z             {
2026-06-17T06:47:32.1139974Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-17T06:47:32.1140115Z               "line": 48
2026-06-17T06:47:32.1140255Z             },
2026-06-17T06:47:32.1140382Z             {
2026-06-17T06:47:32.1140580Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:32.1140739Z               "line": 513
2026-06-17T06:47:32.1140868Z             },
2026-06-17T06:47:32.1141009Z             {
2026-06-17T06:47:32.1141296Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1141447Z               "line": 1737
2026-06-17T06:47:32.1141586Z             },
2026-06-17T06:47:32.1141728Z             {
2026-06-17T06:47:32.1141910Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1142062Z               "line": 6006
2026-06-17T06:47:32.1142207Z             },
2026-06-17T06:47:32.1142344Z             {
2026-06-17T06:47:32.1142531Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1142677Z               "line": 6067
2026-06-17T06:47:32.1142817Z             },
2026-06-17T06:47:32.1142959Z             {
2026-06-17T06:47:32.1143123Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1143273Z               "line": 6095
2026-06-17T06:47:32.1143416Z             },
2026-06-17T06:47:32.1143557Z             {
2026-06-17T06:47:32.1143724Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1143876Z               "line": 6149
2026-06-17T06:47:32.1144019Z             },
2026-06-17T06:47:32.1144167Z             {
2026-06-17T06:47:32.1144333Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1144472Z               "line": 6404
2026-06-17T06:47:32.1144610Z             },
2026-06-17T06:47:32.1144740Z             {
2026-06-17T06:47:32.1144915Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1145074Z               "line": 6464
2026-06-17T06:47:32.1145211Z             },
2026-06-17T06:47:32.1145355Z             {
2026-06-17T06:47:32.1145531Z               "path": "crates/spt/src/wansend.rs",
2026-06-17T06:47:32.1145685Z               "line": 298
2026-06-17T06:47:32.1145816Z             },
2026-06-17T06:47:32.1145961Z             {
2026-06-17T06:47:32.1146140Z               "path": "crates/spt/src/wansend.rs",
2026-06-17T06:47:32.1146283Z               "line": 339
2026-06-17T06:47:32.1146431Z             }
2026-06-17T06:47:32.1146564Z           ]
2026-06-17T06:47:32.1146708Z         },
2026-06-17T06:47:32.1146855Z         "int": {
2026-06-17T06:47:32.1147018Z           "complete": true,
2026-06-17T06:47:32.1147165Z           "evidence": [
2026-06-17T06:47:32.1147299Z             {
2026-06-17T06:47:32.1147508Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-17T06:47:32.1147657Z               "line": 702
2026-06-17T06:47:32.1147804Z             },
2026-06-17T06:47:32.1147943Z             {
2026-06-17T06:47:32.1148128Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:32.1148277Z               "line": 776
2026-06-17T06:47:32.1148418Z             },
2026-06-17T06:47:32.1148557Z             {
2026-06-17T06:47:32.1148740Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:32.1148893Z               "line": 1211
2026-06-17T06:47:32.1149102Z             },
2026-06-17T06:47:32.1149246Z             {
2026-06-17T06:47:32.1149455Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-17T06:47:32.1149594Z               "line": 18
2026-06-17T06:47:32.1149731Z             }
2026-06-17T06:47:32.1149876Z           ]
2026-06-17T06:47:32.1150018Z         },
2026-06-17T06:47:32.1150143Z         "unit": {
2026-06-17T06:47:32.1150290Z           "complete": true,
2026-06-17T06:47:32.1150448Z           "evidence": [
2026-06-17T06:47:32.1150590Z             {
2026-06-17T06:47:32.1150792Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-17T06:47:32.1150938Z               "line": 744
2026-06-17T06:47:32.1151082Z             },
2026-06-17T06:47:32.1151328Z             {
2026-06-17T06:47:32.1151513Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-17T06:47:32.1151659Z               "line": 796
2026-06-17T06:47:32.1151804Z             },
2026-06-17T06:47:32.1151945Z             {
2026-06-17T06:47:32.1152133Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-17T06:47:32.1152293Z               "line": 701
2026-06-17T06:47:32.1152438Z             },
2026-06-17T06:47:32.1152570Z             {
2026-06-17T06:47:32.1152772Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-17T06:47:32.1153043Z               "line": 750
2026-06-17T06:47:32.1153185Z             },
2026-06-17T06:47:32.1153325Z             {
2026-06-17T06:47:32.1153514Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-17T06:47:32.1153663Z               "line": 774
2026-06-17T06:47:32.1153795Z             },
2026-06-17T06:47:32.1153942Z             {
2026-06-17T06:47:32.1154131Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-17T06:47:32.1154289Z               "line": 603
2026-06-17T06:47:32.1154432Z             },
2026-06-17T06:47:32.1154574Z             {
2026-06-17T06:47:32.1154766Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-17T06:47:32.1154903Z               "line": 624
2026-06-17T06:47:32.1155051Z             },
2026-06-17T06:47:32.1155189Z             {
2026-06-17T06:47:32.1155380Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-17T06:47:32.1155528Z               "line": 660
2026-06-17T06:47:32.1155676Z             },
2026-06-17T06:47:32.1155819Z             {
2026-06-17T06:47:32.1156014Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-17T06:47:32.1156158Z               "line": 714
2026-06-17T06:47:32.1156297Z             },
2026-06-17T06:47:32.1156444Z             {
2026-06-17T06:47:32.1156635Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-17T06:47:32.1156781Z               "line": 732
2026-06-17T06:47:32.1156925Z             },
2026-06-17T06:47:32.1157067Z             {
2026-06-17T06:47:32.1157254Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-17T06:47:32.1157401Z               "line": 766
2026-06-17T06:47:32.1157540Z             },
2026-06-17T06:47:32.1157677Z             {
2026-06-17T06:47:32.1157869Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-17T06:47:32.1158016Z               "line": 841
2026-06-17T06:47:32.1158146Z             },
2026-06-17T06:47:32.1158293Z             {
2026-06-17T06:47:32.1158494Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-17T06:47:32.1158650Z               "line": 85
2026-06-17T06:47:32.1158775Z             },
2026-06-17T06:47:32.1158912Z             {
2026-06-17T06:47:32.1159173Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1159328Z               "line": 7358
2026-06-17T06:47:32.1159467Z             },
2026-06-17T06:47:32.1159606Z             {
2026-06-17T06:47:32.1159782Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1159934Z               "line": 8278
2026-06-17T06:47:32.1160074Z             },
2026-06-17T06:47:32.1160211Z             {
2026-06-17T06:47:32.1160389Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1160535Z               "line": 8348
2026-06-17T06:47:32.1160674Z             },
2026-06-17T06:47:32.1160817Z             {
2026-06-17T06:47:32.1160984Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1161141Z               "line": 8386
2026-06-17T06:47:32.1161279Z             }
2026-06-17T06:47:32.1161418Z           ]
2026-06-17T06:47:32.1161561Z         }
2026-06-17T06:47:32.1161686Z       }
2026-06-17T06:47:32.1161832Z     },
2026-06-17T06:47:32.1161960Z     {
2026-06-17T06:47:32.1162111Z       "id": "REQ-SHELL-3",
2026-06-17T06:47:32.1164285Z       "title": "Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).",
2026-06-17T06:47:32.1164455Z       "requiredStages": [
2026-06-17T06:47:32.1164603Z         "impl",
2026-06-17T06:47:32.1164839Z         "unit",
2026-06-17T06:47:32.1164983Z         "int"
2026-06-17T06:47:32.1165129Z       ],
2026-06-17T06:47:32.1165273Z       "stages": {
2026-06-17T06:47:32.1165415Z         "doc": {
2026-06-17T06:47:32.1165574Z           "complete": false,
2026-06-17T06:47:32.1165725Z           "evidence": []
2026-06-17T06:47:32.1165870Z         },
2026-06-17T06:47:32.1166012Z         "impl": {
2026-06-17T06:47:32.1166175Z           "complete": true,
2026-06-17T06:47:32.1166322Z           "evidence": [
2026-06-17T06:47:32.1166466Z             {
2026-06-17T06:47:32.1166656Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:32.1166805Z               "line": 224
2026-06-17T06:47:32.1166941Z             },
2026-06-17T06:47:32.1167072Z             {
2026-06-17T06:47:32.1167265Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-17T06:47:32.1167413Z               "line": 36
2026-06-17T06:47:32.1167552Z             },
2026-06-17T06:47:32.1167698Z             {
2026-06-17T06:47:32.1167890Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-17T06:47:32.1168052Z               "line": 137
2026-06-17T06:47:32.1168191Z             },
2026-06-17T06:47:32.1168333Z             {
2026-06-17T06:47:32.1168519Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-17T06:47:32.1168672Z               "line": 153
2026-06-17T06:47:32.1168824Z             },
2026-06-17T06:47:32.1169035Z             {
2026-06-17T06:47:32.1169244Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-17T06:47:32.1169393Z               "line": 165
2026-06-17T06:47:32.1169529Z             },
2026-06-17T06:47:32.1169672Z             {
2026-06-17T06:47:32.1169861Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-17T06:47:32.1170023Z               "line": 242
2026-06-17T06:47:32.1170156Z             },
2026-06-17T06:47:32.1170299Z             {
2026-06-17T06:47:32.1170489Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-17T06:47:32.1170644Z               "line": 267
2026-06-17T06:47:32.1170785Z             },
2026-06-17T06:47:32.1170924Z             {
2026-06-17T06:47:32.1171105Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-17T06:47:32.1171253Z               "line": 293
2026-06-17T06:47:32.1171391Z             },
2026-06-17T06:47:32.1171519Z             {
2026-06-17T06:47:32.1171706Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-17T06:47:32.1171859Z               "line": 51
2026-06-17T06:47:32.1172006Z             },
2026-06-17T06:47:32.1172149Z             {
2026-06-17T06:47:32.1172340Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-17T06:47:32.1172491Z               "line": 333
2026-06-17T06:47:32.1172624Z             },
2026-06-17T06:47:32.1172770Z             {
2026-06-17T06:47:32.1172957Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-17T06:47:32.1173103Z               "line": 373
2026-06-17T06:47:32.1173248Z             },
2026-06-17T06:47:32.1173390Z             {
2026-06-17T06:47:32.1173581Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-17T06:47:32.1173728Z               "line": 602
2026-06-17T06:47:32.1173863Z             },
2026-06-17T06:47:32.1174001Z             {
2026-06-17T06:47:32.1174197Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-17T06:47:32.1174349Z               "line": 132
2026-06-17T06:47:32.1174479Z             },
2026-06-17T06:47:32.1174620Z             {
2026-06-17T06:47:32.1174916Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-17T06:47:32.1175067Z               "line": 444
2026-06-17T06:47:32.1175205Z             },
2026-06-17T06:47:32.1175337Z             {
2026-06-17T06:47:32.1175529Z               "path": "crates/spt-proto/src/event.rs",
2026-06-17T06:47:32.1175675Z               "line": 74
2026-06-17T06:47:32.1175820Z             },
2026-06-17T06:47:32.1175956Z             {
2026-06-17T06:47:32.1176158Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:32.1176411Z               "line": 550
2026-06-17T06:47:32.1176549Z             },
2026-06-17T06:47:32.1176692Z             {
2026-06-17T06:47:32.1176878Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:32.1177035Z               "line": 392
2026-06-17T06:47:32.1177172Z             },
2026-06-17T06:47:32.1177317Z             {
2026-06-17T06:47:32.1177492Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1177637Z               "line": 6190
2026-06-17T06:47:32.1177783Z             }
2026-06-17T06:47:32.1177915Z           ]
2026-06-17T06:47:32.1178059Z         },
2026-06-17T06:47:32.1178192Z         "int": {
2026-06-17T06:47:32.1178341Z           "complete": true,
2026-06-17T06:47:32.1178502Z           "evidence": [
2026-06-17T06:47:32.1178632Z             {
2026-06-17T06:47:32.1178826Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:32.1179046Z               "line": 1260
2026-06-17T06:47:32.1179189Z             },
2026-06-17T06:47:32.1179333Z             {
2026-06-17T06:47:32.1179518Z               "path": "crates/spt/tests/drive_e2e.rs",
2026-06-17T06:47:32.1179662Z               "line": 17
2026-06-17T06:47:32.1183051Z             }
2026-06-17T06:47:32.1183212Z           ]
2026-06-17T06:47:32.1183339Z         },
2026-06-17T06:47:32.1183493Z         "unit": {
2026-06-17T06:47:32.1183650Z           "complete": true,
2026-06-17T06:47:32.1183798Z           "evidence": [
2026-06-17T06:47:32.1183936Z             {
2026-06-17T06:47:32.1184141Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-17T06:47:32.1184293Z               "line": 311
2026-06-17T06:47:32.1184437Z             },
2026-06-17T06:47:32.1184580Z             {
2026-06-17T06:47:32.1184771Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-17T06:47:32.1184933Z               "line": 325
2026-06-17T06:47:32.1185067Z             },
2026-06-17T06:47:32.1185199Z             {
2026-06-17T06:47:32.1185396Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-17T06:47:32.1185546Z               "line": 343
2026-06-17T06:47:32.1185690Z             },
2026-06-17T06:47:32.1185831Z             {
2026-06-17T06:47:32.1186021Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-17T06:47:32.1186169Z               "line": 364
2026-06-17T06:47:32.1186308Z             },
2026-06-17T06:47:32.1186437Z             {
2026-06-17T06:47:32.1186637Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-17T06:47:32.1186789Z               "line": 376
2026-06-17T06:47:32.1186928Z             },
2026-06-17T06:47:32.1187070Z             {
2026-06-17T06:47:32.1187257Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-17T06:47:32.1187414Z               "line": 897
2026-06-17T06:47:32.1187557Z             },
2026-06-17T06:47:32.1187690Z             {
2026-06-17T06:47:32.1187872Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-17T06:47:32.1188014Z               "line": 957
2026-06-17T06:47:32.1188153Z             },
2026-06-17T06:47:32.1188292Z             {
2026-06-17T06:47:32.1188480Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-17T06:47:32.1188624Z               "line": 338
2026-06-17T06:47:32.1188761Z             },
2026-06-17T06:47:32.1188906Z             {
2026-06-17T06:47:32.1189178Z               "path": "crates/spt/src/api/mod.rs",
2026-06-17T06:47:32.1189326Z               "line": 743
2026-06-17T06:47:32.1189468Z             },
2026-06-17T06:47:32.1189739Z             {
2026-06-17T06:47:32.1189921Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1190068Z               "line": 8060
2026-06-17T06:47:32.1190212Z             }
2026-06-17T06:47:32.1190354Z           ]
2026-06-17T06:47:32.1190489Z         }
2026-06-17T06:47:32.1190630Z       }
2026-06-17T06:47:32.1190769Z     },
2026-06-17T06:47:32.1190905Z     {
2026-06-17T06:47:32.1191056Z       "id": "REQ-SHELL-4",
2026-06-17T06:47:32.1193126Z       "title": "Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).",
2026-06-17T06:47:32.1193413Z       "requiredStages": [
2026-06-17T06:47:32.1193550Z         "doc",
2026-06-17T06:47:32.1193688Z         "impl",
2026-06-17T06:47:32.1193829Z         "unit",
2026-06-17T06:47:32.1193962Z         "int"
2026-06-17T06:47:32.1194101Z       ],
2026-06-17T06:47:32.1194233Z       "stages": {
2026-06-17T06:47:32.1194382Z         "doc": {
2026-06-17T06:47:32.1194534Z           "complete": true,
2026-06-17T06:47:32.1194678Z           "evidence": [
2026-06-17T06:47:32.1194825Z             {
2026-06-17T06:47:32.1194984Z               "path": "CONTEXT.md",
2026-06-17T06:47:32.1195135Z               "line": 269
2026-06-17T06:47:32.1195270Z             },
2026-06-17T06:47:32.1195411Z             {
2026-06-17T06:47:32.1195731Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-17T06:47:32.1195880Z               "line": 88
2026-06-17T06:47:32.1196022Z             }
2026-06-17T06:47:32.1196168Z           ]
2026-06-17T06:47:32.1196311Z         },
2026-06-17T06:47:32.1196452Z         "impl": {
2026-06-17T06:47:32.1196606Z           "complete": true,
2026-06-17T06:47:32.1196753Z           "evidence": [
2026-06-17T06:47:32.1196892Z             {
2026-06-17T06:47:32.1197086Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:32.1197230Z               "line": 238
2026-06-17T06:47:32.1197359Z             },
2026-06-17T06:47:32.1197498Z             {
2026-06-17T06:47:32.1197702Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-17T06:47:32.1197851Z               "line": 61
2026-06-17T06:47:32.1197988Z             },
2026-06-17T06:47:32.1198132Z             {
2026-06-17T06:47:32.1198317Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-17T06:47:32.1198466Z               "line": 218
2026-06-17T06:47:32.1198598Z             },
2026-06-17T06:47:32.1198742Z             {
2026-06-17T06:47:32.1198936Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-17T06:47:32.1199180Z               "line": 245
2026-06-17T06:47:32.1199321Z             },
2026-06-17T06:47:32.1199461Z             {
2026-06-17T06:47:32.1199650Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:32.1199800Z               "line": 566
2026-06-17T06:47:32.1199942Z             },
2026-06-17T06:47:32.1200081Z             {
2026-06-17T06:47:32.1200271Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:32.1200425Z               "line": 1141
2026-06-17T06:47:32.1200562Z             },
2026-06-17T06:47:32.1200706Z             {
2026-06-17T06:47:32.1200891Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:32.1201035Z               "line": 1153
2026-06-17T06:47:32.1201172Z             },
2026-06-17T06:47:32.1201314Z             {
2026-06-17T06:47:32.1201512Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:32.1201660Z               "line": 1194
2026-06-17T06:47:32.1201908Z             },
2026-06-17T06:47:32.1202052Z             {
2026-06-17T06:47:32.1202246Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-17T06:47:32.1202390Z               "line": 452
2026-06-17T06:47:32.1202532Z             },
2026-06-17T06:47:32.1202677Z             {
2026-06-17T06:47:32.1202866Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-17T06:47:32.1203010Z               "line": 44
2026-06-17T06:47:32.1203142Z             },
2026-06-17T06:47:32.1203277Z             {
2026-06-17T06:47:32.1203568Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-17T06:47:32.1203714Z               "line": 208
2026-06-17T06:47:32.1203854Z             },
2026-06-17T06:47:32.1203983Z             {
2026-06-17T06:47:32.1204176Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-17T06:47:32.1204328Z               "line": 227
2026-06-17T06:47:32.1204474Z             },
2026-06-17T06:47:32.1204604Z             {
2026-06-17T06:47:32.1204794Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-17T06:47:32.1204942Z               "line": 253
2026-06-17T06:47:32.1205080Z             },
2026-06-17T06:47:32.1205220Z             {
2026-06-17T06:47:32.1205404Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-17T06:47:32.1205558Z               "line": 272
2026-06-17T06:47:32.1205700Z             },
2026-06-17T06:47:32.1205840Z             {
2026-06-17T06:47:32.1206038Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-17T06:47:32.1206188Z               "line": 392
2026-06-17T06:47:32.1206334Z             },
2026-06-17T06:47:32.1206469Z             {
2026-06-17T06:47:32.1206658Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-17T06:47:32.1206805Z               "line": 421
2026-06-17T06:47:32.1206936Z             },
2026-06-17T06:47:32.1207075Z             {
2026-06-17T06:47:32.1207270Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-17T06:47:32.1207418Z               "line": 439
2026-06-17T06:47:32.1207547Z             },
2026-06-17T06:47:32.1207689Z             {
2026-06-17T06:47:32.1207876Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-17T06:47:32.1208019Z               "line": 458
2026-06-17T06:47:32.1208162Z             },
2026-06-17T06:47:32.1208300Z             {
2026-06-17T06:47:32.1208496Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-17T06:47:32.1208643Z               "line": 486
2026-06-17T06:47:32.1208787Z             },
2026-06-17T06:47:32.1208925Z             {
2026-06-17T06:47:32.1209196Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:32.1209341Z               "line": 569
2026-06-17T06:47:32.1209482Z             },
2026-06-17T06:47:32.1209625Z             {
2026-06-17T06:47:32.1209811Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:32.1209963Z               "line": 774
2026-06-17T06:47:32.1210107Z             },
2026-06-17T06:47:32.1210239Z             {
2026-06-17T06:47:32.1210426Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:32.1210569Z               "line": 431
2026-06-17T06:47:32.1210708Z             },
2026-06-17T06:47:32.1210850Z             {
2026-06-17T06:47:32.1211027Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1211169Z               "line": 6246
2026-06-17T06:47:32.1211304Z             }
2026-06-17T06:47:32.1211446Z           ]
2026-06-17T06:47:32.1211581Z         },
2026-06-17T06:47:32.1211718Z         "int": {
2026-06-17T06:47:32.1211874Z           "complete": true,
2026-06-17T06:47:32.1212026Z           "evidence": [
2026-06-17T06:47:32.1212153Z             {
2026-06-17T06:47:32.1212345Z               "path": "crates/spt/tests/tunnel_e2e.rs",
2026-06-17T06:47:32.1212482Z               "line": 18
2026-06-17T06:47:32.1212621Z             }
2026-06-17T06:47:32.1212753Z           ]
2026-06-17T06:47:32.1212893Z         },
2026-06-17T06:47:32.1213031Z         "unit": {
2026-06-17T06:47:32.1213270Z           "complete": true,
2026-06-17T06:47:32.1213416Z           "evidence": [
2026-06-17T06:47:32.1213561Z             {
2026-06-17T06:47:32.1213750Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:32.1213904Z               "line": 1391
2026-06-17T06:47:32.1214046Z             },
2026-06-17T06:47:32.1214176Z             {
2026-06-17T06:47:32.1214366Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:32.1214510Z               "line": 1420
2026-06-17T06:47:32.1214651Z             },
2026-06-17T06:47:32.1214884Z             {
2026-06-17T06:47:32.1215073Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-17T06:47:32.1215217Z               "line": 504
2026-06-17T06:47:32.1215354Z             },
2026-06-17T06:47:32.1215498Z             {
2026-06-17T06:47:32.1215688Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-17T06:47:32.1215836Z               "line": 514
2026-06-17T06:47:32.1215978Z             },
2026-06-17T06:47:32.1216123Z             {
2026-06-17T06:47:32.1216313Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-17T06:47:32.1216466Z               "line": 531
2026-06-17T06:47:32.1216598Z             },
2026-06-17T06:47:32.1216738Z             {
2026-06-17T06:47:32.1216933Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-17T06:47:32.1217086Z               "line": 543
2026-06-17T06:47:32.1217223Z             },
2026-06-17T06:47:32.1217351Z             {
2026-06-17T06:47:32.1217535Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-17T06:47:32.1217692Z               "line": 555
2026-06-17T06:47:32.1217830Z             },
2026-06-17T06:47:32.1217964Z             {
2026-06-17T06:47:32.1218145Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:32.1218298Z               "line": 1075
2026-06-17T06:47:32.1218441Z             },
2026-06-17T06:47:32.1218579Z             {
2026-06-17T06:47:32.1218755Z               "path": "crates/spt/src/api/mod.rs",
2026-06-17T06:47:32.1218908Z               "line": 750
2026-06-17T06:47:32.1219127Z             }
2026-06-17T06:47:32.1219262Z           ]
2026-06-17T06:47:32.1219394Z         }
2026-06-17T06:47:32.1219533Z       }
2026-06-17T06:47:32.1219671Z     },
2026-06-17T06:47:32.1219814Z     {
2026-06-17T06:47:32.1219958Z       "id": "REQ-SHELL-5",
2026-06-17T06:47:32.1221339Z       "title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).",
2026-06-17T06:47:32.1221507Z       "requiredStages": [
2026-06-17T06:47:32.1221644Z         "doc",
2026-06-17T06:47:32.1221792Z         "impl",
2026-06-17T06:47:32.1221944Z         "unit",
2026-06-17T06:47:32.1222088Z         "int"
2026-06-17T06:47:32.1222217Z       ],
2026-06-17T06:47:32.1222363Z       "stages": {
2026-06-17T06:47:32.1222506Z         "doc": {
2026-06-17T06:47:32.1222656Z           "complete": true,
2026-06-17T06:47:32.1222804Z           "evidence": [
2026-06-17T06:47:32.1222943Z             {
2026-06-17T06:47:32.1223110Z               "path": "CONTEXT.md",
2026-06-17T06:47:32.1223252Z               "line": 272
2026-06-17T06:47:32.1223390Z             }
2026-06-17T06:47:32.1223534Z           ]
2026-06-17T06:47:32.1223671Z         },
2026-06-17T06:47:32.1223811Z         "impl": {
2026-06-17T06:47:32.1223958Z           "complete": true,
2026-06-17T06:47:32.1224111Z           "evidence": [
2026-06-17T06:47:32.1224244Z             {
2026-06-17T06:47:32.1224436Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-17T06:47:32.1224583Z               "line": 256
2026-06-17T06:47:32.1224713Z             }
2026-06-17T06:47:32.1224854Z           ]
2026-06-17T06:47:32.1224979Z         },
2026-06-17T06:47:32.1225122Z         "int": {
2026-06-17T06:47:32.1225373Z           "complete": true,
2026-06-17T06:47:32.1225523Z           "evidence": [
2026-06-17T06:47:32.1225667Z             {
2026-06-17T06:47:32.1225857Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:32.1226011Z               "line": 825
2026-06-17T06:47:32.1226148Z             },
2026-06-17T06:47:32.1226287Z             {
2026-06-17T06:47:32.1226473Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:32.1226635Z               "line": 1288
2026-06-17T06:47:32.1226868Z             },
2026-06-17T06:47:32.1227007Z             {
2026-06-17T06:47:32.1227221Z               "path": "crates/spt/tests/gateway_owner_shell_e2e.rs",
2026-06-17T06:47:32.1227369Z               "line": 23
2026-06-17T06:47:32.1227512Z             }
2026-06-17T06:47:32.1227646Z           ]
2026-06-17T06:47:32.1227787Z         },
2026-06-17T06:47:32.1227935Z         "unit": {
2026-06-17T06:47:32.1228090Z           "complete": true,
2026-06-17T06:47:32.1228238Z           "evidence": [
2026-06-17T06:47:32.1228376Z             {
2026-06-17T06:47:32.1228563Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-17T06:47:32.1228705Z               "line": 803
2026-06-17T06:47:32.1228844Z             }
2026-06-17T06:47:32.1229072Z           ]
2026-06-17T06:47:32.1229216Z         }
2026-06-17T06:47:32.1229349Z       }
2026-06-17T06:47:32.1229483Z     },
2026-06-17T06:47:32.1229611Z     {
2026-06-17T06:47:32.1229754Z       "id": "REQ-START-1",
2026-06-17T06:47:32.1230021Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-17T06:47:32.1230185Z       "requiredStages": [
2026-06-17T06:47:32.1230326Z         "impl",
2026-06-17T06:47:32.1230466Z         "unit"
2026-06-17T06:47:32.1230593Z       ],
2026-06-17T06:47:32.1230735Z       "stages": {
2026-06-17T06:47:32.1230875Z         "doc": {
2026-06-17T06:47:32.1231030Z           "complete": false,
2026-06-17T06:47:32.1231184Z           "evidence": []
2026-06-17T06:47:32.1231327Z         },
2026-06-17T06:47:32.1231470Z         "impl": {
2026-06-17T06:47:32.1231612Z           "complete": true,
2026-06-17T06:47:32.1231757Z           "evidence": [
2026-06-17T06:47:32.1231904Z             {
2026-06-17T06:47:32.1232086Z               "path": "crates/spt-store/src/seed.rs",
2026-06-17T06:47:32.1232238Z               "line": 16
2026-06-17T06:47:32.1232367Z             }
2026-06-17T06:47:32.1232509Z           ]
2026-06-17T06:47:32.1232628Z         },
2026-06-17T06:47:32.1232777Z         "int": {
2026-06-17T06:47:32.1232928Z           "complete": false,
2026-06-17T06:47:32.1233075Z           "evidence": []
2026-06-17T06:47:32.1233221Z         },
2026-06-17T06:47:32.1233365Z         "unit": {
2026-06-17T06:47:32.1233517Z           "complete": true,
2026-06-17T06:47:32.1233660Z           "evidence": [
2026-06-17T06:47:32.1233794Z             {
2026-06-17T06:47:32.1233970Z               "path": "crates/spt-store/src/seed.rs",
2026-06-17T06:47:32.1234127Z               "line": 43
2026-06-17T06:47:32.1234280Z             },
2026-06-17T06:47:32.1234423Z             {
2026-06-17T06:47:32.1234594Z               "path": "crates/spt-store/src/seed.rs",
2026-06-17T06:47:32.1234742Z               "line": 59
2026-06-17T06:47:32.1234885Z             }
2026-06-17T06:47:32.1235019Z           ]
2026-06-17T06:47:32.1235152Z         }
2026-06-17T06:47:32.1235292Z       }
2026-06-17T06:47:32.1235419Z     },
2026-06-17T06:47:32.1235563Z     {
2026-06-17T06:47:32.1235705Z       "id": "REQ-START-2",
2026-06-17T06:47:32.1235928Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-17T06:47:32.1236088Z       "requiredStages": [
2026-06-17T06:47:32.1236241Z         "impl",
2026-06-17T06:47:32.1236379Z         "unit",
2026-06-17T06:47:32.1236522Z         "int"
2026-06-17T06:47:32.1236666Z       ],
2026-06-17T06:47:32.1236813Z       "stages": {
2026-06-17T06:47:32.1236957Z         "doc": {
2026-06-17T06:47:32.1237108Z           "complete": false,
2026-06-17T06:47:32.1237257Z           "evidence": []
2026-06-17T06:47:32.1237510Z         },
2026-06-17T06:47:32.1237661Z         "impl": {
2026-06-17T06:47:32.1237825Z           "complete": true,
2026-06-17T06:47:32.1237966Z           "evidence": [
2026-06-17T06:47:32.1238111Z             {
2026-06-17T06:47:32.1238286Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:32.1238428Z               "line": 16
2026-06-17T06:47:32.1238575Z             },
2026-06-17T06:47:32.1238702Z             {
2026-06-17T06:47:32.1238885Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:32.1239213Z               "line": 92
2026-06-17T06:47:32.1239361Z             },
2026-06-17T06:47:32.1239490Z             {
2026-06-17T06:47:32.1239675Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:32.1239814Z               "line": 232
2026-06-17T06:47:32.1239956Z             }
2026-06-17T06:47:32.1240096Z           ]
2026-06-17T06:47:32.1240238Z         },
2026-06-17T06:47:32.1240382Z         "int": {
2026-06-17T06:47:32.1240528Z           "complete": true,
2026-06-17T06:47:32.1240678Z           "evidence": [
2026-06-17T06:47:32.1240815Z             {
2026-06-17T06:47:32.1241003Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-17T06:47:32.1241153Z               "line": 186
2026-06-17T06:47:32.1241285Z             }
2026-06-17T06:47:32.1241430Z           ]
2026-06-17T06:47:32.1241562Z         },
2026-06-17T06:47:32.1241707Z         "unit": {
2026-06-17T06:47:32.1241863Z           "complete": true,
2026-06-17T06:47:32.1242012Z           "evidence": [
2026-06-17T06:47:32.1242158Z             {
2026-06-17T06:47:32.1242336Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:32.1242492Z               "line": 466
2026-06-17T06:47:32.1242632Z             },
2026-06-17T06:47:32.1242774Z             {
2026-06-17T06:47:32.1242961Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:32.1243107Z               "line": 499
2026-06-17T06:47:32.1243242Z             }
2026-06-17T06:47:32.1243379Z           ]
2026-06-17T06:47:32.1243521Z         }
2026-06-17T06:47:32.1243654Z       }
2026-06-17T06:47:32.1243777Z     },
2026-06-17T06:47:32.1243920Z     {
2026-06-17T06:47:32.1244077Z       "id": "REQ-START-3",
2026-06-17T06:47:32.1244330Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-17T06:47:32.1244477Z       "requiredStages": [
2026-06-17T06:47:32.1244621Z         "impl",
2026-06-17T06:47:32.1244763Z         "unit",
2026-06-17T06:47:32.1244912Z         "int"
2026-06-17T06:47:32.1245050Z       ],
2026-06-17T06:47:32.1245194Z       "stages": {
2026-06-17T06:47:32.1245336Z         "doc": {
2026-06-17T06:47:32.1245479Z           "complete": false,
2026-06-17T06:47:32.1245636Z           "evidence": []
2026-06-17T06:47:32.1245765Z         },
2026-06-17T06:47:32.1245908Z         "impl": {
2026-06-17T06:47:32.1246065Z           "complete": true,
2026-06-17T06:47:32.1246209Z           "evidence": [
2026-06-17T06:47:32.1246345Z             {
2026-06-17T06:47:32.1246545Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-17T06:47:32.1246691Z               "line": 23
2026-06-17T06:47:32.1246830Z             },
2026-06-17T06:47:32.1246968Z             {
2026-06-17T06:47:32.1247164Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-17T06:47:32.1247306Z               "line": 205
2026-06-17T06:47:32.1247445Z             },
2026-06-17T06:47:32.1247588Z             {
2026-06-17T06:47:32.1247774Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-17T06:47:32.1247936Z               "line": 221
2026-06-17T06:47:32.1248080Z             },
2026-06-17T06:47:32.1248216Z             {
2026-06-17T06:47:32.1248404Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:32.1248560Z               "line": 17
2026-06-17T06:47:32.1248695Z             },
2026-06-17T06:47:32.1248842Z             {
2026-06-17T06:47:32.1249107Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:32.1249258Z               "line": 35
2026-06-17T06:47:32.1249502Z             },
2026-06-17T06:47:32.1249644Z             {
2026-06-17T06:47:32.1249835Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:32.1249984Z               "line": 93
2026-06-17T06:47:32.1250122Z             }
2026-06-17T06:47:32.1250254Z           ]
2026-06-17T06:47:32.1250393Z         },
2026-06-17T06:47:32.1250536Z         "int": {
2026-06-17T06:47:32.1250685Z           "complete": true,
2026-06-17T06:47:32.1250845Z           "evidence": [
2026-06-17T06:47:32.1250971Z             {
2026-06-17T06:47:32.1251257Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-17T06:47:32.1251403Z               "line": 488
2026-06-17T06:47:32.1251543Z             }
2026-06-17T06:47:32.1251681Z           ]
2026-06-17T06:47:32.1251817Z         },
2026-06-17T06:47:32.1251980Z         "unit": {
2026-06-17T06:47:32.1252137Z           "complete": true,
2026-06-17T06:47:32.1252286Z           "evidence": [
2026-06-17T06:47:32.1252413Z             {
2026-06-17T06:47:32.1252600Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-17T06:47:32.1252752Z               "line": 331
2026-06-17T06:47:32.1252896Z             },
2026-06-17T06:47:32.1253038Z             {
2026-06-17T06:47:32.1253230Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-17T06:47:32.1253376Z               "line": 352
2026-06-17T06:47:32.1253516Z             },
2026-06-17T06:47:32.1253653Z             {
2026-06-17T06:47:32.1253846Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-17T06:47:32.1253996Z               "line": 362
2026-06-17T06:47:32.1254143Z             },
2026-06-17T06:47:32.1254284Z             {
2026-06-17T06:47:32.1254465Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:32.1254623Z               "line": 467
2026-06-17T06:47:32.1254752Z             },
2026-06-17T06:47:32.1254885Z             {
2026-06-17T06:47:32.1255066Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:32.1255219Z               "line": 500
2026-06-17T06:47:32.1255356Z             },
2026-06-17T06:47:32.1255500Z             {
2026-06-17T06:47:32.1255686Z               "path": "crates/spt/src/api/startup.rs",
2026-06-17T06:47:32.1255834Z               "line": 508
2026-06-17T06:47:32.1255967Z             }
2026-06-17T06:47:32.1256097Z           ]
2026-06-17T06:47:32.1256239Z         }
2026-06-17T06:47:32.1256374Z       }
2026-06-17T06:47:32.1256510Z     },
2026-06-17T06:47:32.1256650Z     {
2026-06-17T06:47:32.1256797Z       "id": "REQ-START-4",
2026-06-17T06:47:32.1257025Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-17T06:47:32.1257175Z       "requiredStages": [
2026-06-17T06:47:32.1257318Z         "impl",
2026-06-17T06:47:32.1257457Z         "unit"
2026-06-17T06:47:32.1257599Z       ],
2026-06-17T06:47:32.1257734Z       "stages": {
2026-06-17T06:47:32.1257871Z         "doc": {
2026-06-17T06:47:32.1258034Z           "complete": false,
2026-06-17T06:47:32.1258186Z           "evidence": []
2026-06-17T06:47:32.1258325Z         },
2026-06-17T06:47:32.1258463Z         "impl": {
2026-06-17T06:47:32.1258621Z           "complete": true,
2026-06-17T06:47:32.1258772Z           "evidence": [
2026-06-17T06:47:32.1258911Z             {
2026-06-17T06:47:32.1259207Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:32.1259360Z               "line": 581
2026-06-17T06:47:32.1259501Z             }
2026-06-17T06:47:32.1259625Z           ]
2026-06-17T06:47:32.1259766Z         },
2026-06-17T06:47:32.1259914Z         "int": {
2026-06-17T06:47:32.1260062Z           "complete": false,
2026-06-17T06:47:32.1260219Z           "evidence": []
2026-06-17T06:47:32.1260353Z         },
2026-06-17T06:47:32.1260495Z         "unit": {
2026-06-17T06:47:32.1260648Z           "complete": true,
2026-06-17T06:47:32.1260795Z           "evidence": [
2026-06-17T06:47:32.1260939Z             {
2026-06-17T06:47:32.1261130Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:32.1261287Z               "line": 1022
2026-06-17T06:47:32.1261521Z             }
2026-06-17T06:47:32.1261663Z           ]
2026-06-17T06:47:32.1261788Z         }
2026-06-17T06:47:32.1261926Z       }
2026-06-17T06:47:32.1262064Z     },
2026-06-17T06:47:32.1262204Z     {
2026-06-17T06:47:32.1262363Z       "id": "REQ-STORE-1",
2026-06-17T06:47:32.1263423Z       "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-17T06:47:32.1263679Z       "requiredStages": [
2026-06-17T06:47:32.1263828Z         "impl",
2026-06-17T06:47:32.1263970Z         "unit"
2026-06-17T06:47:32.1264105Z       ],
2026-06-17T06:47:32.1264247Z       "stages": {
2026-06-17T06:47:32.1264386Z         "doc": {
2026-06-17T06:47:32.1264532Z           "complete": false,
2026-06-17T06:47:32.1264694Z           "evidence": []
2026-06-17T06:47:32.1264835Z         },
2026-06-17T06:47:32.1264977Z         "impl": {
2026-06-17T06:47:32.1265146Z           "complete": true,
2026-06-17T06:47:32.1265287Z           "evidence": [
2026-06-17T06:47:32.1265436Z             {
2026-06-17T06:47:32.1265631Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-17T06:47:32.1265779Z               "line": 23
2026-06-17T06:47:32.1265921Z             },
2026-06-17T06:47:32.1266060Z             {
2026-06-17T06:47:32.1266251Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-17T06:47:32.1266408Z               "line": 46
2026-06-17T06:47:32.1266551Z             },
2026-06-17T06:47:32.1266681Z             {
2026-06-17T06:47:32.1266876Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-17T06:47:32.1267019Z               "line": 97
2026-06-17T06:47:32.1267162Z             },
2026-06-17T06:47:32.1267306Z             {
2026-06-17T06:47:32.1267503Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-17T06:47:32.1267661Z               "line": 125
2026-06-17T06:47:32.1267797Z             },
2026-06-17T06:47:32.1267936Z             {
2026-06-17T06:47:32.1268126Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-17T06:47:32.1268270Z               "line": 181
2026-06-17T06:47:32.1268417Z             },
2026-06-17T06:47:32.1268552Z             {
2026-06-17T06:47:32.1268760Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-17T06:47:32.1268914Z               "line": 205
2026-06-17T06:47:32.1269142Z             },
2026-06-17T06:47:32.1269285Z             {
2026-06-17T06:47:32.1269486Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-17T06:47:32.1269633Z               "line": 441
2026-06-17T06:47:32.1269772Z             },
2026-06-17T06:47:32.1269915Z             {
2026-06-17T06:47:32.1270118Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-17T06:47:32.1270260Z               "line": 25
2026-06-17T06:47:32.1270411Z             },
2026-06-17T06:47:32.1270551Z             {
2026-06-17T06:47:32.1270755Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-17T06:47:32.1270898Z               "line": 120
2026-06-17T06:47:32.1271046Z             },
2026-06-17T06:47:32.1271189Z             {
2026-06-17T06:47:32.1271380Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-17T06:47:32.1271528Z               "line": 148
2026-06-17T06:47:32.1271665Z             },
2026-06-17T06:47:32.1271800Z             {
2026-06-17T06:47:32.1271999Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-17T06:47:32.1272148Z               "line": 165
2026-06-17T06:47:32.1272295Z             },
2026-06-17T06:47:32.1272435Z             {
2026-06-17T06:47:32.1272624Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-17T06:47:32.1272768Z               "line": 180
2026-06-17T06:47:32.1272914Z             },
2026-06-17T06:47:32.1273047Z             {
2026-06-17T06:47:32.1273362Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-17T06:47:32.1273520Z               "line": 198
2026-06-17T06:47:32.1273663Z             },
2026-06-17T06:47:32.1273811Z             {
2026-06-17T06:47:32.1274011Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-17T06:47:32.1274164Z               "line": 207
2026-06-17T06:47:32.1274293Z             },
2026-06-17T06:47:32.1274439Z             {
2026-06-17T06:47:32.1274632Z               "path": "crates/spt-store/src/project.rs",
2026-06-17T06:47:32.1274879Z               "line": 16
2026-06-17T06:47:32.1275018Z             },
2026-06-17T06:47:32.1275154Z             {
2026-06-17T06:47:32.1275340Z               "path": "crates/spt-store/src/project.rs",
2026-06-17T06:47:32.1275486Z               "line": 63
2026-06-17T06:47:32.1275629Z             }
2026-06-17T06:47:32.1275776Z           ]
2026-06-17T06:47:32.1275919Z         },
2026-06-17T06:47:32.1276067Z         "int": {
2026-06-17T06:47:32.1276220Z           "complete": false,
2026-06-17T06:47:32.1276373Z           "evidence": []
2026-06-17T06:47:32.1276511Z         },
2026-06-17T06:47:32.1276659Z         "unit": {
2026-06-17T06:47:32.1276815Z           "complete": true,
2026-06-17T06:47:32.1276968Z           "evidence": [
2026-06-17T06:47:32.1277111Z             {
2026-06-17T06:47:32.1277297Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-17T06:47:32.1277455Z               "line": 558
2026-06-17T06:47:32.1277594Z             },
2026-06-17T06:47:32.1277741Z             {
2026-06-17T06:47:32.1277946Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-17T06:47:32.1278087Z               "line": 568
2026-06-17T06:47:32.1278226Z             },
2026-06-17T06:47:32.1278357Z             {
2026-06-17T06:47:32.1278554Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-17T06:47:32.1278710Z               "line": 590
2026-06-17T06:47:32.1278839Z             },
2026-06-17T06:47:32.1279063Z             {
2026-06-17T06:47:32.1279268Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-17T06:47:32.1279426Z               "line": 606
2026-06-17T06:47:32.1279564Z             },
2026-06-17T06:47:32.1279707Z             {
2026-06-17T06:47:32.1279902Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-17T06:47:32.1280051Z               "line": 629
2026-06-17T06:47:32.1280197Z             },
2026-06-17T06:47:32.1280332Z             {
2026-06-17T06:47:32.1280541Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-17T06:47:32.1280683Z               "line": 472
2026-06-17T06:47:32.1280825Z             },
2026-06-17T06:47:32.1280966Z             {
2026-06-17T06:47:32.1281158Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-17T06:47:32.1281315Z               "line": 507
2026-06-17T06:47:32.1281454Z             },
2026-06-17T06:47:32.1281591Z             {
2026-06-17T06:47:32.1281788Z               "path": "crates/spt-store/src/project.rs",
2026-06-17T06:47:32.1281940Z               "line": 120
2026-06-17T06:47:32.1282078Z             },
2026-06-17T06:47:32.1282221Z             {
2026-06-17T06:47:32.1282412Z               "path": "crates/spt-store/src/project.rs",
2026-06-17T06:47:32.1282564Z               "line": 128
2026-06-17T06:47:32.1282708Z             }
2026-06-17T06:47:32.1282846Z           ]
2026-06-17T06:47:32.1282985Z         }
2026-06-17T06:47:32.1283122Z       }
2026-06-17T06:47:32.1283247Z     },
2026-06-17T06:47:32.1283384Z     {
2026-06-17T06:47:32.1283536Z       "id": "REQ-SUBNET-1",
2026-06-17T06:47:32.1283971Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-17T06:47:32.1284122Z       "requiredStages": [
2026-06-17T06:47:32.1284257Z         "impl",
2026-06-17T06:47:32.1284409Z         "unit"
2026-06-17T06:47:32.1284538Z       ],
2026-06-17T06:47:32.1284685Z       "stages": {
2026-06-17T06:47:32.1284828Z         "doc": {
2026-06-17T06:47:32.1285109Z           "complete": false,
2026-06-17T06:47:32.1285258Z           "evidence": []
2026-06-17T06:47:32.1285400Z         },
2026-06-17T06:47:32.1285550Z         "impl": {
2026-06-17T06:47:32.1285700Z           "complete": true,
2026-06-17T06:47:32.1285857Z           "evidence": [
2026-06-17T06:47:32.1285998Z             {
2026-06-17T06:47:32.1286204Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.1286355Z               "line": 281
2026-06-17T06:47:32.1286494Z             },
2026-06-17T06:47:32.1286637Z             {
2026-06-17T06:47:32.1286933Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.1287091Z               "line": 599
2026-06-17T06:47:32.1287228Z             },
2026-06-17T06:47:32.1287367Z             {
2026-06-17T06:47:32.1287533Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1287686Z               "line": 3123
2026-06-17T06:47:32.1287830Z             },
2026-06-17T06:47:32.1287967Z             {
2026-06-17T06:47:32.1288140Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1288291Z               "line": 3433
2026-06-17T06:47:32.1292244Z             },
2026-06-17T06:47:32.1292418Z             {
2026-06-17T06:47:32.1292614Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1292772Z               "line": 3452
2026-06-17T06:47:32.1292902Z             },
2026-06-17T06:47:32.1293044Z             {
2026-06-17T06:47:32.1293221Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1293368Z               "line": 3516
2026-06-17T06:47:32.1293522Z             },
2026-06-17T06:47:32.1293658Z             {
2026-06-17T06:47:32.1293832Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1293977Z               "line": 3558
2026-06-17T06:47:32.1294110Z             },
2026-06-17T06:47:32.1294250Z             {
2026-06-17T06:47:32.1294411Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1294569Z               "line": 3747
2026-06-17T06:47:32.1294711Z             },
2026-06-17T06:47:32.1294855Z             {
2026-06-17T06:47:32.1295021Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1295174Z               "line": 3817
2026-06-17T06:47:32.1295312Z             },
2026-06-17T06:47:32.1295451Z             {
2026-06-17T06:47:32.1295627Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1295762Z               "line": 4041
2026-06-17T06:47:32.1295908Z             },
2026-06-17T06:47:32.1296042Z             {
2026-06-17T06:47:32.1296213Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1296370Z               "line": 4678
2026-06-17T06:47:32.1296516Z             },
2026-06-17T06:47:32.1296658Z             {
2026-06-17T06:47:32.1296831Z               "path": "crates/spt/src/wansend.rs",
2026-06-17T06:47:32.1296978Z               "line": 418
2026-06-17T06:47:32.1297116Z             }
2026-06-17T06:47:32.1297249Z           ]
2026-06-17T06:47:32.1297389Z         },
2026-06-17T06:47:32.1297531Z         "int": {
2026-06-17T06:47:32.1297689Z           "complete": false,
2026-06-17T06:47:32.1297836Z           "evidence": []
2026-06-17T06:47:32.1297970Z         },
2026-06-17T06:47:32.1298112Z         "unit": {
2026-06-17T06:47:32.1298265Z           "complete": true,
2026-06-17T06:47:32.1298408Z           "evidence": [
2026-06-17T06:47:32.1298551Z             {
2026-06-17T06:47:32.1298761Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.1298910Z               "line": 1477
2026-06-17T06:47:32.1299151Z             },
2026-06-17T06:47:32.1299289Z             {
2026-06-17T06:47:32.1299472Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1299636Z               "line": 9188
2026-06-17T06:47:32.1299787Z             },
2026-06-17T06:47:32.1299932Z             {
2026-06-17T06:47:32.1300102Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1300246Z               "line": 9358
2026-06-17T06:47:32.1300384Z             },
2026-06-17T06:47:32.1300527Z             {
2026-06-17T06:47:32.1300822Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1300984Z               "line": 9365
2026-06-17T06:47:32.1301128Z             },
2026-06-17T06:47:32.1301262Z             {
2026-06-17T06:47:32.1301438Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1301586Z               "line": 9418
2026-06-17T06:47:32.1301727Z             },
2026-06-17T06:47:32.1301866Z             {
2026-06-17T06:47:32.1302039Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1302183Z               "line": 9435
2026-06-17T06:47:32.1302421Z             },
2026-06-17T06:47:32.1302564Z             {
2026-06-17T06:47:32.1302726Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1302884Z               "line": 9465
2026-06-17T06:47:32.1303017Z             },
2026-06-17T06:47:32.1303161Z             {
2026-06-17T06:47:32.1303332Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1303476Z               "line": 9564
2026-06-17T06:47:32.1303618Z             },
2026-06-17T06:47:32.1303748Z             {
2026-06-17T06:47:32.1303928Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1304077Z               "line": 9715
2026-06-17T06:47:32.1304223Z             }
2026-06-17T06:47:32.1304358Z           ]
2026-06-17T06:47:32.1304490Z         }
2026-06-17T06:47:32.1304632Z       }
2026-06-17T06:47:32.1304757Z     },
2026-06-17T06:47:32.1304885Z     {
2026-06-17T06:47:32.1305038Z       "id": "REQ-SUBNET-2",
2026-06-17T06:47:32.1305373Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-17T06:47:32.1305543Z       "requiredStages": [
2026-06-17T06:47:32.1305683Z         "impl",
2026-06-17T06:47:32.1305830Z         "unit",
2026-06-17T06:47:32.1305968Z         "int"
2026-06-17T06:47:32.1306101Z       ],
2026-06-17T06:47:32.1306244Z       "stages": {
2026-06-17T06:47:32.1306388Z         "doc": {
2026-06-17T06:47:32.1306549Z           "complete": true,
2026-06-17T06:47:32.1306693Z           "evidence": [
2026-06-17T06:47:32.1306834Z             {
2026-06-17T06:47:32.1307071Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-17T06:47:32.1307223Z               "line": 60
2026-06-17T06:47:32.1307362Z             }
2026-06-17T06:47:32.1307504Z           ]
2026-06-17T06:47:32.1307629Z         },
2026-06-17T06:47:32.1307771Z         "impl": {
2026-06-17T06:47:32.1307925Z           "complete": true,
2026-06-17T06:47:32.1308072Z           "evidence": [
2026-06-17T06:47:32.1308206Z             {
2026-06-17T06:47:32.1308401Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-17T06:47:32.1308559Z               "line": 837
2026-06-17T06:47:32.1308692Z             },
2026-06-17T06:47:32.1308830Z             {
2026-06-17T06:47:32.1309116Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:32.1309265Z               "line": 1190
2026-06-17T06:47:32.1309416Z             },
2026-06-17T06:47:32.1309556Z             {
2026-06-17T06:47:32.1309759Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:32.1309911Z               "line": 633
2026-06-17T06:47:32.1310042Z             },
2026-06-17T06:47:32.1310186Z             {
2026-06-17T06:47:32.1310361Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-17T06:47:32.1310516Z               "line": 817
2026-06-17T06:47:32.1310657Z             },
2026-06-17T06:47:32.1310797Z             {
2026-06-17T06:47:32.1310982Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-17T06:47:32.1311116Z               "line": 26
2026-06-17T06:47:32.1311269Z             },
2026-06-17T06:47:32.1311407Z             {
2026-06-17T06:47:32.1311592Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-17T06:47:32.1311737Z               "line": 60
2026-06-17T06:47:32.1311873Z             },
2026-06-17T06:47:32.1312017Z             {
2026-06-17T06:47:32.1312202Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-17T06:47:32.1312364Z               "line": 168
2026-06-17T06:47:32.1312614Z             },
2026-06-17T06:47:32.1312763Z             {
2026-06-17T06:47:32.1312948Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-17T06:47:32.1313091Z               "line": 295
2026-06-17T06:47:32.1313238Z             },
2026-06-17T06:47:32.1313373Z             {
2026-06-17T06:47:32.1313567Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-17T06:47:32.1313712Z               "line": 417
2026-06-17T06:47:32.1313853Z             },
2026-06-17T06:47:32.1313998Z             {
2026-06-17T06:47:32.1314293Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-17T06:47:32.1314449Z               "line": 252
2026-06-17T06:47:32.1314589Z             },
2026-06-17T06:47:32.1314726Z             {
2026-06-17T06:47:32.1314899Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1315046Z               "line": 3479
2026-06-17T06:47:32.1315187Z             },
2026-06-17T06:47:32.1315327Z             {
2026-06-17T06:47:32.1315507Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1315656Z               "line": 3980
2026-06-17T06:47:32.1315798Z             },
2026-06-17T06:47:32.1315938Z             {
2026-06-17T06:47:32.1316117Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1316276Z               "line": 4609
2026-06-17T06:47:32.1316413Z             }
2026-06-17T06:47:32.1316553Z           ]
2026-06-17T06:47:32.1316690Z         },
2026-06-17T06:47:32.1316839Z         "int": {
2026-06-17T06:47:32.1316995Z           "complete": true,
2026-06-17T06:47:32.1317153Z           "evidence": [
2026-06-17T06:47:32.1317295Z             {
2026-06-17T06:47:32.1317490Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-17T06:47:32.1317645Z               "line": 22
2026-06-17T06:47:32.1317783Z             },
2026-06-17T06:47:32.1317922Z             {
2026-06-17T06:47:32.1318108Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:32.1318261Z               "line": 643
2026-06-17T06:47:32.1318407Z             },
2026-06-17T06:47:32.1318533Z             {
2026-06-17T06:47:32.1318722Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:32.1318871Z               "line": 885
2026-06-17T06:47:32.1319100Z             }
2026-06-17T06:47:32.1319242Z           ]
2026-06-17T06:47:32.1319386Z         },
2026-06-17T06:47:32.1319528Z         "unit": {
2026-06-17T06:47:32.1319671Z           "complete": true,
2026-06-17T06:47:32.1319820Z           "evidence": [
2026-06-17T06:47:32.1319963Z             {
2026-06-17T06:47:32.1320163Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-17T06:47:32.1320314Z               "line": 586
2026-06-17T06:47:32.1320457Z             },
2026-06-17T06:47:32.1320602Z             {
2026-06-17T06:47:32.1320766Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1320917Z               "line": 9228
2026-06-17T06:47:32.1321056Z             },
2026-06-17T06:47:32.1321194Z             {
2026-06-17T06:47:32.1321361Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1321504Z               "line": 9922
2026-06-17T06:47:32.1321637Z             }
2026-06-17T06:47:32.1321771Z           ]
2026-06-17T06:47:32.1321914Z         }
2026-06-17T06:47:32.1322048Z       }
2026-06-17T06:47:32.1322191Z     },
2026-06-17T06:47:32.1322316Z     {
2026-06-17T06:47:32.1322471Z       "id": "REQ-SUBNET-3",
2026-06-17T06:47:32.1322838Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-17T06:47:32.1322995Z       "requiredStages": [
2026-06-17T06:47:32.1323141Z         "impl",
2026-06-17T06:47:32.1323303Z         "unit"
2026-06-17T06:47:32.1323512Z       ],
2026-06-17T06:47:32.1323699Z       "stages": {
2026-06-17T06:47:32.1323875Z         "doc": {
2026-06-17T06:47:32.1324043Z           "complete": false,
2026-06-17T06:47:32.1324190Z           "evidence": []
2026-06-17T06:47:32.1324328Z         },
2026-06-17T06:47:32.1324471Z         "impl": {
2026-06-17T06:47:32.1324805Z           "complete": true,
2026-06-17T06:47:32.1324949Z           "evidence": [
2026-06-17T06:47:32.1325086Z             {
2026-06-17T06:47:32.1325301Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.1325498Z               "line": 152
2026-06-17T06:47:32.1325639Z             },
2026-06-17T06:47:32.1325791Z             {
2026-06-17T06:47:32.1326024Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.1326188Z               "line": 299
2026-06-17T06:47:32.1326440Z             },
2026-06-17T06:47:32.1326583Z             {
2026-06-17T06:47:32.1326774Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.1326921Z               "line": 437
2026-06-17T06:47:32.1327064Z             },
2026-06-17T06:47:32.1327207Z             {
2026-06-17T06:47:32.1327413Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.1327564Z               "line": 480
2026-06-17T06:47:32.1327713Z             },
2026-06-17T06:47:32.1327846Z             {
2026-06-17T06:47:32.1328036Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:32.1328187Z               "line": 125
2026-06-17T06:47:32.1328328Z             },
2026-06-17T06:47:32.1328463Z             {
2026-06-17T06:47:32.1328658Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:32.1328802Z               "line": 253
2026-06-17T06:47:32.1329046Z             },
2026-06-17T06:47:32.1329187Z             {
2026-06-17T06:47:32.1329370Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:32.1329516Z               "line": 264
2026-06-17T06:47:32.1329650Z             },
2026-06-17T06:47:32.1329798Z             {
2026-06-17T06:47:32.1329985Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:32.1330131Z               "line": 285
2026-06-17T06:47:32.1330275Z             },
2026-06-17T06:47:32.1330403Z             {
2026-06-17T06:47:32.1330600Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:32.1330746Z               "line": 589
2026-06-17T06:47:32.1330879Z             },
2026-06-17T06:47:32.1331017Z             {
2026-06-17T06:47:32.1331200Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:32.1331345Z               "line": 648
2026-06-17T06:47:32.1331487Z             },
2026-06-17T06:47:32.1331626Z             {
2026-06-17T06:47:32.1331815Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-17T06:47:32.1331965Z               "line": 61
2026-06-17T06:47:32.1332112Z             },
2026-06-17T06:47:32.1332251Z             {
2026-06-17T06:47:32.1332441Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-17T06:47:32.1332594Z               "line": 90
2026-06-17T06:47:32.1332722Z             },
2026-06-17T06:47:32.1332867Z             {
2026-06-17T06:47:32.1333061Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-17T06:47:32.1333219Z               "line": 125
2026-06-17T06:47:32.1333355Z             },
2026-06-17T06:47:32.1333484Z             {
2026-06-17T06:47:32.1333687Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-17T06:47:32.1333830Z               "line": 9
2026-06-17T06:47:32.1333973Z             },
2026-06-17T06:47:32.1334106Z             {
2026-06-17T06:47:32.1334279Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1334430Z               "line": 3817
2026-06-17T06:47:32.1334569Z             },
2026-06-17T06:47:32.1334711Z             {
2026-06-17T06:47:32.1334893Z               "path": "crates/spt/src/wansend.rs",
2026-06-17T06:47:32.1335046Z               "line": 445
2026-06-17T06:47:32.1335180Z             }
2026-06-17T06:47:32.1335312Z           ]
2026-06-17T06:47:32.1335437Z         },
2026-06-17T06:47:32.1335579Z         "int": {
2026-06-17T06:47:32.1335743Z           "complete": false,
2026-06-17T06:47:32.1335889Z           "evidence": []
2026-06-17T06:47:32.1336034Z         },
2026-06-17T06:47:32.1336275Z         "unit": {
2026-06-17T06:47:32.1336423Z           "complete": true,
2026-06-17T06:47:32.1336561Z           "evidence": [
2026-06-17T06:47:32.1336695Z             {
2026-06-17T06:47:32.1336899Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.1337048Z               "line": 1304
2026-06-17T06:47:32.1337191Z             },
2026-06-17T06:47:32.1337324Z             {
2026-06-17T06:47:32.1337519Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.1337668Z               "line": 1606
2026-06-17T06:47:32.1337915Z             },
2026-06-17T06:47:32.1338050Z             {
2026-06-17T06:47:32.1338249Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-17T06:47:32.1338393Z               "line": 888
2026-06-17T06:47:32.1338525Z             },
2026-06-17T06:47:32.1338663Z             {
2026-06-17T06:47:32.1338856Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:32.1339066Z               "line": 959
2026-06-17T06:47:32.1339203Z             },
2026-06-17T06:47:32.1339343Z             {
2026-06-17T06:47:32.1339542Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:32.1339686Z               "line": 1009
2026-06-17T06:47:32.1339833Z             },
2026-06-17T06:47:32.1339977Z             {
2026-06-17T06:47:32.1340176Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:32.1340324Z               "line": 1068
2026-06-17T06:47:32.1340463Z             },
2026-06-17T06:47:32.1340602Z             {
2026-06-17T06:47:32.1340792Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-17T06:47:32.1340940Z               "line": 234
2026-06-17T06:47:32.1341083Z             },
2026-06-17T06:47:32.1341227Z             {
2026-06-17T06:47:32.1341419Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-17T06:47:32.1341563Z               "line": 49
2026-06-17T06:47:32.1341699Z             },
2026-06-17T06:47:32.1341833Z             {
2026-06-17T06:47:32.1342014Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1342167Z               "line": 9564
2026-06-17T06:47:32.1342309Z             },
2026-06-17T06:47:32.1342453Z             {
2026-06-17T06:47:32.1342629Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1342777Z               "line": 9670
2026-06-17T06:47:32.1342915Z             },
2026-06-17T06:47:32.1343058Z             {
2026-06-17T06:47:32.1343230Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1343393Z               "line": 9888
2026-06-17T06:47:32.1343544Z             }
2026-06-17T06:47:32.1343683Z           ]
2026-06-17T06:47:32.1343827Z         }
2026-06-17T06:47:32.1343968Z       }
2026-06-17T06:47:32.1344110Z     },
2026-06-17T06:47:32.1344238Z     {
2026-06-17T06:47:32.1344390Z       "id": "REQ-SUBNET-4",
2026-06-17T06:47:32.1344777Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-17T06:47:32.1344937Z       "requiredStages": [
2026-06-17T06:47:32.1345086Z         "impl",
2026-06-17T06:47:32.1345224Z         "unit"
2026-06-17T06:47:32.1345368Z       ],
2026-06-17T06:47:32.1345520Z       "stages": {
2026-06-17T06:47:32.1345659Z         "doc": {
2026-06-17T06:47:32.1345825Z           "complete": true,
2026-06-17T06:47:32.1345969Z           "evidence": [
2026-06-17T06:47:32.1346107Z             {
2026-06-17T06:47:32.1346341Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-17T06:47:32.1346498Z               "line": 60
2026-06-17T06:47:32.1346656Z             }
2026-06-17T06:47:32.1346788Z           ]
2026-06-17T06:47:32.1346935Z         },
2026-06-17T06:47:32.1347074Z         "impl": {
2026-06-17T06:47:32.1347235Z           "complete": true,
2026-06-17T06:47:32.1347384Z           "evidence": [
2026-06-17T06:47:32.1347526Z             {
2026-06-17T06:47:32.1347698Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1347846Z               "line": 3123
2026-06-17T06:47:32.1348089Z             },
2026-06-17T06:47:32.1348237Z             {
2026-06-17T06:47:32.1348413Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1348562Z               "line": 4576
2026-06-17T06:47:32.1348708Z             },
2026-06-17T06:47:32.1348853Z             {
2026-06-17T06:47:32.1349080Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1349232Z               "line": 4609
2026-06-17T06:47:32.1349363Z             }
2026-06-17T06:47:32.1349497Z           ]
2026-06-17T06:47:32.1349627Z         },
2026-06-17T06:47:32.1349875Z         "int": {
2026-06-17T06:47:32.1350035Z           "complete": false,
2026-06-17T06:47:32.1350180Z           "evidence": []
2026-06-17T06:47:32.1350331Z         },
2026-06-17T06:47:32.1350471Z         "unit": {
2026-06-17T06:47:32.1350632Z           "complete": true,
2026-06-17T06:47:32.1350780Z           "evidence": [
2026-06-17T06:47:32.1350923Z             {
2026-06-17T06:47:32.1351095Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1351246Z               "line": 9344
2026-06-17T06:47:32.1351401Z             },
2026-06-17T06:47:32.1351538Z             {
2026-06-17T06:47:32.1351716Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1351862Z               "line": 9418
2026-06-17T06:47:32.1351999Z             }
2026-06-17T06:47:32.1352142Z           ]
2026-06-17T06:47:32.1352278Z         }
2026-06-17T06:47:32.1352422Z       }
2026-06-17T06:47:32.1352550Z     },
2026-06-17T06:47:32.1352684Z     {
2026-06-17T06:47:32.1352832Z       "id": "REQ-SUBNET-5",
2026-06-17T06:47:32.1354253Z       "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-17T06:47:32.1354419Z       "requiredStages": [
2026-06-17T06:47:32.1354570Z         "impl",
2026-06-17T06:47:32.1354713Z         "unit",
2026-06-17T06:47:32.1354859Z         "int"
2026-06-17T06:47:32.1355003Z       ],
2026-06-17T06:47:32.1355141Z       "stages": {
2026-06-17T06:47:32.1355337Z         "doc": {
2026-06-17T06:47:32.1355502Z           "complete": false,
2026-06-17T06:47:32.1355656Z           "evidence": []
2026-06-17T06:47:32.1355803Z         },
2026-06-17T06:47:32.1355942Z         "impl": {
2026-06-17T06:47:32.1356108Z           "complete": true,
2026-06-17T06:47:32.1356272Z           "evidence": [
2026-06-17T06:47:32.1356414Z             {
2026-06-17T06:47:32.1356619Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-17T06:47:32.1356767Z               "line": 128
2026-06-17T06:47:32.1356911Z             },
2026-06-17T06:47:32.1357053Z             {
2026-06-17T06:47:32.1357254Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-17T06:47:32.1357414Z               "line": 413
2026-06-17T06:47:32.1357558Z             },
2026-06-17T06:47:32.1357705Z             {
2026-06-17T06:47:32.1357892Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-17T06:47:32.1358057Z               "line": 74
2026-06-17T06:47:32.1358187Z             },
2026-06-17T06:47:32.1358334Z             {
2026-06-17T06:47:32.1358526Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-17T06:47:32.1358682Z               "line": 332
2026-06-17T06:47:32.1358831Z             },
2026-06-17T06:47:32.1359045Z             {
2026-06-17T06:47:32.1359249Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-17T06:47:32.1359403Z               "line": 621
2026-06-17T06:47:32.1359545Z             },
2026-06-17T06:47:32.1359696Z             {
2026-06-17T06:47:32.1359900Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-17T06:47:32.1360053Z               "line": 31
2026-06-17T06:47:32.1360197Z             },
2026-06-17T06:47:32.1360343Z             {
2026-06-17T06:47:32.1360639Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-17T06:47:32.1360796Z               "line": 50
2026-06-17T06:47:32.1360944Z             },
2026-06-17T06:47:32.1361083Z             {
2026-06-17T06:47:32.1361283Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-17T06:47:32.1361436Z               "line": 69
2026-06-17T06:47:32.1361578Z             },
2026-06-17T06:47:32.1361713Z             {
2026-06-17T06:47:32.1361912Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-17T06:47:32.1362061Z               "line": 113
2026-06-17T06:47:32.1362304Z             },
2026-06-17T06:47:32.1362450Z             {
2026-06-17T06:47:32.1362655Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-17T06:47:32.1362800Z               "line": 25
2026-06-17T06:47:32.1362948Z             },
2026-06-17T06:47:32.1363087Z             {
2026-06-17T06:47:32.1363278Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-17T06:47:32.1363420Z               "line": 34
2026-06-17T06:47:32.1363569Z             },
2026-06-17T06:47:32.1363712Z             {
2026-06-17T06:47:32.1363902Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-17T06:47:32.1364050Z               "line": 17
2026-06-17T06:47:32.1364188Z             },
2026-06-17T06:47:32.1364335Z             {
2026-06-17T06:47:32.1364498Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1364655Z               "line": 4534
2026-06-17T06:47:32.1364794Z             },
2026-06-17T06:47:32.1364933Z             {
2026-06-17T06:47:32.1365126Z               "path": "crates/spt/src/wansend.rs",
2026-06-17T06:47:32.1365273Z               "line": 419
2026-06-17T06:47:32.1365419Z             }
2026-06-17T06:47:32.1365553Z           ]
2026-06-17T06:47:32.1365691Z         },
2026-06-17T06:47:32.1365825Z         "int": {
2026-06-17T06:47:32.1365978Z           "complete": true,
2026-06-17T06:47:32.1366135Z           "evidence": [
2026-06-17T06:47:32.1366297Z             {
2026-06-17T06:47:32.1366521Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-17T06:47:32.1366668Z               "line": 817
2026-06-17T06:47:32.1366804Z             }
2026-06-17T06:47:32.1366941Z           ]
2026-06-17T06:47:32.1367084Z         },
2026-06-17T06:47:32.1367231Z         "unit": {
2026-06-17T06:47:32.1367390Z           "complete": true,
2026-06-17T06:47:32.1367546Z           "evidence": [
2026-06-17T06:47:32.1367685Z             {
2026-06-17T06:47:32.1367908Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-17T06:47:32.1368041Z               "line": 341
2026-06-17T06:47:32.1368185Z             },
2026-06-17T06:47:32.1368327Z             {
2026-06-17T06:47:32.1368537Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-17T06:47:32.1368710Z               "line": 1115
2026-06-17T06:47:32.1368852Z             },
2026-06-17T06:47:32.1369067Z             {
2026-06-17T06:47:32.1369256Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-17T06:47:32.1369420Z               "line": 151
2026-06-17T06:47:32.1369567Z             },
2026-06-17T06:47:32.1369711Z             {
2026-06-17T06:47:32.1369920Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-17T06:47:32.1370063Z               "line": 61
2026-06-17T06:47:32.1370210Z             },
2026-06-17T06:47:32.1370343Z             {
2026-06-17T06:47:32.1370545Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-17T06:47:32.1370704Z               "line": 111
2026-06-17T06:47:32.1370836Z             },
2026-06-17T06:47:32.1370985Z             {
2026-06-17T06:47:32.1371175Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-17T06:47:32.1371324Z               "line": 138
2026-06-17T06:47:32.1371466Z             },
2026-06-17T06:47:32.1371610Z             {
2026-06-17T06:47:32.1371804Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-17T06:47:32.1371953Z               "line": 148
2026-06-17T06:47:32.1372096Z             },
2026-06-17T06:47:32.1372221Z             {
2026-06-17T06:47:32.1372501Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1372654Z               "line": 9245
2026-06-17T06:47:32.1372797Z             }
2026-06-17T06:47:32.1372936Z           ]
2026-06-17T06:47:32.1373072Z         }
2026-06-17T06:47:32.1373220Z       }
2026-06-17T06:47:32.1373346Z     },
2026-06-17T06:47:32.1373490Z     {
2026-06-17T06:47:32.1373647Z       "id": "REQ-SUBNET-6",
2026-06-17T06:47:32.1374501Z       "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-17T06:47:32.1374768Z       "requiredStages": [
2026-06-17T06:47:32.1374905Z         "impl",
2026-06-17T06:47:32.1375048Z         "unit"
2026-06-17T06:47:32.1375178Z       ],
2026-06-17T06:47:32.1375325Z       "stages": {
2026-06-17T06:47:32.1375465Z         "doc": {
2026-06-17T06:47:32.1375629Z           "complete": false,
2026-06-17T06:47:32.1375791Z           "evidence": []
2026-06-17T06:47:32.1375946Z         },
2026-06-17T06:47:32.1376109Z         "impl": {
2026-06-17T06:47:32.1376251Z           "complete": true,
2026-06-17T06:47:32.1376400Z           "evidence": [
2026-06-17T06:47:32.1376552Z             {
2026-06-17T06:47:32.1376767Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:32.1376914Z               "line": 254
2026-06-17T06:47:32.1377068Z             },
2026-06-17T06:47:32.1377219Z             {
2026-06-17T06:47:32.1377397Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1377548Z               "line": 4192
2026-06-17T06:47:32.1377688Z             },
2026-06-17T06:47:32.1377820Z             {
2026-06-17T06:47:32.1378003Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1378144Z               "line": 4209
2026-06-17T06:47:32.1378293Z             },
2026-06-17T06:47:32.1378425Z             {
2026-06-17T06:47:32.1378596Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1378745Z               "line": 4262
2026-06-17T06:47:32.1378882Z             },
2026-06-17T06:47:32.1379097Z             {
2026-06-17T06:47:32.1379265Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1379431Z               "line": 4285
2026-06-17T06:47:32.1379574Z             }
2026-06-17T06:47:32.1379717Z           ]
2026-06-17T06:47:32.1379865Z         },
2026-06-17T06:47:32.1380003Z         "int": {
2026-06-17T06:47:32.1380165Z           "complete": false,
2026-06-17T06:47:32.1380323Z           "evidence": []
2026-06-17T06:47:32.1380465Z         },
2026-06-17T06:47:32.1380609Z         "unit": {
2026-06-17T06:47:32.1380770Z           "complete": true,
2026-06-17T06:47:32.1380955Z           "evidence": [
2026-06-17T06:47:32.1381091Z             {
2026-06-17T06:47:32.1381269Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1381415Z               "line": 9259
2026-06-17T06:47:32.1381555Z             },
2026-06-17T06:47:32.1381692Z             {
2026-06-17T06:47:32.1381870Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1382021Z               "line": 9292
2026-06-17T06:47:32.1382161Z             },
2026-06-17T06:47:32.1382308Z             {
2026-06-17T06:47:32.1382475Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1382627Z               "line": 9301
2026-06-17T06:47:32.1382771Z             }
2026-06-17T06:47:32.1382918Z           ]
2026-06-17T06:47:32.1383057Z         }
2026-06-17T06:47:32.1383200Z       }
2026-06-17T06:47:32.1383328Z     },
2026-06-17T06:47:32.1383458Z     {
2026-06-17T06:47:32.1383622Z       "id": "REQ-SUBNET-7",
2026-06-17T06:47:32.1385638Z       "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-17T06:47:32.1385808Z       "requiredStages": [
2026-06-17T06:47:32.1385963Z         "impl",
2026-06-17T06:47:32.1386109Z         "unit"
2026-06-17T06:47:32.1386255Z       ],
2026-06-17T06:47:32.1386399Z       "stages": {
2026-06-17T06:47:32.1386535Z         "doc": {
2026-06-17T06:47:32.1386788Z           "complete": false,
2026-06-17T06:47:32.1386945Z           "evidence": []
2026-06-17T06:47:32.1387089Z         },
2026-06-17T06:47:32.1387236Z         "impl": {
2026-06-17T06:47:32.1387394Z           "complete": true,
2026-06-17T06:47:32.1387536Z           "evidence": [
2026-06-17T06:47:32.1387679Z             {
2026-06-17T06:47:32.1387885Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-17T06:47:32.1388037Z               "line": 17
2026-06-17T06:47:32.1388195Z             },
2026-06-17T06:47:32.1388328Z             {
2026-06-17T06:47:32.1388525Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-17T06:47:32.1388675Z               "line": 103
2026-06-17T06:47:32.1388815Z             },
2026-06-17T06:47:32.1389042Z             {
2026-06-17T06:47:32.1389248Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-17T06:47:32.1389404Z               "line": 312
2026-06-17T06:47:32.1389539Z             },
2026-06-17T06:47:32.1389685Z             {
2026-06-17T06:47:32.1389896Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-17T06:47:32.1390048Z               "line": 131
2026-06-17T06:47:32.1390192Z             },
2026-06-17T06:47:32.1390329Z             {
2026-06-17T06:47:32.1390530Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.1390678Z               "line": 160
2026-06-17T06:47:32.1390827Z             },
2026-06-17T06:47:32.1390968Z             {
2026-06-17T06:47:32.1391179Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.1391330Z               "line": 441
2026-06-17T06:47:32.1391477Z             },
2026-06-17T06:47:32.1391623Z             {
2026-06-17T06:47:32.1391824Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.1391971Z               "line": 618
2026-06-17T06:47:32.1392105Z             },
2026-06-17T06:47:32.1392243Z             {
2026-06-17T06:47:32.1392458Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.1392614Z               "line": 658
2026-06-17T06:47:32.1392763Z             },
2026-06-17T06:47:32.1392906Z             {
2026-06-17T06:47:32.1393116Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.1393277Z               "line": 714
2026-06-17T06:47:32.1393407Z             },
2026-06-17T06:47:32.1393559Z             {
2026-06-17T06:47:32.1393750Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-17T06:47:32.1393912Z               "line": 136
2026-06-17T06:47:32.1394061Z             },
2026-06-17T06:47:32.1394202Z             {
2026-06-17T06:47:32.1394401Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:32.1394547Z               "line": 139
2026-06-17T06:47:32.1394692Z             }
2026-06-17T06:47:32.1394824Z           ]
2026-06-17T06:47:32.1394963Z         },
2026-06-17T06:47:32.1395115Z         "int": {
2026-06-17T06:47:32.1395264Z           "complete": false,
2026-06-17T06:47:32.1395416Z           "evidence": []
2026-06-17T06:47:32.1395558Z         },
2026-06-17T06:47:32.1395706Z         "unit": {
2026-06-17T06:47:32.1395854Z           "complete": true,
2026-06-17T06:47:32.1396016Z           "evidence": [
2026-06-17T06:47:32.1396164Z             {
2026-06-17T06:47:32.1396364Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-17T06:47:32.1396523Z               "line": 136
2026-06-17T06:47:32.1396665Z             },
2026-06-17T06:47:32.1396806Z             {
2026-06-17T06:47:32.1397095Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-17T06:47:32.1397258Z               "line": 156
2026-06-17T06:47:32.1397400Z             },
2026-06-17T06:47:32.1397544Z             {
2026-06-17T06:47:32.1397748Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.1397902Z               "line": 935
2026-06-17T06:47:32.1398048Z             },
2026-06-17T06:47:32.1402846Z             {
2026-06-17T06:47:32.1403108Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-17T06:47:32.1403547Z               "line": 957
2026-06-17T06:47:32.1403690Z             },
2026-06-17T06:47:32.1403833Z             {
2026-06-17T06:47:32.1404047Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-17T06:47:32.1404201Z               "line": 1419
2026-06-17T06:47:32.1404338Z             },
2026-06-17T06:47:32.1404477Z             {
2026-06-17T06:47:32.1404686Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-17T06:47:32.1404843Z               "line": 1004
2026-06-17T06:47:32.1404989Z             }
2026-06-17T06:47:32.1405121Z           ]
2026-06-17T06:47:32.1405261Z         }
2026-06-17T06:47:32.1405398Z       }
2026-06-17T06:47:32.1405542Z     },
2026-06-17T06:47:32.1405684Z     {
2026-06-17T06:47:32.1405834Z       "id": "REQ-SUBNET-8",
2026-06-17T06:47:32.1407164Z       "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-17T06:47:32.1407333Z       "requiredStages": [
2026-06-17T06:47:32.1407481Z         "impl",
2026-06-17T06:47:32.1407617Z         "unit"
2026-06-17T06:47:32.1407751Z       ],
2026-06-17T06:47:32.1407899Z       "stages": {
2026-06-17T06:47:32.1408036Z         "doc": {
2026-06-17T06:47:32.1408209Z           "complete": false,
2026-06-17T06:47:32.1408356Z           "evidence": []
2026-06-17T06:47:32.1408499Z         },
2026-06-17T06:47:32.1408647Z         "impl": {
2026-06-17T06:47:32.1408800Z           "complete": true,
2026-06-17T06:47:32.1409039Z           "evidence": [
2026-06-17T06:47:32.1409186Z             {
2026-06-17T06:47:32.1409387Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1409539Z               "line": 3559
2026-06-17T06:47:32.1409683Z             },
2026-06-17T06:47:32.1409829Z             {
2026-06-17T06:47:32.1409993Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1410153Z               "line": 3588
2026-06-17T06:47:32.1410296Z             },
2026-06-17T06:47:32.1410444Z             {
2026-06-17T06:47:32.1410611Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1410769Z               "line": 3605
2026-06-17T06:47:32.1410916Z             },
2026-06-17T06:47:32.1411059Z             {
2026-06-17T06:47:32.1411235Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1411388Z               "line": 3628
2026-06-17T06:47:32.1411540Z             },
2026-06-17T06:47:32.1411679Z             {
2026-06-17T06:47:32.1411850Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1411994Z               "line": 4042
2026-06-17T06:47:32.1412131Z             }
2026-06-17T06:47:32.1412276Z           ]
2026-06-17T06:47:32.1412407Z         },
2026-06-17T06:47:32.1412560Z         "int": {
2026-06-17T06:47:32.1412705Z           "complete": false,
2026-06-17T06:47:32.1412867Z           "evidence": []
2026-06-17T06:47:32.1413010Z         },
2026-06-17T06:47:32.1413154Z         "unit": {
2026-06-17T06:47:32.1413312Z           "complete": true,
2026-06-17T06:47:32.1413453Z           "evidence": [
2026-06-17T06:47:32.1413650Z             {
2026-06-17T06:47:32.1413936Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1414088Z               "line": 9449
2026-06-17T06:47:32.1414355Z             },
2026-06-17T06:47:32.1414495Z             {
2026-06-17T06:47:32.1414670Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1414819Z               "line": 9465
2026-06-17T06:47:32.1414965Z             }
2026-06-17T06:47:32.1415095Z           ]
2026-06-17T06:47:32.1415237Z         }
2026-06-17T06:47:32.1415374Z       }
2026-06-17T06:47:32.1415502Z     },
2026-06-17T06:47:32.1415644Z     {
2026-06-17T06:47:32.1415792Z       "id": "REQ-TERM-1",
2026-06-17T06:47:32.1416040Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-17T06:47:32.1416297Z       "requiredStages": [
2026-06-17T06:47:32.1416450Z         "impl",
2026-06-17T06:47:32.1416597Z         "unit"
2026-06-17T06:47:32.1416741Z       ],
2026-06-17T06:47:32.1416893Z       "stages": {
2026-06-17T06:47:32.1417028Z         "doc": {
2026-06-17T06:47:32.1417184Z           "complete": false,
2026-06-17T06:47:32.1417338Z           "evidence": []
2026-06-17T06:47:32.1417484Z         },
2026-06-17T06:47:32.1417638Z         "impl": {
2026-06-17T06:47:32.1417785Z           "complete": true,
2026-06-17T06:47:32.1417936Z           "evidence": [
2026-06-17T06:47:32.1418065Z             {
2026-06-17T06:47:32.1418253Z               "path": "crates/spt-term/src/pty.rs",
2026-06-17T06:47:32.1418402Z               "line": 59
2026-06-17T06:47:32.1418544Z             },
2026-06-17T06:47:32.1418693Z             {
2026-06-17T06:47:32.1418878Z               "path": "crates/spt-term/src/pty.rs",
2026-06-17T06:47:32.1419084Z               "line": 205
2026-06-17T06:47:32.1419222Z             },
2026-06-17T06:47:32.1419379Z             {
2026-06-17T06:47:32.1419599Z               "path": "crates/spt-term/src/surface.rs",
2026-06-17T06:47:32.1419746Z               "line": 100
2026-06-17T06:47:32.1419885Z             }
2026-06-17T06:47:32.1420018Z           ]
2026-06-17T06:47:32.1420166Z         },
2026-06-17T06:47:32.1420309Z         "int": {
2026-06-17T06:47:32.1420466Z           "complete": false,
2026-06-17T06:47:32.1420620Z           "evidence": []
2026-06-17T06:47:32.1420765Z         },
2026-06-17T06:47:32.1420914Z         "unit": {
2026-06-17T06:47:32.1421070Z           "complete": true,
2026-06-17T06:47:32.1421214Z           "evidence": [
2026-06-17T06:47:32.1421352Z             {
2026-06-17T06:47:32.1421544Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-17T06:47:32.1421695Z               "line": 24
2026-06-17T06:47:32.1421839Z             },
2026-06-17T06:47:32.1421982Z             {
2026-06-17T06:47:32.1422163Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-17T06:47:32.1422320Z               "line": 56
2026-06-17T06:47:32.1422455Z             }
2026-06-17T06:47:32.1422596Z           ]
2026-06-17T06:47:32.1422735Z         }
2026-06-17T06:47:32.1422878Z       }
2026-06-17T06:47:32.1423010Z     },
2026-06-17T06:47:32.1423139Z     {
2026-06-17T06:47:32.1423284Z       "id": "REQ-TERM-2",
2026-06-17T06:47:32.1423543Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-17T06:47:32.1423714Z       "requiredStages": [
2026-06-17T06:47:32.1423852Z         "impl",
2026-06-17T06:47:32.1423995Z         "unit"
2026-06-17T06:47:32.1424129Z       ],
2026-06-17T06:47:32.1424266Z       "stages": {
2026-06-17T06:47:32.1424416Z         "doc": {
2026-06-17T06:47:32.1424567Z           "complete": false,
2026-06-17T06:47:32.1424716Z           "evidence": []
2026-06-17T06:47:32.1424849Z         },
2026-06-17T06:47:32.1424997Z         "impl": {
2026-06-17T06:47:32.1425149Z           "complete": true,
2026-06-17T06:47:32.1425307Z           "evidence": [
2026-06-17T06:47:32.1425444Z             {
2026-06-17T06:47:32.1425632Z               "path": "crates/spt-term/src/surface.rs",
2026-06-17T06:47:32.1425783Z               "line": 117
2026-06-17T06:47:32.1425924Z             },
2026-06-17T06:47:32.1426067Z             {
2026-06-17T06:47:32.1426261Z               "path": "crates/spt-term/src/surface.rs",
2026-06-17T06:47:32.1426405Z               "line": 127
2026-06-17T06:47:32.1426634Z             }
2026-06-17T06:47:32.1426767Z           ]
2026-06-17T06:47:32.1426915Z         },
2026-06-17T06:47:32.1427053Z         "int": {
2026-06-17T06:47:32.1427215Z           "complete": false,
2026-06-17T06:47:32.1427367Z           "evidence": []
2026-06-17T06:47:32.1427501Z         },
2026-06-17T06:47:32.1427640Z         "unit": {
2026-06-17T06:47:32.1427787Z           "complete": true,
2026-06-17T06:47:32.1427941Z           "evidence": [
2026-06-17T06:47:32.1428073Z             {
2026-06-17T06:47:32.1428270Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-17T06:47:32.1428515Z               "line": 46
2026-06-17T06:47:32.1428653Z             },
2026-06-17T06:47:32.1428799Z             {
2026-06-17T06:47:32.1429066Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-17T06:47:32.1429220Z               "line": 77
2026-06-17T06:47:32.1429371Z             }
2026-06-17T06:47:32.1429520Z           ]
2026-06-17T06:47:32.1429653Z         }
2026-06-17T06:47:32.1429787Z       }
2026-06-17T06:47:32.1429934Z     },
2026-06-17T06:47:32.1430062Z     {
2026-06-17T06:47:32.1430211Z       "id": "REQ-TERM-3",
2026-06-17T06:47:32.1430416Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-17T06:47:32.1430583Z       "requiredStages": [
2026-06-17T06:47:32.1430726Z         "impl",
2026-06-17T06:47:32.1430869Z         "unit"
2026-06-17T06:47:32.1431016Z       ],
2026-06-17T06:47:32.1431161Z       "stages": {
2026-06-17T06:47:32.1431306Z         "doc": {
2026-06-17T06:47:32.1431459Z           "complete": false,
2026-06-17T06:47:32.1431607Z           "evidence": []
2026-06-17T06:47:32.1431746Z         },
2026-06-17T06:47:32.1431889Z         "impl": {
2026-06-17T06:47:32.1432041Z           "complete": true,
2026-06-17T06:47:32.1432189Z           "evidence": [
2026-06-17T06:47:32.1432337Z             {
2026-06-17T06:47:32.1432522Z               "path": "crates/spt-term/src/stream.rs",
2026-06-17T06:47:32.1432670Z               "line": 71
2026-06-17T06:47:32.1432804Z             }
2026-06-17T06:47:32.1432942Z           ]
2026-06-17T06:47:32.1433072Z         },
2026-06-17T06:47:32.1433209Z         "int": {
2026-06-17T06:47:32.1433368Z           "complete": false,
2026-06-17T06:47:32.1433518Z           "evidence": []
2026-06-17T06:47:32.1433666Z         },
2026-06-17T06:47:32.1433816Z         "unit": {
2026-06-17T06:47:32.1433964Z           "complete": true,
2026-06-17T06:47:32.1434117Z           "evidence": [
2026-06-17T06:47:32.1434254Z             {
2026-06-17T06:47:32.1434446Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-17T06:47:32.1434588Z               "line": 37
2026-06-17T06:47:32.1434736Z             },
2026-06-17T06:47:32.1434884Z             {
2026-06-17T06:47:32.1435075Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-17T06:47:32.1435227Z               "line": 67
2026-06-17T06:47:32.1435361Z             }
2026-06-17T06:47:32.1435509Z           ]
2026-06-17T06:47:32.1435644Z         }
2026-06-17T06:47:32.1435776Z       }
2026-06-17T06:47:32.1435920Z     },
2026-06-17T06:47:32.1436056Z     {
2026-06-17T06:47:32.1436216Z       "id": "REQ-TERM-4",
2026-06-17T06:47:32.1436802Z       "title": "Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push",
2026-06-17T06:47:32.1436970Z       "requiredStages": [
2026-06-17T06:47:32.1437112Z         "impl",
2026-06-17T06:47:32.1437256Z         "unit",
2026-06-17T06:47:32.1437403Z         "int"
2026-06-17T06:47:32.1437547Z       ],
2026-06-17T06:47:32.1437698Z       "stages": {
2026-06-17T06:47:32.1437838Z         "doc": {
2026-06-17T06:47:32.1438004Z           "complete": false,
2026-06-17T06:47:32.1438158Z           "evidence": []
2026-06-17T06:47:32.1438304Z         },
2026-06-17T06:47:32.1438448Z         "impl": {
2026-06-17T06:47:32.1438599Z           "complete": true,
2026-06-17T06:47:32.1438744Z           "evidence": [
2026-06-17T06:47:32.1438877Z             {
2026-06-17T06:47:32.1439344Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-17T06:47:32.1439494Z               "line": 37
2026-06-17T06:47:32.1439631Z             },
2026-06-17T06:47:32.1439775Z             {
2026-06-17T06:47:32.1439965Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-17T06:47:32.1440118Z               "line": 25
2026-06-17T06:47:32.1440256Z             },
2026-06-17T06:47:32.1440400Z             {
2026-06-17T06:47:32.1440589Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-17T06:47:32.1440833Z               "line": 114
2026-06-17T06:47:32.1440976Z             },
2026-06-17T06:47:32.1441110Z             {
2026-06-17T06:47:32.1441306Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-17T06:47:32.1441457Z               "line": 267
2026-06-17T06:47:32.1441601Z             },
2026-06-17T06:47:32.1441744Z             {
2026-06-17T06:47:32.1441933Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-17T06:47:32.1442092Z               "line": 289
2026-06-17T06:47:32.1442224Z             },
2026-06-17T06:47:32.1442368Z             {
2026-06-17T06:47:32.1442557Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-17T06:47:32.1442730Z               "line": 307
2026-06-17T06:47:32.1442872Z             },
2026-06-17T06:47:32.1443002Z             {
2026-06-17T06:47:32.1443197Z               "path": "crates/spt-store/src/history.rs",
2026-06-17T06:47:32.1443346Z               "line": 33
2026-06-17T06:47:32.1443492Z             },
2026-06-17T06:47:32.1443632Z             {
2026-06-17T06:47:32.1443836Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1443984Z               "line": 52
2026-06-17T06:47:32.1444116Z             },
2026-06-17T06:47:32.1444259Z             {
2026-06-17T06:47:32.1444452Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1444601Z               "line": 180
2026-06-17T06:47:32.1444743Z             },
2026-06-17T06:47:32.1444872Z             {
2026-06-17T06:47:32.1445076Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1445221Z               "line": 190
2026-06-17T06:47:32.1445363Z             },
2026-06-17T06:47:32.1445493Z             {
2026-06-17T06:47:32.1445692Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1445841Z               "line": 250
2026-06-17T06:47:32.1445988Z             },
2026-06-17T06:47:32.1446127Z             {
2026-06-17T06:47:32.1446312Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:32.1446470Z               "line": 280
2026-06-17T06:47:32.1446607Z             },
2026-06-17T06:47:32.1446747Z             {
2026-06-17T06:47:32.1446936Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:32.1447093Z               "line": 291
2026-06-17T06:47:32.1447239Z             },
2026-06-17T06:47:32.1447367Z             {
2026-06-17T06:47:32.1447540Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1447691Z               "line": 1147
2026-06-17T06:47:32.1447839Z             }
2026-06-17T06:47:32.1447977Z           ]
2026-06-17T06:47:32.1448122Z         },
2026-06-17T06:47:32.1448263Z         "int": {
2026-06-17T06:47:32.1448408Z           "complete": true,
2026-06-17T06:47:32.1448555Z           "evidence": [
2026-06-17T06:47:32.1448679Z             {
2026-06-17T06:47:32.1448879Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-17T06:47:32.1449080Z               "line": 18
2026-06-17T06:47:32.1449227Z             }
2026-06-17T06:47:32.1449391Z           ]
2026-06-17T06:47:32.1449531Z         },
2026-06-17T06:47:32.1449679Z         "unit": {
2026-06-17T06:47:32.1449824Z           "complete": true,
2026-06-17T06:47:32.1449972Z           "evidence": [
2026-06-17T06:47:32.1450097Z             {
2026-06-17T06:47:32.1450292Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-17T06:47:32.1450440Z               "line": 364
2026-06-17T06:47:32.1450577Z             },
2026-06-17T06:47:32.1450820Z             {
2026-06-17T06:47:32.1451012Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-17T06:47:32.1451164Z               "line": 416
2026-06-17T06:47:32.1451299Z             },
2026-06-17T06:47:32.1451441Z             {
2026-06-17T06:47:32.1451633Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-17T06:47:32.1451775Z               "line": 426
2026-06-17T06:47:32.1451919Z             },
2026-06-17T06:47:32.1452060Z             {
2026-06-17T06:47:32.1452253Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-17T06:47:32.1452493Z               "line": 436
2026-06-17T06:47:32.1452628Z             },
2026-06-17T06:47:32.1452774Z             {
2026-06-17T06:47:32.1452957Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-17T06:47:32.1453113Z               "line": 456
2026-06-17T06:47:32.1453243Z             },
2026-06-17T06:47:32.1453390Z             {
2026-06-17T06:47:32.1453581Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-17T06:47:32.1453738Z               "line": 478
2026-06-17T06:47:32.1453882Z             },
2026-06-17T06:47:32.1454019Z             {
2026-06-17T06:47:32.1454211Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-17T06:47:32.1454358Z               "line": 491
2026-06-17T06:47:32.1454493Z             },
2026-06-17T06:47:32.1454634Z             {
2026-06-17T06:47:32.1454819Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-17T06:47:32.1454979Z               "line": 502
2026-06-17T06:47:32.1455113Z             },
2026-06-17T06:47:32.1455261Z             {
2026-06-17T06:47:32.1455438Z               "path": "crates/spt-store/src/history.rs",
2026-06-17T06:47:32.1455599Z               "line": 108
2026-06-17T06:47:32.1455752Z             },
2026-06-17T06:47:32.1455895Z             {
2026-06-17T06:47:32.1456086Z               "path": "crates/spt-term/src/digest.rs",
2026-06-17T06:47:32.1456233Z               "line": 119
2026-06-17T06:47:32.1456382Z             },
2026-06-17T06:47:32.1456510Z             {
2026-06-17T06:47:32.1456702Z               "path": "crates/spt-term/src/digest.rs",
2026-06-17T06:47:32.1456853Z               "line": 127
2026-06-17T06:47:32.1456987Z             },
2026-06-17T06:47:32.1457135Z             {
2026-06-17T06:47:32.1457326Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1457487Z               "line": 474
2026-06-17T06:47:32.1457619Z             },
2026-06-17T06:47:32.1457762Z             {
2026-06-17T06:47:32.1457956Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1458114Z               "line": 501
2026-06-17T06:47:32.1458265Z             },
2026-06-17T06:47:32.1458404Z             {
2026-06-17T06:47:32.1458595Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1458753Z               "line": 520
2026-06-17T06:47:32.1458895Z             },
2026-06-17T06:47:32.1459111Z             {
2026-06-17T06:47:32.1459316Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1459481Z               "line": 535
2026-06-17T06:47:32.1459626Z             },
2026-06-17T06:47:32.1459773Z             {
2026-06-17T06:47:32.1459965Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1460115Z               "line": 561
2026-06-17T06:47:32.1460258Z             },
2026-06-17T06:47:32.1460399Z             {
2026-06-17T06:47:32.1460600Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1460742Z               "line": 581
2026-06-17T06:47:32.1460891Z             },
2026-06-17T06:47:32.1461028Z             {
2026-06-17T06:47:32.1461225Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1461376Z               "line": 591
2026-06-17T06:47:32.1461511Z             },
2026-06-17T06:47:32.1461653Z             {
2026-06-17T06:47:32.1461840Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1461991Z               "line": 683
2026-06-17T06:47:32.1462135Z             },
2026-06-17T06:47:32.1462358Z             {
2026-06-17T06:47:32.1462550Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:32.1462702Z               "line": 881
2026-06-17T06:47:32.1462846Z             },
2026-06-17T06:47:32.1462982Z             {
2026-06-17T06:47:32.1463154Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1463311Z               "line": 9016
2026-06-17T06:47:32.1463450Z             }
2026-06-17T06:47:32.1463592Z           ]
2026-06-17T06:47:32.1463721Z         }
2026-06-17T06:47:32.1463969Z       }
2026-06-17T06:47:32.1464099Z     },
2026-06-17T06:47:32.1464241Z     {
2026-06-17T06:47:32.1464390Z       "id": "REQ-TERM-5",
2026-06-17T06:47:32.1466178Z       "title": "Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.",
2026-06-17T06:47:32.1466346Z       "requiredStages": [
2026-06-17T06:47:32.1466493Z         "doc",
2026-06-17T06:47:32.1466637Z         "impl",
2026-06-17T06:47:32.1466784Z         "unit",
2026-06-17T06:47:32.1466922Z         "int"
2026-06-17T06:47:32.1467070Z       ],
2026-06-17T06:47:32.1467213Z       "stages": {
2026-06-17T06:47:32.1467361Z         "doc": {
2026-06-17T06:47:32.1467518Z           "complete": true,
2026-06-17T06:47:32.1467667Z           "evidence": [
2026-06-17T06:47:32.1467809Z             {
2026-06-17T06:47:32.1467977Z               "path": "docs/MANIFEST.md",
2026-06-17T06:47:32.1468127Z               "line": 170
2026-06-17T06:47:32.1468270Z             }
2026-06-17T06:47:32.1468411Z           ]
2026-06-17T06:47:32.1468564Z         },
2026-06-17T06:47:32.1468707Z         "impl": {
2026-06-17T06:47:32.1468874Z           "complete": true,
2026-06-17T06:47:32.1469097Z           "evidence": [
2026-06-17T06:47:32.1469247Z             {
2026-06-17T06:47:32.1469451Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-17T06:47:32.1469608Z               "line": 75
2026-06-17T06:47:32.1469741Z             },
2026-06-17T06:47:32.1469881Z             {
2026-06-17T06:47:32.1470075Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-17T06:47:32.1470262Z               "line": 131
2026-06-17T06:47:32.1470410Z             },
2026-06-17T06:47:32.1470549Z             {
2026-06-17T06:47:32.1470727Z               "path": "crates/spt-live/src/digest.rs",
2026-06-17T06:47:32.1470884Z               "line": 22
2026-06-17T06:47:32.1471021Z             },
2026-06-17T06:47:32.1471160Z             {
2026-06-17T06:47:32.1471345Z               "path": "crates/spt-live/src/digest.rs",
2026-06-17T06:47:32.1471498Z               "line": 87
2026-06-17T06:47:32.1471640Z             },
2026-06-17T06:47:32.1471785Z             {
2026-06-17T06:47:32.1471974Z               "path": "crates/spt-term/src/digest.rs",
2026-06-17T06:47:32.1472119Z               "line": 30
2026-06-17T06:47:32.1472260Z             },
2026-06-17T06:47:32.1472390Z             {
2026-06-17T06:47:32.1472589Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1472739Z               "line": 103
2026-06-17T06:47:32.1472885Z             },
2026-06-17T06:47:32.1473034Z             {
2026-06-17T06:47:32.1473224Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1473378Z               "line": 167
2026-06-17T06:47:32.1473523Z             },
2026-06-17T06:47:32.1473666Z             {
2026-06-17T06:47:32.1473857Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1474005Z               "line": 434
2026-06-17T06:47:32.1474152Z             },
2026-06-17T06:47:32.1474287Z             {
2026-06-17T06:47:32.1474557Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1474715Z               "line": 5349
2026-06-17T06:47:32.1474863Z             },
2026-06-17T06:47:32.1475002Z             {
2026-06-17T06:47:32.1475187Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1475331Z               "line": 5629
2026-06-17T06:47:32.1475473Z             }
2026-06-17T06:47:32.1475613Z           ]
2026-06-17T06:47:32.1475745Z         },
2026-06-17T06:47:32.1475887Z         "int": {
2026-06-17T06:47:32.1476156Z           "complete": true,
2026-06-17T06:47:32.1476310Z           "evidence": [
2026-06-17T06:47:32.1476457Z             {
2026-06-17T06:47:32.1476672Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-17T06:47:32.1476829Z               "line": 17
2026-06-17T06:47:32.1476973Z             }
2026-06-17T06:47:32.1477110Z           ]
2026-06-17T06:47:32.1477249Z         },
2026-06-17T06:47:32.1477391Z         "unit": {
2026-06-17T06:47:32.1477559Z           "complete": true,
2026-06-17T06:47:32.1477706Z           "evidence": [
2026-06-17T06:47:32.1477851Z             {
2026-06-17T06:47:32.1478045Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-17T06:47:32.1478193Z               "line": 375
2026-06-17T06:47:32.1478331Z             },
2026-06-17T06:47:32.1478471Z             {
2026-06-17T06:47:32.1478654Z               "path": "crates/spt-live/src/digest.rs",
2026-06-17T06:47:32.1478807Z               "line": 162
2026-06-17T06:47:32.1479057Z             },
2026-06-17T06:47:32.1479201Z             {
2026-06-17T06:47:32.1479391Z               "path": "crates/spt-live/src/digest.rs",
2026-06-17T06:47:32.1479544Z               "line": 179
2026-06-17T06:47:32.1479681Z             },
2026-06-17T06:47:32.1479825Z             {
2026-06-17T06:47:32.1480006Z               "path": "crates/spt-live/src/digest.rs",
2026-06-17T06:47:32.1480164Z               "line": 201
2026-06-17T06:47:32.1480306Z             },
2026-06-17T06:47:32.1480455Z             {
2026-06-17T06:47:32.1480635Z               "path": "crates/spt-live/src/digest.rs",
2026-06-17T06:47:32.1480784Z               "line": 212
2026-06-17T06:47:32.1480926Z             },
2026-06-17T06:47:32.1481061Z             {
2026-06-17T06:47:32.1481245Z               "path": "crates/spt-live/src/digest.rs",
2026-06-17T06:47:32.1481392Z               "line": 223
2026-06-17T06:47:32.1481533Z             },
2026-06-17T06:47:32.1481681Z             {
2026-06-17T06:47:32.1481866Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:32.1482035Z               "line": 1311
2026-06-17T06:47:32.1482177Z             },
2026-06-17T06:47:32.1482316Z             {
2026-06-17T06:47:32.1482510Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:32.1482655Z               "line": 1354
2026-06-17T06:47:32.1482793Z             },
2026-06-17T06:47:32.1482931Z             {
2026-06-17T06:47:32.1483122Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1483275Z               "line": 606
2026-06-17T06:47:32.1483421Z             },
2026-06-17T06:47:32.1483556Z             {
2026-06-17T06:47:32.1483755Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1483909Z               "line": 634
2026-06-17T06:47:32.1484046Z             },
2026-06-17T06:47:32.1484178Z             {
2026-06-17T06:47:32.1484370Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1484532Z               "line": 646
2026-06-17T06:47:32.1484676Z             },
2026-06-17T06:47:32.1484817Z             {
2026-06-17T06:47:32.1485014Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1485161Z               "line": 669
2026-06-17T06:47:32.1485309Z             },
2026-06-17T06:47:32.1485438Z             {
2026-06-17T06:47:32.1485618Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1485766Z               "line": 7765
2026-06-17T06:47:32.1485905Z             },
2026-06-17T06:47:32.1486154Z             {
2026-06-17T06:47:32.1486324Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1486476Z               "line": 7823
2026-06-17T06:47:32.1486607Z             }
2026-06-17T06:47:32.1486755Z           ]
2026-06-17T06:47:32.1486894Z         }
2026-06-17T06:47:32.1487040Z       }
2026-06-17T06:47:32.1487170Z     },
2026-06-17T06:47:32.1487303Z     {
2026-06-17T06:47:32.1487462Z       "id": "REQ-TERM-6",
2026-06-17T06:47:32.1488819Z       "title": "Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.",
2026-06-17T06:47:32.1489134Z       "requiredStages": [
2026-06-17T06:47:32.1489285Z         "impl",
2026-06-17T06:47:32.1489433Z         "unit",
2026-06-17T06:47:32.1489574Z         "int"
2026-06-17T06:47:32.1489703Z       ],
2026-06-17T06:47:32.1489856Z       "stages": {
2026-06-17T06:47:32.1490004Z         "doc": {
2026-06-17T06:47:32.1490151Z           "complete": false,
2026-06-17T06:47:32.1490305Z           "evidence": []
2026-06-17T06:47:32.1490438Z         },
2026-06-17T06:47:32.1490590Z         "impl": {
2026-06-17T06:47:32.1490738Z           "complete": true,
2026-06-17T06:47:32.1490881Z           "evidence": [
2026-06-17T06:47:32.1491025Z             {
2026-06-17T06:47:32.1491215Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-17T06:47:32.1491368Z               "line": 132
2026-06-17T06:47:32.1491501Z             },
2026-06-17T06:47:32.1491645Z             {
2026-06-17T06:47:32.1491833Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-17T06:47:32.1491986Z               "line": 187
2026-06-17T06:47:32.1492126Z             },
2026-06-17T06:47:32.1492265Z             {
2026-06-17T06:47:32.1492470Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-17T06:47:32.1492614Z               "line": 17
2026-06-17T06:47:32.1492760Z             },
2026-06-17T06:47:32.1492895Z             {
2026-06-17T06:47:32.1493089Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-17T06:47:32.1493239Z               "line": 96
2026-06-17T06:47:32.1493381Z             },
2026-06-17T06:47:32.1493525Z             {
2026-06-17T06:47:32.1493719Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1493878Z               "line": 319
2026-06-17T06:47:32.1494029Z             },
2026-06-17T06:47:32.1494164Z             {
2026-06-17T06:47:32.1494363Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1494517Z               "line": 396
2026-06-17T06:47:32.1494658Z             }
2026-06-17T06:47:32.1494796Z           ]
2026-06-17T06:47:32.1494940Z         },
2026-06-17T06:47:32.1495087Z         "int": {
2026-06-17T06:47:32.1495250Z           "complete": true,
2026-06-17T06:47:32.1495397Z           "evidence": [
2026-06-17T06:47:32.1495540Z             {
2026-06-17T06:47:32.1495770Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-17T06:47:32.1495922Z               "line": 18
2026-06-17T06:47:32.1496070Z             }
2026-06-17T06:47:32.1496212Z           ]
2026-06-17T06:47:32.1496346Z         },
2026-06-17T06:47:32.1496498Z         "unit": {
2026-06-17T06:47:32.1496646Z           "complete": true,
2026-06-17T06:47:32.1496799Z           "evidence": [
2026-06-17T06:47:32.1496945Z             {
2026-06-17T06:47:32.1497144Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-17T06:47:32.1497310Z               "line": 126
2026-06-17T06:47:32.1497445Z             },
2026-06-17T06:47:32.1497582Z             {
2026-06-17T06:47:32.1497773Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-17T06:47:32.1497929Z               "line": 141
2026-06-17T06:47:32.1498059Z             },
2026-06-17T06:47:32.1498303Z             {
2026-06-17T06:47:32.1498497Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-17T06:47:32.1498646Z               "line": 157
2026-06-17T06:47:32.1498793Z             },
2026-06-17T06:47:32.1498928Z             {
2026-06-17T06:47:32.1499184Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-17T06:47:32.1499328Z               "line": 175
2026-06-17T06:47:32.1499475Z             },
2026-06-17T06:47:32.1499620Z             {
2026-06-17T06:47:32.1499812Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1500068Z               "line": 738
2026-06-17T06:47:32.1500206Z             },
2026-06-17T06:47:32.1500354Z             {
2026-06-17T06:47:32.1500540Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1500688Z               "line": 759
2026-06-17T06:47:32.1500836Z             },
2026-06-17T06:47:32.1500974Z             {
2026-06-17T06:47:32.1501169Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-17T06:47:32.1501327Z               "line": 722
2026-06-17T06:47:32.1501475Z             }
2026-06-17T06:47:32.1501608Z           ]
2026-06-17T06:47:32.1501746Z         }
2026-06-17T06:47:32.1501885Z       }
2026-06-17T06:47:32.1502018Z     },
2026-06-17T06:47:32.1502158Z     {
2026-06-17T06:47:32.1502309Z       "id": "REQ-TERM-7",
2026-06-17T06:47:32.1503688Z       "title": "Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.",
2026-06-17T06:47:32.1503860Z       "requiredStages": [
2026-06-17T06:47:32.1503993Z         "impl",
2026-06-17T06:47:32.1504137Z         "unit",
2026-06-17T06:47:32.1504270Z         "int"
2026-06-17T06:47:32.1504409Z       ],
2026-06-17T06:47:32.1504546Z       "stages": {
2026-06-17T06:47:32.1504681Z         "doc": {
2026-06-17T06:47:32.1504842Z           "complete": false,
2026-06-17T06:47:32.1504996Z           "evidence": []
2026-06-17T06:47:32.1505138Z         },
2026-06-17T06:47:32.1505284Z         "impl": {
2026-06-17T06:47:32.1505438Z           "complete": true,
2026-06-17T06:47:32.1505589Z           "evidence": [
2026-06-17T06:47:32.1505734Z             {
2026-06-17T06:47:32.1505933Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-17T06:47:32.1506091Z               "line": 133
2026-06-17T06:47:32.1506233Z             },
2026-06-17T06:47:32.1506377Z             {
2026-06-17T06:47:32.1506562Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-17T06:47:32.1506711Z               "line": 326
2026-06-17T06:47:32.1506858Z             },
2026-06-17T06:47:32.1507002Z             {
2026-06-17T06:47:32.1507177Z               "path": "crates/spt-live/src/inject.rs",
2026-06-17T06:47:32.1507331Z               "line": 15
2026-06-17T06:47:32.1507468Z             },
2026-06-17T06:47:32.1507615Z             {
2026-06-17T06:47:32.1507804Z               "path": "crates/spt-live/src/inject.rs",
2026-06-17T06:47:32.1507952Z               "line": 32
2026-06-17T06:47:32.1508123Z             },
2026-06-17T06:47:32.1508257Z             {
2026-06-17T06:47:32.1508457Z               "path": "crates/spt-store/src/history.rs",
2026-06-17T06:47:32.1509153Z               "line": 49
2026-06-17T06:47:32.1509521Z             },
2026-06-17T06:47:32.1509812Z             {
2026-06-17T06:47:32.1510156Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1510539Z               "line": 286
2026-06-17T06:47:32.1518373Z             },
2026-06-17T06:47:32.1518692Z             {
2026-06-17T06:47:32.1519123Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1519509Z               "line": 320
2026-06-17T06:47:32.1519814Z             }
2026-06-17T06:47:32.1520228Z           ]
2026-06-17T06:47:32.1520500Z         },
2026-06-17T06:47:32.1520773Z         "int": {
2026-06-17T06:47:32.1521076Z           "complete": true,
2026-06-17T06:47:32.1521408Z           "evidence": [
2026-06-17T06:47:32.1521695Z             {
2026-06-17T06:47:32.1522061Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-17T06:47:32.1522485Z               "line": 19
2026-06-17T06:47:32.1522780Z             }
2026-06-17T06:47:32.1523052Z           ]
2026-06-17T06:47:32.1523325Z         },
2026-06-17T06:47:32.1523698Z         "unit": {
2026-06-17T06:47:32.1523999Z           "complete": true,
2026-06-17T06:47:32.1524313Z           "evidence": [
2026-06-17T06:47:32.1524604Z             {
2026-06-17T06:47:32.1524937Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-17T06:47:32.1525338Z               "line": 455
2026-06-17T06:47:32.1525643Z             },
2026-06-17T06:47:32.1525920Z             {
2026-06-17T06:47:32.1526249Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-17T06:47:32.1526634Z               "line": 566
2026-06-17T06:47:32.1527038Z             },
2026-06-17T06:47:32.1527334Z             {
2026-06-17T06:47:32.1527658Z               "path": "crates/spt-live/src/inject.rs",
2026-06-17T06:47:32.1528022Z               "line": 58
2026-06-17T06:47:32.1528327Z             },
2026-06-17T06:47:32.1528612Z             {
2026-06-17T06:47:32.1528933Z               "path": "crates/spt-live/src/inject.rs",
2026-06-17T06:47:32.1529387Z               "line": 77
2026-06-17T06:47:32.1529692Z             },
2026-06-17T06:47:32.1529969Z             {
2026-06-17T06:47:32.1530288Z               "path": "crates/spt-live/src/inject.rs",
2026-06-17T06:47:32.1530646Z               "line": 87
2026-06-17T06:47:32.1530947Z             },
2026-06-17T06:47:32.1531223Z             {
2026-06-17T06:47:32.1531545Z               "path": "crates/spt-store/src/history.rs",
2026-06-17T06:47:32.1531910Z               "line": 94
2026-06-17T06:47:32.1532206Z             },
2026-06-17T06:47:32.1532487Z             {
2026-06-17T06:47:32.1532821Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1533199Z               "line": 691
2026-06-17T06:47:32.1533490Z             },
2026-06-17T06:47:32.1533770Z             {
2026-06-17T06:47:32.1534102Z               "path": "crates/spt-term/src/projection.rs",
2026-06-17T06:47:32.1534487Z               "line": 716
2026-06-17T06:47:32.1534792Z             }
2026-06-17T06:47:32.1535058Z           ]
2026-06-17T06:47:32.1535330Z         }
2026-06-17T06:47:32.1535598Z       }
2026-06-17T06:47:32.1535860Z     },
2026-06-17T06:47:32.1536123Z     {
2026-06-17T06:47:32.1536395Z       "id": "REQ-UPD-1",
2026-06-17T06:47:32.1536744Z       "title": "Peer-propagated update over P2P",
2026-06-17T06:47:32.1537133Z       "requiredStages": [
2026-06-17T06:47:32.1537442Z         "impl",
2026-06-17T06:47:32.1537719Z         "unit",
2026-06-17T06:47:32.1537996Z         "int"
2026-06-17T06:47:32.1538267Z       ],
2026-06-17T06:47:32.1538543Z       "stages": {
2026-06-17T06:47:32.1538815Z         "doc": {
2026-06-17T06:47:32.1539176Z           "complete": false,
2026-06-17T06:47:32.1539489Z           "evidence": []
2026-06-17T06:47:32.1539784Z         },
2026-06-17T06:47:32.1540052Z         "impl": {
2026-06-17T06:47:32.1540343Z           "complete": true,
2026-06-17T06:47:32.1540658Z           "evidence": [
2026-06-17T06:47:32.1540948Z             {
2026-06-17T06:47:32.1541282Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-17T06:47:32.1541672Z               "line": 28
2026-06-17T06:47:32.1541973Z             },
2026-06-17T06:47:32.1542252Z             {
2026-06-17T06:47:32.1542576Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-17T06:47:32.1542957Z               "line": 103
2026-06-17T06:47:32.1543253Z             },
2026-06-17T06:47:32.1543529Z             {
2026-06-17T06:47:32.1543858Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-17T06:47:32.1544239Z               "line": 342
2026-06-17T06:47:32.1544672Z             },
2026-06-17T06:47:32.1544956Z             {
2026-06-17T06:47:32.1545275Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1545643Z               "line": 22
2026-06-17T06:47:32.1545943Z             },
2026-06-17T06:47:32.1546210Z             {
2026-06-17T06:47:32.1546534Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1546897Z               "line": 207
2026-06-17T06:47:32.1547198Z             },
2026-06-17T06:47:32.1547468Z             {
2026-06-17T06:47:32.1547892Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1548265Z               "line": 283
2026-06-17T06:47:32.1548566Z             },
2026-06-17T06:47:32.1548832Z             {
2026-06-17T06:47:32.1549219Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1549581Z               "line": 340
2026-06-17T06:47:32.1549879Z             },
2026-06-17T06:47:32.1550154Z             {
2026-06-17T06:47:32.1550483Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-17T06:47:32.1550841Z               "line": 37
2026-06-17T06:47:32.1551128Z             }
2026-06-17T06:47:32.1551403Z           ]
2026-06-17T06:47:32.1551674Z         },
2026-06-17T06:47:32.1551938Z         "int": {
2026-06-17T06:47:32.1552232Z           "complete": true,
2026-06-17T06:47:32.1552552Z           "evidence": [
2026-06-17T06:47:32.1552840Z             {
2026-06-17T06:47:32.1553165Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-17T06:47:32.1553545Z               "line": 207
2026-06-17T06:47:32.1553841Z             },
2026-06-17T06:47:32.1554113Z             {
2026-06-17T06:47:32.1554423Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-17T06:47:32.1554799Z               "line": 1080
2026-06-17T06:47:32.1555099Z             }
2026-06-17T06:47:32.1555379Z           ]
2026-06-17T06:47:32.1555641Z         },
2026-06-17T06:47:32.1555908Z         "unit": {
2026-06-17T06:47:32.1556218Z           "complete": true,
2026-06-17T06:47:32.1556523Z           "evidence": [
2026-06-17T06:47:32.1556818Z             {
2026-06-17T06:47:32.1557142Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1557515Z               "line": 490
2026-06-17T06:47:32.1557816Z             },
2026-06-17T06:47:32.1558089Z             {
2026-06-17T06:47:32.1558414Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1558792Z               "line": 616
2026-06-17T06:47:32.1559150Z             },
2026-06-17T06:47:32.1559431Z             {
2026-06-17T06:47:32.1559755Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-17T06:47:32.1560146Z               "line": 277
2026-06-17T06:47:32.1560444Z             },
2026-06-17T06:47:32.1560709Z             {
2026-06-17T06:47:32.1561024Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-17T06:47:32.1561387Z               "line": 124
2026-06-17T06:47:32.1561688Z             },
2026-06-17T06:47:32.1561964Z             {
2026-06-17T06:47:32.1562283Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-17T06:47:32.1562647Z               "line": 200
2026-06-17T06:47:32.1562932Z             }
2026-06-17T06:47:32.1563202Z           ]
2026-06-17T06:47:32.1563457Z         }
2026-06-17T06:47:32.1563720Z       }
2026-06-17T06:47:32.1563983Z     },
2026-06-17T06:47:32.1564245Z     {
2026-06-17T06:47:32.1564520Z       "id": "REQ-UPD-2",
2026-06-17T06:47:32.1564898Z       "title": "All binaries signature-verified before handoff",
2026-06-17T06:47:32.1565303Z       "requiredStages": [
2026-06-17T06:47:32.1565613Z         "impl",
2026-06-17T06:47:32.1565888Z         "unit"
2026-06-17T06:47:32.1566162Z       ],
2026-06-17T06:47:32.1566429Z       "stages": {
2026-06-17T06:47:32.1566715Z         "doc": {
2026-06-17T06:47:32.1567005Z           "complete": false,
2026-06-17T06:47:32.1567320Z           "evidence": []
2026-06-17T06:47:32.1567626Z         },
2026-06-17T06:47:32.1567902Z         "impl": {
2026-06-17T06:47:32.1568318Z           "complete": true,
2026-06-17T06:47:32.1568640Z           "evidence": [
2026-06-17T06:47:32.1569036Z             {
2026-06-17T06:47:32.1569376Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-17T06:47:32.1569761Z               "line": 343
2026-06-17T06:47:32.1570062Z             },
2026-06-17T06:47:32.1570335Z             {
2026-06-17T06:47:32.1570664Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-17T06:47:32.1571047Z               "line": 476
2026-06-17T06:47:32.1571455Z             },
2026-06-17T06:47:32.1571732Z             {
2026-06-17T06:47:32.1572066Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1572437Z               "line": 29
2026-06-17T06:47:32.1572738Z             },
2026-06-17T06:47:32.1573014Z             {
2026-06-17T06:47:32.1573343Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1573728Z               "line": 271
2026-06-17T06:47:32.1574027Z             },
2026-06-17T06:47:32.1574313Z             {
2026-06-17T06:47:32.1574642Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1575018Z               "line": 288
2026-06-17T06:47:32.1575314Z             },
2026-06-17T06:47:32.1575590Z             {
2026-06-17T06:47:32.1575915Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1576300Z               "line": 408
2026-06-17T06:47:32.1576602Z             },
2026-06-17T06:47:32.1576885Z             {
2026-06-17T06:47:32.1577209Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1577589Z               "line": 558
2026-06-17T06:47:32.1577885Z             },
2026-06-17T06:47:32.1578177Z             {
2026-06-17T06:47:32.1578501Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-17T06:47:32.1578868Z               "line": 155
2026-06-17T06:47:32.1579248Z             }
2026-06-17T06:47:32.1579530Z           ]
2026-06-17T06:47:32.1579796Z         },
2026-06-17T06:47:32.1580079Z         "int": {
2026-06-17T06:47:32.1580374Z           "complete": false,
2026-06-17T06:47:32.1580693Z           "evidence": []
2026-06-17T06:47:32.1580993Z         },
2026-06-17T06:47:32.1581266Z         "unit": {
2026-06-17T06:47:32.1581565Z           "complete": true,
2026-06-17T06:47:32.1581902Z           "evidence": [
2026-06-17T06:47:32.1582198Z             {
2026-06-17T06:47:32.1582526Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1582898Z               "line": 750
2026-06-17T06:47:32.1583207Z             },
2026-06-17T06:47:32.1583490Z             {
2026-06-17T06:47:32.1583814Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1584189Z               "line": 811
2026-06-17T06:47:32.1584497Z             },
2026-06-17T06:47:32.1584778Z             {
2026-06-17T06:47:32.1585098Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1585465Z               "line": 825
2026-06-17T06:47:32.1585755Z             },
2026-06-17T06:47:32.1586042Z             {
2026-06-17T06:47:32.1586366Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1586728Z               "line": 841
2026-06-17T06:47:32.1587036Z             },
2026-06-17T06:47:32.1587316Z             {
2026-06-17T06:47:32.1587641Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1588013Z               "line": 932
2026-06-17T06:47:32.1588318Z             },
2026-06-17T06:47:32.1588595Z             {
2026-06-17T06:47:32.1588914Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-17T06:47:32.1589376Z               "line": 414
2026-06-17T06:47:32.1589680Z             },
2026-06-17T06:47:32.1589962Z             {
2026-06-17T06:47:32.1590282Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-17T06:47:32.1590657Z               "line": 427
2026-06-17T06:47:32.1590958Z             },
2026-06-17T06:47:32.1591230Z             {
2026-06-17T06:47:32.1591668Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-17T06:47:32.1592058Z               "line": 410
2026-06-17T06:47:32.1592361Z             }
2026-06-17T06:47:32.1592642Z           ]
2026-06-17T06:47:32.1592909Z         }
2026-06-17T06:47:32.1593172Z       }
2026-06-17T06:47:32.1593434Z     },
2026-06-17T06:47:32.1593716Z     {
2026-06-17T06:47:32.1593993Z       "id": "REQ-UPD-3",
2026-06-17T06:47:32.1594402Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-17T06:47:32.1594849Z       "requiredStages": [
2026-06-17T06:47:32.1595262Z         "impl",
2026-06-17T06:47:32.1595542Z         "unit",
2026-06-17T06:47:32.1595824Z         "int"
2026-06-17T06:47:32.1596086Z       ],
2026-06-17T06:47:32.1596358Z       "stages": {
2026-06-17T06:47:32.1596644Z         "doc": {
2026-06-17T06:47:32.1596945Z           "complete": false,
2026-06-17T06:47:32.1597265Z           "evidence": []
2026-06-17T06:47:32.1597573Z         },
2026-06-17T06:47:32.1597848Z         "impl": {
2026-06-17T06:47:32.1598143Z           "complete": true,
2026-06-17T06:47:32.1598463Z           "evidence": [
2026-06-17T06:47:32.1598759Z             {
2026-06-17T06:47:32.1599187Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-17T06:47:32.1599568Z               "line": 40
2026-06-17T06:47:32.1599864Z             },
2026-06-17T06:47:32.1600146Z             {
2026-06-17T06:47:32.1600465Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-17T06:47:32.1600837Z               "line": 87
2026-06-17T06:47:32.1601142Z             },
2026-06-17T06:47:32.1601428Z             {
2026-06-17T06:47:32.1601748Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-17T06:47:32.1602114Z               "line": 993
2026-06-17T06:47:32.1602414Z             },
2026-06-17T06:47:32.1602695Z             {
2026-06-17T06:47:32.1603008Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-17T06:47:32.1603379Z               "line": 1085
2026-06-17T06:47:32.1603671Z             },
2026-06-17T06:47:32.1603952Z             {
2026-06-17T06:47:32.1604281Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-17T06:47:32.1604657Z               "line": 26
2026-06-17T06:47:32.1604958Z             },
2026-06-17T06:47:32.1605230Z             {
2026-06-17T06:47:32.1605552Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-17T06:47:32.1605927Z               "line": 114
2026-06-17T06:47:32.1606227Z             },
2026-06-17T06:47:32.1606509Z             {
2026-06-17T06:47:32.1606834Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-17T06:47:32.1607200Z               "line": 246
2026-06-17T06:47:32.1607501Z             },
2026-06-17T06:47:32.1607778Z             {
2026-06-17T06:47:32.1608086Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1608441Z               "line": 2241
2026-06-17T06:47:32.1608752Z             }
2026-06-17T06:47:32.1609099Z           ]
2026-06-17T06:47:32.1609377Z         },
2026-06-17T06:47:32.1609643Z         "int": {
2026-06-17T06:47:32.1609948Z           "complete": true,
2026-06-17T06:47:32.1610268Z           "evidence": [
2026-06-17T06:47:32.1610553Z             {
2026-06-17T06:47:32.1610885Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-17T06:47:32.1611263Z               "line": 58
2026-06-17T06:47:32.1611563Z             }
2026-06-17T06:47:32.1611839Z           ]
2026-06-17T06:47:32.1612106Z         },
2026-06-17T06:47:32.1612369Z         "unit": {
2026-06-17T06:47:32.1612660Z           "complete": true,
2026-06-17T06:47:32.1612974Z           "evidence": [
2026-06-17T06:47:32.1613273Z             {
2026-06-17T06:47:32.1613611Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-17T06:47:32.1614001Z               "line": 532
2026-06-17T06:47:32.1614297Z             },
2026-06-17T06:47:32.1614574Z             {
2026-06-17T06:47:32.1614903Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-17T06:47:32.1615274Z               "line": 583
2026-06-17T06:47:32.1615570Z             },
2026-06-17T06:47:32.1615950Z             {
2026-06-17T06:47:32.1616286Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-17T06:47:32.1616658Z               "line": 651
2026-06-17T06:47:32.1616968Z             },
2026-06-17T06:47:32.1617235Z             {
2026-06-17T06:47:32.1617564Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-17T06:47:32.1617946Z               "line": 1076
2026-06-17T06:47:32.1618261Z             },
2026-06-17T06:47:32.1618550Z             {
2026-06-17T06:47:32.1618877Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-17T06:47:32.1619439Z               "line": 271
2026-06-17T06:47:32.1619750Z             },
2026-06-17T06:47:32.1620031Z             {
2026-06-17T06:47:32.1620360Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-17T06:47:32.1624961Z               "line": 295
2026-06-17T06:47:32.1625310Z             },
2026-06-17T06:47:32.1625595Z             {
2026-06-17T06:47:32.1625940Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-17T06:47:32.1626327Z               "line": 316
2026-06-17T06:47:32.1626635Z             },
2026-06-17T06:47:32.1626913Z             {
2026-06-17T06:47:32.1627242Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-17T06:47:32.1627610Z               "line": 332
2026-06-17T06:47:32.1627911Z             }
2026-06-17T06:47:32.1628191Z           ]
2026-06-17T06:47:32.1628444Z         }
2026-06-17T06:47:32.1628710Z       }
2026-06-17T06:47:32.1629044Z     },
2026-06-17T06:47:32.1629305Z     {
2026-06-17T06:47:32.1629595Z       "id": "REQ-UPD-4",
2026-06-17T06:47:32.1630028Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-17T06:47:32.1630487Z       "requiredStages": [
2026-06-17T06:47:32.1630802Z         "impl",
2026-06-17T06:47:32.1631078Z         "unit"
2026-06-17T06:47:32.1631349Z       ],
2026-06-17T06:47:32.1631621Z       "stages": {
2026-06-17T06:47:32.1631901Z         "doc": {
2026-06-17T06:47:32.1632188Z           "complete": false,
2026-06-17T06:47:32.1632508Z           "evidence": []
2026-06-17T06:47:32.1632803Z         },
2026-06-17T06:47:32.1633075Z         "impl": {
2026-06-17T06:47:32.1633361Z           "complete": true,
2026-06-17T06:47:32.1633681Z           "evidence": [
2026-06-17T06:47:32.1633986Z             {
2026-06-17T06:47:32.1634313Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-17T06:47:32.1634703Z               "line": 41
2026-06-17T06:47:32.1635003Z             },
2026-06-17T06:47:32.1635285Z             {
2026-06-17T06:47:32.1635609Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-17T06:47:32.1635989Z               "line": 88
2026-06-17T06:47:32.1636286Z             },
2026-06-17T06:47:32.1636563Z             {
2026-06-17T06:47:32.1636887Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-17T06:47:32.1637256Z               "line": 23
2026-06-17T06:47:32.1637555Z             },
2026-06-17T06:47:32.1637812Z             {
2026-06-17T06:47:32.1638142Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-17T06:47:32.1638504Z               "line": 56
2026-06-17T06:47:32.1638791Z             },
2026-06-17T06:47:32.1639129Z             {
2026-06-17T06:47:32.1639449Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-17T06:47:32.1639818Z               "line": 77
2026-06-17T06:47:32.1640112Z             },
2026-06-17T06:47:32.1640374Z             {
2026-06-17T06:47:32.1640689Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-17T06:47:32.1641052Z               "line": 211
2026-06-17T06:47:32.1641352Z             },
2026-06-17T06:47:32.1641623Z             {
2026-06-17T06:47:32.1641938Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-17T06:47:32.1642297Z               "line": 108
2026-06-17T06:47:32.1642600Z             },
2026-06-17T06:47:32.1642867Z             {
2026-06-17T06:47:32.1643172Z               "path": "crates/spt-store/src/info.rs",
2026-06-17T06:47:32.1643529Z               "line": 247
2026-06-17T06:47:32.1643988Z             },
2026-06-17T06:47:32.1644265Z             {
2026-06-17T06:47:32.1644566Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1644907Z               "line": 2240
2026-06-17T06:47:32.1645210Z             }
2026-06-17T06:47:32.1645477Z           ]
2026-06-17T06:47:32.1645734Z         },
2026-06-17T06:47:32.1646000Z         "int": {
2026-06-17T06:47:32.1646292Z           "complete": false,
2026-06-17T06:47:32.1646607Z           "evidence": []
2026-06-17T06:47:32.1646907Z         },
2026-06-17T06:47:32.1647274Z         "unit": {
2026-06-17T06:47:32.1647555Z           "complete": true,
2026-06-17T06:47:32.1647867Z           "evidence": [
2026-06-17T06:47:32.1648149Z             {
2026-06-17T06:47:32.1648478Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-17T06:47:32.1648850Z               "line": 579
2026-06-17T06:47:32.1649211Z             },
2026-06-17T06:47:32.1649488Z             {
2026-06-17T06:47:32.1649812Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-17T06:47:32.1650183Z               "line": 704
2026-06-17T06:47:32.1650477Z             },
2026-06-17T06:47:32.1650749Z             {
2026-06-17T06:47:32.1651063Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-17T06:47:32.1651431Z               "line": 384
2026-06-17T06:47:32.1651721Z             },
2026-06-17T06:47:32.1651993Z             {
2026-06-17T06:47:32.1652313Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-17T06:47:32.1652679Z               "line": 102
2026-06-17T06:47:32.1652980Z             },
2026-06-17T06:47:32.1653256Z             {
2026-06-17T06:47:32.1653566Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-17T06:47:32.1653928Z               "line": 123
2026-06-17T06:47:32.1654224Z             },
2026-06-17T06:47:32.1654506Z             {
2026-06-17T06:47:32.1654820Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-17T06:47:32.1655173Z               "line": 142
2026-06-17T06:47:32.1655472Z             },
2026-06-17T06:47:32.1655755Z             {
2026-06-17T06:47:32.1656065Z               "path": "crates/spt-store/src/info.rs",
2026-06-17T06:47:32.1656429Z               "line": 525
2026-06-17T06:47:32.1656729Z             },
2026-06-17T06:47:32.1656995Z             {
2026-06-17T06:47:32.1657310Z               "path": "crates/spt-store/src/perch.rs",
2026-06-17T06:47:32.1657673Z               "line": 566
2026-06-17T06:47:32.1657978Z             },
2026-06-17T06:47:32.1658247Z             {
2026-06-17T06:47:32.1658555Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1658918Z               "line": 7518
2026-06-17T06:47:32.1659305Z             }
2026-06-17T06:47:32.1659586Z           ]
2026-06-17T06:47:32.1659852Z         }
2026-06-17T06:47:32.1660115Z       }
2026-06-17T06:47:32.1660367Z     },
2026-06-17T06:47:32.1660635Z     {
2026-06-17T06:47:32.1660910Z       "id": "REQ-UPD-5",
2026-06-17T06:47:32.1661276Z       "title": "spt-core ripple-updates registered adapters",
2026-06-17T06:47:32.1661676Z       "requiredStages": [
2026-06-17T06:47:32.1661976Z         "impl",
2026-06-17T06:47:32.1662253Z         "unit"
2026-06-17T06:47:32.1662525Z       ],
2026-06-17T06:47:32.1662783Z       "stages": {
2026-06-17T06:47:32.1663054Z         "doc": {
2026-06-17T06:47:32.1663344Z           "complete": false,
2026-06-17T06:47:32.1663667Z           "evidence": []
2026-06-17T06:47:32.1663948Z         },
2026-06-17T06:47:32.1664203Z         "impl": {
2026-06-17T06:47:32.1664497Z           "complete": true,
2026-06-17T06:47:32.1664808Z           "evidence": [
2026-06-17T06:47:32.1665094Z             {
2026-06-17T06:47:32.1665428Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-17T06:47:32.1665803Z               "line": 27
2026-06-17T06:47:32.1666102Z             },
2026-06-17T06:47:32.1666378Z             {
2026-06-17T06:47:32.1666712Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-17T06:47:32.1667089Z               "line": 87
2026-06-17T06:47:32.1667384Z             },
2026-06-17T06:47:32.1667756Z             {
2026-06-17T06:47:32.1668099Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-17T06:47:32.1668476Z               "line": 145
2026-06-17T06:47:32.1668779Z             },
2026-06-17T06:47:32.1669134Z             {
2026-06-17T06:47:32.1669454Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1669812Z               "line": 492
2026-06-17T06:47:32.1670098Z             },
2026-06-17T06:47:32.1670375Z             {
2026-06-17T06:47:32.1670800Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1671167Z               "line": 546
2026-06-17T06:47:32.1671456Z             }
2026-06-17T06:47:32.1671730Z           ]
2026-06-17T06:47:32.1671987Z         },
2026-06-17T06:47:32.1672254Z         "int": {
2026-06-17T06:47:32.1672551Z           "complete": false,
2026-06-17T06:47:32.1672865Z           "evidence": []
2026-06-17T06:47:32.1673161Z         },
2026-06-17T06:47:32.1673428Z         "unit": {
2026-06-17T06:47:32.1673715Z           "complete": true,
2026-06-17T06:47:32.1674030Z           "evidence": [
2026-06-17T06:47:32.1674314Z             {
2026-06-17T06:47:32.1674648Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-17T06:47:32.1675020Z               "line": 272
2026-06-17T06:47:32.1675320Z             },
2026-06-17T06:47:32.1675583Z             {
2026-06-17T06:47:32.1675922Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-17T06:47:32.1676307Z               "line": 286
2026-06-17T06:47:32.1676606Z             },
2026-06-17T06:47:32.1676885Z             {
2026-06-17T06:47:32.1677205Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-17T06:47:32.1677587Z               "line": 300
2026-06-17T06:47:32.1677883Z             },
2026-06-17T06:47:32.1678154Z             {
2026-06-17T06:47:32.1678493Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-17T06:47:32.1678865Z               "line": 314
2026-06-17T06:47:32.1679245Z             },
2026-06-17T06:47:32.1679520Z             {
2026-06-17T06:47:32.1679719Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-17T06:47:32.1679863Z               "line": 348
2026-06-17T06:47:32.1679995Z             },
2026-06-17T06:47:32.1680134Z             {
2026-06-17T06:47:32.1680329Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:32.1680472Z               "line": 1001
2026-06-17T06:47:32.1680615Z             }
2026-06-17T06:47:32.1680745Z           ]
2026-06-17T06:47:32.1680896Z         }
2026-06-17T06:47:32.1681026Z       }
2026-06-17T06:47:32.1681168Z     },
2026-06-17T06:47:32.1681302Z     {
2026-06-17T06:47:32.1681454Z       "id": "REQ-UPD-6",
2026-06-17T06:47:32.1682439Z       "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-17T06:47:32.1682586Z       "requiredStages": [
2026-06-17T06:47:32.1682734Z         "doc",
2026-06-17T06:47:32.1682862Z         "impl",
2026-06-17T06:47:32.1683011Z         "unit",
2026-06-17T06:47:32.1683153Z         "int"
2026-06-17T06:47:32.1683283Z       ],
2026-06-17T06:47:32.1683425Z       "stages": {
2026-06-17T06:47:32.1683564Z         "doc": {
2026-06-17T06:47:32.1683716Z           "complete": true,
2026-06-17T06:47:32.1683859Z           "evidence": [
2026-06-17T06:47:32.1684002Z             {
2026-06-17T06:47:32.1684208Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-17T06:47:32.1684359Z               "line": 3
2026-06-17T06:47:32.1684499Z             },
2026-06-17T06:47:32.1684637Z             {
2026-06-17T06:47:32.1684821Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-17T06:47:32.1684965Z               "line": 3
2026-06-17T06:47:32.1685107Z             },
2026-06-17T06:47:32.1685251Z             {
2026-06-17T06:47:32.1685589Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-17T06:47:32.1685741Z               "line": 3
2026-06-17T06:47:32.1685885Z             }
2026-06-17T06:47:32.1686027Z           ]
2026-06-17T06:47:32.1686153Z         },
2026-06-17T06:47:32.1686299Z         "impl": {
2026-06-17T06:47:32.1686463Z           "complete": true,
2026-06-17T06:47:32.1686604Z           "evidence": [
2026-06-17T06:47:32.1686748Z             {
2026-06-17T06:47:32.1686948Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-17T06:47:32.1687199Z               "line": 76
2026-06-17T06:47:32.1687331Z             },
2026-06-17T06:47:32.1687469Z             {
2026-06-17T06:47:32.1687664Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-17T06:47:32.1687813Z               "line": 212
2026-06-17T06:47:32.1687955Z             },
2026-06-17T06:47:32.1688094Z             {
2026-06-17T06:47:32.1688284Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-17T06:47:32.1688438Z               "line": 69
2026-06-17T06:47:32.1688580Z             },
2026-06-17T06:47:32.1688710Z             {
2026-06-17T06:47:32.1688890Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-17T06:47:32.1689133Z               "line": 133
2026-06-17T06:47:32.1689266Z             },
2026-06-17T06:47:32.1689406Z             {
2026-06-17T06:47:32.1689591Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-17T06:47:32.1689745Z               "line": 243
2026-06-17T06:47:32.1689890Z             },
2026-06-17T06:47:32.1690029Z             {
2026-06-17T06:47:32.1690221Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-17T06:47:32.1690370Z               "line": 406
2026-06-17T06:47:32.1690512Z             },
2026-06-17T06:47:32.1690652Z             {
2026-06-17T06:47:32.1690836Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-17T06:47:32.1690986Z               "line": 534
2026-06-17T06:47:32.1691128Z             },
2026-06-17T06:47:32.1691271Z             {
2026-06-17T06:47:32.1691452Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-17T06:47:32.1691606Z               "line": 548
2026-06-17T06:47:32.1691747Z             },
2026-06-17T06:47:32.1691887Z             {
2026-06-17T06:47:32.1692071Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-17T06:47:32.1692216Z               "line": 603
2026-06-17T06:47:32.1692362Z             },
2026-06-17T06:47:32.1692494Z             {
2026-06-17T06:47:32.1692689Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-17T06:47:32.1692831Z               "line": 634
2026-06-17T06:47:32.1692956Z             },
2026-06-17T06:47:32.1693098Z             {
2026-06-17T06:47:32.1693289Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-17T06:47:32.1693437Z               "line": 137
2026-06-17T06:47:32.1693576Z             },
2026-06-17T06:47:32.1693713Z             {
2026-06-17T06:47:32.1693914Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-17T06:47:32.1694062Z               "line": 184
2026-06-17T06:47:32.1694201Z             },
2026-06-17T06:47:32.1694338Z             {
2026-06-17T06:47:32.1694525Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1694672Z               "line": 78
2026-06-17T06:47:32.1694817Z             },
2026-06-17T06:47:32.1694958Z             {
2026-06-17T06:47:32.1695150Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1695305Z               "line": 114
2026-06-17T06:47:32.1695449Z             },
2026-06-17T06:47:32.1695586Z             {
2026-06-17T06:47:32.1695773Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1695925Z               "line": 185
2026-06-17T06:47:32.1696054Z             },
2026-06-17T06:47:32.1696197Z             {
2026-06-17T06:47:32.1696383Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1696531Z               "line": 260
2026-06-17T06:47:32.1696769Z             },
2026-06-17T06:47:32.1696912Z             {
2026-06-17T06:47:32.1697108Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1697251Z               "line": 292
2026-06-17T06:47:32.1697381Z             },
2026-06-17T06:47:32.1697522Z             {
2026-06-17T06:47:32.1697712Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1697858Z               "line": 323
2026-06-17T06:47:32.1697996Z             },
2026-06-17T06:47:32.1698129Z             {
2026-06-17T06:47:32.1698430Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1698582Z               "line": 346
2026-06-17T06:47:32.1698721Z             },
2026-06-17T06:47:32.1698858Z             {
2026-06-17T06:47:32.1699126Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1699270Z               "line": 388
2026-06-17T06:47:32.1699412Z             },
2026-06-17T06:47:32.1699551Z             {
2026-06-17T06:47:32.1699731Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1699875Z               "line": 398
2026-06-17T06:47:32.1699999Z             },
2026-06-17T06:47:32.1700146Z             {
2026-06-17T06:47:32.1700333Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1700484Z               "line": 410
2026-06-17T06:47:32.1700626Z             },
2026-06-17T06:47:32.1700757Z             {
2026-06-17T06:47:32.1700940Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1701086Z               "line": 420
2026-06-17T06:47:32.1701231Z             },
2026-06-17T06:47:32.1701368Z             {
2026-06-17T06:47:32.1701550Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1701697Z               "line": 439
2026-06-17T06:47:32.1701832Z             },
2026-06-17T06:47:32.1701974Z             {
2026-06-17T06:47:32.1702161Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1702302Z               "line": 449
2026-06-17T06:47:32.1702452Z             },
2026-06-17T06:47:32.1702594Z             {
2026-06-17T06:47:32.1702777Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1702923Z               "line": 94
2026-06-17T06:47:32.1703064Z             },
2026-06-17T06:47:32.1703198Z             {
2026-06-17T06:47:32.1703376Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1703526Z               "line": 120
2026-06-17T06:47:32.1703658Z             },
2026-06-17T06:47:32.1703803Z             {
2026-06-17T06:47:32.1703987Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1704141Z               "line": 135
2026-06-17T06:47:32.1704283Z             },
2026-06-17T06:47:32.1704408Z             {
2026-06-17T06:47:32.1704592Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1704742Z               "line": 162
2026-06-17T06:47:32.1704884Z             },
2026-06-17T06:47:32.1705023Z             {
2026-06-17T06:47:32.1705208Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1705357Z               "line": 174
2026-06-17T06:47:32.1705494Z             },
2026-06-17T06:47:32.1705619Z             {
2026-06-17T06:47:32.1705804Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1705956Z               "line": 185
2026-06-17T06:47:32.1706091Z             },
2026-06-17T06:47:32.1706232Z             {
2026-06-17T06:47:32.1706424Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1706575Z               "line": 451
2026-06-17T06:47:32.1706714Z             },
2026-06-17T06:47:32.1706852Z             {
2026-06-17T06:47:32.1707043Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1707191Z               "line": 573
2026-06-17T06:47:32.1707334Z             },
2026-06-17T06:47:32.1707472Z             {
2026-06-17T06:47:32.1707659Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-17T06:47:32.1707912Z               "line": 171
2026-06-17T06:47:32.1708049Z             },
2026-06-17T06:47:32.1708191Z             {
2026-06-17T06:47:32.1708370Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-17T06:47:32.1708513Z               "line": 65
2026-06-17T06:47:32.1708662Z             },
2026-06-17T06:47:32.1708789Z             {
2026-06-17T06:47:32.1709052Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-17T06:47:32.1709196Z               "line": 71
2026-06-17T06:47:32.1709338Z             },
2026-06-17T06:47:32.1709577Z             {
2026-06-17T06:47:32.1709772Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-17T06:47:32.1709906Z               "line": 77
2026-06-17T06:47:32.1710044Z             },
2026-06-17T06:47:32.1710178Z             {
2026-06-17T06:47:32.1710354Z               "path": "crates/xtask/src/main.rs",
2026-06-17T06:47:32.1710498Z               "line": 778
2026-06-17T06:47:32.1710625Z             },
2026-06-17T06:47:32.1710774Z             {
2026-06-17T06:47:32.1710949Z               "path": "crates/xtask/src/main.rs",
2026-06-17T06:47:32.1711096Z               "line": 795
2026-06-17T06:47:32.1711238Z             },
2026-06-17T06:47:32.1711375Z             {
2026-06-17T06:47:32.1711548Z               "path": "crates/xtask/src/main.rs",
2026-06-17T06:47:32.1711695Z               "line": 838
2026-06-17T06:47:32.1711839Z             },
2026-06-17T06:47:32.1711985Z             {
2026-06-17T06:47:32.1712144Z               "path": "crates/xtask/src/main.rs",
2026-06-17T06:47:32.1712300Z               "line": 981
2026-06-17T06:47:32.1712439Z             },
2026-06-17T06:47:32.1712577Z             {
2026-06-17T06:47:32.1712745Z               "path": "crates/xtask/src/main.rs",
2026-06-17T06:47:32.1712887Z               "line": 1131
2026-06-17T06:47:32.1713031Z             }
2026-06-17T06:47:32.1713163Z           ]
2026-06-17T06:47:32.1713302Z         },
2026-06-17T06:47:32.1713436Z         "int": {
2026-06-17T06:47:32.1713591Z           "complete": true,
2026-06-17T06:47:32.1713739Z           "evidence": [
2026-06-17T06:47:32.1713870Z             {
2026-06-17T06:47:32.1714071Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-17T06:47:32.1714213Z               "line": 569
2026-06-17T06:47:32.1714358Z             },
2026-06-17T06:47:32.1714490Z             {
2026-06-17T06:47:32.1714682Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-17T06:47:32.1714833Z               "line": 135
2026-06-17T06:47:32.1714973Z             }
2026-06-17T06:47:32.1715106Z           ]
2026-06-17T06:47:32.1715239Z         },
2026-06-17T06:47:32.1715391Z         "unit": {
2026-06-17T06:47:32.1715540Z           "complete": true,
2026-06-17T06:47:32.1715688Z           "evidence": [
2026-06-17T06:47:32.1715816Z             {
2026-06-17T06:47:32.1716012Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-17T06:47:32.1716160Z               "line": 624
2026-06-17T06:47:32.1716290Z             },
2026-06-17T06:47:32.1716425Z             {
2026-06-17T06:47:32.1716621Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-17T06:47:32.1716778Z               "line": 673
2026-06-17T06:47:32.1716922Z             },
2026-06-17T06:47:32.1717054Z             {
2026-06-17T06:47:32.1717237Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-17T06:47:32.1717383Z               "line": 696
2026-06-17T06:47:32.1717523Z             },
2026-06-17T06:47:32.1717651Z             {
2026-06-17T06:47:32.1717843Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1717994Z               "line": 513
2026-06-17T06:47:32.1718124Z             },
2026-06-17T06:47:32.1718270Z             {
2026-06-17T06:47:32.1718458Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1718599Z               "line": 638
2026-06-17T06:47:32.1718727Z             },
2026-06-17T06:47:32.1718874Z             {
2026-06-17T06:47:32.1719155Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1719393Z               "line": 675
2026-06-17T06:47:32.1719536Z             },
2026-06-17T06:47:32.1719673Z             {
2026-06-17T06:47:32.1719860Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1720007Z               "line": 947
2026-06-17T06:47:32.1720151Z             },
2026-06-17T06:47:32.1720289Z             {
2026-06-17T06:47:32.1720475Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1720628Z               "line": 969
2026-06-17T06:47:32.1720762Z             },
2026-06-17T06:47:32.1721005Z             {
2026-06-17T06:47:32.1721190Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1721334Z               "line": 986
2026-06-17T06:47:32.1721476Z             },
2026-06-17T06:47:32.1721613Z             {
2026-06-17T06:47:32.1721798Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1721945Z               "line": 1001
2026-06-17T06:47:32.1722089Z             },
2026-06-17T06:47:32.1722216Z             {
2026-06-17T06:47:32.1722413Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1722564Z               "line": 1027
2026-06-17T06:47:32.1722704Z             },
2026-06-17T06:47:32.1722837Z             {
2026-06-17T06:47:32.1723014Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-17T06:47:32.1723166Z               "line": 457
2026-06-17T06:47:32.1723310Z             },
2026-06-17T06:47:32.1723452Z             {
2026-06-17T06:47:32.1723648Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-17T06:47:32.1723791Z               "line": 338
2026-06-17T06:47:32.1723925Z             },
2026-06-17T06:47:32.1724067Z             {
2026-06-17T06:47:32.1724238Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1724388Z               "line": 9756
2026-06-17T06:47:32.1724521Z             },
2026-06-17T06:47:32.1724666Z             {
2026-06-17T06:47:32.1724840Z               "path": "crates/xtask/src/main.rs",
2026-06-17T06:47:32.1724994Z               "line": 1260
2026-06-17T06:47:32.1725127Z             },
2026-06-17T06:47:32.1725266Z             {
2026-06-17T06:47:32.1725451Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-17T06:47:32.1725595Z               "line": 130
2026-06-17T06:47:32.1725737Z             }
2026-06-17T06:47:32.1725872Z           ]
2026-06-17T06:47:32.1726019Z         }
2026-06-17T06:47:32.1726149Z       }
2026-06-17T06:47:32.1726290Z     },
2026-06-17T06:47:32.1726429Z     {
2026-06-17T06:47:32.1726581Z       "id": "REQ-UPD-7",
2026-06-17T06:47:32.1729118Z       "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-17T06:47:32.1729282Z       "requiredStages": [
2026-06-17T06:47:32.1729426Z         "impl",
2026-06-17T06:47:32.1729571Z         "unit"
2026-06-17T06:47:32.1729705Z       ],
2026-06-17T06:47:32.1733264Z       "stages": {
2026-06-17T06:47:32.1733430Z         "doc": {
2026-06-17T06:47:32.1733593Z           "complete": false,
2026-06-17T06:47:32.1733764Z           "evidence": []
2026-06-17T06:47:32.1733888Z         },
2026-06-17T06:47:32.1734031Z         "impl": {
2026-06-17T06:47:32.1734180Z           "complete": true,
2026-06-17T06:47:32.1734326Z           "evidence": [
2026-06-17T06:47:32.1734466Z             {
2026-06-17T06:47:32.1734641Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1734788Z               "line": 2425
2026-06-17T06:47:32.1734929Z             }
2026-06-17T06:47:32.1735206Z           ]
2026-06-17T06:47:32.1735343Z         },
2026-06-17T06:47:32.1735483Z         "int": {
2026-06-17T06:47:32.1735634Z           "complete": false,
2026-06-17T06:47:32.1735788Z           "evidence": []
2026-06-17T06:47:32.1735921Z         },
2026-06-17T06:47:32.1736055Z         "unit": {
2026-06-17T06:47:32.1736211Z           "complete": true,
2026-06-17T06:47:32.1736355Z           "evidence": [
2026-06-17T06:47:32.1736493Z             {
2026-06-17T06:47:32.1736665Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1736908Z               "line": 9732
2026-06-17T06:47:32.1737038Z             }
2026-06-17T06:47:32.1737165Z           ]
2026-06-17T06:47:32.1737304Z         }
2026-06-17T06:47:32.1737438Z       }
2026-06-17T06:47:32.1737588Z     },
2026-06-17T06:47:32.1737713Z     {
2026-06-17T06:47:32.1737855Z       "id": "REQ-UPD-8",
2026-06-17T06:47:32.1740784Z       "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-17T06:47:32.1740942Z       "requiredStages": [
2026-06-17T06:47:32.1741080Z         "impl",
2026-06-17T06:47:32.1741220Z         "unit"
2026-06-17T06:47:32.1741348Z       ],
2026-06-17T06:47:32.1741491Z       "stages": {
2026-06-17T06:47:32.1741628Z         "doc": {
2026-06-17T06:47:32.1741796Z           "complete": false,
2026-06-17T06:47:32.1741943Z           "evidence": []
2026-06-17T06:47:32.1742077Z         },
2026-06-17T06:47:32.1742221Z         "impl": {
2026-06-17T06:47:32.1742368Z           "complete": true,
2026-06-17T06:47:32.1742517Z           "evidence": [
2026-06-17T06:47:32.1742653Z             {
2026-06-17T06:47:32.1742848Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-17T06:47:32.1742994Z               "line": 77
2026-06-17T06:47:32.1743142Z             },
2026-06-17T06:47:32.1743280Z             {
2026-06-17T06:47:32.1743471Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1743623Z               "line": 49
2026-06-17T06:47:32.1743758Z             },
2026-06-17T06:47:32.1743891Z             {
2026-06-17T06:47:32.1744082Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1744229Z               "line": 152
2026-06-17T06:47:32.1744372Z             },
2026-06-17T06:47:32.1744505Z             {
2026-06-17T06:47:32.1744697Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1744839Z               "line": 215
2026-06-17T06:47:32.1744973Z             },
2026-06-17T06:47:32.1745112Z             {
2026-06-17T06:47:32.1745295Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1745443Z               "line": 230
2026-06-17T06:47:32.1745579Z             },
2026-06-17T06:47:32.1745713Z             {
2026-06-17T06:47:32.1745898Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1746048Z               "line": 247
2026-06-17T06:47:32.1746190Z             },
2026-06-17T06:47:32.1746329Z             {
2026-06-17T06:47:32.1746519Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1746658Z               "line": 269
2026-06-17T06:47:32.1746796Z             },
2026-06-17T06:47:32.1746934Z             {
2026-06-17T06:47:32.1747120Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1747363Z               "line": 66
2026-06-17T06:47:32.1747506Z             },
2026-06-17T06:47:32.1747650Z             {
2026-06-17T06:47:32.1747835Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1747984Z               "line": 154
2026-06-17T06:47:32.1748120Z             },
2026-06-17T06:47:32.1748258Z             {
2026-06-17T06:47:32.1748439Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1748583Z               "line": 2229
2026-06-17T06:47:32.1748726Z             },
2026-06-17T06:47:32.1749050Z             {
2026-06-17T06:47:32.1749222Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1749365Z               "line": 2292
2026-06-17T06:47:32.1749509Z             },
2026-06-17T06:47:32.1749650Z             {
2026-06-17T06:47:32.1749814Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1749961Z               "line": 2302
2026-06-17T06:47:32.1750099Z             },
2026-06-17T06:47:32.1750238Z             {
2026-06-17T06:47:32.1750408Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1750569Z               "line": 2309
2026-06-17T06:47:32.1750710Z             },
2026-06-17T06:47:32.1750830Z             {
2026-06-17T06:47:32.1751001Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1751150Z               "line": 2426
2026-06-17T06:47:32.1751288Z             },
2026-06-17T06:47:32.1751426Z             {
2026-06-17T06:47:32.1751602Z               "path": "crates/xtask/src/main.rs",
2026-06-17T06:47:32.1751760Z               "line": 480
2026-06-17T06:47:32.1751903Z             },
2026-06-17T06:47:32.1752036Z             {
2026-06-17T06:47:32.1752203Z               "path": "crates/xtask/src/main.rs",
2026-06-17T06:47:32.1752356Z               "line": 494
2026-06-17T06:47:32.1752480Z             }
2026-06-17T06:47:32.1752622Z           ]
2026-06-17T06:47:32.1752753Z         },
2026-06-17T06:47:32.1752890Z         "int": {
2026-06-17T06:47:32.1753039Z           "complete": false,
2026-06-17T06:47:32.1753185Z           "evidence": []
2026-06-17T06:47:32.1753328Z         },
2026-06-17T06:47:32.1753455Z         "unit": {
2026-06-17T06:47:32.1753610Z           "complete": true,
2026-06-17T06:47:32.1753760Z           "evidence": [
2026-06-17T06:47:32.1753883Z             {
2026-06-17T06:47:32.1754079Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-17T06:47:32.1754231Z               "line": 476
2026-06-17T06:47:32.1754365Z             },
2026-06-17T06:47:32.1754507Z             {
2026-06-17T06:47:32.1754708Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-17T06:47:32.1754860Z               "line": 580
2026-06-17T06:47:32.1755000Z             },
2026-06-17T06:47:32.1755132Z             {
2026-06-17T06:47:32.1755300Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1755447Z               "line": 9734
2026-06-17T06:47:32.1755577Z             },
2026-06-17T06:47:32.1755709Z             {
2026-06-17T06:47:32.1755885Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1756035Z               "line": 9756
2026-06-17T06:47:32.1756177Z             }
2026-06-17T06:47:32.1756307Z           ]
2026-06-17T06:47:32.1756445Z         }
2026-06-17T06:47:32.1756575Z       }
2026-06-17T06:47:32.1756717Z     },
2026-06-17T06:47:32.1756855Z     {
2026-06-17T06:47:32.1757003Z       "id": "REQ-UPD-9",
2026-06-17T06:47:32.1760049Z       "title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).",
2026-06-17T06:47:32.1760220Z       "requiredStages": [
2026-06-17T06:47:32.1760359Z         "doc",
2026-06-17T06:47:32.1760497Z         "impl",
2026-06-17T06:47:32.1760635Z         "unit"
2026-06-17T06:47:32.1760774Z       ],
2026-06-17T06:47:32.1760920Z       "stages": {
2026-06-17T06:47:32.1761153Z         "doc": {
2026-06-17T06:47:32.1761308Z           "complete": true,
2026-06-17T06:47:32.1761453Z           "evidence": [
2026-06-17T06:47:32.1761585Z             {
2026-06-17T06:47:32.1761744Z               "path": "CONTEXT.md",
2026-06-17T06:47:32.1761900Z               "line": 93
2026-06-17T06:47:32.1762039Z             },
2026-06-17T06:47:32.1762172Z             {
2026-06-17T06:47:32.1762340Z               "path": "docs/MANIFEST.md",
2026-06-17T06:47:32.1762487Z               "line": 221
2026-06-17T06:47:32.1762626Z             }
2026-06-17T06:47:32.1762754Z           ]
2026-06-17T06:47:32.1762892Z         },
2026-06-17T06:47:32.1763036Z         "impl": {
2026-06-17T06:47:32.1763173Z           "complete": true,
2026-06-17T06:47:32.1763317Z           "evidence": [
2026-06-17T06:47:32.1763455Z             {
2026-06-17T06:47:32.1763656Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-17T06:47:32.1763802Z               "line": 128
2026-06-17T06:47:32.1763949Z             },
2026-06-17T06:47:32.1764090Z             {
2026-06-17T06:47:32.1764272Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1764423Z               "line": 533
2026-06-17T06:47:32.1764558Z             },
2026-06-17T06:47:32.1764692Z             {
2026-06-17T06:47:32.1764883Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:32.1765035Z               "line": 404
2026-06-17T06:47:32.1765178Z             },
2026-06-17T06:47:32.1765315Z             {
2026-06-17T06:47:32.1765507Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:32.1765654Z               "line": 450
2026-06-17T06:47:32.1765783Z             },
2026-06-17T06:47:32.1765922Z             {
2026-06-17T06:47:32.1766108Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:32.1766255Z               "line": 858
2026-06-17T06:47:32.1766392Z             },
2026-06-17T06:47:32.1766521Z             {
2026-06-17T06:47:32.1766714Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-17T06:47:32.1766863Z               "line": 289
2026-06-17T06:47:32.1767010Z             },
2026-06-17T06:47:32.1767140Z             {
2026-06-17T06:47:32.1767315Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1767464Z               "line": 5374
2026-06-17T06:47:32.1767601Z             },
2026-06-17T06:47:32.1767740Z             {
2026-06-17T06:47:32.1767911Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1768055Z               "line": 5392
2026-06-17T06:47:32.1768192Z             },
2026-06-17T06:47:32.1768330Z             {
2026-06-17T06:47:32.1768497Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1768645Z               "line": 5529
2026-06-17T06:47:32.1768779Z             },
2026-06-17T06:47:32.1768922Z             {
2026-06-17T06:47:32.1769178Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1769326Z               "line": 5550
2026-06-17T06:47:32.1769465Z             },
2026-06-17T06:47:32.1769607Z             {
2026-06-17T06:47:32.1769770Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1769912Z               "line": 5573
2026-06-17T06:47:32.1770056Z             },
2026-06-17T06:47:32.1770184Z             {
2026-06-17T06:47:32.1770347Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1770490Z               "line": 5600
2026-06-17T06:47:32.1770619Z             }
2026-06-17T06:47:32.1770762Z           ]
2026-06-17T06:47:32.1770991Z         },
2026-06-17T06:47:32.1771133Z         "int": {
2026-06-17T06:47:32.1771283Z           "complete": false,
2026-06-17T06:47:32.1771433Z           "evidence": []
2026-06-17T06:47:32.1771566Z         },
2026-06-17T06:47:32.1771699Z         "unit": {
2026-06-17T06:47:32.1771854Z           "complete": true,
2026-06-17T06:47:32.1771994Z           "evidence": [
2026-06-17T06:47:32.1772135Z             {
2026-06-17T06:47:32.1772337Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-17T06:47:32.1772571Z               "line": 259
2026-06-17T06:47:32.1772718Z             },
2026-06-17T06:47:32.1772852Z             {
2026-06-17T06:47:32.1773042Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-17T06:47:32.1773186Z               "line": 657
2026-06-17T06:47:32.1773328Z             },
2026-06-17T06:47:32.1773467Z             {
2026-06-17T06:47:32.1773657Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-17T06:47:32.1773816Z               "line": 1037
2026-06-17T06:47:32.1773948Z             },
2026-06-17T06:47:32.1774097Z             {
2026-06-17T06:47:32.1774258Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1774414Z               "line": 6896
2026-06-17T06:47:32.1774557Z             }
2026-06-17T06:47:32.1774683Z           ]
2026-06-17T06:47:32.1774817Z         }
2026-06-17T06:47:32.1774951Z       }
2026-06-17T06:47:32.1775084Z     },
2026-06-17T06:47:32.1775218Z     {
2026-06-17T06:47:32.1775375Z       "id": "REQ-WHOAMI-1",
2026-06-17T06:47:32.1777260Z       "title": "`spt whoami` is a thin ALIAS for `spt endpoint list` (full output: the SELF pin + the subnet roster) — the standalone bare-id command is dropped (the `id=$(spt whoami)` capture was never a real pattern: env vars don't persist between agent tool calls). The one new render: the `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state. whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9).",
2026-06-17T06:47:32.1777423Z       "requiredStages": [
2026-06-17T06:47:32.1777570Z         "doc",
2026-06-17T06:47:32.1777714Z         "impl",
2026-06-17T06:47:32.1777855Z         "unit"
2026-06-17T06:47:32.1778000Z       ],
2026-06-17T06:47:32.1778147Z       "stages": {
2026-06-17T06:47:32.1778291Z         "doc": {
2026-06-17T06:47:32.1778442Z           "complete": true,
2026-06-17T06:47:32.1778595Z           "evidence": [
2026-06-17T06:47:32.1778738Z             {
2026-06-17T06:47:32.1778900Z               "path": "CONTEXT.md",
2026-06-17T06:47:32.1779115Z               "line": 659
2026-06-17T06:47:32.1779254Z             }
2026-06-17T06:47:32.1779395Z           ]
2026-06-17T06:47:32.1779535Z         },
2026-06-17T06:47:32.1779673Z         "impl": {
2026-06-17T06:47:32.1779829Z           "complete": true,
2026-06-17T06:47:32.1779973Z           "evidence": [
2026-06-17T06:47:32.1780120Z             {
2026-06-17T06:47:32.1780292Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1780444Z               "line": 2914
2026-06-17T06:47:32.1780584Z             },
2026-06-17T06:47:32.1780716Z             {
2026-06-17T06:47:32.1780884Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1781031Z               "line": 2942
2026-06-17T06:47:32.1781174Z             }
2026-06-17T06:47:32.1781312Z           ]
2026-06-17T06:47:32.1781445Z         },
2026-06-17T06:47:32.1781589Z         "int": {
2026-06-17T06:47:32.1781736Z           "complete": false,
2026-06-17T06:47:32.1781894Z           "evidence": []
2026-06-17T06:47:32.1782022Z         },
2026-06-17T06:47:32.1782170Z         "unit": {
2026-06-17T06:47:32.1782315Z           "complete": true,
2026-06-17T06:47:32.1782467Z           "evidence": [
2026-06-17T06:47:32.1782606Z             {
2026-06-17T06:47:32.1782782Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1782935Z               "line": 7178
2026-06-17T06:47:32.1783068Z             },
2026-06-17T06:47:32.1783316Z             {
2026-06-17T06:47:32.1783484Z               "path": "crates/spt/src/cli.rs",
2026-06-17T06:47:32.1783635Z               "line": 7231
2026-06-17T06:47:32.1783761Z             }
2026-06-17T06:47:32.1783903Z           ]
2026-06-17T06:47:32.1784041Z         }
2026-06-17T06:47:32.1784179Z       }
2026-06-17T06:47:32.1784317Z     }
2026-06-17T06:47:32.1784452Z   ],
2026-06-17T06:47:32.1784594Z   "findings": []
2026-06-17T06:47:32.1784724Z }
2026-06-17T06:47:32.1862228Z ##[group]Run ./traceable-reqs lint || true
2026-06-17T06:47:32.1862585Z [36;1m./traceable-reqs lint || true[0m
2026-06-17T06:47:32.1875262Z shell: /usr/bin/bash -e {0}
2026-06-17T06:47:32.1875405Z ##[endgroup]
2026-06-17T06:47:32.2087656Z Requirement quality findings (145); 222 requirements queued for agent review:
2026-06-17T06:47:32.2088308Z   [must] requirement_quality REQ-API-1 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2089179Z   [must] requirement_quality REQ-API-4 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2089671Z   [must] requirement_quality REQ-API-4 criterion=length — title is 67 words; want 3..=25
2026-06-17T06:47:32.2090156Z   [must] requirement_quality REQ-CLI-1 criterion=length — title is 47 words; want 3..=25
2026-06-17T06:47:32.2090600Z   [must] requirement_quality REQ-CLI-2 criterion=length — title is 37 words; want 3..=25
2026-06-17T06:47:32.2091147Z   [must] requirement_quality REQ-CLI-3 criterion=length — title is 37 words; want 3..=25
2026-06-17T06:47:32.2091646Z   [must] requirement_quality REQ-CONSENT-1 criterion=length — title is 41 words; want 3..=25
2026-06-17T06:47:32.2092136Z   [must] requirement_quality REQ-CONSENT-2 criterion=length — title is 37 words; want 3..=25
2026-06-17T06:47:32.2092652Z   [must] requirement_quality REQ-CONSENT-3 criterion=length — title is 82 words; want 3..=25
2026-06-17T06:47:32.2093263Z   [must] requirement_quality REQ-CONV-1 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2093606Z   [must] requirement_quality REQ-CONV-1 criterion=length — title is 73 words; want 3..=25
2026-06-17T06:47:32.2093928Z   [must] requirement_quality REQ-CONV-2 criterion=length — title is 47 words; want 3..=25
2026-06-17T06:47:32.2094378Z   [must] requirement_quality REQ-DAEMON-5 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2094722Z   [must] requirement_quality REQ-DAEMON-5 criterion=length — title is 64 words; want 3..=25
2026-06-17T06:47:32.2095208Z   [must] requirement_quality REQ-DAEMON-6 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2095709Z   [must] requirement_quality REQ-DAEMON-6 criterion=length — title is 84 words; want 3..=25
2026-06-17T06:47:32.2096167Z   [must] requirement_quality REQ-DAEMON-7 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2096501Z   [must] requirement_quality REQ-DAEMON-7 criterion=length — title is 62 words; want 3..=25
2026-06-17T06:47:32.2096839Z   [must] requirement_quality REQ-DAEMON-8 criterion=length — title is 44 words; want 3..=25
2026-06-17T06:47:32.2097295Z   [must] requirement_quality REQ-DAEMON-9 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2097640Z   [must] requirement_quality REQ-DAEMON-9 criterion=length — title is 114 words; want 3..=25
2026-06-17T06:47:32.2098106Z   [must] requirement_quality REQ-ELEVATE-1 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2098449Z   [must] requirement_quality REQ-ELEVATE-1 criterion=length — title is 121 words; want 3..=25
2026-06-17T06:47:32.2098873Z   [must] requirement_quality REQ-EP-6 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2099396Z   [must] requirement_quality REQ-EP-6 criterion=length — title is 58 words; want 3..=25
2026-06-17T06:47:32.2099748Z   [must] requirement_quality REQ-EP-7 criterion=length — title is 68 words; want 3..=25
2026-06-17T06:47:32.2100283Z   [must] requirement_quality REQ-HAZARD-BRAIN-RESPAWN-PATH criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2100697Z   [must] requirement_quality REQ-HAZARD-BRAIN-RESPAWN-PATH criterion=length — title is 119 words; want 3..=25
2026-06-17T06:47:32.2101504Z   [must] requirement_quality REQ-HAZARD-BROKER-PROCESS-ISOLATION criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2102090Z   [must] requirement_quality REQ-HAZARD-BROKER-PROCESS-ISOLATION criterion=length — title is 114 words; want 3..=25
2026-06-17T06:47:32.2102621Z   [must] requirement_quality REQ-HAZARD-BROKER-QUIC-DEADLINE criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2103049Z   [must] requirement_quality REQ-HAZARD-BROKER-QUIC-DEADLINE criterion=length — title is 162 words; want 3..=25
2026-06-17T06:47:32.2103484Z   [must] requirement_quality REQ-HAZARD-CONFLICT-BOTH-PRESERVED criterion=length — title is 29 words; want 3..=25
2026-06-17T06:47:32.2103912Z   [must] requirement_quality REQ-HAZARD-DAEMON-SCHED-NONBLOCKING criterion=length — title is 32 words; want 3..=25
2026-06-17T06:47:32.2104340Z   [must] requirement_quality REQ-HAZARD-DETACHED-PIPE-INHERIT criterion=length — title is 52 words; want 3..=25
2026-06-17T06:47:32.2104877Z   [must] requirement_quality REQ-HAZARD-ELEVATED-DAEMON-SPAWN criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2105310Z   [must] requirement_quality REQ-HAZARD-ELEVATED-DAEMON-SPAWN criterion=length — title is 58 words; want 3..=25
2026-06-17T06:47:32.2105845Z   [must] requirement_quality REQ-HAZARD-ENVELOPE-CR-LINESAFE criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2106260Z   [must] requirement_quality REQ-HAZARD-ENVELOPE-CR-LINESAFE criterion=length — title is 73 words; want 3..=25
2026-06-17T06:47:32.2106788Z   [must] requirement_quality REQ-HAZARD-ENVELOPE-PARSER-SAFE criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2107179Z   [must] requirement_quality REQ-HAZARD-EPOCH-RESET criterion=length — title is 60 words; want 3..=25
2026-06-17T06:47:32.2107685Z   [must] requirement_quality REQ-HAZARD-GEN-START-NOW criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2108094Z   [must] requirement_quality REQ-HAZARD-INSTANT-UNDERFLOW criterion=length — title is 30 words; want 3..=25
2026-06-17T06:47:32.2108601Z   [must] requirement_quality REQ-HAZARD-LIVEHOST-BOOT-RACE criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2109110Z   [must] requirement_quality REQ-HAZARD-LIVEHOST-BOOT-RACE criterion=length — title is 158 words; want 3..=25
2026-06-17T06:47:32.2109778Z   [must] requirement_quality REQ-HAZARD-LIVEHOST-NONRESIDENT criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2110204Z   [must] requirement_quality REQ-HAZARD-LIVEHOST-NONRESIDENT criterion=length — title is 171 words; want 3..=25
2026-06-17T06:47:32.2110595Z   [must] requirement_quality REQ-HAZARD-PAIR-RATE-LIMIT criterion=length — title is 37 words; want 3..=25
2026-06-17T06:47:32.2111019Z   [must] requirement_quality REQ-HAZARD-PAIR-SEED-ROTATION criterion=length — title is 33 words; want 3..=25
2026-06-17T06:47:32.2111548Z   [must] requirement_quality REQ-HAZARD-PAIR-TRANSCRIPT-BIND criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2112079Z   [must] requirement_quality REQ-HAZARD-PSYCHE-OUTBOUND-PROXY criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2112509Z   [must] requirement_quality REQ-HAZARD-PSYCHE-OUTBOUND-PROXY criterion=length — title is 27 words; want 3..=25
2026-06-17T06:47:32.2113023Z   [must] requirement_quality REQ-HAZARD-PUMP-IPC-DEADLINE criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2113429Z   [must] requirement_quality REQ-HAZARD-PUMP-IPC-DEADLINE criterion=length — title is 38 words; want 3..=25
2026-06-17T06:47:32.2114087Z   [must] requirement_quality REQ-HAZARD-REGISTRY-GHOST-ROWS criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2114607Z   [must] requirement_quality REQ-HAZARD-REGISTRY-GHOST-ROWS criterion=length — title is 66 words; want 3..=25
2026-06-17T06:47:32.2115020Z   [must] requirement_quality REQ-HAZARD-ROLLBACK-STATE-COMPAT criterion=length — title is 72 words; want 3..=25
2026-06-17T06:47:32.2115518Z   [must] requirement_quality REQ-HAZARD-SELF-ELEVATE criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2115905Z   [must] requirement_quality REQ-HAZARD-SELF-ELEVATE criterion=length — title is 101 words; want 3..=25
2026-06-17T06:47:32.2116296Z   [must] requirement_quality REQ-HAZARD-SUDO-SECURE-PATH criterion=length — title is 43 words; want 3..=25
2026-06-17T06:47:32.2116810Z   [must] requirement_quality REQ-HAZARD-TEMPLATE-ARGV-FILL criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2117226Z   [must] requirement_quality REQ-HAZARD-TEMPLATE-ARGV-FILL criterion=length — title is 166 words; want 3..=25
2026-06-17T06:47:32.2117730Z   [must] requirement_quality REQ-HAZARD-VIEWER-ISOLATION criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2118125Z   [must] requirement_quality REQ-HAZARD-VIEWER-ISOLATION criterion=length — title is 118 words; want 3..=25
2026-06-17T06:47:32.2118508Z   [must] requirement_quality REQ-HAZARD-WAN-ORIGIN-AUTH criterion=length — title is 37 words; want 3..=25
2026-06-17T06:47:32.2119123Z   [must] requirement_quality REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2119560Z   [must] requirement_quality REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE criterion=length — title is 96 words; want 3..=25
2026-06-17T06:47:32.2119908Z   [must] requirement_quality REQ-HOST-RUN-1 criterion=length — title is 88 words; want 3..=25
2026-06-17T06:47:32.2120263Z   [must] requirement_quality REQ-HOST-RUN-2 criterion=length — title is 97 words; want 3..=25
2026-06-17T06:47:32.2120582Z   [must] requirement_quality REQ-INST-15 criterion=length — title is 32 words; want 3..=25
2026-06-17T06:47:32.2121051Z   [must] requirement_quality REQ-INSTALL-10 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2121399Z   [must] requirement_quality REQ-INSTALL-10 criterion=length — title is 58 words; want 3..=25
2026-06-17T06:47:32.2121723Z   [must] requirement_quality REQ-INSTALL-11 criterion=length — title is 78 words; want 3..=25
2026-06-17T06:47:32.2122057Z   [must] requirement_quality REQ-INSTALL-2 criterion=length — title is 2 word(s); want 3..=25
2026-06-17T06:47:32.2122504Z   [must] requirement_quality REQ-INSTALL-6 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2122837Z   [must] requirement_quality REQ-INSTALL-6 criterion=length — title is 56 words; want 3..=25
2026-06-17T06:47:32.2123293Z   [must] requirement_quality REQ-INSTALL-7 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2123636Z   [must] requirement_quality REQ-INSTALL-7 criterion=length — title is 50 words; want 3..=25
2026-06-17T06:47:32.2123965Z   [must] requirement_quality REQ-INSTALL-8 criterion=length — title is 55 words; want 3..=25
2026-06-17T06:47:32.2124417Z   [must] requirement_quality REQ-INSTALL-9 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2124751Z   [must] requirement_quality REQ-INSTALL-9 criterion=length — title is 62 words; want 3..=25
2026-06-17T06:47:32.2125191Z   [must] requirement_quality REQ-KICK-1 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2125518Z   [must] requirement_quality REQ-KICK-1 criterion=length — title is 133 words; want 3..=25
2026-06-17T06:47:32.2126078Z   [must] requirement_quality REQ-MANIFEST-1 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2126431Z   [must] requirement_quality REQ-MANIFEST-3 criterion=length — title is 26 words; want 3..=25
2026-06-17T06:47:32.2126880Z   [must] requirement_quality REQ-MANIFEST-4 criterion=length — title is 31 words; want 3..=25
2026-06-17T06:47:32.2127232Z   [must] requirement_quality REQ-MANIFEST-5 criterion=length — title is 132 words; want 3..=25
2026-06-17T06:47:32.2127566Z   [must] requirement_quality REQ-MANIFEST-6 criterion=length — title is 84 words; want 3..=25
2026-06-17T06:47:32.2127900Z   [must] requirement_quality REQ-MANIFEST-7 criterion=length — title is 120 words; want 3..=25
2026-06-17T06:47:32.2128228Z   [must] requirement_quality REQ-MESH-1 criterion=length — title is 86 words; want 3..=25
2026-06-17T06:47:32.2128666Z   [must] requirement_quality REQ-MESH-2 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2129077Z   [must] requirement_quality REQ-MESH-2 criterion=length — title is 120 words; want 3..=25
2026-06-17T06:47:32.2129530Z   [must] requirement_quality REQ-MESH-3 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2129873Z   [must] requirement_quality REQ-MESH-3 criterion=length — title is 86 words; want 3..=25
2026-06-17T06:47:32.2130313Z   [must] requirement_quality REQ-MESH-4 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2130639Z   [must] requirement_quality REQ-MESH-4 criterion=length — title is 99 words; want 3..=25
2026-06-17T06:47:32.2131082Z   [must] requirement_quality REQ-MESH-5 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2131415Z   [must] requirement_quality REQ-MESH-5 criterion=length — title is 72 words; want 3..=25
2026-06-17T06:47:32.2131843Z   [must] requirement_quality REQ-MESH-6 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2132172Z   [must] requirement_quality REQ-MESH-6 criterion=length — title is 56 words; want 3..=25
2026-06-17T06:47:32.2132622Z   [must] requirement_quality REQ-MIGRATE-1 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2132955Z   [must] requirement_quality REQ-MSG-4 criterion=length — title is 31 words; want 3..=25
2026-06-17T06:47:32.2133279Z   [must] requirement_quality REQ-MSG-5 criterion=length — title is 38 words; want 3..=25
2026-06-17T06:47:32.2133606Z   [must] requirement_quality REQ-MSG-6 criterion=length — title is 65 words; want 3..=25
2026-06-17T06:47:32.2134085Z   [must] requirement_quality REQ-MSG-ENVELOPE criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2134439Z   [must] requirement_quality REQ-MSG-ENVELOPE criterion=length — title is 153 words; want 3..=25
2026-06-17T06:47:32.2134887Z   [must] requirement_quality REQ-PAIR-8 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2135225Z   [must] requirement_quality REQ-PAIR-8 criterion=length — title is 67 words; want 3..=25
2026-06-17T06:47:32.2135665Z   [must] requirement_quality REQ-PRES-1 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2135992Z   [must] requirement_quality REQ-PRES-1 criterion=length — title is 48 words; want 3..=25
2026-06-17T06:47:32.2136318Z   [must] requirement_quality REQ-RC-1 criterion=length — title is 94 words; want 3..=25
2026-06-17T06:47:32.2136763Z   [must] requirement_quality REQ-RCVIEW-1 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2137111Z   [must] requirement_quality REQ-RCVIEW-1 criterion=length — title is 197 words; want 3..=25
2026-06-17T06:47:32.2137563Z   [must] requirement_quality REQ-RUN-PICKER criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2138046Z   [must] requirement_quality REQ-RUN-PICKER criterion=length — title is 203 words; want 3..=25
2026-06-17T06:47:32.2138513Z   [must] requirement_quality REQ-RUN-SHORTCUT criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2139037Z   [must] requirement_quality REQ-RUN-SHORTCUT criterion=length — title is 226 words; want 3..=25
2026-06-17T06:47:32.2139394Z   [must] requirement_quality REQ-SEAM-SPAWN criterion=length — title is 2 word(s); want 3..=25
2026-06-17T06:47:32.2139718Z   [must] requirement_quality REQ-SHELL-1 criterion=length — title is 36 words; want 3..=25
2026-06-17T06:47:32.2140046Z   [must] requirement_quality REQ-SHELL-2 criterion=length — title is 49 words; want 3..=25
2026-06-17T06:47:32.2140380Z   [must] requirement_quality REQ-SHELL-3 criterion=length — title is 80 words; want 3..=25
2026-06-17T06:47:32.2140810Z   [must] requirement_quality REQ-SHELL-4 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2141151Z   [must] requirement_quality REQ-SHELL-4 criterion=length — title is 84 words; want 3..=25
2026-06-17T06:47:32.2141493Z   [must] requirement_quality REQ-SHELL-5 criterion=length — title is 49 words; want 3..=25
2026-06-17T06:47:32.2141817Z   [must] requirement_quality REQ-STORE-1 criterion=length — title is 34 words; want 3..=25
2026-06-17T06:47:32.2142147Z   [must] requirement_quality REQ-SUBNET-5 criterion=length — title is 52 words; want 3..=25
2026-06-17T06:47:32.2142590Z   [must] requirement_quality REQ-SUBNET-6 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2142923Z   [must] requirement_quality REQ-SUBNET-6 criterion=length — title is 38 words; want 3..=25
2026-06-17T06:47:32.2143367Z   [must] requirement_quality REQ-SUBNET-7 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2143701Z   [must] requirement_quality REQ-SUBNET-7 criterion=length — title is 75 words; want 3..=25
2026-06-17T06:47:32.2144043Z   [must] requirement_quality REQ-SUBNET-8 criterion=length — title is 53 words; want 3..=25
2026-06-17T06:47:32.2144485Z   [must] requirement_quality REQ-TERM-5 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2144813Z   [must] requirement_quality REQ-TERM-5 criterion=length — title is 71 words; want 3..=25
2026-06-17T06:47:32.2145232Z   [must] requirement_quality REQ-TERM-6 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2145547Z   [must] requirement_quality REQ-TERM-6 criterion=length — title is 53 words; want 3..=25
2026-06-17T06:47:32.2145977Z   [must] requirement_quality REQ-TERM-7 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2146306Z   [must] requirement_quality REQ-TERM-7 criterion=length — title is 55 words; want 3..=25
2026-06-17T06:47:32.2146756Z   [must] requirement_quality REQ-UPD-6 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2147080Z   [must] requirement_quality REQ-UPD-6 criterion=length — title is 32 words; want 3..=25
2026-06-17T06:47:32.2147517Z   [must] requirement_quality REQ-UPD-7 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2147846Z   [must] requirement_quality REQ-UPD-7 criterion=length — title is 88 words; want 3..=25
2026-06-17T06:47:32.2148277Z   [must] requirement_quality REQ-UPD-8 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-17T06:47:32.2148606Z   [must] requirement_quality REQ-UPD-8 criterion=length — title is 115 words; want 3..=25
2026-06-17T06:47:32.2148930Z   [must] requirement_quality REQ-UPD-9 criterion=length — title is 110 words; want 3..=25
2026-06-17T06:47:32.2149339Z   [must] requirement_quality REQ-WHOAMI-1 criterion=length — title is 76 words; want 3..=25
2026-06-17T06:47:32.2149372Z 
2026-06-17T06:47:32.2149558Z # Requirement quality review
2026-06-17T06:47:32.2149734Z 
2026-06-17T06:47:32.2150020Z You are reviewing 222 requirement(s) from `traceable-reqs.toml` against a quality
2026-06-17T06:47:32.2150387Z rubric. Deterministic checks (length, contains-and, tbd-todo, duplicate-titles,
2026-06-17T06:47:32.2150659Z trailing-etc) have already run and surfaced as `requirement_quality` findings on
2026-06-17T06:47:32.2150870Z this command's output. Your task is the rubric items below.
2026-06-17T06:47:32.2150907Z 
2026-06-17T06:47:32.2151050Z ## Rubric
2026-06-17T06:47:32.2151084Z 
2026-06-17T06:47:32.2151418Z - **singular** — describes one capability; no smuggled "and"/"or" across distinct actions.
2026-06-17T06:47:32.2151711Z - **verifiable** — states an observable behavior a test or reviewer could confirm.
2026-06-17T06:47:32.2151991Z - **atomic** — cannot be split into two requirements without losing meaning.
2026-06-17T06:47:32.2152207Z - **active-voice** — clear subject and active verb.
2026-06-17T06:47:32.2152239Z 
2026-06-17T06:47:32.2152549Z If a criterion is borderline or doesn't apply, abstain — only emit findings for
2026-06-17T06:47:32.2152707Z clear concerns.
2026-06-17T06:47:32.2152736Z 
2026-06-17T06:47:32.2152878Z ## Requirements
2026-06-17T06:47:32.2152916Z 
2026-06-17T06:47:32.2153065Z ### REQ-ARCH-1
2026-06-17T06:47:32.2153235Z - Title: Many small acyclically-layered crates
2026-06-17T06:47:32.2153384Z - Required stages: impl
2026-06-17T06:47:32.2153422Z 
2026-06-17T06:47:32.2153564Z ### REQ-ARCH-2
2026-06-17T06:47:32.2153784Z - Title: Public SDK surface is spt-proto, spt-runtime, spt-msg
2026-06-17T06:47:32.2153932Z - Required stages: impl
2026-06-17T06:47:32.2153971Z 
2026-06-17T06:47:32.2154108Z ### REQ-ARCH-3
2026-06-17T06:47:32.2154367Z - Title: Wire-protocol version independent of crate semver, N-1 compat window
2026-06-17T06:47:32.2154532Z - Required stages: impl, unit
2026-06-17T06:47:32.2154569Z 
2026-06-17T06:47:32.2154708Z ### REQ-ARCH-4
2026-06-17T06:47:32.2154930Z - Title: Copy-verbatim the commodity layer from the sister project
2026-06-17T06:47:32.2155093Z - Required stages: impl, unit
2026-06-17T06:47:32.2155125Z 
2026-06-17T06:47:32.2155283Z ### REQ-DAEMON-1
2026-06-17T06:47:32.2155511Z - Title: One per-machine spt-daemon owning all per-machine state
2026-06-17T06:47:32.2155674Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2155697Z 
2026-06-17T06:47:32.2155845Z ### REQ-DAEMON-2
2026-06-17T06:47:32.2156040Z - Title: Broker/brain split for seamless self-update
2026-06-17T06:47:32.2156213Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2156237Z 
2026-06-17T06:47:32.2156374Z ### REQ-DAEMON-3
2026-06-17T06:47:32.2156948Z - Title: Any api invocation auto-starts the daemon if absent
2026-06-17T06:47:32.2157112Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2157145Z 
2026-06-17T06:47:32.2157288Z ### REQ-DAEMON-4
2026-06-17T06:47:32.2157462Z - Title: Honor every KNOWN-HAZARDS invariant
2026-06-17T06:47:32.2157626Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2157663Z 
2026-06-17T06:47:32.2157802Z ### REQ-STORE-1
2026-06-17T06:47:32.2158828Z - 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-17T06:47:32.2159065Z - Required stages: impl, unit
2026-06-17T06:47:32.2159099Z 
2026-06-17T06:47:32.2159246Z ### REQ-MANIFEST-1
2026-06-17T06:47:32.2159523Z - Title: Per-adapter manifest with adapter_name and min_spt_core_version
2026-06-17T06:47:32.2159685Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2159720Z 
2026-06-17T06:47:32.2159861Z ### REQ-MANIFEST-2
2026-06-17T06:47:32.2160433Z - Title: Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors
2026-06-17T06:47:32.2160595Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2160628Z 
2026-06-17T06:47:32.2160886Z ### REQ-MANIFEST-3
2026-06-17T06:47:32.2161586Z - Title: Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)
2026-06-17T06:47:32.2161844Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2161877Z 
2026-06-17T06:47:32.2162022Z ### REQ-MANIFEST-4
2026-06-17T06:47:32.2162799Z - Title: Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace
2026-06-17T06:47:32.2169383Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2169435Z 
2026-06-17T06:47:32.2169616Z ### REQ-MANIFEST-5
2026-06-17T06:47:32.2174675Z - Title: File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = "rel/path" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].
2026-06-17T06:47:32.2174995Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2175042Z 
2026-06-17T06:47:32.2175300Z ### REQ-MANIFEST-6
2026-06-17T06:47:32.2179542Z - Title: Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled ("ccs is a profile; cross-adapter fallback may target <adapter>:<profile>"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.
2026-06-17T06:47:32.2179861Z - Required stages: doc, unit
2026-06-17T06:47:32.2179900Z 
2026-06-17T06:47:32.2180152Z ### REQ-MANIFEST-7
2026-06-17T06:47:32.2186094Z - Title: Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.
2026-06-17T06:47:32.2186425Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2186467Z 
2026-06-17T06:47:32.2186725Z ### REQ-SEAM-SPAWN
2026-06-17T06:47:32.2187002Z - Title: spawn-session seam
2026-06-17T06:47:32.2187473Z - Required stages: impl, unit
2026-06-17T06:47:32.2187515Z 
2026-06-17T06:47:32.2187764Z ### REQ-SEAM-POSTSPAWN
2026-06-17T06:47:32.2188270Z - Title: post-spawn / api bind seam with boot nonce
2026-06-17T06:47:32.2188552Z - Required stages: impl, unit
2026-06-17T06:47:32.2188595Z 
2026-06-17T06:47:32.2188850Z ### REQ-SEAM-PSYCHE
2026-06-17T06:47:32.2189597Z - Title: spawn-psyche seam (fresh + resume templates)
2026-06-17T06:47:32.2189845Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2189883Z 
2026-06-17T06:47:32.2190073Z ### REQ-SEAM-HISTORY
2026-06-17T06:47:32.2190388Z - Title: History subsystem (fetcher / locate-normalize / native store)
2026-06-17T06:47:32.2190598Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2190636Z 
2026-06-17T06:47:32.2190828Z ### REQ-SEAM-ACTIVITY
2026-06-17T06:47:32.2191133Z - Title: Activity/idle reported via api sentinels, not PTY quiescence
2026-06-17T06:47:32.2191322Z - Required stages: impl, unit
2026-06-17T06:47:32.2191361Z 
2026-06-17T06:47:32.2191561Z ### REQ-SEAM-INJECT
2026-06-17T06:47:32.2191847Z - Title: inject-input methods configurable per activity-state
2026-06-17T06:47:32.2192046Z - Required stages: impl, unit
2026-06-17T06:47:32.2192084Z 
2026-06-17T06:47:32.2192256Z ### REQ-SEAM-RESUME
2026-06-17T06:47:32.2192548Z - Title: resume-session seam (fresh-with-preload / continue-existing)
2026-06-17T06:47:32.2192739Z - Required stages: impl, unit
2026-06-17T06:47:32.2192781Z 
2026-06-17T06:47:32.2192967Z ### REQ-SEAM-CAPABILITY
2026-06-17T06:47:32.2193205Z - Title: Hostable endpoint-types capability declaration
2026-06-17T06:47:32.2193407Z - Required stages: impl, unit
2026-06-17T06:47:32.2193435Z 
2026-06-17T06:47:32.2193601Z ### REQ-SEAM-UPDATE
2026-06-17T06:47:32.2193872Z - Title: Adapter-update avenue (file-pull / delegated command)
2026-06-17T06:47:32.2194067Z - Required stages: impl, unit
2026-06-17T06:47:32.2194108Z 
2026-06-17T06:47:32.2194279Z ### REQ-API-1
2026-06-17T06:47:32.2194565Z - Title: api prefix and adapter_name on every machinery invocation
2026-06-17T06:47:32.2194766Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2194804Z 
2026-06-17T06:47:32.2194977Z ### REQ-API-2
2026-06-17T06:47:32.2195310Z - Title: The api subcommand surface (bind/listen/poll/state/worker/boundary/...)
2026-06-17T06:47:32.2195509Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2195547Z 
2026-06-17T06:47:32.2195719Z ### REQ-API-3
2026-06-17T06:47:32.2195959Z - Title: commune/signoff are file-drops, not commands
2026-06-17T06:47:32.2196148Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2196182Z 
2026-06-17T06:47:32.2196362Z ### REQ-API-4
2026-06-17T06:47:32.2198115Z - Title: api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)
2026-06-17T06:47:32.2198296Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2198320Z 
2026-06-17T06:47:32.2198463Z ### REQ-START-1
2026-06-17T06:47:32.2198734Z - Title: Adapters never resolve SPT_HOME; binary on PATH; api bridging only
2026-06-17T06:47:32.2198897Z - Required stages: impl, unit
2026-06-17T06:47:32.2198925Z 
2026-06-17T06:47:32.2199150Z ### REQ-START-2
2026-06-17T06:47:32.2199339Z - Title: Harness-hosted startup: api seed then listen
2026-06-17T06:47:32.2199510Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2199543Z 
2026-06-17T06:47:32.2199684Z ### REQ-START-3
2026-06-17T06:47:32.2199918Z - Title: spt-hosted startup: spawn-session then api bind (no file)
2026-06-17T06:47:32.2200086Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2200124Z 
2026-06-17T06:47:32.2200271Z ### REQ-START-4
2026-06-17T06:47:32.2200486Z - Title: Adapter-injected env aliases (SPT/OWL/LIVE)
2026-06-17T06:47:32.2200848Z - Required stages: impl, unit
2026-06-17T06:47:32.2200887Z 
2026-06-17T06:47:32.2201125Z ### REQ-EP-1
2026-06-17T06:47:32.2201315Z - Title: Day-one endpoint types; open type system
2026-06-17T06:47:32.2201478Z - Required stages: impl, unit
2026-06-17T06:47:32.2201510Z 
2026-06-17T06:47:32.2201660Z ### REQ-EP-2
2026-06-17T06:47:32.2201883Z - Title: Agent endpoints vs Shells distinction in the type model
2026-06-17T06:47:32.2202046Z - Required stages: impl, unit
2026-06-17T06:47:32.2202079Z 
2026-06-17T06:47:32.2202206Z ### REQ-EP-3
2026-06-17T06:47:32.2202455Z - Title: Messaging payloads carry typed operation commands + file blobs
2026-06-17T06:47:32.2202616Z - Required stages: impl, unit
2026-06-17T06:47:32.2202649Z 
2026-06-17T06:47:32.2202802Z ### REQ-EP-4
2026-06-17T06:47:32.2203003Z - Title: PresenceChannel broker endpoint (seam day-one)
2026-06-17T06:47:32.2203150Z - Required stages: impl, unit
2026-06-17T06:47:32.2203183Z 
2026-06-17T06:47:32.2203327Z ### REQ-EP-5
2026-06-17T06:47:32.2204104Z - 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-17T06:47:32.2204282Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2204314Z 
2026-06-17T06:47:32.2204456Z ### REQ-EP-6
2026-06-17T06:47:32.2206055Z - Title: Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6
2026-06-17T06:47:32.2206223Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2206255Z 
2026-06-17T06:47:32.2206399Z ### REQ-EP-7
2026-06-17T06:47:32.2208222Z - Title: Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)
2026-06-17T06:47:32.2208384Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2208418Z 
2026-06-17T06:47:32.2208565Z ### REQ-INST-1
2026-06-17T06:47:32.2208770Z - Title: endpoint ID vs instance split (adapter-agnostic ID)
2026-06-17T06:47:32.2208918Z - Required stages: 
2026-06-17T06:47:32.2209014Z 
2026-06-17T06:47:32.2209151Z ### REQ-INST-2
2026-06-17T06:47:32.2209319Z - Title: Per-node files, synced Psyche mind
2026-06-17T06:47:32.2209489Z - Required stages: impl, unit
2026-06-17T06:47:32.2209523Z 
2026-06-17T06:47:32.2209663Z ### REQ-INST-3
2026-06-17T06:47:32.2209880Z - Title: Dormant (warm) / suspended (cold) resting states
2026-06-17T06:47:32.2210046Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2210079Z 
2026-06-17T06:47:32.2210220Z ### REQ-INST-4
2026-06-17T06:47:32.2210460Z - Title: active to dormant/suspended fires a transition echo commune
2026-06-17T06:47:32.2210616Z - Required stages: impl, unit
2026-06-17T06:47:32.2210651Z 
2026-06-17T06:47:32.2210793Z ### REQ-INST-5
2026-06-17T06:47:32.2211022Z - Title: Two-tier context sync (live to all, project to same-project)
2026-06-17T06:47:32.2211183Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2211217Z 
2026-06-17T06:47:32.2211361Z ### REQ-INST-6
2026-06-17T06:47:32.2211595Z - Title: Deferred messages not delivered to dormant/suspended instances
2026-06-17T06:47:32.2211756Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2211794Z 
2026-06-17T06:47:32.2212038Z ### REQ-INST-7
2026-06-17T06:47:32.2212230Z - Title: Subnet registry + bare-id resolution policy
2026-06-17T06:47:32.2212476Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2212510Z 
2026-06-17T06:47:32.2212648Z ### REQ-INST-8
2026-06-17T06:47:32.2212852Z - Title: Remote-control mode distinct from local operation
2026-06-17T06:47:32.2213015Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2213048Z 
2026-06-17T06:47:32.2213191Z ### REQ-INST-9
2026-06-17T06:47:32.2213433Z - Title: Multi-subnet membership (same-user N subnets; cross-user seam)
2026-06-17T06:47:32.2213587Z - Required stages: impl, unit
2026-06-17T06:47:32.2213611Z 
2026-06-17T06:47:32.2213743Z ### REQ-INST-10
2026-06-17T06:47:32.2214016Z - Title: Qualified addressing [subnet:]id[@node] + ambiguity forces qualification
2026-06-17T06:47:32.2214178Z - Required stages: impl, unit
2026-06-17T06:47:32.2214212Z 
2026-06-17T06:47:32.2214354Z ### REQ-INST-11
2026-06-17T06:47:32.2214634Z - Title: spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)
2026-06-17T06:47:32.2214784Z - Required stages: impl, unit
2026-06-17T06:47:32.2214822Z 
2026-06-17T06:47:32.2214963Z ### REQ-INST-12
2026-06-17T06:47:32.2215328Z - Title: Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync
2026-06-17T06:47:32.2215486Z - Required stages: impl, unit
2026-06-17T06:47:32.2215519Z 
2026-06-17T06:47:32.2215657Z ### REQ-INST-13
2026-06-17T06:47:32.2215891Z - Title: Subnet-exclusive sync + per-endpoint subnet-membership list
2026-06-17T06:47:32.2216043Z - Required stages: impl, unit
2026-06-17T06:47:32.2216077Z 
2026-06-17T06:47:32.2216220Z ### REQ-INST-14
2026-06-17T06:47:32.2216668Z - Title: Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated
2026-06-17T06:47:32.2216834Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2216864Z 
2026-06-17T06:47:32.2217007Z ### REQ-INST-15
2026-06-17T06:47:32.2217835Z - 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-17T06:47:32.2218002Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2218040Z 
2026-06-17T06:47:32.2218181Z ### REQ-REACH-1
2026-06-17T06:47:32.2218386Z - Title: Off-node remote-drive detection + file transfer
2026-06-17T06:47:32.2218553Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2218586Z 
2026-06-17T06:47:32.2218725Z ### REQ-REACH-2
2026-06-17T06:47:32.2218935Z - Title: Remote command execution (deferred, consent-gated)
2026-06-17T06:47:32.2219158Z - Required stages: 
2026-06-17T06:47:32.2219187Z 
2026-06-17T06:47:32.2219335Z ### REQ-MSG-1
2026-06-17T06:47:32.2219884Z - 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-17T06:47:32.2220059Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2220097Z 
2026-06-17T06:47:32.2220247Z ### REQ-MSG-2
2026-06-17T06:47:32.2220588Z - Title: spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes
2026-06-17T06:47:32.2220767Z - Required stages: impl, unit
2026-06-17T06:47:32.2220799Z 
2026-06-17T06:47:32.2220949Z ### REQ-MSG-3
2026-06-17T06:47:32.2221415Z - Title: Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown
2026-06-17T06:47:32.2221587Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2221630Z 
2026-06-17T06:47:32.2221767Z ### REQ-MSG-4
2026-06-17T06:47:32.2222809Z - 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-17T06:47:32.2222979Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2223109Z 
2026-06-17T06:47:32.2223269Z ### REQ-MSG-ENVELOPE
2026-06-17T06:47:32.2227242Z - Title: The <EVENT type="msg" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.
2026-06-17T06:47:32.2227434Z - Required stages: doc, impl, unit, int
2026-06-17T06:47:32.2227457Z 
2026-06-17T06:47:32.2227601Z ### REQ-MSG-5
2026-06-17T06:47:32.2228433Z - Title: user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)
2026-06-17T06:47:32.2228600Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2228633Z 
2026-06-17T06:47:32.2228769Z ### REQ-MSG-6
2026-06-17T06:47:32.2230633Z - Title: cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)
2026-06-17T06:47:32.2230821Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2230859Z 
2026-06-17T06:47:32.2231000Z ### REQ-NODE-IDENTITY
2026-06-17T06:47:32.2231293Z - Title: Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex
2026-06-17T06:47:32.2231461Z - Required stages: impl, unit
2026-06-17T06:47:32.2231489Z 
2026-06-17T06:47:32.2231627Z ### REQ-NET-1
2026-06-17T06:47:32.2231866Z - Title: WAN messaging first-class, behind default-on net feature flag
2026-06-17T06:47:32.2232022Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2232066Z 
2026-06-17T06:47:32.2232209Z ### REQ-NET-2
2026-06-17T06:47:32.2232443Z - Title: n0 relay default + self-host knob + plain-language disclosure
2026-06-17T06:47:32.2232595Z - Required stages: impl
2026-06-17T06:47:32.2232629Z 
2026-06-17T06:47:32.2232772Z ### REQ-NET-3
2026-06-17T06:47:32.2232986Z - Title: Cross-node Psyche sync over P2P replaces gh-repo-sync
2026-06-17T06:47:32.2233148Z - Required stages: impl, unit
2026-06-17T06:47:32.2233186Z 
2026-06-17T06:47:32.2233335Z ### REQ-PAIR-1
2026-06-17T06:47:32.2233496Z - Title: TOTP-seeded SPAKE2 pairing
2026-06-17T06:47:32.2233664Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2233698Z 
2026-06-17T06:47:32.2233839Z ### REQ-PAIR-2
2026-06-17T06:47:32.2234030Z - Title: Local trust store with TOFU + warn-on-change
2026-06-17T06:47:32.2234177Z - Required stages: 
2026-06-17T06:47:32.2234210Z 
2026-06-17T06:47:32.2234349Z ### REQ-PAIR-3
2026-06-17T06:47:32.2234674Z - Title: Fetch current pairing code from any paired node
2026-06-17T06:47:32.2234950Z - Required stages: impl, unit
2026-06-17T06:47:32.2234989Z 
2026-06-17T06:47:32.2235131Z ### REQ-PAIR-4
2026-06-17T06:47:32.2235294Z - Title: Subnet naming on first pairing
2026-06-17T06:47:32.2235455Z - Required stages: impl, unit
2026-06-17T06:47:32.2235489Z 
2026-06-17T06:47:32.2235632Z ### REQ-PAIR-5
2026-06-17T06:47:32.2236014Z - Title: Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing
2026-06-17T06:47:32.2236183Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2236212Z 
2026-06-17T06:47:32.2236345Z ### REQ-PAIR-6
2026-06-17T06:47:32.2236664Z - Title: Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)
2026-06-17T06:47:32.2236815Z - Required stages: impl, unit
2026-06-17T06:47:32.2236848Z 
2026-06-17T06:47:32.2236978Z ### REQ-PAIR-7
2026-06-17T06:47:32.2237198Z - Title: Subnet icon (inline image metadata, GUI-only consumer)
2026-06-17T06:47:32.2237345Z - Required stages: 
2026-06-17T06:47:32.2237378Z 
2026-06-17T06:47:32.2237531Z ### REQ-SUBNET-1
2026-06-17T06:47:32.2237927Z - Title: spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted
2026-06-17T06:47:32.2238083Z - Required stages: impl, unit
2026-06-17T06:47:32.2238117Z 
2026-06-17T06:47:32.2238265Z ### REQ-SUBNET-2
2026-06-17T06:47:32.2238552Z - Title: Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder
2026-06-17T06:47:32.2238723Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2238752Z 
2026-06-17T06:47:32.2238895Z ### REQ-SUBNET-3
2026-06-17T06:47:32.2239301Z - Title: Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)
2026-06-17T06:47:32.2239463Z - Required stages: impl, unit
2026-06-17T06:47:32.2239498Z 
2026-06-17T06:47:32.2239630Z ### REQ-SUBNET-4
2026-06-17T06:47:32.2239992Z - Title: Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)
2026-06-17T06:47:32.2240165Z - Required stages: impl, unit
2026-06-17T06:47:32.2240198Z 
2026-06-17T06:47:32.2240341Z ### REQ-DOCS-6
2026-06-17T06:47:32.2240747Z - Title: spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)
2026-06-17T06:47:32.2240908Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2240946Z 
2026-06-17T06:47:32.2241090Z ### REQ-SEC-1
2026-06-17T06:47:32.2241560Z - Title: Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants
2026-06-17T06:47:32.2241718Z - Required stages: impl, unit
2026-06-17T06:47:32.2241751Z 
2026-06-17T06:47:32.2241891Z ### REQ-NOTIF-1
2026-06-17T06:47:32.2242316Z - Title: Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts
2026-06-17T06:47:32.2242492Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2242525Z 
2026-06-17T06:47:32.2242670Z ### REQ-NOTIF-2
2026-06-17T06:47:32.2243008Z - Title: spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)
2026-06-17T06:47:32.2243184Z - Required stages: doc, impl, unit, int
2026-06-17T06:47:32.2243217Z 
2026-06-17T06:47:32.2243347Z ### REQ-UPD-1
2026-06-17T06:47:32.2243523Z - Title: Peer-propagated update over P2P
2026-06-17T06:47:32.2243694Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2243727Z 
2026-06-17T06:47:32.2243861Z ### REQ-UPD-2
2026-06-17T06:47:32.2244065Z - Title: All binaries signature-verified before handoff
2026-06-17T06:47:32.2244224Z - Required stages: impl, unit
2026-06-17T06:47:32.2244258Z 
2026-06-17T06:47:32.2244399Z ### REQ-UPD-3
2026-06-17T06:47:32.2244624Z - Title: No endpoint process terminates/suspends during self-update
2026-06-17T06:47:32.2244785Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2244813Z 
2026-06-17T06:47:32.2244957Z ### REQ-UPD-4
2026-06-17T06:47:32.2245281Z - Title: Update gated on user confirmation by default; opt-in full-auto
2026-06-17T06:47:32.2245540Z - Required stages: impl, unit
2026-06-17T06:47:32.2245572Z 
2026-06-17T06:47:32.2245710Z ### REQ-UPD-5
2026-06-17T06:47:32.2245906Z - Title: spt-core ripple-updates registered adapters
2026-06-17T06:47:32.2246068Z - Required stages: impl, unit
2026-06-17T06:47:32.2246091Z 
2026-06-17T06:47:32.2246235Z ### REQ-UPD-6
2026-06-17T06:47:32.2247181Z - 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-17T06:47:32.2247351Z - Required stages: doc, impl, unit, int
2026-06-17T06:47:32.2247390Z 
2026-06-17T06:47:32.2247520Z ### REQ-UPD-7
2026-06-17T06:47:32.2249809Z - 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-17T06:47:32.2249990Z - Required stages: impl, unit
2026-06-17T06:47:32.2250023Z 
2026-06-17T06:47:32.2250162Z ### REQ-UPD-8
2026-06-17T06:47:32.2252872Z - 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-17T06:47:32.2253048Z - Required stages: impl, unit
2026-06-17T06:47:32.2253081Z 
2026-06-17T06:47:32.2253220Z ### REQ-UPD-9
2026-06-17T06:47:32.2255969Z - Title: `gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = "gh_release", repo = "user/repo"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).
2026-06-17T06:47:32.2256156Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2256185Z 
2026-06-17T06:47:32.2256336Z ### REQ-TERM-1
2026-06-17T06:47:32.2256575Z - Title: Process-supervisor terminal wrapper hosting broker PTYs
2026-06-17T06:47:32.2256744Z - Required stages: impl, unit
2026-06-17T06:47:32.2256776Z 
2026-06-17T06:47:32.2256918Z ### REQ-TERM-2
2026-06-17T06:47:32.2257261Z - Title: session-surface abstraction; send-keys + send-line injection
2026-06-17T06:47:32.2257423Z - Required stages: impl, unit
2026-06-17T06:47:32.2257550Z 
2026-06-17T06:47:32.2257693Z ### REQ-TERM-3
2026-06-17T06:47:32.2257878Z - Title: Byte-stream remote terminal streaming for v1
2026-06-17T06:47:32.2258027Z - Required stages: impl, unit
2026-06-17T06:47:32.2258065Z 
2026-06-17T06:47:32.2258207Z ### REQ-TERM-4
2026-06-17T06:47:32.2258766Z - Title: Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push
2026-06-17T06:47:32.2259009Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2259047Z 
2026-06-17T06:47:32.2259194Z ### REQ-TERM-5
2026-06-17T06:47:32.2260899Z - Title: Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.
2026-06-17T06:47:32.2261079Z - Required stages: doc, impl, unit, int
2026-06-17T06:47:32.2261112Z 
2026-06-17T06:47:32.2261257Z ### REQ-TERM-6
2026-06-17T06:47:32.2262497Z - Title: Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.
2026-06-17T06:47:32.2262661Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2262690Z 
2026-06-17T06:47:32.2262842Z ### REQ-TERM-7
2026-06-17T06:47:32.2264152Z - Title: Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.
2026-06-17T06:47:32.2264318Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2264347Z 
2026-06-17T06:47:32.2264491Z ### REQ-FRONT-1
2026-06-17T06:47:32.2264715Z - Title: Day-one launcher/manager frontend (list/launch/attach/init)
2026-06-17T06:47:32.2264861Z - Required stages: 
2026-06-17T06:47:32.2264896Z 
2026-06-17T06:47:32.2265044Z ### REQ-HOST-RUN-1
2026-06-17T06:47:32.2267594Z - Title: spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind="harness" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.
2026-06-17T06:47:32.2267783Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2267816Z 
2026-06-17T06:47:32.2267964Z ### REQ-RC-1
2026-06-17T06:47:32.2270283Z - Title: `spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).
2026-06-17T06:47:32.2270570Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2270608Z 
2026-06-17T06:47:32.2270760Z ### REQ-HOST-RUN-2
2026-06-17T06:47:32.2272684Z - Title: Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).
2026-06-17T06:47:32.2272865Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2272898Z 
2026-06-17T06:47:32.2273048Z ### REQ-RUN-PICKER
2026-06-17T06:47:32.2278096Z - Title: Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind="harness" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue "attached" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.
2026-06-17T06:47:32.2278286Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2278320Z 
2026-06-17T06:47:32.2278472Z ### REQ-RUN-SHORTCUT
2026-06-17T06:47:32.2283659Z - Title: `<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).
2026-06-17T06:47:32.2283939Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2283977Z 
2026-06-17T06:47:32.2284127Z ### REQ-ELEVATE-1
2026-06-17T06:47:32.2287784Z - Title: Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.
2026-06-17T06:47:32.2287974Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2288012Z 
2026-06-17T06:47:32.2288175Z ### REQ-WHOAMI-1
2026-06-17T06:47:32.2290018Z - Title: `spt whoami` is a thin ALIAS for `spt endpoint list` (full output: the SELF pin + the subnet roster) — the standalone bare-id command is dropped (the `id=$(spt whoami)` capture was never a real pattern: env vars don't persist between agent tool calls). The one new render: the `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state. whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9).
2026-06-17T06:47:32.2290183Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2290221Z 
2026-06-17T06:47:32.2290366Z ### REQ-RCVIEW-1
2026-06-17T06:47:32.2295236Z - Title: Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).
2026-06-17T06:47:32.2295518Z - Required stages: doc, impl, unit, int
2026-06-17T06:47:32.2295546Z 
2026-06-17T06:47:32.2295693Z ### REQ-KICK-1
2026-06-17T06:47:32.2298387Z - Title: Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).
2026-06-17T06:47:32.2298572Z - Required stages: doc, impl, unit, int
2026-06-17T06:47:32.2298606Z 
2026-06-17T06:47:32.2298768Z ### REQ-HAZARD-VIEWER-ISOLATION
2026-06-17T06:47:32.2301193Z - Title: A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.
2026-06-17T06:47:32.2301364Z - Required stages: unit, int
2026-06-17T06:47:32.2301397Z 
2026-06-17T06:47:32.2301541Z ### REQ-INSTALL-1
2026-06-17T06:47:32.2301793Z - Title: Two install paths; signed one-line script; OS-service registration
2026-06-17T06:47:32.2301950Z - Required stages: doc, impl, int
2026-06-17T06:47:32.2301983Z 
2026-06-17T06:47:32.2302132Z ### REQ-INSTALL-2
2026-06-17T06:47:32.2302316Z - Title: Marketplace-repackaging-friendly install
2026-06-17T06:47:32.2302473Z - Required stages: doc
2026-06-17T06:47:32.2302507Z 
2026-06-17T06:47:32.2302652Z ### REQ-INSTALL-3
2026-06-17T06:47:32.2302853Z - Title: Idempotent + interactive-optional first run
2026-06-17T06:47:32.2303029Z - Required stages: impl, int
2026-06-17T06:47:32.2303062Z 
2026-06-17T06:47:32.2303196Z ### REQ-INSTALL-4
2026-06-17T06:47:32.2303916Z - 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-17T06:47:32.2304084Z - Required stages: impl, unit
2026-06-17T06:47:32.2304118Z 
2026-06-17T06:47:32.2304268Z ### REQ-MIGRATE-1
2026-06-17T06:47:32.2304502Z - Title: Auto-detect and migrate a legacy claude_skill_owl install
2026-06-17T06:47:32.2304636Z - Required stages: 
2026-06-17T06:47:32.2304660Z 
2026-06-17T06:47:32.2304803Z ### REQ-INFRA-1
2026-06-17T06:47:32.2305035Z - Title: GitHub issue tracking for v1; tangled.org as migration target
2026-06-17T06:47:32.2305190Z - Required stages: 
2026-06-17T06:47:32.2305224Z 
2026-06-17T06:47:32.2305367Z ### REQ-INSTALL-5
2026-06-17T06:47:32.2305929Z - 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-17T06:47:32.2306206Z - Required stages: impl, int
2026-06-17T06:47:32.2306239Z 
2026-06-17T06:47:32.2306473Z ### REQ-INSTALL-9
2026-06-17T06:47:32.2307816Z - Title: Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)
2026-06-17T06:47:32.2307989Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2308023Z 
2026-06-17T06:47:32.2308159Z ### REQ-INSTALL-10
2026-06-17T06:47:32.2309643Z - Title: Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)
2026-06-17T06:47:32.2309820Z - Required stages: impl, unit
2026-06-17T06:47:32.2309854Z 
2026-06-17T06:47:32.2310000Z ### REQ-INSTALL-11
2026-06-17T06:47:32.2311929Z - Title: Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)
2026-06-17T06:47:32.2312091Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2312125Z 
2026-06-17T06:47:32.2312272Z ### REQ-REL-1
2026-06-17T06:47:32.2312726Z - Title: spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)
2026-06-17T06:47:32.2312886Z - Required stages: doc, impl
2026-06-17T06:47:32.2312919Z 
2026-06-17T06:47:32.2313057Z ### REQ-REL-2
2026-06-17T06:47:32.2313622Z - 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-17T06:47:32.2313775Z - Required stages: impl, int
2026-06-17T06:47:32.2313810Z 
2026-06-17T06:47:32.2313956Z ### REQ-REL-3
2026-06-17T06:47:32.2314477Z - 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-17T06:47:32.2314634Z - Required stages: impl, unit
2026-06-17T06:47:32.2314668Z 
2026-06-17T06:47:32.2314815Z ### REQ-DOCS-1
2026-06-17T06:47:32.2315072Z - Title: Dual-audience docs (human + AI dev-agent), markdown once / two depths
2026-06-17T06:47:32.2315235Z - Required stages: doc, impl
2026-06-17T06:47:32.2315269Z 
2026-06-17T06:47:32.2315415Z ### REQ-DOCS-2
2026-06-17T06:47:32.2315629Z - Title: Sub-10-minute runnable killer quickstart per audience
2026-06-17T06:47:32.2315794Z - Required stages: doc, int
2026-06-17T06:47:32.2315827Z 
2026-06-17T06:47:32.2315966Z ### REQ-DOCS-3
2026-06-17T06:47:32.2316204Z - Title: Diátaxis structure; one canonical way to do X
2026-06-17T06:47:32.2316366Z - Required stages: doc
2026-06-17T06:47:32.2316399Z 
2026-06-17T06:47:32.2316538Z ### REQ-DOCS-4
2026-06-17T06:47:32.2316790Z - Title: Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)
2026-06-17T06:47:32.2316957Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2316990Z 
2026-06-17T06:47:32.2317133Z ### REQ-DOCS-5
2026-06-17T06:47:32.2317391Z - Title: Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked
2026-06-17T06:47:32.2317653Z - Required stages: impl, int
2026-06-17T06:47:32.2317687Z 
2026-06-17T06:47:32.2317953Z ### REQ-HAZARD-GRACE-BEFORE-SIGNOFF
2026-06-17T06:47:32.2318189Z - Title: Grace-period wait completes before composing INIT_SIGNOFF (1.1)
2026-06-17T06:47:32.2318344Z - Required stages: impl, unit
2026-06-17T06:47:32.2318377Z 
2026-06-17T06:47:32.2318549Z ### REQ-HAZARD-INFO-JSON-TORN-READ
2026-06-17T06:47:32.2318758Z - Title: State-file reads tolerate concurrent writes (1.2)
2026-06-17T06:47:32.2318912Z - Required stages: impl, unit
2026-06-17T06:47:32.2319011Z 
2026-06-17T06:47:32.2319174Z ### REQ-HAZARD-STALE-INDEX-LOCK
2026-06-17T06:47:32.2319368Z - Title: Sweep stale lockfiles on daemon boot (1.3)
2026-06-17T06:47:32.2319526Z - Required stages: impl, unit
2026-06-17T06:47:32.2319564Z 
2026-06-17T06:47:32.2319712Z ### REQ-HAZARD-DEFERRED-DRAIN
2026-06-17T06:47:32.2319955Z - Title: Deferred spool rows excluded from the event-stream drain (1.4)
2026-06-17T06:47:32.2320104Z - Required stages: impl, unit
2026-06-17T06:47:32.2320142Z 
2026-06-17T06:47:32.2320294Z ### REQ-HAZARD-WORKER-PATH
2026-06-17T06:47:32.2320541Z - Title: Single source of truth for Worker/Psyche perch location (1.5)
2026-06-17T06:47:32.2320693Z - Required stages: impl, unit
2026-06-17T06:47:32.2320717Z 
2026-06-17T06:47:32.2320887Z ### REQ-HAZARD-PARENT-PID-PREFER
2026-06-17T06:47:32.2321126Z - Title: Prefer stable parent PID / broker handle over ephemeral PID (2.1)
2026-06-17T06:47:32.2321272Z - Required stages: 
2026-06-17T06:47:32.2321311Z 
2026-06-17T06:47:32.2321459Z ### REQ-HAZARD-STDIN-SESSION-ID
2026-06-17T06:47:32.2321649Z - Title: Stdin session_id precedence over env (2.2)
2026-06-17T06:47:32.2321793Z - Required stages: 
2026-06-17T06:47:32.2321826Z 
2026-06-17T06:47:32.2321989Z ### REQ-HAZARD-HANDOFF-ARGV-COMPAT
2026-06-17T06:47:32.2322207Z - Title: Broker/brain IPC + handoff argv version-tolerant (2.3)
2026-06-17T06:47:32.2322370Z - Required stages: impl, unit
2026-06-17T06:47:32.2322403Z 
2026-06-17T06:47:32.2322579Z ### REQ-HAZARD-GEN-START-NOW
2026-06-17T06:47:32.2322793Z - Title: gen_start = now() on cold-start and handoff (2.4)
2026-06-17T06:47:32.2322943Z - Required stages: impl, int
2026-06-17T06:47:32.2322971Z 
2026-06-17T06:47:32.2323137Z ### REQ-HAZARD-EPHEMERAL-CLEANUP
2026-06-17T06:47:32.2323357Z - Title: Ephemeral perch cleanup on every ring exit path (3.1)
2026-06-17T06:47:32.2323517Z - Required stages: impl, unit
2026-06-17T06:47:32.2323550Z 
2026-06-17T06:47:32.2323726Z ### REQ-HAZARD-STALE-SIGNOFF-SENTINEL
2026-06-17T06:47:32.2323944Z - Title: Stale signoff sentinel does not kill a fresh start (3.2)
2026-06-17T06:47:32.2324111Z - Required stages: impl, unit
2026-06-17T06:47:32.2324139Z 
2026-06-17T06:47:32.2324298Z ### REQ-HAZARD-ECHO-BEFORE-SIGNOFF
2026-06-17T06:47:32.2324541Z - Title: Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)
2026-06-17T06:47:32.2324699Z - Required stages: impl, unit
2026-06-17T06:47:32.2324727Z 
2026-06-17T06:47:32.2324889Z ### REQ-HAZARD-ENVELOPE-DECODE-ORDER
2026-06-17T06:47:32.2325107Z - Title: Envelope decode order, ampersand decoded last (4.1)
2026-06-17T06:47:32.2325271Z - Required stages: impl, unit
2026-06-17T06:47:32.2325299Z 
2026-06-17T06:47:32.2325470Z ### REQ-HAZARD-ENVELOPE-CR-LINESAFE
2026-06-17T06:47:32.2327326Z - 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-17T06:47:32.2327485Z - Required stages: impl, unit
2026-06-17T06:47:32.2327517Z 
2026-06-17T06:47:32.2327684Z ### REQ-HAZARD-ENVELOPE-PARSER-SAFE
2026-06-17T06:47:32.2328047Z - Title: Two-slice envelope parser is panic-free and tolerant (4.2)
2026-06-17T06:47:32.2328299Z - Required stages: impl, unit
2026-06-17T06:47:32.2328333Z 
2026-06-17T06:47:32.2328504Z ### REQ-HAZARD-EVENTPART-REASSEMBLY
2026-06-17T06:47:32.2328773Z - Title: EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently
2026-06-17T06:47:32.2328928Z - Required stages: impl, unit
2026-06-17T06:47:32.2329037Z 
2026-06-17T06:47:32.2329199Z ### REQ-HAZARD-ID-CHARSET
2026-06-17T06:47:32.2329505Z - Title: Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)
2026-06-17T06:47:32.2329672Z - Required stages: impl, unit
2026-06-17T06:47:32.2329706Z 
2026-06-17T06:47:32.2329871Z ### REQ-HAZARD-REGISTRY-STALE-CLEAN
2026-06-17T06:47:32.2330124Z - Title: Stale registry entries degrade to fallback, never hard-fail (4.3)
2026-06-17T06:47:32.2330272Z - Required stages: impl, unit
2026-06-17T06:47:32.2330306Z 
2026-06-17T06:47:32.2330468Z ### REQ-HAZARD-REGISTRY-CONCURRENT
2026-06-17T06:47:32.2330787Z - Title: Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)
2026-06-17T06:47:32.2330950Z - Required stages: impl, unit
2026-06-17T06:47:32.2330984Z 
2026-06-17T06:47:32.2331153Z ### REQ-HAZARD-REGISTRY-DIR-CREATE
2026-06-17T06:47:32.2331599Z - Title: SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)
2026-06-17T06:47:32.2331766Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2331799Z 
2026-06-17T06:47:32.2331962Z ### REQ-HAZARD-REGISTRY-EPOCH-LEASE
2026-06-17T06:47:32.2332467Z - 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-17T06:47:32.2332629Z - Required stages: impl, unit
2026-06-17T06:47:32.2332663Z 
2026-06-17T06:47:32.2332834Z ### REQ-HAZARD-DEFERRED-SURVIVE-DRAIN
2026-06-17T06:47:32.2333011Z - Title: Deferred rows survive poll drain (4.4)
2026-06-17T06:47:32.2333178Z - Required stages: impl, unit
2026-06-17T06:47:32.2333212Z 
2026-06-17T06:47:32.2333368Z ### REQ-HAZARD-INBOX-NO-DOUBLE
2026-06-17T06:47:32.2333574Z - Title: No double-delivery via legacy inbox (4.5)
2026-06-17T06:47:32.2333736Z - Required stages: impl, unit
2026-06-17T06:47:32.2333769Z 
2026-06-17T06:47:32.2333931Z ### REQ-HAZARD-WINDOWS-PID-RECYCLE
2026-06-17T06:47:32.2334173Z - Title: Windows PID-recycling false positives guarded (5.1)
2026-06-17T06:47:32.2334319Z - Required stages: impl, unit
2026-06-17T06:47:32.2334352Z 
2026-06-17T06:47:32.2334505Z ### REQ-HAZARD-EBUSY-RENAME
2026-06-17T06:47:32.2334733Z - Title: tmp-write + atomic-rename + retry on Windows EBUSY (5.2)
2026-06-17T06:47:32.2334882Z - Required stages: impl, unit
2026-06-17T06:47:32.2334915Z 
2026-06-17T06:47:32.2335072Z ### REQ-HAZARD-SUBPROCESS-TIMEOUT
2026-06-17T06:47:32.2335273Z - Title: Every harness/git subprocess has a timeout (5.3)
2026-06-17T06:47:32.2335430Z - Required stages: impl, unit
2026-06-17T06:47:32.2335463Z 
2026-06-17T06:47:32.2335616Z ### REQ-HAZARD-UNC-PATH-STRIP
2026-06-17T06:47:32.2335826Z - Title: Strip Windows UNC prefix on serialized paths (5.4)
2026-06-17T06:47:32.2335992Z - Required stages: impl, unit
2026-06-17T06:47:32.2336026Z 
2026-06-17T06:47:32.2336197Z ### REQ-HAZARD-SINGLE-PATH-SOURCE
2026-06-17T06:47:32.2336442Z - Title: Single path/registry source of truth; no layout ambiguity (6.1)
2026-06-17T06:47:32.2336601Z - Required stages: impl, unit
2026-06-17T06:47:32.2336639Z 
2026-06-17T06:47:32.2336797Z ### REQ-HAZARD-SOFT-CLEANUP
2026-06-17T06:47:32.2337047Z - Title: Soft-cleanup preserves state, removes only the ready marker (6.2)
2026-06-17T06:47:32.2337200Z - Required stages: impl, unit
2026-06-17T06:47:32.2337233Z 
2026-06-17T06:47:32.2337401Z ### REQ-HAZARD-CASCADE-WIPE-GUARD
2026-06-17T06:47:32.2337624Z - Title: No hard-delete of a parent hosting non-empty children (6.3)
2026-06-17T06:47:32.2337786Z - Required stages: impl, unit
2026-06-17T06:47:32.2337820Z 
2026-06-17T06:47:32.2338096Z ### REQ-HAZARD-DROP-FILE-SINGLE-WRITER
2026-06-17T06:47:32.2338307Z - Title: Drop files are daemon-owned single-writer (6.4)
2026-06-17T06:47:32.2338578Z - Required stages: impl, unit
2026-06-17T06:47:32.2338612Z 
2026-06-17T06:47:32.2338782Z ### REQ-HAZARD-DIRECT-WRITE-PRECEDENCE
2026-06-17T06:47:32.2339126Z - Title: Direct-write precedence marker (with node id) guards stale overwrite (6.5)
2026-06-17T06:47:32.2339290Z - Required stages: impl, unit
2026-06-17T06:47:32.2339323Z 
2026-06-17T06:47:32.2339493Z ### REQ-HAZARD-CONFLICT-BOTH-PRESERVED
2026-06-17T06:47:32.2340150Z - 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-17T06:47:32.2340299Z - Required stages: impl, unit
2026-06-17T06:47:32.2340337Z 
2026-06-17T06:47:32.2340503Z ### REQ-HAZARD-DETACHED-PIPE-INHERIT
2026-06-17T06:47:32.2341732Z - 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-17T06:47:32.2341908Z - Required stages: impl, unit
2026-06-17T06:47:32.2341941Z 
2026-06-17T06:47:32.2342097Z ### REQ-HAZARD-CONPTY-DSR
2026-06-17T06:47:32.2342379Z - Title: ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)
2026-06-17T06:47:32.2342537Z - Required stages: impl, unit
2026-06-17T06:47:32.2342561Z 
2026-06-17T06:47:32.2342740Z ### REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE
2026-06-17T06:47:32.2344757Z - Title: Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).
2026-06-17T06:47:32.2344935Z - Required stages: doc, impl, unit, int
2026-06-17T06:47:32.2344969Z 
2026-06-17T06:47:32.2345137Z ### REQ-HAZARD-CHILD-CONSOLE-FLASH
2026-06-17T06:47:32.2345642Z - 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-17T06:47:32.2345794Z - Required stages: impl, unit
2026-06-17T06:47:32.2345828Z 
2026-06-17T06:47:32.2345995Z ### REQ-HAZARD-INSTANT-UNDERFLOW
2026-06-17T06:47:32.2346640Z - 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-17T06:47:32.2346819Z - Required stages: impl, unit
2026-06-17T06:47:32.2346853Z 
2026-06-17T06:47:32.2347020Z ### REQ-HAZARD-PUMP-IPC-DEADLINE
2026-06-17T06:47:32.2347927Z - Title: The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump
2026-06-17T06:47:32.2348099Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2348131Z 
2026-06-17T06:47:32.2348299Z ### REQ-HAZARD-BROKER-QUIC-DEADLINE
2026-06-17T06:47:32.2351717Z - Title: The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.
2026-06-17T06:47:32.2351988Z - Required stages: doc, impl, unit, int
2026-06-17T06:47:32.2352022Z 
2026-06-17T06:47:32.2352193Z ### REQ-HAZARD-SUDO-SECURE-PATH
2026-06-17T06:47:32.2353154Z - 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-17T06:47:32.2353330Z - Required stages: impl, unit
2026-06-17T06:47:32.2353364Z 
2026-06-17T06:47:32.2353525Z ### REQ-HAZARD-SELF-ELEVATE
2026-06-17T06:47:32.2355853Z - Title: Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.
2026-06-17T06:47:32.2356026Z - Required stages: unit
2026-06-17T06:47:32.2356054Z 
2026-06-17T06:47:32.2356221Z ### REQ-HAZARD-LOCAL-API-AUTH
2026-06-17T06:47:32.2356492Z - Title: Every local `api` mutation authenticated to an endpoint/session (codex #13)
2026-06-17T06:47:32.2356664Z - Required stages: impl, unit
2026-06-17T06:47:32.2356698Z 
2026-06-17T06:47:32.2356870Z ### REQ-HAZARD-RESTART-IDEMPOTENT
2026-06-17T06:47:32.2357195Z - Title: Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)
2026-06-17T06:47:32.2357365Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2357399Z 
2026-06-17T06:47:32.2357552Z ### REQ-HAZARD-UPDATE-ROLLBACK
2026-06-17T06:47:32.2357870Z - Title: Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)
2026-06-17T06:47:32.2358029Z - Required stages: impl, unit
2026-06-17T06:47:32.2358062Z 
2026-06-17T06:47:32.2358235Z ### REQ-HAZARD-DAEMON-HOSTED-LIVENESS
2026-06-17T06:47:32.2358730Z - 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-17T06:47:32.2358893Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2358926Z 
2026-06-17T06:47:32.2359160Z ### REQ-HAZARD-BROKER-PROCESS-ISOLATION
2026-06-17T06:47:32.2362082Z - 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-17T06:47:32.2362364Z - Required stages: doc, impl, unit, int
2026-06-17T06:47:32.2362402Z 
2026-06-17T06:47:32.2362568Z ### REQ-HAZARD-ROLLBACK-STATE-COMPAT
2026-06-17T06:47:32.2364410Z - 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-17T06:47:32.2364592Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2364625Z 
2026-06-17T06:47:32.2364791Z ### REQ-HAZARD-BRAIN-RESPAWN-PATH
2026-06-17T06:47:32.2367425Z - Title: The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.
2026-06-17T06:47:32.2367606Z - Required stages: doc, impl, unit, int
2026-06-17T06:47:32.2367639Z 
2026-06-17T06:47:32.2367812Z ### REQ-HAZARD-PSYCHE-OUTBOUND-PROXY
2026-06-17T06:47:32.2368699Z - 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-17T06:47:32.2368866Z - Required stages: impl, unit
2026-06-17T06:47:32.2368904Z 
2026-06-17T06:47:32.2369129Z ### REQ-HAZARD-DAEMON-SCHED-NONBLOCKING
2026-06-17T06:47:32.2369867Z - 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-17T06:47:32.2370035Z - Required stages: impl, unit
2026-06-17T06:47:32.2370068Z 
2026-06-17T06:47:32.2370234Z ### REQ-HAZARD-PAIR-TRANSCRIPT-BIND
2026-06-17T06:47:32.2370980Z - 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-17T06:47:32.2371144Z - Required stages: impl, unit
2026-06-17T06:47:32.2371177Z 
2026-06-17T06:47:32.2371346Z ### REQ-HAZARD-PAIR-SEED-ROTATION
2026-06-17T06:47:32.2371965Z - 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-17T06:47:32.2372117Z - Required stages: impl, unit
2026-06-17T06:47:32.2372150Z 
2026-06-17T06:47:32.2372308Z ### REQ-HAZARD-PAIR-RATE-LIMIT
2026-06-17T06:47:32.2373375Z - 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-17T06:47:32.2373636Z - Required stages: impl, unit
2026-06-17T06:47:32.2373664Z 
2026-06-17T06:47:32.2373826Z ### REQ-HAZARD-WAN-ORIGIN-AUTH
2026-06-17T06:47:32.2374717Z - 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-17T06:47:32.2374884Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2374917Z 
2026-06-17T06:47:32.2375060Z ### REQ-CONSENT-1
2026-06-17T06:47:32.2376068Z - 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-17T06:47:32.2376233Z - Required stages: impl, unit
2026-06-17T06:47:32.2376271Z 
2026-06-17T06:47:32.2376428Z ### REQ-CONSENT-2
2026-06-17T06:47:32.2377356Z - 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-17T06:47:32.2377527Z - Required stages: impl, unit
2026-06-17T06:47:32.2377560Z 
2026-06-17T06:47:32.2377704Z ### REQ-PRES-1
2026-06-17T06:47:32.2379646Z - 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-17T06:47:32.2379933Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2379979Z 
2026-06-17T06:47:32.2380165Z ### REQ-SHELL-1
2026-06-17T06:47:32.2381458Z - 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-17T06:47:32.2381671Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2381709Z 
2026-06-17T06:47:32.2381886Z ### REQ-SHELL-2
2026-06-17T06:47:32.2383979Z - 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-17T06:47:32.2384198Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2384236Z 
2026-06-17T06:47:32.2384436Z ### REQ-HAZARD-ELEVATED-DAEMON-SPAWN
2026-06-17T06:47:32.2386221Z - 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-17T06:47:32.2386431Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2386468Z 
2026-06-17T06:47:32.2386666Z ### REQ-HAZARD-REGISTRY-GHOST-ROWS
2026-06-17T06:47:32.2388363Z - 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-17T06:47:32.2388650Z - Required stages: doc, impl, unit
2026-06-17T06:47:32.2388683Z 
2026-06-17T06:47:32.2388826Z ### REQ-CLI-1
2026-06-17T06:47:32.2390110Z - 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-17T06:47:32.2390278Z - Required stages: impl, unit
2026-06-17T06:47:32.2390315Z 
2026-06-17T06:47:32.2390454Z ### REQ-CLI-2
2026-06-17T06:47:32.2391279Z - 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-17T06:47:32.2391437Z - Required stages: impl, unit
2026-06-17T06:47:32.2391466Z 
2026-06-17T06:47:32.2391612Z ### REQ-CLI-3
2026-06-17T06:47:32.2392446Z - 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-17T06:47:32.2392617Z - Required stages: impl, unit
2026-06-17T06:47:32.2392655Z 
2026-06-17T06:47:32.2392795Z ### REQ-SUBNET-5
2026-06-17T06:47:32.2394162Z - 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-17T06:47:32.2394345Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2394368Z 
2026-06-17T06:47:32.2394523Z ### REQ-SUBNET-6
2026-06-17T06:47:32.2395323Z - 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-17T06:47:32.2395498Z - Required stages: impl, unit
2026-06-17T06:47:32.2395527Z 
2026-06-17T06:47:32.2395690Z ### REQ-SUBNET-7
2026-06-17T06:47:32.2397457Z - 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-17T06:47:32.2397637Z - Required stages: impl, unit
2026-06-17T06:47:32.2397670Z 
2026-06-17T06:47:32.2397813Z ### REQ-SUBNET-8
2026-06-17T06:47:32.2399067Z - 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-17T06:47:32.2399348Z - Required stages: impl, unit
2026-06-17T06:47:32.2399386Z 
2026-06-17T06:47:32.2399672Z ### REQ-INSTALL-6
2026-06-17T06:47:32.2400970Z - 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-17T06:47:32.2401138Z - Required stages: impl, unit
2026-06-17T06:47:32.2401172Z 
2026-06-17T06:47:32.2401309Z ### REQ-INSTALL-7
2026-06-17T06:47:32.2402525Z - 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-17T06:47:32.2402679Z - Required stages: impl
2026-06-17T06:47:32.2402717Z 
2026-06-17T06:47:32.2402863Z ### REQ-INSTALL-8
2026-06-17T06:47:32.2404031Z - 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-17T06:47:32.2404178Z - Required stages: impl
2026-06-17T06:47:32.2404217Z 
2026-06-17T06:47:32.2404355Z ### REQ-CONV-1
2026-06-17T06:47:32.2405830Z - 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-17T06:47:32.2406002Z - Required stages: impl, unit
2026-06-17T06:47:32.2406035Z 
2026-06-17T06:47:32.2406170Z ### REQ-CONV-2
2026-06-17T06:47:32.2407355Z - 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-17T06:47:32.2407514Z - Required stages: impl, unit
2026-06-17T06:47:32.2407547Z 
2026-06-17T06:47:32.2407675Z ### REQ-PAIR-8
2026-06-17T06:47:32.2409122Z - 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-17T06:47:32.2409317Z - Required stages: impl, unit
2026-06-17T06:47:32.2409351Z 
2026-06-17T06:47:32.2409493Z ### REQ-DAEMON-5
2026-06-17T06:47:32.2410873Z - 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-17T06:47:32.2411031Z - Required stages: impl, unit
2026-06-17T06:47:32.2411065Z 
2026-06-17T06:47:32.2411313Z ### REQ-DAEMON-6
2026-06-17T06:47:32.2413370Z - 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-17T06:47:32.2413638Z - Required stages: impl, unit
2026-06-17T06:47:32.2413671Z 
2026-06-17T06:47:32.2413819Z ### REQ-DAEMON-7
2026-06-17T06:47:32.2415349Z - 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-17T06:47:32.2415517Z - Required stages: impl, unit
2026-06-17T06:47:32.2415549Z 
2026-06-17T06:47:32.2415682Z ### REQ-DAEMON-8
2026-06-17T06:47:32.2416710Z - 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-17T06:47:32.2416876Z - Required stages: impl, unit
2026-06-17T06:47:32.2416910Z 
2026-06-17T06:47:32.2417049Z ### REQ-DAEMON-9
2026-06-17T06:47:32.2419558Z - 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-17T06:47:32.2419730Z - Required stages: impl, unit
2026-06-17T06:47:32.2419768Z 
2026-06-17T06:47:32.2419926Z ### REQ-HAZARD-LIVEHOST-BOOT-RACE
2026-06-17T06:47:32.2423823Z - Title: The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.
2026-06-17T06:47:32.2424127Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2424165Z 
2026-06-17T06:47:32.2424326Z ### REQ-HAZARD-TEMPLATE-ARGV-FILL
2026-06-17T06:47:32.2428452Z - Title: Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = "PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.
2026-06-17T06:47:32.2428634Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2428671Z 
2026-06-17T06:47:32.2428835Z ### REQ-HAZARD-LIVEHOST-NONRESIDENT
2026-06-17T06:47:32.2432428Z - Title: A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:"host not resident within <n>s (psyche perch missing/dead pid)"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.
2026-06-17T06:47:32.2432612Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2432646Z 
2026-06-17T06:47:32.2432809Z ### REQ-HAZARD-EPOCH-RESET
2026-06-17T06:47:32.2434249Z - 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-17T06:47:32.2434416Z - Required stages: 
2026-06-17T06:47:32.2434449Z 
2026-06-17T06:47:32.2434590Z ### REQ-MESH-1
2026-06-17T06:47:32.2436936Z - 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-17T06:47:32.2437205Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2437239Z 
2026-06-17T06:47:32.2437372Z ### REQ-MESH-2
2026-06-17T06:47:32.2440192Z - 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-17T06:47:32.2440368Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2440402Z 
2026-06-17T06:47:32.2440540Z ### REQ-MESH-3
2026-06-17T06:47:32.2442317Z - 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-17T06:47:32.2442487Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2442529Z 
2026-06-17T06:47:32.2442677Z ### REQ-MESH-4
2026-06-17T06:47:32.2445023Z - 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-17T06:47:32.2445189Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2445222Z 
2026-06-17T06:47:32.2445380Z ### REQ-MESH-5
2026-06-17T06:47:32.2446868Z - 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-17T06:47:32.2452967Z - Required stages: impl, unit
2026-06-17T06:47:32.2453009Z 
2026-06-17T06:47:32.2453156Z ### REQ-MESH-6
2026-06-17T06:47:32.2454706Z - 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-17T06:47:32.2454892Z - Required stages: impl, unit
2026-06-17T06:47:32.2454930Z 
2026-06-17T06:47:32.2455088Z ### REQ-SHELL-3
2026-06-17T06:47:32.2457038Z - Title: Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).
2026-06-17T06:47:32.2457214Z - Required stages: impl, unit, int
2026-06-17T06:47:32.2457247Z 
2026-06-17T06:47:32.2457395Z ### REQ-SHELL-4
2026-06-17T06:47:32.2459413Z - Title: Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).
2026-06-17T06:47:32.2459600Z - Required stages: doc, impl, unit, int
2026-06-17T06:47:32.2459638Z 
2026-06-17T06:47:32.2459780Z ### REQ-CONSENT-3
2026-06-17T06:47:32.2461769Z - Title: Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).
2026-06-17T06:47:32.2461946Z - Required stages: doc, impl, unit, int
2026-06-17T06:47:32.2461976Z 
2026-06-17T06:47:32.2462127Z ### REQ-SHELL-5
2026-06-17T06:47:32.2463428Z - Title: Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).
2026-06-17T06:47:32.2463612Z - Required stages: doc, impl, unit, int
2026-06-17T06:47:32.2463645Z 
2026-06-17T06:47:32.2463798Z ## How to report back
2026-06-17T06:47:32.2463941Z 
2026-06-17T06:47:32.2464222Z For every (requirement, failing criterion) pair, emit one finding:
2026-06-17T06:47:32.2464264Z 
2026-06-17T06:47:32.2464428Z     {
2026-06-17T06:47:32.2464579Z       "code": "requirement_quality",
2026-06-17T06:47:32.2464733Z       "requirementId": "REQ-...",
2026-06-17T06:47:32.2464956Z       "criterion": "singular" | "verifiable" | "atomic" | "active-voice",
2026-06-17T06:47:32.2465114Z       "message": "<short reason>",
2026-06-17T06:47:32.2465299Z       "suggestedRevision": "<optional rewrite>"
2026-06-17T06:47:32.2465424Z     }
2026-06-17T06:47:32.2465461Z 
2026-06-17T06:47:32.2465716Z Wrap your response as { "findings": [ ... ] } listing only your concerns; the
2026-06-17T06:47:32.2465929Z deterministic findings above don't need to be repeated.
2026-06-17T06:47:32.2567056Z Post job cleanup.
2026-06-17T06:47:32.3236442Z [command]/usr/bin/git version
2026-06-17T06:47:32.3301896Z git version 2.43.0
2026-06-17T06:47:32.3333018Z Temporarily overriding HOME='/home/reavus/actions-runner/_work/_temp/8430224c-5936-47da-b811-c8abb99f1001' before making global git config changes
2026-06-17T06:47:32.3333366Z Adding repository directory to the temporary git global config as a safe directory
2026-06-17T06:47:32.3336318Z [command]/usr/bin/git config --global --add safe.directory /home/reavus/actions-runner/_work/spt-core/spt-core
2026-06-17T06:47:32.3363797Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-06-17T06:47:32.3387918Z [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-17T06:47:32.3571066Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
2026-06-17T06:47:32.3589300Z http.https://github.com/.extraheader
2026-06-17T06:47:32.3595683Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader
2026-06-17T06:47:32.3618433Z [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-17T06:47:32.3810495Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
2026-06-17T06:47:32.3837425Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
2026-06-17T06:47:32.4139413Z Cleaning up orphan processes
