﻿2026-06-09T09:52:53.8200718Z Current runner version: '2.334.0'
2026-06-09T09:52:53.8207067Z Runner name: 'kitsubito'
2026-06-09T09:52:53.8207740Z Runner group name: 'Default'
2026-06-09T09:52:53.8208702Z Machine name: 'KITSUBITO'
2026-06-09T09:52:53.8211340Z ##[group]GITHUB_TOKEN Permissions
2026-06-09T09:52:53.8213885Z Contents: read
2026-06-09T09:52:53.8214460Z Metadata: read
2026-06-09T09:52:53.8214985Z Packages: read
2026-06-09T09:52:53.8215456Z ##[endgroup]
2026-06-09T09:52:53.8217708Z Secret source: Actions
2026-06-09T09:52:53.8218419Z Prepare workflow directory
2026-06-09T09:52:53.8708662Z Prepare all required actions
2026-06-09T09:52:53.8753298Z Getting action download info
2026-06-09T09:52:54.4241737Z Download action repository 'actions/checkout@v5' (SHA:93cb6efe18208431cddfb8368fd83d5badbf9bfd)
2026-06-09T09:52:55.3634747Z Complete job name: traceability
2026-06-09T09:52:55.4483698Z ##[group]Run actions/checkout@v5
2026-06-09T09:52:55.4484513Z with:
2026-06-09T09:52:55.4484944Z   repository: SaberMage/spt-core
2026-06-09T09:52:55.4488525Z   token: ***
2026-06-09T09:52:55.4489060Z   ssh-strict: true
2026-06-09T09:52:55.4489484Z   ssh-user: git
2026-06-09T09:52:55.4489890Z   persist-credentials: true
2026-06-09T09:52:55.4490567Z   clean: true
2026-06-09T09:52:55.4490978Z   sparse-checkout-cone-mode: true
2026-06-09T09:52:55.4491446Z   fetch-depth: 1
2026-06-09T09:52:55.4491841Z   fetch-tags: false
2026-06-09T09:52:55.4492247Z   show-progress: true
2026-06-09T09:52:55.4492646Z   lfs: false
2026-06-09T09:52:55.4493032Z   submodules: false
2026-06-09T09:52:55.4493504Z   set-safe-directory: true
2026-06-09T09:52:55.4494206Z ##[endgroup]
2026-06-09T09:52:55.5439270Z Syncing repository: SaberMage/spt-core
2026-06-09T09:52:55.5441264Z ##[group]Getting Git version info
2026-06-09T09:52:55.5442199Z Working directory is '/home/reavus/actions-runner/_work/spt-core/spt-core'
2026-06-09T09:52:55.5443241Z [command]/usr/bin/git version
2026-06-09T09:52:55.5443705Z git version 2.43.0
2026-06-09T09:52:55.5449763Z ##[endgroup]
2026-06-09T09:52:55.5461598Z Temporarily overriding HOME='/home/reavus/actions-runner/_work/_temp/1ade2a4b-358d-491f-800a-41cd74ae3296' before making global git config changes
2026-06-09T09:52:55.5462804Z Adding repository directory to the temporary git global config as a safe directory
2026-06-09T09:52:55.5464730Z [command]/usr/bin/git config --global --add safe.directory /home/reavus/actions-runner/_work/spt-core/spt-core
2026-06-09T09:52:55.5500416Z [command]/usr/bin/git config --local --get remote.origin.url
2026-06-09T09:52:55.5521632Z https://github.com/SaberMage/spt-core
2026-06-09T09:52:55.5534926Z ##[group]Removing previously created refs, to avoid conflicts
2026-06-09T09:52:55.5538804Z [command]/usr/bin/git rev-parse --symbolic-full-name --verify --quiet HEAD
2026-06-09T09:52:55.5573016Z refs/heads/dev-freeform
2026-06-09T09:52:55.5580629Z [command]/usr/bin/git checkout --detach
2026-06-09T09:52:55.5725027Z HEAD is now at cabdc61 release: prep v0.3.2 (version bump + CHANGELOG)
2026-06-09T09:52:55.5764325Z [command]/usr/bin/git branch --delete --force dev-freeform
2026-06-09T09:52:55.5795900Z Deleted branch dev-freeform (was cabdc61).
2026-06-09T09:52:55.5832485Z ##[endgroup]
2026-06-09T09:52:55.5834052Z [command]/usr/bin/git submodule status
2026-06-09T09:52:55.6031123Z ##[group]Cleaning the repository
2026-06-09T09:52:55.6034981Z [command]/usr/bin/git clean -ffdx
2026-06-09T09:52:58.3014627Z Removing target/
2026-06-09T09:52:58.3029046Z [command]/usr/bin/git reset --hard HEAD
2026-06-09T09:52:58.3123293Z HEAD is now at cabdc61 release: prep v0.3.2 (version bump + CHANGELOG)
2026-06-09T09:52:58.3128872Z ##[endgroup]
2026-06-09T09:52:58.3130560Z ##[group]Disabling automatic garbage collection
2026-06-09T09:52:58.3133729Z [command]/usr/bin/git config --local gc.auto 0
2026-06-09T09:52:58.3159475Z ##[endgroup]
2026-06-09T09:52:58.3160075Z ##[group]Setting up auth
2026-06-09T09:52:58.3164752Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-06-09T09:52:58.3191649Z [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-09T09:52:58.3394640Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
2026-06-09T09:52:58.3420248Z [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-09T09:52:58.3608087Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
2026-06-09T09:52:58.3635535Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
2026-06-09T09:52:58.3832525Z [command]/usr/bin/git config --local http.https://github.com/.extraheader AUTHORIZATION: basic ***
2026-06-09T09:52:58.3864082Z ##[endgroup]
2026-06-09T09:52:58.3864630Z ##[group]Fetching the repository
2026-06-09T09:52:58.3871475Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +cabdc614fc0416e3a57de0a21b229db485089320:refs/remotes/origin/dev-freeform
2026-06-09T09:52:58.8901113Z ##[endgroup]
2026-06-09T09:52:58.8901775Z ##[group]Determining the checkout info
2026-06-09T09:52:58.8902376Z ##[endgroup]
2026-06-09T09:52:58.8906414Z [command]/usr/bin/git sparse-checkout disable
2026-06-09T09:52:58.8950904Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig
2026-06-09T09:52:58.8972687Z ##[group]Checking out the ref
2026-06-09T09:52:58.8975568Z [command]/usr/bin/git checkout --progress --force -B dev-freeform refs/remotes/origin/dev-freeform
2026-06-09T09:52:58.9015355Z Switched to a new branch 'dev-freeform'
2026-06-09T09:52:58.9016072Z branch 'dev-freeform' set up to track 'origin/dev-freeform'.
2026-06-09T09:52:58.9023009Z ##[endgroup]
2026-06-09T09:52:58.9063591Z [command]/usr/bin/git log -1 --format=%H
2026-06-09T09:52:58.9086542Z cabdc614fc0416e3a57de0a21b229db485089320
2026-06-09T09:52:58.9287030Z ##[group]Run WANT=0.1.2
2026-06-09T09:52:58.9287321Z [36;1mWANT=0.1.2[0m
2026-06-09T09:52:58.9287551Z [36;1mBIN="$HOME/.local/bin/traceable-reqs"[0m
2026-06-09T09:52:58.9287889Z [36;1mif [ -x "$BIN" ] && "$BIN" --version | grep -q " $WANT\$"; then[0m
2026-06-09T09:52:58.9288208Z [36;1m  ln -sf "$BIN" ./traceable-reqs[0m
2026-06-09T09:52:58.9288445Z [36;1melse[0m
2026-06-09T09:52:58.9288697Z [36;1m  # Build OUTSIDE the checkout: a clone inside it gets adopted by[0m
2026-06-09T09:52:58.9289170Z [36;1m  # the spt-core cargo workspace and refuses to build.[0m
2026-06-09T09:52:58.9289462Z [36;1m  SRC="$RUNNER_TEMP/tr-src"[0m
2026-06-09T09:52:58.9289690Z [36;1m  rm -rf "$SRC"[0m
2026-06-09T09:52:58.9289923Z [36;1m  git clone --depth 1 --branch "v$WANT" \[0m
2026-06-09T09:52:58.9290337Z [36;1m    "https://x-access-token:${GH_TOKEN}@github.com/BigscreenVR/traceable-reqs" "$SRC"[0m
2026-06-09T09:52:58.9290827Z [36;1m  cargo build --release --manifest-path "$SRC/rust/Cargo.toml"[0m
2026-06-09T09:52:58.9291141Z [36;1m  mkdir -p "$HOME/.local/bin"[0m
2026-06-09T09:52:58.9291414Z [36;1m  cp "$SRC/rust/target/release/traceable-reqs" "$BIN"[0m
2026-06-09T09:52:58.9291690Z [36;1m  ln -sf "$BIN" ./traceable-reqs[0m
2026-06-09T09:52:58.9291908Z [36;1mfi[0m
2026-06-09T09:52:58.9292085Z [36;1m./traceable-reqs --version[0m
2026-06-09T09:52:58.9307407Z shell: /usr/bin/bash -e {0}
2026-06-09T09:52:58.9307631Z env:
2026-06-09T09:52:58.9308198Z   GH_TOKEN: ***
2026-06-09T09:52:58.9308455Z ##[endgroup]
2026-06-09T09:52:58.9412646Z traceable-reqs 0.1.2
2026-06-09T09:52:58.9443194Z ##[group]Run ./traceable-reqs check --json
2026-06-09T09:52:58.9443504Z [36;1m./traceable-reqs check --json[0m
2026-06-09T09:52:58.9457988Z shell: /usr/bin/bash -e {0}
2026-06-09T09:52:58.9458228Z ##[endgroup]
2026-06-09T09:52:58.9906834Z {
2026-06-09T09:52:58.9907200Z   "schemaVersion": 1,
2026-06-09T09:52:58.9907577Z   "summary": {
2026-06-09T09:52:58.9908272Z     "requirementCount": 179,
2026-06-09T09:52:58.9908550Z     "completeCount": 179,
2026-06-09T09:52:58.9908904Z     "incompleteCount": 0,
2026-06-09T09:52:58.9909405Z     "findingCount": 0
2026-06-09T09:52:58.9909738Z   },
2026-06-09T09:52:58.9910034Z   "requirements": [
2026-06-09T09:52:58.9910354Z     {
2026-06-09T09:52:58.9910649Z       "id": "REQ-API-1",
2026-06-09T09:52:58.9911168Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-09T09:52:58.9911735Z       "requiredStages": [
2026-06-09T09:52:58.9912088Z         "impl",
2026-06-09T09:52:58.9912383Z         "unit",
2026-06-09T09:52:58.9912746Z         "int"
2026-06-09T09:52:58.9913032Z       ],
2026-06-09T09:52:58.9913308Z       "stages": {
2026-06-09T09:52:58.9913615Z         "doc": {
2026-06-09T09:52:58.9914273Z           "complete": false,
2026-06-09T09:52:58.9914822Z           "evidence": []
2026-06-09T09:52:58.9915289Z         },
2026-06-09T09:52:58.9915705Z         "impl": {
2026-06-09T09:52:58.9916236Z           "complete": true,
2026-06-09T09:52:58.9916625Z           "evidence": [
2026-06-09T09:52:58.9917112Z             {
2026-06-09T09:52:58.9917560Z               "path": "crates/spt/src/api/mod.rs",
2026-06-09T09:52:58.9933023Z               "line": 15
2026-06-09T09:52:58.9933357Z             }
2026-06-09T09:52:58.9933610Z           ]
2026-06-09T09:52:58.9933847Z         },
2026-06-09T09:52:58.9934085Z         "int": {
2026-06-09T09:52:58.9934343Z           "complete": true,
2026-06-09T09:52:58.9934637Z           "evidence": [
2026-06-09T09:52:58.9935599Z             {
2026-06-09T09:52:58.9935914Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-09T09:52:58.9936290Z               "line": 13
2026-06-09T09:52:58.9936567Z             }
2026-06-09T09:52:58.9936806Z           ]
2026-06-09T09:52:58.9937034Z         },
2026-06-09T09:52:58.9937262Z         "unit": {
2026-06-09T09:52:58.9937514Z           "complete": true,
2026-06-09T09:52:58.9937799Z           "evidence": [
2026-06-09T09:52:58.9938070Z             {
2026-06-09T09:52:58.9938346Z               "path": "crates/spt/src/api/mod.rs",
2026-06-09T09:52:58.9938685Z               "line": 442
2026-06-09T09:52:58.9939044Z             },
2026-06-09T09:52:58.9939286Z             {
2026-06-09T09:52:58.9939553Z               "path": "crates/spt/src/api/mod.rs",
2026-06-09T09:52:58.9939891Z               "line": 448
2026-06-09T09:52:58.9940165Z             },
2026-06-09T09:52:58.9940399Z             {
2026-06-09T09:52:58.9940666Z               "path": "crates/spt/src/api/mod.rs",
2026-06-09T09:52:58.9941000Z               "line": 515
2026-06-09T09:52:58.9941291Z             }
2026-06-09T09:52:58.9941523Z           ]
2026-06-09T09:52:58.9941752Z         }
2026-06-09T09:52:58.9941986Z       }
2026-06-09T09:52:58.9942216Z     },
2026-06-09T09:52:58.9942444Z     {
2026-06-09T09:52:58.9942686Z       "id": "REQ-API-2",
2026-06-09T09:52:58.9943139Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-09T09:52:58.9943664Z       "requiredStages": [
2026-06-09T09:52:58.9943950Z         "impl",
2026-06-09T09:52:58.9944198Z         "unit",
2026-06-09T09:52:58.9944456Z         "int"
2026-06-09T09:52:58.9944703Z       ],
2026-06-09T09:52:58.9944946Z       "stages": {
2026-06-09T09:52:58.9945183Z         "doc": {
2026-06-09T09:52:58.9945444Z           "complete": false,
2026-06-09T09:52:58.9945754Z           "evidence": []
2026-06-09T09:52:58.9946015Z         },
2026-06-09T09:52:58.9946259Z         "impl": {
2026-06-09T09:52:58.9946526Z           "complete": true,
2026-06-09T09:52:58.9946836Z           "evidence": [
2026-06-09T09:52:58.9947404Z             {
2026-06-09T09:52:58.9947719Z               "path": "crates/spt-store/src/history.rs",
2026-06-09T09:52:58.9948088Z               "line": 15
2026-06-09T09:52:58.9948359Z             },
2026-06-09T09:52:58.9948606Z             {
2026-06-09T09:52:58.9948892Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-09T09:52:58.9949332Z               "line": 20
2026-06-09T09:52:58.9949755Z             },
2026-06-09T09:52:58.9950004Z             {
2026-06-09T09:52:58.9950310Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-09T09:52:58.9950673Z               "line": 139
2026-06-09T09:52:58.9950954Z             },
2026-06-09T09:52:58.9951192Z             {
2026-06-09T09:52:58.9951483Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:58.9951851Z               "line": 21
2026-06-09T09:52:58.9952117Z             },
2026-06-09T09:52:58.9952374Z             {
2026-06-09T09:52:58.9952656Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:58.9953028Z               "line": 38
2026-06-09T09:52:58.9953294Z             },
2026-06-09T09:52:58.9953533Z             {
2026-06-09T09:52:58.9953814Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:58.9954181Z               "line": 190
2026-06-09T09:52:58.9954457Z             },
2026-06-09T09:52:58.9954706Z             {
2026-06-09T09:52:58.9955011Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:58.9955365Z               "line": 232
2026-06-09T09:52:58.9955634Z             },
2026-06-09T09:52:58.9955884Z             {
2026-06-09T09:52:58.9956180Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:58.9956546Z               "line": 262
2026-06-09T09:52:58.9956824Z             },
2026-06-09T09:52:58.9957077Z             {
2026-06-09T09:52:58.9957353Z               "path": "crates/spt/src/api/worker.rs",
2026-06-09T09:52:58.9957716Z               "line": 17
2026-06-09T09:52:58.9957993Z             },
2026-06-09T09:52:58.9958251Z             {
2026-06-09T09:52:58.9958544Z               "path": "crates/spt/src/api/worker.rs",
2026-06-09T09:52:58.9958895Z               "line": 30
2026-06-09T09:52:58.9959253Z             },
2026-06-09T09:52:58.9959511Z             {
2026-06-09T09:52:58.9959796Z               "path": "crates/spt/src/api/worker.rs",
2026-06-09T09:52:58.9960145Z               "line": 63
2026-06-09T09:52:58.9960425Z             },
2026-06-09T09:52:58.9960669Z             {
2026-06-09T09:52:58.9960958Z               "path": "crates/spt/src/api/worker.rs",
2026-06-09T09:52:58.9961318Z               "line": 76
2026-06-09T09:52:58.9961491Z             }
2026-06-09T09:52:58.9961685Z           ]
2026-06-09T09:52:58.9961928Z         },
2026-06-09T09:52:58.9962177Z         "int": {
2026-06-09T09:52:58.9962425Z           "complete": true,
2026-06-09T09:52:58.9962721Z           "evidence": [
2026-06-09T09:52:58.9962987Z             {
2026-06-09T09:52:58.9963211Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-09T09:52:58.9963464Z               "line": 14
2026-06-09T09:52:58.9963642Z             },
2026-06-09T09:52:58.9963811Z             {
2026-06-09T09:52:58.9964012Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-09T09:52:58.9964259Z               "line": 183
2026-06-09T09:52:58.9964441Z             }
2026-06-09T09:52:58.9964608Z           ]
2026-06-09T09:52:58.9964765Z         },
2026-06-09T09:52:58.9964922Z         "unit": {
2026-06-09T09:52:58.9965094Z           "complete": true,
2026-06-09T09:52:58.9965291Z           "evidence": [
2026-06-09T09:52:58.9965465Z             {
2026-06-09T09:52:58.9965666Z               "path": "crates/spt-store/src/history.rs",
2026-06-09T09:52:58.9965920Z               "line": 42
2026-06-09T09:52:58.9966113Z             },
2026-06-09T09:52:58.9966275Z             {
2026-06-09T09:52:58.9966463Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-09T09:52:58.9966702Z               "line": 254
2026-06-09T09:52:58.9966884Z             },
2026-06-09T09:52:58.9967184Z             {
2026-06-09T09:52:58.9967388Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:58.9967628Z               "line": 438
2026-06-09T09:52:58.9967813Z             },
2026-06-09T09:52:58.9967970Z             {
2026-06-09T09:52:58.9968167Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:58.9968404Z               "line": 449
2026-06-09T09:52:58.9968854Z             },
2026-06-09T09:52:58.9969114Z             {
2026-06-09T09:52:58.9969307Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:58.9969546Z               "line": 581
2026-06-09T09:52:58.9969726Z             },
2026-06-09T09:52:58.9969894Z             {
2026-06-09T09:52:58.9970085Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:58.9970322Z               "line": 593
2026-06-09T09:52:58.9970509Z             },
2026-06-09T09:52:58.9970671Z             {
2026-06-09T09:52:58.9970861Z               "path": "crates/spt/src/api/worker.rs",
2026-06-09T09:52:58.9971106Z               "line": 141
2026-06-09T09:52:58.9971291Z             },
2026-06-09T09:52:58.9971458Z             {
2026-06-09T09:52:58.9971647Z               "path": "crates/spt/src/api/worker.rs",
2026-06-09T09:52:58.9971887Z               "line": 185
2026-06-09T09:52:58.9972070Z             }
2026-06-09T09:52:58.9972231Z           ]
2026-06-09T09:52:58.9972398Z         }
2026-06-09T09:52:58.9972560Z       }
2026-06-09T09:52:58.9972723Z     },
2026-06-09T09:52:58.9972884Z     {
2026-06-09T09:52:58.9973061Z       "id": "REQ-API-3",
2026-06-09T09:52:58.9973310Z       "title": "commune/signoff are file-drops, not commands",
2026-06-09T09:52:58.9973591Z       "requiredStages": [
2026-06-09T09:52:58.9973790Z         "impl",
2026-06-09T09:52:58.9973964Z         "unit",
2026-06-09T09:52:58.9974129Z         "int"
2026-06-09T09:52:58.9974297Z       ],
2026-06-09T09:52:58.9974462Z       "stages": {
2026-06-09T09:52:58.9974649Z         "doc": {
2026-06-09T09:52:58.9974843Z           "complete": false,
2026-06-09T09:52:58.9975057Z           "evidence": []
2026-06-09T09:52:58.9975245Z         },
2026-06-09T09:52:58.9975410Z         "impl": {
2026-06-09T09:52:58.9975597Z           "complete": true,
2026-06-09T09:52:58.9975802Z           "evidence": [
2026-06-09T09:52:58.9975997Z             {
2026-06-09T09:52:58.9976199Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-09T09:52:58.9976460Z               "line": 27
2026-06-09T09:52:58.9976645Z             },
2026-06-09T09:52:58.9976807Z             {
2026-06-09T09:52:58.9977014Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:58.9977272Z               "line": 372
2026-06-09T09:52:58.9977444Z             }
2026-06-09T09:52:58.9977634Z           ]
2026-06-09T09:52:58.9977873Z         },
2026-06-09T09:52:58.9978116Z         "int": {
2026-06-09T09:52:58.9978378Z           "complete": true,
2026-06-09T09:52:58.9978674Z           "evidence": [
2026-06-09T09:52:58.9979013Z             {
2026-06-09T09:52:58.9979323Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-09T09:52:58.9979693Z               "line": 257
2026-06-09T09:52:58.9979967Z             }
2026-06-09T09:52:58.9980205Z           ]
2026-06-09T09:52:58.9980445Z         },
2026-06-09T09:52:58.9980678Z         "unit": {
2026-06-09T09:52:58.9980940Z           "complete": true,
2026-06-09T09:52:58.9981226Z           "evidence": [
2026-06-09T09:52:58.9981507Z             {
2026-06-09T09:52:58.9981803Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-09T09:52:58.9982169Z               "line": 242
2026-06-09T09:52:58.9982438Z             },
2026-06-09T09:52:58.9982678Z             {
2026-06-09T09:52:58.9982963Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:58.9983331Z               "line": 622
2026-06-09T09:52:58.9983617Z             }
2026-06-09T09:52:58.9983856Z           ]
2026-06-09T09:52:58.9984103Z         }
2026-06-09T09:52:58.9984346Z       }
2026-06-09T09:52:58.9984575Z     },
2026-06-09T09:52:58.9984814Z     {
2026-06-09T09:52:58.9985214Z       "id": "REQ-ARCH-1",
2026-06-09T09:52:58.9985580Z       "title": "Many small acyclically-layered crates",
2026-06-09T09:52:58.9985985Z       "requiredStages": [
2026-06-09T09:52:58.9986195Z         "impl"
2026-06-09T09:52:58.9986367Z       ],
2026-06-09T09:52:58.9986533Z       "stages": {
2026-06-09T09:52:58.9986706Z         "doc": {
2026-06-09T09:52:58.9987006Z           "complete": false,
2026-06-09T09:52:58.9987205Z           "evidence": []
2026-06-09T09:52:58.9987376Z         },
2026-06-09T09:52:58.9987641Z         "impl": {
2026-06-09T09:52:58.9987836Z           "complete": true,
2026-06-09T09:52:58.9988042Z           "evidence": [
2026-06-09T09:52:58.9988232Z             {
2026-06-09T09:52:58.9988428Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-09T09:52:58.9988667Z               "line": 16
2026-06-09T09:52:58.9988852Z             },
2026-06-09T09:52:58.9989096Z             {
2026-06-09T09:52:58.9989287Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-09T09:52:58.9989539Z               "line": 12
2026-06-09T09:52:58.9989729Z             },
2026-06-09T09:52:58.9989907Z             {
2026-06-09T09:52:58.9990106Z               "path": "crates/spt-store/src/lib.rs",
2026-06-09T09:52:58.9990342Z               "line": 12
2026-06-09T09:52:58.9990522Z             }
2026-06-09T09:52:58.9990690Z           ]
2026-06-09T09:52:58.9990861Z         },
2026-06-09T09:52:58.9991014Z         "int": {
2026-06-09T09:52:58.9991196Z           "complete": false,
2026-06-09T09:52:58.9991400Z           "evidence": []
2026-06-09T09:52:58.9991596Z         },
2026-06-09T09:52:58.9991757Z         "unit": {
2026-06-09T09:52:58.9991939Z           "complete": false,
2026-06-09T09:52:58.9992135Z           "evidence": []
2026-06-09T09:52:58.9992320Z         }
2026-06-09T09:52:58.9992484Z       }
2026-06-09T09:52:58.9992639Z     },
2026-06-09T09:52:58.9992801Z     {
2026-06-09T09:52:58.9992966Z       "id": "REQ-ARCH-2",
2026-06-09T09:52:58.9993252Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-09T09:52:58.9993557Z       "requiredStages": [
2026-06-09T09:52:58.9993753Z         "impl"
2026-06-09T09:52:58.9993919Z       ],
2026-06-09T09:52:58.9994077Z       "stages": {
2026-06-09T09:52:58.9994329Z         "doc": {
2026-06-09T09:52:58.9994510Z           "complete": false,
2026-06-09T09:52:58.9994707Z           "evidence": []
2026-06-09T09:52:58.9994906Z         },
2026-06-09T09:52:58.9995069Z         "impl": {
2026-06-09T09:52:58.9995245Z           "complete": true,
2026-06-09T09:52:58.9995445Z           "evidence": [
2026-06-09T09:52:58.9995624Z             {
2026-06-09T09:52:58.9995821Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-09T09:52:58.9996064Z               "line": 18
2026-06-09T09:52:58.9996249Z             }
2026-06-09T09:52:58.9996416Z           ]
2026-06-09T09:52:58.9996583Z         },
2026-06-09T09:52:58.9996745Z         "int": {
2026-06-09T09:52:58.9996917Z           "complete": false,
2026-06-09T09:52:59.0016861Z           "evidence": []
2026-06-09T09:52:59.0017083Z         },
2026-06-09T09:52:59.0017265Z         "unit": {
2026-06-09T09:52:59.0017456Z           "complete": false,
2026-06-09T09:52:59.0017669Z           "evidence": []
2026-06-09T09:52:59.0017861Z         }
2026-06-09T09:52:59.0018037Z       }
2026-06-09T09:52:59.0018195Z     },
2026-06-09T09:52:59.0018367Z     {
2026-06-09T09:52:59.0018551Z       "id": "REQ-ARCH-3",
2026-06-09T09:52:59.0018885Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-09T09:52:59.0019311Z       "requiredStages": [
2026-06-09T09:52:59.0019498Z         "impl",
2026-06-09T09:52:59.0019675Z         "unit"
2026-06-09T09:52:59.0019846Z       ],
2026-06-09T09:52:59.0020014Z       "stages": {
2026-06-09T09:52:59.0020198Z         "doc": {
2026-06-09T09:52:59.0020385Z           "complete": false,
2026-06-09T09:52:59.0020594Z           "evidence": []
2026-06-09T09:52:59.0020800Z         },
2026-06-09T09:52:59.0020982Z         "impl": {
2026-06-09T09:52:59.0021381Z           "complete": true,
2026-06-09T09:52:59.0021592Z           "evidence": [
2026-06-09T09:52:59.0021790Z             {
2026-06-09T09:52:59.0022014Z               "path": "crates/spt-proto/src/version.rs",
2026-06-09T09:52:59.0022289Z               "line": 34
2026-06-09T09:52:59.0022479Z             },
2026-06-09T09:52:59.0022651Z             {
2026-06-09T09:52:59.0023005Z               "path": "crates/spt-proto/src/version.rs",
2026-06-09T09:52:59.0023257Z               "line": 41
2026-06-09T09:52:59.0023443Z             }
2026-06-09T09:52:59.0023614Z           ]
2026-06-09T09:52:59.0023791Z         },
2026-06-09T09:52:59.0023948Z         "int": {
2026-06-09T09:52:59.0024149Z           "complete": false,
2026-06-09T09:52:59.0024362Z           "evidence": []
2026-06-09T09:52:59.0024556Z         },
2026-06-09T09:52:59.0024735Z         "unit": {
2026-06-09T09:52:59.0024923Z           "complete": true,
2026-06-09T09:52:59.0025123Z           "evidence": [
2026-06-09T09:52:59.0025308Z             {
2026-06-09T09:52:59.0025538Z               "path": "crates/spt-proto/src/version.rs",
2026-06-09T09:52:59.0025791Z               "line": 51
2026-06-09T09:52:59.0025981Z             },
2026-06-09T09:52:59.0026162Z             {
2026-06-09T09:52:59.0026382Z               "path": "crates/spt-proto/src/version.rs",
2026-06-09T09:52:59.0026629Z               "line": 71
2026-06-09T09:52:59.0026829Z             },
2026-06-09T09:52:59.0027012Z             {
2026-06-09T09:52:59.0027229Z               "path": "crates/spt-proto/src/version.rs",
2026-06-09T09:52:59.0027482Z               "line": 83
2026-06-09T09:52:59.0027658Z             }
2026-06-09T09:52:59.0027811Z           ]
2026-06-09T09:52:59.0027963Z         }
2026-06-09T09:52:59.0028136Z       }
2026-06-09T09:52:59.0028297Z     },
2026-06-09T09:52:59.0028445Z     {
2026-06-09T09:52:59.0028602Z       "id": "REQ-ARCH-4",
2026-06-09T09:52:59.0028878Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-09T09:52:59.0029276Z       "requiredStages": [
2026-06-09T09:52:59.0029478Z         "impl",
2026-06-09T09:52:59.0029650Z         "unit"
2026-06-09T09:52:59.0029833Z       ],
2026-06-09T09:52:59.0030011Z       "stages": {
2026-06-09T09:52:59.0030191Z         "doc": {
2026-06-09T09:52:59.0030382Z           "complete": false,
2026-06-09T09:52:59.0030593Z           "evidence": []
2026-06-09T09:52:59.0030796Z         },
2026-06-09T09:52:59.0030969Z         "impl": {
2026-06-09T09:52:59.0031150Z           "complete": true,
2026-06-09T09:52:59.0031355Z           "evidence": [
2026-06-09T09:52:59.0031556Z             {
2026-06-09T09:52:59.0031760Z               "path": "crates/spt-proto/src/event.rs",
2026-06-09T09:52:59.0031998Z               "line": 82
2026-06-09T09:52:59.0032186Z             },
2026-06-09T09:52:59.0032355Z             {
2026-06-09T09:52:59.0032550Z               "path": "crates/spt-proto/src/event.rs",
2026-06-09T09:52:59.0032792Z               "line": 96
2026-06-09T09:52:59.0032982Z             },
2026-06-09T09:52:59.0033169Z             {
2026-06-09T09:52:59.0033368Z               "path": "crates/spt-proto/src/event.rs",
2026-06-09T09:52:59.0033607Z               "line": 116
2026-06-09T09:52:59.0033794Z             },
2026-06-09T09:52:59.0033964Z             {
2026-06-09T09:52:59.0034156Z               "path": "crates/spt-proto/src/event.rs",
2026-06-09T09:52:59.0034399Z               "line": 131
2026-06-09T09:52:59.0034618Z             },
2026-06-09T09:52:59.0034786Z             {
2026-06-09T09:52:59.0034993Z               "path": "crates/spt-proto/src/event.rs",
2026-06-09T09:52:59.0035248Z               "line": 181
2026-06-09T09:52:59.0035435Z             }
2026-06-09T09:52:59.0035606Z           ]
2026-06-09T09:52:59.0035764Z         },
2026-06-09T09:52:59.0035920Z         "int": {
2026-06-09T09:52:59.0036102Z           "complete": false,
2026-06-09T09:52:59.0036313Z           "evidence": []
2026-06-09T09:52:59.0036502Z         },
2026-06-09T09:52:59.0036671Z         "unit": {
2026-06-09T09:52:59.0036976Z           "complete": true,
2026-06-09T09:52:59.0037175Z           "evidence": [
2026-06-09T09:52:59.0037356Z             {
2026-06-09T09:52:59.0037562Z               "path": "crates/spt-proto/src/event.rs",
2026-06-09T09:52:59.0037803Z               "line": 242
2026-06-09T09:52:59.0037995Z             },
2026-06-09T09:52:59.0038170Z             {
2026-06-09T09:52:59.0038357Z               "path": "crates/spt-proto/src/event.rs",
2026-06-09T09:52:59.0038686Z               "line": 252
2026-06-09T09:52:59.0038867Z             },
2026-06-09T09:52:59.0039128Z             {
2026-06-09T09:52:59.0039310Z               "path": "crates/spt-proto/src/event.rs",
2026-06-09T09:52:59.0039540Z               "line": 263
2026-06-09T09:52:59.0039725Z             },
2026-06-09T09:52:59.0039893Z             {
2026-06-09T09:52:59.0040091Z               "path": "crates/spt-proto/src/event.rs",
2026-06-09T09:52:59.0040323Z               "line": 274
2026-06-09T09:52:59.0040504Z             },
2026-06-09T09:52:59.0040675Z             {
2026-06-09T09:52:59.0040886Z               "path": "crates/spt-proto/src/event.rs",
2026-06-09T09:52:59.0041138Z               "line": 286
2026-06-09T09:52:59.0041342Z             },
2026-06-09T09:52:59.0041501Z             {
2026-06-09T09:52:59.0041696Z               "path": "crates/spt-proto/src/event.rs",
2026-06-09T09:52:59.0041929Z               "line": 299
2026-06-09T09:52:59.0042121Z             },
2026-06-09T09:52:59.0042278Z             {
2026-06-09T09:52:59.0042464Z               "path": "crates/spt-proto/src/event.rs",
2026-06-09T09:52:59.0042698Z               "line": 310
2026-06-09T09:52:59.0042873Z             },
2026-06-09T09:52:59.0043030Z             {
2026-06-09T09:52:59.0043218Z               "path": "crates/spt-proto/src/event.rs",
2026-06-09T09:52:59.0043457Z               "line": 327
2026-06-09T09:52:59.0043637Z             },
2026-06-09T09:52:59.0043796Z             {
2026-06-09T09:52:59.0043977Z               "path": "crates/spt-proto/src/event.rs",
2026-06-09T09:52:59.0044224Z               "line": 358
2026-06-09T09:52:59.0044420Z             }
2026-06-09T09:52:59.0044586Z           ]
2026-06-09T09:52:59.0044753Z         }
2026-06-09T09:52:59.0044931Z       }
2026-06-09T09:52:59.0045106Z     },
2026-06-09T09:52:59.0045279Z     {
2026-06-09T09:52:59.0045458Z       "id": "REQ-CLI-1",
2026-06-09T09:52:59.0046653Z       "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-09T09:52:59.0047912Z       "requiredStages": [
2026-06-09T09:52:59.0048103Z         "impl",
2026-06-09T09:52:59.0048273Z         "unit"
2026-06-09T09:52:59.0048435Z       ],
2026-06-09T09:52:59.0048584Z       "stages": {
2026-06-09T09:52:59.0048769Z         "doc": {
2026-06-09T09:52:59.0049031Z           "complete": false,
2026-06-09T09:52:59.0049246Z           "evidence": []
2026-06-09T09:52:59.0049447Z         },
2026-06-09T09:52:59.0049636Z         "impl": {
2026-06-09T09:52:59.0049837Z           "complete": true,
2026-06-09T09:52:59.0050043Z           "evidence": [
2026-06-09T09:52:59.0050237Z             {
2026-06-09T09:52:59.0050439Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0050680Z               "line": 193
2026-06-09T09:52:59.0050864Z             },
2026-06-09T09:52:59.0051030Z             {
2026-06-09T09:52:59.0051221Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0051465Z               "line": 780
2026-06-09T09:52:59.0051675Z             },
2026-06-09T09:52:59.0051841Z             {
2026-06-09T09:52:59.0052023Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0052251Z               "line": 1082
2026-06-09T09:52:59.0052437Z             },
2026-06-09T09:52:59.0052599Z             {
2026-06-09T09:52:59.0052895Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0053123Z               "line": 2188
2026-06-09T09:52:59.0053325Z             }
2026-06-09T09:52:59.0053499Z           ]
2026-06-09T09:52:59.0053670Z         },
2026-06-09T09:52:59.0053854Z         "int": {
2026-06-09T09:52:59.0054051Z           "complete": false,
2026-06-09T09:52:59.0054275Z           "evidence": []
2026-06-09T09:52:59.0054594Z         },
2026-06-09T09:52:59.0054803Z         "unit": {
2026-06-09T09:52:59.0055008Z           "complete": true,
2026-06-09T09:52:59.0055210Z           "evidence": [
2026-06-09T09:52:59.0055395Z             {
2026-06-09T09:52:59.0055587Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0055825Z               "line": 5312
2026-06-09T09:52:59.0056013Z             }
2026-06-09T09:52:59.0056180Z           ]
2026-06-09T09:52:59.0056345Z         }
2026-06-09T09:52:59.0056512Z       }
2026-06-09T09:52:59.0056673Z     },
2026-06-09T09:52:59.0056832Z     {
2026-06-09T09:52:59.0057007Z       "id": "REQ-CLI-2",
2026-06-09T09:52:59.0057819Z       "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-09T09:52:59.0058658Z       "requiredStages": [
2026-06-09T09:52:59.0058881Z         "impl",
2026-06-09T09:52:59.0059153Z         "unit"
2026-06-09T09:52:59.0059343Z       ],
2026-06-09T09:52:59.0059510Z       "stages": {
2026-06-09T09:52:59.0059683Z         "doc": {
2026-06-09T09:52:59.0059862Z           "complete": false,
2026-06-09T09:52:59.0060063Z           "evidence": []
2026-06-09T09:52:59.0060253Z         },
2026-06-09T09:52:59.0060416Z         "impl": {
2026-06-09T09:52:59.0060598Z           "complete": true,
2026-06-09T09:52:59.0060802Z           "evidence": [
2026-06-09T09:52:59.0060985Z             {
2026-06-09T09:52:59.0061192Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-09T09:52:59.0061452Z               "line": 324
2026-06-09T09:52:59.0061643Z             },
2026-06-09T09:52:59.0061805Z             {
2026-06-09T09:52:59.0062006Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-09T09:52:59.0062273Z               "line": 65
2026-06-09T09:52:59.0062481Z             },
2026-06-09T09:52:59.0062664Z             {
2026-06-09T09:52:59.0062864Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-09T09:52:59.0063125Z               "line": 239
2026-06-09T09:52:59.0063331Z             },
2026-06-09T09:52:59.0063513Z             {
2026-06-09T09:52:59.0063713Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0063951Z               "line": 337
2026-06-09T09:52:59.0064126Z             },
2026-06-09T09:52:59.0064291Z             {
2026-06-09T09:52:59.0064462Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0064686Z               "line": 823
2026-06-09T09:52:59.0064869Z             },
2026-06-09T09:52:59.0065048Z             {
2026-06-09T09:52:59.0065230Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0065446Z               "line": 1273
2026-06-09T09:52:59.0065626Z             },
2026-06-09T09:52:59.0065789Z             {
2026-06-09T09:52:59.0065969Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0066193Z               "line": 1335
2026-06-09T09:52:59.0066385Z             },
2026-06-09T09:52:59.0066550Z             {
2026-06-09T09:52:59.0066722Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0066943Z               "line": 1396
2026-06-09T09:52:59.0067125Z             }
2026-06-09T09:52:59.0067305Z           ]
2026-06-09T09:52:59.0067458Z         },
2026-06-09T09:52:59.0067625Z         "int": {
2026-06-09T09:52:59.0067802Z           "complete": false,
2026-06-09T09:52:59.0068007Z           "evidence": []
2026-06-09T09:52:59.0068211Z         },
2026-06-09T09:52:59.0068384Z         "unit": {
2026-06-09T09:52:59.0068555Z           "complete": true,
2026-06-09T09:52:59.0068855Z           "evidence": [
2026-06-09T09:52:59.0069112Z             {
2026-06-09T09:52:59.0069310Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-09T09:52:59.0069555Z               "line": 309
2026-06-09T09:52:59.0069732Z             },
2026-06-09T09:52:59.0069889Z             {
2026-06-09T09:52:59.0070070Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0070413Z               "line": 5450
2026-06-09T09:52:59.0070596Z             }
2026-06-09T09:52:59.0070766Z           ]
2026-06-09T09:52:59.0070930Z         }
2026-06-09T09:52:59.0071081Z       }
2026-06-09T09:52:59.0071244Z     },
2026-06-09T09:52:59.0071395Z     {
2026-06-09T09:52:59.0071555Z       "id": "REQ-CLI-3",
2026-06-09T09:52:59.0072370Z       "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-09T09:52:59.0073200Z       "requiredStages": [
2026-06-09T09:52:59.0073395Z         "impl",
2026-06-09T09:52:59.0073557Z         "unit"
2026-06-09T09:52:59.0073720Z       ],
2026-06-09T09:52:59.0073881Z       "stages": {
2026-06-09T09:52:59.0074049Z         "doc": {
2026-06-09T09:52:59.0074215Z           "complete": false,
2026-06-09T09:52:59.0074417Z           "evidence": []
2026-06-09T09:52:59.0074586Z         },
2026-06-09T09:52:59.0074744Z         "impl": {
2026-06-09T09:52:59.0074922Z           "complete": true,
2026-06-09T09:52:59.0075104Z           "evidence": [
2026-06-09T09:52:59.0075279Z             {
2026-06-09T09:52:59.0075462Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0075691Z               "line": 774
2026-06-09T09:52:59.0075904Z             }
2026-06-09T09:52:59.0076063Z           ]
2026-06-09T09:52:59.0076219Z         },
2026-06-09T09:52:59.0076377Z         "int": {
2026-06-09T09:52:59.0076553Z           "complete": false,
2026-06-09T09:52:59.0076758Z           "evidence": []
2026-06-09T09:52:59.0076941Z         },
2026-06-09T09:52:59.0077096Z         "unit": {
2026-06-09T09:52:59.0077272Z           "complete": true,
2026-06-09T09:52:59.0077460Z           "evidence": [
2026-06-09T09:52:59.0077642Z             {
2026-06-09T09:52:59.0077822Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0078057Z               "line": 5277
2026-06-09T09:52:59.0078243Z             }
2026-06-09T09:52:59.0078405Z           ]
2026-06-09T09:52:59.0078563Z         }
2026-06-09T09:52:59.0078729Z       }
2026-06-09T09:52:59.0078873Z     },
2026-06-09T09:52:59.0079095Z     {
2026-06-09T09:52:59.0079259Z       "id": "REQ-CONSENT-1",
2026-06-09T09:52:59.0080269Z       "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-09T09:52:59.0081279Z       "requiredStages": [
2026-06-09T09:52:59.0081466Z         "impl",
2026-06-09T09:52:59.0081631Z         "unit"
2026-06-09T09:52:59.0081795Z       ],
2026-06-09T09:52:59.0081951Z       "stages": {
2026-06-09T09:52:59.0082124Z         "doc": {
2026-06-09T09:52:59.0082312Z           "complete": false,
2026-06-09T09:52:59.0082511Z           "evidence": []
2026-06-09T09:52:59.0082696Z         },
2026-06-09T09:52:59.0082863Z         "impl": {
2026-06-09T09:52:59.0083040Z           "complete": true,
2026-06-09T09:52:59.0083230Z           "evidence": [
2026-06-09T09:52:59.0083407Z             {
2026-06-09T09:52:59.0083602Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-09T09:52:59.0083850Z               "line": 27
2026-06-09T09:52:59.0084037Z             },
2026-06-09T09:52:59.0084198Z             {
2026-06-09T09:52:59.0084389Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-09T09:52:59.0084732Z               "line": 75
2026-06-09T09:52:59.0084910Z             },
2026-06-09T09:52:59.0085071Z             {
2026-06-09T09:52:59.0085260Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-09T09:52:59.0085501Z               "line": 98
2026-06-09T09:52:59.0085684Z             },
2026-06-09T09:52:59.0085844Z             {
2026-06-09T09:52:59.0086145Z               "path": "crates/spt-store/src/grants.rs",
2026-06-09T09:52:59.0086384Z               "line": 82
2026-06-09T09:52:59.0086566Z             },
2026-06-09T09:52:59.0086722Z             {
2026-06-09T09:52:59.0086914Z               "path": "crates/spt-store/src/grants.rs",
2026-06-09T09:52:59.0087152Z               "line": 109
2026-06-09T09:52:59.0092559Z             },
2026-06-09T09:52:59.0092777Z             {
2026-06-09T09:52:59.0093001Z               "path": "crates/spt-store/src/grants.rs",
2026-06-09T09:52:59.0093261Z               "line": 127
2026-06-09T09:52:59.0093452Z             },
2026-06-09T09:52:59.0093639Z             {
2026-06-09T09:52:59.0093843Z               "path": "crates/spt-store/src/grants.rs",
2026-06-09T09:52:59.0094086Z               "line": 142
2026-06-09T09:52:59.0094264Z             },
2026-06-09T09:52:59.0094434Z             {
2026-06-09T09:52:59.0094621Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0094845Z               "line": 5013
2026-06-09T09:52:59.0095030Z             }
2026-06-09T09:52:59.0095189Z           ]
2026-06-09T09:52:59.0095340Z         },
2026-06-09T09:52:59.0095494Z         "int": {
2026-06-09T09:52:59.0095669Z           "complete": false,
2026-06-09T09:52:59.0095869Z           "evidence": []
2026-06-09T09:52:59.0096061Z         },
2026-06-09T09:52:59.0096224Z         "unit": {
2026-06-09T09:52:59.0096404Z           "complete": true,
2026-06-09T09:52:59.0096601Z           "evidence": [
2026-06-09T09:52:59.0096782Z             {
2026-06-09T09:52:59.0096981Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-09T09:52:59.0097230Z               "line": 334
2026-06-09T09:52:59.0097412Z             },
2026-06-09T09:52:59.0097573Z             {
2026-06-09T09:52:59.0097765Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-09T09:52:59.0098002Z               "line": 380
2026-06-09T09:52:59.0098179Z             },
2026-06-09T09:52:59.0098344Z             {
2026-06-09T09:52:59.0098529Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-09T09:52:59.0098777Z               "line": 391
2026-06-09T09:52:59.0099044Z             },
2026-06-09T09:52:59.0099210Z             {
2026-06-09T09:52:59.0099406Z               "path": "crates/spt-store/src/grants.rs",
2026-06-09T09:52:59.0099639Z               "line": 165
2026-06-09T09:52:59.0099820Z             },
2026-06-09T09:52:59.0099983Z             {
2026-06-09T09:52:59.0100169Z               "path": "crates/spt-store/src/grants.rs",
2026-06-09T09:52:59.0100402Z               "line": 184
2026-06-09T09:52:59.0100589Z             },
2026-06-09T09:52:59.0100750Z             {
2026-06-09T09:52:59.0100957Z               "path": "crates/spt-store/src/grants.rs",
2026-06-09T09:52:59.0101192Z               "line": 204
2026-06-09T09:52:59.0101375Z             },
2026-06-09T09:52:59.0101541Z             {
2026-06-09T09:52:59.0101723Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0101956Z               "line": 5611
2026-06-09T09:52:59.0102150Z             }
2026-06-09T09:52:59.0102309Z           ]
2026-06-09T09:52:59.0102465Z         }
2026-06-09T09:52:59.0102638Z       }
2026-06-09T09:52:59.0102790Z     },
2026-06-09T09:52:59.0102948Z     {
2026-06-09T09:52:59.0103114Z       "id": "REQ-CONSENT-2",
2026-06-09T09:52:59.0104040Z       "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-09T09:52:59.0105119Z       "requiredStages": [
2026-06-09T09:52:59.0105318Z         "impl",
2026-06-09T09:52:59.0105492Z         "unit"
2026-06-09T09:52:59.0105647Z       ],
2026-06-09T09:52:59.0105801Z       "stages": {
2026-06-09T09:52:59.0105967Z         "doc": {
2026-06-09T09:52:59.0106140Z           "complete": false,
2026-06-09T09:52:59.0106342Z           "evidence": []
2026-06-09T09:52:59.0106626Z         },
2026-06-09T09:52:59.0106789Z         "impl": {
2026-06-09T09:52:59.0106964Z           "complete": true,
2026-06-09T09:52:59.0107171Z           "evidence": [
2026-06-09T09:52:59.0107347Z             {
2026-06-09T09:52:59.0107546Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-09T09:52:59.0107795Z               "line": 140
2026-06-09T09:52:59.0107977Z             },
2026-06-09T09:52:59.0108138Z             {
2026-06-09T09:52:59.0108330Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-09T09:52:59.0108567Z               "line": 165
2026-06-09T09:52:59.0108753Z             },
2026-06-09T09:52:59.0108924Z             {
2026-06-09T09:52:59.0109197Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-09T09:52:59.0109441Z               "line": 199
2026-06-09T09:52:59.0109614Z             },
2026-06-09T09:52:59.0109775Z             {
2026-06-09T09:52:59.0109961Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-09T09:52:59.0110204Z               "line": 241
2026-06-09T09:52:59.0110414Z             },
2026-06-09T09:52:59.0110667Z             {
2026-06-09T09:52:59.0110892Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-09T09:52:59.0111129Z               "line": 269
2026-06-09T09:52:59.0111310Z             },
2026-06-09T09:52:59.0111474Z             {
2026-06-09T09:52:59.0111667Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-09T09:52:59.0111911Z               "line": 300
2026-06-09T09:52:59.0112096Z             },
2026-06-09T09:52:59.0112254Z             {
2026-06-09T09:52:59.0112435Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0112678Z               "line": 4878
2026-06-09T09:52:59.0112859Z             },
2026-06-09T09:52:59.0113025Z             {
2026-06-09T09:52:59.0113203Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0113437Z               "line": 4936
2026-06-09T09:52:59.0113612Z             }
2026-06-09T09:52:59.0113776Z           ]
2026-06-09T09:52:59.0113945Z         },
2026-06-09T09:52:59.0114097Z         "int": {
2026-06-09T09:52:59.0114276Z           "complete": false,
2026-06-09T09:52:59.0114477Z           "evidence": []
2026-06-09T09:52:59.0114658Z         },
2026-06-09T09:52:59.0114815Z         "unit": {
2026-06-09T09:52:59.0114991Z           "complete": true,
2026-06-09T09:52:59.0115183Z           "evidence": [
2026-06-09T09:52:59.0115374Z             {
2026-06-09T09:52:59.0115573Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-09T09:52:59.0115822Z               "line": 419
2026-06-09T09:52:59.0116004Z             },
2026-06-09T09:52:59.0116170Z             {
2026-06-09T09:52:59.0116371Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-09T09:52:59.0116609Z               "line": 436
2026-06-09T09:52:59.0116789Z             },
2026-06-09T09:52:59.0116955Z             {
2026-06-09T09:52:59.0117139Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-09T09:52:59.0117378Z               "line": 472
2026-06-09T09:52:59.0117558Z             },
2026-06-09T09:52:59.0117726Z             {
2026-06-09T09:52:59.0117922Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-09T09:52:59.0118159Z               "line": 516
2026-06-09T09:52:59.0118350Z             },
2026-06-09T09:52:59.0118512Z             {
2026-06-09T09:52:59.0118693Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0118924Z               "line": 6506
2026-06-09T09:52:59.0119195Z             },
2026-06-09T09:52:59.0119360Z             {
2026-06-09T09:52:59.0119536Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0119762Z               "line": 6588
2026-06-09T09:52:59.0120063Z             }
2026-06-09T09:52:59.0120226Z           ]
2026-06-09T09:52:59.0120387Z         }
2026-06-09T09:52:59.0120545Z       }
2026-06-09T09:52:59.0120712Z     },
2026-06-09T09:52:59.0120869Z     {
2026-06-09T09:52:59.0121040Z       "id": "REQ-CONV-1",
2026-06-09T09:52:59.0122771Z       "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-09T09:52:59.0124249Z       "requiredStages": [
2026-06-09T09:52:59.0124444Z         "impl",
2026-06-09T09:52:59.0124610Z         "unit"
2026-06-09T09:52:59.0124771Z       ],
2026-06-09T09:52:59.0124951Z       "stages": {
2026-06-09T09:52:59.0125123Z         "doc": {
2026-06-09T09:52:59.0125304Z           "complete": false,
2026-06-09T09:52:59.0125508Z           "evidence": []
2026-06-09T09:52:59.0125700Z         },
2026-06-09T09:52:59.0125867Z         "impl": {
2026-06-09T09:52:59.0126048Z           "complete": true,
2026-06-09T09:52:59.0126240Z           "evidence": [
2026-06-09T09:52:59.0126443Z             {
2026-06-09T09:52:59.0126649Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-09T09:52:59.0126898Z               "line": 696
2026-06-09T09:52:59.0127082Z             },
2026-06-09T09:52:59.0127246Z             {
2026-06-09T09:52:59.0127444Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-09T09:52:59.0127694Z               "line": 94
2026-06-09T09:52:59.0127876Z             },
2026-06-09T09:52:59.0128037Z             {
2026-06-09T09:52:59.0128238Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-09T09:52:59.0128482Z               "line": 345
2026-06-09T09:52:59.0128676Z             },
2026-06-09T09:52:59.0128840Z             {
2026-06-09T09:52:59.0129116Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-09T09:52:59.0129363Z               "line": 387
2026-06-09T09:52:59.0129540Z             },
2026-06-09T09:52:59.0129707Z             {
2026-06-09T09:52:59.0129901Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-09T09:52:59.0130153Z               "line": 472
2026-06-09T09:52:59.0130341Z             },
2026-06-09T09:52:59.0130501Z             {
2026-06-09T09:52:59.0130700Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.0130943Z               "line": 629
2026-06-09T09:52:59.0131119Z             },
2026-06-09T09:52:59.0131300Z             {
2026-06-09T09:52:59.0131496Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.0131740Z               "line": 655
2026-06-09T09:52:59.0131925Z             },
2026-06-09T09:52:59.0132096Z             {
2026-06-09T09:52:59.0132298Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-09T09:52:59.0132550Z               "line": 369
2026-06-09T09:52:59.0132731Z             },
2026-06-09T09:52:59.0132896Z             {
2026-06-09T09:52:59.0133093Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-09T09:52:59.0133341Z               "line": 19
2026-06-09T09:52:59.0133511Z             }
2026-06-09T09:52:59.0133674Z           ]
2026-06-09T09:52:59.0133836Z         },
2026-06-09T09:52:59.0133994Z         "int": {
2026-06-09T09:52:59.0134169Z           "complete": false,
2026-06-09T09:52:59.0134370Z           "evidence": []
2026-06-09T09:52:59.0134558Z         },
2026-06-09T09:52:59.0134723Z         "unit": {
2026-06-09T09:52:59.0134896Z           "complete": true,
2026-06-09T09:52:59.0135094Z           "evidence": [
2026-06-09T09:52:59.0135279Z             {
2026-06-09T09:52:59.0135482Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.0135730Z               "line": 990
2026-06-09T09:52:59.0136012Z             },
2026-06-09T09:52:59.0136184Z             {
2026-06-09T09:52:59.0136388Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-09T09:52:59.0136632Z               "line": 108
2026-06-09T09:52:59.0136814Z             },
2026-06-09T09:52:59.0136970Z             {
2026-06-09T09:52:59.0137162Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-09T09:52:59.0137496Z               "line": 134
2026-06-09T09:52:59.0137676Z             },
2026-06-09T09:52:59.0137839Z             {
2026-06-09T09:52:59.0138042Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-09T09:52:59.0138287Z               "line": 144
2026-06-09T09:52:59.0138465Z             }
2026-06-09T09:52:59.0138626Z           ]
2026-06-09T09:52:59.0138780Z         }
2026-06-09T09:52:59.0139023Z       }
2026-06-09T09:52:59.0139185Z     },
2026-06-09T09:52:59.0139342Z     {
2026-06-09T09:52:59.0139504Z       "id": "REQ-CONV-2",
2026-06-09T09:52:59.0140774Z       "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-09T09:52:59.0141880Z       "requiredStages": [
2026-06-09T09:52:59.0142080Z         "impl",
2026-06-09T09:52:59.0142248Z         "unit"
2026-06-09T09:52:59.0142414Z       ],
2026-06-09T09:52:59.0142577Z       "stages": {
2026-06-09T09:52:59.0142747Z         "doc": {
2026-06-09T09:52:59.0142925Z           "complete": false,
2026-06-09T09:52:59.0143125Z           "evidence": []
2026-06-09T09:52:59.0143305Z         },
2026-06-09T09:52:59.0143471Z         "impl": {
2026-06-09T09:52:59.0143648Z           "complete": true,
2026-06-09T09:52:59.0143839Z           "evidence": [
2026-06-09T09:52:59.0144019Z             {
2026-06-09T09:52:59.0144234Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.0144502Z               "line": 316
2026-06-09T09:52:59.0144682Z             },
2026-06-09T09:52:59.0144850Z             {
2026-06-09T09:52:59.0145044Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.0145292Z               "line": 333
2026-06-09T09:52:59.0145475Z             },
2026-06-09T09:52:59.0145644Z             {
2026-06-09T09:52:59.0145849Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.0146105Z               "line": 761
2026-06-09T09:52:59.0146286Z             },
2026-06-09T09:52:59.0146449Z             {
2026-06-09T09:52:59.0146652Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.0146901Z               "line": 772
2026-06-09T09:52:59.0147078Z             },
2026-06-09T09:52:59.0147244Z             {
2026-06-09T09:52:59.0147431Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.0147680Z               "line": 334
2026-06-09T09:52:59.0147865Z             },
2026-06-09T09:52:59.0148023Z             {
2026-06-09T09:52:59.0148198Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0148418Z               "line": 2143
2026-06-09T09:52:59.0148597Z             },
2026-06-09T09:52:59.0148758Z             {
2026-06-09T09:52:59.0148934Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0149248Z               "line": 2159
2026-06-09T09:52:59.0149439Z             },
2026-06-09T09:52:59.0149607Z             {
2026-06-09T09:52:59.0149787Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0150007Z               "line": 2216
2026-06-09T09:52:59.0150188Z             }
2026-06-09T09:52:59.0150345Z           ]
2026-06-09T09:52:59.0150498Z         },
2026-06-09T09:52:59.0150656Z         "int": {
2026-06-09T09:52:59.0150837Z           "complete": false,
2026-06-09T09:52:59.0151036Z           "evidence": []
2026-06-09T09:52:59.0151216Z         },
2026-06-09T09:52:59.0151371Z         "unit": {
2026-06-09T09:52:59.0151672Z           "complete": true,
2026-06-09T09:52:59.0151873Z           "evidence": [
2026-06-09T09:52:59.0152053Z             {
2026-06-09T09:52:59.0152254Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.0152503Z               "line": 1071
2026-06-09T09:52:59.0152687Z             }
2026-06-09T09:52:59.0152846Z           ]
2026-06-09T09:52:59.0153104Z         }
2026-06-09T09:52:59.0153264Z       }
2026-06-09T09:52:59.0153419Z     },
2026-06-09T09:52:59.0153574Z     {
2026-06-09T09:52:59.0153738Z       "id": "REQ-DAEMON-1",
2026-06-09T09:52:59.0154011Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-09T09:52:59.0154322Z       "requiredStages": [
2026-06-09T09:52:59.0154519Z         "impl",
2026-06-09T09:52:59.0154690Z         "unit",
2026-06-09T09:52:59.0154913Z         "int"
2026-06-09T09:52:59.0155077Z       ],
2026-06-09T09:52:59.0155237Z       "stages": {
2026-06-09T09:52:59.0155401Z         "doc": {
2026-06-09T09:52:59.0155586Z           "complete": false,
2026-06-09T09:52:59.0155786Z           "evidence": []
2026-06-09T09:52:59.0155973Z         },
2026-06-09T09:52:59.0156129Z         "impl": {
2026-06-09T09:52:59.0156304Z           "complete": true,
2026-06-09T09:52:59.0156498Z           "evidence": [
2026-06-09T09:52:59.0156679Z             {
2026-06-09T09:52:59.0156874Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-09T09:52:59.0157127Z               "line": 12
2026-06-09T09:52:59.0157305Z             },
2026-06-09T09:52:59.0157470Z             {
2026-06-09T09:52:59.0157671Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.0157915Z               "line": 16
2026-06-09T09:52:59.0158090Z             },
2026-06-09T09:52:59.0158245Z             {
2026-06-09T09:52:59.0158434Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-09T09:52:59.0158677Z               "line": 15
2026-06-09T09:52:59.0158849Z             },
2026-06-09T09:52:59.0159181Z             {
2026-06-09T09:52:59.0159380Z               "path": "crates/spt/src/api/live.rs",
2026-06-09T09:52:59.0159618Z               "line": 13
2026-06-09T09:52:59.0159794Z             }
2026-06-09T09:52:59.0159952Z           ]
2026-06-09T09:52:59.0160114Z         },
2026-06-09T09:52:59.0160271Z         "int": {
2026-06-09T09:52:59.0160447Z           "complete": true,
2026-06-09T09:52:59.0160639Z           "evidence": [
2026-06-09T09:52:59.0160820Z             {
2026-06-09T09:52:59.0161029Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-09T09:52:59.0161276Z               "line": 32
2026-06-09T09:52:59.0161455Z             }
2026-06-09T09:52:59.0161614Z           ]
2026-06-09T09:52:59.0161772Z         },
2026-06-09T09:52:59.0161927Z         "unit": {
2026-06-09T09:52:59.0162118Z           "complete": true,
2026-06-09T09:52:59.0215963Z           "evidence": [
2026-06-09T09:52:59.0216415Z             {
2026-06-09T09:52:59.0216673Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-09T09:52:59.0217070Z               "line": 285
2026-06-09T09:52:59.0217287Z             },
2026-06-09T09:52:59.0217478Z             {
2026-06-09T09:52:59.0217692Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-09T09:52:59.0217950Z               "line": 293
2026-06-09T09:52:59.0218132Z             },
2026-06-09T09:52:59.0218288Z             {
2026-06-09T09:52:59.0218489Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-09T09:52:59.0218742Z               "line": 309
2026-06-09T09:52:59.0218937Z             },
2026-06-09T09:52:59.0219228Z             {
2026-06-09T09:52:59.0219433Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-09T09:52:59.0219680Z               "line": 317
2026-06-09T09:52:59.0219859Z             },
2026-06-09T09:52:59.0220021Z             {
2026-06-09T09:52:59.0220225Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.0220474Z               "line": 565
2026-06-09T09:52:59.0220646Z             },
2026-06-09T09:52:59.0220922Z             {
2026-06-09T09:52:59.0221552Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.0221837Z               "line": 635
2026-06-09T09:52:59.0222033Z             },
2026-06-09T09:52:59.0222215Z             {
2026-06-09T09:52:59.0222428Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-09T09:52:59.0222674Z               "line": 104
2026-06-09T09:52:59.0223003Z             },
2026-06-09T09:52:59.0223164Z             {
2026-06-09T09:52:59.0223365Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-09T09:52:59.0223608Z               "line": 129
2026-06-09T09:52:59.0223784Z             }
2026-06-09T09:52:59.0223942Z           ]
2026-06-09T09:52:59.0224099Z         }
2026-06-09T09:52:59.0224252Z       }
2026-06-09T09:52:59.0224404Z     },
2026-06-09T09:52:59.0224562Z     {
2026-06-09T09:52:59.0224734Z       "id": "REQ-DAEMON-2",
2026-06-09T09:52:59.0224995Z       "title": "Broker/brain split for seamless self-update",
2026-06-09T09:52:59.0225283Z       "requiredStages": [
2026-06-09T09:52:59.0225512Z         "impl",
2026-06-09T09:52:59.0225688Z         "unit",
2026-06-09T09:52:59.0225860Z         "int"
2026-06-09T09:52:59.0226031Z       ],
2026-06-09T09:52:59.0226209Z       "stages": {
2026-06-09T09:52:59.0226390Z         "doc": {
2026-06-09T09:52:59.0226589Z           "complete": false,
2026-06-09T09:52:59.0226814Z           "evidence": []
2026-06-09T09:52:59.0227024Z         },
2026-06-09T09:52:59.0227180Z         "impl": {
2026-06-09T09:52:59.0227353Z           "complete": true,
2026-06-09T09:52:59.0227548Z           "evidence": [
2026-06-09T09:52:59.0227730Z             {
2026-06-09T09:52:59.0227928Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-09T09:52:59.0228172Z               "line": 23
2026-06-09T09:52:59.0228363Z             },
2026-06-09T09:52:59.0228529Z             {
2026-06-09T09:52:59.0228715Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-09T09:52:59.0229040Z               "line": 531
2026-06-09T09:52:59.0229264Z             },
2026-06-09T09:52:59.0229426Z             {
2026-06-09T09:52:59.0229618Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-09T09:52:59.0229855Z               "line": 684
2026-06-09T09:52:59.0230059Z             },
2026-06-09T09:52:59.0230225Z             {
2026-06-09T09:52:59.0230428Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-09T09:52:59.0230691Z               "line": 32
2026-06-09T09:52:59.0230877Z             },
2026-06-09T09:52:59.0231048Z             {
2026-06-09T09:52:59.0231240Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-09T09:52:59.0231492Z               "line": 195
2026-06-09T09:52:59.0231664Z             },
2026-06-09T09:52:59.0231831Z             {
2026-06-09T09:52:59.0232016Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-09T09:52:59.0232255Z               "line": 565
2026-06-09T09:52:59.0232432Z             },
2026-06-09T09:52:59.0232602Z             {
2026-06-09T09:52:59.0232800Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-09T09:52:59.0233035Z               "line": 807
2026-06-09T09:52:59.0233211Z             },
2026-06-09T09:52:59.0233371Z             {
2026-06-09T09:52:59.0233563Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-09T09:52:59.0233802Z               "line": 11
2026-06-09T09:52:59.0233977Z             },
2026-06-09T09:52:59.0234064Z             {
2026-06-09T09:52:59.0234178Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-09T09:52:59.0234273Z               "line": 146
2026-06-09T09:52:59.0234359Z             },
2026-06-09T09:52:59.0234474Z             {
2026-06-09T09:52:59.0234588Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-09T09:52:59.0234683Z               "line": 235
2026-06-09T09:52:59.0234774Z             },
2026-06-09T09:52:59.0234859Z             {
2026-06-09T09:52:59.0234979Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-09T09:52:59.0235070Z               "line": 13
2026-06-09T09:52:59.0235160Z             },
2026-06-09T09:52:59.0235428Z             {
2026-06-09T09:52:59.0235569Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-09T09:52:59.0235678Z               "line": 27
2026-06-09T09:52:59.0235759Z             },
2026-06-09T09:52:59.0235848Z             {
2026-06-09T09:52:59.0235967Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-09T09:52:59.0236191Z               "line": 109
2026-06-09T09:52:59.0236267Z             },
2026-06-09T09:52:59.0236359Z             {
2026-06-09T09:52:59.0236477Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-09T09:52:59.0236563Z               "line": 447
2026-06-09T09:52:59.0236650Z             },
2026-06-09T09:52:59.0236725Z             {
2026-06-09T09:52:59.0236844Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-09T09:52:59.0236936Z               "line": 614
2026-06-09T09:52:59.0237026Z             },
2026-06-09T09:52:59.0237107Z             {
2026-06-09T09:52:59.0237225Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-09T09:52:59.0237318Z               "line": 715
2026-06-09T09:52:59.0237397Z             },
2026-06-09T09:52:59.0237478Z             {
2026-06-09T09:52:59.0237589Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-09T09:52:59.0237679Z               "line": 764
2026-06-09T09:52:59.0237760Z             },
2026-06-09T09:52:59.0237846Z             {
2026-06-09T09:52:59.0237962Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-09T09:52:59.0238045Z               "line": 812
2026-06-09T09:52:59.0238132Z             },
2026-06-09T09:52:59.0238210Z             {
2026-06-09T09:52:59.0238337Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-09T09:52:59.0238422Z               "line": 10
2026-06-09T09:52:59.0238502Z             }
2026-06-09T09:52:59.0238589Z           ]
2026-06-09T09:52:59.0238670Z         },
2026-06-09T09:52:59.0238765Z         "int": {
2026-06-09T09:52:59.0238880Z           "complete": true,
2026-06-09T09:52:59.0239060Z           "evidence": [
2026-06-09T09:52:59.0239151Z             {
2026-06-09T09:52:59.0239271Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-09T09:52:59.0239352Z               "line": 17
2026-06-09T09:52:59.0239432Z             },
2026-06-09T09:52:59.0239514Z             {
2026-06-09T09:52:59.0239638Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-09T09:52:59.0239728Z               "line": 33
2026-06-09T09:52:59.0239810Z             },
2026-06-09T09:52:59.0239886Z             {
2026-06-09T09:52:59.0240005Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-09T09:52:59.0240085Z               "line": 19
2026-06-09T09:52:59.0240168Z             },
2026-06-09T09:52:59.0240253Z             {
2026-06-09T09:52:59.0240372Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-09T09:52:59.0240463Z               "line": 71
2026-06-09T09:52:59.0240539Z             },
2026-06-09T09:52:59.0240619Z             {
2026-06-09T09:52:59.0240733Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-09T09:52:59.0240819Z               "line": 91
2026-06-09T09:52:59.0240904Z             },
2026-06-09T09:52:59.0240984Z             {
2026-06-09T09:52:59.0241103Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-09T09:52:59.0241185Z               "line": 167
2026-06-09T09:52:59.0241270Z             },
2026-06-09T09:52:59.0241350Z             {
2026-06-09T09:52:59.0241470Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-09T09:52:59.0241561Z               "line": 209
2026-06-09T09:52:59.0241637Z             },
2026-06-09T09:52:59.0241718Z             {
2026-06-09T09:52:59.0241838Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-09T09:52:59.0241923Z               "line": 128
2026-06-09T09:52:59.0241994Z             }
2026-06-09T09:52:59.0242077Z           ]
2026-06-09T09:52:59.0242162Z         },
2026-06-09T09:52:59.0242238Z         "unit": {
2026-06-09T09:52:59.0242458Z           "complete": true,
2026-06-09T09:52:59.0242548Z           "evidence": [
2026-06-09T09:52:59.0242633Z             {
2026-06-09T09:52:59.0242744Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-09T09:52:59.0242829Z               "line": 62
2026-06-09T09:52:59.0242920Z             },
2026-06-09T09:52:59.0243001Z             {
2026-06-09T09:52:59.0243111Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-09T09:52:59.0243307Z               "line": 76
2026-06-09T09:52:59.0243393Z             },
2026-06-09T09:52:59.0243468Z             {
2026-06-09T09:52:59.0243581Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-09T09:52:59.0243672Z               "line": 88
2026-06-09T09:52:59.0243752Z             },
2026-06-09T09:52:59.0243832Z             {
2026-06-09T09:52:59.0243941Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-09T09:52:59.0244032Z               "line": 294
2026-06-09T09:52:59.0244109Z             },
2026-06-09T09:52:59.0244194Z             {
2026-06-09T09:52:59.0244299Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-09T09:52:59.0244386Z               "line": 583
2026-06-09T09:52:59.0244471Z             },
2026-06-09T09:52:59.0244546Z             {
2026-06-09T09:52:59.0244657Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-09T09:52:59.0244738Z               "line": 591
2026-06-09T09:52:59.0244828Z             },
2026-06-09T09:52:59.0244909Z             {
2026-06-09T09:52:59.0245015Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-09T09:52:59.0245105Z               "line": 608
2026-06-09T09:52:59.0245181Z             },
2026-06-09T09:52:59.0245268Z             {
2026-06-09T09:52:59.0245372Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-09T09:52:59.0245463Z               "line": 662
2026-06-09T09:52:59.0245544Z             },
2026-06-09T09:52:59.0245625Z             {
2026-06-09T09:52:59.0245739Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-09T09:52:59.0245829Z               "line": 883
2026-06-09T09:52:59.0245917Z             },
2026-06-09T09:52:59.0245998Z             {
2026-06-09T09:52:59.0246110Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-09T09:52:59.0246200Z               "line": 895
2026-06-09T09:52:59.0246281Z             },
2026-06-09T09:52:59.0246366Z             {
2026-06-09T09:52:59.0246479Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-09T09:52:59.0246570Z               "line": 110
2026-06-09T09:52:59.0246652Z             }
2026-06-09T09:52:59.0246732Z           ]
2026-06-09T09:52:59.0246818Z         }
2026-06-09T09:52:59.0246895Z       }
2026-06-09T09:52:59.0246985Z     },
2026-06-09T09:52:59.0247066Z     {
2026-06-09T09:52:59.0247156Z       "id": "REQ-DAEMON-3",
2026-06-09T09:52:59.0247319Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-09T09:52:59.0247409Z       "requiredStages": [
2026-06-09T09:52:59.0247496Z         "impl",
2026-06-09T09:52:59.0247577Z         "unit",
2026-06-09T09:52:59.0247662Z         "int"
2026-06-09T09:52:59.0247743Z       ],
2026-06-09T09:52:59.0247834Z       "stages": {
2026-06-09T09:52:59.0247915Z         "doc": {
2026-06-09T09:52:59.0248006Z           "complete": false,
2026-06-09T09:52:59.0248096Z           "evidence": []
2026-06-09T09:52:59.0248178Z         },
2026-06-09T09:52:59.0248263Z         "impl": {
2026-06-09T09:52:59.0248353Z           "complete": true,
2026-06-09T09:52:59.0248440Z           "evidence": [
2026-06-09T09:52:59.0248527Z             {
2026-06-09T09:52:59.0248634Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-09T09:52:59.0248726Z               "line": 14
2026-06-09T09:52:59.0248808Z             },
2026-06-09T09:52:59.0248897Z             {
2026-06-09T09:52:59.0249110Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-09T09:52:59.0249207Z               "line": 11
2026-06-09T09:52:59.0249296Z             },
2026-06-09T09:52:59.0249377Z             {
2026-06-09T09:52:59.0249597Z               "path": "crates/spt/src/api/mod.rs",
2026-06-09T09:52:59.0249687Z               "line": 247
2026-06-09T09:52:59.0249774Z             },
2026-06-09T09:52:59.0249855Z             {
2026-06-09T09:52:59.0249959Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0250055Z               "line": 1271
2026-06-09T09:52:59.0250136Z             },
2026-06-09T09:52:59.0250222Z             {
2026-06-09T09:52:59.0250447Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0250536Z               "line": 3087
2026-06-09T09:52:59.0250617Z             },
2026-06-09T09:52:59.0250704Z             {
2026-06-09T09:52:59.0250808Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0250889Z               "line": 3108
2026-06-09T09:52:59.0250975Z             }
2026-06-09T09:52:59.0251062Z           ]
2026-06-09T09:52:59.0251133Z         },
2026-06-09T09:52:59.0251217Z         "int": {
2026-06-09T09:52:59.0251317Z           "complete": true,
2026-06-09T09:52:59.0251403Z           "evidence": [
2026-06-09T09:52:59.0251487Z             {
2026-06-09T09:52:59.0251605Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-09T09:52:59.0251692Z               "line": 46
2026-06-09T09:52:59.0251774Z             },
2026-06-09T09:52:59.0251854Z             {
2026-06-09T09:52:59.0252040Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-09T09:52:59.0252239Z               "line": 435
2026-06-09T09:52:59.0252402Z             }
2026-06-09T09:52:59.0252502Z           ]
2026-06-09T09:52:59.0252661Z         },
2026-06-09T09:52:59.0252812Z         "unit": {
2026-06-09T09:52:59.0252975Z           "complete": true,
2026-06-09T09:52:59.0253141Z           "evidence": [
2026-06-09T09:52:59.0253251Z             {
2026-06-09T09:52:59.0253441Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-09T09:52:59.0253557Z               "line": 746
2026-06-09T09:52:59.0253722Z             },
2026-06-09T09:52:59.0253876Z             {
2026-06-09T09:52:59.0254019Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0254170Z               "line": 7561
2026-06-09T09:52:59.0254279Z             }
2026-06-09T09:52:59.0254449Z           ]
2026-06-09T09:52:59.0254602Z         }
2026-06-09T09:52:59.0254735Z       }
2026-06-09T09:52:59.0254874Z     },
2026-06-09T09:52:59.0254983Z     {
2026-06-09T09:52:59.0255169Z       "id": "REQ-DAEMON-4",
2026-06-09T09:52:59.0255337Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-09T09:52:59.0255503Z       "requiredStages": [
2026-06-09T09:52:59.0255650Z         "impl",
2026-06-09T09:52:59.0255770Z         "unit",
2026-06-09T09:52:59.0255937Z         "int"
2026-06-09T09:52:59.0256060Z       ],
2026-06-09T09:52:59.0256233Z       "stages": {
2026-06-09T09:52:59.0256342Z         "doc": {
2026-06-09T09:52:59.0256491Z           "complete": false,
2026-06-09T09:52:59.0256660Z           "evidence": []
2026-06-09T09:52:59.0256799Z         },
2026-06-09T09:52:59.0256945Z         "impl": {
2026-06-09T09:52:59.0257058Z           "complete": true,
2026-06-09T09:52:59.0257207Z           "evidence": [
2026-06-09T09:52:59.0257302Z             {
2026-06-09T09:52:59.0257550Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.0257702Z               "line": 371
2026-06-09T09:52:59.0257808Z             },
2026-06-09T09:52:59.0257945Z             {
2026-06-09T09:52:59.0258071Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.0258293Z               "line": 436
2026-06-09T09:52:59.0258438Z             },
2026-06-09T09:52:59.0258547Z             {
2026-06-09T09:52:59.0258719Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.0258823Z               "line": 458
2026-06-09T09:52:59.0259133Z             }
2026-06-09T09:52:59.0259247Z           ]
2026-06-09T09:52:59.0259382Z         },
2026-06-09T09:52:59.0259527Z         "int": {
2026-06-09T09:52:59.0259632Z           "complete": true,
2026-06-09T09:52:59.0259847Z           "evidence": [
2026-06-09T09:52:59.0259956Z             {
2026-06-09T09:52:59.0260266Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-09T09:52:59.0260386Z               "line": 34
2026-06-09T09:52:59.0260528Z             }
2026-06-09T09:52:59.0260729Z           ]
2026-06-09T09:52:59.0260838Z         },
2026-06-09T09:52:59.0260978Z         "unit": {
2026-06-09T09:52:59.0261111Z           "complete": true,
2026-06-09T09:52:59.0261345Z           "evidence": [
2026-06-09T09:52:59.0261501Z             {
2026-06-09T09:52:59.0261702Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-09T09:52:59.0261867Z               "line": 428
2026-06-09T09:52:59.0261973Z             },
2026-06-09T09:52:59.0262099Z             {
2026-06-09T09:52:59.0262285Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.0262447Z               "line": 784
2026-06-09T09:52:59.0262600Z             },
2026-06-09T09:52:59.0262705Z             {
2026-06-09T09:52:59.0262867Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.0263020Z               "line": 854
2026-06-09T09:52:59.0263172Z             },
2026-06-09T09:52:59.0263296Z             {
2026-06-09T09:52:59.0263477Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.0263606Z               "line": 884
2026-06-09T09:52:59.0263749Z             },
2026-06-09T09:52:59.0263916Z             {
2026-06-09T09:52:59.0264064Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.0264212Z               "line": 917
2026-06-09T09:52:59.0264335Z             }
2026-06-09T09:52:59.0264480Z           ]
2026-06-09T09:52:59.0264649Z         }
2026-06-09T09:52:59.0264759Z       }
2026-06-09T09:52:59.0264896Z     },
2026-06-09T09:52:59.0265047Z     {
2026-06-09T09:52:59.0265229Z       "id": "REQ-DAEMON-5",
2026-06-09T09:52:59.0266798Z       "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-09T09:52:59.0266926Z       "requiredStages": [
2026-06-09T09:52:59.0267070Z         "impl",
2026-06-09T09:52:59.0267178Z         "unit"
2026-06-09T09:52:59.0267359Z       ],
2026-06-09T09:52:59.0267529Z       "stages": {
2026-06-09T09:52:59.0267637Z         "doc": {
2026-06-09T09:52:59.0267787Z           "complete": false,
2026-06-09T09:52:59.0267899Z           "evidence": []
2026-06-09T09:52:59.0268063Z         },
2026-06-09T09:52:59.0268238Z         "impl": {
2026-06-09T09:52:59.0268363Z           "complete": true,
2026-06-09T09:52:59.0268510Z           "evidence": [
2026-06-09T09:52:59.0268621Z             {
2026-06-09T09:52:59.0268844Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.0269040Z               "line": 323
2026-06-09T09:52:59.0269211Z             },
2026-06-09T09:52:59.0269350Z             {
2026-06-09T09:52:59.0269502Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.0269689Z               "line": 724
2026-06-09T09:52:59.0269812Z             },
2026-06-09T09:52:59.0269947Z             {
2026-06-09T09:52:59.0270088Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.0270240Z               "line": 737
2026-06-09T09:52:59.0270421Z             },
2026-06-09T09:52:59.0270541Z             {
2026-06-09T09:52:59.0270718Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.0270826Z               "line": 755
2026-06-09T09:52:59.0270979Z             },
2026-06-09T09:52:59.0271141Z             {
2026-06-09T09:52:59.0271294Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.0271442Z               "line": 796
2026-06-09T09:52:59.0271548Z             }
2026-06-09T09:52:59.0271699Z           ]
2026-06-09T09:52:59.0271795Z         },
2026-06-09T09:52:59.0272091Z         "int": {
2026-06-09T09:52:59.0272248Z           "complete": false,
2026-06-09T09:52:59.0272380Z           "evidence": []
2026-06-09T09:52:59.0272519Z         },
2026-06-09T09:52:59.0272617Z         "unit": {
2026-06-09T09:52:59.0272817Z           "complete": true,
2026-06-09T09:52:59.0272931Z           "evidence": [
2026-06-09T09:52:59.0273184Z             {
2026-06-09T09:52:59.0273360Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.0273471Z               "line": 916
2026-06-09T09:52:59.0273660Z             },
2026-06-09T09:52:59.0273781Z             {
2026-06-09T09:52:59.0273956Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.0274100Z               "line": 940
2026-06-09T09:52:59.0274194Z             },
2026-06-09T09:52:59.0274396Z             {
2026-06-09T09:52:59.0274552Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.0274696Z               "line": 966
2026-06-09T09:52:59.0274814Z             }
2026-06-09T09:52:59.0274939Z           ]
2026-06-09T09:52:59.0275143Z         }
2026-06-09T09:52:59.0275319Z       }
2026-06-09T09:52:59.0275460Z     },
2026-06-09T09:52:59.0275569Z     {
2026-06-09T09:52:59.0275703Z       "id": "REQ-DAEMON-6",
2026-06-09T09:52:59.0277943Z       "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-09T09:52:59.0278079Z       "requiredStages": [
2026-06-09T09:52:59.0278236Z         "impl",
2026-06-09T09:52:59.0278347Z         "unit"
2026-06-09T09:52:59.0278474Z       ],
2026-06-09T09:52:59.0278690Z       "stages": {
2026-06-09T09:52:59.0278803Z         "doc": {
2026-06-09T09:52:59.0279052Z           "complete": false,
2026-06-09T09:52:59.0279186Z           "evidence": []
2026-06-09T09:52:59.0279314Z         },
2026-06-09T09:52:59.0279553Z         "impl": {
2026-06-09T09:52:59.0279676Z           "complete": true,
2026-06-09T09:52:59.0279825Z           "evidence": [
2026-06-09T09:52:59.0279934Z             {
2026-06-09T09:52:59.0280101Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-09T09:52:59.0280272Z               "line": 405
2026-06-09T09:52:59.0280540Z             },
2026-06-09T09:52:59.0280681Z             {
2026-06-09T09:52:59.0280824Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-09T09:52:59.0280977Z               "line": 436
2026-06-09T09:52:59.0281120Z             },
2026-06-09T09:52:59.0281278Z             {
2026-06-09T09:52:59.0281435Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-09T09:52:59.0281588Z               "line": 55
2026-06-09T09:52:59.0281725Z             },
2026-06-09T09:52:59.0281878Z             {
2026-06-09T09:52:59.0282075Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-09T09:52:59.0282193Z               "line": 70
2026-06-09T09:52:59.0282336Z             },
2026-06-09T09:52:59.0282480Z             {
2026-06-09T09:52:59.0282646Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0282809Z               "line": 1308
2026-06-09T09:52:59.0282917Z             },
2026-06-09T09:52:59.0283064Z             {
2026-06-09T09:52:59.0283177Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0283348Z               "line": 1334
2026-06-09T09:52:59.0283501Z             }
2026-06-09T09:52:59.0283615Z           ]
2026-06-09T09:52:59.0283773Z         },
2026-06-09T09:52:59.0283882Z         "int": {
2026-06-09T09:52:59.0284050Z           "complete": false,
2026-06-09T09:52:59.0284283Z           "evidence": []
2026-06-09T09:52:59.0284445Z         },
2026-06-09T09:52:59.0284592Z         "unit": {
2026-06-09T09:52:59.0284712Z           "complete": true,
2026-06-09T09:52:59.0284888Z           "evidence": [
2026-06-09T09:52:59.0285009Z             {
2026-06-09T09:52:59.0285203Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-09T09:52:59.0285417Z               "line": 288
2026-06-09T09:52:59.0285562Z             },
2026-06-09T09:52:59.0285727Z             {
2026-06-09T09:52:59.0285898Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-09T09:52:59.0286044Z               "line": 299
2026-06-09T09:52:59.0286153Z             },
2026-06-09T09:52:59.0286530Z             {
2026-06-09T09:52:59.0286725Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-09T09:52:59.0286869Z               "line": 325
2026-06-09T09:52:59.0287007Z             },
2026-06-09T09:52:59.0287121Z             {
2026-06-09T09:52:59.0287297Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-09T09:52:59.0287398Z               "line": 346
2026-06-09T09:52:59.0287608Z             }
2026-06-09T09:52:59.0287746Z           ]
2026-06-09T09:52:59.0287857Z         }
2026-06-09T09:52:59.0287993Z       }
2026-06-09T09:52:59.0288089Z     },
2026-06-09T09:52:59.0288303Z     {
2026-06-09T09:52:59.0288426Z       "id": "REQ-DAEMON-7",
2026-06-09T09:52:59.0290017Z       "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-09T09:52:59.0290175Z       "requiredStages": [
2026-06-09T09:52:59.0290274Z         "impl",
2026-06-09T09:52:59.0290484Z         "unit"
2026-06-09T09:52:59.0290636Z       ],
2026-06-09T09:52:59.0290747Z       "stages": {
2026-06-09T09:52:59.0290889Z         "doc": {
2026-06-09T09:52:59.0291010Z           "complete": false,
2026-06-09T09:52:59.0291213Z           "evidence": []
2026-06-09T09:52:59.0291322Z         },
2026-06-09T09:52:59.0291467Z         "impl": {
2026-06-09T09:52:59.0291628Z           "complete": true,
2026-06-09T09:52:59.0291738Z           "evidence": [
2026-06-09T09:52:59.0291923Z             {
2026-06-09T09:52:59.0292067Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-09T09:52:59.0292213Z               "line": 455
2026-06-09T09:52:59.0292363Z             },
2026-06-09T09:52:59.0292447Z             {
2026-06-09T09:52:59.0292668Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-09T09:52:59.0292776Z               "line": 601
2026-06-09T09:52:59.0292915Z             },
2026-06-09T09:52:59.0293040Z             {
2026-06-09T09:52:59.0293206Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-09T09:52:59.0293406Z               "line": 89
2026-06-09T09:52:59.0293505Z             },
2026-06-09T09:52:59.0293648Z             {
2026-06-09T09:52:59.0293794Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0293927Z               "line": 1272
2026-06-09T09:52:59.0294080Z             }
2026-06-09T09:52:59.0294233Z           ]
2026-06-09T09:52:59.0294395Z         },
2026-06-09T09:52:59.0294504Z         "int": {
2026-06-09T09:52:59.0294643Z           "complete": false,
2026-06-09T09:52:59.0294790Z           "evidence": []
2026-06-09T09:52:59.0294948Z         },
2026-06-09T09:52:59.0295062Z         "unit": {
2026-06-09T09:52:59.0295225Z           "complete": true,
2026-06-09T09:52:59.0295358Z           "evidence": [
2026-06-09T09:52:59.0295507Z             {
2026-06-09T09:52:59.0295692Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-09T09:52:59.0295822Z               "line": 314
2026-06-09T09:52:59.0295958Z             },
2026-06-09T09:52:59.0296198Z             {
2026-06-09T09:52:59.0296373Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0296558Z               "line": 5450
2026-06-09T09:52:59.0296666Z             }
2026-06-09T09:52:59.0296804Z           ]
2026-06-09T09:52:59.0296915Z         }
2026-06-09T09:52:59.0297085Z       }
2026-06-09T09:52:59.0297253Z     },
2026-06-09T09:52:59.0297362Z     {
2026-06-09T09:52:59.0297623Z       "id": "REQ-DAEMON-8",
2026-06-09T09:52:59.0298611Z       "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-09T09:52:59.0298816Z       "requiredStages": [
2026-06-09T09:52:59.0299073Z         "impl",
2026-06-09T09:52:59.0299189Z         "unit"
2026-06-09T09:52:59.0299332Z       ],
2026-06-09T09:52:59.0299443Z       "stages": {
2026-06-09T09:52:59.0299647Z         "doc": {
2026-06-09T09:52:59.0299781Z           "complete": false,
2026-06-09T09:52:59.0299933Z           "evidence": []
2026-06-09T09:52:59.0300077Z         },
2026-06-09T09:52:59.0300190Z         "impl": {
2026-06-09T09:52:59.0300377Z           "complete": true,
2026-06-09T09:52:59.0300505Z           "evidence": [
2026-06-09T09:52:59.0301096Z             {
2026-06-09T09:52:59.0301294Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-09T09:52:59.0301425Z               "line": 355
2026-06-09T09:52:59.0301599Z             },
2026-06-09T09:52:59.0301721Z             {
2026-06-09T09:52:59.0301896Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-09T09:52:59.0302007Z               "line": 56
2026-06-09T09:52:59.0302163Z             }
2026-06-09T09:52:59.0302327Z           ]
2026-06-09T09:52:59.0302450Z         },
2026-06-09T09:52:59.0302589Z         "int": {
2026-06-09T09:52:59.0302708Z           "complete": false,
2026-06-09T09:52:59.0302880Z           "evidence": []
2026-06-09T09:52:59.0307413Z         },
2026-06-09T09:52:59.0307540Z         "unit": {
2026-06-09T09:52:59.0307640Z           "complete": true,
2026-06-09T09:52:59.0307737Z           "evidence": [
2026-06-09T09:52:59.0307822Z             {
2026-06-09T09:52:59.0307960Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-09T09:52:59.0308052Z               "line": 288
2026-06-09T09:52:59.0308151Z             },
2026-06-09T09:52:59.0308241Z             {
2026-06-09T09:52:59.0308371Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-09T09:52:59.0308466Z               "line": 325
2026-06-09T09:52:59.0308546Z             }
2026-06-09T09:52:59.0308638Z           ]
2026-06-09T09:52:59.0308719Z         }
2026-06-09T09:52:59.0308809Z       }
2026-06-09T09:52:59.0308899Z     },
2026-06-09T09:52:59.0309057Z     {
2026-06-09T09:52:59.0309176Z       "id": "REQ-DAEMON-9",
2026-06-09T09:52:59.0315386Z       "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-09T09:52:59.0315515Z       "requiredStages": [
2026-06-09T09:52:59.0315605Z         "impl",
2026-06-09T09:52:59.0315697Z         "unit"
2026-06-09T09:52:59.0315777Z       ],
2026-06-09T09:52:59.0315868Z       "stages": {
2026-06-09T09:52:59.0315949Z         "doc": {
2026-06-09T09:52:59.0316220Z           "complete": false,
2026-06-09T09:52:59.0316317Z           "evidence": []
2026-06-09T09:52:59.0316402Z         },
2026-06-09T09:52:59.0316492Z         "impl": {
2026-06-09T09:52:59.0316583Z           "complete": true,
2026-06-09T09:52:59.0316679Z           "evidence": [
2026-06-09T09:52:59.0316759Z             {
2026-06-09T09:52:59.0316893Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-09T09:52:59.0317088Z               "line": 220
2026-06-09T09:52:59.0317174Z             },
2026-06-09T09:52:59.0317261Z             {
2026-06-09T09:52:59.0317380Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-09T09:52:59.0317473Z               "line": 183
2026-06-09T09:52:59.0317559Z             },
2026-06-09T09:52:59.0317645Z             {
2026-06-09T09:52:59.0317758Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-09T09:52:59.0317852Z               "line": 236
2026-06-09T09:52:59.0317938Z             },
2026-06-09T09:52:59.0318015Z             {
2026-06-09T09:52:59.0318133Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-09T09:52:59.0318220Z               "line": 269
2026-06-09T09:52:59.0318302Z             },
2026-06-09T09:52:59.0318383Z             {
2026-06-09T09:52:59.0318501Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-09T09:52:59.0318588Z               "line": 290
2026-06-09T09:52:59.0318673Z             },
2026-06-09T09:52:59.0318763Z             {
2026-06-09T09:52:59.0318869Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0319097Z               "line": 1363
2026-06-09T09:52:59.0319213Z             }
2026-06-09T09:52:59.0319302Z           ]
2026-06-09T09:52:59.0319393Z         },
2026-06-09T09:52:59.0319469Z         "int": {
2026-06-09T09:52:59.0319570Z           "complete": false,
2026-06-09T09:52:59.0319659Z           "evidence": []
2026-06-09T09:52:59.0319750Z         },
2026-06-09T09:52:59.0319833Z         "unit": {
2026-06-09T09:52:59.0319927Z           "complete": true,
2026-06-09T09:52:59.0320026Z           "evidence": [
2026-06-09T09:52:59.0320106Z             {
2026-06-09T09:52:59.0320231Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-09T09:52:59.0320314Z               "line": 702
2026-06-09T09:52:59.0320400Z             },
2026-06-09T09:52:59.0320481Z             {
2026-06-09T09:52:59.0320588Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0320691Z               "line": 7426
2026-06-09T09:52:59.0320772Z             }
2026-06-09T09:52:59.0320854Z           ]
2026-06-09T09:52:59.0320935Z         }
2026-06-09T09:52:59.0321025Z       }
2026-06-09T09:52:59.0321106Z     },
2026-06-09T09:52:59.0321187Z     {
2026-06-09T09:52:59.0321287Z       "id": "REQ-DOCS-1",
2026-06-09T09:52:59.0321488Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-09T09:52:59.0321588Z       "requiredStages": [
2026-06-09T09:52:59.0321673Z         "doc",
2026-06-09T09:52:59.0321760Z         "impl"
2026-06-09T09:52:59.0321845Z       ],
2026-06-09T09:52:59.0321945Z       "stages": {
2026-06-09T09:52:59.0322031Z         "doc": {
2026-06-09T09:52:59.0322123Z           "complete": true,
2026-06-09T09:52:59.0322216Z           "evidence": [
2026-06-09T09:52:59.0322298Z             {
2026-06-09T09:52:59.0322409Z               "path": "docs-site/src/index.md",
2026-06-09T09:52:59.0322498Z               "line": 50
2026-06-09T09:52:59.0322589Z             }
2026-06-09T09:52:59.0322676Z           ]
2026-06-09T09:52:59.0322757Z         },
2026-06-09T09:52:59.0322846Z         "impl": {
2026-06-09T09:52:59.0322936Z           "complete": true,
2026-06-09T09:52:59.0323021Z           "evidence": [
2026-06-09T09:52:59.0323104Z             {
2026-06-09T09:52:59.0323236Z               "path": ".github/workflows/docs-publish.yml",
2026-06-09T09:52:59.0323332Z               "line": 12
2026-06-09T09:52:59.0323418Z             },
2026-06-09T09:52:59.0323504Z             {
2026-06-09T09:52:59.0323607Z               "path": "crates/xtask/src/main.rs",
2026-06-09T09:52:59.0323809Z               "line": 14
2026-06-09T09:52:59.0323899Z             }
2026-06-09T09:52:59.0323985Z           ]
2026-06-09T09:52:59.0324066Z         },
2026-06-09T09:52:59.0324147Z         "int": {
2026-06-09T09:52:59.0324247Z           "complete": false,
2026-06-09T09:52:59.0324329Z           "evidence": []
2026-06-09T09:52:59.0324419Z         },
2026-06-09T09:52:59.0324591Z         "unit": {
2026-06-09T09:52:59.0324687Z           "complete": false,
2026-06-09T09:52:59.0324781Z           "evidence": []
2026-06-09T09:52:59.0324862Z         }
2026-06-09T09:52:59.0324944Z       }
2026-06-09T09:52:59.0325025Z     },
2026-06-09T09:52:59.0325115Z     {
2026-06-09T09:52:59.0325205Z       "id": "REQ-DOCS-2",
2026-06-09T09:52:59.0325371Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-09T09:52:59.0325465Z       "requiredStages": [
2026-06-09T09:52:59.0325545Z         "doc",
2026-06-09T09:52:59.0325631Z         "int"
2026-06-09T09:52:59.0325709Z       ],
2026-06-09T09:52:59.0325807Z       "stages": {
2026-06-09T09:52:59.0325889Z         "doc": {
2026-06-09T09:52:59.0326000Z           "complete": true,
2026-06-09T09:52:59.0326108Z           "evidence": [
2026-06-09T09:52:59.0326189Z             {
2026-06-09T09:52:59.0326319Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-09T09:52:59.0326404Z               "line": 3
2026-06-09T09:52:59.0326494Z             },
2026-06-09T09:52:59.0326576Z             {
2026-06-09T09:52:59.0326709Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-09T09:52:59.0326794Z               "line": 3
2026-06-09T09:52:59.0326877Z             }
2026-06-09T09:52:59.0326962Z           ]
2026-06-09T09:52:59.0327043Z         },
2026-06-09T09:52:59.0327128Z         "impl": {
2026-06-09T09:52:59.0327220Z           "complete": false,
2026-06-09T09:52:59.0327315Z           "evidence": []
2026-06-09T09:52:59.0327396Z         },
2026-06-09T09:52:59.0327477Z         "int": {
2026-06-09T09:52:59.0327573Z           "complete": true,
2026-06-09T09:52:59.0327663Z           "evidence": [
2026-06-09T09:52:59.0327748Z             {
2026-06-09T09:52:59.0327869Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-09T09:52:59.0327963Z               "line": 14
2026-06-09T09:52:59.0328048Z             }
2026-06-09T09:52:59.0328129Z           ]
2026-06-09T09:52:59.0328215Z         },
2026-06-09T09:52:59.0328299Z         "unit": {
2026-06-09T09:52:59.0328398Z           "complete": false,
2026-06-09T09:52:59.0328485Z           "evidence": []
2026-06-09T09:52:59.0328570Z         }
2026-06-09T09:52:59.0328656Z       }
2026-06-09T09:52:59.0328742Z     },
2026-06-09T09:52:59.0328828Z     {
2026-06-09T09:52:59.0328919Z       "id": "REQ-DOCS-3",
2026-06-09T09:52:59.0329351Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-09T09:52:59.0329448Z       "requiredStages": [
2026-06-09T09:52:59.0329534Z         "doc"
2026-06-09T09:52:59.0329619Z       ],
2026-06-09T09:52:59.0329705Z       "stages": {
2026-06-09T09:52:59.0329801Z         "doc": {
2026-06-09T09:52:59.0329890Z           "complete": true,
2026-06-09T09:52:59.0329986Z           "evidence": [
2026-06-09T09:52:59.0330073Z             {
2026-06-09T09:52:59.0330187Z               "path": "docs-site/src/index.md",
2026-06-09T09:52:59.0330277Z               "line": 42
2026-06-09T09:52:59.0330359Z             }
2026-06-09T09:52:59.0330445Z           ]
2026-06-09T09:52:59.0330543Z         },
2026-06-09T09:52:59.0330638Z         "impl": {
2026-06-09T09:52:59.0330724Z           "complete": false,
2026-06-09T09:52:59.0330819Z           "evidence": []
2026-06-09T09:52:59.0330908Z         },
2026-06-09T09:52:59.0330988Z         "int": {
2026-06-09T09:52:59.0331090Z           "complete": false,
2026-06-09T09:52:59.0331176Z           "evidence": []
2026-06-09T09:52:59.0331265Z         },
2026-06-09T09:52:59.0331352Z         "unit": {
2026-06-09T09:52:59.0331447Z           "complete": false,
2026-06-09T09:52:59.0331537Z           "evidence": []
2026-06-09T09:52:59.0331618Z         }
2026-06-09T09:52:59.0331815Z       }
2026-06-09T09:52:59.0331899Z     },
2026-06-09T09:52:59.0331986Z     {
2026-06-09T09:52:59.0332077Z       "id": "REQ-DOCS-4",
2026-06-09T09:52:59.0332276Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-09T09:52:59.0332373Z       "requiredStages": [
2026-06-09T09:52:59.0332453Z         "doc",
2026-06-09T09:52:59.0332635Z         "impl",
2026-06-09T09:52:59.0332720Z         "unit"
2026-06-09T09:52:59.0332806Z       ],
2026-06-09T09:52:59.0332892Z       "stages": {
2026-06-09T09:52:59.0332984Z         "doc": {
2026-06-09T09:52:59.0333072Z           "complete": true,
2026-06-09T09:52:59.0333168Z           "evidence": [
2026-06-09T09:52:59.0333251Z             {
2026-06-09T09:52:59.0333364Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-09T09:52:59.0333453Z               "line": 35
2026-06-09T09:52:59.0333533Z             }
2026-06-09T09:52:59.0333620Z           ]
2026-06-09T09:52:59.0333698Z         },
2026-06-09T09:52:59.0333791Z         "impl": {
2026-06-09T09:52:59.0333887Z           "complete": true,
2026-06-09T09:52:59.0333978Z           "evidence": [
2026-06-09T09:52:59.0334064Z             {
2026-06-09T09:52:59.0334187Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-09T09:52:59.0334284Z               "line": 522
2026-06-09T09:52:59.0334374Z             },
2026-06-09T09:52:59.0334459Z             {
2026-06-09T09:52:59.0334570Z               "path": "crates/xtask/src/main.rs",
2026-06-09T09:52:59.0334655Z               "line": 15
2026-06-09T09:52:59.0334740Z             }
2026-06-09T09:52:59.0334821Z           ]
2026-06-09T09:52:59.0334909Z         },
2026-06-09T09:52:59.0334998Z         "int": {
2026-06-09T09:52:59.0335089Z           "complete": false,
2026-06-09T09:52:59.0335180Z           "evidence": []
2026-06-09T09:52:59.0335261Z         },
2026-06-09T09:52:59.0335351Z         "unit": {
2026-06-09T09:52:59.0335437Z           "complete": true,
2026-06-09T09:52:59.0335529Z           "evidence": [
2026-06-09T09:52:59.0335614Z             {
2026-06-09T09:52:59.0335741Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-09T09:52:59.0335831Z               "line": 978
2026-06-09T09:52:59.0335912Z             }
2026-06-09T09:52:59.0336001Z           ]
2026-06-09T09:52:59.0336081Z         }
2026-06-09T09:52:59.0336168Z       }
2026-06-09T09:52:59.0336250Z     },
2026-06-09T09:52:59.0336340Z     {
2026-06-09T09:52:59.0336435Z       "id": "REQ-DOCS-5",
2026-06-09T09:52:59.0336630Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-09T09:52:59.0336730Z       "requiredStages": [
2026-06-09T09:52:59.0336813Z         "impl",
2026-06-09T09:52:59.0336898Z         "int"
2026-06-09T09:52:59.0336978Z       ],
2026-06-09T09:52:59.0337074Z       "stages": {
2026-06-09T09:52:59.0337160Z         "doc": {
2026-06-09T09:52:59.0337255Z           "complete": false,
2026-06-09T09:52:59.0337354Z           "evidence": []
2026-06-09T09:52:59.0337432Z         },
2026-06-09T09:52:59.0337527Z         "impl": {
2026-06-09T09:52:59.0337617Z           "complete": true,
2026-06-09T09:52:59.0337713Z           "evidence": [
2026-06-09T09:52:59.0337804Z             {
2026-06-09T09:52:59.0337922Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-09T09:52:59.0338013Z               "line": 523
2026-06-09T09:52:59.0338096Z             },
2026-06-09T09:52:59.0338189Z             {
2026-06-09T09:52:59.0338299Z               "path": "crates/xtask/src/main.rs",
2026-06-09T09:52:59.0338386Z               "line": 113
2026-06-09T09:52:59.0338476Z             }
2026-06-09T09:52:59.0338556Z           ]
2026-06-09T09:52:59.0338641Z         },
2026-06-09T09:52:59.0338723Z         "int": {
2026-06-09T09:52:59.0338821Z           "complete": true,
2026-06-09T09:52:59.0338911Z           "evidence": [
2026-06-09T09:52:59.0339098Z             {
2026-06-09T09:52:59.0339212Z               "path": ".github/workflows/ci.yml",
2026-06-09T09:52:59.0339297Z               "line": 86
2026-06-09T09:52:59.0339512Z             },
2026-06-09T09:52:59.0339602Z             {
2026-06-09T09:52:59.0339722Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-09T09:52:59.0339813Z               "line": 1015
2026-06-09T09:52:59.0339897Z             }
2026-06-09T09:52:59.0339979Z           ]
2026-06-09T09:52:59.0340056Z         },
2026-06-09T09:52:59.0340146Z         "unit": {
2026-06-09T09:52:59.0340328Z           "complete": false,
2026-06-09T09:52:59.0340423Z           "evidence": []
2026-06-09T09:52:59.0340513Z         }
2026-06-09T09:52:59.0340594Z       }
2026-06-09T09:52:59.0340681Z     },
2026-06-09T09:52:59.0340756Z     {
2026-06-09T09:52:59.0340838Z       "id": "REQ-DOCS-6",
2026-06-09T09:52:59.0341160Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-09T09:52:59.0341256Z       "requiredStages": [
2026-06-09T09:52:59.0341342Z         "impl",
2026-06-09T09:52:59.0341430Z         "unit",
2026-06-09T09:52:59.0341525Z         "int"
2026-06-09T09:52:59.0341606Z       ],
2026-06-09T09:52:59.0341698Z       "stages": {
2026-06-09T09:52:59.0341782Z         "doc": {
2026-06-09T09:52:59.0341873Z           "complete": true,
2026-06-09T09:52:59.0341970Z           "evidence": [
2026-06-09T09:52:59.0342051Z             {
2026-06-09T09:52:59.0342178Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-09T09:52:59.0342270Z               "line": 4
2026-06-09T09:52:59.0342355Z             }
2026-06-09T09:52:59.0342435Z           ]
2026-06-09T09:52:59.0342517Z         },
2026-06-09T09:52:59.0342609Z         "impl": {
2026-06-09T09:52:59.0342698Z           "complete": true,
2026-06-09T09:52:59.0342793Z           "evidence": [
2026-06-09T09:52:59.0342875Z             {
2026-06-09T09:52:59.0342984Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0343075Z               "line": 3964
2026-06-09T09:52:59.0343161Z             }
2026-06-09T09:52:59.0343253Z           ]
2026-06-09T09:52:59.0343332Z         },
2026-06-09T09:52:59.0343423Z         "int": {
2026-06-09T09:52:59.0343510Z           "complete": true,
2026-06-09T09:52:59.0343610Z           "evidence": [
2026-06-09T09:52:59.0343690Z             {
2026-06-09T09:52:59.0343816Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-09T09:52:59.0343911Z               "line": 34
2026-06-09T09:52:59.0343994Z             }
2026-06-09T09:52:59.0344084Z           ]
2026-06-09T09:52:59.0344161Z         },
2026-06-09T09:52:59.0344253Z         "unit": {
2026-06-09T09:52:59.0344342Z           "complete": true,
2026-06-09T09:52:59.0344437Z           "evidence": [
2026-06-09T09:52:59.0344524Z             {
2026-06-09T09:52:59.0344629Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0344719Z               "line": 7588
2026-06-09T09:52:59.0344801Z             }
2026-06-09T09:52:59.0344886Z           ]
2026-06-09T09:52:59.0344967Z         }
2026-06-09T09:52:59.0345057Z       }
2026-06-09T09:52:59.0345135Z     },
2026-06-09T09:52:59.0345225Z     {
2026-06-09T09:52:59.0345329Z       "id": "REQ-EP-1",
2026-06-09T09:52:59.0345454Z       "title": "Day-one endpoint types; open type system",
2026-06-09T09:52:59.0345539Z       "requiredStages": [
2026-06-09T09:52:59.0345620Z         "impl",
2026-06-09T09:52:59.0345706Z         "unit"
2026-06-09T09:52:59.0345798Z       ],
2026-06-09T09:52:59.0345877Z       "stages": {
2026-06-09T09:52:59.0345968Z         "doc": {
2026-06-09T09:52:59.0346045Z           "complete": false,
2026-06-09T09:52:59.0346141Z           "evidence": []
2026-06-09T09:52:59.0346216Z         },
2026-06-09T09:52:59.0346305Z         "impl": {
2026-06-09T09:52:59.0346391Z           "complete": true,
2026-06-09T09:52:59.0346477Z           "evidence": [
2026-06-09T09:52:59.0346561Z             {
2026-06-09T09:52:59.0346680Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-09T09:52:59.0346771Z               "line": 77
2026-06-09T09:52:59.0346848Z             },
2026-06-09T09:52:59.0346928Z             {
2026-06-09T09:52:59.0347124Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-09T09:52:59.0347209Z               "line": 94
2026-06-09T09:52:59.0347294Z             }
2026-06-09T09:52:59.0347378Z           ]
2026-06-09T09:52:59.0347463Z         },
2026-06-09T09:52:59.0347543Z         "int": {
2026-06-09T09:52:59.0347634Z           "complete": false,
2026-06-09T09:52:59.0347792Z           "evidence": []
2026-06-09T09:52:59.0347881Z         },
2026-06-09T09:52:59.0347968Z         "unit": {
2026-06-09T09:52:59.0348059Z           "complete": true,
2026-06-09T09:52:59.0348149Z           "evidence": [
2026-06-09T09:52:59.0348230Z             {
2026-06-09T09:52:59.0348350Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-09T09:52:59.0348444Z               "line": 161
2026-06-09T09:52:59.0348525Z             },
2026-06-09T09:52:59.0348612Z             {
2026-06-09T09:52:59.0348726Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-09T09:52:59.0348816Z               "line": 178
2026-06-09T09:52:59.0348903Z             }
2026-06-09T09:52:59.0349088Z           ]
2026-06-09T09:52:59.0349191Z         }
2026-06-09T09:52:59.0349273Z       }
2026-06-09T09:52:59.0349358Z     },
2026-06-09T09:52:59.0349438Z     {
2026-06-09T09:52:59.0349532Z       "id": "REQ-EP-2",
2026-06-09T09:52:59.0349686Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-09T09:52:59.0349786Z       "requiredStages": [
2026-06-09T09:52:59.0349871Z         "impl",
2026-06-09T09:52:59.0349953Z         "unit"
2026-06-09T09:52:59.0350039Z       ],
2026-06-09T09:52:59.0350124Z       "stages": {
2026-06-09T09:52:59.0350205Z         "doc": {
2026-06-09T09:52:59.0350292Z           "complete": false,
2026-06-09T09:52:59.0350387Z           "evidence": []
2026-06-09T09:52:59.0350467Z         },
2026-06-09T09:52:59.0350564Z         "impl": {
2026-06-09T09:52:59.0350658Z           "complete": true,
2026-06-09T09:52:59.0350749Z           "evidence": [
2026-06-09T09:52:59.0350849Z             {
2026-06-09T09:52:59.0350978Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-09T09:52:59.0351083Z               "line": 114
2026-06-09T09:52:59.0351189Z             },
2026-06-09T09:52:59.0351284Z             {
2026-06-09T09:52:59.0351412Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-09T09:52:59.0351508Z               "line": 131
2026-06-09T09:52:59.0351622Z             },
2026-06-09T09:52:59.0351725Z             {
2026-06-09T09:52:59.0351878Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-09T09:52:59.0351976Z               "line": 138
2026-06-09T09:52:59.0352056Z             }
2026-06-09T09:52:59.0352143Z           ]
2026-06-09T09:52:59.0352229Z         },
2026-06-09T09:52:59.0352324Z         "int": {
2026-06-09T09:52:59.0352419Z           "complete": false,
2026-06-09T09:52:59.0352520Z           "evidence": []
2026-06-09T09:52:59.0352625Z         },
2026-06-09T09:52:59.0352709Z         "unit": {
2026-06-09T09:52:59.0352820Z           "complete": true,
2026-06-09T09:52:59.0352915Z           "evidence": [
2026-06-09T09:52:59.0353014Z             {
2026-06-09T09:52:59.0353135Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-09T09:52:59.0353239Z               "line": 190
2026-06-09T09:52:59.0353344Z             },
2026-06-09T09:52:59.0353426Z             {
2026-06-09T09:52:59.0353559Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-09T09:52:59.0353654Z               "line": 208
2026-06-09T09:52:59.0353751Z             },
2026-06-09T09:52:59.0353836Z             {
2026-06-09T09:52:59.0353973Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-09T09:52:59.0354066Z               "line": 221
2026-06-09T09:52:59.0354151Z             }
2026-06-09T09:52:59.0354255Z           ]
2026-06-09T09:52:59.0354341Z         }
2026-06-09T09:52:59.0354433Z       }
2026-06-09T09:52:59.0354522Z     },
2026-06-09T09:52:59.0354612Z     {
2026-06-09T09:52:59.0354717Z       "id": "REQ-EP-3",
2026-06-09T09:52:59.0355007Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-09T09:52:59.0355117Z       "requiredStages": [
2026-06-09T09:52:59.0355207Z         "impl",
2026-06-09T09:52:59.0355302Z         "unit"
2026-06-09T09:52:59.0355390Z       ],
2026-06-09T09:52:59.0355495Z       "stages": {
2026-06-09T09:52:59.0355589Z         "doc": {
2026-06-09T09:52:59.0355685Z           "complete": false,
2026-06-09T09:52:59.0355884Z           "evidence": []
2026-06-09T09:52:59.0355966Z         },
2026-06-09T09:52:59.0356062Z         "impl": {
2026-06-09T09:52:59.0356152Z           "complete": true,
2026-06-09T09:52:59.0356257Z           "evidence": [
2026-06-09T09:52:59.0356348Z             {
2026-06-09T09:52:59.0356466Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-09T09:52:59.0356562Z               "line": 31
2026-06-09T09:52:59.0356649Z             },
2026-06-09T09:52:59.0356748Z             {
2026-06-09T09:52:59.0356866Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-09T09:52:59.0356966Z               "line": 49
2026-06-09T09:52:59.0357060Z             }
2026-06-09T09:52:59.0357145Z           ]
2026-06-09T09:52:59.0357240Z         },
2026-06-09T09:52:59.0357331Z         "int": {
2026-06-09T09:52:59.0357436Z           "complete": false,
2026-06-09T09:52:59.0357530Z           "evidence": []
2026-06-09T09:52:59.0357622Z         },
2026-06-09T09:52:59.0357718Z         "unit": {
2026-06-09T09:52:59.0357817Z           "complete": true,
2026-06-09T09:52:59.0357918Z           "evidence": [
2026-06-09T09:52:59.0358003Z             {
2026-06-09T09:52:59.0358132Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-09T09:52:59.0358223Z               "line": 156
2026-06-09T09:52:59.0358323Z             },
2026-06-09T09:52:59.0358418Z             {
2026-06-09T09:52:59.0358533Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-09T09:52:59.0358633Z               "line": 164
2026-06-09T09:52:59.0358723Z             },
2026-06-09T09:52:59.0358813Z             {
2026-06-09T09:52:59.0358934Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-09T09:52:59.0359128Z               "line": 177
2026-06-09T09:52:59.0359216Z             },
2026-06-09T09:52:59.0359300Z             {
2026-06-09T09:52:59.0359434Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-09T09:52:59.0359521Z               "line": 200
2026-06-09T09:52:59.0359615Z             },
2026-06-09T09:52:59.0359705Z             {
2026-06-09T09:52:59.0359843Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-09T09:52:59.0359941Z               "line": 216
2026-06-09T09:52:59.0360027Z             },
2026-06-09T09:52:59.0360126Z             {
2026-06-09T09:52:59.0360242Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-09T09:52:59.0360346Z               "line": 233
2026-06-09T09:52:59.0360427Z             }
2026-06-09T09:52:59.0360518Z           ]
2026-06-09T09:52:59.0360613Z         }
2026-06-09T09:52:59.0360694Z       }
2026-06-09T09:52:59.0360795Z     },
2026-06-09T09:52:59.0360885Z     {
2026-06-09T09:52:59.0360980Z       "id": "REQ-EP-4",
2026-06-09T09:52:59.0361119Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-09T09:52:59.0361214Z       "requiredStages": [
2026-06-09T09:52:59.0361299Z         "impl",
2026-06-09T09:52:59.0361380Z         "unit"
2026-06-09T09:52:59.0361472Z       ],
2026-06-09T09:52:59.0361557Z       "stages": {
2026-06-09T09:52:59.0361657Z         "doc": {
2026-06-09T09:52:59.0361754Z           "complete": false,
2026-06-09T09:52:59.0361853Z           "evidence": []
2026-06-09T09:52:59.0361943Z         },
2026-06-09T09:52:59.0362035Z         "impl": {
2026-06-09T09:52:59.0362139Z           "complete": true,
2026-06-09T09:52:59.0362229Z           "evidence": [
2026-06-09T09:52:59.0362323Z             {
2026-06-09T09:52:59.0362442Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-09T09:52:59.0362546Z               "line": 461
2026-06-09T09:52:59.0362631Z             },
2026-06-09T09:52:59.0362717Z             {
2026-06-09T09:52:59.0362955Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-09T09:52:59.0363047Z               "line": 706
2026-06-09T09:52:59.0363146Z             },
2026-06-09T09:52:59.0363232Z             {
2026-06-09T09:52:59.0363357Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-09T09:52:59.0363457Z               "line": 824
2026-06-09T09:52:59.0363637Z             },
2026-06-09T09:52:59.0363733Z             {
2026-06-09T09:52:59.0363848Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-09T09:52:59.0363947Z               "line": 83
2026-06-09T09:52:59.0364029Z             },
2026-06-09T09:52:59.0364119Z             {
2026-06-09T09:52:59.0364238Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-09T09:52:59.0364325Z               "line": 460
2026-06-09T09:52:59.0364419Z             },
2026-06-09T09:52:59.0364506Z             {
2026-06-09T09:52:59.0364626Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-09T09:52:59.0364720Z               "line": 546
2026-06-09T09:52:59.0364820Z             },
2026-06-09T09:52:59.0364916Z             {
2026-06-09T09:52:59.0365096Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-09T09:52:59.0365214Z               "line": 196
2026-06-09T09:52:59.0365300Z             },
2026-06-09T09:52:59.0365402Z             {
2026-06-09T09:52:59.0365519Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-09T09:52:59.0365630Z               "line": 337
2026-06-09T09:52:59.0365726Z             },
2026-06-09T09:52:59.0365805Z             {
2026-06-09T09:52:59.0365931Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-09T09:52:59.0366016Z               "line": 847
2026-06-09T09:52:59.0366106Z             }
2026-06-09T09:52:59.0366202Z           ]
2026-06-09T09:52:59.0366288Z         },
2026-06-09T09:52:59.0366388Z         "int": {
2026-06-09T09:52:59.0366483Z           "complete": false,
2026-06-09T09:52:59.0366579Z           "evidence": []
2026-06-09T09:52:59.0366664Z         },
2026-06-09T09:52:59.0366773Z         "unit": {
2026-06-09T09:52:59.0366870Z           "complete": true,
2026-06-09T09:52:59.0366970Z           "evidence": [
2026-06-09T09:52:59.0367065Z             {
2026-06-09T09:52:59.0367180Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-09T09:52:59.0367280Z               "line": 637
2026-06-09T09:52:59.0367364Z             },
2026-06-09T09:52:59.0367468Z             {
2026-06-09T09:52:59.0367602Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-09T09:52:59.0367695Z               "line": 76
2026-06-09T09:52:59.0367790Z             },
2026-06-09T09:52:59.0367877Z             {
2026-06-09T09:52:59.0368015Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-09T09:52:59.0368105Z               "line": 147
2026-06-09T09:52:59.0368197Z             }
2026-06-09T09:52:59.0368297Z           ]
2026-06-09T09:52:59.0368396Z         }
2026-06-09T09:52:59.0368488Z       }
2026-06-09T09:52:59.0368568Z     },
2026-06-09T09:52:59.0368658Z     {
2026-06-09T09:52:59.0368764Z       "id": "REQ-EP-5",
2026-06-09T09:52:59.0369994Z       "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-09T09:52:59.0370100Z       "requiredStages": [
2026-06-09T09:52:59.0370198Z         "impl",
2026-06-09T09:52:59.0370288Z         "unit",
2026-06-09T09:52:59.0370374Z         "int"
2026-06-09T09:52:59.0370460Z       ],
2026-06-09T09:52:59.0370548Z       "stages": {
2026-06-09T09:52:59.0370638Z         "doc": {
2026-06-09T09:52:59.0370744Z           "complete": false,
2026-06-09T09:52:59.0370835Z           "evidence": []
2026-06-09T09:52:59.0370930Z         },
2026-06-09T09:52:59.0371016Z         "impl": {
2026-06-09T09:52:59.0371112Z           "complete": true,
2026-06-09T09:52:59.0371201Z           "evidence": [
2026-06-09T09:52:59.0371296Z             {
2026-06-09T09:52:59.0371592Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.0371699Z               "line": 351
2026-06-09T09:52:59.0371788Z             },
2026-06-09T09:52:59.0371874Z             {
2026-06-09T09:52:59.0371984Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-09T09:52:59.0372070Z               "line": 18
2026-06-09T09:52:59.0372250Z             },
2026-06-09T09:52:59.0372338Z             {
2026-06-09T09:52:59.0372450Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-09T09:52:59.0372532Z               "line": 63
2026-06-09T09:52:59.0372609Z             },
2026-06-09T09:52:59.0372690Z             {
2026-06-09T09:52:59.0372808Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-09T09:52:59.0372902Z               "line": 92
2026-06-09T09:52:59.0372989Z             },
2026-06-09T09:52:59.0373073Z             {
2026-06-09T09:52:59.0373191Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-09T09:52:59.0373287Z               "line": 167
2026-06-09T09:52:59.0373369Z             },
2026-06-09T09:52:59.0373454Z             {
2026-06-09T09:52:59.0373572Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-09T09:52:59.0373669Z               "line": 179
2026-06-09T09:52:59.0373754Z             },
2026-06-09T09:52:59.0373844Z             {
2026-06-09T09:52:59.0373964Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0374069Z               "line": 114
2026-06-09T09:52:59.0374163Z             },
2026-06-09T09:52:59.0374246Z             {
2026-06-09T09:52:59.0374378Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-09T09:52:59.0374473Z               "line": 22
2026-06-09T09:52:59.0374566Z             },
2026-06-09T09:52:59.0374646Z             {
2026-06-09T09:52:59.0374770Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-09T09:52:59.0374861Z               "line": 129
2026-06-09T09:52:59.0374942Z             },
2026-06-09T09:52:59.0375027Z             {
2026-06-09T09:52:59.0375142Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-09T09:52:59.0375233Z               "line": 156
2026-06-09T09:52:59.0375318Z             },
2026-06-09T09:52:59.0375404Z             {
2026-06-09T09:52:59.0375520Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-09T09:52:59.0375609Z               "line": 178
2026-06-09T09:52:59.0375698Z             },
2026-06-09T09:52:59.0375774Z             {
2026-06-09T09:52:59.0375895Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-09T09:52:59.0375980Z               "line": 203
2026-06-09T09:52:59.0376065Z             },
2026-06-09T09:52:59.0376152Z             {
2026-06-09T09:52:59.0376266Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-09T09:52:59.0376356Z               "line": 229
2026-06-09T09:52:59.0376437Z             },
2026-06-09T09:52:59.0376519Z             {
2026-06-09T09:52:59.0376629Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-09T09:52:59.0376728Z               "line": 252
2026-06-09T09:52:59.0376815Z             },
2026-06-09T09:52:59.0376896Z             {
2026-06-09T09:52:59.0377023Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:59.0377106Z               "line": 81
2026-06-09T09:52:59.0377197Z             },
2026-06-09T09:52:59.0377272Z             {
2026-06-09T09:52:59.0377377Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0377454Z               "line": 4269
2026-06-09T09:52:59.0377539Z             },
2026-06-09T09:52:59.0377653Z             {
2026-06-09T09:52:59.0377764Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0377863Z               "line": 4392
2026-06-09T09:52:59.0377953Z             },
2026-06-09T09:52:59.0378038Z             {
2026-06-09T09:52:59.0378144Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0378227Z               "line": 4553
2026-06-09T09:52:59.0378317Z             },
2026-06-09T09:52:59.0378399Z             {
2026-06-09T09:52:59.0378603Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0378709Z               "line": 4935
2026-06-09T09:52:59.0378795Z             }
2026-06-09T09:52:59.0378894Z           ]
2026-06-09T09:52:59.0379062Z         },
2026-06-09T09:52:59.0381771Z         "int": {
2026-06-09T09:52:59.0381900Z           "complete": true,
2026-06-09T09:52:59.0382171Z           "evidence": [
2026-06-09T09:52:59.0382301Z             {
2026-06-09T09:52:59.0382453Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-09T09:52:59.0382549Z               "line": 16
2026-06-09T09:52:59.0382630Z             },
2026-06-09T09:52:59.0382729Z             {
2026-06-09T09:52:59.0382859Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-09T09:52:59.0382959Z               "line": 15
2026-06-09T09:52:59.0383054Z             }
2026-06-09T09:52:59.0383140Z           ]
2026-06-09T09:52:59.0383236Z         },
2026-06-09T09:52:59.0383325Z         "unit": {
2026-06-09T09:52:59.0383448Z           "complete": true,
2026-06-09T09:52:59.0383539Z           "evidence": [
2026-06-09T09:52:59.0383638Z             {
2026-06-09T09:52:59.0383779Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-09T09:52:59.0383876Z               "line": 246
2026-06-09T09:52:59.0383990Z             },
2026-06-09T09:52:59.0384080Z             {
2026-06-09T09:52:59.0384219Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-09T09:52:59.0384310Z               "line": 306
2026-06-09T09:52:59.0384394Z             },
2026-06-09T09:52:59.0384477Z             {
2026-06-09T09:52:59.0384596Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-09T09:52:59.0384686Z               "line": 362
2026-06-09T09:52:59.0384772Z             },
2026-06-09T09:52:59.0384853Z             {
2026-06-09T09:52:59.0384977Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-09T09:52:59.0385067Z               "line": 268
2026-06-09T09:52:59.0385159Z             },
2026-06-09T09:52:59.0385273Z             {
2026-06-09T09:52:59.0385436Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-09T09:52:59.0385525Z               "line": 291
2026-06-09T09:52:59.0385611Z             },
2026-06-09T09:52:59.0385692Z             {
2026-06-09T09:52:59.0385812Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:59.0385906Z               "line": 491
2026-06-09T09:52:59.0385992Z             },
2026-06-09T09:52:59.0386080Z             {
2026-06-09T09:52:59.0386183Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0386273Z               "line": 5725
2026-06-09T09:52:59.0386363Z             },
2026-06-09T09:52:59.0386450Z             {
2026-06-09T09:52:59.0386554Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0386639Z               "line": 5849
2026-06-09T09:52:59.0386736Z             },
2026-06-09T09:52:59.0386821Z             {
2026-06-09T09:52:59.0386926Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0387027Z               "line": 6436
2026-06-09T09:52:59.0387113Z             },
2026-06-09T09:52:59.0387203Z             {
2026-06-09T09:52:59.0387308Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0387408Z               "line": 6501
2026-06-09T09:52:59.0387498Z             }
2026-06-09T09:52:59.0387588Z           ]
2026-06-09T09:52:59.0387676Z         }
2026-06-09T09:52:59.0387785Z       }
2026-06-09T09:52:59.0387880Z     },
2026-06-09T09:52:59.0387966Z     {
2026-06-09T09:52:59.0388071Z       "id": "REQ-FRONT-1",
2026-06-09T09:52:59.0388257Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-09T09:52:59.0388367Z       "requiredStages": [],
2026-06-09T09:52:59.0388452Z       "stages": {
2026-06-09T09:52:59.0388542Z         "doc": {
2026-06-09T09:52:59.0388637Z           "complete": false,
2026-06-09T09:52:59.0388732Z           "evidence": []
2026-06-09T09:52:59.0388815Z         },
2026-06-09T09:52:59.0388901Z         "impl": {
2026-06-09T09:52:59.0389173Z           "complete": false,
2026-06-09T09:52:59.0389269Z           "evidence": []
2026-06-09T09:52:59.0389360Z         },
2026-06-09T09:52:59.0389450Z         "int": {
2026-06-09T09:52:59.0389540Z           "complete": false,
2026-06-09T09:52:59.0389637Z           "evidence": []
2026-06-09T09:52:59.0389717Z         },
2026-06-09T09:52:59.0389802Z         "unit": {
2026-06-09T09:52:59.0389989Z           "complete": false,
2026-06-09T09:52:59.0390084Z           "evidence": []
2026-06-09T09:52:59.0390170Z         }
2026-06-09T09:52:59.0390252Z       }
2026-06-09T09:52:59.0390342Z     },
2026-06-09T09:52:59.0390427Z     {
2026-06-09T09:52:59.0390548Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-09T09:52:59.0390723Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-09T09:52:59.0390819Z       "requiredStages": [
2026-06-09T09:52:59.0390910Z         "impl",
2026-06-09T09:52:59.0390995Z         "unit"
2026-06-09T09:52:59.0391066Z       ],
2026-06-09T09:52:59.0391148Z       "stages": {
2026-06-09T09:52:59.0391254Z         "doc": {
2026-06-09T09:52:59.0391370Z           "complete": false,
2026-06-09T09:52:59.0391465Z           "evidence": []
2026-06-09T09:52:59.0391556Z         },
2026-06-09T09:52:59.0391645Z         "impl": {
2026-06-09T09:52:59.0391749Z           "complete": true,
2026-06-09T09:52:59.0391840Z           "evidence": [
2026-06-09T09:52:59.0391941Z             {
2026-06-09T09:52:59.0392069Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:59.0392170Z               "line": 149
2026-06-09T09:52:59.0392265Z             },
2026-06-09T09:52:59.0392355Z             {
2026-06-09T09:52:59.0392480Z               "path": "crates/spt/src/api/worker.rs",
2026-06-09T09:52:59.0392579Z               "line": 18
2026-06-09T09:52:59.0392674Z             },
2026-06-09T09:52:59.0392761Z             {
2026-06-09T09:52:59.0392894Z               "path": "crates/spt/src/api/worker.rs",
2026-06-09T09:52:59.0392984Z               "line": 98
2026-06-09T09:52:59.0393060Z             }
2026-06-09T09:52:59.0393148Z           ]
2026-06-09T09:52:59.0393227Z         },
2026-06-09T09:52:59.0393318Z         "int": {
2026-06-09T09:52:59.0393405Z           "complete": false,
2026-06-09T09:52:59.0393500Z           "evidence": []
2026-06-09T09:52:59.0393590Z         },
2026-06-09T09:52:59.0393676Z         "unit": {
2026-06-09T09:52:59.0393768Z           "complete": true,
2026-06-09T09:52:59.0393862Z           "evidence": [
2026-06-09T09:52:59.0393947Z             {
2026-06-09T09:52:59.0394066Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:59.0394160Z               "line": 565
2026-06-09T09:52:59.0394245Z             },
2026-06-09T09:52:59.0394344Z             {
2026-06-09T09:52:59.0394465Z               "path": "crates/spt/src/api/worker.rs",
2026-06-09T09:52:59.0394555Z               "line": 159
2026-06-09T09:52:59.0394640Z             },
2026-06-09T09:52:59.0394722Z             {
2026-06-09T09:52:59.0394832Z               "path": "crates/spt/src/api/worker.rs",
2026-06-09T09:52:59.0394931Z               "line": 231
2026-06-09T09:52:59.0395013Z             }
2026-06-09T09:52:59.0395098Z           ]
2026-06-09T09:52:59.0395184Z         }
2026-06-09T09:52:59.0395303Z       }
2026-06-09T09:52:59.0395386Z     },
2026-06-09T09:52:59.0395475Z     {
2026-06-09T09:52:59.0395589Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-09T09:52:59.0396034Z       "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-09T09:52:59.0396133Z       "requiredStages": [
2026-06-09T09:52:59.0396219Z         "impl",
2026-06-09T09:52:59.0396311Z         "unit"
2026-06-09T09:52:59.0396400Z       ],
2026-06-09T09:52:59.0396490Z       "stages": {
2026-06-09T09:52:59.0396582Z         "doc": {
2026-06-09T09:52:59.0396678Z           "complete": true,
2026-06-09T09:52:59.0396781Z           "evidence": [
2026-06-09T09:52:59.0396866Z             {
2026-06-09T09:52:59.0397119Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-09T09:52:59.0397224Z               "line": 219
2026-06-09T09:52:59.0397310Z             }
2026-06-09T09:52:59.0397401Z           ]
2026-06-09T09:52:59.0397491Z         },
2026-06-09T09:52:59.0397577Z         "impl": {
2026-06-09T09:52:59.0397673Z           "complete": true,
2026-06-09T09:52:59.0397763Z           "evidence": [
2026-06-09T09:52:59.0397931Z             {
2026-06-09T09:52:59.0398058Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-09T09:52:59.0398153Z               "line": 302
2026-06-09T09:52:59.0398231Z             },
2026-06-09T09:52:59.0398321Z             {
2026-06-09T09:52:59.0398440Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-09T09:52:59.0398531Z               "line": 257
2026-06-09T09:52:59.0398622Z             },
2026-06-09T09:52:59.0398702Z             {
2026-06-09T09:52:59.0398817Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-09T09:52:59.0398903Z               "line": 405
2026-06-09T09:52:59.0399230Z             },
2026-06-09T09:52:59.0399306Z             {
2026-06-09T09:52:59.0399437Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-09T09:52:59.0399524Z               "line": 77
2026-06-09T09:52:59.0399605Z             }
2026-06-09T09:52:59.0399686Z           ]
2026-06-09T09:52:59.0399766Z         },
2026-06-09T09:52:59.0399862Z         "int": {
2026-06-09T09:52:59.0399939Z           "complete": false,
2026-06-09T09:52:59.0400034Z           "evidence": []
2026-06-09T09:52:59.0400129Z         },
2026-06-09T09:52:59.0400221Z         "unit": {
2026-06-09T09:52:59.0400339Z           "complete": true,
2026-06-09T09:52:59.0400434Z           "evidence": [
2026-06-09T09:52:59.0400526Z             {
2026-06-09T09:52:59.0400644Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-09T09:52:59.0400744Z               "line": 478
2026-06-09T09:52:59.0400836Z             },
2026-06-09T09:52:59.0400920Z             {
2026-06-09T09:52:59.0401059Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-09T09:52:59.0401155Z               "line": 516
2026-06-09T09:52:59.0401249Z             },
2026-06-09T09:52:59.0401340Z             {
2026-06-09T09:52:59.0401470Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-09T09:52:59.0401574Z               "line": 166
2026-06-09T09:52:59.0401660Z             }
2026-06-09T09:52:59.0401771Z           ]
2026-06-09T09:52:59.0401856Z         }
2026-06-09T09:52:59.0401954Z       }
2026-06-09T09:52:59.0402035Z     },
2026-06-09T09:52:59.0402116Z     {
2026-06-09T09:52:59.0402243Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-09T09:52:59.0402778Z       "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-09T09:52:59.0402873Z       "requiredStages": [
2026-06-09T09:52:59.0402958Z         "impl",
2026-06-09T09:52:59.0403050Z         "unit"
2026-06-09T09:52:59.0403135Z       ],
2026-06-09T09:52:59.0403220Z       "stages": {
2026-06-09T09:52:59.0403311Z         "doc": {
2026-06-09T09:52:59.0403398Z           "complete": false,
2026-06-09T09:52:59.0403492Z           "evidence": []
2026-06-09T09:52:59.0403573Z         },
2026-06-09T09:52:59.0403660Z         "impl": {
2026-06-09T09:52:59.0403750Z           "complete": true,
2026-06-09T09:52:59.0403850Z           "evidence": [
2026-06-09T09:52:59.0403936Z             {
2026-06-09T09:52:59.0404051Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-09T09:52:59.0404145Z               "line": 22
2026-06-09T09:52:59.0404231Z             },
2026-06-09T09:52:59.0404304Z             {
2026-06-09T09:52:59.0404422Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-09T09:52:59.0404502Z               "line": 479
2026-06-09T09:52:59.0404578Z             },
2026-06-09T09:52:59.0404664Z             {
2026-06-09T09:52:59.0404924Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-09T09:52:59.0405010Z               "line": 17
2026-06-09T09:52:59.0405096Z             },
2026-06-09T09:52:59.0405181Z             {
2026-06-09T09:52:59.0405302Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-09T09:52:59.0405402Z               "line": 140
2026-06-09T09:52:59.0405477Z             },
2026-06-09T09:52:59.0405568Z             {
2026-06-09T09:52:59.0405787Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-09T09:52:59.0405878Z               "line": 194
2026-06-09T09:52:59.0405964Z             },
2026-06-09T09:52:59.0406045Z             {
2026-06-09T09:52:59.0406173Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-09T09:52:59.0406256Z               "line": 219
2026-06-09T09:52:59.0406340Z             },
2026-06-09T09:52:59.0406421Z             {
2026-06-09T09:52:59.0406541Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-09T09:52:59.0406631Z               "line": 245
2026-06-09T09:52:59.0406717Z             },
2026-06-09T09:52:59.0406807Z             {
2026-06-09T09:52:59.0406919Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-09T09:52:59.0407007Z               "line": 124
2026-06-09T09:52:59.0407089Z             },
2026-06-09T09:52:59.0407176Z             {
2026-06-09T09:52:59.0407294Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-09T09:52:59.0407389Z               "line": 224
2026-06-09T09:52:59.0407474Z             }
2026-06-09T09:52:59.0407555Z           ]
2026-06-09T09:52:59.0407637Z         },
2026-06-09T09:52:59.0407722Z         "int": {
2026-06-09T09:52:59.0407813Z           "complete": false,
2026-06-09T09:52:59.0407904Z           "evidence": []
2026-06-09T09:52:59.0407985Z         },
2026-06-09T09:52:59.0408070Z         "unit": {
2026-06-09T09:52:59.0408162Z           "complete": true,
2026-06-09T09:52:59.0408252Z           "evidence": [
2026-06-09T09:52:59.0408332Z             {
2026-06-09T09:52:59.0408461Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-09T09:52:59.0408547Z               "line": 62
2026-06-09T09:52:59.0408628Z             },
2026-06-09T09:52:59.0408709Z             {
2026-06-09T09:52:59.0408820Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-09T09:52:59.0408909Z               "line": 72
2026-06-09T09:52:59.0409077Z             },
2026-06-09T09:52:59.0409158Z             {
2026-06-09T09:52:59.0409285Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-09T09:52:59.0409391Z               "line": 84
2026-06-09T09:52:59.0409473Z             },
2026-06-09T09:52:59.0409553Z             {
2026-06-09T09:52:59.0409666Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-09T09:52:59.0409752Z               "line": 346
2026-06-09T09:52:59.0409838Z             },
2026-06-09T09:52:59.0409927Z             {
2026-06-09T09:52:59.0410040Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-09T09:52:59.0410127Z               "line": 274
2026-06-09T09:52:59.0410222Z             },
2026-06-09T09:52:59.0410307Z             {
2026-06-09T09:52:59.0410423Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-09T09:52:59.0410508Z               "line": 315
2026-06-09T09:52:59.0410594Z             },
2026-06-09T09:52:59.0410675Z             {
2026-06-09T09:52:59.0410790Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-09T09:52:59.0410885Z               "line": 353
2026-06-09T09:52:59.0410965Z             },
2026-06-09T09:52:59.0411048Z             {
2026-06-09T09:52:59.0411166Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-09T09:52:59.0411256Z               "line": 656
2026-06-09T09:52:59.0411338Z             },
2026-06-09T09:52:59.0411420Z             {
2026-06-09T09:52:59.0411533Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-09T09:52:59.0411624Z               "line": 397
2026-06-09T09:52:59.0411706Z             },
2026-06-09T09:52:59.0411791Z             {
2026-06-09T09:52:59.0412011Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-09T09:52:59.0412101Z               "line": 440
2026-06-09T09:52:59.0412187Z             }
2026-06-09T09:52:59.0412268Z           ]
2026-06-09T09:52:59.0412355Z         }
2026-06-09T09:52:59.0412439Z       }
2026-06-09T09:52:59.0412524Z     },
2026-06-09T09:52:59.0412605Z     {
2026-06-09T09:52:59.0412714Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-09T09:52:59.0413023Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-09T09:52:59.0413113Z       "requiredStages": [
2026-06-09T09:52:59.0413203Z         "impl",
2026-06-09T09:52:59.0413285Z         "unit"
2026-06-09T09:52:59.0413366Z       ],
2026-06-09T09:52:59.0413452Z       "stages": {
2026-06-09T09:52:59.0413527Z         "doc": {
2026-06-09T09:52:59.0413619Z           "complete": false,
2026-06-09T09:52:59.0413695Z           "evidence": []
2026-06-09T09:52:59.0413785Z         },
2026-06-09T09:52:59.0413866Z         "impl": {
2026-06-09T09:52:59.0413958Z           "complete": true,
2026-06-09T09:52:59.0414047Z           "evidence": [
2026-06-09T09:52:59.0414123Z             {
2026-06-09T09:52:59.0414239Z               "path": "crates/spt-term/src/reader.rs",
2026-06-09T09:52:59.0414325Z               "line": 169
2026-06-09T09:52:59.0414410Z             }
2026-06-09T09:52:59.0414501Z           ]
2026-06-09T09:52:59.0414578Z         },
2026-06-09T09:52:59.0414672Z         "int": {
2026-06-09T09:52:59.0414758Z           "complete": true,
2026-06-09T09:52:59.0414855Z           "evidence": [
2026-06-09T09:52:59.0414940Z             {
2026-06-09T09:52:59.0415053Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-09T09:52:59.0415142Z               "line": 44
2026-06-09T09:52:59.0415219Z             },
2026-06-09T09:52:59.0415309Z             {
2026-06-09T09:52:59.0415417Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-09T09:52:59.0415508Z               "line": 66
2026-06-09T09:52:59.0415590Z             }
2026-06-09T09:52:59.0415675Z           ]
2026-06-09T09:52:59.0415770Z         },
2026-06-09T09:52:59.0415857Z         "unit": {
2026-06-09T09:52:59.0415947Z           "complete": true,
2026-06-09T09:52:59.0416037Z           "evidence": [
2026-06-09T09:52:59.0416113Z             {
2026-06-09T09:52:59.0416228Z               "path": "crates/spt-term/src/reader.rs",
2026-06-09T09:52:59.0416319Z               "line": 186
2026-06-09T09:52:59.0416414Z             },
2026-06-09T09:52:59.0416496Z             {
2026-06-09T09:52:59.0416614Z               "path": "crates/spt-term/src/reader.rs",
2026-06-09T09:52:59.0416714Z               "line": 238
2026-06-09T09:52:59.0416806Z             },
2026-06-09T09:52:59.0416877Z             {
2026-06-09T09:52:59.0416991Z               "path": "crates/spt-term/src/reader.rs",
2026-06-09T09:52:59.0417082Z               "line": 266
2026-06-09T09:52:59.0417164Z             }
2026-06-09T09:52:59.0417243Z           ]
2026-06-09T09:52:59.0417324Z         }
2026-06-09T09:52:59.0417407Z       }
2026-06-09T09:52:59.0417484Z     },
2026-06-09T09:52:59.0417577Z     {
2026-06-09T09:52:59.0417697Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-09T09:52:59.0418116Z       "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-09T09:52:59.0418211Z       "requiredStages": [
2026-06-09T09:52:59.0418301Z         "impl",
2026-06-09T09:52:59.0418387Z         "unit",
2026-06-09T09:52:59.0418478Z         "int"
2026-06-09T09:52:59.0418577Z       ],
2026-06-09T09:52:59.0418668Z       "stages": {
2026-06-09T09:52:59.0418750Z         "doc": {
2026-06-09T09:52:59.0418841Z           "complete": false,
2026-06-09T09:52:59.0418926Z           "evidence": []
2026-06-09T09:52:59.0419098Z         },
2026-06-09T09:52:59.0419193Z         "impl": {
2026-06-09T09:52:59.0419283Z           "complete": true,
2026-06-09T09:52:59.0419376Z           "evidence": [
2026-06-09T09:52:59.0419455Z             {
2026-06-09T09:52:59.0419695Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.0419789Z               "line": 150
2026-06-09T09:52:59.0419870Z             },
2026-06-09T09:52:59.0419956Z             {
2026-06-09T09:52:59.0420075Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.0420165Z               "line": 174
2026-06-09T09:52:59.0420250Z             },
2026-06-09T09:52:59.0420430Z             {
2026-06-09T09:52:59.0420534Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-09T09:52:59.0420630Z               "line": 79
2026-06-09T09:52:59.0420716Z             },
2026-06-09T09:52:59.0420792Z             {
2026-06-09T09:52:59.0420906Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-09T09:52:59.0420988Z               "line": 51
2026-06-09T09:52:59.0421073Z             },
2026-06-09T09:52:59.0421154Z             {
2026-06-09T09:52:59.0421269Z               "path": "crates/spt-store/src/info.rs",
2026-06-09T09:52:59.0421364Z               "line": 154
2026-06-09T09:52:59.0421449Z             },
2026-06-09T09:52:59.0421535Z             {
2026-06-09T09:52:59.0421646Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-09T09:52:59.0421741Z               "line": 27
2026-06-09T09:52:59.0421821Z             },
2026-06-09T09:52:59.0421908Z             {
2026-06-09T09:52:59.0422022Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-09T09:52:59.0422117Z               "line": 79
2026-06-09T09:52:59.0422199Z             },
2026-06-09T09:52:59.0422280Z             {
2026-06-09T09:52:59.0422393Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-09T09:52:59.0422479Z               "line": 102
2026-06-09T09:52:59.0422567Z             },
2026-06-09T09:52:59.0422652Z             {
2026-06-09T09:52:59.0422761Z               "path": "crates/spt-store/src/registry.rs",
2026-06-09T09:52:59.0422852Z               "line": 116
2026-06-09T09:52:59.0422934Z             }
2026-06-09T09:52:59.0423018Z           ]
2026-06-09T09:52:59.0423103Z         },
2026-06-09T09:52:59.0423204Z         "int": {
2026-06-09T09:52:59.0423302Z           "complete": true,
2026-06-09T09:52:59.0423401Z           "evidence": [
2026-06-09T09:52:59.0423487Z             {
2026-06-09T09:52:59.0423611Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-09T09:52:59.0423702Z               "line": 35
2026-06-09T09:52:59.0423787Z             }
2026-06-09T09:52:59.0423879Z           ]
2026-06-09T09:52:59.0423965Z         },
2026-06-09T09:52:59.0424049Z         "unit": {
2026-06-09T09:52:59.0424141Z           "complete": true,
2026-06-09T09:52:59.0424222Z           "evidence": [
2026-06-09T09:52:59.0424313Z             {
2026-06-09T09:52:59.0424431Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.0424518Z               "line": 584
2026-06-09T09:52:59.0424603Z             },
2026-06-09T09:52:59.0424684Z             {
2026-06-09T09:52:59.0424795Z               "path": "crates/spt-store/src/info.rs",
2026-06-09T09:52:59.0424890Z               "line": 351
2026-06-09T09:52:59.0424970Z             },
2026-06-09T09:52:59.0425051Z             {
2026-06-09T09:52:59.0425167Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-09T09:52:59.0425256Z               "line": 124
2026-06-09T09:52:59.0425337Z             },
2026-06-09T09:52:59.0425420Z             {
2026-06-09T09:52:59.0425529Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-09T09:52:59.0425622Z               "line": 143
2026-06-09T09:52:59.0425703Z             },
2026-06-09T09:52:59.0425794Z             {
2026-06-09T09:52:59.0425906Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-09T09:52:59.0425982Z               "line": 160
2026-06-09T09:52:59.0426073Z             },
2026-06-09T09:52:59.0426159Z             {
2026-06-09T09:52:59.0426292Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-09T09:52:59.0426373Z               "line": 187
2026-06-09T09:52:59.0426455Z             },
2026-06-09T09:52:59.0426541Z             {
2026-06-09T09:52:59.0426761Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-09T09:52:59.0426851Z               "line": 206
2026-06-09T09:52:59.0426935Z             },
2026-06-09T09:52:59.0427018Z             {
2026-06-09T09:52:59.0427122Z               "path": "crates/spt-store/src/registry.rs",
2026-06-09T09:52:59.0427208Z               "line": 229
2026-06-09T09:52:59.0427361Z             }
2026-06-09T09:52:59.0427442Z           ]
2026-06-09T09:52:59.0427528Z         }
2026-06-09T09:52:59.0427609Z       }
2026-06-09T09:52:59.0427695Z     },
2026-06-09T09:52:59.0427780Z     {
2026-06-09T09:52:59.0427904Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-09T09:52:59.0428528Z       "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-09T09:52:59.0428623Z       "requiredStages": [
2026-06-09T09:52:59.0428714Z         "impl",
2026-06-09T09:52:59.0428790Z         "unit"
2026-06-09T09:52:59.0428880Z       ],
2026-06-09T09:52:59.0429048Z       "stages": {
2026-06-09T09:52:59.0429133Z         "doc": {
2026-06-09T09:52:59.0429233Z           "complete": false,
2026-06-09T09:52:59.0429320Z           "evidence": []
2026-06-09T09:52:59.0429410Z         },
2026-06-09T09:52:59.0429500Z         "impl": {
2026-06-09T09:52:59.0429601Z           "complete": true,
2026-06-09T09:52:59.0429691Z           "evidence": [
2026-06-09T09:52:59.0429772Z             {
2026-06-09T09:52:59.0429897Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-09T09:52:59.0429987Z               "line": 241
2026-06-09T09:52:59.0430073Z             },
2026-06-09T09:52:59.0430154Z             {
2026-06-09T09:52:59.0430279Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-09T09:52:59.0430368Z               "line": 408
2026-06-09T09:52:59.0430449Z             }
2026-06-09T09:52:59.0430536Z           ]
2026-06-09T09:52:59.0430626Z         },
2026-06-09T09:52:59.0430716Z         "int": {
2026-06-09T09:52:59.0430801Z           "complete": false,
2026-06-09T09:52:59.0430892Z           "evidence": []
2026-06-09T09:52:59.0430976Z         },
2026-06-09T09:52:59.0431056Z         "unit": {
2026-06-09T09:52:59.0431151Z           "complete": true,
2026-06-09T09:52:59.0431238Z           "evidence": [
2026-06-09T09:52:59.0431337Z             {
2026-06-09T09:52:59.0431461Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-09T09:52:59.0431553Z               "line": 161
2026-06-09T09:52:59.0431638Z             }
2026-06-09T09:52:59.0431719Z           ]
2026-06-09T09:52:59.0431810Z         }
2026-06-09T09:52:59.0431891Z       }
2026-06-09T09:52:59.0431986Z     },
2026-06-09T09:52:59.0432067Z     {
2026-06-09T09:52:59.0432182Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-09T09:52:59.0432372Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-09T09:52:59.0432468Z       "requiredStages": [
2026-06-09T09:52:59.0432558Z         "impl",
2026-06-09T09:52:59.0432644Z         "unit"
2026-06-09T09:52:59.0432729Z       ],
2026-06-09T09:52:59.0432812Z       "stages": {
2026-06-09T09:52:59.0432897Z         "doc": {
2026-06-09T09:52:59.0432997Z           "complete": false,
2026-06-09T09:52:59.0433083Z           "evidence": []
2026-06-09T09:52:59.0433179Z         },
2026-06-09T09:52:59.0433264Z         "impl": {
2026-06-09T09:52:59.0433354Z           "complete": true,
2026-06-09T09:52:59.0433442Z           "evidence": [
2026-06-09T09:52:59.0433531Z             {
2026-06-09T09:52:59.0433644Z               "path": "crates/spt-store/src/spool.rs",
2026-06-09T09:52:59.0433730Z               "line": 40
2026-06-09T09:52:59.0433820Z             },
2026-06-09T09:52:59.0433900Z             {
2026-06-09T09:52:59.0434013Z               "path": "crates/spt-store/src/spool.rs",
2026-06-09T09:52:59.0434100Z               "line": 100
2026-06-09T09:52:59.0434186Z             },
2026-06-09T09:52:59.0434376Z             {
2026-06-09T09:52:59.0434487Z               "path": "crates/spt-store/src/spool.rs",
2026-06-09T09:52:59.0434581Z               "line": 215
2026-06-09T09:52:59.0434662Z             },
2026-06-09T09:52:59.0434749Z             {
2026-06-09T09:52:59.0434863Z               "path": "crates/spt-store/src/spool.rs",
2026-06-09T09:52:59.0434952Z               "line": 314
2026-06-09T09:52:59.0435135Z             }
2026-06-09T09:52:59.0435216Z           ]
2026-06-09T09:52:59.0435301Z         },
2026-06-09T09:52:59.0435383Z         "int": {
2026-06-09T09:52:59.0435478Z           "complete": false,
2026-06-09T09:52:59.0435573Z           "evidence": []
2026-06-09T09:52:59.0435650Z         },
2026-06-09T09:52:59.0435741Z         "unit": {
2026-06-09T09:52:59.0435830Z           "complete": true,
2026-06-09T09:52:59.0435921Z           "evidence": [
2026-06-09T09:52:59.0436004Z             {
2026-06-09T09:52:59.0436117Z               "path": "crates/spt-store/src/spool.rs",
2026-06-09T09:52:59.0436221Z               "line": 352
2026-06-09T09:52:59.0436302Z             },
2026-06-09T09:52:59.0436392Z             {
2026-06-09T09:52:59.0436499Z               "path": "crates/spt-store/src/spool.rs",
2026-06-09T09:52:59.0436590Z               "line": 409
2026-06-09T09:52:59.0436671Z             },
2026-06-09T09:52:59.0436758Z             {
2026-06-09T09:52:59.0436871Z               "path": "crates/spt-store/src/spool.rs",
2026-06-09T09:52:59.0436967Z               "line": 458
2026-06-09T09:52:59.0437053Z             },
2026-06-09T09:52:59.0437134Z             {
2026-06-09T09:52:59.0437243Z               "path": "crates/spt-store/src/spool.rs",
2026-06-09T09:52:59.0437330Z               "line": 479
2026-06-09T09:52:59.0437416Z             }
2026-06-09T09:52:59.0437505Z           ]
2026-06-09T09:52:59.0437588Z         }
2026-06-09T09:52:59.0437673Z       }
2026-06-09T09:52:59.0437754Z     },
2026-06-09T09:52:59.0437839Z     {
2026-06-09T09:52:59.0437960Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-09T09:52:59.0438097Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-09T09:52:59.0438192Z       "requiredStages": [
2026-06-09T09:52:59.0438274Z         "impl",
2026-06-09T09:52:59.0438364Z         "unit"
2026-06-09T09:52:59.0438445Z       ],
2026-06-09T09:52:59.0438532Z       "stages": {
2026-06-09T09:52:59.0438613Z         "doc": {
2026-06-09T09:52:59.0438706Z           "complete": false,
2026-06-09T09:52:59.0438808Z           "evidence": []
2026-06-09T09:52:59.0438890Z         },
2026-06-09T09:52:59.0439049Z         "impl": {
2026-06-09T09:52:59.0439144Z           "complete": true,
2026-06-09T09:52:59.0439236Z           "evidence": [
2026-06-09T09:52:59.0439318Z             {
2026-06-09T09:52:59.0439459Z               "path": "crates/spt-store/src/spool.rs",
2026-06-09T09:52:59.0439556Z               "line": 113
2026-06-09T09:52:59.0439637Z             },
2026-06-09T09:52:59.0439726Z             {
2026-06-09T09:52:59.0439832Z               "path": "crates/spt-store/src/spool.rs",
2026-06-09T09:52:59.0439937Z               "line": 208
2026-06-09T09:52:59.0440017Z             }
2026-06-09T09:52:59.0440108Z           ]
2026-06-09T09:52:59.0440195Z         },
2026-06-09T09:52:59.0440280Z         "int": {
2026-06-09T09:52:59.0440370Z           "complete": false,
2026-06-09T09:52:59.0440457Z           "evidence": []
2026-06-09T09:52:59.0440543Z         },
2026-06-09T09:52:59.0440633Z         "unit": {
2026-06-09T09:52:59.0440728Z           "complete": true,
2026-06-09T09:52:59.0440825Z           "evidence": [
2026-06-09T09:52:59.0440909Z             {
2026-06-09T09:52:59.0441023Z               "path": "crates/spt-store/src/spool.rs",
2026-06-09T09:52:59.0441110Z               "line": 373
2026-06-09T09:52:59.0441196Z             },
2026-06-09T09:52:59.0441276Z             {
2026-06-09T09:52:59.0441389Z               "path": "crates/spt-store/src/spool.rs",
2026-06-09T09:52:59.0441481Z               "line": 436
2026-06-09T09:52:59.0441560Z             }
2026-06-09T09:52:59.0441645Z           ]
2026-06-09T09:52:59.0441827Z         }
2026-06-09T09:52:59.0441912Z       }
2026-06-09T09:52:59.0441997Z     },
2026-06-09T09:52:59.0442084Z     {
2026-06-09T09:52:59.0442208Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-09T09:52:59.0443391Z       "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-09T09:52:59.0443590Z       "requiredStages": [
2026-06-09T09:52:59.0443677Z         "impl",
2026-06-09T09:52:59.0443762Z         "unit"
2026-06-09T09:52:59.0443848Z       ],
2026-06-09T09:52:59.0443934Z       "stages": {
2026-06-09T09:52:59.0444021Z         "doc": {
2026-06-09T09:52:59.0444110Z           "complete": true,
2026-06-09T09:52:59.0444204Z           "evidence": [
2026-06-09T09:52:59.0444299Z             {
2026-06-09T09:52:59.0444418Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-09T09:52:59.0444512Z               "line": 205
2026-06-09T09:52:59.0444593Z             }
2026-06-09T09:52:59.0444674Z           ]
2026-06-09T09:52:59.0444756Z         },
2026-06-09T09:52:59.0444841Z         "impl": {
2026-06-09T09:52:59.0444931Z           "complete": true,
2026-06-09T09:52:59.0445037Z           "evidence": [
2026-06-09T09:52:59.0445122Z             {
2026-06-09T09:52:59.0445242Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-09T09:52:59.0445333Z               "line": 572
2026-06-09T09:52:59.0445419Z             },
2026-06-09T09:52:59.0445503Z             {
2026-06-09T09:52:59.0445615Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-09T09:52:59.0445704Z               "line": 664
2026-06-09T09:52:59.0445795Z             },
2026-06-09T09:52:59.0445876Z             {
2026-06-09T09:52:59.0446005Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-09T09:52:59.0446100Z               "line": 183
2026-06-09T09:52:59.0446186Z             }
2026-06-09T09:52:59.0446268Z           ]
2026-06-09T09:52:59.0446353Z         },
2026-06-09T09:52:59.0446434Z         "int": {
2026-06-09T09:52:59.0446525Z           "complete": false,
2026-06-09T09:52:59.0446620Z           "evidence": []
2026-06-09T09:52:59.0446696Z         },
2026-06-09T09:52:59.0446795Z         "unit": {
2026-06-09T09:52:59.0446886Z           "complete": true,
2026-06-09T09:52:59.0446989Z           "evidence": [
2026-06-09T09:52:59.0447088Z             {
2026-06-09T09:52:59.0447217Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-09T09:52:59.0447309Z               "line": 713
2026-06-09T09:52:59.0447393Z             },
2026-06-09T09:52:59.0447474Z             {
2026-06-09T09:52:59.0447599Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-09T09:52:59.0447694Z               "line": 44
2026-06-09T09:52:59.0447784Z             },
2026-06-09T09:52:59.0450091Z             {
2026-06-09T09:52:59.0450262Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-09T09:52:59.0450358Z               "line": 54
2026-06-09T09:52:59.0450450Z             },
2026-06-09T09:52:59.0450531Z             {
2026-06-09T09:52:59.0450687Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-09T09:52:59.0450779Z               "line": 51
2026-06-09T09:52:59.0450869Z             }
2026-06-09T09:52:59.0450959Z           ]
2026-06-09T09:52:59.0451041Z         }
2026-06-09T09:52:59.0451126Z       }
2026-06-09T09:52:59.0451212Z     },
2026-06-09T09:52:59.0451298Z     {
2026-06-09T09:52:59.0451427Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-09T09:52:59.0451641Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-09T09:52:59.0451742Z       "requiredStages": [
2026-06-09T09:52:59.0451826Z         "impl",
2026-06-09T09:52:59.0451916Z         "unit"
2026-06-09T09:52:59.0451997Z       ],
2026-06-09T09:52:59.0452210Z       "stages": {
2026-06-09T09:52:59.0452305Z         "doc": {
2026-06-09T09:52:59.0452387Z           "complete": false,
2026-06-09T09:52:59.0452472Z           "evidence": []
2026-06-09T09:52:59.0452548Z         },
2026-06-09T09:52:59.0452620Z         "impl": {
2026-06-09T09:52:59.0452706Z           "complete": true,
2026-06-09T09:52:59.0452796Z           "evidence": [
2026-06-09T09:52:59.0453002Z             {
2026-06-09T09:52:59.0453120Z               "path": "crates/spt-live/src/context.rs",
2026-06-09T09:52:59.0453211Z               "line": 26
2026-06-09T09:52:59.0453293Z             },
2026-06-09T09:52:59.0453383Z             {
2026-06-09T09:52:59.0453492Z               "path": "crates/spt-live/src/context.rs",
2026-06-09T09:52:59.0453583Z               "line": 135
2026-06-09T09:52:59.0453674Z             },
2026-06-09T09:52:59.0453759Z             {
2026-06-09T09:52:59.0453884Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-09T09:52:59.0453970Z               "line": 26
2026-06-09T09:52:59.0454069Z             },
2026-06-09T09:52:59.0454150Z             {
2026-06-09T09:52:59.0454271Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-09T09:52:59.0454364Z               "line": 237
2026-06-09T09:52:59.0454446Z             }
2026-06-09T09:52:59.0454528Z           ]
2026-06-09T09:52:59.0454609Z         },
2026-06-09T09:52:59.0454693Z         "int": {
2026-06-09T09:52:59.0454792Z           "complete": false,
2026-06-09T09:52:59.0454884Z           "evidence": []
2026-06-09T09:52:59.0454968Z         },
2026-06-09T09:52:59.0455053Z         "unit": {
2026-06-09T09:52:59.0455143Z           "complete": true,
2026-06-09T09:52:59.0455230Z           "evidence": [
2026-06-09T09:52:59.0455316Z             {
2026-06-09T09:52:59.0455448Z               "path": "crates/spt-live/src/context.rs",
2026-06-09T09:52:59.0455540Z               "line": 161
2026-06-09T09:52:59.0455626Z             },
2026-06-09T09:52:59.0455706Z             {
2026-06-09T09:52:59.0455831Z               "path": "crates/spt-live/src/context.rs",
2026-06-09T09:52:59.0455916Z               "line": 170
2026-06-09T09:52:59.0456002Z             },
2026-06-09T09:52:59.0456082Z             {
2026-06-09T09:52:59.0456198Z               "path": "crates/spt-live/src/context.rs",
2026-06-09T09:52:59.0456288Z               "line": 179
2026-06-09T09:52:59.0456369Z             },
2026-06-09T09:52:59.0456465Z             {
2026-06-09T09:52:59.0456574Z               "path": "crates/spt-live/src/context.rs",
2026-06-09T09:52:59.0456669Z               "line": 190
2026-06-09T09:52:59.0456756Z             },
2026-06-09T09:52:59.0456842Z             {
2026-06-09T09:52:59.0456955Z               "path": "crates/spt-live/src/context.rs",
2026-06-09T09:52:59.0457041Z               "line": 199
2026-06-09T09:52:59.0457134Z             },
2026-06-09T09:52:59.0457218Z             {
2026-06-09T09:52:59.0457331Z               "path": "crates/spt-live/src/context.rs",
2026-06-09T09:52:59.0457422Z               "line": 216
2026-06-09T09:52:59.0457512Z             },
2026-06-09T09:52:59.0457601Z             {
2026-06-09T09:52:59.0457705Z               "path": "crates/spt-live/src/context.rs",
2026-06-09T09:52:59.0457801Z               "line": 242
2026-06-09T09:52:59.0457883Z             },
2026-06-09T09:52:59.0457972Z             {
2026-06-09T09:52:59.0458088Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-09T09:52:59.0458178Z               "line": 257
2026-06-09T09:52:59.0458268Z             },
2026-06-09T09:52:59.0458349Z             {
2026-06-09T09:52:59.0458464Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-09T09:52:59.0458550Z               "line": 244
2026-06-09T09:52:59.0458635Z             },
2026-06-09T09:52:59.0458765Z             {
2026-06-09T09:52:59.0458893Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-09T09:52:59.0459056Z               "line": 265
2026-06-09T09:52:59.0459137Z             },
2026-06-09T09:52:59.0459232Z             {
2026-06-09T09:52:59.0459517Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-09T09:52:59.0459613Z               "line": 293
2026-06-09T09:52:59.0459705Z             },
2026-06-09T09:52:59.0459785Z             {
2026-06-09T09:52:59.0459899Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-09T09:52:59.0459986Z               "line": 317
2026-06-09T09:52:59.0460076Z             },
2026-06-09T09:52:59.0460246Z             {
2026-06-09T09:52:59.0460385Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-09T09:52:59.0460480Z               "line": 327
2026-06-09T09:52:59.0460556Z             },
2026-06-09T09:52:59.0460647Z             {
2026-06-09T09:52:59.0460762Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-09T09:52:59.0460851Z               "line": 540
2026-06-09T09:52:59.0460928Z             }
2026-06-09T09:52:59.0461005Z           ]
2026-06-09T09:52:59.0461096Z         }
2026-06-09T09:52:59.0461170Z       }
2026-06-09T09:52:59.0461257Z     },
2026-06-09T09:52:59.0461353Z     {
2026-06-09T09:52:59.0461485Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-09T09:52:59.0461635Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-09T09:52:59.0461738Z       "requiredStages": [
2026-06-09T09:52:59.0461829Z         "impl",
2026-06-09T09:52:59.0461921Z         "unit"
2026-06-09T09:52:59.0462006Z       ],
2026-06-09T09:52:59.0462091Z       "stages": {
2026-06-09T09:52:59.0462192Z         "doc": {
2026-06-09T09:52:59.0462284Z           "complete": false,
2026-06-09T09:52:59.0462377Z           "evidence": []
2026-06-09T09:52:59.0462462Z         },
2026-06-09T09:52:59.0462548Z         "impl": {
2026-06-09T09:52:59.0462643Z           "complete": true,
2026-06-09T09:52:59.0462732Z           "evidence": [
2026-06-09T09:52:59.0462817Z             {
2026-06-09T09:52:59.0462928Z               "path": "crates/spt-live/src/echo.rs",
2026-06-09T09:52:59.0463018Z               "line": 25
2026-06-09T09:52:59.0463108Z             },
2026-06-09T09:52:59.0463190Z             {
2026-06-09T09:52:59.0463319Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-09T09:52:59.0463404Z               "line": 26
2026-06-09T09:52:59.0463490Z             },
2026-06-09T09:52:59.0463572Z             {
2026-06-09T09:52:59.0463685Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-09T09:52:59.0463776Z               "line": 159
2026-06-09T09:52:59.0463868Z             }
2026-06-09T09:52:59.0463953Z           ]
2026-06-09T09:52:59.0464033Z         },
2026-06-09T09:52:59.0464119Z         "int": {
2026-06-09T09:52:59.0464211Z           "complete": false,
2026-06-09T09:52:59.0464301Z           "evidence": []
2026-06-09T09:52:59.0464391Z         },
2026-06-09T09:52:59.0464473Z         "unit": {
2026-06-09T09:52:59.0464568Z           "complete": true,
2026-06-09T09:52:59.0464658Z           "evidence": [
2026-06-09T09:52:59.0464744Z             {
2026-06-09T09:52:59.0464855Z               "path": "crates/spt-live/src/echo.rs",
2026-06-09T09:52:59.0464934Z               "line": 184
2026-06-09T09:52:59.0465040Z             },
2026-06-09T09:52:59.0465170Z             {
2026-06-09T09:52:59.0465287Z               "path": "crates/spt-live/src/echo.rs",
2026-06-09T09:52:59.0465376Z               "line": 236
2026-06-09T09:52:59.0465463Z             },
2026-06-09T09:52:59.0465543Z             {
2026-06-09T09:52:59.0465661Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-09T09:52:59.0465761Z               "line": 186
2026-06-09T09:52:59.0465843Z             }
2026-06-09T09:52:59.0465933Z           ]
2026-06-09T09:52:59.0466013Z         }
2026-06-09T09:52:59.0466110Z       }
2026-06-09T09:52:59.0466191Z     },
2026-06-09T09:52:59.0466276Z     {
2026-06-09T09:52:59.0466391Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-09T09:52:59.0466553Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-09T09:52:59.0466647Z       "requiredStages": [
2026-06-09T09:52:59.0466735Z         "impl",
2026-06-09T09:52:59.0466824Z         "unit"
2026-06-09T09:52:59.0466905Z       ],
2026-06-09T09:52:59.0467078Z       "stages": {
2026-06-09T09:52:59.0467168Z         "doc": {
2026-06-09T09:52:59.0467258Z           "complete": false,
2026-06-09T09:52:59.0467355Z           "evidence": []
2026-06-09T09:52:59.0467435Z         },
2026-06-09T09:52:59.0467525Z         "impl": {
2026-06-09T09:52:59.0467611Z           "complete": true,
2026-06-09T09:52:59.0467703Z           "evidence": [
2026-06-09T09:52:59.0467868Z             {
2026-06-09T09:52:59.0467982Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-09T09:52:59.0468077Z               "line": 48
2026-06-09T09:52:59.0468156Z             },
2026-06-09T09:52:59.0468246Z             {
2026-06-09T09:52:59.0468356Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-09T09:52:59.0468448Z               "line": 55
2026-06-09T09:52:59.0468537Z             },
2026-06-09T09:52:59.0468618Z             {
2026-06-09T09:52:59.0468734Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-09T09:52:59.0468833Z               "line": 74
2026-06-09T09:52:59.0468924Z             },
2026-06-09T09:52:59.0469096Z             {
2026-06-09T09:52:59.0469214Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-09T09:52:59.0469311Z               "line": 91
2026-06-09T09:52:59.0469391Z             }
2026-06-09T09:52:59.0469481Z           ]
2026-06-09T09:52:59.0469558Z         },
2026-06-09T09:52:59.0469654Z         "int": {
2026-06-09T09:52:59.0469749Z           "complete": false,
2026-06-09T09:52:59.0469839Z           "evidence": []
2026-06-09T09:52:59.0469931Z         },
2026-06-09T09:52:59.0470011Z         "unit": {
2026-06-09T09:52:59.0470111Z           "complete": true,
2026-06-09T09:52:59.0470193Z           "evidence": [
2026-06-09T09:52:59.0470279Z             {
2026-06-09T09:52:59.0470392Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-09T09:52:59.0470483Z               "line": 149
2026-06-09T09:52:59.0470570Z             },
2026-06-09T09:52:59.0470655Z             {
2026-06-09T09:52:59.0470777Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-09T09:52:59.0470868Z               "line": 166
2026-06-09T09:52:59.0470955Z             },
2026-06-09T09:52:59.0471040Z             {
2026-06-09T09:52:59.0471149Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-09T09:52:59.0471241Z               "line": 176
2026-06-09T09:52:59.0471322Z             },
2026-06-09T09:52:59.0471416Z             {
2026-06-09T09:52:59.0471527Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-09T09:52:59.0471617Z               "line": 194
2026-06-09T09:52:59.0471707Z             },
2026-06-09T09:52:59.0471784Z             {
2026-06-09T09:52:59.0471903Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-09T09:52:59.0471989Z               "line": 207
2026-06-09T09:52:59.0472074Z             }
2026-06-09T09:52:59.0472157Z           ]
2026-06-09T09:52:59.0472242Z         }
2026-06-09T09:52:59.0472333Z       }
2026-06-09T09:52:59.0472418Z     },
2026-06-09T09:52:59.0472500Z     {
2026-06-09T09:52:59.0472627Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-09T09:52:59.0472820Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-09T09:52:59.0472909Z       "requiredStages": [
2026-06-09T09:52:59.0473003Z         "impl",
2026-06-09T09:52:59.0473094Z         "unit"
2026-06-09T09:52:59.0473175Z       ],
2026-06-09T09:52:59.0473273Z       "stages": {
2026-06-09T09:52:59.0473358Z         "doc": {
2026-06-09T09:52:59.0473454Z           "complete": false,
2026-06-09T09:52:59.0473541Z           "evidence": []
2026-06-09T09:52:59.0473635Z         },
2026-06-09T09:52:59.0473726Z         "impl": {
2026-06-09T09:52:59.0473817Z           "complete": true,
2026-06-09T09:52:59.0473912Z           "evidence": [
2026-06-09T09:52:59.0473992Z             {
2026-06-09T09:52:59.0474123Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.0474208Z               "line": 373
2026-06-09T09:52:59.0474302Z             },
2026-06-09T09:52:59.0474493Z             {
2026-06-09T09:52:59.0474607Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-09T09:52:59.0474704Z               "line": 26
2026-06-09T09:52:59.0474790Z             }
2026-06-09T09:52:59.0474876Z           ]
2026-06-09T09:52:59.0474961Z         },
2026-06-09T09:52:59.0475048Z         "int": {
2026-06-09T09:52:59.0475147Z           "complete": false,
2026-06-09T09:52:59.0475339Z           "evidence": []
2026-06-09T09:52:59.0475480Z         },
2026-06-09T09:52:59.0475581Z         "unit": {
2026-06-09T09:52:59.0475677Z           "complete": true,
2026-06-09T09:52:59.0475767Z           "evidence": [
2026-06-09T09:52:59.0475851Z             {
2026-06-09T09:52:59.0475971Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-09T09:52:59.0476057Z               "line": 150
2026-06-09T09:52:59.0476149Z             },
2026-06-09T09:52:59.0476230Z             {
2026-06-09T09:52:59.0476340Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-09T09:52:59.0476436Z               "line": 208
2026-06-09T09:52:59.0476521Z             }
2026-06-09T09:52:59.0476607Z           ]
2026-06-09T09:52:59.0476689Z         }
2026-06-09T09:52:59.0476775Z       }
2026-06-09T09:52:59.0476860Z     },
2026-06-09T09:52:59.0476941Z     {
2026-06-09T09:52:59.0477065Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-09T09:52:59.0478461Z       "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-09T09:52:59.0478576Z       "requiredStages": [
2026-06-09T09:52:59.0478660Z         "doc",
2026-06-09T09:52:59.0478745Z         "impl",
2026-06-09T09:52:59.0478820Z         "unit"
2026-06-09T09:52:59.0478903Z       ],
2026-06-09T09:52:59.0479097Z       "stages": {
2026-06-09T09:52:59.0479174Z         "doc": {
2026-06-09T09:52:59.0479270Z           "complete": true,
2026-06-09T09:52:59.0479360Z           "evidence": [
2026-06-09T09:52:59.0479440Z             {
2026-06-09T09:52:59.0479542Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-09T09:52:59.0479627Z               "line": 213
2026-06-09T09:52:59.0479727Z             }
2026-06-09T09:52:59.0479808Z           ]
2026-06-09T09:52:59.0479894Z         },
2026-06-09T09:52:59.0479970Z         "impl": {
2026-06-09T09:52:59.0480065Z           "complete": true,
2026-06-09T09:52:59.0480152Z           "evidence": [
2026-06-09T09:52:59.0480233Z             {
2026-06-09T09:52:59.0480356Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-09T09:52:59.0480443Z               "line": 54
2026-06-09T09:52:59.0480529Z             },
2026-06-09T09:52:59.0480609Z             {
2026-06-09T09:52:59.0480733Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-09T09:52:59.0480825Z               "line": 490
2026-06-09T09:52:59.0480914Z             },
2026-06-09T09:52:59.0481000Z             {
2026-06-09T09:52:59.0481121Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-09T09:52:59.0481215Z               "line": 36
2026-06-09T09:52:59.0481295Z             },
2026-06-09T09:52:59.0481380Z             {
2026-06-09T09:52:59.0481506Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-09T09:52:59.0481595Z               "line": 59
2026-06-09T09:52:59.0481676Z             },
2026-06-09T09:52:59.0481758Z             {
2026-06-09T09:52:59.0481877Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-09T09:52:59.0481962Z               "line": 83
2026-06-09T09:52:59.0482053Z             },
2026-06-09T09:52:59.0482135Z             {
2026-06-09T09:52:59.0482258Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-09T09:52:59.0482349Z               "line": 140
2026-06-09T09:52:59.0482435Z             },
2026-06-09T09:52:59.0482624Z             {
2026-06-09T09:52:59.0482740Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-09T09:52:59.0482835Z               "line": 159
2026-06-09T09:52:59.0482921Z             },
2026-06-09T09:52:59.0483002Z             {
2026-06-09T09:52:59.0483127Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-09T09:52:59.0483211Z               "line": 384
2026-06-09T09:52:59.0483408Z             },
2026-06-09T09:52:59.0483493Z             {
2026-06-09T09:52:59.0483611Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-09T09:52:59.0483706Z               "line": 526
2026-06-09T09:52:59.0483791Z             },
2026-06-09T09:52:59.0483871Z             {
2026-06-09T09:52:59.0483986Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-09T09:52:59.0484072Z               "line": 572
2026-06-09T09:52:59.0484158Z             },
2026-06-09T09:52:59.0484243Z             {
2026-06-09T09:52:59.0484353Z               "path": "crates/spt/src/elevation.rs",
2026-06-09T09:52:59.0484449Z               "line": 145
2026-06-09T09:52:59.0484533Z             },
2026-06-09T09:52:59.0484620Z             {
2026-06-09T09:52:59.0484730Z               "path": "crates/spt/src/main.rs",
2026-06-09T09:52:59.0484820Z               "line": 39
2026-06-09T09:52:59.0484906Z             }
2026-06-09T09:52:59.0484992Z           ]
2026-06-09T09:52:59.0485082Z         },
2026-06-09T09:52:59.0485163Z         "int": {
2026-06-09T09:52:59.0485254Z           "complete": false,
2026-06-09T09:52:59.0485345Z           "evidence": []
2026-06-09T09:52:59.0485436Z         },
2026-06-09T09:52:59.0485549Z         "unit": {
2026-06-09T09:52:59.0485641Z           "complete": true,
2026-06-09T09:52:59.0485725Z           "evidence": [
2026-06-09T09:52:59.0485816Z             {
2026-06-09T09:52:59.0485932Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-09T09:52:59.0486022Z               "line": 785
2026-06-09T09:52:59.0486103Z             },
2026-06-09T09:52:59.0486189Z             {
2026-06-09T09:52:59.0486323Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-09T09:52:59.0486407Z               "line": 826
2026-06-09T09:52:59.0486497Z             },
2026-06-09T09:52:59.0486573Z             {
2026-06-09T09:52:59.0486700Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-09T09:52:59.0486781Z               "line": 900
2026-06-09T09:52:59.0486876Z             }
2026-06-09T09:52:59.0486958Z           ]
2026-06-09T09:52:59.0487039Z         }
2026-06-09T09:52:59.0487129Z       }
2026-06-09T09:52:59.0487206Z     },
2026-06-09T09:52:59.0487291Z     {
2026-06-09T09:52:59.0487410Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-09T09:52:59.0489281Z       "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-09T09:52:59.0489380Z       "requiredStages": [
2026-06-09T09:52:59.0489467Z         "impl",
2026-06-09T09:52:59.0489572Z         "unit"
2026-06-09T09:52:59.0489658Z       ],
2026-06-09T09:52:59.0489743Z       "stages": {
2026-06-09T09:52:59.0489825Z         "doc": {
2026-06-09T09:52:59.0489920Z           "complete": false,
2026-06-09T09:52:59.0490010Z           "evidence": []
2026-06-09T09:52:59.0490093Z         },
2026-06-09T09:52:59.0490183Z         "impl": {
2026-06-09T09:52:59.0490272Z           "complete": true,
2026-06-09T09:52:59.0490364Z           "evidence": [
2026-06-09T09:52:59.0490450Z             {
2026-06-09T09:52:59.0490573Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-09T09:52:59.0490783Z               "line": 31
2026-06-09T09:52:59.0490869Z             }
2026-06-09T09:52:59.0490955Z           ]
2026-06-09T09:52:59.0491037Z         },
2026-06-09T09:52:59.0491122Z         "int": {
2026-06-09T09:52:59.0491217Z           "complete": false,
2026-06-09T09:52:59.0491298Z           "evidence": []
2026-06-09T09:52:59.0491381Z         },
2026-06-09T09:52:59.0491560Z         "unit": {
2026-06-09T09:52:59.0491652Z           "complete": true,
2026-06-09T09:52:59.0491747Z           "evidence": [
2026-06-09T09:52:59.0491822Z             {
2026-06-09T09:52:59.0491969Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-09T09:52:59.0492056Z               "line": 181
2026-06-09T09:52:59.0492146Z             }
2026-06-09T09:52:59.0492226Z           ]
2026-06-09T09:52:59.0492308Z         }
2026-06-09T09:52:59.0492399Z       }
2026-06-09T09:52:59.0492470Z     },
2026-06-09T09:52:59.0492560Z     {
2026-06-09T09:52:59.0492676Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-09T09:52:59.0492837Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-09T09:52:59.0492932Z       "requiredStages": [
2026-06-09T09:52:59.0493028Z         "impl",
2026-06-09T09:52:59.0493114Z         "unit"
2026-06-09T09:52:59.0493194Z       ],
2026-06-09T09:52:59.0493277Z       "stages": {
2026-06-09T09:52:59.0493358Z         "doc": {
2026-06-09T09:52:59.0493462Z           "complete": false,
2026-06-09T09:52:59.0493548Z           "evidence": []
2026-06-09T09:52:59.0493634Z         },
2026-06-09T09:52:59.0493719Z         "impl": {
2026-06-09T09:52:59.0493810Z           "complete": true,
2026-06-09T09:52:59.0493896Z           "evidence": [
2026-06-09T09:52:59.0493982Z             {
2026-06-09T09:52:59.0494104Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-09T09:52:59.0494190Z               "line": 49
2026-06-09T09:52:59.0494276Z             },
2026-06-09T09:52:59.0494361Z             {
2026-06-09T09:52:59.0494469Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-09T09:52:59.0494565Z               "line": 81
2026-06-09T09:52:59.0494646Z             }
2026-06-09T09:52:59.0494732Z           ]
2026-06-09T09:52:59.0494812Z         },
2026-06-09T09:52:59.0494903Z         "int": {
2026-06-09T09:52:59.0494994Z           "complete": false,
2026-06-09T09:52:59.0495084Z           "evidence": []
2026-06-09T09:52:59.0495170Z         },
2026-06-09T09:52:59.0495257Z         "unit": {
2026-06-09T09:52:59.0495356Z           "complete": true,
2026-06-09T09:52:59.0495446Z           "evidence": [
2026-06-09T09:52:59.0495529Z             {
2026-06-09T09:52:59.0495647Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-09T09:52:59.0495732Z               "line": 156
2026-06-09T09:52:59.0495824Z             },
2026-06-09T09:52:59.0495905Z             {
2026-06-09T09:52:59.0496019Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-09T09:52:59.0496105Z               "line": 173
2026-06-09T09:52:59.0496192Z             },
2026-06-09T09:52:59.0496272Z             {
2026-06-09T09:52:59.0496395Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-09T09:52:59.0496483Z               "line": 196
2026-06-09T09:52:59.0496563Z             }
2026-06-09T09:52:59.0496648Z           ]
2026-06-09T09:52:59.0496730Z         }
2026-06-09T09:52:59.0496816Z       }
2026-06-09T09:52:59.0496902Z     },
2026-06-09T09:52:59.0496981Z     {
2026-06-09T09:52:59.0497115Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-09T09:52:59.0497279Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-09T09:52:59.0497379Z       "requiredStages": [
2026-06-09T09:52:59.0497446Z         "impl",
2026-06-09T09:52:59.0497537Z         "unit"
2026-06-09T09:52:59.0497622Z       ],
2026-06-09T09:52:59.0497698Z       "stages": {
2026-06-09T09:52:59.0497786Z         "doc": {
2026-06-09T09:52:59.0497876Z           "complete": false,
2026-06-09T09:52:59.0497970Z           "evidence": []
2026-06-09T09:52:59.0498052Z         },
2026-06-09T09:52:59.0498215Z         "impl": {
2026-06-09T09:52:59.0498318Z           "complete": true,
2026-06-09T09:52:59.0498405Z           "evidence": [
2026-06-09T09:52:59.0498491Z             {
2026-06-09T09:52:59.0498604Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-09T09:52:59.0498696Z               "line": 120
2026-06-09T09:52:59.0498777Z             }
2026-06-09T09:52:59.0498933Z           ]
2026-06-09T09:52:59.0499102Z         },
2026-06-09T09:52:59.0499181Z         "int": {
2026-06-09T09:52:59.0499282Z           "complete": false,
2026-06-09T09:52:59.0499374Z           "evidence": []
2026-06-09T09:52:59.0499463Z         },
2026-06-09T09:52:59.0499548Z         "unit": {
2026-06-09T09:52:59.0499643Z           "complete": true,
2026-06-09T09:52:59.0499734Z           "evidence": [
2026-06-09T09:52:59.0499818Z             {
2026-06-09T09:52:59.0499940Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-09T09:52:59.0500027Z               "line": 212
2026-06-09T09:52:59.0500114Z             },
2026-06-09T09:52:59.0500203Z             {
2026-06-09T09:52:59.0500323Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-09T09:52:59.0500414Z               "line": 221
2026-06-09T09:52:59.0500494Z             },
2026-06-09T09:52:59.0500584Z             {
2026-06-09T09:52:59.0500700Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-09T09:52:59.0500795Z               "line": 229
2026-06-09T09:52:59.0500880Z             },
2026-06-09T09:52:59.0500967Z             {
2026-06-09T09:52:59.0501086Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-09T09:52:59.0501176Z               "line": 239
2026-06-09T09:52:59.0501263Z             },
2026-06-09T09:52:59.0501344Z             {
2026-06-09T09:52:59.0501462Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-09T09:52:59.0501543Z               "line": 249
2026-06-09T09:52:59.0501631Z             }
2026-06-09T09:52:59.0501715Z           ]
2026-06-09T09:52:59.0501796Z         }
2026-06-09T09:52:59.0501888Z       }
2026-06-09T09:52:59.0501974Z     },
2026-06-09T09:52:59.0502058Z     {
2026-06-09T09:52:59.0502173Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-09T09:52:59.0502335Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-09T09:52:59.0502430Z       "requiredStages": [
2026-06-09T09:52:59.0502515Z         "impl",
2026-06-09T09:52:59.0502606Z         "unit"
2026-06-09T09:52:59.0502692Z       ],
2026-06-09T09:52:59.0502782Z       "stages": {
2026-06-09T09:52:59.0502868Z         "doc": {
2026-06-09T09:52:59.0502959Z           "complete": false,
2026-06-09T09:52:59.0503049Z           "evidence": []
2026-06-09T09:52:59.0503129Z         },
2026-06-09T09:52:59.0503213Z         "impl": {
2026-06-09T09:52:59.0503302Z           "complete": true,
2026-06-09T09:52:59.0503392Z           "evidence": [
2026-06-09T09:52:59.0503474Z             {
2026-06-09T09:52:59.0503583Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-09T09:52:59.0503679Z               "line": 14
2026-06-09T09:52:59.0503769Z             },
2026-06-09T09:52:59.0503856Z             {
2026-06-09T09:52:59.0503965Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-09T09:52:59.0504060Z               "line": 62
2026-06-09T09:52:59.0504142Z             }
2026-06-09T09:52:59.0504227Z           ]
2026-06-09T09:52:59.0504313Z         },
2026-06-09T09:52:59.0504394Z         "int": {
2026-06-09T09:52:59.0504500Z           "complete": false,
2026-06-09T09:52:59.0504589Z           "evidence": []
2026-06-09T09:52:59.0504674Z         },
2026-06-09T09:52:59.0504755Z         "unit": {
2026-06-09T09:52:59.0504850Z           "complete": true,
2026-06-09T09:52:59.0504944Z           "evidence": [
2026-06-09T09:52:59.0505024Z             {
2026-06-09T09:52:59.0505135Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-09T09:52:59.0505221Z               "line": 160
2026-06-09T09:52:59.0505311Z             },
2026-06-09T09:52:59.0505392Z             {
2026-06-09T09:52:59.0505498Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-09T09:52:59.0505682Z               "line": 197
2026-06-09T09:52:59.0505760Z             },
2026-06-09T09:52:59.0505850Z             {
2026-06-09T09:52:59.0505950Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-09T09:52:59.0506040Z               "line": 219
2026-06-09T09:52:59.0506127Z             }
2026-06-09T09:52:59.0506231Z           ]
2026-06-09T09:52:59.0506413Z         }
2026-06-09T09:52:59.0506493Z       }
2026-06-09T09:52:59.0506579Z     },
2026-06-09T09:52:59.0506660Z     {
2026-06-09T09:52:59.0506766Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-09T09:52:59.0508122Z       "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-09T09:52:59.0508220Z       "requiredStages": [],
2026-06-09T09:52:59.0508312Z       "stages": {
2026-06-09T09:52:59.0508393Z         "doc": {
2026-06-09T09:52:59.0508488Z           "complete": true,
2026-06-09T09:52:59.0508578Z           "evidence": [
2026-06-09T09:52:59.0508660Z             {
2026-06-09T09:52:59.0508770Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-09T09:52:59.0508869Z               "line": 164
2026-06-09T09:52:59.0509051Z             }
2026-06-09T09:52:59.0509137Z           ]
2026-06-09T09:52:59.0509222Z         },
2026-06-09T09:52:59.0509314Z         "impl": {
2026-06-09T09:52:59.0509403Z           "complete": false,
2026-06-09T09:52:59.0509493Z           "evidence": []
2026-06-09T09:52:59.0509576Z         },
2026-06-09T09:52:59.0509667Z         "int": {
2026-06-09T09:52:59.0509755Z           "complete": false,
2026-06-09T09:52:59.0509847Z           "evidence": []
2026-06-09T09:52:59.0509934Z         },
2026-06-09T09:52:59.0510028Z         "unit": {
2026-06-09T09:52:59.0510122Z           "complete": false,
2026-06-09T09:52:59.0510213Z           "evidence": []
2026-06-09T09:52:59.0510308Z         }
2026-06-09T09:52:59.0510387Z       }
2026-06-09T09:52:59.0510473Z     },
2026-06-09T09:52:59.0510554Z     {
2026-06-09T09:52:59.0510674Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-09T09:52:59.0510888Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-09T09:52:59.0510983Z       "requiredStages": [
2026-06-09T09:52:59.0511068Z         "impl",
2026-06-09T09:52:59.0511154Z         "unit"
2026-06-09T09:52:59.0511237Z       ],
2026-06-09T09:52:59.0511327Z       "stages": {
2026-06-09T09:52:59.0511407Z         "doc": {
2026-06-09T09:52:59.0511499Z           "complete": false,
2026-06-09T09:52:59.0511589Z           "evidence": []
2026-06-09T09:52:59.0511670Z         },
2026-06-09T09:52:59.0511755Z         "impl": {
2026-06-09T09:52:59.0511847Z           "complete": true,
2026-06-09T09:52:59.0511946Z           "evidence": [
2026-06-09T09:52:59.0512032Z             {
2026-06-09T09:52:59.0512152Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-09T09:52:59.0512238Z               "line": 76
2026-06-09T09:52:59.0512323Z             },
2026-06-09T09:52:59.0512409Z             {
2026-06-09T09:52:59.0512525Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-09T09:52:59.0512623Z               "line": 167
2026-06-09T09:52:59.0512709Z             },
2026-06-09T09:52:59.0512796Z             {
2026-06-09T09:52:59.0512905Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-09T09:52:59.0512994Z               "line": 233
2026-06-09T09:52:59.0513075Z             },
2026-06-09T09:52:59.0513162Z             {
2026-06-09T09:52:59.0513275Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-09T09:52:59.0513361Z               "line": 272
2026-06-09T09:52:59.0513443Z             }
2026-06-09T09:52:59.0513524Z           ]
2026-06-09T09:52:59.0513604Z         },
2026-06-09T09:52:59.0513815Z         "int": {
2026-06-09T09:52:59.0513915Z           "complete": false,
2026-06-09T09:52:59.0514009Z           "evidence": []
2026-06-09T09:52:59.0514092Z         },
2026-06-09T09:52:59.0514177Z         "unit": {
2026-06-09T09:52:59.0514267Z           "complete": true,
2026-06-09T09:52:59.0514358Z           "evidence": [
2026-06-09T09:52:59.0514440Z             {
2026-06-09T09:52:59.0514644Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-09T09:52:59.0514736Z               "line": 321
2026-06-09T09:52:59.0514821Z             },
2026-06-09T09:52:59.0514901Z             {
2026-06-09T09:52:59.0515012Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-09T09:52:59.0515102Z               "line": 329
2026-06-09T09:52:59.0515187Z             },
2026-06-09T09:52:59.0515272Z             {
2026-06-09T09:52:59.0515387Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-09T09:52:59.0515471Z               "line": 356
2026-06-09T09:52:59.0515556Z             },
2026-06-09T09:52:59.0515651Z             {
2026-06-09T09:52:59.0515762Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-09T09:52:59.0515852Z               "line": 395
2026-06-09T09:52:59.0515937Z             },
2026-06-09T09:52:59.0516024Z             {
2026-06-09T09:52:59.0516133Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-09T09:52:59.0516232Z               "line": 406
2026-06-09T09:52:59.0516310Z             },
2026-06-09T09:52:59.0516396Z             {
2026-06-09T09:52:59.0516505Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-09T09:52:59.0516596Z               "line": 418
2026-06-09T09:52:59.0516672Z             },
2026-06-09T09:52:59.0516753Z             {
2026-06-09T09:52:59.0516862Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-09T09:52:59.0516949Z               "line": 442
2026-06-09T09:52:59.0517035Z             }
2026-06-09T09:52:59.0517116Z           ]
2026-06-09T09:52:59.0517205Z         }
2026-06-09T09:52:59.0519826Z       }
2026-06-09T09:52:59.0519959Z     },
2026-06-09T09:52:59.0520058Z     {
2026-06-09T09:52:59.0520179Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-09T09:52:59.0520359Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-09T09:52:59.0520466Z       "requiredStages": [
2026-06-09T09:52:59.0520565Z         "impl",
2026-06-09T09:52:59.0520668Z         "int"
2026-06-09T09:52:59.0520768Z       ],
2026-06-09T09:52:59.0520868Z       "stages": {
2026-06-09T09:52:59.0520961Z         "doc": {
2026-06-09T09:52:59.0521075Z           "complete": false,
2026-06-09T09:52:59.0521172Z           "evidence": []
2026-06-09T09:52:59.0521272Z         },
2026-06-09T09:52:59.0521371Z         "impl": {
2026-06-09T09:52:59.0521468Z           "complete": true,
2026-06-09T09:52:59.0521573Z           "evidence": [
2026-06-09T09:52:59.0521657Z             {
2026-06-09T09:52:59.0521802Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-09T09:52:59.0521897Z               "line": 22
2026-06-09T09:52:59.0522000Z             }
2026-06-09T09:52:59.0522111Z           ]
2026-06-09T09:52:59.0522196Z         },
2026-06-09T09:52:59.0522301Z         "int": {
2026-06-09T09:52:59.0522402Z           "complete": true,
2026-06-09T09:52:59.0522511Z           "evidence": [
2026-06-09T09:52:59.0522601Z             {
2026-06-09T09:52:59.0522755Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-09T09:52:59.0522863Z               "line": 18
2026-06-09T09:52:59.0522950Z             }
2026-06-09T09:52:59.0523046Z           ]
2026-06-09T09:52:59.0523136Z         },
2026-06-09T09:52:59.0523231Z         "unit": {
2026-06-09T09:52:59.0523333Z           "complete": false,
2026-06-09T09:52:59.0523432Z           "evidence": []
2026-06-09T09:52:59.0523530Z         }
2026-06-09T09:52:59.0523615Z       }
2026-06-09T09:52:59.0523722Z     },
2026-06-09T09:52:59.0523812Z     {
2026-06-09T09:52:59.0523945Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-09T09:52:59.0524318Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-09T09:52:59.0524442Z       "requiredStages": [
2026-06-09T09:52:59.0524541Z         "impl",
2026-06-09T09:52:59.0524632Z         "unit"
2026-06-09T09:52:59.0524732Z       ],
2026-06-09T09:52:59.0524822Z       "stages": {
2026-06-09T09:52:59.0524918Z         "doc": {
2026-06-09T09:52:59.0525014Z           "complete": false,
2026-06-09T09:52:59.0525228Z           "evidence": []
2026-06-09T09:52:59.0525325Z         },
2026-06-09T09:52:59.0525413Z         "impl": {
2026-06-09T09:52:59.0525528Z           "complete": true,
2026-06-09T09:52:59.0525621Z           "evidence": [
2026-06-09T09:52:59.0525718Z             {
2026-06-09T09:52:59.0525847Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.0544404Z               "line": 372
2026-06-09T09:52:59.0544515Z             },
2026-06-09T09:52:59.0544609Z             {
2026-06-09T09:52:59.0544770Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-09T09:52:59.0544866Z               "line": 27
2026-06-09T09:52:59.0545032Z             }
2026-06-09T09:52:59.0545128Z           ]
2026-06-09T09:52:59.0545218Z         },
2026-06-09T09:52:59.0545308Z         "int": {
2026-06-09T09:52:59.0545404Z           "complete": false,
2026-06-09T09:52:59.0545496Z           "evidence": []
2026-06-09T09:52:59.0545572Z         },
2026-06-09T09:52:59.0545661Z         "unit": {
2026-06-09T09:52:59.0545767Z           "complete": true,
2026-06-09T09:52:59.0545862Z           "evidence": [
2026-06-09T09:52:59.0545952Z             {
2026-06-09T09:52:59.0546087Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.0546186Z               "line": 817
2026-06-09T09:52:59.0546267Z             },
2026-06-09T09:52:59.0546358Z             {
2026-06-09T09:52:59.0546482Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-09T09:52:59.0546582Z               "line": 181
2026-06-09T09:52:59.0546668Z             }
2026-06-09T09:52:59.0546750Z           ]
2026-06-09T09:52:59.0546839Z         }
2026-06-09T09:52:59.0546929Z       }
2026-06-09T09:52:59.0547020Z     },
2026-06-09T09:52:59.0547101Z     {
2026-06-09T09:52:59.0547222Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-09T09:52:59.0547404Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-09T09:52:59.0547499Z       "requiredStages": [
2026-06-09T09:52:59.0547584Z         "impl",
2026-06-09T09:52:59.0547670Z         "unit"
2026-06-09T09:52:59.0547747Z       ],
2026-06-09T09:52:59.0547837Z       "stages": {
2026-06-09T09:52:59.0547941Z         "doc": {
2026-06-09T09:52:59.0548062Z           "complete": false,
2026-06-09T09:52:59.0548152Z           "evidence": []
2026-06-09T09:52:59.0548242Z         },
2026-06-09T09:52:59.0548334Z         "impl": {
2026-06-09T09:52:59.0548434Z           "complete": true,
2026-06-09T09:52:59.0548523Z           "evidence": [
2026-06-09T09:52:59.0548620Z             {
2026-06-09T09:52:59.0548748Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-09T09:52:59.0548853Z               "line": 20
2026-06-09T09:52:59.0549058Z             },
2026-06-09T09:52:59.0549149Z             {
2026-06-09T09:52:59.0549293Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-09T09:52:59.0549391Z               "line": 100
2026-06-09T09:52:59.0549502Z             },
2026-06-09T09:52:59.0549613Z             {
2026-06-09T09:52:59.0549763Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-09T09:52:59.0549887Z               "line": 68
2026-06-09T09:52:59.0549982Z             },
2026-06-09T09:52:59.0550085Z             {
2026-06-09T09:52:59.0550213Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-09T09:52:59.0550309Z               "line": 80
2026-06-09T09:52:59.0550404Z             }
2026-06-09T09:52:59.0550484Z           ]
2026-06-09T09:52:59.0550577Z         },
2026-06-09T09:52:59.0550657Z         "int": {
2026-06-09T09:52:59.0550757Z           "complete": false,
2026-06-09T09:52:59.0550848Z           "evidence": []
2026-06-09T09:52:59.0550939Z         },
2026-06-09T09:52:59.0551239Z         "unit": {
2026-06-09T09:52:59.0551334Z           "complete": true,
2026-06-09T09:52:59.0551434Z           "evidence": [
2026-06-09T09:52:59.0551516Z             {
2026-06-09T09:52:59.0551639Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-09T09:52:59.0551734Z               "line": 152
2026-06-09T09:52:59.0551816Z             },
2026-06-09T09:52:59.0552010Z             {
2026-06-09T09:52:59.0552126Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-09T09:52:59.0552221Z               "line": 175
2026-06-09T09:52:59.0552292Z             },
2026-06-09T09:52:59.0552382Z             {
2026-06-09T09:52:59.0552524Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-09T09:52:59.0552632Z               "line": 186
2026-06-09T09:52:59.0552717Z             },
2026-06-09T09:52:59.0552804Z             {
2026-06-09T09:52:59.0552929Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-09T09:52:59.0553013Z               "line": 202
2026-06-09T09:52:59.0553124Z             },
2026-06-09T09:52:59.0553219Z             {
2026-06-09T09:52:59.0553337Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-09T09:52:59.0553444Z               "line": 216
2026-06-09T09:52:59.0553534Z             },
2026-06-09T09:52:59.0553643Z             {
2026-06-09T09:52:59.0553768Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-09T09:52:59.0553891Z               "line": 137
2026-06-09T09:52:59.0553995Z             }
2026-06-09T09:52:59.0554088Z           ]
2026-06-09T09:52:59.0554187Z         }
2026-06-09T09:52:59.0554273Z       }
2026-06-09T09:52:59.0554359Z     },
2026-06-09T09:52:59.0554440Z     {
2026-06-09T09:52:59.0554553Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-09T09:52:59.0554821Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-09T09:52:59.0554917Z       "requiredStages": [
2026-06-09T09:52:59.0555008Z         "impl",
2026-06-09T09:52:59.0555099Z         "unit"
2026-06-09T09:52:59.0555187Z       ],
2026-06-09T09:52:59.0555272Z       "stages": {
2026-06-09T09:52:59.0555364Z         "doc": {
2026-06-09T09:52:59.0555460Z           "complete": true,
2026-06-09T09:52:59.0555549Z           "evidence": [
2026-06-09T09:52:59.0555635Z             {
2026-06-09T09:52:59.0555746Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-09T09:52:59.0555850Z               "line": 132
2026-06-09T09:52:59.0555935Z             }
2026-06-09T09:52:59.0556022Z           ]
2026-06-09T09:52:59.0556107Z         },
2026-06-09T09:52:59.0556197Z         "impl": {
2026-06-09T09:52:59.0556293Z           "complete": true,
2026-06-09T09:52:59.0556380Z           "evidence": [
2026-06-09T09:52:59.0556470Z             {
2026-06-09T09:52:59.0556584Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-09T09:52:59.0556681Z               "line": 65
2026-06-09T09:52:59.0556770Z             },
2026-06-09T09:52:59.0556841Z             {
2026-06-09T09:52:59.0556986Z               "path": "crates/spt-proto/src/id.rs",
2026-06-09T09:52:59.0557103Z               "line": 17
2026-06-09T09:52:59.0557194Z             },
2026-06-09T09:52:59.0557277Z             {
2026-06-09T09:52:59.0557404Z               "path": "crates/spt/src/api/startup.rs",
2026-06-09T09:52:59.0557504Z               "line": 217
2026-06-09T09:52:59.0557589Z             },
2026-06-09T09:52:59.0557698Z             {
2026-06-09T09:52:59.0557821Z               "path": "crates/spt/src/api/startup.rs",
2026-06-09T09:52:59.0557925Z               "line": 317
2026-06-09T09:52:59.0558012Z             },
2026-06-09T09:52:59.0558116Z             {
2026-06-09T09:52:59.0558254Z               "path": "crates/spt/src/api/worker.rs",
2026-06-09T09:52:59.0558350Z               "line": 32
2026-06-09T09:52:59.0558449Z             },
2026-06-09T09:52:59.0558536Z             {
2026-06-09T09:52:59.0558669Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0558764Z               "line": 4360
2026-06-09T09:52:59.0558846Z             },
2026-06-09T09:52:59.0559107Z             {
2026-06-09T09:52:59.0559223Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0559313Z               "line": 4628
2026-06-09T09:52:59.0559389Z             }
2026-06-09T09:52:59.0559475Z           ]
2026-06-09T09:52:59.0559581Z         },
2026-06-09T09:52:59.0559694Z         "int": {
2026-06-09T09:52:59.0559795Z           "complete": false,
2026-06-09T09:52:59.0559989Z           "evidence": []
2026-06-09T09:52:59.0560076Z         },
2026-06-09T09:52:59.0560163Z         "unit": {
2026-06-09T09:52:59.0560266Z           "complete": true,
2026-06-09T09:52:59.0560352Z           "evidence": [
2026-06-09T09:52:59.0560442Z             {
2026-06-09T09:52:59.0560565Z               "path": "crates/spt-proto/src/id.rs",
2026-06-09T09:52:59.0560654Z               "line": 94
2026-06-09T09:52:59.0560744Z             },
2026-06-09T09:52:59.0560826Z             {
2026-06-09T09:52:59.0560940Z               "path": "crates/spt-proto/src/id.rs",
2026-06-09T09:52:59.0561035Z               "line": 111
2026-06-09T09:52:59.0561127Z             },
2026-06-09T09:52:59.0561208Z             {
2026-06-09T09:52:59.0561307Z               "path": "crates/spt-proto/src/id.rs",
2026-06-09T09:52:59.0561398Z               "line": 124
2026-06-09T09:52:59.0561475Z             },
2026-06-09T09:52:59.0561575Z             {
2026-06-09T09:52:59.0561693Z               "path": "crates/spt-proto/src/id.rs",
2026-06-09T09:52:59.0561800Z               "line": 134
2026-06-09T09:52:59.0561894Z             },
2026-06-09T09:52:59.0561975Z             {
2026-06-09T09:52:59.0562100Z               "path": "crates/spt-proto/src/id.rs",
2026-06-09T09:52:59.0562194Z               "line": 144
2026-06-09T09:52:59.0562299Z             },
2026-06-09T09:52:59.0562386Z             {
2026-06-09T09:52:59.0562514Z               "path": "crates/spt-proto/src/id.rs",
2026-06-09T09:52:59.0562619Z               "line": 156
2026-06-09T09:52:59.0562706Z             },
2026-06-09T09:52:59.0562810Z             {
2026-06-09T09:52:59.0562960Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-09T09:52:59.0563076Z               "line": 714
2026-06-09T09:52:59.0563183Z             }
2026-06-09T09:52:59.0563277Z           ]
2026-06-09T09:52:59.0563369Z         }
2026-06-09T09:52:59.0563455Z       }
2026-06-09T09:52:59.0563545Z     },
2026-06-09T09:52:59.0563626Z     {
2026-06-09T09:52:59.0563746Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-09T09:52:59.0563884Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-09T09:52:59.0563989Z       "requiredStages": [
2026-06-09T09:52:59.0564080Z         "impl",
2026-06-09T09:52:59.0564161Z         "unit"
2026-06-09T09:52:59.0564250Z       ],
2026-06-09T09:52:59.0564338Z       "stages": {
2026-06-09T09:52:59.0564427Z         "doc": {
2026-06-09T09:52:59.0564518Z           "complete": false,
2026-06-09T09:52:59.0564618Z           "evidence": []
2026-06-09T09:52:59.0564709Z         },
2026-06-09T09:52:59.0564790Z         "impl": {
2026-06-09T09:52:59.0564899Z           "complete": true,
2026-06-09T09:52:59.0564986Z           "evidence": [
2026-06-09T09:52:59.0565081Z             {
2026-06-09T09:52:59.0565239Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-09T09:52:59.0565344Z               "line": 128
2026-06-09T09:52:59.0565438Z             }
2026-06-09T09:52:59.0565519Z           ]
2026-06-09T09:52:59.0565611Z         },
2026-06-09T09:52:59.0565701Z         "int": {
2026-06-09T09:52:59.0565804Z           "complete": false,
2026-06-09T09:52:59.0565890Z           "evidence": []
2026-06-09T09:52:59.0565977Z         },
2026-06-09T09:52:59.0566091Z         "unit": {
2026-06-09T09:52:59.0566186Z           "complete": true,
2026-06-09T09:52:59.0566282Z           "evidence": [
2026-06-09T09:52:59.0566358Z             {
2026-06-09T09:52:59.0566476Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-09T09:52:59.0566563Z               "line": 205
2026-06-09T09:52:59.0566654Z             }
2026-06-09T09:52:59.0566734Z           ]
2026-06-09T09:52:59.0566982Z         }
2026-06-09T09:52:59.0567096Z       }
2026-06-09T09:52:59.0567188Z     },
2026-06-09T09:52:59.0567293Z     {
2026-06-09T09:52:59.0567430Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-09T09:52:59.0567622Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-09T09:52:59.0567730Z       "requiredStages": [
2026-06-09T09:52:59.0567917Z         "impl",
2026-06-09T09:52:59.0568030Z         "unit"
2026-06-09T09:52:59.0568120Z       ],
2026-06-09T09:52:59.0568230Z       "stages": {
2026-06-09T09:52:59.0568323Z         "doc": {
2026-06-09T09:52:59.0568409Z           "complete": false,
2026-06-09T09:52:59.0568524Z           "evidence": []
2026-06-09T09:52:59.0568606Z         },
2026-06-09T09:52:59.0568700Z         "impl": {
2026-06-09T09:52:59.0568791Z           "complete": true,
2026-06-09T09:52:59.0568886Z           "evidence": [
2026-06-09T09:52:59.0569062Z             {
2026-06-09T09:52:59.0569183Z               "path": "crates/spt-store/src/info.rs",
2026-06-09T09:52:59.0569291Z               "line": 246
2026-06-09T09:52:59.0569372Z             },
2026-06-09T09:52:59.0569464Z             {
2026-06-09T09:52:59.0569568Z               "path": "crates/spt-store/src/info.rs",
2026-06-09T09:52:59.0569663Z               "line": 257
2026-06-09T09:52:59.0569745Z             },
2026-06-09T09:52:59.0569840Z             {
2026-06-09T09:52:59.0569958Z               "path": "crates/spt-store/src/info.rs",
2026-06-09T09:52:59.0570045Z               "line": 275
2026-06-09T09:52:59.0570137Z             }
2026-06-09T09:52:59.0570220Z           ]
2026-06-09T09:52:59.0570307Z         },
2026-06-09T09:52:59.0570398Z         "int": {
2026-06-09T09:52:59.0570493Z           "complete": false,
2026-06-09T09:52:59.0570579Z           "evidence": []
2026-06-09T09:52:59.0570660Z         },
2026-06-09T09:52:59.0570752Z         "unit": {
2026-06-09T09:52:59.0570841Z           "complete": true,
2026-06-09T09:52:59.0570936Z           "evidence": [
2026-06-09T09:52:59.0571026Z             {
2026-06-09T09:52:59.0571190Z               "path": "crates/spt-store/src/info.rs",
2026-06-09T09:52:59.0571295Z               "line": 299
2026-06-09T09:52:59.0571381Z             },
2026-06-09T09:52:59.0571496Z             {
2026-06-09T09:52:59.0571605Z               "path": "crates/spt-store/src/info.rs",
2026-06-09T09:52:59.0571707Z               "line": 320
2026-06-09T09:52:59.0571806Z             },
2026-06-09T09:52:59.0571905Z             {
2026-06-09T09:52:59.0572036Z               "path": "crates/spt-store/src/info.rs",
2026-06-09T09:52:59.0572131Z               "line": 547
2026-06-09T09:52:59.0572234Z             },
2026-06-09T09:52:59.0572326Z             {
2026-06-09T09:52:59.0572454Z               "path": "crates/spt-store/src/info.rs",
2026-06-09T09:52:59.0572564Z               "line": 558
2026-06-09T09:52:59.0572651Z             },
2026-06-09T09:52:59.0572759Z             {
2026-06-09T09:52:59.0572869Z               "path": "crates/spt-store/src/info.rs",
2026-06-09T09:52:59.0572975Z               "line": 571
2026-06-09T09:52:59.0573055Z             }
2026-06-09T09:52:59.0573140Z           ]
2026-06-09T09:52:59.0573227Z         }
2026-06-09T09:52:59.0573309Z       }
2026-06-09T09:52:59.0573398Z     },
2026-06-09T09:52:59.0573478Z     {
2026-06-09T09:52:59.0573592Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-09T09:52:59.0574229Z       "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-09T09:52:59.0574344Z       "requiredStages": [
2026-06-09T09:52:59.0574439Z         "impl",
2026-06-09T09:52:59.0574525Z         "unit"
2026-06-09T09:52:59.0574611Z       ],
2026-06-09T09:52:59.0574697Z       "stages": {
2026-06-09T09:52:59.0574782Z         "doc": {
2026-06-09T09:52:59.0574869Z           "complete": false,
2026-06-09T09:52:59.0574964Z           "evidence": []
2026-06-09T09:52:59.0575050Z         },
2026-06-09T09:52:59.0575246Z         "impl": {
2026-06-09T09:52:59.0575340Z           "complete": true,
2026-06-09T09:52:59.0575421Z           "evidence": [
2026-06-09T09:52:59.0575518Z             {
2026-06-09T09:52:59.0575664Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.0575755Z               "line": 714
2026-06-09T09:52:59.0575847Z             }
2026-06-09T09:52:59.0576022Z           ]
2026-06-09T09:52:59.0576109Z         },
2026-06-09T09:52:59.0576190Z         "int": {
2026-06-09T09:52:59.0576284Z           "complete": false,
2026-06-09T09:52:59.0576369Z           "evidence": []
2026-06-09T09:52:59.0576455Z         },
2026-06-09T09:52:59.0576542Z         "unit": {
2026-06-09T09:52:59.0576632Z           "complete": true,
2026-06-09T09:52:59.0576721Z           "evidence": [
2026-06-09T09:52:59.0576804Z             {
2026-06-09T09:52:59.0576928Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.0577012Z               "line": 828
2026-06-09T09:52:59.0577099Z             }
2026-06-09T09:52:59.0577195Z           ]
2026-06-09T09:52:59.0577276Z         }
2026-06-09T09:52:59.0577355Z       }
2026-06-09T09:52:59.0577438Z     },
2026-06-09T09:52:59.0577524Z     {
2026-06-09T09:52:59.0577628Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-09T09:52:59.0577848Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-09T09:52:59.0577934Z       "requiredStages": [
2026-06-09T09:52:59.0578014Z         "impl",
2026-06-09T09:52:59.0578096Z         "unit"
2026-06-09T09:52:59.0578172Z       ],
2026-06-09T09:52:59.0578262Z       "stages": {
2026-06-09T09:52:59.0578339Z         "doc": {
2026-06-09T09:52:59.0578430Z           "complete": false,
2026-06-09T09:52:59.0578519Z           "evidence": []
2026-06-09T09:52:59.0578604Z         },
2026-06-09T09:52:59.0578700Z         "impl": {
2026-06-09T09:52:59.0578790Z           "complete": true,
2026-06-09T09:52:59.0578884Z           "evidence": [
2026-06-09T09:52:59.0579050Z             {
2026-06-09T09:52:59.0579171Z               "path": "crates/spt/src/api/auth.rs",
2026-06-09T09:52:59.0579284Z               "line": 14
2026-06-09T09:52:59.0579365Z             },
2026-06-09T09:52:59.0579456Z             {
2026-06-09T09:52:59.0579560Z               "path": "crates/spt/src/api/mod.rs",
2026-06-09T09:52:59.0579651Z               "line": 411
2026-06-09T09:52:59.0579733Z             }
2026-06-09T09:52:59.0579823Z           ]
2026-06-09T09:52:59.0579908Z         },
2026-06-09T09:52:59.0579995Z         "int": {
2026-06-09T09:52:59.0580090Z           "complete": false,
2026-06-09T09:52:59.0580176Z           "evidence": []
2026-06-09T09:52:59.0580266Z         },
2026-06-09T09:52:59.0580343Z         "unit": {
2026-06-09T09:52:59.0580442Z           "complete": true,
2026-06-09T09:52:59.0580533Z           "evidence": [
2026-06-09T09:52:59.0580610Z             {
2026-06-09T09:52:59.0580720Z               "path": "crates/spt/src/api/auth.rs",
2026-06-09T09:52:59.0580805Z               "line": 130
2026-06-09T09:52:59.0580905Z             },
2026-06-09T09:52:59.0580983Z             {
2026-06-09T09:52:59.0581100Z               "path": "crates/spt/src/api/auth.rs",
2026-06-09T09:52:59.0581186Z               "line": 138
2026-06-09T09:52:59.0581269Z             },
2026-06-09T09:52:59.0581355Z             {
2026-06-09T09:52:59.0581457Z               "path": "crates/spt/src/api/auth.rs",
2026-06-09T09:52:59.0581562Z               "line": 146
2026-06-09T09:52:59.0581653Z             },
2026-06-09T09:52:59.0581732Z             {
2026-06-09T09:52:59.0581846Z               "path": "crates/spt/src/api/auth.rs",
2026-06-09T09:52:59.0581932Z               "line": 154
2026-06-09T09:52:59.0582023Z             },
2026-06-09T09:52:59.0582098Z             {
2026-06-09T09:52:59.0582208Z               "path": "crates/spt/src/api/auth.rs",
2026-06-09T09:52:59.0582295Z               "line": 162
2026-06-09T09:52:59.0582376Z             },
2026-06-09T09:52:59.0582461Z             {
2026-06-09T09:52:59.0582676Z               "path": "crates/spt/src/api/auth.rs",
2026-06-09T09:52:59.0582766Z               "line": 170
2026-06-09T09:52:59.0582843Z             }
2026-06-09T09:52:59.0582934Z           ]
2026-06-09T09:52:59.0583019Z         }
2026-06-09T09:52:59.0583100Z       }
2026-06-09T09:52:59.0583191Z     },
2026-06-09T09:52:59.0583272Z     {
2026-06-09T09:52:59.0583381Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-09T09:52:59.0584604Z       "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-09T09:52:59.0584713Z       "requiredStages": [
2026-06-09T09:52:59.0584799Z         "impl",
2026-06-09T09:52:59.0584885Z         "unit"
2026-06-09T09:52:59.0584970Z       ],
2026-06-09T09:52:59.0585051Z       "stages": {
2026-06-09T09:52:59.0585139Z         "doc": {
2026-06-09T09:52:59.0585233Z           "complete": false,
2026-06-09T09:52:59.0585342Z           "evidence": []
2026-06-09T09:52:59.0585429Z         },
2026-06-09T09:52:59.0585514Z         "impl": {
2026-06-09T09:52:59.0585605Z           "complete": true,
2026-06-09T09:52:59.0585685Z           "evidence": [
2026-06-09T09:52:59.0585778Z             {
2026-06-09T09:52:59.0585919Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-09T09:52:59.0586019Z               "line": 34
2026-06-09T09:52:59.0586107Z             }
2026-06-09T09:52:59.0586205Z           ]
2026-06-09T09:52:59.0586296Z         },
2026-06-09T09:52:59.0586383Z         "int": {
2026-06-09T09:52:59.0586478Z           "complete": false,
2026-06-09T09:52:59.0586558Z           "evidence": []
2026-06-09T09:52:59.0586644Z         },
2026-06-09T09:52:59.0586736Z         "unit": {
2026-06-09T09:52:59.0586825Z           "complete": true,
2026-06-09T09:52:59.0586920Z           "evidence": [
2026-06-09T09:52:59.0586996Z             {
2026-06-09T09:52:59.0587145Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-09T09:52:59.0587239Z               "line": 188
2026-06-09T09:52:59.0587325Z             },
2026-06-09T09:52:59.0587412Z             {
2026-06-09T09:52:59.0587539Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-09T09:52:59.0587630Z               "line": 200
2026-06-09T09:52:59.0587712Z             },
2026-06-09T09:52:59.0587807Z             {
2026-06-09T09:52:59.0587935Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-09T09:52:59.0588022Z               "line": 211
2026-06-09T09:52:59.0588108Z             },
2026-06-09T09:52:59.0588188Z             {
2026-06-09T09:52:59.0588323Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-09T09:52:59.0588413Z               "line": 253
2026-06-09T09:52:59.0588498Z             },
2026-06-09T09:52:59.0588579Z             {
2026-06-09T09:52:59.0588708Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-09T09:52:59.0588807Z               "line": 277
2026-06-09T09:52:59.0588894Z             },
2026-06-09T09:52:59.0589052Z             {
2026-06-09T09:52:59.0589179Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-09T09:52:59.0589274Z               "line": 300
2026-06-09T09:52:59.0589383Z             },
2026-06-09T09:52:59.0589467Z             {
2026-06-09T09:52:59.0589620Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-09T09:52:59.0589707Z               "line": 316
2026-06-09T09:52:59.0589791Z             }
2026-06-09T09:52:59.0589873Z           ]
2026-06-09T09:52:59.0589959Z         }
2026-06-09T09:52:59.0590045Z       }
2026-06-09T09:52:59.0590120Z     },
2026-06-09T09:52:59.0590206Z     {
2026-06-09T09:52:59.0590317Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-09T09:52:59.0590951Z       "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-09T09:52:59.0591060Z       "requiredStages": [
2026-06-09T09:52:59.0591141Z         "impl",
2026-06-09T09:52:59.0591228Z         "unit"
2026-06-09T09:52:59.0591308Z       ],
2026-06-09T09:52:59.0591399Z       "stages": {
2026-06-09T09:52:59.0591480Z         "doc": {
2026-06-09T09:52:59.0591576Z           "complete": false,
2026-06-09T09:52:59.0591805Z           "evidence": []
2026-06-09T09:52:59.0591891Z         },
2026-06-09T09:52:59.0591975Z         "impl": {
2026-06-09T09:52:59.0592065Z           "complete": true,
2026-06-09T09:52:59.0592156Z           "evidence": [
2026-06-09T09:52:59.0592232Z             {
2026-06-09T09:52:59.0592358Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-09T09:52:59.0592444Z               "line": 29
2026-06-09T09:52:59.0592526Z             },
2026-06-09T09:52:59.0592612Z             {
2026-06-09T09:52:59.0592720Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-09T09:52:59.0592817Z               "line": 174
2026-06-09T09:52:59.0592897Z             },
2026-06-09T09:52:59.0592983Z             {
2026-06-09T09:52:59.0593098Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-09T09:52:59.0593184Z               "line": 194
2026-06-09T09:52:59.0593275Z             },
2026-06-09T09:52:59.0593354Z             {
2026-06-09T09:52:59.0593470Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-09T09:52:59.0593564Z               "line": 222
2026-06-09T09:52:59.0593650Z             }
2026-06-09T09:52:59.0593742Z           ]
2026-06-09T09:52:59.0593818Z         },
2026-06-09T09:52:59.0593907Z         "int": {
2026-06-09T09:52:59.0593994Z           "complete": false,
2026-06-09T09:52:59.0594090Z           "evidence": []
2026-06-09T09:52:59.0594175Z         },
2026-06-09T09:52:59.0594261Z         "unit": {
2026-06-09T09:52:59.0594357Z           "complete": true,
2026-06-09T09:52:59.0594444Z           "evidence": [
2026-06-09T09:52:59.0594527Z             {
2026-06-09T09:52:59.0594646Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-09T09:52:59.0594737Z               "line": 329
2026-06-09T09:52:59.0594822Z             },
2026-06-09T09:52:59.0594906Z             {
2026-06-09T09:52:59.0595021Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-09T09:52:59.0595107Z               "line": 344
2026-06-09T09:52:59.0595192Z             },
2026-06-09T09:52:59.0595278Z             {
2026-06-09T09:52:59.0595394Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-09T09:52:59.0595484Z               "line": 417
2026-06-09T09:52:59.0595568Z             },
2026-06-09T09:52:59.0595655Z             {
2026-06-09T09:52:59.0595760Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-09T09:52:59.0595855Z               "line": 433
2026-06-09T09:52:59.0595935Z             },
2026-06-09T09:52:59.0596028Z             {
2026-06-09T09:52:59.0596136Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-09T09:52:59.0596227Z               "line": 492
2026-06-09T09:52:59.0596323Z             },
2026-06-09T09:52:59.0596399Z             {
2026-06-09T09:52:59.0596517Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-09T09:52:59.0596604Z               "line": 506
2026-06-09T09:52:59.0596690Z             },
2026-06-09T09:52:59.0596775Z             {
2026-06-09T09:52:59.0596890Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-09T09:52:59.0596987Z               "line": 517
2026-06-09T09:52:59.0597070Z             },
2026-06-09T09:52:59.0597157Z             {
2026-06-09T09:52:59.0597267Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-09T09:52:59.0597357Z               "line": 528
2026-06-09T09:52:59.0597437Z             }
2026-06-09T09:52:59.0597527Z           ]
2026-06-09T09:52:59.0597614Z         }
2026-06-09T09:52:59.0597696Z       }
2026-06-09T09:52:59.0597780Z     },
2026-06-09T09:52:59.0597861Z     {
2026-06-09T09:52:59.0597991Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-09T09:52:59.0598781Z       "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-09T09:52:59.0598873Z       "requiredStages": [
2026-06-09T09:52:59.0599044Z         "impl",
2026-06-09T09:52:59.0599124Z         "unit"
2026-06-09T09:52:59.0599363Z       ],
2026-06-09T09:52:59.0599444Z       "stages": {
2026-06-09T09:52:59.0599532Z         "doc": {
2026-06-09T09:52:59.0599625Z           "complete": false,
2026-06-09T09:52:59.0599715Z           "evidence": []
2026-06-09T09:52:59.0599796Z         },
2026-06-09T09:52:59.0599877Z         "impl": {
2026-06-09T09:52:59.0599971Z           "complete": true,
2026-06-09T09:52:59.0600061Z           "evidence": [
2026-06-09T09:52:59.0600142Z             {
2026-06-09T09:52:59.0600281Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-09T09:52:59.0600366Z               "line": 27
2026-06-09T09:52:59.0600451Z             },
2026-06-09T09:52:59.0600548Z             {
2026-06-09T09:52:59.0600676Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-09T09:52:59.0600762Z               "line": 110
2026-06-09T09:52:59.0600848Z             },
2026-06-09T09:52:59.0600934Z             {
2026-06-09T09:52:59.0601057Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-09T09:52:59.0601163Z               "line": 153
2026-06-09T09:52:59.0601243Z             },
2026-06-09T09:52:59.0601338Z             {
2026-06-09T09:52:59.0601459Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-09T09:52:59.0601549Z               "line": 182
2026-06-09T09:52:59.0601639Z             },
2026-06-09T09:52:59.0601725Z             {
2026-06-09T09:52:59.0601878Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-09T09:52:59.0601968Z               "line": 31
2026-06-09T09:52:59.0602055Z             },
2026-06-09T09:52:59.0602136Z             {
2026-06-09T09:52:59.0602288Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-09T09:52:59.0602379Z               "line": 113
2026-06-09T09:52:59.0602461Z             },
2026-06-09T09:52:59.0602545Z             {
2026-06-09T09:52:59.0602682Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-09T09:52:59.0602773Z               "line": 138
2026-06-09T09:52:59.0602871Z             }
2026-06-09T09:52:59.0602951Z           ]
2026-06-09T09:52:59.0603043Z         },
2026-06-09T09:52:59.0603124Z         "int": {
2026-06-09T09:52:59.0603219Z           "complete": false,
2026-06-09T09:52:59.0603305Z           "evidence": []
2026-06-09T09:52:59.0603396Z         },
2026-06-09T09:52:59.0603477Z         "unit": {
2026-06-09T09:52:59.0603571Z           "complete": true,
2026-06-09T09:52:59.0603668Z           "evidence": [
2026-06-09T09:52:59.0603749Z             {
2026-06-09T09:52:59.0603877Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-09T09:52:59.0603972Z               "line": 261
2026-06-09T09:52:59.0604064Z             },
2026-06-09T09:52:59.0604144Z             {
2026-06-09T09:52:59.0604273Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-09T09:52:59.0604364Z               "line": 276
2026-06-09T09:52:59.0604449Z             },
2026-06-09T09:52:59.0604534Z             {
2026-06-09T09:52:59.0604660Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-09T09:52:59.0604764Z               "line": 293
2026-06-09T09:52:59.0604849Z             },
2026-06-09T09:52:59.0604932Z             {
2026-06-09T09:52:59.0605060Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-09T09:52:59.0605144Z               "line": 310
2026-06-09T09:52:59.0605239Z             },
2026-06-09T09:52:59.0605316Z             {
2026-06-09T09:52:59.0605447Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-09T09:52:59.0605537Z               "line": 327
2026-06-09T09:52:59.0605614Z             },
2026-06-09T09:52:59.0609500Z             {
2026-06-09T09:52:59.0609676Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-09T09:52:59.0609777Z               "line": 366
2026-06-09T09:52:59.0609862Z             },
2026-06-09T09:52:59.0609947Z             {
2026-06-09T09:52:59.0610111Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-09T09:52:59.0610294Z               "line": 179
2026-06-09T09:52:59.0610380Z             },
2026-06-09T09:52:59.0610461Z             {
2026-06-09T09:52:59.0610607Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-09T09:52:59.0610692Z               "line": 194
2026-06-09T09:52:59.0610774Z             },
2026-06-09T09:52:59.0610864Z             {
2026-06-09T09:52:59.0610998Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-09T09:52:59.0611094Z               "line": 204
2026-06-09T09:52:59.0611170Z             },
2026-06-09T09:52:59.0611260Z             {
2026-06-09T09:52:59.0611404Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-09T09:52:59.0611494Z               "line": 259
2026-06-09T09:52:59.0611588Z             },
2026-06-09T09:52:59.0611671Z             {
2026-06-09T09:52:59.0611808Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-09T09:52:59.0611894Z               "line": 269
2026-06-09T09:52:59.0611980Z             },
2026-06-09T09:52:59.0612066Z             {
2026-06-09T09:52:59.0612195Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-09T09:52:59.0612286Z               "line": 283
2026-06-09T09:52:59.0612367Z             }
2026-06-09T09:52:59.0612447Z           ]
2026-06-09T09:52:59.0612524Z         }
2026-06-09T09:52:59.0612605Z       }
2026-06-09T09:52:59.0612677Z     },
2026-06-09T09:52:59.0612766Z     {
2026-06-09T09:52:59.0612891Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-09T09:52:59.0613086Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-09T09:52:59.0613199Z       "requiredStages": [],
2026-06-09T09:52:59.0613286Z       "stages": {
2026-06-09T09:52:59.0613380Z         "doc": {
2026-06-09T09:52:59.0613478Z           "complete": false,
2026-06-09T09:52:59.0613564Z           "evidence": []
2026-06-09T09:52:59.0613651Z         },
2026-06-09T09:52:59.0613732Z         "impl": {
2026-06-09T09:52:59.0613831Z           "complete": false,
2026-06-09T09:52:59.0613923Z           "evidence": []
2026-06-09T09:52:59.0614013Z         },
2026-06-09T09:52:59.0614103Z         "int": {
2026-06-09T09:52:59.0614189Z           "complete": false,
2026-06-09T09:52:59.0614280Z           "evidence": []
2026-06-09T09:52:59.0614356Z         },
2026-06-09T09:52:59.0614446Z         "unit": {
2026-06-09T09:52:59.0614537Z           "complete": false,
2026-06-09T09:52:59.0614629Z           "evidence": []
2026-06-09T09:52:59.0614714Z         }
2026-06-09T09:52:59.0614794Z       }
2026-06-09T09:52:59.0614877Z     },
2026-06-09T09:52:59.0614958Z     {
2026-06-09T09:52:59.0615099Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-09T09:52:59.0616021Z       "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-09T09:52:59.0616121Z       "requiredStages": [
2026-06-09T09:52:59.0616232Z         "impl",
2026-06-09T09:52:59.0616313Z         "unit"
2026-06-09T09:52:59.0616403Z       ],
2026-06-09T09:52:59.0616489Z       "stages": {
2026-06-09T09:52:59.0616579Z         "doc": {
2026-06-09T09:52:59.0616679Z           "complete": false,
2026-06-09T09:52:59.0616765Z           "evidence": []
2026-06-09T09:52:59.0616852Z         },
2026-06-09T09:52:59.0616933Z         "impl": {
2026-06-09T09:52:59.0617027Z           "complete": true,
2026-06-09T09:52:59.0617114Z           "evidence": [
2026-06-09T09:52:59.0617204Z             {
2026-06-09T09:52:59.0617429Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-09T09:52:59.0617519Z               "line": 26
2026-06-09T09:52:59.0617605Z             },
2026-06-09T09:52:59.0617691Z             {
2026-06-09T09:52:59.0617816Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-09T09:52:59.0617899Z               "line": 95
2026-06-09T09:52:59.0617991Z             },
2026-06-09T09:52:59.0618154Z             {
2026-06-09T09:52:59.0618267Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-09T09:52:59.0618359Z               "line": 166
2026-06-09T09:52:59.0618445Z             },
2026-06-09T09:52:59.0618529Z             {
2026-06-09T09:52:59.0618647Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-09T09:52:59.0618739Z               "line": 19
2026-06-09T09:52:59.0618835Z             },
2026-06-09T09:52:59.0618919Z             {
2026-06-09T09:52:59.0619125Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-09T09:52:59.0619201Z               "line": 50
2026-06-09T09:52:59.0619320Z             },
2026-06-09T09:52:59.0619402Z             {
2026-06-09T09:52:59.0619530Z               "path": "crates/spt-live/src/turn.rs",
2026-06-09T09:52:59.0619620Z               "line": 18
2026-06-09T09:52:59.0619703Z             },
2026-06-09T09:52:59.0619788Z             {
2026-06-09T09:52:59.0619897Z               "path": "crates/spt-live/src/turn.rs",
2026-06-09T09:52:59.0620008Z               "line": 71
2026-06-09T09:52:59.0620088Z             },
2026-06-09T09:52:59.0620178Z             {
2026-06-09T09:52:59.0620298Z               "path": "crates/spt-proto/src/event.rs",
2026-06-09T09:52:59.0620380Z               "line": 70
2026-06-09T09:52:59.0620464Z             }
2026-06-09T09:52:59.0620545Z           ]
2026-06-09T09:52:59.0620632Z         },
2026-06-09T09:52:59.0620718Z         "int": {
2026-06-09T09:52:59.0620817Z           "complete": false,
2026-06-09T09:52:59.0620892Z           "evidence": []
2026-06-09T09:52:59.0620969Z         },
2026-06-09T09:52:59.0621054Z         "unit": {
2026-06-09T09:52:59.0621153Z           "complete": true,
2026-06-09T09:52:59.0621248Z           "evidence": [
2026-06-09T09:52:59.0621329Z             {
2026-06-09T09:52:59.0621448Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-09T09:52:59.0621543Z               "line": 289
2026-06-09T09:52:59.0621620Z             },
2026-06-09T09:52:59.0621711Z             {
2026-06-09T09:52:59.0621839Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-09T09:52:59.0621931Z               "line": 308
2026-06-09T09:52:59.0622011Z             },
2026-06-09T09:52:59.0622101Z             {
2026-06-09T09:52:59.0622221Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-09T09:52:59.0622311Z               "line": 336
2026-06-09T09:52:59.0622397Z             },
2026-06-09T09:52:59.0622478Z             {
2026-06-09T09:52:59.0622603Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-09T09:52:59.0622688Z               "line": 399
2026-06-09T09:52:59.0622774Z             },
2026-06-09T09:52:59.0622875Z             {
2026-06-09T09:52:59.0622993Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-09T09:52:59.0623084Z               "line": 410
2026-06-09T09:52:59.0623170Z             },
2026-06-09T09:52:59.0623256Z             {
2026-06-09T09:52:59.0623374Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-09T09:52:59.0623471Z               "line": 441
2026-06-09T09:52:59.0623557Z             },
2026-06-09T09:52:59.0623637Z             {
2026-06-09T09:52:59.0623759Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-09T09:52:59.0623846Z               "line": 452
2026-06-09T09:52:59.0623935Z             },
2026-06-09T09:52:59.0624025Z             {
2026-06-09T09:52:59.0624134Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-09T09:52:59.0624230Z               "line": 77
2026-06-09T09:52:59.0624315Z             },
2026-06-09T09:52:59.0624400Z             {
2026-06-09T09:52:59.0624616Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-09T09:52:59.0624710Z               "line": 97
2026-06-09T09:52:59.0624798Z             },
2026-06-09T09:52:59.0624883Z             {
2026-06-09T09:52:59.0625002Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-09T09:52:59.0625097Z               "line": 112
2026-06-09T09:52:59.0625184Z             },
2026-06-09T09:52:59.0625269Z             {
2026-06-09T09:52:59.0625508Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-09T09:52:59.0625597Z               "line": 123
2026-06-09T09:52:59.0625684Z             },
2026-06-09T09:52:59.0625775Z             {
2026-06-09T09:52:59.0625889Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-09T09:52:59.0625979Z               "line": 130
2026-06-09T09:52:59.0626062Z             },
2026-06-09T09:52:59.0626147Z             {
2026-06-09T09:52:59.0626269Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-09T09:52:59.0626359Z               "line": 145
2026-06-09T09:52:59.0626450Z             },
2026-06-09T09:52:59.0626544Z             {
2026-06-09T09:52:59.0626658Z               "path": "crates/spt-live/src/turn.rs",
2026-06-09T09:52:59.0626744Z               "line": 115
2026-06-09T09:52:59.0626836Z             },
2026-06-09T09:52:59.0626920Z             {
2026-06-09T09:52:59.0627030Z               "path": "crates/spt-live/src/turn.rs",
2026-06-09T09:52:59.0627126Z               "line": 130
2026-06-09T09:52:59.0627221Z             },
2026-06-09T09:52:59.0627320Z             {
2026-06-09T09:52:59.0627436Z               "path": "crates/spt-proto/src/event.rs",
2026-06-09T09:52:59.0627526Z               "line": 336
2026-06-09T09:52:59.0627616Z             }
2026-06-09T09:52:59.0627698Z           ]
2026-06-09T09:52:59.0627783Z         }
2026-06-09T09:52:59.0627864Z       }
2026-06-09T09:52:59.0627955Z     },
2026-06-09T09:52:59.0628032Z     {
2026-06-09T09:52:59.0628151Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-09T09:52:59.0628418Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-09T09:52:59.0628508Z       "requiredStages": [
2026-06-09T09:52:59.0628599Z         "impl",
2026-06-09T09:52:59.0628676Z         "unit"
2026-06-09T09:52:59.0628770Z       ],
2026-06-09T09:52:59.0628851Z       "stages": {
2026-06-09T09:52:59.0629038Z         "doc": {
2026-06-09T09:52:59.0629141Z           "complete": true,
2026-06-09T09:52:59.0629241Z           "evidence": [
2026-06-09T09:52:59.0629328Z             {
2026-06-09T09:52:59.0629432Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-09T09:52:59.0629527Z               "line": 138
2026-06-09T09:52:59.0629608Z             }
2026-06-09T09:52:59.0629694Z           ]
2026-06-09T09:52:59.0629784Z         },
2026-06-09T09:52:59.0629875Z         "impl": {
2026-06-09T09:52:59.0629972Z           "complete": true,
2026-06-09T09:52:59.0630058Z           "evidence": [
2026-06-09T09:52:59.0630147Z             {
2026-06-09T09:52:59.0630258Z               "path": "crates/spt-store/src/db.rs",
2026-06-09T09:52:59.0630366Z               "line": 29
2026-06-09T09:52:59.0630452Z             },
2026-06-09T09:52:59.0630534Z             {
2026-06-09T09:52:59.0630653Z               "path": "crates/spt-store/src/notif.rs",
2026-06-09T09:52:59.0630743Z               "line": 101
2026-06-09T09:52:59.0630829Z             },
2026-06-09T09:52:59.0630911Z             {
2026-06-09T09:52:59.0631048Z               "path": "crates/spt-store/src/registry.rs",
2026-06-09T09:52:59.0631144Z               "line": 30
2026-06-09T09:52:59.0631226Z             },
2026-06-09T09:52:59.0631310Z             {
2026-06-09T09:52:59.0631429Z               "path": "crates/spt-store/src/spool.rs",
2026-06-09T09:52:59.0631514Z               "line": 48
2026-06-09T09:52:59.0631591Z             }
2026-06-09T09:52:59.0631674Z           ]
2026-06-09T09:52:59.0631760Z         },
2026-06-09T09:52:59.0631851Z         "int": {
2026-06-09T09:52:59.0631947Z           "complete": false,
2026-06-09T09:52:59.0632037Z           "evidence": []
2026-06-09T09:52:59.0632233Z         },
2026-06-09T09:52:59.0632318Z         "unit": {
2026-06-09T09:52:59.0632413Z           "complete": true,
2026-06-09T09:52:59.0632505Z           "evidence": [
2026-06-09T09:52:59.0632590Z             {
2026-06-09T09:52:59.0632709Z               "path": "crates/spt-store/src/registry.rs",
2026-06-09T09:52:59.0632796Z               "line": 162
2026-06-09T09:52:59.0632981Z             }
2026-06-09T09:52:59.0633071Z           ]
2026-06-09T09:52:59.0633154Z         }
2026-06-09T09:52:59.0633243Z       }
2026-06-09T09:52:59.0633324Z     },
2026-06-09T09:52:59.0633411Z     {
2026-06-09T09:52:59.0633525Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-09T09:52:59.0633934Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-09T09:52:59.0634036Z       "requiredStages": [
2026-06-09T09:52:59.0634117Z         "doc",
2026-06-09T09:52:59.0634206Z         "impl",
2026-06-09T09:52:59.0634291Z         "unit"
2026-06-09T09:52:59.0634391Z       ],
2026-06-09T09:52:59.0634481Z       "stages": {
2026-06-09T09:52:59.0634570Z         "doc": {
2026-06-09T09:52:59.0634670Z           "complete": true,
2026-06-09T09:52:59.0634756Z           "evidence": [
2026-06-09T09:52:59.0634847Z             {
2026-06-09T09:52:59.0634951Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-09T09:52:59.0635058Z               "line": 150
2026-06-09T09:52:59.0635143Z             }
2026-06-09T09:52:59.0635228Z           ]
2026-06-09T09:52:59.0635319Z         },
2026-06-09T09:52:59.0635410Z         "impl": {
2026-06-09T09:52:59.0635505Z           "complete": true,
2026-06-09T09:52:59.0635590Z           "evidence": [
2026-06-09T09:52:59.0635682Z             {
2026-06-09T09:52:59.0635796Z               "path": "crates/spt-store/src/registry.rs",
2026-06-09T09:52:59.0635891Z               "line": 22
2026-06-09T09:52:59.0635977Z             }
2026-06-09T09:52:59.0636058Z           ]
2026-06-09T09:52:59.0636144Z         },
2026-06-09T09:52:59.0636234Z         "int": {
2026-06-09T09:52:59.0636336Z           "complete": false,
2026-06-09T09:52:59.0636421Z           "evidence": []
2026-06-09T09:52:59.0636511Z         },
2026-06-09T09:52:59.0636607Z         "unit": {
2026-06-09T09:52:59.0636693Z           "complete": true,
2026-06-09T09:52:59.0636782Z           "evidence": [
2026-06-09T09:52:59.0636867Z             {
2026-06-09T09:52:59.0636996Z               "path": "crates/spt-store/src/registry.rs",
2026-06-09T09:52:59.0637081Z               "line": 298
2026-06-09T09:52:59.0637170Z             }
2026-06-09T09:52:59.0637256Z           ]
2026-06-09T09:52:59.0637338Z         }
2026-06-09T09:52:59.0637428Z       }
2026-06-09T09:52:59.0637508Z     },
2026-06-09T09:52:59.0637600Z     {
2026-06-09T09:52:59.0637714Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-09T09:52:59.0638161Z       "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-09T09:52:59.0638272Z       "requiredStages": [
2026-06-09T09:52:59.0638358Z         "impl",
2026-06-09T09:52:59.0638443Z         "unit"
2026-06-09T09:52:59.0638524Z       ],
2026-06-09T09:52:59.0638616Z       "stages": {
2026-06-09T09:52:59.0638701Z         "doc": {
2026-06-09T09:52:59.0638796Z           "complete": true,
2026-06-09T09:52:59.0638879Z           "evidence": [
2026-06-09T09:52:59.0639049Z             {
2026-06-09T09:52:59.0639159Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-09T09:52:59.0639236Z               "line": 144
2026-06-09T09:52:59.0639316Z             }
2026-06-09T09:52:59.0639388Z           ]
2026-06-09T09:52:59.0639465Z         },
2026-06-09T09:52:59.0639546Z         "impl": {
2026-06-09T09:52:59.0639659Z           "complete": true,
2026-06-09T09:52:59.0639749Z           "evidence": [
2026-06-09T09:52:59.0639825Z             {
2026-06-09T09:52:59.0639951Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.0640030Z               "line": 540
2026-06-09T09:52:59.0640227Z             },
2026-06-09T09:52:59.0640317Z             {
2026-06-09T09:52:59.0640435Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.0640527Z               "line": 184
2026-06-09T09:52:59.0640613Z             },
2026-06-09T09:52:59.0640692Z             {
2026-06-09T09:52:59.0640808Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0640993Z               "line": 282
2026-06-09T09:52:59.0641084Z             },
2026-06-09T09:52:59.0641162Z             {
2026-06-09T09:52:59.0641280Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-09T09:52:59.0641370Z               "line": 15
2026-06-09T09:52:59.0641457Z             }
2026-06-09T09:52:59.0641537Z           ]
2026-06-09T09:52:59.0641623Z         },
2026-06-09T09:52:59.0641713Z         "int": {
2026-06-09T09:52:59.0641806Z           "complete": false,
2026-06-09T09:52:59.0641899Z           "evidence": []
2026-06-09T09:52:59.0641984Z         },
2026-06-09T09:52:59.0642089Z         "unit": {
2026-06-09T09:52:59.0642170Z           "complete": true,
2026-06-09T09:52:59.0642254Z           "evidence": [
2026-06-09T09:52:59.0642339Z             {
2026-06-09T09:52:59.0642474Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.0642568Z               "line": 856
2026-06-09T09:52:59.0642649Z             },
2026-06-09T09:52:59.0642745Z             {
2026-06-09T09:52:59.0642878Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-09T09:52:59.0642973Z               "line": 88
2026-06-09T09:52:59.0643070Z             },
2026-06-09T09:52:59.0643155Z             {
2026-06-09T09:52:59.0643283Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0643370Z               "line": 802
2026-06-09T09:52:59.0643460Z             },
2026-06-09T09:52:59.0643546Z             {
2026-06-09T09:52:59.0643666Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0643756Z               "line": 821
2026-06-09T09:52:59.0643842Z             },
2026-06-09T09:52:59.0643937Z             {
2026-06-09T09:52:59.0644057Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-09T09:52:59.0644156Z               "line": 278
2026-06-09T09:52:59.0644247Z             },
2026-06-09T09:52:59.0644334Z             {
2026-06-09T09:52:59.0644437Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-09T09:52:59.0644533Z               "line": 77
2026-06-09T09:52:59.0644624Z             },
2026-06-09T09:52:59.0644705Z             {
2026-06-09T09:52:59.0644823Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-09T09:52:59.0644918Z               "line": 94
2026-06-09T09:52:59.0644999Z             },
2026-06-09T09:52:59.0645083Z             {
2026-06-09T09:52:59.0645192Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-09T09:52:59.0645288Z               "line": 114
2026-06-09T09:52:59.0645370Z             }
2026-06-09T09:52:59.0645455Z           ]
2026-06-09T09:52:59.0645545Z         }
2026-06-09T09:52:59.0645632Z       }
2026-06-09T09:52:59.0645727Z     },
2026-06-09T09:52:59.0645807Z     {
2026-06-09T09:52:59.0645928Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-09T09:52:59.0647258Z       "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-09T09:52:59.0647371Z       "requiredStages": [
2026-06-09T09:52:59.0647461Z         "doc",
2026-06-09T09:52:59.0647547Z         "impl",
2026-06-09T09:52:59.0647636Z         "unit"
2026-06-09T09:52:59.0647716Z       ],
2026-06-09T09:52:59.0647811Z       "stages": {
2026-06-09T09:52:59.0647903Z         "doc": {
2026-06-09T09:52:59.0647993Z           "complete": true,
2026-06-09T09:52:59.0648170Z           "evidence": [
2026-06-09T09:52:59.0648256Z             {
2026-06-09T09:52:59.0648369Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-09T09:52:59.0648455Z               "line": 156
2026-06-09T09:52:59.0648541Z             }
2026-06-09T09:52:59.0648632Z           ]
2026-06-09T09:52:59.0648712Z         },
2026-06-09T09:52:59.0648885Z         "impl": {
2026-06-09T09:52:59.0649046Z           "complete": true,
2026-06-09T09:52:59.0649143Z           "evidence": [
2026-06-09T09:52:59.0649228Z             {
2026-06-09T09:52:59.0649356Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.0649448Z               "line": 394
2026-06-09T09:52:59.0649533Z             },
2026-06-09T09:52:59.0649619Z             {
2026-06-09T09:52:59.0649744Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.0649839Z               "line": 484
2026-06-09T09:52:59.0649918Z             },
2026-06-09T09:52:59.0650005Z             {
2026-06-09T09:52:59.0650149Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.0650233Z               "line": 491
2026-06-09T09:52:59.0650323Z             },
2026-06-09T09:52:59.0650405Z             {
2026-06-09T09:52:59.0650529Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0650618Z               "line": 211
2026-06-09T09:52:59.0650724Z             }
2026-06-09T09:52:59.0650810Z           ]
2026-06-09T09:52:59.0650896Z         },
2026-06-09T09:52:59.0650986Z         "int": {
2026-06-09T09:52:59.0651078Z           "complete": false,
2026-06-09T09:52:59.0651173Z           "evidence": []
2026-06-09T09:52:59.0651252Z         },
2026-06-09T09:52:59.0651349Z         "unit": {
2026-06-09T09:52:59.0651445Z           "complete": true,
2026-06-09T09:52:59.0651530Z           "evidence": [
2026-06-09T09:52:59.0651620Z             {
2026-06-09T09:52:59.0651740Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.0651845Z               "line": 1484
2026-06-09T09:52:59.0651930Z             },
2026-06-09T09:52:59.0652027Z             {
2026-06-09T09:52:59.0652158Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.0652250Z               "line": 1542
2026-06-09T09:52:59.0652337Z             },
2026-06-09T09:52:59.0652417Z             {
2026-06-09T09:52:59.0652545Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0652635Z               "line": 834
2026-06-09T09:52:59.0652725Z             }
2026-06-09T09:52:59.0652814Z           ]
2026-06-09T09:52:59.0652894Z         }
2026-06-09T09:52:59.0652990Z       }
2026-06-09T09:52:59.0653073Z     },
2026-06-09T09:52:59.0653157Z     {
2026-06-09T09:52:59.0653272Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-09T09:52:59.0653471Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-09T09:52:59.0653577Z       "requiredStages": [
2026-06-09T09:52:59.0653659Z         "impl",
2026-06-09T09:52:59.0653758Z         "unit"
2026-06-09T09:52:59.0653839Z       ],
2026-06-09T09:52:59.0653930Z       "stages": {
2026-06-09T09:52:59.0654020Z         "doc": {
2026-06-09T09:52:59.0654120Z           "complete": false,
2026-06-09T09:52:59.0654211Z           "evidence": []
2026-06-09T09:52:59.0654293Z         },
2026-06-09T09:52:59.0654393Z         "impl": {
2026-06-09T09:52:59.0654487Z           "complete": true,
2026-06-09T09:52:59.0654584Z           "evidence": [
2026-06-09T09:52:59.0654668Z             {
2026-06-09T09:52:59.0654792Z               "path": "crates/spt-store/src/proc.rs",
2026-06-09T09:52:59.0654889Z               "line": 15
2026-06-09T09:52:59.0654969Z             },
2026-06-09T09:52:59.0655060Z             {
2026-06-09T09:52:59.0655175Z               "path": "crates/spt-store/src/registry.rs",
2026-06-09T09:52:59.0655270Z               "line": 55
2026-06-09T09:52:59.0655359Z             },
2026-06-09T09:52:59.0655444Z             {
2026-06-09T09:52:59.0655686Z               "path": "crates/spt-store/src/registry.rs",
2026-06-09T09:52:59.0655780Z               "line": 66
2026-06-09T09:52:59.0655872Z             },
2026-06-09T09:52:59.0655954Z             {
2026-06-09T09:52:59.0656076Z               "path": "crates/spt-store/src/registry.rs",
2026-06-09T09:52:59.0656173Z               "line": 115
2026-06-09T09:52:59.0656258Z             },
2026-06-09T09:52:59.0656348Z             {
2026-06-09T09:52:59.0656554Z               "path": "crates/spt-store/src/registry.rs",
2026-06-09T09:52:59.0656644Z               "line": 138
2026-06-09T09:52:59.0656729Z             }
2026-06-09T09:52:59.0656817Z           ]
2026-06-09T09:52:59.0656906Z         },
2026-06-09T09:52:59.0656992Z         "int": {
2026-06-09T09:52:59.0657088Z           "complete": false,
2026-06-09T09:52:59.0657179Z           "evidence": []
2026-06-09T09:52:59.0657268Z         },
2026-06-09T09:52:59.0657350Z         "unit": {
2026-06-09T09:52:59.0657451Z           "complete": true,
2026-06-09T09:52:59.0657545Z           "evidence": [
2026-06-09T09:52:59.0657641Z             {
2026-06-09T09:52:59.0657756Z               "path": "crates/spt-store/src/proc.rs",
2026-06-09T09:52:59.0657846Z               "line": 149
2026-06-09T09:52:59.0657940Z             },
2026-06-09T09:52:59.0658025Z             {
2026-06-09T09:52:59.0658140Z               "path": "crates/spt-store/src/proc.rs",
2026-06-09T09:52:59.0658233Z               "line": 155
2026-06-09T09:52:59.0658323Z             },
2026-06-09T09:52:59.0658415Z             {
2026-06-09T09:52:59.0658525Z               "path": "crates/spt-store/src/proc.rs",
2026-06-09T09:52:59.0658619Z               "line": 169
2026-06-09T09:52:59.0658705Z             },
2026-06-09T09:52:59.0658797Z             {
2026-06-09T09:52:59.0658910Z               "path": "crates/spt-store/src/proc.rs",
2026-06-09T09:52:59.0659078Z               "line": 178
2026-06-09T09:52:59.0659168Z             },
2026-06-09T09:52:59.0659254Z             {
2026-06-09T09:52:59.0659374Z               "path": "crates/spt-store/src/registry.rs",
2026-06-09T09:52:59.0659468Z               "line": 195
2026-06-09T09:52:59.0659559Z             },
2026-06-09T09:52:59.0659654Z             {
2026-06-09T09:52:59.0659764Z               "path": "crates/spt-store/src/registry.rs",
2026-06-09T09:52:59.0659860Z               "line": 208
2026-06-09T09:52:59.0659945Z             },
2026-06-09T09:52:59.0660037Z             {
2026-06-09T09:52:59.0660159Z               "path": "crates/spt-store/src/registry.rs",
2026-06-09T09:52:59.0660255Z               "line": 271
2026-06-09T09:52:59.0660342Z             },
2026-06-09T09:52:59.0660427Z             {
2026-06-09T09:52:59.0660551Z               "path": "crates/spt-store/src/registry.rs",
2026-06-09T09:52:59.0660638Z               "line": 290
2026-06-09T09:52:59.0660728Z             },
2026-06-09T09:52:59.0660808Z             {
2026-06-09T09:52:59.0660931Z               "path": "crates/spt-store/src/registry.rs",
2026-06-09T09:52:59.0661028Z               "line": 319
2026-06-09T09:52:59.0661108Z             }
2026-06-09T09:52:59.0661202Z           ]
2026-06-09T09:52:59.0661294Z         }
2026-06-09T09:52:59.0661380Z       }
2026-06-09T09:52:59.0661465Z     },
2026-06-09T09:52:59.0661556Z     {
2026-06-09T09:52:59.0661676Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-09T09:52:59.0661938Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-09T09:52:59.0662042Z       "requiredStages": [
2026-06-09T09:52:59.0662128Z         "impl",
2026-06-09T09:52:59.0662219Z         "unit",
2026-06-09T09:52:59.0662300Z         "int"
2026-06-09T09:52:59.0662376Z       ],
2026-06-09T09:52:59.0662461Z       "stages": {
2026-06-09T09:52:59.0662544Z         "doc": {
2026-06-09T09:52:59.0662639Z           "complete": false,
2026-06-09T09:52:59.0662728Z           "evidence": []
2026-06-09T09:52:59.0662829Z         },
2026-06-09T09:52:59.0662916Z         "impl": {
2026-06-09T09:52:59.0663019Z           "complete": true,
2026-06-09T09:52:59.0663100Z           "evidence": [
2026-06-09T09:52:59.0663285Z             {
2026-06-09T09:52:59.0663412Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-09T09:52:59.0663503Z               "line": 269
2026-06-09T09:52:59.0663594Z             },
2026-06-09T09:52:59.0663675Z             {
2026-06-09T09:52:59.0663793Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-09T09:52:59.0663885Z               "line": 578
2026-06-09T09:52:59.0664060Z             },
2026-06-09T09:52:59.0664147Z             {
2026-06-09T09:52:59.0664256Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-09T09:52:59.0664356Z               "line": 601
2026-06-09T09:52:59.0664442Z             },
2026-06-09T09:52:59.0664524Z             {
2026-06-09T09:52:59.0664647Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-09T09:52:59.0664742Z               "line": 625
2026-06-09T09:52:59.0664829Z             },
2026-06-09T09:52:59.0664914Z             {
2026-06-09T09:52:59.0665043Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-09T09:52:59.0665158Z               "line": 511
2026-06-09T09:52:59.0665276Z             },
2026-06-09T09:52:59.0665377Z             {
2026-06-09T09:52:59.0665487Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-09T09:52:59.0665581Z               "line": 599
2026-06-09T09:52:59.0665667Z             },
2026-06-09T09:52:59.0665750Z             {
2026-06-09T09:52:59.0665882Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-09T09:52:59.0665967Z               "line": 709
2026-06-09T09:52:59.0666048Z             },
2026-06-09T09:52:59.0666134Z             {
2026-06-09T09:52:59.0666284Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-09T09:52:59.0666370Z               "line": 757
2026-06-09T09:52:59.0666456Z             },
2026-06-09T09:52:59.0666546Z             {
2026-06-09T09:52:59.0666655Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-09T09:52:59.0666757Z               "line": 46
2026-06-09T09:52:59.0666838Z             },
2026-06-09T09:52:59.0666932Z             {
2026-06-09T09:52:59.0667048Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-09T09:52:59.0667142Z               "line": 167
2026-06-09T09:52:59.0667232Z             },
2026-06-09T09:52:59.0667314Z             {
2026-06-09T09:52:59.0667429Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-09T09:52:59.0667514Z               "line": 71
2026-06-09T09:52:59.0667619Z             },
2026-06-09T09:52:59.0667701Z             {
2026-06-09T09:52:59.0667824Z               "path": "crates/spt-store/src/spool.rs",
2026-06-09T09:52:59.0667915Z               "line": 134
2026-06-09T09:52:59.0668002Z             },
2026-06-09T09:52:59.0668091Z             {
2026-06-09T09:52:59.0668201Z               "path": "crates/spt-store/src/spool.rs",
2026-06-09T09:52:59.0668302Z               "line": 180
2026-06-09T09:52:59.0668383Z             }
2026-06-09T09:52:59.0668472Z           ]
2026-06-09T09:52:59.0668581Z         },
2026-06-09T09:52:59.0668662Z         "int": {
2026-06-09T09:52:59.0668765Z           "complete": true,
2026-06-09T09:52:59.0668855Z           "evidence": [
2026-06-09T09:52:59.0669033Z             {
2026-06-09T09:52:59.0669160Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-09T09:52:59.0669261Z               "line": 27
2026-06-09T09:52:59.0669352Z             },
2026-06-09T09:52:59.0669437Z             {
2026-06-09T09:52:59.0669580Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-09T09:52:59.0669666Z               "line": 129
2026-06-09T09:52:59.0669757Z             },
2026-06-09T09:52:59.0669837Z             {
2026-06-09T09:52:59.0669967Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-09T09:52:59.0670057Z               "line": 200
2026-06-09T09:52:59.0670143Z             }
2026-06-09T09:52:59.0670229Z           ]
2026-06-09T09:52:59.0670315Z         },
2026-06-09T09:52:59.0670405Z         "unit": {
2026-06-09T09:52:59.0670491Z           "complete": true,
2026-06-09T09:52:59.0670705Z           "evidence": [
2026-06-09T09:52:59.0670796Z             {
2026-06-09T09:52:59.0670907Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-09T09:52:59.0671001Z               "line": 313
2026-06-09T09:52:59.0671082Z             },
2026-06-09T09:52:59.0671169Z             {
2026-06-09T09:52:59.0671292Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-09T09:52:59.0671515Z               "line": 345
2026-06-09T09:52:59.0671602Z             },
2026-06-09T09:52:59.0671682Z             {
2026-06-09T09:52:59.0671801Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-09T09:52:59.0671888Z               "line": 366
2026-06-09T09:52:59.0671978Z             },
2026-06-09T09:52:59.0672067Z             {
2026-06-09T09:52:59.0672183Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-09T09:52:59.0672274Z               "line": 254
2026-06-09T09:52:59.0672359Z             },
2026-06-09T09:52:59.0672450Z             {
2026-06-09T09:52:59.0672579Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-09T09:52:59.0672674Z               "line": 239
2026-06-09T09:52:59.0672760Z             },
2026-06-09T09:52:59.0672842Z             {
2026-06-09T09:52:59.0672960Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-09T09:52:59.0673045Z               "line": 230
2026-06-09T09:52:59.0673133Z             },
2026-06-09T09:52:59.0673227Z             {
2026-06-09T09:52:59.0673341Z               "path": "crates/spt-store/src/spool.rs",
2026-06-09T09:52:59.0673433Z               "line": 488
2026-06-09T09:52:59.0673518Z             },
2026-06-09T09:52:59.0673603Z             {
2026-06-09T09:52:59.0673716Z               "path": "crates/spt-store/src/spool.rs",
2026-06-09T09:52:59.0673807Z               "line": 518
2026-06-09T09:52:59.0673892Z             }
2026-06-09T09:52:59.0673977Z           ]
2026-06-09T09:52:59.0674068Z         }
2026-06-09T09:52:59.0674149Z       }
2026-06-09T09:52:59.0674235Z     },
2026-06-09T09:52:59.0674315Z     {
2026-06-09T09:52:59.0674455Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-09T09:52:59.0674644Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-09T09:52:59.0674741Z       "requiredStages": [
2026-06-09T09:52:59.0674835Z         "impl",
2026-06-09T09:52:59.0674921Z         "unit"
2026-06-09T09:52:59.0675007Z       ],
2026-06-09T09:52:59.0675094Z       "stages": {
2026-06-09T09:52:59.0675189Z         "doc": {
2026-06-09T09:52:59.0675283Z           "complete": false,
2026-06-09T09:52:59.0675375Z           "evidence": []
2026-06-09T09:52:59.0675465Z         },
2026-06-09T09:52:59.0675551Z         "impl": {
2026-06-09T09:52:59.0675646Z           "complete": true,
2026-06-09T09:52:59.0675738Z           "evidence": [
2026-06-09T09:52:59.0675826Z             {
2026-06-09T09:52:59.0675951Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-09T09:52:59.0676052Z               "line": 56
2026-06-09T09:52:59.0676136Z             },
2026-06-09T09:52:59.0676218Z             {
2026-06-09T09:52:59.0676353Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-09T09:52:59.0678823Z               "line": 65
2026-06-09T09:52:59.0678934Z             },
2026-06-09T09:52:59.0679117Z             {
2026-06-09T09:52:59.0679265Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-09T09:52:59.0679368Z               "line": 72
2026-06-09T09:52:59.0679467Z             },
2026-06-09T09:52:59.0679559Z             {
2026-06-09T09:52:59.0679682Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0679777Z               "line": 33
2026-06-09T09:52:59.0679860Z             },
2026-06-09T09:52:59.0679955Z             {
2026-06-09T09:52:59.0680069Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0680160Z               "line": 65
2026-06-09T09:52:59.0680250Z             },
2026-06-09T09:52:59.0680331Z             {
2026-06-09T09:52:59.0680441Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0680660Z               "line": 74
2026-06-09T09:52:59.0680755Z             },
2026-06-09T09:52:59.0680842Z             {
2026-06-09T09:52:59.0680956Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0681051Z               "line": 83
2026-06-09T09:52:59.0681133Z             },
2026-06-09T09:52:59.0681218Z             {
2026-06-09T09:52:59.0681327Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0681519Z               "line": 92
2026-06-09T09:52:59.0681604Z             },
2026-06-09T09:52:59.0681685Z             {
2026-06-09T09:52:59.0681801Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0681890Z               "line": 101
2026-06-09T09:52:59.0681975Z             },
2026-06-09T09:52:59.0682060Z             {
2026-06-09T09:52:59.0682167Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0682247Z               "line": 112
2026-06-09T09:52:59.0682322Z             },
2026-06-09T09:52:59.0682405Z             {
2026-06-09T09:52:59.0682519Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0682609Z               "line": 130
2026-06-09T09:52:59.0682690Z             },
2026-06-09T09:52:59.0682782Z             {
2026-06-09T09:52:59.0682886Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0682976Z               "line": 139
2026-06-09T09:52:59.0683072Z             },
2026-06-09T09:52:59.0683153Z             {
2026-06-09T09:52:59.0683267Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0683359Z               "line": 148
2026-06-09T09:52:59.0683440Z             },
2026-06-09T09:52:59.0683525Z             {
2026-06-09T09:52:59.0683635Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0683726Z               "line": 159
2026-06-09T09:52:59.0683811Z             },
2026-06-09T09:52:59.0683902Z             {
2026-06-09T09:52:59.0684017Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0684120Z               "line": 167
2026-06-09T09:52:59.0684220Z             },
2026-06-09T09:52:59.0684310Z             {
2026-06-09T09:52:59.0684457Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0684551Z               "line": 176
2026-06-09T09:52:59.0684647Z             },
2026-06-09T09:52:59.0684753Z             {
2026-06-09T09:52:59.0684865Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0684981Z               "line": 185
2026-06-09T09:52:59.0685066Z             },
2026-06-09T09:52:59.0685152Z             {
2026-06-09T09:52:59.0685262Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0685367Z               "line": 194
2026-06-09T09:52:59.0685467Z             },
2026-06-09T09:52:59.0685557Z             {
2026-06-09T09:52:59.0685687Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0685787Z               "line": 206
2026-06-09T09:52:59.0685886Z             },
2026-06-09T09:52:59.0685983Z             {
2026-06-09T09:52:59.0686120Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0686231Z               "line": 213
2026-06-09T09:52:59.0686316Z             },
2026-06-09T09:52:59.0686421Z             {
2026-06-09T09:52:59.0686536Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0686645Z               "line": 222
2026-06-09T09:52:59.0686755Z             },
2026-06-09T09:52:59.0686851Z             {
2026-06-09T09:52:59.0686979Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0687077Z               "line": 229
2026-06-09T09:52:59.0687182Z             },
2026-06-09T09:52:59.0687273Z             {
2026-06-09T09:52:59.0687404Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0687519Z               "line": 296
2026-06-09T09:52:59.0687614Z             },
2026-06-09T09:52:59.0687733Z             {
2026-06-09T09:52:59.0687853Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0687968Z               "line": 308
2026-06-09T09:52:59.0688244Z             },
2026-06-09T09:52:59.0688362Z             {
2026-06-09T09:52:59.0688506Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0688605Z               "line": 395
2026-06-09T09:52:59.0688701Z             }
2026-06-09T09:52:59.0688797Z           ]
2026-06-09T09:52:59.0688902Z         },
2026-06-09T09:52:59.0689088Z         "int": {
2026-06-09T09:52:59.0689340Z           "complete": false,
2026-06-09T09:52:59.0689451Z           "evidence": []
2026-06-09T09:52:59.0689545Z         },
2026-06-09T09:52:59.0689654Z         "unit": {
2026-06-09T09:52:59.0689754Z           "complete": true,
2026-06-09T09:52:59.0689872Z           "evidence": [
2026-06-09T09:52:59.0689975Z             {
2026-06-09T09:52:59.0690124Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0690233Z               "line": 477
2026-06-09T09:52:59.0690323Z             },
2026-06-09T09:52:59.0690430Z             {
2026-06-09T09:52:59.0690567Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0690681Z               "line": 518
2026-06-09T09:52:59.0690773Z             },
2026-06-09T09:52:59.0690891Z             {
2026-06-09T09:52:59.0691025Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0691120Z               "line": 531
2026-06-09T09:52:59.0691229Z             },
2026-06-09T09:52:59.0691330Z             {
2026-06-09T09:52:59.0691477Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0691573Z               "line": 617
2026-06-09T09:52:59.0691674Z             }
2026-06-09T09:52:59.0691778Z           ]
2026-06-09T09:52:59.0691864Z         }
2026-06-09T09:52:59.0691975Z       }
2026-06-09T09:52:59.0692065Z     },
2026-06-09T09:52:59.0692149Z     {
2026-06-09T09:52:59.0692265Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-09T09:52:59.0692483Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-09T09:52:59.0692602Z       "requiredStages": [
2026-06-09T09:52:59.0692703Z         "impl",
2026-06-09T09:52:59.0692817Z         "unit"
2026-06-09T09:52:59.0692912Z       ],
2026-06-09T09:52:59.0693022Z       "stages": {
2026-06-09T09:52:59.0693112Z         "doc": {
2026-06-09T09:52:59.0693211Z           "complete": false,
2026-06-09T09:52:59.0693323Z           "evidence": []
2026-06-09T09:52:59.0693413Z         },
2026-06-09T09:52:59.0693531Z         "impl": {
2026-06-09T09:52:59.0693628Z           "complete": true,
2026-06-09T09:52:59.0693732Z           "evidence": [
2026-06-09T09:52:59.0693832Z             {
2026-06-09T09:52:59.0693971Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-09T09:52:59.0694090Z               "line": 143
2026-06-09T09:52:59.0694180Z             },
2026-06-09T09:52:59.0694291Z             {
2026-06-09T09:52:59.0694423Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:59.0694534Z               "line": 148
2026-06-09T09:52:59.0694624Z             }
2026-06-09T09:52:59.0694728Z           ]
2026-06-09T09:52:59.0694837Z         },
2026-06-09T09:52:59.0694932Z         "int": {
2026-06-09T09:52:59.0695040Z           "complete": false,
2026-06-09T09:52:59.0695130Z           "evidence": []
2026-06-09T09:52:59.0695217Z         },
2026-06-09T09:52:59.0695298Z         "unit": {
2026-06-09T09:52:59.0695398Z           "complete": true,
2026-06-09T09:52:59.0695502Z           "evidence": [
2026-06-09T09:52:59.0695599Z             {
2026-06-09T09:52:59.0695731Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-09T09:52:59.0695822Z               "line": 264
2026-06-09T09:52:59.0695923Z             },
2026-06-09T09:52:59.0696008Z             {
2026-06-09T09:52:59.0696142Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:59.0696252Z               "line": 544
2026-06-09T09:52:59.0696342Z             },
2026-06-09T09:52:59.0696442Z             {
2026-06-09T09:52:59.0696566Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:59.0696680Z               "line": 557
2026-06-09T09:52:59.0696895Z             }
2026-06-09T09:52:59.0697000Z           ]
2026-06-09T09:52:59.0697096Z         }
2026-06-09T09:52:59.0697187Z       }
2026-06-09T09:52:59.0697295Z     },
2026-06-09T09:52:59.0697382Z     {
2026-06-09T09:52:59.0697511Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-09T09:52:59.0697652Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-09T09:52:59.0697861Z       "requiredStages": [
2026-06-09T09:52:59.0697964Z         "impl",
2026-06-09T09:52:59.0698050Z         "unit"
2026-06-09T09:52:59.0698156Z       ],
2026-06-09T09:52:59.0698251Z       "stages": {
2026-06-09T09:52:59.0698360Z         "doc": {
2026-06-09T09:52:59.0698461Z           "complete": false,
2026-06-09T09:52:59.0698575Z           "evidence": []
2026-06-09T09:52:59.0698679Z         },
2026-06-09T09:52:59.0698771Z         "impl": {
2026-06-09T09:52:59.0698880Z           "complete": true,
2026-06-09T09:52:59.0699062Z           "evidence": [
2026-06-09T09:52:59.0699165Z             {
2026-06-09T09:52:59.0699309Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-09T09:52:59.0699419Z               "line": 114
2026-06-09T09:52:59.0699523Z             },
2026-06-09T09:52:59.0699614Z             {
2026-06-09T09:52:59.0699758Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-09T09:52:59.0699852Z               "line": 481
2026-06-09T09:52:59.0699963Z             }
2026-06-09T09:52:59.0700054Z           ]
2026-06-09T09:52:59.0700157Z         },
2026-06-09T09:52:59.0700256Z         "int": {
2026-06-09T09:52:59.0700357Z           "complete": false,
2026-06-09T09:52:59.0700469Z           "evidence": []
2026-06-09T09:52:59.0700559Z         },
2026-06-09T09:52:59.0700669Z         "unit": {
2026-06-09T09:52:59.0700766Z           "complete": true,
2026-06-09T09:52:59.0700874Z           "evidence": [
2026-06-09T09:52:59.0700975Z             {
2026-06-09T09:52:59.0701099Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-09T09:52:59.0701208Z               "line": 515
2026-06-09T09:52:59.0701304Z             }
2026-06-09T09:52:59.0701404Z           ]
2026-06-09T09:52:59.0701498Z         }
2026-06-09T09:52:59.0701605Z       }
2026-06-09T09:52:59.0701708Z     },
2026-06-09T09:52:59.0701799Z     {
2026-06-09T09:52:59.0701929Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-09T09:52:59.0702100Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-09T09:52:59.0702220Z       "requiredStages": [
2026-06-09T09:52:59.0702315Z         "impl",
2026-06-09T09:52:59.0702424Z         "unit"
2026-06-09T09:52:59.0702535Z       ],
2026-06-09T09:52:59.0702630Z       "stages": {
2026-06-09T09:52:59.0702734Z         "doc": {
2026-06-09T09:52:59.0702835Z           "complete": false,
2026-06-09T09:52:59.0702940Z           "evidence": []
2026-06-09T09:52:59.0703033Z         },
2026-06-09T09:52:59.0703137Z         "impl": {
2026-06-09T09:52:59.0703234Z           "complete": true,
2026-06-09T09:52:59.0703325Z           "evidence": [
2026-06-09T09:52:59.0703434Z             {
2026-06-09T09:52:59.0703568Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.0703672Z               "line": 459
2026-06-09T09:52:59.0703758Z             },
2026-06-09T09:52:59.0703859Z             {
2026-06-09T09:52:59.0704001Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-09T09:52:59.0704096Z               "line": 28
2026-06-09T09:52:59.0704216Z             }
2026-06-09T09:52:59.0704311Z           ]
2026-06-09T09:52:59.0704416Z         },
2026-06-09T09:52:59.0704508Z         "int": {
2026-06-09T09:52:59.0704626Z           "complete": false,
2026-06-09T09:52:59.0704735Z           "evidence": []
2026-06-09T09:52:59.0704828Z         },
2026-06-09T09:52:59.0704931Z         "unit": {
2026-06-09T09:52:59.0705031Z           "complete": true,
2026-06-09T09:52:59.0705138Z           "evidence": [
2026-06-09T09:52:59.0705226Z             {
2026-06-09T09:52:59.0705364Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-09T09:52:59.0705600Z               "line": 229
2026-06-09T09:52:59.0705695Z             }
2026-06-09T09:52:59.0705800Z           ]
2026-06-09T09:52:59.0705892Z         }
2026-06-09T09:52:59.0705990Z       }
2026-06-09T09:52:59.0706082Z     },
2026-06-09T09:52:59.0706187Z     {
2026-06-09T09:52:59.0706324Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-09T09:52:59.0706459Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-09T09:52:59.0706687Z       "requiredStages": [],
2026-06-09T09:52:59.0706778Z       "stages": {
2026-06-09T09:52:59.0706873Z         "doc": {
2026-06-09T09:52:59.0706963Z           "complete": false,
2026-06-09T09:52:59.0707065Z           "evidence": []
2026-06-09T09:52:59.0707150Z         },
2026-06-09T09:52:59.0707236Z         "impl": {
2026-06-09T09:52:59.0707331Z           "complete": false,
2026-06-09T09:52:59.0707427Z           "evidence": []
2026-06-09T09:52:59.0707507Z         },
2026-06-09T09:52:59.0707593Z         "int": {
2026-06-09T09:52:59.0707685Z           "complete": false,
2026-06-09T09:52:59.0707793Z           "evidence": []
2026-06-09T09:52:59.0707875Z         },
2026-06-09T09:52:59.0707961Z         "unit": {
2026-06-09T09:52:59.0708057Z           "complete": false,
2026-06-09T09:52:59.0708151Z           "evidence": []
2026-06-09T09:52:59.0708235Z         }
2026-06-09T09:52:59.0708327Z       }
2026-06-09T09:52:59.0708430Z     },
2026-06-09T09:52:59.0708529Z     {
2026-06-09T09:52:59.0708649Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-09T09:52:59.0708806Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-09T09:52:59.0708920Z       "requiredStages": [
2026-06-09T09:52:59.0709093Z         "impl",
2026-06-09T09:52:59.0709206Z         "unit"
2026-06-09T09:52:59.0709312Z       ],
2026-06-09T09:52:59.0709407Z       "stages": {
2026-06-09T09:52:59.0709515Z         "doc": {
2026-06-09T09:52:59.0709612Z           "complete": false,
2026-06-09T09:52:59.0709726Z           "evidence": []
2026-06-09T09:52:59.0709816Z         },
2026-06-09T09:52:59.0709913Z         "impl": {
2026-06-09T09:52:59.0710013Z           "complete": true,
2026-06-09T09:52:59.0710093Z           "evidence": [
2026-06-09T09:52:59.0710189Z             {
2026-06-09T09:52:59.0710299Z               "path": "crates/spt-live/src/turn.rs",
2026-06-09T09:52:59.0710397Z               "line": 19
2026-06-09T09:52:59.0710484Z             },
2026-06-09T09:52:59.0710571Z             {
2026-06-09T09:52:59.0710708Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-09T09:52:59.0710798Z               "line": 347
2026-06-09T09:52:59.0710884Z             },
2026-06-09T09:52:59.0710969Z             {
2026-06-09T09:52:59.0711100Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-09T09:52:59.0711187Z               "line": 383
2026-06-09T09:52:59.0711277Z             },
2026-06-09T09:52:59.0711368Z             {
2026-06-09T09:52:59.0711482Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-09T09:52:59.0711579Z               "line": 15
2026-06-09T09:52:59.0711669Z             },
2026-06-09T09:52:59.0711758Z             {
2026-06-09T09:52:59.0711874Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-09T09:52:59.0711964Z               "line": 48
2026-06-09T09:52:59.0712058Z             },
2026-06-09T09:52:59.0712136Z             {
2026-06-09T09:52:59.0712259Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-09T09:52:59.0712345Z               "line": 119
2026-06-09T09:52:59.0712445Z             },
2026-06-09T09:52:59.0712528Z             {
2026-06-09T09:52:59.0712665Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0712765Z               "line": 2800
2026-06-09T09:52:59.0712847Z             }
2026-06-09T09:52:59.0712945Z           ]
2026-06-09T09:52:59.0713041Z         },
2026-06-09T09:52:59.0713148Z         "int": {
2026-06-09T09:52:59.0713241Z           "complete": false,
2026-06-09T09:52:59.0713346Z           "evidence": []
2026-06-09T09:52:59.0713448Z         },
2026-06-09T09:52:59.0713542Z         "unit": {
2026-06-09T09:52:59.0713809Z           "complete": true,
2026-06-09T09:52:59.0713908Z           "evidence": [
2026-06-09T09:52:59.0714017Z             {
2026-06-09T09:52:59.0714142Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-09T09:52:59.0714260Z               "line": 496
2026-06-09T09:52:59.0714366Z             },
2026-06-09T09:52:59.0714443Z             {
2026-06-09T09:52:59.0714681Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-09T09:52:59.0714768Z               "line": 165
2026-06-09T09:52:59.0714857Z             },
2026-06-09T09:52:59.0714942Z             {
2026-06-09T09:52:59.0715063Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-09T09:52:59.0715157Z               "line": 175
2026-06-09T09:52:59.0715238Z             }
2026-06-09T09:52:59.0715335Z           ]
2026-06-09T09:52:59.0715416Z         }
2026-06-09T09:52:59.0715515Z       }
2026-06-09T09:52:59.0715596Z     },
2026-06-09T09:52:59.0715683Z     {
2026-06-09T09:52:59.0715810Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-09T09:52:59.0716813Z       "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-09T09:52:59.0716923Z       "requiredStages": [
2026-06-09T09:52:59.0717090Z         "impl",
2026-06-09T09:52:59.0717223Z         "unit"
2026-06-09T09:52:59.0717315Z       ],
2026-06-09T09:52:59.0717405Z       "stages": {
2026-06-09T09:52:59.0717495Z         "doc": {
2026-06-09T09:52:59.0717591Z           "complete": false,
2026-06-09T09:52:59.0717691Z           "evidence": []
2026-06-09T09:52:59.0717772Z         },
2026-06-09T09:52:59.0717857Z         "impl": {
2026-06-09T09:52:59.0717950Z           "complete": true,
2026-06-09T09:52:59.0718039Z           "evidence": [
2026-06-09T09:52:59.0718139Z             {
2026-06-09T09:52:59.0718278Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0718391Z               "line": 2558
2026-06-09T09:52:59.0718478Z             },
2026-06-09T09:52:59.0718584Z             {
2026-06-09T09:52:59.0718725Z               "path": "crates/spt/src/elevation.rs",
2026-06-09T09:52:59.0718810Z               "line": 103
2026-06-09T09:52:59.0718920Z             },
2026-06-09T09:52:59.0719117Z             {
2026-06-09T09:52:59.0719267Z               "path": "crates/spt/src/elevation.rs",
2026-06-09T09:52:59.0719347Z               "line": 135
2026-06-09T09:52:59.0719456Z             }
2026-06-09T09:52:59.0719586Z           ]
2026-06-09T09:52:59.0719667Z         },
2026-06-09T09:52:59.0719756Z         "int": {
2026-06-09T09:52:59.0719853Z           "complete": false,
2026-06-09T09:52:59.0719943Z           "evidence": []
2026-06-09T09:52:59.0720028Z         },
2026-06-09T09:52:59.0720119Z         "unit": {
2026-06-09T09:52:59.0720210Z           "complete": true,
2026-06-09T09:52:59.0720296Z           "evidence": [
2026-06-09T09:52:59.0720420Z             {
2026-06-09T09:52:59.0720535Z               "path": "crates/spt/src/elevation.rs",
2026-06-09T09:52:59.0720629Z               "line": 258
2026-06-09T09:52:59.0720710Z             },
2026-06-09T09:52:59.0720798Z             {
2026-06-09T09:52:59.0720906Z               "path": "crates/spt/src/elevation.rs",
2026-06-09T09:52:59.0720992Z               "line": 283
2026-06-09T09:52:59.0721088Z             },
2026-06-09T09:52:59.0721169Z             {
2026-06-09T09:52:59.0721282Z               "path": "crates/spt/src/elevation.rs",
2026-06-09T09:52:59.0721382Z               "line": 296
2026-06-09T09:52:59.0721472Z             },
2026-06-09T09:52:59.0721557Z             {
2026-06-09T09:52:59.0721665Z               "path": "crates/spt/src/elevation.rs",
2026-06-09T09:52:59.0721775Z               "line": 308
2026-06-09T09:52:59.0721857Z             }
2026-06-09T09:52:59.0721951Z           ]
2026-06-09T09:52:59.0722037Z         }
2026-06-09T09:52:59.0722139Z       }
2026-06-09T09:52:59.0722238Z     },
2026-06-09T09:52:59.0722458Z     {
2026-06-09T09:52:59.0722581Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-09T09:52:59.0722753Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-09T09:52:59.0722852Z       "requiredStages": [
2026-06-09T09:52:59.0722948Z         "impl",
2026-06-09T09:52:59.0723064Z         "unit"
2026-06-09T09:52:59.0723292Z       ],
2026-06-09T09:52:59.0723383Z       "stages": {
2026-06-09T09:52:59.0723487Z         "doc": {
2026-06-09T09:52:59.0723582Z           "complete": false,
2026-06-09T09:52:59.0723679Z           "evidence": []
2026-06-09T09:52:59.0723760Z         },
2026-06-09T09:52:59.0723854Z         "impl": {
2026-06-09T09:52:59.0723950Z           "complete": true,
2026-06-09T09:52:59.0724041Z           "evidence": [
2026-06-09T09:52:59.0724131Z             {
2026-06-09T09:52:59.0724249Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-09T09:52:59.0724344Z               "line": 35
2026-06-09T09:52:59.0724427Z             }
2026-06-09T09:52:59.0724525Z           ]
2026-06-09T09:52:59.0724616Z         },
2026-06-09T09:52:59.0724703Z         "int": {
2026-06-09T09:52:59.0724798Z           "complete": false,
2026-06-09T09:52:59.0724892Z           "evidence": []
2026-06-09T09:52:59.0724979Z         },
2026-06-09T09:52:59.0725069Z         "unit": {
2026-06-09T09:52:59.0725164Z           "complete": true,
2026-06-09T09:52:59.0725265Z           "evidence": [
2026-06-09T09:52:59.0725351Z             {
2026-06-09T09:52:59.0725474Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-09T09:52:59.0725565Z               "line": 220
2026-06-09T09:52:59.0725652Z             }
2026-06-09T09:52:59.0725736Z           ]
2026-06-09T09:52:59.0725817Z         }
2026-06-09T09:52:59.0725909Z       }
2026-06-09T09:52:59.0725990Z     },
2026-06-09T09:52:59.0726075Z     {
2026-06-09T09:52:59.0726189Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-09T09:52:59.0726498Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-09T09:52:59.0726599Z       "requiredStages": [
2026-06-09T09:52:59.0726692Z         "impl",
2026-06-09T09:52:59.0726787Z         "unit"
2026-06-09T09:52:59.0726877Z       ],
2026-06-09T09:52:59.0726979Z       "stages": {
2026-06-09T09:52:59.0727068Z         "doc": {
2026-06-09T09:52:59.0727188Z           "complete": false,
2026-06-09T09:52:59.0727298Z           "evidence": []
2026-06-09T09:52:59.0727402Z         },
2026-06-09T09:52:59.0727507Z         "impl": {
2026-06-09T09:52:59.0727607Z           "complete": true,
2026-06-09T09:52:59.0727716Z           "evidence": [
2026-06-09T09:52:59.0727808Z             {
2026-06-09T09:52:59.0727956Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-09T09:52:59.0728050Z               "line": 398
2026-06-09T09:52:59.0728137Z             },
2026-06-09T09:52:59.0728223Z             {
2026-06-09T09:52:59.0728341Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.0728437Z               "line": 409
2026-06-09T09:52:59.0728524Z             },
2026-06-09T09:52:59.0728613Z             {
2026-06-09T09:52:59.0728737Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-09T09:52:59.0728839Z               "line": 156
2026-06-09T09:52:59.0728927Z             }
2026-06-09T09:52:59.0729100Z           ]
2026-06-09T09:52:59.0729191Z         },
2026-06-09T09:52:59.0729280Z         "int": {
2026-06-09T09:52:59.0729384Z           "complete": false,
2026-06-09T09:52:59.0729476Z           "evidence": []
2026-06-09T09:52:59.0729569Z         },
2026-06-09T09:52:59.0729659Z         "unit": {
2026-06-09T09:52:59.0729754Z           "complete": true,
2026-06-09T09:52:59.0729846Z           "evidence": [
2026-06-09T09:52:59.0729931Z             {
2026-06-09T09:52:59.0730055Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.0730146Z               "line": 812
2026-06-09T09:52:59.0730245Z             },
2026-06-09T09:52:59.0730321Z             {
2026-06-09T09:52:59.0730542Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.0730631Z               "line": 826
2026-06-09T09:52:59.0730723Z             },
2026-06-09T09:52:59.0730837Z             {
2026-06-09T09:52:59.0730989Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.0731076Z               "line": 845
2026-06-09T09:52:59.0731171Z             },
2026-06-09T09:52:59.0731367Z             {
2026-06-09T09:52:59.0731499Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.0731595Z               "line": 862
2026-06-09T09:52:59.0731701Z             },
2026-06-09T09:52:59.0731805Z             {
2026-06-09T09:52:59.0731946Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-09T09:52:59.0732056Z               "line": 441
2026-06-09T09:52:59.0732145Z             }
2026-06-09T09:52:59.0732249Z           ]
2026-06-09T09:52:59.0732340Z         }
2026-06-09T09:52:59.0732441Z       }
2026-06-09T09:52:59.0732544Z     },
2026-06-09T09:52:59.0732621Z     {
2026-06-09T09:52:59.0732732Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-09T09:52:59.0733570Z       "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-09T09:52:59.0733680Z       "requiredStages": [
2026-06-09T09:52:59.0733766Z         "doc",
2026-06-09T09:52:59.0733861Z         "impl",
2026-06-09T09:52:59.0733953Z         "unit"
2026-06-09T09:52:59.0734033Z       ],
2026-06-09T09:52:59.0734128Z       "stages": {
2026-06-09T09:52:59.0734210Z         "doc": {
2026-06-09T09:52:59.0734310Z           "complete": true,
2026-06-09T09:52:59.0734399Z           "evidence": [
2026-06-09T09:52:59.0734491Z             {
2026-06-09T09:52:59.0734611Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-09T09:52:59.0734705Z               "line": 313
2026-06-09T09:52:59.0734794Z             }
2026-06-09T09:52:59.0734885Z           ]
2026-06-09T09:52:59.0734982Z         },
2026-06-09T09:52:59.0735071Z         "impl": {
2026-06-09T09:52:59.0735171Z           "complete": true,
2026-06-09T09:52:59.0735286Z           "evidence": [
2026-06-09T09:52:59.0735390Z             {
2026-06-09T09:52:59.0735535Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-09T09:52:59.0735634Z               "line": 85
2026-06-09T09:52:59.0735724Z             },
2026-06-09T09:52:59.0735810Z             {
2026-06-09T09:52:59.0735935Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-09T09:52:59.0736034Z               "line": 99
2026-06-09T09:52:59.0736125Z             },
2026-06-09T09:52:59.0736231Z             {
2026-06-09T09:52:59.0736363Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-09T09:52:59.0736474Z               "line": 55
2026-06-09T09:52:59.0736588Z             },
2026-06-09T09:52:59.0736683Z             {
2026-06-09T09:52:59.0736827Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-09T09:52:59.0736917Z               "line": 31
2026-06-09T09:52:59.0737025Z             },
2026-06-09T09:52:59.0737111Z             {
2026-06-09T09:52:59.0737234Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-09T09:52:59.0737314Z               "line": 187
2026-06-09T09:52:59.0737399Z             },
2026-06-09T09:52:59.0737500Z             {
2026-06-09T09:52:59.0737624Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-09T09:52:59.0737719Z               "line": 95
2026-06-09T09:52:59.0737801Z             },
2026-06-09T09:52:59.0737892Z             {
2026-06-09T09:52:59.0738019Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-09T09:52:59.0738106Z               "line": 29
2026-06-09T09:52:59.0738206Z             },
2026-06-09T09:52:59.0738286Z             {
2026-06-09T09:52:59.0738411Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-09T09:52:59.0738501Z               "line": 104
2026-06-09T09:52:59.0738672Z             },
2026-06-09T09:52:59.0738769Z             {
2026-06-09T09:52:59.0738897Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.0739070Z               "line": 192
2026-06-09T09:52:59.0739154Z             },
2026-06-09T09:52:59.0739245Z             {
2026-06-09T09:52:59.0739351Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-09T09:52:59.0739550Z               "line": 28
2026-06-09T09:52:59.0739637Z             },
2026-06-09T09:52:59.0739709Z             {
2026-06-09T09:52:59.0739836Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-09T09:52:59.0739939Z               "line": 74
2026-06-09T09:52:59.0740026Z             },
2026-06-09T09:52:59.0740105Z             {
2026-06-09T09:52:59.0740233Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-09T09:52:59.0740324Z               "line": 32
2026-06-09T09:52:59.0740406Z             },
2026-06-09T09:52:59.0740491Z             {
2026-06-09T09:52:59.0740610Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-09T09:52:59.0740706Z               "line": 40
2026-06-09T09:52:59.0740787Z             },
2026-06-09T09:52:59.0740877Z             {
2026-06-09T09:52:59.0740997Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-09T09:52:59.0741083Z               "line": 184
2026-06-09T09:52:59.0741172Z             },
2026-06-09T09:52:59.0741254Z             {
2026-06-09T09:52:59.0741368Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-09T09:52:59.0741463Z               "line": 70
2026-06-09T09:52:59.0741544Z             },
2026-06-09T09:52:59.0741627Z             {
2026-06-09T09:52:59.0741735Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-09T09:52:59.0741826Z               "line": 223
2026-06-09T09:52:59.0741908Z             },
2026-06-09T09:52:59.0741989Z             {
2026-06-09T09:52:59.0742112Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-09T09:52:59.0742199Z               "line": 37
2026-06-09T09:52:59.0742289Z             },
2026-06-09T09:52:59.0742369Z             {
2026-06-09T09:52:59.0742492Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-09T09:52:59.0742579Z               "line": 38
2026-06-09T09:52:59.0742663Z             },
2026-06-09T09:52:59.0742748Z             {
2026-06-09T09:52:59.0742867Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-09T09:52:59.0742963Z               "line": 36
2026-06-09T09:52:59.0743043Z             },
2026-06-09T09:52:59.0743128Z             {
2026-06-09T09:52:59.0743235Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-09T09:52:59.0743325Z               "line": 40
2026-06-09T09:52:59.0743410Z             }
2026-06-09T09:52:59.0743491Z           ]
2026-06-09T09:52:59.0743578Z         },
2026-06-09T09:52:59.0743663Z         "int": {
2026-06-09T09:52:59.0743758Z           "complete": false,
2026-06-09T09:52:59.0743846Z           "evidence": []
2026-06-09T09:52:59.0743931Z         },
2026-06-09T09:52:59.0744021Z         "unit": {
2026-06-09T09:52:59.0744116Z           "complete": true,
2026-06-09T09:52:59.0744208Z           "evidence": [
2026-06-09T09:52:59.0744288Z             {
2026-06-09T09:52:59.0744412Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-09T09:52:59.0744499Z               "line": 212
2026-06-09T09:52:59.0744588Z             },
2026-06-09T09:52:59.0744674Z             {
2026-06-09T09:52:59.0744799Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-09T09:52:59.0744894Z               "line": 136
2026-06-09T09:52:59.0744974Z             },
2026-06-09T09:52:59.0745061Z             {
2026-06-09T09:52:59.0745181Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-09T09:52:59.0745269Z               "line": 685
2026-06-09T09:52:59.0745354Z             },
2026-06-09T09:52:59.0745436Z             {
2026-06-09T09:52:59.0745552Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-09T09:52:59.0745640Z               "line": 224
2026-06-09T09:52:59.0745828Z             },
2026-06-09T09:52:59.0745913Z             {
2026-06-09T09:52:59.0746032Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-09T09:52:59.0746128Z               "line": 157
2026-06-09T09:52:59.0746242Z             },
2026-06-09T09:52:59.0746327Z             {
2026-06-09T09:52:59.0746433Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-09T09:52:59.0746627Z               "line": 112
2026-06-09T09:52:59.0746710Z             },
2026-06-09T09:52:59.0746796Z             {
2026-06-09T09:52:59.0746910Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-09T09:52:59.0746995Z               "line": 157
2026-06-09T09:52:59.0747087Z             },
2026-06-09T09:52:59.0747167Z             {
2026-06-09T09:52:59.0747281Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-09T09:52:59.0747368Z               "line": 215
2026-06-09T09:52:59.0747454Z             },
2026-06-09T09:52:59.0747542Z             {
2026-06-09T09:52:59.0747662Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-09T09:52:59.0747762Z               "line": 140
2026-06-09T09:52:59.0747840Z             },
2026-06-09T09:52:59.0747926Z             {
2026-06-09T09:52:59.0748041Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-09T09:52:59.0748128Z               "line": 162
2026-06-09T09:52:59.0748212Z             }
2026-06-09T09:52:59.0748303Z           ]
2026-06-09T09:52:59.0748389Z         }
2026-06-09T09:52:59.0748470Z       }
2026-06-09T09:52:59.0748555Z     },
2026-06-09T09:52:59.0748633Z     {
2026-06-09T09:52:59.0751991Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-09T09:52:59.0752182Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-09T09:52:59.0752286Z       "requiredStages": [
2026-06-09T09:52:59.0752376Z         "impl",
2026-06-09T09:52:59.0752454Z         "unit"
2026-06-09T09:52:59.0752544Z       ],
2026-06-09T09:52:59.0752629Z       "stages": {
2026-06-09T09:52:59.0752711Z         "doc": {
2026-06-09T09:52:59.0752822Z           "complete": false,
2026-06-09T09:52:59.0752915Z           "evidence": []
2026-06-09T09:52:59.0753000Z         },
2026-06-09T09:52:59.0753081Z         "impl": {
2026-06-09T09:52:59.0753172Z           "complete": true,
2026-06-09T09:52:59.0753260Z           "evidence": [
2026-06-09T09:52:59.0753341Z             {
2026-06-09T09:52:59.0753461Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-09T09:52:59.0753552Z               "line": 95
2026-06-09T09:52:59.0753646Z             },
2026-06-09T09:52:59.0753746Z             {
2026-06-09T09:52:59.0753866Z               "path": "crates/spt/src/api/startup.rs",
2026-06-09T09:52:59.0753956Z               "line": 102
2026-06-09T09:52:59.0754032Z             }
2026-06-09T09:52:59.0754114Z           ]
2026-06-09T09:52:59.0754195Z         },
2026-06-09T09:52:59.0754285Z         "int": {
2026-06-09T09:52:59.0754371Z           "complete": false,
2026-06-09T09:52:59.0754462Z           "evidence": []
2026-06-09T09:52:59.0754538Z         },
2026-06-09T09:52:59.0754633Z         "unit": {
2026-06-09T09:52:59.0754725Z           "complete": true,
2026-06-09T09:52:59.0754810Z           "evidence": [
2026-06-09T09:52:59.0754896Z             {
2026-06-09T09:52:59.0755001Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-09T09:52:59.0755097Z               "line": 250
2026-06-09T09:52:59.0755181Z             },
2026-06-09T09:52:59.0755263Z             {
2026-06-09T09:52:59.0755383Z               "path": "crates/spt-store/src/proc.rs",
2026-06-09T09:52:59.0755468Z               "line": 198
2026-06-09T09:52:59.0755549Z             },
2026-06-09T09:52:59.0755631Z             {
2026-06-09T09:52:59.0755745Z               "path": "crates/spt/src/api/startup.rs",
2026-06-09T09:52:59.0755834Z               "line": 442
2026-06-09T09:52:59.0755919Z             },
2026-06-09T09:52:59.0756001Z             {
2026-06-09T09:52:59.0756107Z               "path": "crates/spt/src/api/startup.rs",
2026-06-09T09:52:59.0756196Z               "line": 475
2026-06-09T09:52:59.0756416Z             }
2026-06-09T09:52:59.0756511Z           ]
2026-06-09T09:52:59.0756597Z         }
2026-06-09T09:52:59.0756674Z       }
2026-06-09T09:52:59.0756759Z     },
2026-06-09T09:52:59.0756835Z     {
2026-06-09T09:52:59.0756945Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-09T09:52:59.0757131Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-09T09:52:59.0757318Z       "requiredStages": [
2026-06-09T09:52:59.0757412Z         "impl",
2026-06-09T09:52:59.0757498Z         "unit"
2026-06-09T09:52:59.0757580Z       ],
2026-06-09T09:52:59.0757661Z       "stages": {
2026-06-09T09:52:59.0757745Z         "doc": {
2026-06-09T09:52:59.0757841Z           "complete": false,
2026-06-09T09:52:59.0757933Z           "evidence": []
2026-06-09T09:52:59.0758023Z         },
2026-06-09T09:52:59.0758107Z         "impl": {
2026-06-09T09:52:59.0758202Z           "complete": true,
2026-06-09T09:52:59.0758288Z           "evidence": [
2026-06-09T09:52:59.0758373Z             {
2026-06-09T09:52:59.0758491Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0758582Z               "line": 252
2026-06-09T09:52:59.0758669Z             },
2026-06-09T09:52:59.0758748Z             {
2026-06-09T09:52:59.0758858Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0759054Z               "line": 297
2026-06-09T09:52:59.0759149Z             },
2026-06-09T09:52:59.0759226Z             {
2026-06-09T09:52:59.0759345Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0759430Z               "line": 309
2026-06-09T09:52:59.0759508Z             }
2026-06-09T09:52:59.0759593Z           ]
2026-06-09T09:52:59.0759674Z         },
2026-06-09T09:52:59.0759759Z         "int": {
2026-06-09T09:52:59.0759846Z           "complete": false,
2026-06-09T09:52:59.0759941Z           "evidence": []
2026-06-09T09:52:59.0760022Z         },
2026-06-09T09:52:59.0760103Z         "unit": {
2026-06-09T09:52:59.0760199Z           "complete": true,
2026-06-09T09:52:59.0760288Z           "evidence": [
2026-06-09T09:52:59.0760374Z             {
2026-06-09T09:52:59.0760481Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0760571Z               "line": 445
2026-06-09T09:52:59.0760661Z             },
2026-06-09T09:52:59.0760738Z             {
2026-06-09T09:52:59.0760853Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0760946Z               "line": 489
2026-06-09T09:52:59.0761032Z             }
2026-06-09T09:52:59.0761108Z           ]
2026-06-09T09:52:59.0761194Z         }
2026-06-09T09:52:59.0761282Z       }
2026-06-09T09:52:59.0761363Z     },
2026-06-09T09:52:59.0761449Z     {
2026-06-09T09:52:59.0761540Z       "id": "REQ-INFRA-1",
2026-06-09T09:52:59.0761715Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-09T09:52:59.0761808Z       "requiredStages": [],
2026-06-09T09:52:59.0761902Z       "stages": {
2026-06-09T09:52:59.0761987Z         "doc": {
2026-06-09T09:52:59.0762084Z           "complete": false,
2026-06-09T09:52:59.0762183Z           "evidence": []
2026-06-09T09:52:59.0762259Z         },
2026-06-09T09:52:59.0762350Z         "impl": {
2026-06-09T09:52:59.0762437Z           "complete": false,
2026-06-09T09:52:59.0762531Z           "evidence": []
2026-06-09T09:52:59.0762612Z         },
2026-06-09T09:52:59.0762694Z         "int": {
2026-06-09T09:52:59.0762799Z           "complete": false,
2026-06-09T09:52:59.0762889Z           "evidence": []
2026-06-09T09:52:59.0762975Z         },
2026-06-09T09:52:59.0763057Z         "unit": {
2026-06-09T09:52:59.0763156Z           "complete": false,
2026-06-09T09:52:59.0763242Z           "evidence": []
2026-06-09T09:52:59.0763324Z         }
2026-06-09T09:52:59.0763410Z       }
2026-06-09T09:52:59.0763489Z     },
2026-06-09T09:52:59.0763570Z     {
2026-06-09T09:52:59.0763665Z       "id": "REQ-INST-1",
2026-06-09T09:52:59.0763825Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-09T09:52:59.0763906Z       "requiredStages": [],
2026-06-09T09:52:59.0764088Z       "stages": {
2026-06-09T09:52:59.0764178Z         "doc": {
2026-06-09T09:52:59.0764263Z           "complete": false,
2026-06-09T09:52:59.0764360Z           "evidence": []
2026-06-09T09:52:59.0764441Z         },
2026-06-09T09:52:59.0764530Z         "impl": {
2026-06-09T09:52:59.0764626Z           "complete": false,
2026-06-09T09:52:59.0764807Z           "evidence": []
2026-06-09T09:52:59.0764892Z         },
2026-06-09T09:52:59.0764975Z         "int": {
2026-06-09T09:52:59.0765074Z           "complete": false,
2026-06-09T09:52:59.0765164Z           "evidence": []
2026-06-09T09:52:59.0765275Z         },
2026-06-09T09:52:59.0765389Z         "unit": {
2026-06-09T09:52:59.0765484Z           "complete": false,
2026-06-09T09:52:59.0765580Z           "evidence": []
2026-06-09T09:52:59.0765661Z         }
2026-06-09T09:52:59.0765746Z       }
2026-06-09T09:52:59.0765823Z     },
2026-06-09T09:52:59.0765910Z     {
2026-06-09T09:52:59.0766000Z       "id": "REQ-INST-10",
2026-06-09T09:52:59.0766224Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-09T09:52:59.0766324Z       "requiredStages": [
2026-06-09T09:52:59.0766404Z         "impl",
2026-06-09T09:52:59.0766494Z         "unit"
2026-06-09T09:52:59.0766576Z       ],
2026-06-09T09:52:59.0766667Z       "stages": {
2026-06-09T09:52:59.0766756Z         "doc": {
2026-06-09T09:52:59.0766847Z           "complete": false,
2026-06-09T09:52:59.0766938Z           "evidence": []
2026-06-09T09:52:59.0767019Z         },
2026-06-09T09:52:59.0767109Z         "impl": {
2026-06-09T09:52:59.0767196Z           "complete": true,
2026-06-09T09:52:59.0767286Z           "evidence": [
2026-06-09T09:52:59.0767372Z             {
2026-06-09T09:52:59.0767505Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0767596Z               "line": 600
2026-06-09T09:52:59.0767677Z             },
2026-06-09T09:52:59.0767762Z             {
2026-06-09T09:52:59.0767887Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0767986Z               "line": 677
2026-06-09T09:52:59.0768072Z             },
2026-06-09T09:52:59.0768150Z             {
2026-06-09T09:52:59.0768282Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-09T09:52:59.0768368Z               "line": 13
2026-06-09T09:52:59.0768454Z             },
2026-06-09T09:52:59.0768541Z             {
2026-06-09T09:52:59.0768662Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-09T09:52:59.0768753Z               "line": 67
2026-06-09T09:52:59.0768834Z             },
2026-06-09T09:52:59.0768924Z             {
2026-06-09T09:52:59.0769118Z               "path": "crates/spt/src/wansend.rs",
2026-06-09T09:52:59.0769209Z               "line": 18
2026-06-09T09:52:59.0769295Z             },
2026-06-09T09:52:59.0769380Z             {
2026-06-09T09:52:59.0769486Z               "path": "crates/spt/src/wansend.rs",
2026-06-09T09:52:59.0769576Z               "line": 444
2026-06-09T09:52:59.0769656Z             }
2026-06-09T09:52:59.0769738Z           ]
2026-06-09T09:52:59.0769825Z         },
2026-06-09T09:52:59.0769901Z         "int": {
2026-06-09T09:52:59.0770000Z           "complete": false,
2026-06-09T09:52:59.0770091Z           "evidence": []
2026-06-09T09:52:59.0770168Z         },
2026-06-09T09:52:59.0770253Z         "unit": {
2026-06-09T09:52:59.0770339Z           "complete": true,
2026-06-09T09:52:59.0770435Z           "evidence": [
2026-06-09T09:52:59.0770520Z             {
2026-06-09T09:52:59.0770639Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0770731Z               "line": 883
2026-06-09T09:52:59.0770811Z             },
2026-06-09T09:52:59.0770892Z             {
2026-06-09T09:52:59.0771012Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0771112Z               "line": 1212
2026-06-09T09:52:59.0771191Z             },
2026-06-09T09:52:59.0771273Z             {
2026-06-09T09:52:59.0771399Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0771596Z               "line": 1223
2026-06-09T09:52:59.0771682Z             },
2026-06-09T09:52:59.0771763Z             {
2026-06-09T09:52:59.0771880Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0771966Z               "line": 1239
2026-06-09T09:52:59.0772053Z             },
2026-06-09T09:52:59.0772139Z             {
2026-06-09T09:52:59.0772344Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0772439Z               "line": 1255
2026-06-09T09:52:59.0772519Z             },
2026-06-09T09:52:59.0772600Z             {
2026-06-09T09:52:59.0772711Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0772801Z               "line": 1277
2026-06-09T09:52:59.0772901Z             },
2026-06-09T09:52:59.0772992Z             {
2026-06-09T09:52:59.0773111Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0773191Z               "line": 1582
2026-06-09T09:52:59.0773278Z             },
2026-06-09T09:52:59.0773364Z             {
2026-06-09T09:52:59.0773473Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-09T09:52:59.0773559Z               "line": 130
2026-06-09T09:52:59.0773641Z             },
2026-06-09T09:52:59.0773725Z             {
2026-06-09T09:52:59.0773831Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-09T09:52:59.0773927Z               "line": 167
2026-06-09T09:52:59.0774012Z             },
2026-06-09T09:52:59.0774092Z             {
2026-06-09T09:52:59.0774201Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-09T09:52:59.0774287Z               "line": 175
2026-06-09T09:52:59.0774371Z             },
2026-06-09T09:52:59.0774452Z             {
2026-06-09T09:52:59.0774561Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-09T09:52:59.0774648Z               "line": 183
2026-06-09T09:52:59.0774728Z             },
2026-06-09T09:52:59.0774809Z             {
2026-06-09T09:52:59.0774915Z               "path": "crates/spt/src/wansend.rs",
2026-06-09T09:52:59.0775010Z               "line": 895
2026-06-09T09:52:59.0775090Z             }
2026-06-09T09:52:59.0775172Z           ]
2026-06-09T09:52:59.0775258Z         }
2026-06-09T09:52:59.0775335Z       }
2026-06-09T09:52:59.0775424Z     },
2026-06-09T09:52:59.0775501Z     {
2026-06-09T09:52:59.0775592Z       "id": "REQ-INST-11",
2026-06-09T09:52:59.0775806Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-09T09:52:59.0775911Z       "requiredStages": [
2026-06-09T09:52:59.0776001Z         "impl",
2026-06-09T09:52:59.0776083Z         "unit"
2026-06-09T09:52:59.0776165Z       ],
2026-06-09T09:52:59.0776254Z       "stages": {
2026-06-09T09:52:59.0776340Z         "doc": {
2026-06-09T09:52:59.0776431Z           "complete": false,
2026-06-09T09:52:59.0776523Z           "evidence": []
2026-06-09T09:52:59.0776611Z         },
2026-06-09T09:52:59.0776693Z         "impl": {
2026-06-09T09:52:59.0776784Z           "complete": true,
2026-06-09T09:52:59.0776879Z           "evidence": [
2026-06-09T09:52:59.0776964Z             {
2026-06-09T09:52:59.0777083Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0777174Z               "line": 466
2026-06-09T09:52:59.0777255Z             },
2026-06-09T09:52:59.0777340Z             {
2026-06-09T09:52:59.0777465Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-09T09:52:59.0777555Z               "line": 265
2026-06-09T09:52:59.0777645Z             },
2026-06-09T09:52:59.0777722Z             {
2026-06-09T09:52:59.0777841Z               "path": "crates/spt-store/src/rename.rs",
2026-06-09T09:52:59.0777932Z               "line": 59
2026-06-09T09:52:59.0778012Z             },
2026-06-09T09:52:59.0778095Z             {
2026-06-09T09:52:59.0778208Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0778299Z               "line": 4003
2026-06-09T09:52:59.0778380Z             },
2026-06-09T09:52:59.0778461Z             {
2026-06-09T09:52:59.0778681Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0778767Z               "line": 5102
2026-06-09T09:52:59.0778856Z             }
2026-06-09T09:52:59.0778933Z           ]
2026-06-09T09:52:59.0779105Z         },
2026-06-09T09:52:59.0779185Z         "int": {
2026-06-09T09:52:59.0779285Z           "complete": false,
2026-06-09T09:52:59.0779376Z           "evidence": []
2026-06-09T09:52:59.0779559Z         },
2026-06-09T09:52:59.0779644Z         "unit": {
2026-06-09T09:52:59.0779731Z           "complete": true,
2026-06-09T09:52:59.0779821Z           "evidence": [
2026-06-09T09:52:59.0779897Z             {
2026-06-09T09:52:59.0780022Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0780108Z               "line": 1382
2026-06-09T09:52:59.0780193Z             },
2026-06-09T09:52:59.0780274Z             {
2026-06-09T09:52:59.0780385Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0780475Z               "line": 1415
2026-06-09T09:52:59.0780560Z             },
2026-06-09T09:52:59.0780647Z             {
2026-06-09T09:52:59.0780775Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-09T09:52:59.0780860Z               "line": 495
2026-06-09T09:52:59.0780947Z             },
2026-06-09T09:52:59.0781024Z             {
2026-06-09T09:52:59.0781142Z               "path": "crates/spt-store/src/rename.rs",
2026-06-09T09:52:59.0781233Z               "line": 160
2026-06-09T09:52:59.0781319Z             },
2026-06-09T09:52:59.0781404Z             {
2026-06-09T09:52:59.0781509Z               "path": "crates/spt-store/src/rename.rs",
2026-06-09T09:52:59.0781601Z               "line": 190
2026-06-09T09:52:59.0781677Z             },
2026-06-09T09:52:59.0781766Z             {
2026-06-09T09:52:59.0781877Z               "path": "crates/spt-store/src/rename.rs",
2026-06-09T09:52:59.0781968Z               "line": 225
2026-06-09T09:52:59.0782062Z             },
2026-06-09T09:52:59.0782142Z             {
2026-06-09T09:52:59.0782252Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0782337Z               "line": 5342
2026-06-09T09:52:59.0782426Z             }
2026-06-09T09:52:59.0782507Z           ]
2026-06-09T09:52:59.0782588Z         }
2026-06-09T09:52:59.0782670Z       }
2026-06-09T09:52:59.0782750Z     },
2026-06-09T09:52:59.0782836Z     {
2026-06-09T09:52:59.0782923Z       "id": "REQ-INST-12",
2026-06-09T09:52:59.0783218Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-09T09:52:59.0783323Z       "requiredStages": [
2026-06-09T09:52:59.0783403Z         "impl",
2026-06-09T09:52:59.0783499Z         "unit"
2026-06-09T09:52:59.0783581Z       ],
2026-06-09T09:52:59.0783671Z       "stages": {
2026-06-09T09:52:59.0783761Z         "doc": {
2026-06-09T09:52:59.0783853Z           "complete": false,
2026-06-09T09:52:59.0783952Z           "evidence": []
2026-06-09T09:52:59.0784033Z         },
2026-06-09T09:52:59.0784119Z         "impl": {
2026-06-09T09:52:59.0784211Z           "complete": true,
2026-06-09T09:52:59.0784304Z           "evidence": [
2026-06-09T09:52:59.0784391Z             {
2026-06-09T09:52:59.0784511Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0784605Z               "line": 518
2026-06-09T09:52:59.0784685Z             },
2026-06-09T09:52:59.0784776Z             {
2026-06-09T09:52:59.0784894Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0784988Z               "line": 611
2026-06-09T09:52:59.0785073Z             },
2026-06-09T09:52:59.0785150Z             {
2026-06-09T09:52:59.0785270Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0785355Z               "line": 691
2026-06-09T09:52:59.0785441Z             },
2026-06-09T09:52:59.0785523Z             {
2026-06-09T09:52:59.0785636Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-09T09:52:59.0785717Z               "line": 96
2026-06-09T09:52:59.0785809Z             },
2026-06-09T09:52:59.0785895Z             {
2026-06-09T09:52:59.0786100Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-09T09:52:59.0786199Z               "line": 269
2026-06-09T09:52:59.0786280Z             },
2026-06-09T09:52:59.0786366Z             {
2026-06-09T09:52:59.0786485Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-09T09:52:59.0786576Z               "line": 135
2026-06-09T09:52:59.0786734Z             }
2026-06-09T09:52:59.0786814Z           ]
2026-06-09T09:52:59.0786905Z         },
2026-06-09T09:52:59.0786986Z         "int": {
2026-06-09T09:52:59.0787083Z           "complete": false,
2026-06-09T09:52:59.0787171Z           "evidence": []
2026-06-09T09:52:59.0787258Z         },
2026-06-09T09:52:59.0787345Z         "unit": {
2026-06-09T09:52:59.0787430Z           "complete": true,
2026-06-09T09:52:59.0787524Z           "evidence": [
2026-06-09T09:52:59.0787604Z             {
2026-06-09T09:52:59.0787720Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0787810Z               "line": 1457
2026-06-09T09:52:59.0787896Z             },
2026-06-09T09:52:59.0787982Z             {
2026-06-09T09:52:59.0788096Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0788186Z               "line": 1480
2026-06-09T09:52:59.0788272Z             },
2026-06-09T09:52:59.0788359Z             {
2026-06-09T09:52:59.0788468Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0788567Z               "line": 1517
2026-06-09T09:52:59.0788655Z             },
2026-06-09T09:52:59.0788735Z             {
2026-06-09T09:52:59.0788849Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-09T09:52:59.0788936Z               "line": 457
2026-06-09T09:52:59.0789102Z             },
2026-06-09T09:52:59.0789183Z             {
2026-06-09T09:52:59.0789308Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-09T09:52:59.0789398Z               "line": 172
2026-06-09T09:52:59.0789479Z             },
2026-06-09T09:52:59.0789565Z             {
2026-06-09T09:52:59.0789684Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-09T09:52:59.0789779Z               "line": 193
2026-06-09T09:52:59.0789859Z             },
2026-06-09T09:52:59.0789950Z             {
2026-06-09T09:52:59.0790076Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-09T09:52:59.0790161Z               "line": 219
2026-06-09T09:52:59.0790253Z             }
2026-06-09T09:52:59.0790334Z           ]
2026-06-09T09:52:59.0790420Z         }
2026-06-09T09:52:59.0790500Z       }
2026-06-09T09:52:59.0790587Z     },
2026-06-09T09:52:59.0790673Z     {
2026-06-09T09:52:59.0790767Z       "id": "REQ-INST-13",
2026-06-09T09:52:59.0790954Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-09T09:52:59.0791044Z       "requiredStages": [
2026-06-09T09:52:59.0791134Z         "impl",
2026-06-09T09:52:59.0791217Z         "unit"
2026-06-09T09:52:59.0791302Z       ],
2026-06-09T09:52:59.0791397Z       "stages": {
2026-06-09T09:52:59.0791483Z         "doc": {
2026-06-09T09:52:59.0791584Z           "complete": false,
2026-06-09T09:52:59.0791669Z           "evidence": []
2026-06-09T09:52:59.0791759Z         },
2026-06-09T09:52:59.0791842Z         "impl": {
2026-06-09T09:52:59.0791945Z           "complete": true,
2026-06-09T09:52:59.0792036Z           "evidence": [
2026-06-09T09:52:59.0792118Z             {
2026-06-09T09:52:59.0792242Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-09T09:52:59.0792326Z               "line": 100
2026-06-09T09:52:59.0792413Z             },
2026-06-09T09:52:59.0792491Z             {
2026-06-09T09:52:59.0792617Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-09T09:52:59.0792707Z               "line": 158
2026-06-09T09:52:59.0792788Z             }
2026-06-09T09:52:59.0792874Z           ]
2026-06-09T09:52:59.0792953Z         },
2026-06-09T09:52:59.0793038Z         "int": {
2026-06-09T09:52:59.0793130Z           "complete": false,
2026-06-09T09:52:59.0793220Z           "evidence": []
2026-06-09T09:52:59.0793405Z         },
2026-06-09T09:52:59.0793493Z         "unit": {
2026-06-09T09:52:59.0793592Z           "complete": true,
2026-06-09T09:52:59.0793672Z           "evidence": [
2026-06-09T09:52:59.0793755Z             {
2026-06-09T09:52:59.0793868Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-09T09:52:59.0793949Z               "line": 248
2026-06-09T09:52:59.0794117Z             },
2026-06-09T09:52:59.0794202Z             {
2026-06-09T09:52:59.0794321Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-09T09:52:59.0794408Z               "line": 266
2026-06-09T09:52:59.0794494Z             }
2026-06-09T09:52:59.0794584Z           ]
2026-06-09T09:52:59.0794660Z         }
2026-06-09T09:52:59.0794751Z       }
2026-06-09T09:52:59.0794832Z     },
2026-06-09T09:52:59.0794918Z     {
2026-06-09T09:52:59.0795009Z       "id": "REQ-INST-14",
2026-06-09T09:52:59.0795388Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-09T09:52:59.0795487Z       "requiredStages": [
2026-06-09T09:52:59.0795572Z         "doc",
2026-06-09T09:52:59.0795663Z         "impl",
2026-06-09T09:52:59.0795730Z         "unit"
2026-06-09T09:52:59.0795821Z       ],
2026-06-09T09:52:59.0795905Z       "stages": {
2026-06-09T09:52:59.0795992Z         "doc": {
2026-06-09T09:52:59.0796092Z           "complete": true,
2026-06-09T09:52:59.0796177Z           "evidence": [
2026-06-09T09:52:59.0796263Z             {
2026-06-09T09:52:59.0796360Z               "path": "CONTEXT.md",
2026-06-09T09:52:59.0796450Z               "line": 425
2026-06-09T09:52:59.0796530Z             },
2026-06-09T09:52:59.0796622Z             {
2026-06-09T09:52:59.0796726Z               "path": "docs/STORAGE.md",
2026-06-09T09:52:59.0796812Z               "line": 49
2026-06-09T09:52:59.0796898Z             }
2026-06-09T09:52:59.0796980Z           ]
2026-06-09T09:52:59.0797069Z         },
2026-06-09T09:52:59.0797155Z         "impl": {
2026-06-09T09:52:59.0797251Z           "complete": true,
2026-06-09T09:52:59.0797347Z           "evidence": [
2026-06-09T09:52:59.0797426Z             {
2026-06-09T09:52:59.0797561Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.0797648Z               "line": 388
2026-06-09T09:52:59.0797736Z             },
2026-06-09T09:52:59.0797823Z             {
2026-06-09T09:52:59.0797943Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0798037Z               "line": 330
2026-06-09T09:52:59.0798117Z             },
2026-06-09T09:52:59.0798208Z             {
2026-06-09T09:52:59.0798318Z               "path": "crates/spt-store/src/info.rs",
2026-06-09T09:52:59.0798408Z               "line": 211
2026-06-09T09:52:59.0798493Z             },
2026-06-09T09:52:59.0798580Z             {
2026-06-09T09:52:59.0798690Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0798775Z               "line": 1015
2026-06-09T09:52:59.0798852Z             }
2026-06-09T09:52:59.0798933Z           ]
2026-06-09T09:52:59.0799142Z         },
2026-06-09T09:52:59.0799229Z         "int": {
2026-06-09T09:52:59.0799328Z           "complete": false,
2026-06-09T09:52:59.0799428Z           "evidence": []
2026-06-09T09:52:59.0799510Z         },
2026-06-09T09:52:59.0799615Z         "unit": {
2026-06-09T09:52:59.0799705Z           "complete": true,
2026-06-09T09:52:59.0799801Z           "evidence": [
2026-06-09T09:52:59.0799883Z             {
2026-06-09T09:52:59.0800019Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.0800110Z               "line": 1081
2026-06-09T09:52:59.0800193Z             },
2026-06-09T09:52:59.0800277Z             {
2026-06-09T09:52:59.0800405Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0800501Z               "line": 895
2026-06-09T09:52:59.0800585Z             },
2026-06-09T09:52:59.0800665Z             {
2026-06-09T09:52:59.0800885Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0800980Z               "line": 1153
2026-06-09T09:52:59.0801070Z             },
2026-06-09T09:52:59.0801147Z             {
2026-06-09T09:52:59.0801261Z               "path": "crates/spt-store/src/info.rs",
2026-06-09T09:52:59.0801351Z               "line": 463
2026-06-09T09:52:59.0801433Z             },
2026-06-09T09:52:59.0801519Z             {
2026-06-09T09:52:59.0801714Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0801805Z               "line": 5418
2026-06-09T09:52:59.0801886Z             }
2026-06-09T09:52:59.0801971Z           ]
2026-06-09T09:52:59.0802048Z         }
2026-06-09T09:52:59.0802134Z       }
2026-06-09T09:52:59.0802219Z     },
2026-06-09T09:52:59.0802301Z     {
2026-06-09T09:52:59.0802397Z       "id": "REQ-INST-15",
2026-06-09T09:52:59.0803088Z       "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-09T09:52:59.0803187Z       "requiredStages": [
2026-06-09T09:52:59.0803281Z         "doc",
2026-06-09T09:52:59.0803368Z         "impl",
2026-06-09T09:52:59.0803452Z         "unit"
2026-06-09T09:52:59.0803532Z       ],
2026-06-09T09:52:59.0803622Z       "stages": {
2026-06-09T09:52:59.0803709Z         "doc": {
2026-06-09T09:52:59.0803800Z           "complete": true,
2026-06-09T09:52:59.0803889Z           "evidence": [
2026-06-09T09:52:59.0803970Z             {
2026-06-09T09:52:59.0804138Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-09T09:52:59.0804223Z               "line": 3
2026-06-09T09:52:59.0804310Z             }
2026-06-09T09:52:59.0804391Z           ]
2026-06-09T09:52:59.0804481Z         },
2026-06-09T09:52:59.0804571Z         "impl": {
2026-06-09T09:52:59.0804663Z           "complete": true,
2026-06-09T09:52:59.0804753Z           "evidence": [
2026-06-09T09:52:59.0804839Z             {
2026-06-09T09:52:59.0804973Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.0805058Z               "line": 337
2026-06-09T09:52:59.0805144Z             },
2026-06-09T09:52:59.0805235Z             {
2026-06-09T09:52:59.0805345Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-09T09:52:59.0805439Z               "line": 60
2026-06-09T09:52:59.0805520Z             },
2026-06-09T09:52:59.0805608Z             {
2026-06-09T09:52:59.0805735Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-09T09:52:59.0805825Z               "line": 336
2026-06-09T09:52:59.0805910Z             },
2026-06-09T09:52:59.0805991Z             {
2026-06-09T09:52:59.0806118Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-09T09:52:59.0806203Z               "line": 385
2026-06-09T09:52:59.0806290Z             },
2026-06-09T09:52:59.0806362Z             {
2026-06-09T09:52:59.0806475Z               "path": "crates/spt-store/src/home.rs",
2026-06-09T09:52:59.0806566Z               "line": 19
2026-06-09T09:52:59.0806647Z             },
2026-06-09T09:52:59.0806738Z             {
2026-06-09T09:52:59.0806842Z               "path": "crates/spt-store/src/home.rs",
2026-06-09T09:52:59.0806934Z               "line": 70
2026-06-09T09:52:59.0807015Z             },
2026-06-09T09:52:59.0807109Z             {
2026-06-09T09:52:59.0807225Z               "path": "crates/spt-store/src/home.rs",
2026-06-09T09:52:59.0807310Z               "line": 96
2026-06-09T09:52:59.0807400Z             },
2026-06-09T09:52:59.0807481Z             {
2026-06-09T09:52:59.0807592Z               "path": "crates/spt-store/src/home.rs",
2026-06-09T09:52:59.0807678Z               "line": 121
2026-06-09T09:52:59.0807763Z             },
2026-06-09T09:52:59.0807850Z             {
2026-06-09T09:52:59.0807954Z               "path": "crates/spt-store/src/home.rs",
2026-06-09T09:52:59.0808044Z               "line": 172
2026-06-09T09:52:59.0808121Z             },
2026-06-09T09:52:59.0808310Z             {
2026-06-09T09:52:59.0808426Z               "path": "crates/spt/src/api/startup.rs",
2026-06-09T09:52:59.0808522Z               "line": 143
2026-06-09T09:52:59.0808621Z             },
2026-06-09T09:52:59.0808701Z             {
2026-06-09T09:52:59.0808806Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0808893Z               "line": 907
2026-06-09T09:52:59.0809130Z             }
2026-06-09T09:52:59.0809221Z           ]
2026-06-09T09:52:59.0809306Z         },
2026-06-09T09:52:59.0809392Z         "int": {
2026-06-09T09:52:59.0809489Z           "complete": false,
2026-06-09T09:52:59.0809579Z           "evidence": []
2026-06-09T09:52:59.0809659Z         },
2026-06-09T09:52:59.0809746Z         "unit": {
2026-06-09T09:52:59.0809832Z           "complete": true,
2026-06-09T09:52:59.0809931Z           "evidence": [
2026-06-09T09:52:59.0810017Z             {
2026-06-09T09:52:59.0810147Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-09T09:52:59.0810242Z               "line": 545
2026-06-09T09:52:59.0810322Z             },
2026-06-09T09:52:59.0810409Z             {
2026-06-09T09:52:59.0810541Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-09T09:52:59.0810627Z               "line": 606
2026-06-09T09:52:59.0810714Z             },
2026-06-09T09:52:59.0810800Z             {
2026-06-09T09:52:59.0810913Z               "path": "crates/spt-store/src/home.rs",
2026-06-09T09:52:59.0811003Z               "line": 213
2026-06-09T09:52:59.0811094Z             },
2026-06-09T09:52:59.0811178Z             {
2026-06-09T09:52:59.0811277Z               "path": "crates/spt-store/src/home.rs",
2026-06-09T09:52:59.0811368Z               "line": 249
2026-06-09T09:52:59.0811450Z             },
2026-06-09T09:52:59.0811535Z             {
2026-06-09T09:52:59.0811640Z               "path": "crates/spt-store/src/home.rs",
2026-06-09T09:52:59.0811731Z               "line": 262
2026-06-09T09:52:59.0811816Z             },
2026-06-09T09:52:59.0811897Z             {
2026-06-09T09:52:59.0812013Z               "path": "crates/spt-store/src/home.rs",
2026-06-09T09:52:59.0812098Z               "line": 338
2026-06-09T09:52:59.0812188Z             },
2026-06-09T09:52:59.0812269Z             {
2026-06-09T09:52:59.0812389Z               "path": "crates/spt/src/api/startup.rs",
2026-06-09T09:52:59.0812479Z               "line": 496
2026-06-09T09:52:59.0812564Z             },
2026-06-09T09:52:59.0812652Z             {
2026-06-09T09:52:59.0812751Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0812846Z               "line": 5355
2026-06-09T09:52:59.0812928Z             },
2026-06-09T09:52:59.0813014Z             {
2026-06-09T09:52:59.0813118Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0813204Z               "line": 6729
2026-06-09T09:52:59.0813296Z             }
2026-06-09T09:52:59.0813376Z           ]
2026-06-09T09:52:59.0813461Z         }
2026-06-09T09:52:59.0813538Z       }
2026-06-09T09:52:59.0813625Z     },
2026-06-09T09:52:59.0813714Z     {
2026-06-09T09:52:59.0813808Z       "id": "REQ-INST-2",
2026-06-09T09:52:59.0813937Z       "title": "Per-node files, synced Psyche mind",
2026-06-09T09:52:59.0814026Z       "requiredStages": [
2026-06-09T09:52:59.0814116Z         "impl",
2026-06-09T09:52:59.0814197Z         "unit"
2026-06-09T09:52:59.0814288Z       ],
2026-06-09T09:52:59.0814374Z       "stages": {
2026-06-09T09:52:59.0814464Z         "doc": {
2026-06-09T09:52:59.0814560Z           "complete": false,
2026-06-09T09:52:59.0814646Z           "evidence": []
2026-06-09T09:52:59.0814731Z         },
2026-06-09T09:52:59.0814811Z         "impl": {
2026-06-09T09:52:59.0814908Z           "complete": true,
2026-06-09T09:52:59.0814998Z           "evidence": [
2026-06-09T09:52:59.0817427Z             {
2026-06-09T09:52:59.0817594Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.0817683Z               "line": 86
2026-06-09T09:52:59.0817775Z             },
2026-06-09T09:52:59.0817856Z             {
2026-06-09T09:52:59.0818124Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-09T09:52:59.0818228Z               "line": 28
2026-06-09T09:52:59.0818313Z             },
2026-06-09T09:52:59.0818396Z             {
2026-06-09T09:52:59.0818509Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-09T09:52:59.0818604Z               "line": 74
2026-06-09T09:52:59.0818686Z             },
2026-06-09T09:52:59.0818871Z             {
2026-06-09T09:52:59.0819063Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-09T09:52:59.0819139Z               "line": 96
2026-06-09T09:52:59.0819228Z             },
2026-06-09T09:52:59.0819328Z             {
2026-06-09T09:52:59.0819463Z               "path": "crates/spt-live/src/resume.rs",
2026-06-09T09:52:59.0819552Z               "line": 81
2026-06-09T09:52:59.0819637Z             },
2026-06-09T09:52:59.0819720Z             {
2026-06-09T09:52:59.0819839Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-09T09:52:59.0819933Z               "line": 118
2026-06-09T09:52:59.0820020Z             }
2026-06-09T09:52:59.0820101Z           ]
2026-06-09T09:52:59.0820181Z         },
2026-06-09T09:52:59.0820291Z         "int": {
2026-06-09T09:52:59.0820392Z           "complete": false,
2026-06-09T09:52:59.0820478Z           "evidence": []
2026-06-09T09:52:59.0820563Z         },
2026-06-09T09:52:59.0820645Z         "unit": {
2026-06-09T09:52:59.0820744Z           "complete": true,
2026-06-09T09:52:59.0820830Z           "evidence": [
2026-06-09T09:52:59.0820916Z             {
2026-06-09T09:52:59.0821031Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-09T09:52:59.0821120Z               "line": 212
2026-06-09T09:52:59.0821217Z             },
2026-06-09T09:52:59.0821328Z             {
2026-06-09T09:52:59.0821445Z               "path": "crates/spt-live/src/resume.rs",
2026-06-09T09:52:59.0821534Z               "line": 258
2026-06-09T09:52:59.0821616Z             }
2026-06-09T09:52:59.0821710Z           ]
2026-06-09T09:52:59.0821776Z         }
2026-06-09T09:52:59.0821856Z       }
2026-06-09T09:52:59.0821938Z     },
2026-06-09T09:52:59.0822020Z     {
2026-06-09T09:52:59.0822109Z       "id": "REQ-INST-3",
2026-06-09T09:52:59.0822262Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-09T09:52:59.0822400Z       "requiredStages": [
2026-06-09T09:52:59.0822486Z         "doc",
2026-06-09T09:52:59.0822578Z         "impl",
2026-06-09T09:52:59.0822668Z         "unit"
2026-06-09T09:52:59.0822753Z       ],
2026-06-09T09:52:59.0822839Z       "stages": {
2026-06-09T09:52:59.0822930Z         "doc": {
2026-06-09T09:52:59.0823021Z           "complete": true,
2026-06-09T09:52:59.0823106Z           "evidence": [
2026-06-09T09:52:59.0823187Z             {
2026-06-09T09:52:59.0823311Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-09T09:52:59.0823411Z               "line": 3
2026-06-09T09:52:59.0823488Z             }
2026-06-09T09:52:59.0823579Z           ]
2026-06-09T09:52:59.0823668Z         },
2026-06-09T09:52:59.0823750Z         "impl": {
2026-06-09T09:52:59.0823851Z           "complete": true,
2026-06-09T09:52:59.0823931Z           "evidence": [
2026-06-09T09:52:59.0824016Z             {
2026-06-09T09:52:59.0824137Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-09T09:52:59.0824232Z               "line": 70
2026-06-09T09:52:59.0824331Z             },
2026-06-09T09:52:59.0824416Z             {
2026-06-09T09:52:59.0824544Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-09T09:52:59.0824633Z               "line": 480
2026-06-09T09:52:59.0824723Z             },
2026-06-09T09:52:59.0824810Z             {
2026-06-09T09:52:59.0824934Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.0825029Z               "line": 202
2026-06-09T09:52:59.0825100Z             },
2026-06-09T09:52:59.0825197Z             {
2026-06-09T09:52:59.0825329Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.0825430Z               "line": 291
2026-06-09T09:52:59.0825506Z             },
2026-06-09T09:52:59.0825863Z             {
2026-06-09T09:52:59.0825997Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.0826084Z               "line": 325
2026-06-09T09:52:59.0826188Z             },
2026-06-09T09:52:59.0826278Z             {
2026-06-09T09:52:59.0826408Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.0826578Z               "line": 341
2026-06-09T09:52:59.0826665Z             },
2026-06-09T09:52:59.0826752Z             {
2026-06-09T09:52:59.0826864Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.0826987Z               "line": 218
2026-06-09T09:52:59.0827060Z             },
2026-06-09T09:52:59.0827153Z             {
2026-06-09T09:52:59.0827280Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.0827362Z               "line": 374
2026-06-09T09:52:59.0827449Z             },
2026-06-09T09:52:59.0827529Z             {
2026-06-09T09:52:59.0827639Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.0827716Z               "line": 45
2026-06-09T09:52:59.0827811Z             },
2026-06-09T09:52:59.0827891Z             {
2026-06-09T09:52:59.0828007Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.0828102Z               "line": 114
2026-06-09T09:52:59.0828182Z             },
2026-06-09T09:52:59.0828273Z             {
2026-06-09T09:52:59.0828383Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.0828468Z               "line": 152
2026-06-09T09:52:59.0828549Z             },
2026-06-09T09:52:59.0828626Z             {
2026-06-09T09:52:59.0828745Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.0828831Z               "line": 168
2026-06-09T09:52:59.0828917Z             },
2026-06-09T09:52:59.0829069Z             {
2026-06-09T09:52:59.0829188Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.0829280Z               "line": 178
2026-06-09T09:52:59.0829365Z             },
2026-06-09T09:52:59.0829455Z             {
2026-06-09T09:52:59.0829566Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.0829662Z               "line": 210
2026-06-09T09:52:59.0829741Z             },
2026-06-09T09:52:59.0829821Z             {
2026-06-09T09:52:59.0829931Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.0830023Z               "line": 287
2026-06-09T09:52:59.0830112Z             },
2026-06-09T09:52:59.0830188Z             {
2026-06-09T09:52:59.0830309Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.0830394Z               "line": 311
2026-06-09T09:52:59.0830479Z             },
2026-06-09T09:52:59.0830561Z             {
2026-06-09T09:52:59.0830665Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.0830751Z               "line": 387
2026-06-09T09:52:59.0830832Z             },
2026-06-09T09:52:59.0830919Z             {
2026-06-09T09:52:59.0831043Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.0831133Z               "line": 436
2026-06-09T09:52:59.0831220Z             },
2026-06-09T09:52:59.0831300Z             {
2026-06-09T09:52:59.0831418Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-09T09:52:59.0831496Z               "line": 37
2026-06-09T09:52:59.0831568Z             },
2026-06-09T09:52:59.0831661Z             {
2026-06-09T09:52:59.0831777Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0831868Z               "line": 62
2026-06-09T09:52:59.0831953Z             },
2026-06-09T09:52:59.0832038Z             {
2026-06-09T09:52:59.0832148Z               "path": "crates/spt-store/src/info.rs",
2026-06-09T09:52:59.0832242Z               "line": 190
2026-06-09T09:52:59.0832321Z             },
2026-06-09T09:52:59.0832402Z             {
2026-06-09T09:52:59.0832512Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0832599Z               "line": 1163
2026-06-09T09:52:59.0832798Z             }
2026-06-09T09:52:59.0832885Z           ]
2026-06-09T09:52:59.0832970Z         },
2026-06-09T09:52:59.0833060Z         "int": {
2026-06-09T09:52:59.0833147Z           "complete": false,
2026-06-09T09:52:59.0833232Z           "evidence": []
2026-06-09T09:52:59.0833313Z         },
2026-06-09T09:52:59.0833399Z         "unit": {
2026-06-09T09:52:59.0833491Z           "complete": true,
2026-06-09T09:52:59.0833699Z           "evidence": [
2026-06-09T09:52:59.0833786Z             {
2026-06-09T09:52:59.0833910Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-09T09:52:59.0833990Z               "line": 360
2026-06-09T09:52:59.0834077Z             },
2026-06-09T09:52:59.0834162Z             {
2026-06-09T09:52:59.0834281Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.0834373Z               "line": 664
2026-06-09T09:52:59.0834459Z             },
2026-06-09T09:52:59.0834543Z             {
2026-06-09T09:52:59.0834668Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.0834750Z               "line": 721
2026-06-09T09:52:59.0834829Z             },
2026-06-09T09:52:59.0834910Z             {
2026-06-09T09:52:59.0835043Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.0835137Z               "line": 1182
2026-06-09T09:52:59.0835217Z             },
2026-06-09T09:52:59.0835312Z             {
2026-06-09T09:52:59.0835437Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.0835522Z               "line": 1322
2026-06-09T09:52:59.0835607Z             },
2026-06-09T09:52:59.0835690Z             {
2026-06-09T09:52:59.0835809Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.0835899Z               "line": 447
2026-06-09T09:52:59.0835980Z             },
2026-06-09T09:52:59.0836066Z             {
2026-06-09T09:52:59.0836185Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.0836271Z               "line": 483
2026-06-09T09:52:59.0836362Z             },
2026-06-09T09:52:59.0836452Z             {
2026-06-09T09:52:59.0836566Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.0836659Z               "line": 538
2026-06-09T09:52:59.0836743Z             },
2026-06-09T09:52:59.0836829Z             {
2026-06-09T09:52:59.0836939Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.0837039Z               "line": 695
2026-06-09T09:52:59.0837129Z             },
2026-06-09T09:52:59.0837205Z             {
2026-06-09T09:52:59.0837312Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.0837401Z               "line": 929
2026-06-09T09:52:59.0837486Z             },
2026-06-09T09:52:59.0837567Z             {
2026-06-09T09:52:59.0837676Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.0837765Z               "line": 943
2026-06-09T09:52:59.0837850Z             },
2026-06-09T09:52:59.0837937Z             {
2026-06-09T09:52:59.0838056Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0838141Z               "line": 1193
2026-06-09T09:52:59.0838222Z             },
2026-06-09T09:52:59.0838309Z             {
2026-06-09T09:52:59.0838418Z               "path": "crates/spt-store/src/info.rs",
2026-06-09T09:52:59.0838504Z               "line": 413
2026-06-09T09:52:59.0838590Z             },
2026-06-09T09:52:59.0838676Z             {
2026-06-09T09:52:59.0838785Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0838877Z               "line": 5379
2026-06-09T09:52:59.0839048Z             }
2026-06-09T09:52:59.0839133Z           ]
2026-06-09T09:52:59.0839216Z         }
2026-06-09T09:52:59.0839305Z       }
2026-06-09T09:52:59.0839391Z     },
2026-06-09T09:52:59.0839477Z     {
2026-06-09T09:52:59.0839568Z       "id": "REQ-INST-4",
2026-06-09T09:52:59.0839744Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-09T09:52:59.0839826Z       "requiredStages": [
2026-06-09T09:52:59.0840010Z         "impl",
2026-06-09T09:52:59.0840102Z         "unit"
2026-06-09T09:52:59.0840184Z       ],
2026-06-09T09:52:59.0840273Z       "stages": {
2026-06-09T09:52:59.0840367Z         "doc": {
2026-06-09T09:52:59.0840458Z           "complete": false,
2026-06-09T09:52:59.0840549Z           "evidence": []
2026-06-09T09:52:59.0840630Z         },
2026-06-09T09:52:59.0840705Z         "impl": {
2026-06-09T09:52:59.0840888Z           "complete": true,
2026-06-09T09:52:59.0840978Z           "evidence": [
2026-06-09T09:52:59.0841063Z             {
2026-06-09T09:52:59.0841184Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.0841274Z               "line": 292
2026-06-09T09:52:59.0841358Z             },
2026-06-09T09:52:59.0841450Z             {
2026-06-09T09:52:59.0841564Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.0841654Z               "line": 202
2026-06-09T09:52:59.0841741Z             },
2026-06-09T09:52:59.0841822Z             {
2026-06-09T09:52:59.0841946Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.0842032Z               "line": 234
2026-06-09T09:52:59.0842123Z             },
2026-06-09T09:52:59.0842203Z             {
2026-06-09T09:52:59.0842307Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.0842395Z               "line": 274
2026-06-09T09:52:59.0842480Z             }
2026-06-09T09:52:59.0842569Z           ]
2026-06-09T09:52:59.0842650Z         },
2026-06-09T09:52:59.0842741Z         "int": {
2026-06-09T09:52:59.0842840Z           "complete": false,
2026-06-09T09:52:59.0842934Z           "evidence": []
2026-06-09T09:52:59.0843025Z         },
2026-06-09T09:52:59.0843097Z         "unit": {
2026-06-09T09:52:59.0843187Z           "complete": true,
2026-06-09T09:52:59.0843272Z           "evidence": [
2026-06-09T09:52:59.0843359Z             {
2026-06-09T09:52:59.0843478Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.0843568Z               "line": 716
2026-06-09T09:52:59.0843659Z             },
2026-06-09T09:52:59.0843741Z             {
2026-06-09T09:52:59.0843859Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.0843940Z               "line": 559
2026-06-09T09:52:59.0844017Z             },
2026-06-09T09:52:59.0844097Z             {
2026-06-09T09:52:59.0844216Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.0844313Z               "line": 666
2026-06-09T09:52:59.0844398Z             },
2026-06-09T09:52:59.0844489Z             {
2026-06-09T09:52:59.0844598Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.0844690Z               "line": 748
2026-06-09T09:52:59.0844769Z             }
2026-06-09T09:52:59.0844855Z           ]
2026-06-09T09:52:59.0844943Z         }
2026-06-09T09:52:59.0845024Z       }
2026-06-09T09:52:59.0845112Z     },
2026-06-09T09:52:59.0845199Z     {
2026-06-09T09:52:59.0845291Z       "id": "REQ-INST-5",
2026-06-09T09:52:59.0845475Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-09T09:52:59.0845555Z       "requiredStages": [
2026-06-09T09:52:59.0845641Z         "impl",
2026-06-09T09:52:59.0845730Z         "unit",
2026-06-09T09:52:59.0845820Z         "int"
2026-06-09T09:52:59.0845897Z       ],
2026-06-09T09:52:59.0845992Z       "stages": {
2026-06-09T09:52:59.0846077Z         "doc": {
2026-06-09T09:52:59.0846187Z           "complete": false,
2026-06-09T09:52:59.0846279Z           "evidence": []
2026-06-09T09:52:59.0846355Z         },
2026-06-09T09:52:59.0846435Z         "impl": {
2026-06-09T09:52:59.0846521Z           "complete": true,
2026-06-09T09:52:59.0846612Z           "evidence": [
2026-06-09T09:52:59.0846694Z             {
2026-06-09T09:52:59.0846821Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.0846913Z               "line": 41
2026-06-09T09:52:59.0846993Z             },
2026-06-09T09:52:59.0847079Z             {
2026-06-09T09:52:59.0847189Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-09T09:52:59.0847360Z               "line": 68
2026-06-09T09:52:59.0847451Z             },
2026-06-09T09:52:59.0847538Z             {
2026-06-09T09:52:59.0847655Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-09T09:52:59.0847742Z               "line": 99
2026-06-09T09:52:59.0847829Z             },
2026-06-09T09:52:59.0847909Z             {
2026-06-09T09:52:59.0848079Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-09T09:52:59.0848165Z               "line": 183
2026-06-09T09:52:59.0848255Z             },
2026-06-09T09:52:59.0848339Z             {
2026-06-09T09:52:59.0848449Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-09T09:52:59.0848540Z               "line": 314
2026-06-09T09:52:59.0848630Z             }
2026-06-09T09:52:59.0848720Z           ]
2026-06-09T09:52:59.0848802Z         },
2026-06-09T09:52:59.0848888Z         "int": {
2026-06-09T09:52:59.0849039Z           "complete": true,
2026-06-09T09:52:59.0849122Z           "evidence": [
2026-06-09T09:52:59.0849217Z             {
2026-06-09T09:52:59.0849336Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-09T09:52:59.0849432Z               "line": 156
2026-06-09T09:52:59.0849522Z             },
2026-06-09T09:52:59.0849603Z             {
2026-06-09T09:52:59.0849717Z               "path": "crates/spt-daemon/tests/peerloop.rs",
2026-06-09T09:52:59.0849809Z               "line": 102
2026-06-09T09:52:59.0849894Z             },
2026-06-09T09:52:59.0849975Z             {
2026-06-09T09:52:59.0850100Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.0850194Z               "line": 637
2026-06-09T09:52:59.0850275Z             },
2026-06-09T09:52:59.0850362Z             {
2026-06-09T09:52:59.0850467Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.0850566Z               "line": 974
2026-06-09T09:52:59.0850652Z             }
2026-06-09T09:52:59.0850744Z           ]
2026-06-09T09:52:59.0850842Z         },
2026-06-09T09:52:59.0850932Z         "unit": {
2026-06-09T09:52:59.0851042Z           "complete": true,
2026-06-09T09:52:59.0851133Z           "evidence": [
2026-06-09T09:52:59.0851228Z             {
2026-06-09T09:52:59.0851337Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-09T09:52:59.0851443Z               "line": 531
2026-06-09T09:52:59.0851542Z             },
2026-06-09T09:52:59.0851638Z             {
2026-06-09T09:52:59.0851762Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-09T09:52:59.0851853Z               "line": 574
2026-06-09T09:52:59.0851962Z             },
2026-06-09T09:52:59.0852058Z             {
2026-06-09T09:52:59.0852196Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-09T09:52:59.0852296Z               "line": 219
2026-06-09T09:52:59.0852373Z             }
2026-06-09T09:52:59.0852472Z           ]
2026-06-09T09:52:59.0852562Z         }
2026-06-09T09:52:59.0852664Z       }
2026-06-09T09:52:59.0852749Z     },
2026-06-09T09:52:59.0852854Z     {
2026-06-09T09:52:59.0852970Z       "id": "REQ-INST-6",
2026-06-09T09:52:59.0853158Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-09T09:52:59.0853272Z       "requiredStages": [
2026-06-09T09:52:59.0853358Z         "impl",
2026-06-09T09:52:59.0853460Z         "unit",
2026-06-09T09:52:59.0853555Z         "int"
2026-06-09T09:52:59.0853657Z       ],
2026-06-09T09:52:59.0853762Z       "stages": {
2026-06-09T09:52:59.0853842Z         "doc": {
2026-06-09T09:52:59.0853952Z           "complete": true,
2026-06-09T09:52:59.0854048Z           "evidence": [
2026-06-09T09:52:59.0854156Z             {
2026-06-09T09:52:59.0854263Z               "path": "docs/DEFERRED.md",
2026-06-09T09:52:59.0854372Z               "line": 13
2026-06-09T09:52:59.0854471Z             }
2026-06-09T09:52:59.0854563Z           ]
2026-06-09T09:52:59.0854653Z         },
2026-06-09T09:52:59.0854743Z         "impl": {
2026-06-09T09:52:59.0854853Z           "complete": true,
2026-06-09T09:52:59.0854954Z           "evidence": [
2026-06-09T09:52:59.0855178Z             {
2026-06-09T09:52:59.0855325Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-09T09:52:59.0855410Z               "line": 391
2026-06-09T09:52:59.0855522Z             },
2026-06-09T09:52:59.0855612Z             {
2026-06-09T09:52:59.0855745Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-09T09:52:59.0855945Z               "line": 27
2026-06-09T09:52:59.0856049Z             },
2026-06-09T09:52:59.0856163Z             {
2026-06-09T09:52:59.0856286Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-09T09:52:59.0856380Z               "line": 73
2026-06-09T09:52:59.0856466Z             },
2026-06-09T09:52:59.0856552Z             {
2026-06-09T09:52:59.0856671Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-09T09:52:59.0856791Z               "line": 182
2026-06-09T09:52:59.0856895Z             },
2026-06-09T09:52:59.0856976Z             {
2026-06-09T09:52:59.0857120Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.0857220Z               "line": 424
2026-06-09T09:52:59.0857324Z             },
2026-06-09T09:52:59.0857410Z             {
2026-06-09T09:52:59.0857548Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-09T09:52:59.0857648Z               "line": 31
2026-06-09T09:52:59.0857740Z             },
2026-06-09T09:52:59.0857840Z             {
2026-06-09T09:52:59.0857968Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-09T09:52:59.0858074Z               "line": 182
2026-06-09T09:52:59.0858173Z             },
2026-06-09T09:52:59.0858273Z             {
2026-06-09T09:52:59.0858413Z               "path": "crates/spt/src/api/worker.rs",
2026-06-09T09:52:59.0858507Z               "line": 81
2026-06-09T09:52:59.0858616Z             },
2026-06-09T09:52:59.0858706Z             {
2026-06-09T09:52:59.0858833Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0858928Z               "line": 1164
2026-06-09T09:52:59.0859115Z             },
2026-06-09T09:52:59.0859224Z             {
2026-06-09T09:52:59.0859347Z               "path": "crates/spt/src/wansend.rs",
2026-06-09T09:52:59.0859458Z               "line": 179
2026-06-09T09:52:59.0859543Z             },
2026-06-09T09:52:59.0859638Z             {
2026-06-09T09:52:59.0859767Z               "path": "crates/spt/src/wansend.rs",
2026-06-09T09:52:59.0859862Z               "line": 215
2026-06-09T09:52:59.0859973Z             }
2026-06-09T09:52:59.0860068Z           ]
2026-06-09T09:52:59.0860168Z         },
2026-06-09T09:52:59.0860263Z         "int": {
2026-06-09T09:52:59.0860373Z           "complete": true,
2026-06-09T09:52:59.0860468Z           "evidence": [
2026-06-09T09:52:59.0860568Z             {
2026-06-09T09:52:59.0860707Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.0860806Z               "line": 651
2026-06-09T09:52:59.0860907Z             },
2026-06-09T09:52:59.0860999Z             {
2026-06-09T09:52:59.0861140Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.0861251Z               "line": 1019
2026-06-09T09:52:59.0861337Z             },
2026-06-09T09:52:59.0861454Z             {
2026-06-09T09:52:59.0861568Z               "path": "crates/spt/src/wansend.rs",
2026-06-09T09:52:59.0861693Z               "line": 725
2026-06-09T09:52:59.0861783Z             }
2026-06-09T09:52:59.0861874Z           ]
2026-06-09T09:52:59.0861970Z         },
2026-06-09T09:52:59.0862056Z         "unit": {
2026-06-09T09:52:59.0862154Z           "complete": true,
2026-06-09T09:52:59.0862242Z           "evidence": [
2026-06-09T09:52:59.0862342Z             {
2026-06-09T09:52:59.0862465Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-09T09:52:59.0862566Z               "line": 660
2026-06-09T09:52:59.0862656Z             },
2026-06-09T09:52:59.0862742Z             {
2026-06-09T09:52:59.0862886Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.0862976Z               "line": 897
2026-06-09T09:52:59.0863075Z             },
2026-06-09T09:52:59.0863276Z             {
2026-06-09T09:52:59.0863414Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-09T09:52:59.0863520Z               "line": 66
2026-06-09T09:52:59.0863610Z             },
2026-06-09T09:52:59.0863713Z             {
2026-06-09T09:52:59.0863828Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-09T09:52:59.0864073Z               "line": 272
2026-06-09T09:52:59.0864159Z             },
2026-06-09T09:52:59.0864265Z             {
2026-06-09T09:52:59.0864392Z               "path": "crates/spt/src/api/worker.rs",
2026-06-09T09:52:59.0864484Z               "line": 201
2026-06-09T09:52:59.0864593Z             }
2026-06-09T09:52:59.0864679Z           ]
2026-06-09T09:52:59.0864779Z         }
2026-06-09T09:52:59.0864866Z       }
2026-06-09T09:52:59.0864965Z     },
2026-06-09T09:52:59.0865065Z     {
2026-06-09T09:52:59.0865161Z       "id": "REQ-INST-7",
2026-06-09T09:52:59.0865365Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-09T09:52:59.0865519Z       "requiredStages": [
2026-06-09T09:52:59.0865623Z         "impl",
2026-06-09T09:52:59.0865714Z         "unit",
2026-06-09T09:52:59.0865815Z         "int"
2026-06-09T09:52:59.0865913Z       ],
2026-06-09T09:52:59.0866004Z       "stages": {
2026-06-09T09:52:59.0866125Z         "doc": {
2026-06-09T09:52:59.0866223Z           "complete": false,
2026-06-09T09:52:59.0866334Z           "evidence": []
2026-06-09T09:52:59.0866420Z         },
2026-06-09T09:52:59.0866520Z         "impl": {
2026-06-09T09:52:59.0866628Z           "complete": true,
2026-06-09T09:52:59.0866719Z           "evidence": [
2026-06-09T09:52:59.0866818Z             {
2026-06-09T09:52:59.0866945Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-09T09:52:59.0867055Z               "line": 436
2026-06-09T09:52:59.0867146Z             },
2026-06-09T09:52:59.0867250Z             {
2026-06-09T09:52:59.0867385Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.0867485Z               "line": 42
2026-06-09T09:52:59.0867579Z             },
2026-06-09T09:52:59.0867671Z             {
2026-06-09T09:52:59.0867814Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.0867908Z               "line": 27
2026-06-09T09:52:59.0868004Z             },
2026-06-09T09:52:59.0868108Z             {
2026-06-09T09:52:59.0868237Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.0868348Z               "line": 191
2026-06-09T09:52:59.0868433Z             },
2026-06-09T09:52:59.0868528Z             {
2026-06-09T09:52:59.0868658Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.0868766Z               "line": 328
2026-06-09T09:52:59.0868867Z             },
2026-06-09T09:52:59.0869044Z             {
2026-06-09T09:52:59.0869185Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-09T09:52:59.0869280Z               "line": 59
2026-06-09T09:52:59.0869389Z             },
2026-06-09T09:52:59.0869479Z             {
2026-06-09T09:52:59.0869622Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0869727Z               "line": 41
2026-06-09T09:52:59.0869822Z             },
2026-06-09T09:52:59.0869922Z             {
2026-06-09T09:52:59.0870047Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-09T09:52:59.0870155Z               "line": 27
2026-06-09T09:52:59.0870262Z             },
2026-06-09T09:52:59.0870347Z             {
2026-06-09T09:52:59.0870494Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-09T09:52:59.0870591Z               "line": 119
2026-06-09T09:52:59.0870690Z             },
2026-06-09T09:52:59.0870780Z             {
2026-06-09T09:52:59.0870924Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-09T09:52:59.0871033Z               "line": 134
2026-06-09T09:52:59.0871124Z             },
2026-06-09T09:52:59.0871235Z             {
2026-06-09T09:52:59.0871362Z               "path": "crates/spt-store/src/registry.rs",
2026-06-09T09:52:59.0871587Z               "line": 139
2026-06-09T09:52:59.0871681Z             }
2026-06-09T09:52:59.0871792Z           ]
2026-06-09T09:52:59.0871893Z         },
2026-06-09T09:52:59.0871981Z         "int": {
2026-06-09T09:52:59.0872099Z           "complete": true,
2026-06-09T09:52:59.0872191Z           "evidence": [
2026-06-09T09:52:59.0872291Z             {
2026-06-09T09:52:59.0872525Z               "path": "crates/spt-daemon/tests/peerloop.rs",
2026-06-09T09:52:59.0872634Z               "line": 102
2026-06-09T09:52:59.0872738Z             },
2026-06-09T09:52:59.0872826Z             {
2026-06-09T09:52:59.0872963Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.0873058Z               "line": 595
2026-06-09T09:52:59.0873164Z             },
2026-06-09T09:52:59.0873259Z             {
2026-06-09T09:52:59.0873382Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.0873484Z               "line": 869
2026-06-09T09:52:59.0873569Z             }
2026-06-09T09:52:59.0873664Z           ]
2026-06-09T09:52:59.0873741Z         },
2026-06-09T09:52:59.0873831Z         "unit": {
2026-06-09T09:52:59.0873926Z           "complete": true,
2026-06-09T09:52:59.0874017Z           "evidence": [
2026-06-09T09:52:59.0874109Z             {
2026-06-09T09:52:59.0874231Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.0874331Z               "line": 1052
2026-06-09T09:52:59.0874417Z             },
2026-06-09T09:52:59.0874515Z             {
2026-06-09T09:52:59.0874642Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.0874743Z               "line": 1383
2026-06-09T09:52:59.0874840Z             },
2026-06-09T09:52:59.0874933Z             {
2026-06-09T09:52:59.0875072Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-09T09:52:59.0875168Z               "line": 84
2026-06-09T09:52:59.0875257Z             },
2026-06-09T09:52:59.0875349Z             {
2026-06-09T09:52:59.0875487Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0875596Z               "line": 763
2026-06-09T09:52:59.0875688Z             },
2026-06-09T09:52:59.0875792Z             {
2026-06-09T09:52:59.0875920Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0876026Z               "line": 774
2026-06-09T09:52:59.0876117Z             },
2026-06-09T09:52:59.0876226Z             {
2026-06-09T09:52:59.0876351Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0876441Z               "line": 789
2026-06-09T09:52:59.0876522Z             },
2026-06-09T09:52:59.0876608Z             {
2026-06-09T09:52:59.0876732Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-09T09:52:59.0876827Z               "line": 165
2026-06-09T09:52:59.0876913Z             },
2026-06-09T09:52:59.0877004Z             {
2026-06-09T09:52:59.0877126Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-09T09:52:59.0877221Z               "line": 180
2026-06-09T09:52:59.0877307Z             },
2026-06-09T09:52:59.0877406Z             {
2026-06-09T09:52:59.0877529Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-09T09:52:59.0877620Z               "line": 213
2026-06-09T09:52:59.0877706Z             }
2026-06-09T09:52:59.0877796Z           ]
2026-06-09T09:52:59.0877886Z         }
2026-06-09T09:52:59.0877974Z       }
2026-06-09T09:52:59.0878064Z     },
2026-06-09T09:52:59.0878153Z     {
2026-06-09T09:52:59.0878245Z       "id": "REQ-INST-8",
2026-06-09T09:52:59.0878407Z       "title": "Remote-control mode distinct from local operation",
2026-06-09T09:52:59.0878497Z       "requiredStages": [
2026-06-09T09:52:59.0878593Z         "impl",
2026-06-09T09:52:59.0878678Z         "unit",
2026-06-09T09:52:59.0878768Z         "int"
2026-06-09T09:52:59.0878845Z       ],
2026-06-09T09:52:59.0878927Z       "stages": {
2026-06-09T09:52:59.0879093Z         "doc": {
2026-06-09T09:52:59.0879185Z           "complete": false,
2026-06-09T09:52:59.0879394Z           "evidence": []
2026-06-09T09:52:59.0879500Z         },
2026-06-09T09:52:59.0879609Z         "impl": {
2026-06-09T09:52:59.0879707Z           "complete": true,
2026-06-09T09:52:59.0879817Z           "evidence": [
2026-06-09T09:52:59.0879926Z             {
2026-06-09T09:52:59.0880048Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-09T09:52:59.0880149Z               "line": 98
2026-06-09T09:52:59.0880329Z             },
2026-06-09T09:52:59.0880439Z             {
2026-06-09T09:52:59.0880578Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-09T09:52:59.0880677Z               "line": 209
2026-06-09T09:52:59.0880783Z             },
2026-06-09T09:52:59.0880873Z             {
2026-06-09T09:52:59.0881016Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-09T09:52:59.0881107Z               "line": 230
2026-06-09T09:52:59.0881198Z             },
2026-06-09T09:52:59.0881288Z             {
2026-06-09T09:52:59.0881402Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-09T09:52:59.0881499Z               "line": 35
2026-06-09T09:52:59.0881584Z             }
2026-06-09T09:52:59.0881669Z           ]
2026-06-09T09:52:59.0881756Z         },
2026-06-09T09:52:59.0881846Z         "int": {
2026-06-09T09:52:59.0881941Z           "complete": true,
2026-06-09T09:52:59.0882032Z           "evidence": [
2026-06-09T09:52:59.0882129Z             {
2026-06-09T09:52:59.0882256Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-09T09:52:59.0882347Z               "line": 415
2026-06-09T09:52:59.0882429Z             },
2026-06-09T09:52:59.0882527Z             {
2026-06-09T09:52:59.0882650Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.0882742Z               "line": 933
2026-06-09T09:52:59.0882833Z             }
2026-06-09T09:52:59.0882917Z           ]
2026-06-09T09:52:59.0883003Z         },
2026-06-09T09:52:59.0883090Z         "unit": {
2026-06-09T09:52:59.0883190Z           "complete": true,
2026-06-09T09:52:59.0883270Z           "evidence": [
2026-06-09T09:52:59.0883352Z             {
2026-06-09T09:52:59.0883471Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-09T09:52:59.0883556Z               "line": 181
2026-06-09T09:52:59.0883662Z             },
2026-06-09T09:52:59.0883747Z             {
2026-06-09T09:52:59.0887777Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-09T09:52:59.0887896Z               "line": 259
2026-06-09T09:52:59.0887975Z             },
2026-06-09T09:52:59.0888070Z             {
2026-06-09T09:52:59.0888199Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-09T09:52:59.0888300Z               "line": 70
2026-06-09T09:52:59.0888384Z             },
2026-06-09T09:52:59.0888476Z             {
2026-06-09T09:52:59.0888610Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-09T09:52:59.0888713Z               "line": 110
2026-06-09T09:52:59.0888815Z             }
2026-06-09T09:52:59.0888900Z           ]
2026-06-09T09:52:59.0889076Z         }
2026-06-09T09:52:59.0889172Z       }
2026-06-09T09:52:59.0889282Z     },
2026-06-09T09:52:59.0889382Z     {
2026-06-09T09:52:59.0889483Z       "id": "REQ-INST-9",
2026-06-09T09:52:59.0889691Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-09T09:52:59.0889792Z       "requiredStages": [
2026-06-09T09:52:59.0889896Z         "impl",
2026-06-09T09:52:59.0889987Z         "unit"
2026-06-09T09:52:59.0890070Z       ],
2026-06-09T09:52:59.0890165Z       "stages": {
2026-06-09T09:52:59.0890244Z         "doc": {
2026-06-09T09:52:59.0890348Z           "complete": false,
2026-06-09T09:52:59.0890434Z           "evidence": []
2026-06-09T09:52:59.0890528Z         },
2026-06-09T09:52:59.0890613Z         "impl": {
2026-06-09T09:52:59.0890709Z           "complete": true,
2026-06-09T09:52:59.0890804Z           "evidence": [
2026-06-09T09:52:59.0890885Z             {
2026-06-09T09:52:59.0891013Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0891105Z               "line": 401
2026-06-09T09:52:59.0891323Z             }
2026-06-09T09:52:59.0891410Z           ]
2026-06-09T09:52:59.0891501Z         },
2026-06-09T09:52:59.0891595Z         "int": {
2026-06-09T09:52:59.0891687Z           "complete": false,
2026-06-09T09:52:59.0891781Z           "evidence": []
2026-06-09T09:52:59.0891862Z         },
2026-06-09T09:52:59.0891948Z         "unit": {
2026-06-09T09:52:59.0892129Z           "complete": true,
2026-06-09T09:52:59.0892220Z           "evidence": [
2026-06-09T09:52:59.0892302Z             {
2026-06-09T09:52:59.0892416Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0892501Z               "line": 1300
2026-06-09T09:52:59.0892592Z             },
2026-06-09T09:52:59.0892689Z             {
2026-06-09T09:52:59.0892806Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0892907Z               "line": 1309
2026-06-09T09:52:59.0893008Z             },
2026-06-09T09:52:59.0893101Z             {
2026-06-09T09:52:59.0893239Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0893335Z               "line": 1325
2026-06-09T09:52:59.0893430Z             },
2026-06-09T09:52:59.0893520Z             {
2026-06-09T09:52:59.0893659Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0893764Z               "line": 1337
2026-06-09T09:52:59.0893859Z             },
2026-06-09T09:52:59.0893970Z             {
2026-06-09T09:52:59.0894088Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.0894198Z               "line": 1357
2026-06-09T09:52:59.0894285Z             }
2026-06-09T09:52:59.0894379Z           ]
2026-06-09T09:52:59.0894469Z         }
2026-06-09T09:52:59.0894546Z       }
2026-06-09T09:52:59.0894637Z     },
2026-06-09T09:52:59.0894718Z     {
2026-06-09T09:52:59.0894817Z       "id": "REQ-INSTALL-1",
2026-06-09T09:52:59.0895003Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-09T09:52:59.0895108Z       "requiredStages": [
2026-06-09T09:52:59.0895200Z         "doc",
2026-06-09T09:52:59.0895281Z         "impl",
2026-06-09T09:52:59.0895370Z         "int"
2026-06-09T09:52:59.0895451Z       ],
2026-06-09T09:52:59.0895542Z       "stages": {
2026-06-09T09:52:59.0895621Z         "doc": {
2026-06-09T09:52:59.0895716Z           "complete": true,
2026-06-09T09:52:59.0895811Z           "evidence": [
2026-06-09T09:52:59.0895897Z             {
2026-06-09T09:52:59.0896002Z               "path": "CONTEXT.md",
2026-06-09T09:52:59.0896082Z               "line": 576
2026-06-09T09:52:59.0896174Z             }
2026-06-09T09:52:59.0896255Z           ]
2026-06-09T09:52:59.0896345Z         },
2026-06-09T09:52:59.0896435Z         "impl": {
2026-06-09T09:52:59.0896522Z           "complete": true,
2026-06-09T09:52:59.0896622Z           "evidence": [
2026-06-09T09:52:59.0896712Z             {
2026-06-09T09:52:59.0896828Z               "path": "installer/install.ps1",
2026-06-09T09:52:59.0896903Z               "line": 57
2026-06-09T09:52:59.0896998Z             },
2026-06-09T09:52:59.0897094Z             {
2026-06-09T09:52:59.0897199Z               "path": "installer/install.sh",
2026-06-09T09:52:59.0897294Z               "line": 52
2026-06-09T09:52:59.0897379Z             }
2026-06-09T09:52:59.0897481Z           ]
2026-06-09T09:52:59.0897566Z         },
2026-06-09T09:52:59.0897670Z         "int": {
2026-06-09T09:52:59.0897777Z           "complete": true,
2026-06-09T09:52:59.0897871Z           "evidence": [
2026-06-09T09:52:59.0897976Z             {
2026-06-09T09:52:59.0898110Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-09T09:52:59.0898223Z               "line": 21
2026-06-09T09:52:59.0898313Z             }
2026-06-09T09:52:59.0898414Z           ]
2026-06-09T09:52:59.0898512Z         },
2026-06-09T09:52:59.0898606Z         "unit": {
2026-06-09T09:52:59.0898716Z           "complete": false,
2026-06-09T09:52:59.0898808Z           "evidence": []
2026-06-09T09:52:59.0898898Z         }
2026-06-09T09:52:59.0899070Z       }
2026-06-09T09:52:59.0899288Z     },
2026-06-09T09:52:59.0899375Z     {
2026-06-09T09:52:59.0899461Z       "id": "REQ-INSTALL-2",
2026-06-09T09:52:59.0899612Z       "title": "Marketplace-repackaging-friendly install",
2026-06-09T09:52:59.0899699Z       "requiredStages": [
2026-06-09T09:52:59.0899780Z         "doc"
2026-06-09T09:52:59.0899861Z       ],
2026-06-09T09:52:59.0899946Z       "stages": {
2026-06-09T09:52:59.0900118Z         "doc": {
2026-06-09T09:52:59.0900209Z           "complete": true,
2026-06-09T09:52:59.0900310Z           "evidence": [
2026-06-09T09:52:59.0900396Z             {
2026-06-09T09:52:59.0900499Z               "path": "CONTEXT.md",
2026-06-09T09:52:59.0900591Z               "line": 577
2026-06-09T09:52:59.0900677Z             }
2026-06-09T09:52:59.0900762Z           ]
2026-06-09T09:52:59.0900846Z         },
2026-06-09T09:52:59.0900937Z         "impl": {
2026-06-09T09:52:59.0901028Z           "complete": false,
2026-06-09T09:52:59.0901116Z           "evidence": []
2026-06-09T09:52:59.0901201Z         },
2026-06-09T09:52:59.0901288Z         "int": {
2026-06-09T09:52:59.0901369Z           "complete": false,
2026-06-09T09:52:59.0901459Z           "evidence": []
2026-06-09T09:52:59.0901554Z         },
2026-06-09T09:52:59.0901637Z         "unit": {
2026-06-09T09:52:59.0901737Z           "complete": false,
2026-06-09T09:52:59.0901821Z           "evidence": []
2026-06-09T09:52:59.0901932Z         }
2026-06-09T09:52:59.0902031Z       }
2026-06-09T09:52:59.0902117Z     },
2026-06-09T09:52:59.0902213Z     {
2026-06-09T09:52:59.0902313Z       "id": "REQ-INSTALL-3",
2026-06-09T09:52:59.0902470Z       "title": "Idempotent + interactive-optional first run",
2026-06-09T09:52:59.0902571Z       "requiredStages": [
2026-06-09T09:52:59.0902675Z         "impl",
2026-06-09T09:52:59.0902775Z         "int"
2026-06-09T09:52:59.0902862Z       ],
2026-06-09T09:52:59.0902962Z       "stages": {
2026-06-09T09:52:59.0903052Z         "doc": {
2026-06-09T09:52:59.0903162Z           "complete": false,
2026-06-09T09:52:59.0903263Z           "evidence": []
2026-06-09T09:52:59.0903351Z         },
2026-06-09T09:52:59.0903424Z         "impl": {
2026-06-09T09:52:59.0903516Z           "complete": true,
2026-06-09T09:52:59.0903606Z           "evidence": [
2026-06-09T09:52:59.0903690Z             {
2026-06-09T09:52:59.0903799Z               "path": "installer/install.ps1",
2026-06-09T09:52:59.0903886Z               "line": 100
2026-06-09T09:52:59.0903981Z             },
2026-06-09T09:52:59.0904071Z             {
2026-06-09T09:52:59.0904181Z               "path": "installer/install.ps1",
2026-06-09T09:52:59.0904277Z               "line": 111
2026-06-09T09:52:59.0904362Z             },
2026-06-09T09:52:59.0904448Z             {
2026-06-09T09:52:59.0904553Z               "path": "installer/install.sh",
2026-06-09T09:52:59.0904648Z               "line": 79
2026-06-09T09:52:59.0904734Z             }
2026-06-09T09:52:59.0904816Z           ]
2026-06-09T09:52:59.0904901Z         },
2026-06-09T09:52:59.0904986Z         "int": {
2026-06-09T09:52:59.0905087Z           "complete": true,
2026-06-09T09:52:59.0905179Z           "evidence": [
2026-06-09T09:52:59.0905268Z             {
2026-06-09T09:52:59.0905397Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-09T09:52:59.0905474Z               "line": 167
2026-06-09T09:52:59.0905563Z             }
2026-06-09T09:52:59.0905635Z           ]
2026-06-09T09:52:59.0905736Z         },
2026-06-09T09:52:59.0905813Z         "unit": {
2026-06-09T09:52:59.0905916Z           "complete": false,
2026-06-09T09:52:59.0906011Z           "evidence": []
2026-06-09T09:52:59.0906092Z         }
2026-06-09T09:52:59.0906177Z       }
2026-06-09T09:52:59.0906257Z     },
2026-06-09T09:52:59.0906342Z     {
2026-06-09T09:52:59.0906429Z       "id": "REQ-INSTALL-4",
2026-06-09T09:52:59.0907087Z       "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-09T09:52:59.0907267Z       "requiredStages": [
2026-06-09T09:52:59.0907354Z         "impl",
2026-06-09T09:52:59.0907439Z         "unit"
2026-06-09T09:52:59.0907520Z       ],
2026-06-09T09:52:59.0907610Z       "stages": {
2026-06-09T09:52:59.0907688Z         "doc": {
2026-06-09T09:52:59.0907782Z           "complete": false,
2026-06-09T09:52:59.0907873Z           "evidence": []
2026-06-09T09:52:59.0908017Z         },
2026-06-09T09:52:59.0908111Z         "impl": {
2026-06-09T09:52:59.0908202Z           "complete": true,
2026-06-09T09:52:59.0908289Z           "evidence": [
2026-06-09T09:52:59.0908370Z             {
2026-06-09T09:52:59.0908507Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-09T09:52:59.0908599Z               "line": 154
2026-06-09T09:52:59.0908680Z             },
2026-06-09T09:52:59.0908764Z             {
2026-06-09T09:52:59.0908887Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-09T09:52:59.0909095Z               "line": 29
2026-06-09T09:52:59.0909190Z             },
2026-06-09T09:52:59.0909276Z             {
2026-06-09T09:52:59.0909396Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-09T09:52:59.0909481Z               "line": 117
2026-06-09T09:52:59.0909567Z             },
2026-06-09T09:52:59.0909644Z             {
2026-06-09T09:52:59.0909763Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-09T09:52:59.0909857Z               "line": 161
2026-06-09T09:52:59.0909940Z             },
2026-06-09T09:52:59.0910025Z             {
2026-06-09T09:52:59.0910139Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-09T09:52:59.0910230Z               "line": 191
2026-06-09T09:52:59.0910312Z             },
2026-06-09T09:52:59.0910392Z             {
2026-06-09T09:52:59.0910521Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-09T09:52:59.0910603Z               "line": 223
2026-06-09T09:52:59.0910688Z             },
2026-06-09T09:52:59.0910769Z             {
2026-06-09T09:52:59.0910880Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0910965Z               "line": 4108
2026-06-09T09:52:59.0911049Z             }
2026-06-09T09:52:59.0911136Z           ]
2026-06-09T09:52:59.0911214Z         },
2026-06-09T09:52:59.0911303Z         "int": {
2026-06-09T09:52:59.0911392Z           "complete": false,
2026-06-09T09:52:59.0911487Z           "evidence": []
2026-06-09T09:52:59.0911568Z         },
2026-06-09T09:52:59.0911662Z         "unit": {
2026-06-09T09:52:59.0911757Z           "complete": true,
2026-06-09T09:52:59.0911848Z           "evidence": [
2026-06-09T09:52:59.0911929Z             {
2026-06-09T09:52:59.0912062Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-09T09:52:59.0912153Z               "line": 335
2026-06-09T09:52:59.0912235Z             },
2026-06-09T09:52:59.0912325Z             {
2026-06-09T09:52:59.0912448Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-09T09:52:59.0912535Z               "line": 269
2026-06-09T09:52:59.0912625Z             },
2026-06-09T09:52:59.0912705Z             {
2026-06-09T09:52:59.0912826Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-09T09:52:59.0912911Z               "line": 310
2026-06-09T09:52:59.0913006Z             },
2026-06-09T09:52:59.0913087Z             {
2026-06-09T09:52:59.0913207Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-09T09:52:59.0913298Z               "line": 330
2026-06-09T09:52:59.0913378Z             },
2026-06-09T09:52:59.0913465Z             {
2026-06-09T09:52:59.0913569Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0913659Z               "line": 5679
2026-06-09T09:52:59.0913752Z             }
2026-06-09T09:52:59.0913832Z           ]
2026-06-09T09:52:59.0913916Z         }
2026-06-09T09:52:59.0913998Z       }
2026-06-09T09:52:59.0914085Z     },
2026-06-09T09:52:59.0914166Z     {
2026-06-09T09:52:59.0914264Z       "id": "REQ-INSTALL-5",
2026-06-09T09:52:59.0914847Z       "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-09T09:52:59.0914941Z       "requiredStages": [
2026-06-09T09:52:59.0915033Z         "impl",
2026-06-09T09:52:59.0915118Z         "int"
2026-06-09T09:52:59.0915204Z       ],
2026-06-09T09:52:59.0915289Z       "stages": {
2026-06-09T09:52:59.0915466Z         "doc": {
2026-06-09T09:52:59.0915565Z           "complete": false,
2026-06-09T09:52:59.0915652Z           "evidence": []
2026-06-09T09:52:59.0915739Z         },
2026-06-09T09:52:59.0915828Z         "impl": {
2026-06-09T09:52:59.0915923Z           "complete": true,
2026-06-09T09:52:59.0916006Z           "evidence": [
2026-06-09T09:52:59.0916096Z             {
2026-06-09T09:52:59.0916204Z               "path": "installer/install.ps1",
2026-06-09T09:52:59.0916291Z               "line": 5
2026-06-09T09:52:59.0916378Z             },
2026-06-09T09:52:59.0916457Z             {
2026-06-09T09:52:59.0916571Z               "path": "installer/install.sh",
2026-06-09T09:52:59.0916652Z               "line": 6
2026-06-09T09:52:59.0916737Z             }
2026-06-09T09:52:59.0916821Z           ]
2026-06-09T09:52:59.0916902Z         },
2026-06-09T09:52:59.0916989Z         "int": {
2026-06-09T09:52:59.0917075Z           "complete": true,
2026-06-09T09:52:59.0917164Z           "evidence": [
2026-06-09T09:52:59.0917251Z             {
2026-06-09T09:52:59.0917375Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-09T09:52:59.0917469Z               "line": 22
2026-06-09T09:52:59.0917545Z             }
2026-06-09T09:52:59.0917628Z           ]
2026-06-09T09:52:59.0917709Z         },
2026-06-09T09:52:59.0917798Z         "unit": {
2026-06-09T09:52:59.0917890Z           "complete": false,
2026-06-09T09:52:59.0917985Z           "evidence": []
2026-06-09T09:52:59.0918071Z         }
2026-06-09T09:52:59.0918151Z       }
2026-06-09T09:52:59.0918243Z     },
2026-06-09T09:52:59.0918319Z     {
2026-06-09T09:52:59.0918423Z       "id": "REQ-INSTALL-6",
2026-06-09T09:52:59.0919856Z       "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-09T09:52:59.0919966Z       "requiredStages": [
2026-06-09T09:52:59.0920060Z         "impl",
2026-06-09T09:52:59.0920141Z         "unit"
2026-06-09T09:52:59.0920228Z       ],
2026-06-09T09:52:59.0920309Z       "stages": {
2026-06-09T09:52:59.0920398Z         "doc": {
2026-06-09T09:52:59.0920500Z           "complete": false,
2026-06-09T09:52:59.0920585Z           "evidence": []
2026-06-09T09:52:59.0920670Z         },
2026-06-09T09:52:59.0920752Z         "impl": {
2026-06-09T09:52:59.0920843Z           "complete": true,
2026-06-09T09:52:59.0920943Z           "evidence": [
2026-06-09T09:52:59.0921028Z             {
2026-06-09T09:52:59.0921158Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-09T09:52:59.0921248Z               "line": 59
2026-06-09T09:52:59.0921334Z             },
2026-06-09T09:52:59.0921410Z             {
2026-06-09T09:52:59.0921534Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-09T09:52:59.0921639Z               "line": 538
2026-06-09T09:52:59.0921725Z             },
2026-06-09T09:52:59.0921807Z             {
2026-06-09T09:52:59.0921929Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-09T09:52:59.0922028Z               "line": 191
2026-06-09T09:52:59.0922110Z             },
2026-06-09T09:52:59.0922194Z             {
2026-06-09T09:52:59.0922312Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-09T09:52:59.0922398Z               "line": 276
2026-06-09T09:52:59.0922485Z             },
2026-06-09T09:52:59.0922565Z             {
2026-06-09T09:52:59.0922781Z               "path": "crates/spt/src/main.rs",
2026-06-09T09:52:59.0922871Z               "line": 40
2026-06-09T09:52:59.0922965Z             },
2026-06-09T09:52:59.0923052Z             {
2026-06-09T09:52:59.0923152Z               "path": "installer/install.sh",
2026-06-09T09:52:59.0923242Z               "line": 104
2026-06-09T09:52:59.0923323Z             }
2026-06-09T09:52:59.0923504Z           ]
2026-06-09T09:52:59.0923580Z         },
2026-06-09T09:52:59.0923672Z         "int": {
2026-06-09T09:52:59.0923767Z           "complete": false,
2026-06-09T09:52:59.0923853Z           "evidence": []
2026-06-09T09:52:59.0923938Z         },
2026-06-09T09:52:59.0924020Z         "unit": {
2026-06-09T09:52:59.0924115Z           "complete": true,
2026-06-09T09:52:59.0924206Z           "evidence": [
2026-06-09T09:52:59.0924287Z             {
2026-06-09T09:52:59.0924416Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-09T09:52:59.0924506Z               "line": 866
2026-06-09T09:52:59.0924592Z             }
2026-06-09T09:52:59.0924683Z           ]
2026-06-09T09:52:59.0924768Z         }
2026-06-09T09:52:59.0924848Z       }
2026-06-09T09:52:59.0924929Z     },
2026-06-09T09:52:59.0925006Z     {
2026-06-09T09:52:59.0925111Z       "id": "REQ-INSTALL-7",
2026-06-09T09:52:59.0926270Z       "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-09T09:52:59.0926369Z       "requiredStages": [
2026-06-09T09:52:59.0926459Z         "impl"
2026-06-09T09:52:59.0926547Z       ],
2026-06-09T09:52:59.0926628Z       "stages": {
2026-06-09T09:52:59.0926717Z         "doc": {
2026-06-09T09:52:59.0926803Z           "complete": false,
2026-06-09T09:52:59.0926890Z           "evidence": []
2026-06-09T09:52:59.0926971Z         },
2026-06-09T09:52:59.0927064Z         "impl": {
2026-06-09T09:52:59.0927154Z           "complete": true,
2026-06-09T09:52:59.0927246Z           "evidence": [
2026-06-09T09:52:59.0927330Z             {
2026-06-09T09:52:59.0927434Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0927524Z               "line": 2772
2026-06-09T09:52:59.0927597Z             },
2026-06-09T09:52:59.0927696Z             {
2026-06-09T09:52:59.0927820Z               "path": "installer/install.ps1",
2026-06-09T09:52:59.0927907Z               "line": 157
2026-06-09T09:52:59.0927992Z             }
2026-06-09T09:52:59.0928068Z           ]
2026-06-09T09:52:59.0928154Z         },
2026-06-09T09:52:59.0928235Z         "int": {
2026-06-09T09:52:59.0928330Z           "complete": false,
2026-06-09T09:52:59.0928421Z           "evidence": []
2026-06-09T09:52:59.0928498Z         },
2026-06-09T09:52:59.0928583Z         "unit": {
2026-06-09T09:52:59.0928664Z           "complete": false,
2026-06-09T09:52:59.0928745Z           "evidence": []
2026-06-09T09:52:59.0928832Z         }
2026-06-09T09:52:59.0929036Z       }
2026-06-09T09:52:59.0929118Z     },
2026-06-09T09:52:59.0929203Z     {
2026-06-09T09:52:59.0929298Z       "id": "REQ-INSTALL-8",
2026-06-09T09:52:59.0930320Z       "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-09T09:52:59.0930416Z       "requiredStages": [
2026-06-09T09:52:59.0930502Z         "impl"
2026-06-09T09:52:59.0930573Z       ],
2026-06-09T09:52:59.0930658Z       "stages": {
2026-06-09T09:52:59.0930741Z         "doc": {
2026-06-09T09:52:59.0930878Z           "complete": false,
2026-06-09T09:52:59.0930973Z           "evidence": []
2026-06-09T09:52:59.0931193Z         },
2026-06-09T09:52:59.0931274Z         "impl": {
2026-06-09T09:52:59.0931360Z           "complete": true,
2026-06-09T09:52:59.0931450Z           "evidence": [
2026-06-09T09:52:59.0931536Z             {
2026-06-09T09:52:59.0931641Z               "path": "installer/install.ps1",
2026-06-09T09:52:59.0931723Z               "line": 184
2026-06-09T09:52:59.0931898Z             },
2026-06-09T09:52:59.0931985Z             {
2026-06-09T09:52:59.0932085Z               "path": "installer/install.sh",
2026-06-09T09:52:59.0932165Z               "line": 121
2026-06-09T09:52:59.0932246Z             }
2026-06-09T09:52:59.0932324Z           ]
2026-06-09T09:52:59.0932405Z         },
2026-06-09T09:52:59.0932489Z         "int": {
2026-06-09T09:52:59.0932588Z           "complete": false,
2026-06-09T09:52:59.0932675Z           "evidence": []
2026-06-09T09:52:59.0932754Z         },
2026-06-09T09:52:59.0932839Z         "unit": {
2026-06-09T09:52:59.0932934Z           "complete": false,
2026-06-09T09:52:59.0933016Z           "evidence": []
2026-06-09T09:52:59.0933097Z         }
2026-06-09T09:52:59.0933173Z       }
2026-06-09T09:52:59.0933258Z     },
2026-06-09T09:52:59.0933345Z     {
2026-06-09T09:52:59.0933436Z       "id": "REQ-MANIFEST-1",
2026-06-09T09:52:59.0933622Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-09T09:52:59.0933712Z       "requiredStages": [
2026-06-09T09:52:59.0933802Z         "doc",
2026-06-09T09:52:59.0933893Z         "impl",
2026-06-09T09:52:59.0933975Z         "unit"
2026-06-09T09:52:59.0934060Z       ],
2026-06-09T09:52:59.0934141Z       "stages": {
2026-06-09T09:52:59.0934222Z         "doc": {
2026-06-09T09:52:59.0934308Z           "complete": true,
2026-06-09T09:52:59.0934399Z           "evidence": [
2026-06-09T09:52:59.0934479Z             {
2026-06-09T09:52:59.0934581Z               "path": "docs/MANIFEST.md",
2026-06-09T09:52:59.0934675Z               "line": 19
2026-06-09T09:52:59.0934756Z             }
2026-06-09T09:52:59.0934838Z           ]
2026-06-09T09:52:59.0934924Z         },
2026-06-09T09:52:59.0935008Z         "impl": {
2026-06-09T09:52:59.0935095Z           "complete": true,
2026-06-09T09:52:59.0935186Z           "evidence": [
2026-06-09T09:52:59.0935272Z             {
2026-06-09T09:52:59.0935389Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-09T09:52:59.0935484Z               "line": 18
2026-06-09T09:52:59.0935566Z             }
2026-06-09T09:52:59.0935648Z           ]
2026-06-09T09:52:59.0935727Z         },
2026-06-09T09:52:59.0935813Z         "int": {
2026-06-09T09:52:59.0935905Z           "complete": false,
2026-06-09T09:52:59.0935991Z           "evidence": []
2026-06-09T09:52:59.0936075Z         },
2026-06-09T09:52:59.0936158Z         "unit": {
2026-06-09T09:52:59.0936258Z           "complete": true,
2026-06-09T09:52:59.0936343Z           "evidence": [
2026-06-09T09:52:59.0936429Z             {
2026-06-09T09:52:59.0936548Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-09T09:52:59.0936639Z               "line": 746
2026-06-09T09:52:59.0936724Z             },
2026-06-09T09:52:59.0936802Z             {
2026-06-09T09:52:59.0936925Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-09T09:52:59.0937015Z               "line": 860
2026-06-09T09:52:59.0937097Z             },
2026-06-09T09:52:59.0937178Z             {
2026-06-09T09:52:59.0937291Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-09T09:52:59.0937383Z               "line": 872
2026-06-09T09:52:59.0937465Z             },
2026-06-09T09:52:59.0937554Z             {
2026-06-09T09:52:59.0937668Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-09T09:52:59.0937744Z               "line": 883
2026-06-09T09:52:59.0937830Z             },
2026-06-09T09:52:59.0937909Z             {
2026-06-09T09:52:59.0938032Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-09T09:52:59.0938113Z               "line": 900
2026-06-09T09:52:59.0938205Z             },
2026-06-09T09:52:59.0938371Z             {
2026-06-09T09:52:59.0938490Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-09T09:52:59.0938585Z               "line": 914
2026-06-09T09:52:59.0938671Z             },
2026-06-09T09:52:59.0938753Z             {
2026-06-09T09:52:59.0938877Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-09T09:52:59.0939039Z               "line": 929
2026-06-09T09:52:59.0939224Z             },
2026-06-09T09:52:59.0939305Z             {
2026-06-09T09:52:59.0939435Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-09T09:52:59.0939521Z               "line": 944
2026-06-09T09:52:59.0939606Z             },
2026-06-09T09:52:59.0939688Z             {
2026-06-09T09:52:59.0939815Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-09T09:52:59.0939911Z               "line": 959
2026-06-09T09:52:59.0939988Z             },
2026-06-09T09:52:59.0940083Z             {
2026-06-09T09:52:59.0940197Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-09T09:52:59.0940294Z               "line": 970
2026-06-09T09:52:59.0940380Z             }
2026-06-09T09:52:59.0940463Z           ]
2026-06-09T09:52:59.0940544Z         }
2026-06-09T09:52:59.0940621Z       }
2026-06-09T09:52:59.0940711Z     },
2026-06-09T09:52:59.0940780Z     {
2026-06-09T09:52:59.0940875Z       "id": "REQ-MESH-1",
2026-06-09T09:52:59.0943073Z       "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-09T09:52:59.0943177Z       "requiredStages": [
2026-06-09T09:52:59.0943263Z         "impl",
2026-06-09T09:52:59.0943347Z         "unit",
2026-06-09T09:52:59.0943432Z         "int"
2026-06-09T09:52:59.0943523Z       ],
2026-06-09T09:52:59.0943605Z       "stages": {
2026-06-09T09:52:59.0943690Z         "doc": {
2026-06-09T09:52:59.0943800Z           "complete": false,
2026-06-09T09:52:59.0943891Z           "evidence": []
2026-06-09T09:52:59.0943972Z         },
2026-06-09T09:52:59.0944057Z         "impl": {
2026-06-09T09:52:59.0944148Z           "complete": true,
2026-06-09T09:52:59.0944234Z           "evidence": [
2026-06-09T09:52:59.0944320Z             {
2026-06-09T09:52:59.0944444Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-09T09:52:59.0944539Z               "line": 680
2026-06-09T09:52:59.0944620Z             },
2026-06-09T09:52:59.0944706Z             {
2026-06-09T09:52:59.0944845Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-09T09:52:59.0944930Z               "line": 38
2026-06-09T09:52:59.0945016Z             },
2026-06-09T09:52:59.0945093Z             {
2026-06-09T09:52:59.0945221Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-09T09:52:59.0945307Z               "line": 161
2026-06-09T09:52:59.0945393Z             },
2026-06-09T09:52:59.0945484Z             {
2026-06-09T09:52:59.0945607Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-09T09:52:59.0945703Z               "line": 206
2026-06-09T09:52:59.0945785Z             },
2026-06-09T09:52:59.0945874Z             {
2026-06-09T09:52:59.0945996Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-09T09:52:59.0946083Z               "line": 57
2026-06-09T09:52:59.0946169Z             },
2026-06-09T09:52:59.0946250Z             {
2026-06-09T09:52:59.0946388Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-09T09:52:59.0946475Z               "line": 24
2026-06-09T09:52:59.0946669Z             },
2026-06-09T09:52:59.0946761Z             {
2026-06-09T09:52:59.0946889Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-09T09:52:59.0946984Z               "line": 142
2026-06-09T09:52:59.0947066Z             },
2026-06-09T09:52:59.0947151Z             {
2026-06-09T09:52:59.0947274Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-09T09:52:59.0947438Z               "line": 162
2026-06-09T09:52:59.0947528Z             }
2026-06-09T09:52:59.0947608Z           ]
2026-06-09T09:52:59.0947691Z         },
2026-06-09T09:52:59.0947772Z         "int": {
2026-06-09T09:52:59.0947871Z           "complete": true,
2026-06-09T09:52:59.0947957Z           "evidence": [
2026-06-09T09:52:59.0948039Z             {
2026-06-09T09:52:59.0948175Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-09T09:52:59.0948256Z               "line": 67
2026-06-09T09:52:59.0948342Z             },
2026-06-09T09:52:59.0948427Z             {
2026-06-09T09:52:59.0948559Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-09T09:52:59.0948645Z               "line": 93
2026-06-09T09:52:59.0948736Z             },
2026-06-09T09:52:59.0948821Z             {
2026-06-09T09:52:59.0949046Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-09T09:52:59.0949141Z               "line": 117
2026-06-09T09:52:59.0949226Z             },
2026-06-09T09:52:59.0949313Z             {
2026-06-09T09:52:59.0949432Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-09T09:52:59.0949526Z               "line": 134
2026-06-09T09:52:59.0949613Z             }
2026-06-09T09:52:59.0949694Z           ]
2026-06-09T09:52:59.0949780Z         },
2026-06-09T09:52:59.0949861Z         "unit": {
2026-06-09T09:52:59.0949957Z           "complete": true,
2026-06-09T09:52:59.0950042Z           "evidence": [
2026-06-09T09:52:59.0950132Z             {
2026-06-09T09:52:59.0950253Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-09T09:52:59.0950343Z               "line": 427
2026-06-09T09:52:59.0950438Z             },
2026-06-09T09:52:59.0950519Z             {
2026-06-09T09:52:59.0950653Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-09T09:52:59.0950733Z               "line": 376
2026-06-09T09:52:59.0950820Z             },
2026-06-09T09:52:59.0950906Z             {
2026-06-09T09:52:59.0951038Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-09T09:52:59.0951128Z               "line": 412
2026-06-09T09:52:59.0951204Z             },
2026-06-09T09:52:59.0951285Z             {
2026-06-09T09:52:59.0951416Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-09T09:52:59.0951503Z               "line": 427
2026-06-09T09:52:59.0951589Z             },
2026-06-09T09:52:59.0951670Z             {
2026-06-09T09:52:59.0951802Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-09T09:52:59.0951890Z               "line": 438
2026-06-09T09:52:59.0951975Z             },
2026-06-09T09:52:59.0952065Z             {
2026-06-09T09:52:59.0952185Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-09T09:52:59.0952275Z               "line": 449
2026-06-09T09:52:59.0952360Z             },
2026-06-09T09:52:59.0952442Z             {
2026-06-09T09:52:59.0952566Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-09T09:52:59.0952661Z               "line": 460
2026-06-09T09:52:59.0952747Z             },
2026-06-09T09:52:59.0952824Z             {
2026-06-09T09:52:59.0952956Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-09T09:52:59.0953038Z               "line": 496
2026-06-09T09:52:59.0953129Z             },
2026-06-09T09:52:59.0953210Z             {
2026-06-09T09:52:59.0953343Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-09T09:52:59.0953434Z               "line": 519
2026-06-09T09:52:59.0953515Z             },
2026-06-09T09:52:59.0953600Z             {
2026-06-09T09:52:59.0953828Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-09T09:52:59.0953921Z               "line": 546
2026-06-09T09:52:59.0954006Z             }
2026-06-09T09:52:59.0954093Z           ]
2026-06-09T09:52:59.0954175Z         }
2026-06-09T09:52:59.0954255Z       }
2026-06-09T09:52:59.0954350Z     },
2026-06-09T09:52:59.0954433Z     {
2026-06-09T09:52:59.0954641Z       "id": "REQ-MESH-2",
2026-06-09T09:52:59.0957263Z       "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-09T09:52:59.0957363Z       "requiredStages": [
2026-06-09T09:52:59.0957482Z         "impl",
2026-06-09T09:52:59.0957573Z         "unit",
2026-06-09T09:52:59.0957650Z         "int"
2026-06-09T09:52:59.0957730Z       ],
2026-06-09T09:52:59.0957806Z       "stages": {
2026-06-09T09:52:59.0957902Z         "doc": {
2026-06-09T09:52:59.0957998Z           "complete": false,
2026-06-09T09:52:59.0958088Z           "evidence": []
2026-06-09T09:52:59.0958168Z         },
2026-06-09T09:52:59.0958251Z         "impl": {
2026-06-09T09:52:59.0958346Z           "complete": true,
2026-06-09T09:52:59.0958431Z           "evidence": [
2026-06-09T09:52:59.0958517Z             {
2026-06-09T09:52:59.0958656Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-09T09:52:59.0958745Z               "line": 569
2026-06-09T09:52:59.0958821Z             },
2026-06-09T09:52:59.0958902Z             {
2026-06-09T09:52:59.0959109Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-09T09:52:59.0959200Z               "line": 118
2026-06-09T09:52:59.0959291Z             },
2026-06-09T09:52:59.0959377Z             {
2026-06-09T09:52:59.0962276Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-09T09:52:59.0962397Z               "line": 347
2026-06-09T09:52:59.0962487Z             },
2026-06-09T09:52:59.0962573Z             {
2026-06-09T09:52:59.0962697Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-09T09:52:59.0962797Z               "line": 389
2026-06-09T09:52:59.0962883Z             },
2026-06-09T09:52:59.0962968Z             {
2026-06-09T09:52:59.0963103Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-09T09:52:59.0963193Z               "line": 403
2026-06-09T09:52:59.0963298Z             },
2026-06-09T09:52:59.0963380Z             {
2026-06-09T09:52:59.0963507Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-09T09:52:59.0963593Z               "line": 492
2026-06-09T09:52:59.0963675Z             },
2026-06-09T09:52:59.0963756Z             {
2026-06-09T09:52:59.0963870Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-09T09:52:59.0963966Z               "line": 507
2026-06-09T09:52:59.0964052Z             },
2026-06-09T09:52:59.0964136Z             {
2026-06-09T09:52:59.0964249Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-09T09:52:59.0964345Z               "line": 534
2026-06-09T09:52:59.0964426Z             },
2026-06-09T09:52:59.0964505Z             {
2026-06-09T09:52:59.0964634Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-09T09:52:59.0964711Z               "line": 207
2026-06-09T09:52:59.0964796Z             },
2026-06-09T09:52:59.0964882Z             {
2026-06-09T09:52:59.0965172Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-09T09:52:59.0965273Z               "line": 755
2026-06-09T09:52:59.0965392Z             },
2026-06-09T09:52:59.0965511Z             {
2026-06-09T09:52:59.0965632Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-09T09:52:59.0965726Z               "line": 816
2026-06-09T09:52:59.0965912Z             },
2026-06-09T09:52:59.0965989Z             {
2026-06-09T09:52:59.0966117Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-09T09:52:59.0966198Z               "line": 869
2026-06-09T09:52:59.0966285Z             },
2026-06-09T09:52:59.0966365Z             {
2026-06-09T09:52:59.0966484Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-09T09:52:59.0966576Z               "line": 891
2026-06-09T09:52:59.0966656Z             },
2026-06-09T09:52:59.0966741Z             {
2026-06-09T09:52:59.0966853Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0966943Z               "line": 112
2026-06-09T09:52:59.0967027Z             },
2026-06-09T09:52:59.0967112Z             {
2026-06-09T09:52:59.0967227Z               "path": "crates/spt-store/src/roster.rs",
2026-06-09T09:52:59.0967318Z               "line": 44
2026-06-09T09:52:59.0967403Z             },
2026-06-09T09:52:59.0967479Z             {
2026-06-09T09:52:59.0967604Z               "path": "crates/spt-store/src/roster.rs",
2026-06-09T09:52:59.0967694Z               "line": 184
2026-06-09T09:52:59.0967779Z             },
2026-06-09T09:52:59.0967867Z             {
2026-06-09T09:52:59.0967971Z               "path": "crates/spt-store/src/roster.rs",
2026-06-09T09:52:59.0968061Z               "line": 211
2026-06-09T09:52:59.0968152Z             },
2026-06-09T09:52:59.0968257Z             {
2026-06-09T09:52:59.0968366Z               "path": "crates/spt-store/src/roster.rs",
2026-06-09T09:52:59.0968453Z               "line": 251
2026-06-09T09:52:59.0968534Z             },
2026-06-09T09:52:59.0968615Z             {
2026-06-09T09:52:59.0968748Z               "path": "crates/spt-store/src/roster.rs",
2026-06-09T09:52:59.0968835Z               "line": 275
2026-06-09T09:52:59.0968924Z             },
2026-06-09T09:52:59.0969111Z             {
2026-06-09T09:52:59.0969225Z               "path": "crates/spt-store/src/roster.rs",
2026-06-09T09:52:59.0969319Z               "line": 289
2026-06-09T09:52:59.0969419Z             },
2026-06-09T09:52:59.0969505Z             {
2026-06-09T09:52:59.0969618Z               "path": "crates/spt-store/src/roster.rs",
2026-06-09T09:52:59.0969707Z               "line": 300
2026-06-09T09:52:59.0969798Z             },
2026-06-09T09:52:59.0969876Z             {
2026-06-09T09:52:59.0969993Z               "path": "crates/spt-store/src/roster.rs",
2026-06-09T09:52:59.0970075Z               "line": 313
2026-06-09T09:52:59.0970162Z             }
2026-06-09T09:52:59.0970242Z           ]
2026-06-09T09:52:59.0970327Z         },
2026-06-09T09:52:59.0970414Z         "int": {
2026-06-09T09:52:59.0970514Z           "complete": true,
2026-06-09T09:52:59.0970604Z           "evidence": [
2026-06-09T09:52:59.0970690Z             {
2026-06-09T09:52:59.0970829Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-09T09:52:59.0970914Z               "line": 116
2026-06-09T09:52:59.0971005Z             },
2026-06-09T09:52:59.0971096Z             {
2026-06-09T09:52:59.0971224Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-09T09:52:59.0971320Z               "line": 181
2026-06-09T09:52:59.0971411Z             }
2026-06-09T09:52:59.0971496Z           ]
2026-06-09T09:52:59.0971577Z         },
2026-06-09T09:52:59.0971664Z         "unit": {
2026-06-09T09:52:59.0971759Z           "complete": true,
2026-06-09T09:52:59.0971839Z           "evidence": [
2026-06-09T09:52:59.0971915Z             {
2026-06-09T09:52:59.0972036Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-09T09:52:59.0972125Z               "line": 999
2026-06-09T09:52:59.0972205Z             },
2026-06-09T09:52:59.0972386Z             {
2026-06-09T09:52:59.0972513Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-09T09:52:59.0972594Z               "line": 1016
2026-06-09T09:52:59.0972670Z             },
2026-06-09T09:52:59.0972752Z             {
2026-06-09T09:52:59.0972875Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-09T09:52:59.0972962Z               "line": 1024
2026-06-09T09:52:59.0973156Z             },
2026-06-09T09:52:59.0973247Z             {
2026-06-09T09:52:59.0973367Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-09T09:52:59.0973453Z               "line": 1048
2026-06-09T09:52:59.0973538Z             },
2026-06-09T09:52:59.0973620Z             {
2026-06-09T09:52:59.0973748Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-09T09:52:59.0973848Z               "line": 1499
2026-06-09T09:52:59.0973935Z             },
2026-06-09T09:52:59.0974016Z             {
2026-06-09T09:52:59.0974138Z               "path": "crates/spt-store/src/roster.rs",
2026-06-09T09:52:59.0974231Z               "line": 347
2026-06-09T09:52:59.0974317Z             },
2026-06-09T09:52:59.0974396Z             {
2026-06-09T09:52:59.0974516Z               "path": "crates/spt-store/src/roster.rs",
2026-06-09T09:52:59.0974608Z               "line": 370
2026-06-09T09:52:59.0974687Z             },
2026-06-09T09:52:59.0974772Z             {
2026-06-09T09:52:59.0974886Z               "path": "crates/spt-store/src/roster.rs",
2026-06-09T09:52:59.0974986Z               "line": 407
2026-06-09T09:52:59.0975065Z             },
2026-06-09T09:52:59.0975150Z             {
2026-06-09T09:52:59.0975266Z               "path": "crates/spt-store/src/roster.rs",
2026-06-09T09:52:59.0975352Z               "line": 431
2026-06-09T09:52:59.0975437Z             },
2026-06-09T09:52:59.0975519Z             {
2026-06-09T09:52:59.0975633Z               "path": "crates/spt-store/src/roster.rs",
2026-06-09T09:52:59.0975723Z               "line": 483
2026-06-09T09:52:59.0975804Z             },
2026-06-09T09:52:59.0975896Z             {
2026-06-09T09:52:59.0976000Z               "path": "crates/spt-store/src/roster.rs",
2026-06-09T09:52:59.0976095Z               "line": 499
2026-06-09T09:52:59.0976172Z             },
2026-06-09T09:52:59.0976257Z             {
2026-06-09T09:52:59.0976376Z               "path": "crates/spt-store/src/roster.rs",
2026-06-09T09:52:59.0976468Z               "line": 514
2026-06-09T09:52:59.0976558Z             },
2026-06-09T09:52:59.0976639Z             {
2026-06-09T09:52:59.0976753Z               "path": "crates/spt-store/src/roster.rs",
2026-06-09T09:52:59.0976864Z               "line": 531
2026-06-09T09:52:59.0976948Z             }
2026-06-09T09:52:59.0977035Z           ]
2026-06-09T09:52:59.0977117Z         }
2026-06-09T09:52:59.0977207Z       }
2026-06-09T09:52:59.0977287Z     },
2026-06-09T09:52:59.0977369Z     {
2026-06-09T09:52:59.0977460Z       "id": "REQ-MESH-3",
2026-06-09T09:52:59.0979362Z       "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-09T09:52:59.0979480Z       "requiredStages": [
2026-06-09T09:52:59.0979565Z         "impl",
2026-06-09T09:52:59.0979652Z         "unit",
2026-06-09T09:52:59.0979733Z         "int"
2026-06-09T09:52:59.0979827Z       ],
2026-06-09T09:52:59.0979917Z       "stages": {
2026-06-09T09:52:59.0980003Z         "doc": {
2026-06-09T09:52:59.0980102Z           "complete": false,
2026-06-09T09:52:59.0980192Z           "evidence": []
2026-06-09T09:52:59.0980282Z         },
2026-06-09T09:52:59.0980368Z         "impl": {
2026-06-09T09:52:59.0980597Z           "complete": true,
2026-06-09T09:52:59.0980693Z           "evidence": [
2026-06-09T09:52:59.0980783Z             {
2026-06-09T09:52:59.0980916Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.0981008Z               "line": 410
2026-06-09T09:52:59.0981098Z             },
2026-06-09T09:52:59.0981179Z             {
2026-06-09T09:52:59.0981417Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.0981507Z               "line": 603
2026-06-09T09:52:59.0981589Z             }
2026-06-09T09:52:59.0981680Z           ]
2026-06-09T09:52:59.0981761Z         },
2026-06-09T09:52:59.0981850Z         "int": {
2026-06-09T09:52:59.0981943Z           "complete": true,
2026-06-09T09:52:59.0982032Z           "evidence": [
2026-06-09T09:52:59.0982123Z             {
2026-06-09T09:52:59.0982239Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-09T09:52:59.0982328Z               "line": 373
2026-06-09T09:52:59.0982413Z             },
2026-06-09T09:52:59.0982510Z             {
2026-06-09T09:52:59.0982620Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-09T09:52:59.0982719Z               "line": 436
2026-06-09T09:52:59.0982803Z             }
2026-06-09T09:52:59.0982890Z           ]
2026-06-09T09:52:59.0982974Z         },
2026-06-09T09:52:59.0983059Z         "unit": {
2026-06-09T09:52:59.0983159Z           "complete": true,
2026-06-09T09:52:59.0983235Z           "evidence": [
2026-06-09T09:52:59.0983327Z             {
2026-06-09T09:52:59.0983449Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.0983536Z               "line": 881
2026-06-09T09:52:59.0983622Z             }
2026-06-09T09:52:59.0983702Z           ]
2026-06-09T09:52:59.0983788Z         }
2026-06-09T09:52:59.0983870Z       }
2026-06-09T09:52:59.0983960Z     },
2026-06-09T09:52:59.0984046Z     {
2026-06-09T09:52:59.0984131Z       "id": "REQ-MESH-4",
2026-06-09T09:52:59.0986350Z       "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-09T09:52:59.0986465Z       "requiredStages": [
2026-06-09T09:52:59.0986546Z         "impl",
2026-06-09T09:52:59.0986631Z         "unit",
2026-06-09T09:52:59.0986713Z         "int"
2026-06-09T09:52:59.0986799Z       ],
2026-06-09T09:52:59.0986885Z       "stages": {
2026-06-09T09:52:59.0986965Z         "doc": {
2026-06-09T09:52:59.0987086Z           "complete": false,
2026-06-09T09:52:59.0987180Z           "evidence": []
2026-06-09T09:52:59.0987270Z         },
2026-06-09T09:52:59.0987353Z         "impl": {
2026-06-09T09:52:59.0987457Z           "complete": true,
2026-06-09T09:52:59.0987547Z           "evidence": [
2026-06-09T09:52:59.0987628Z             {
2026-06-09T09:52:59.0987781Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.0987867Z               "line": 187
2026-06-09T09:52:59.0987953Z             },
2026-06-09T09:52:59.0988035Z             {
2026-06-09T09:52:59.0988166Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-09T09:52:59.0988260Z               "line": 68
2026-06-09T09:52:59.0988343Z             },
2026-06-09T09:52:59.0988430Z             {
2026-06-09T09:52:59.0988547Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-09T09:52:59.0988638Z               "line": 111
2026-06-09T09:52:59.0988720Z             },
2026-06-09T09:52:59.0988914Z             {
2026-06-09T09:52:59.0989138Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-09T09:52:59.0989224Z               "line": 462
2026-06-09T09:52:59.0989307Z             },
2026-06-09T09:52:59.0989387Z             {
2026-06-09T09:52:59.0989510Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-09T09:52:59.0989592Z               "line": 711
2026-06-09T09:52:59.0989778Z             },
2026-06-09T09:52:59.0989863Z             {
2026-06-09T09:52:59.0989983Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-09T09:52:59.0990078Z               "line": 725
2026-06-09T09:52:59.0990164Z             },
2026-06-09T09:52:59.0990256Z             {
2026-06-09T09:52:59.0990373Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.0990468Z               "line": 122
2026-06-09T09:52:59.0990558Z             },
2026-06-09T09:52:59.0990639Z             {
2026-06-09T09:52:59.0990766Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-09T09:52:59.0990861Z               "line": 26
2026-06-09T09:52:59.0990948Z             },
2026-06-09T09:52:59.0991028Z             {
2026-06-09T09:52:59.0991147Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-09T09:52:59.0991243Z               "line": 97
2026-06-09T09:52:59.0991329Z             },
2026-06-09T09:52:59.0991414Z             {
2026-06-09T09:52:59.0991535Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-09T09:52:59.0991630Z               "line": 119
2026-06-09T09:52:59.0991729Z             },
2026-06-09T09:52:59.0991815Z             {
2026-06-09T09:52:59.0991939Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-09T09:52:59.0992025Z               "line": 82
2026-06-09T09:52:59.0992111Z             },
2026-06-09T09:52:59.0992188Z             {
2026-06-09T09:52:59.0992306Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-09T09:52:59.0992397Z               "line": 111
2026-06-09T09:52:59.0992474Z             },
2026-06-09T09:52:59.0992564Z             {
2026-06-09T09:52:59.0992674Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-09T09:52:59.0992760Z               "line": 232
2026-06-09T09:52:59.0992837Z             },
2026-06-09T09:52:59.0992926Z             {
2026-06-09T09:52:59.0993040Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-09T09:52:59.0993123Z               "line": 245
2026-06-09T09:52:59.0993217Z             },
2026-06-09T09:52:59.0993293Z             {
2026-06-09T09:52:59.0993402Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.0993525Z               "line": 3504
2026-06-09T09:52:59.0993614Z             }
2026-06-09T09:52:59.0993699Z           ]
2026-06-09T09:52:59.0993777Z         },
2026-06-09T09:52:59.0993868Z         "int": {
2026-06-09T09:52:59.0993957Z           "complete": true,
2026-06-09T09:52:59.0994052Z           "evidence": [
2026-06-09T09:52:59.0994130Z             {
2026-06-09T09:52:59.0994262Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-09T09:52:59.0994358Z               "line": 98
2026-06-09T09:52:59.0994440Z             },
2026-06-09T09:52:59.0994525Z             {
2026-06-09T09:52:59.0994638Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-09T09:52:59.0994731Z               "line": 140
2026-06-09T09:52:59.0994807Z             }
2026-06-09T09:52:59.0994897Z           ]
2026-06-09T09:52:59.0994987Z         },
2026-06-09T09:52:59.0995069Z         "unit": {
2026-06-09T09:52:59.0995164Z           "complete": true,
2026-06-09T09:52:59.0995250Z           "evidence": [
2026-06-09T09:52:59.0995336Z             {
2026-06-09T09:52:59.0995451Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.0995545Z               "line": 844
2026-06-09T09:52:59.0995637Z             },
2026-06-09T09:52:59.0995718Z             {
2026-06-09T09:52:59.0995845Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-09T09:52:59.0995940Z               "line": 1079
2026-06-09T09:52:59.0996125Z             },
2026-06-09T09:52:59.0996209Z             {
2026-06-09T09:52:59.0996338Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-09T09:52:59.0996430Z               "line": 1109
2026-06-09T09:52:59.0996510Z             },
2026-06-09T09:52:59.0996595Z             {
2026-06-09T09:52:59.0996716Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-09T09:52:59.0996872Z               "line": 1129
2026-06-09T09:52:59.0996954Z             },
2026-06-09T09:52:59.0997045Z             {
2026-06-09T09:52:59.0997177Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-09T09:52:59.0997269Z               "line": 602
2026-06-09T09:52:59.0997359Z             },
2026-06-09T09:52:59.0997435Z             {
2026-06-09T09:52:59.0997554Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-09T09:52:59.0997641Z               "line": 148
2026-06-09T09:52:59.0997730Z             },
2026-06-09T09:52:59.0997816Z             {
2026-06-09T09:52:59.0997932Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-09T09:52:59.0998031Z               "line": 169
2026-06-09T09:52:59.0998112Z             },
2026-06-09T09:52:59.0998198Z             {
2026-06-09T09:52:59.0998313Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-09T09:52:59.0998397Z               "line": 181
2026-06-09T09:52:59.0998489Z             },
2026-06-09T09:52:59.0998576Z             {
2026-06-09T09:52:59.0998698Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-09T09:52:59.0998783Z               "line": 202
2026-06-09T09:52:59.0998869Z             },
2026-06-09T09:52:59.0999041Z             {
2026-06-09T09:52:59.0999155Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-09T09:52:59.0999252Z               "line": 375
2026-06-09T09:52:59.0999328Z             },
2026-06-09T09:52:59.0999412Z             {
2026-06-09T09:52:59.0999518Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-09T09:52:59.0999613Z               "line": 407
2026-06-09T09:52:59.0999746Z             },
2026-06-09T09:52:59.0999828Z             {
2026-06-09T09:52:59.0999937Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1000023Z               "line": 6943
2026-06-09T09:52:59.1000108Z             }
2026-06-09T09:52:59.1000186Z           ]
2026-06-09T09:52:59.1000271Z         }
2026-06-09T09:52:59.1000356Z       }
2026-06-09T09:52:59.1000443Z     },
2026-06-09T09:52:59.1000535Z     {
2026-06-09T09:52:59.1000623Z       "id": "REQ-MESH-5",
2026-06-09T09:52:59.1002075Z       "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-09T09:52:59.1002194Z       "requiredStages": [
2026-06-09T09:52:59.1002279Z         "impl",
2026-06-09T09:52:59.1002371Z         "unit"
2026-06-09T09:52:59.1002452Z       ],
2026-06-09T09:52:59.1002542Z       "stages": {
2026-06-09T09:52:59.1002623Z         "doc": {
2026-06-09T09:52:59.1002719Z           "complete": false,
2026-06-09T09:52:59.1002814Z           "evidence": []
2026-06-09T09:52:59.1002923Z         },
2026-06-09T09:52:59.1003010Z         "impl": {
2026-06-09T09:52:59.1003101Z           "complete": true,
2026-06-09T09:52:59.1003195Z           "evidence": [
2026-06-09T09:52:59.1003276Z             {
2026-06-09T09:52:59.1003406Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-09T09:52:59.1003495Z               "line": 61
2026-06-09T09:52:59.1003577Z             },
2026-06-09T09:52:59.1003663Z             {
2026-06-09T09:52:59.1003782Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-09T09:52:59.1003876Z               "line": 109
2026-06-09T09:52:59.1004057Z             },
2026-06-09T09:52:59.1004150Z             {
2026-06-09T09:52:59.1004274Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-09T09:52:59.1004360Z               "line": 104
2026-06-09T09:52:59.1004447Z             },
2026-06-09T09:52:59.1004532Z             {
2026-06-09T09:52:59.1004657Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-09T09:52:59.1004832Z               "line": 105
2026-06-09T09:52:59.1004918Z             },
2026-06-09T09:52:59.1005004Z             {
2026-06-09T09:52:59.1005133Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.1005223Z               "line": 85
2026-06-09T09:52:59.1005305Z             },
2026-06-09T09:52:59.1005390Z             {
2026-06-09T09:52:59.1005518Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.1005606Z               "line": 234
2026-06-09T09:52:59.1005691Z             },
2026-06-09T09:52:59.1005771Z             {
2026-06-09T09:52:59.1005901Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.1005987Z               "line": 298
2026-06-09T09:52:59.1006076Z             },
2026-06-09T09:52:59.1006162Z             {
2026-06-09T09:52:59.1006278Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.1006372Z               "line": 687
2026-06-09T09:52:59.1006452Z             },
2026-06-09T09:52:59.1006543Z             {
2026-06-09T09:52:59.1006652Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-09T09:52:59.1006746Z               "line": 101
2026-06-09T09:52:59.1006836Z             },
2026-06-09T09:52:59.1006917Z             {
2026-06-09T09:52:59.1007032Z               "path": "crates/spt-store/src/roster.rs",
2026-06-09T09:52:59.1007122Z               "line": 193
2026-06-09T09:52:59.1007214Z             }
2026-06-09T09:52:59.1007295Z           ]
2026-06-09T09:52:59.1007380Z         },
2026-06-09T09:52:59.1007470Z         "int": {
2026-06-09T09:52:59.1007562Z           "complete": false,
2026-06-09T09:52:59.1007657Z           "evidence": []
2026-06-09T09:52:59.1007742Z         },
2026-06-09T09:52:59.1007834Z         "unit": {
2026-06-09T09:52:59.1007924Z           "complete": true,
2026-06-09T09:52:59.1008015Z           "evidence": [
2026-06-09T09:52:59.1008100Z             {
2026-06-09T09:52:59.1008225Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.1008320Z               "line": 927
2026-06-09T09:52:59.1008400Z             },
2026-06-09T09:52:59.1008487Z             {
2026-06-09T09:52:59.1008596Z               "path": "crates/spt-store/src/roster.rs",
2026-06-09T09:52:59.1008686Z               "line": 462
2026-06-09T09:52:59.1008778Z             }
2026-06-09T09:52:59.1008859Z           ]
2026-06-09T09:52:59.1009044Z         }
2026-06-09T09:52:59.1009126Z       }
2026-06-09T09:52:59.1009202Z     },
2026-06-09T09:52:59.1009286Z     {
2026-06-09T09:52:59.1009377Z       "id": "REQ-MESH-6",
2026-06-09T09:52:59.1010722Z       "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-09T09:52:59.1010826Z       "requiredStages": [
2026-06-09T09:52:59.1010917Z         "impl",
2026-06-09T09:52:59.1010998Z         "unit"
2026-06-09T09:52:59.1011080Z       ],
2026-06-09T09:52:59.1011164Z       "stages": {
2026-06-09T09:52:59.1011250Z         "doc": {
2026-06-09T09:52:59.1011347Z           "complete": false,
2026-06-09T09:52:59.1011438Z           "evidence": []
2026-06-09T09:52:59.1011522Z         },
2026-06-09T09:52:59.1011607Z         "impl": {
2026-06-09T09:52:59.1011703Z           "complete": true,
2026-06-09T09:52:59.1011792Z           "evidence": [
2026-06-09T09:52:59.1011877Z             {
2026-06-09T09:52:59.1012116Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1012205Z               "line": 3033
2026-06-09T09:52:59.1012292Z             }
2026-06-09T09:52:59.1012369Z           ]
2026-06-09T09:52:59.1012454Z         },
2026-06-09T09:52:59.1012530Z         "int": {
2026-06-09T09:52:59.1012621Z           "complete": false,
2026-06-09T09:52:59.1012702Z           "evidence": []
2026-06-09T09:52:59.1012873Z         },
2026-06-09T09:52:59.1012960Z         "unit": {
2026-06-09T09:52:59.1013050Z           "complete": true,
2026-06-09T09:52:59.1013140Z           "evidence": [
2026-06-09T09:52:59.1013221Z             {
2026-06-09T09:52:59.1013323Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1013412Z               "line": 7448
2026-06-09T09:52:59.1013488Z             },
2026-06-09T09:52:59.1013570Z             {
2026-06-09T09:52:59.1013670Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1013760Z               "line": 7475
2026-06-09T09:52:59.1013846Z             },
2026-06-09T09:52:59.1013938Z             {
2026-06-09T09:52:59.1014041Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1014127Z               "line": 7499
2026-06-09T09:52:59.1014210Z             }
2026-06-09T09:52:59.1014291Z           ]
2026-06-09T09:52:59.1014375Z         }
2026-06-09T09:52:59.1014460Z       }
2026-06-09T09:52:59.1014536Z     },
2026-06-09T09:52:59.1014627Z     {
2026-06-09T09:52:59.1014715Z       "id": "REQ-MIGRATE-1",
2026-06-09T09:52:59.1014892Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-09T09:52:59.1014983Z       "requiredStages": [],
2026-06-09T09:52:59.1015073Z       "stages": {
2026-06-09T09:52:59.1015158Z         "doc": {
2026-06-09T09:52:59.1015250Z           "complete": false,
2026-06-09T09:52:59.1015340Z           "evidence": []
2026-06-09T09:52:59.1015426Z         },
2026-06-09T09:52:59.1015517Z         "impl": {
2026-06-09T09:52:59.1015607Z           "complete": false,
2026-06-09T09:52:59.1015702Z           "evidence": []
2026-06-09T09:52:59.1015793Z         },
2026-06-09T09:52:59.1015875Z         "int": {
2026-06-09T09:52:59.1015974Z           "complete": false,
2026-06-09T09:52:59.1016060Z           "evidence": []
2026-06-09T09:52:59.1016146Z         },
2026-06-09T09:52:59.1016227Z         "unit": {
2026-06-09T09:52:59.1016327Z           "complete": false,
2026-06-09T09:52:59.1016427Z           "evidence": []
2026-06-09T09:52:59.1016514Z         }
2026-06-09T09:52:59.1016599Z       }
2026-06-09T09:52:59.1016675Z     },
2026-06-09T09:52:59.1016762Z     {
2026-06-09T09:52:59.1016852Z       "id": "REQ-MSG-1",
2026-06-09T09:52:59.1017292Z       "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-09T09:52:59.1017396Z       "requiredStages": [
2026-06-09T09:52:59.1017482Z         "impl",
2026-06-09T09:52:59.1017588Z         "unit",
2026-06-09T09:52:59.1017687Z         "int"
2026-06-09T09:52:59.1017793Z       ],
2026-06-09T09:52:59.1017883Z       "stages": {
2026-06-09T09:52:59.1017987Z         "doc": {
2026-06-09T09:52:59.1018098Z           "complete": false,
2026-06-09T09:52:59.1018202Z           "evidence": []
2026-06-09T09:52:59.1018311Z         },
2026-06-09T09:52:59.1018408Z         "impl": {
2026-06-09T09:52:59.1018512Z           "complete": true,
2026-06-09T09:52:59.1018603Z           "evidence": [
2026-06-09T09:52:59.1018698Z             {
2026-06-09T09:52:59.1018837Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-09T09:52:59.1018932Z               "line": 28
2026-06-09T09:52:59.1019132Z             },
2026-06-09T09:52:59.1019218Z             {
2026-06-09T09:52:59.1019353Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-09T09:52:59.1019447Z               "line": 94
2026-06-09T09:52:59.1019542Z             },
2026-06-09T09:52:59.1019643Z             {
2026-06-09T09:52:59.1019758Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-09T09:52:59.1020004Z               "line": 127
2026-06-09T09:52:59.1020100Z             },
2026-06-09T09:52:59.1020203Z             {
2026-06-09T09:52:59.1020324Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-09T09:52:59.1020443Z               "line": 149
2026-06-09T09:52:59.1020537Z             },
2026-06-09T09:52:59.1020624Z             {
2026-06-09T09:52:59.1020748Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-09T09:52:59.1020948Z               "line": 174
2026-06-09T09:52:59.1021049Z             },
2026-06-09T09:52:59.1021139Z             {
2026-06-09T09:52:59.1021268Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-09T09:52:59.1021373Z               "line": 18
2026-06-09T09:52:59.1021458Z             },
2026-06-09T09:52:59.1021563Z             {
2026-06-09T09:52:59.1021678Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-09T09:52:59.1021782Z               "line": 13
2026-06-09T09:52:59.1021882Z             },
2026-06-09T09:52:59.1021970Z             {
2026-06-09T09:52:59.1022101Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-09T09:52:59.1022195Z               "line": 61
2026-06-09T09:52:59.1022301Z             },
2026-06-09T09:52:59.1022389Z             {
2026-06-09T09:52:59.1022517Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-09T09:52:59.1022623Z               "line": 10
2026-06-09T09:52:59.1022709Z             }
2026-06-09T09:52:59.1022809Z           ]
2026-06-09T09:52:59.1022904Z         },
2026-06-09T09:52:59.1023005Z         "int": {
2026-06-09T09:52:59.1023099Z           "complete": true,
2026-06-09T09:52:59.1023215Z           "evidence": [
2026-06-09T09:52:59.1023314Z             {
2026-06-09T09:52:59.1023462Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-09T09:52:59.1023568Z               "line": 9
2026-06-09T09:52:59.1023658Z             },
2026-06-09T09:52:59.1023757Z             {
2026-06-09T09:52:59.1023897Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-09T09:52:59.1024011Z               "line": 70
2026-06-09T09:52:59.1024110Z             },
2026-06-09T09:52:59.1024202Z             {
2026-06-09T09:52:59.1024354Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-09T09:52:59.1024450Z               "line": 129
2026-06-09T09:52:59.1024555Z             }
2026-06-09T09:52:59.1024644Z           ]
2026-06-09T09:52:59.1024750Z         },
2026-06-09T09:52:59.1024856Z         "unit": {
2026-06-09T09:52:59.1024954Z           "complete": true,
2026-06-09T09:52:59.1025058Z           "evidence": [
2026-06-09T09:52:59.1025144Z             {
2026-06-09T09:52:59.1025280Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-09T09:52:59.1025379Z               "line": 203
2026-06-09T09:52:59.1025481Z             },
2026-06-09T09:52:59.1025581Z             {
2026-06-09T09:52:59.1025704Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-09T09:52:59.1025819Z               "line": 232
2026-06-09T09:52:59.1025905Z             },
2026-06-09T09:52:59.1026014Z             {
2026-06-09T09:52:59.1026125Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-09T09:52:59.1026234Z               "line": 277
2026-06-09T09:52:59.1026338Z             },
2026-06-09T09:52:59.1026440Z             {
2026-06-09T09:52:59.1026572Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-09T09:52:59.1026667Z               "line": 300
2026-06-09T09:52:59.1026773Z             },
2026-06-09T09:52:59.1026863Z             {
2026-06-09T09:52:59.1026987Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-09T09:52:59.1027102Z               "line": 324
2026-06-09T09:52:59.1027192Z             },
2026-06-09T09:52:59.1027292Z             {
2026-06-09T09:52:59.1027408Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-09T09:52:59.1027511Z               "line": 203
2026-06-09T09:52:59.1027601Z             },
2026-06-09T09:52:59.1027706Z             {
2026-06-09T09:52:59.1027842Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-09T09:52:59.1028019Z               "line": 236
2026-06-09T09:52:59.1028124Z             },
2026-06-09T09:52:59.1028209Z             {
2026-06-09T09:52:59.1028334Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-09T09:52:59.1028406Z               "line": 250
2026-06-09T09:52:59.1028486Z             },
2026-06-09T09:52:59.1028571Z             {
2026-06-09T09:52:59.1028758Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-09T09:52:59.1028876Z               "line": 262
2026-06-09T09:52:59.1029054Z             },
2026-06-09T09:52:59.1029149Z             {
2026-06-09T09:52:59.1029263Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-09T09:52:59.1029354Z               "line": 158
2026-06-09T09:52:59.1029449Z             },
2026-06-09T09:52:59.1029539Z             {
2026-06-09T09:52:59.1029669Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-09T09:52:59.1029763Z               "line": 241
2026-06-09T09:52:59.1029874Z             },
2026-06-09T09:52:59.1029970Z             {
2026-06-09T09:52:59.1030087Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-09T09:52:59.1030194Z               "line": 68
2026-06-09T09:52:59.1030284Z             },
2026-06-09T09:52:59.1030383Z             {
2026-06-09T09:52:59.1030497Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-09T09:52:59.1030597Z               "line": 77
2026-06-09T09:52:59.1030703Z             },
2026-06-09T09:52:59.1030787Z             {
2026-06-09T09:52:59.1030907Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-09T09:52:59.1030998Z               "line": 83
2026-06-09T09:52:59.1031097Z             },
2026-06-09T09:52:59.1031184Z             {
2026-06-09T09:52:59.1031308Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-09T09:52:59.1031421Z               "line": 102
2026-06-09T09:52:59.1031508Z             }
2026-06-09T09:52:59.1031609Z           ]
2026-06-09T09:52:59.1031699Z         }
2026-06-09T09:52:59.1031799Z       }
2026-06-09T09:52:59.1031886Z     },
2026-06-09T09:52:59.1031984Z     {
2026-06-09T09:52:59.1032099Z       "id": "REQ-MSG-2",
2026-06-09T09:52:59.1032376Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-09T09:52:59.1032487Z       "requiredStages": [
2026-06-09T09:52:59.1032577Z         "impl",
2026-06-09T09:52:59.1032680Z         "unit"
2026-06-09T09:52:59.1032770Z       ],
2026-06-09T09:52:59.1032875Z       "stages": {
2026-06-09T09:52:59.1032973Z         "doc": {
2026-06-09T09:52:59.1033073Z           "complete": false,
2026-06-09T09:52:59.1033179Z           "evidence": []
2026-06-09T09:52:59.1033269Z         },
2026-06-09T09:52:59.1033373Z         "impl": {
2026-06-09T09:52:59.1033469Z           "complete": true,
2026-06-09T09:52:59.1033570Z           "evidence": [
2026-06-09T09:52:59.1033674Z             {
2026-06-09T09:52:59.1033785Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1037810Z               "line": 11
2026-06-09T09:52:59.1037925Z             },
2026-06-09T09:52:59.1038038Z             {
2026-06-09T09:52:59.1038165Z               "path": "crates/spt/src/main.rs",
2026-06-09T09:52:59.1038266Z               "line": 8
2026-06-09T09:52:59.1038365Z             }
2026-06-09T09:52:59.1038445Z           ]
2026-06-09T09:52:59.1038550Z         },
2026-06-09T09:52:59.1038646Z         "int": {
2026-06-09T09:52:59.1038769Z           "complete": false,
2026-06-09T09:52:59.1038869Z           "evidence": []
2026-06-09T09:52:59.1039037Z         },
2026-06-09T09:52:59.1039141Z         "unit": {
2026-06-09T09:52:59.1039233Z           "complete": true,
2026-06-09T09:52:59.1039346Z           "evidence": [
2026-06-09T09:52:59.1039437Z             {
2026-06-09T09:52:59.1039566Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1039666Z               "line": 5189
2026-06-09T09:52:59.1039765Z             },
2026-06-09T09:52:59.1039867Z             {
2026-06-09T09:52:59.1039976Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1040215Z               "line": 5238
2026-06-09T09:52:59.1040295Z             },
2026-06-09T09:52:59.1040386Z             {
2026-06-09T09:52:59.1040492Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1040586Z               "line": 5261
2026-06-09T09:52:59.1040672Z             },
2026-06-09T09:52:59.1040749Z             {
2026-06-09T09:52:59.1040854Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1041134Z               "line": 6699
2026-06-09T09:52:59.1041220Z             },
2026-06-09T09:52:59.1041301Z             {
2026-06-09T09:52:59.1041410Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1041501Z               "line": 6708
2026-06-09T09:52:59.1041587Z             },
2026-06-09T09:52:59.1041676Z             {
2026-06-09T09:52:59.1041778Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1041878Z               "line": 6722
2026-06-09T09:52:59.1041963Z             }
2026-06-09T09:52:59.1042049Z           ]
2026-06-09T09:52:59.1042145Z         }
2026-06-09T09:52:59.1042235Z       }
2026-06-09T09:52:59.1042330Z     },
2026-06-09T09:52:59.1042422Z     {
2026-06-09T09:52:59.1042535Z       "id": "REQ-MSG-3",
2026-06-09T09:52:59.1042936Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-09T09:52:59.1043056Z       "requiredStages": [
2026-06-09T09:52:59.1043160Z         "impl",
2026-06-09T09:52:59.1043249Z         "unit",
2026-06-09T09:52:59.1043330Z         "int"
2026-06-09T09:52:59.1043411Z       ],
2026-06-09T09:52:59.1043505Z       "stages": {
2026-06-09T09:52:59.1043590Z         "doc": {
2026-06-09T09:52:59.1043686Z           "complete": false,
2026-06-09T09:52:59.1043782Z           "evidence": []
2026-06-09T09:52:59.1043867Z         },
2026-06-09T09:52:59.1043957Z         "impl": {
2026-06-09T09:52:59.1044049Z           "complete": true,
2026-06-09T09:52:59.1044144Z           "evidence": [
2026-06-09T09:52:59.1044229Z             {
2026-06-09T09:52:59.1044364Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-09T09:52:59.1044459Z               "line": 19
2026-06-09T09:52:59.1044543Z             },
2026-06-09T09:52:59.1044631Z             {
2026-06-09T09:52:59.1044745Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-09T09:52:59.1044840Z               "line": 21
2026-06-09T09:52:59.1044921Z             },
2026-06-09T09:52:59.1045017Z             {
2026-06-09T09:52:59.1045136Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-09T09:52:59.1045226Z               "line": 48
2026-06-09T09:52:59.1045313Z             },
2026-06-09T09:52:59.1045398Z             {
2026-06-09T09:52:59.1045512Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-09T09:52:59.1045604Z               "line": 142
2026-06-09T09:52:59.1045694Z             }
2026-06-09T09:52:59.1045774Z           ]
2026-06-09T09:52:59.1045851Z         },
2026-06-09T09:52:59.1045933Z         "int": {
2026-06-09T09:52:59.1046032Z           "complete": true,
2026-06-09T09:52:59.1046136Z           "evidence": [
2026-06-09T09:52:59.1046241Z             {
2026-06-09T09:52:59.1046396Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-09T09:52:59.1046495Z               "line": 10
2026-06-09T09:52:59.1046586Z             },
2026-06-09T09:52:59.1046683Z             {
2026-06-09T09:52:59.1046820Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-09T09:52:59.1046931Z               "line": 70
2026-06-09T09:52:59.1047021Z             }
2026-06-09T09:52:59.1047120Z           ]
2026-06-09T09:52:59.1047231Z         },
2026-06-09T09:52:59.1047326Z         "unit": {
2026-06-09T09:52:59.1047439Z           "complete": true,
2026-06-09T09:52:59.1047541Z           "evidence": [
2026-06-09T09:52:59.1047640Z             {
2026-06-09T09:52:59.1047764Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-09T09:52:59.1047880Z               "line": 196
2026-06-09T09:52:59.1047969Z             },
2026-06-09T09:52:59.1048045Z             {
2026-06-09T09:52:59.1048232Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-09T09:52:59.1048326Z               "line": 215
2026-06-09T09:52:59.1048413Z             },
2026-06-09T09:52:59.1048495Z             {
2026-06-09T09:52:59.1048608Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-09T09:52:59.1048702Z               "line": 237
2026-06-09T09:52:59.1048883Z             }
2026-06-09T09:52:59.1049057Z           ]
2026-06-09T09:52:59.1049144Z         }
2026-06-09T09:52:59.1049235Z       }
2026-06-09T09:52:59.1049315Z     },
2026-06-09T09:52:59.1049406Z     {
2026-06-09T09:52:59.1049502Z       "id": "REQ-MSG-4",
2026-06-09T09:52:59.1050428Z       "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-09T09:52:59.1050526Z       "requiredStages": [
2026-06-09T09:52:59.1050655Z         "impl",
2026-06-09T09:52:59.1050761Z         "unit",
2026-06-09T09:52:59.1050855Z         "int"
2026-06-09T09:52:59.1050941Z       ],
2026-06-09T09:52:59.1051038Z       "stages": {
2026-06-09T09:52:59.1051123Z         "doc": {
2026-06-09T09:52:59.1051232Z           "complete": false,
2026-06-09T09:52:59.1051324Z           "evidence": []
2026-06-09T09:52:59.1051442Z         },
2026-06-09T09:52:59.1051551Z         "impl": {
2026-06-09T09:52:59.1051646Z           "complete": true,
2026-06-09T09:52:59.1051766Z           "evidence": [
2026-06-09T09:52:59.1051856Z             {
2026-06-09T09:52:59.1051984Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-09T09:52:59.1052081Z               "line": 16
2026-06-09T09:52:59.1052180Z             },
2026-06-09T09:52:59.1052280Z             {
2026-06-09T09:52:59.1052390Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-09T09:52:59.1052481Z               "line": 25
2026-06-09T09:52:59.1052551Z             },
2026-06-09T09:52:59.1052633Z             {
2026-06-09T09:52:59.1052743Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-09T09:52:59.1052838Z               "line": 47
2026-06-09T09:52:59.1052924Z             },
2026-06-09T09:52:59.1053006Z             {
2026-06-09T09:52:59.1053129Z               "path": "crates/spt/src/api/startup.rs",
2026-06-09T09:52:59.1053224Z               "line": 363
2026-06-09T09:52:59.1053316Z             },
2026-06-09T09:52:59.1053396Z             {
2026-06-09T09:52:59.1053515Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1053607Z               "line": 2178
2026-06-09T09:52:59.1053692Z             }
2026-06-09T09:52:59.1053776Z           ]
2026-06-09T09:52:59.1053862Z         },
2026-06-09T09:52:59.1053948Z         "int": {
2026-06-09T09:52:59.1054042Z           "complete": true,
2026-06-09T09:52:59.1054136Z           "evidence": [
2026-06-09T09:52:59.1054227Z             {
2026-06-09T09:52:59.1054352Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-09T09:52:59.1054450Z               "line": 93
2026-06-09T09:52:59.1054532Z             },
2026-06-09T09:52:59.1054619Z             {
2026-06-09T09:52:59.1054747Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-09T09:52:59.1054827Z               "line": 123
2026-06-09T09:52:59.1054919Z             }
2026-06-09T09:52:59.1054999Z           ]
2026-06-09T09:52:59.1055103Z         },
2026-06-09T09:52:59.1055191Z         "unit": {
2026-06-09T09:52:59.1055296Z           "complete": true,
2026-06-09T09:52:59.1055381Z           "evidence": [
2026-06-09T09:52:59.1055476Z             {
2026-06-09T09:52:59.1055605Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-09T09:52:59.1055700Z               "line": 62
2026-06-09T09:52:59.1055805Z             },
2026-06-09T09:52:59.1055897Z             {
2026-06-09T09:52:59.1056030Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-09T09:52:59.1056120Z               "line": 73
2026-06-09T09:52:59.1056231Z             },
2026-06-09T09:52:59.1056493Z             {
2026-06-09T09:52:59.1056625Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-09T09:52:59.1056734Z               "line": 84
2026-06-09T09:52:59.1056829Z             },
2026-06-09T09:52:59.1056923Z             {
2026-06-09T09:52:59.1057027Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-09T09:52:59.1057128Z               "line": 96
2026-06-09T09:52:59.1057308Z             },
2026-06-09T09:52:59.1057394Z             {
2026-06-09T09:52:59.1057510Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-09T09:52:59.1057600Z               "line": 105
2026-06-09T09:52:59.1057690Z             },
2026-06-09T09:52:59.1057772Z             {
2026-06-09T09:52:59.1057886Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-09T09:52:59.1057985Z               "line": 120
2026-06-09T09:52:59.1058067Z             }
2026-06-09T09:52:59.1058158Z           ]
2026-06-09T09:52:59.1058239Z         }
2026-06-09T09:52:59.1058329Z       }
2026-06-09T09:52:59.1058411Z     },
2026-06-09T09:52:59.1058506Z     {
2026-06-09T09:52:59.1058600Z       "id": "REQ-NET-1",
2026-06-09T09:52:59.1058788Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-09T09:52:59.1058886Z       "requiredStages": [
2026-06-09T09:52:59.1059050Z         "impl",
2026-06-09T09:52:59.1059135Z         "unit",
2026-06-09T09:52:59.1059215Z         "int"
2026-06-09T09:52:59.1059319Z       ],
2026-06-09T09:52:59.1059415Z       "stages": {
2026-06-09T09:52:59.1059508Z         "doc": {
2026-06-09T09:52:59.1059626Z           "complete": false,
2026-06-09T09:52:59.1059718Z           "evidence": []
2026-06-09T09:52:59.1059809Z         },
2026-06-09T09:52:59.1059894Z         "impl": {
2026-06-09T09:52:59.1059999Z           "complete": true,
2026-06-09T09:52:59.1060100Z           "evidence": [
2026-06-09T09:52:59.1060189Z             {
2026-06-09T09:52:59.1060329Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-09T09:52:59.1060429Z               "line": 54
2026-06-09T09:52:59.1060538Z             },
2026-06-09T09:52:59.1060629Z             {
2026-06-09T09:52:59.1060762Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-09T09:52:59.1060872Z               "line": 594
2026-06-09T09:52:59.1060963Z             },
2026-06-09T09:52:59.1061072Z             {
2026-06-09T09:52:59.1061196Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-09T09:52:59.1061307Z               "line": 69
2026-06-09T09:52:59.1061386Z             },
2026-06-09T09:52:59.1061458Z             {
2026-06-09T09:52:59.1061593Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-09T09:52:59.1061683Z               "line": 97
2026-06-09T09:52:59.1061773Z             },
2026-06-09T09:52:59.1061854Z             {
2026-06-09T09:52:59.1061979Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-09T09:52:59.1062077Z               "line": 159
2026-06-09T09:52:59.1062158Z             },
2026-06-09T09:52:59.1062249Z             {
2026-06-09T09:52:59.1062373Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-09T09:52:59.1062473Z               "line": 175
2026-06-09T09:52:59.1062559Z             },
2026-06-09T09:52:59.1062645Z             {
2026-06-09T09:52:59.1062768Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-09T09:52:59.1062859Z               "line": 190
2026-06-09T09:52:59.1062950Z             },
2026-06-09T09:52:59.1063036Z             {
2026-06-09T09:52:59.1063155Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-09T09:52:59.1063246Z               "line": 271
2026-06-09T09:52:59.1063341Z             },
2026-06-09T09:52:59.1063426Z             {
2026-06-09T09:52:59.1063547Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-09T09:52:59.1063646Z               "line": 306
2026-06-09T09:52:59.1063727Z             },
2026-06-09T09:52:59.1063818Z             {
2026-06-09T09:52:59.1063933Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-09T09:52:59.1064042Z               "line": 312
2026-06-09T09:52:59.1064252Z             },
2026-06-09T09:52:59.1064342Z             {
2026-06-09T09:52:59.1064465Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-09T09:52:59.1064555Z               "line": 318
2026-06-09T09:52:59.1064654Z             },
2026-06-09T09:52:59.1064739Z             {
2026-06-09T09:52:59.1064879Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-09T09:52:59.1065092Z               "line": 334
2026-06-09T09:52:59.1065184Z             },
2026-06-09T09:52:59.1065283Z             {
2026-06-09T09:52:59.1065451Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-09T09:52:59.1065602Z               "line": 354
2026-06-09T09:52:59.1065692Z             },
2026-06-09T09:52:59.1065798Z             {
2026-06-09T09:52:59.1065927Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-09T09:52:59.1066012Z               "line": 35
2026-06-09T09:52:59.1066099Z             },
2026-06-09T09:52:59.1066179Z             {
2026-06-09T09:52:59.1066312Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-09T09:52:59.1066410Z               "line": 85
2026-06-09T09:52:59.1066490Z             },
2026-06-09T09:52:59.1066575Z             {
2026-06-09T09:52:59.1066690Z               "path": "crates/spt-store/src/spool.rs",
2026-06-09T09:52:59.1066781Z               "line": 135
2026-06-09T09:52:59.1066870Z             },
2026-06-09T09:52:59.1066961Z             {
2026-06-09T09:52:59.1067077Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1067171Z               "line": 2024
2026-06-09T09:52:59.1067261Z             },
2026-06-09T09:52:59.1067342Z             {
2026-06-09T09:52:59.1067460Z               "path": "crates/spt/src/wansend.rs",
2026-06-09T09:52:59.1067544Z               "line": 17
2026-06-09T09:52:59.1067635Z             }
2026-06-09T09:52:59.1067726Z           ]
2026-06-09T09:52:59.1067808Z         },
2026-06-09T09:52:59.1067901Z         "int": {
2026-06-09T09:52:59.1067998Z           "complete": true,
2026-06-09T09:52:59.1068098Z           "evidence": [
2026-06-09T09:52:59.1068188Z             {
2026-06-09T09:52:59.1068318Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-09T09:52:59.1068403Z               "line": 341
2026-06-09T09:52:59.1068489Z             },
2026-06-09T09:52:59.1068589Z             {
2026-06-09T09:52:59.1068714Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.1068832Z               "line": 605
2026-06-09T09:52:59.1068913Z             },
2026-06-09T09:52:59.1069084Z             {
2026-06-09T09:52:59.1069213Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.1069314Z               "line": 878
2026-06-09T09:52:59.1069413Z             }
2026-06-09T09:52:59.1069499Z           ]
2026-06-09T09:52:59.1069601Z         },
2026-06-09T09:52:59.1069696Z         "unit": {
2026-06-09T09:52:59.1069808Z           "complete": true,
2026-06-09T09:52:59.1069913Z           "evidence": [
2026-06-09T09:52:59.1070004Z             {
2026-06-09T09:52:59.1070149Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-09T09:52:59.1070240Z               "line": 650
2026-06-09T09:52:59.1070341Z             },
2026-06-09T09:52:59.1070426Z             {
2026-06-09T09:52:59.1070550Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-09T09:52:59.1070646Z               "line": 685
2026-06-09T09:52:59.1070736Z             },
2026-06-09T09:52:59.1070826Z             {
2026-06-09T09:52:59.1070951Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-09T09:52:59.1071046Z               "line": 932
2026-06-09T09:52:59.1071136Z             },
2026-06-09T09:52:59.1071228Z             {
2026-06-09T09:52:59.1071351Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-09T09:52:59.1071441Z               "line": 152
2026-06-09T09:52:59.1071533Z             },
2026-06-09T09:52:59.1071613Z             {
2026-06-09T09:52:59.1071742Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-09T09:52:59.1071942Z               "line": 442
2026-06-09T09:52:59.1072037Z             },
2026-06-09T09:52:59.1072124Z             {
2026-06-09T09:52:59.1072243Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-09T09:52:59.1072338Z               "line": 456
2026-06-09T09:52:59.1072419Z             },
2026-06-09T09:52:59.1072516Z             {
2026-06-09T09:52:59.1072718Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-09T09:52:59.1072819Z               "line": 475
2026-06-09T09:52:59.1072910Z             },
2026-06-09T09:52:59.1072985Z             {
2026-06-09T09:52:59.1073129Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-09T09:52:59.1073219Z               "line": 119
2026-06-09T09:52:59.1073314Z             },
2026-06-09T09:52:59.1073405Z             {
2026-06-09T09:52:59.1073524Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-09T09:52:59.1073619Z               "line": 162
2026-06-09T09:52:59.1073700Z             },
2026-06-09T09:52:59.1073797Z             {
2026-06-09T09:52:59.1073911Z               "path": "crates/spt-store/src/spool.rs",
2026-06-09T09:52:59.1073996Z               "line": 492
2026-06-09T09:52:59.1074088Z             },
2026-06-09T09:52:59.1074168Z             {
2026-06-09T09:52:59.1074282Z               "path": "crates/spt/src/wansend.rs",
2026-06-09T09:52:59.1074369Z               "line": 615
2026-06-09T09:52:59.1074469Z             },
2026-06-09T09:52:59.1074549Z             {
2026-06-09T09:52:59.1074659Z               "path": "crates/spt/src/wansend.rs",
2026-06-09T09:52:59.1074751Z               "line": 1004
2026-06-09T09:52:59.1074826Z             }
2026-06-09T09:52:59.1074916Z           ]
2026-06-09T09:52:59.1074996Z         }
2026-06-09T09:52:59.1075083Z       }
2026-06-09T09:52:59.1075162Z     },
2026-06-09T09:52:59.1075252Z     {
2026-06-09T09:52:59.1075352Z       "id": "REQ-NET-2",
2026-06-09T09:52:59.1075528Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-09T09:52:59.1075628Z       "requiredStages": [
2026-06-09T09:52:59.1075715Z         "impl"
2026-06-09T09:52:59.1075805Z       ],
2026-06-09T09:52:59.1075895Z       "stages": {
2026-06-09T09:52:59.1075981Z         "doc": {
2026-06-09T09:52:59.1076077Z           "complete": false,
2026-06-09T09:52:59.1076162Z           "evidence": []
2026-06-09T09:52:59.1076252Z         },
2026-06-09T09:52:59.1076340Z         "impl": {
2026-06-09T09:52:59.1076440Z           "complete": true,
2026-06-09T09:52:59.1076529Z           "evidence": [
2026-06-09T09:52:59.1076616Z             {
2026-06-09T09:52:59.1076739Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-09T09:52:59.1076825Z               "line": 57
2026-06-09T09:52:59.1076921Z             },
2026-06-09T09:52:59.1077002Z             {
2026-06-09T09:52:59.1077130Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-09T09:52:59.1077221Z               "line": 71
2026-06-09T09:52:59.1077308Z             },
2026-06-09T09:52:59.1077397Z             {
2026-06-09T09:52:59.1077516Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-09T09:52:59.1077609Z               "line": 81
2026-06-09T09:52:59.1077694Z             },
2026-06-09T09:52:59.1077783Z             {
2026-06-09T09:52:59.1077902Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-09T09:52:59.1077992Z               "line": 159
2026-06-09T09:52:59.1078091Z             },
2026-06-09T09:52:59.1078171Z             {
2026-06-09T09:52:59.1078291Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-09T09:52:59.1078382Z               "line": 175
2026-06-09T09:52:59.1078471Z             },
2026-06-09T09:52:59.1078553Z             {
2026-06-09T09:52:59.1078672Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-09T09:52:59.1078758Z               "line": 190
2026-06-09T09:52:59.1078839Z             }
2026-06-09T09:52:59.1079035Z           ]
2026-06-09T09:52:59.1079119Z         },
2026-06-09T09:52:59.1079212Z         "int": {
2026-06-09T09:52:59.1079406Z           "complete": false,
2026-06-09T09:52:59.1079502Z           "evidence": []
2026-06-09T09:52:59.1079588Z         },
2026-06-09T09:52:59.1079673Z         "unit": {
2026-06-09T09:52:59.1079769Z           "complete": true,
2026-06-09T09:52:59.1079856Z           "evidence": [
2026-06-09T09:52:59.1079946Z             {
2026-06-09T09:52:59.1080059Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-09T09:52:59.1080270Z               "line": 402
2026-06-09T09:52:59.1080359Z             }
2026-06-09T09:52:59.1080439Z           ]
2026-06-09T09:52:59.1080530Z         }
2026-06-09T09:52:59.1080610Z       }
2026-06-09T09:52:59.1080695Z     },
2026-06-09T09:52:59.1080781Z     {
2026-06-09T09:52:59.1080877Z       "id": "REQ-NET-3",
2026-06-09T09:52:59.1081062Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-09T09:52:59.1081154Z       "requiredStages": [
2026-06-09T09:52:59.1081244Z         "impl",
2026-06-09T09:52:59.1081324Z         "unit"
2026-06-09T09:52:59.1081415Z       ],
2026-06-09T09:52:59.1081502Z       "stages": {
2026-06-09T09:52:59.1081592Z         "doc": {
2026-06-09T09:52:59.1081686Z           "complete": false,
2026-06-09T09:52:59.1081778Z           "evidence": []
2026-06-09T09:52:59.1081863Z         },
2026-06-09T09:52:59.1081949Z         "impl": {
2026-06-09T09:52:59.1082049Z           "complete": true,
2026-06-09T09:52:59.1082146Z           "evidence": [
2026-06-09T09:52:59.1082231Z             {
2026-06-09T09:52:59.1082350Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-09T09:52:59.1082437Z               "line": 39
2026-06-09T09:52:59.1082526Z             },
2026-06-09T09:52:59.1082607Z             {
2026-06-09T09:52:59.1082723Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-09T09:52:59.1082808Z               "line": 182
2026-06-09T09:52:59.1082893Z             },
2026-06-09T09:52:59.1082984Z             {
2026-06-09T09:52:59.1083090Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-09T09:52:59.1083188Z               "line": 333
2026-06-09T09:52:59.1083274Z             },
2026-06-09T09:52:59.1083359Z             {
2026-06-09T09:52:59.1083480Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-09T09:52:59.1083569Z               "line": 36
2026-06-09T09:52:59.1083655Z             },
2026-06-09T09:52:59.1083732Z             {
2026-06-09T09:52:59.1083860Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-09T09:52:59.1083950Z               "line": 158
2026-06-09T09:52:59.1084038Z             },
2026-06-09T09:52:59.1084118Z             {
2026-06-09T09:52:59.1084246Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-09T09:52:59.1084338Z               "line": 212
2026-06-09T09:52:59.1084423Z             },
2026-06-09T09:52:59.1084508Z             {
2026-06-09T09:52:59.1084629Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-09T09:52:59.1084719Z               "line": 233
2026-06-09T09:52:59.1084809Z             },
2026-06-09T09:52:59.1084890Z             {
2026-06-09T09:52:59.1085025Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-09T09:52:59.1085114Z               "line": 291
2026-06-09T09:52:59.1085200Z             },
2026-06-09T09:52:59.1085282Z             {
2026-06-09T09:52:59.1085404Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-09T09:52:59.1085499Z               "line": 310
2026-06-09T09:52:59.1085576Z             },
2026-06-09T09:52:59.1085666Z             {
2026-06-09T09:52:59.1085779Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-09T09:52:59.1085878Z               "line": 348
2026-06-09T09:52:59.1085955Z             },
2026-06-09T09:52:59.1086037Z             {
2026-06-09T09:52:59.1086150Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-09T09:52:59.1086236Z               "line": 393
2026-06-09T09:52:59.1086323Z             },
2026-06-09T09:52:59.1086408Z             {
2026-06-09T09:52:59.1086532Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-09T09:52:59.1086694Z               "line": 406
2026-06-09T09:52:59.1086789Z             },
2026-06-09T09:52:59.1086876Z             {
2026-06-09T09:52:59.1086995Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-09T09:52:59.1087085Z               "line": 29
2026-06-09T09:52:59.1087176Z             },
2026-06-09T09:52:59.1087262Z             {
2026-06-09T09:52:59.1087447Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-09T09:52:59.1087539Z               "line": 72
2026-06-09T09:52:59.1087628Z             },
2026-06-09T09:52:59.1087710Z             {
2026-06-09T09:52:59.1087830Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-09T09:52:59.1087915Z               "line": 123
2026-06-09T09:52:59.1088010Z             }
2026-06-09T09:52:59.1088091Z           ]
2026-06-09T09:52:59.1088179Z         },
2026-06-09T09:52:59.1088263Z         "int": {
2026-06-09T09:52:59.1088357Z           "complete": false,
2026-06-09T09:52:59.1088457Z           "evidence": []
2026-06-09T09:52:59.1088543Z         },
2026-06-09T09:52:59.1088636Z         "unit": {
2026-06-09T09:52:59.1088726Z           "complete": true,
2026-06-09T09:52:59.1088823Z           "evidence": [
2026-06-09T09:52:59.1088908Z             {
2026-06-09T09:52:59.1089108Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-09T09:52:59.1089204Z               "line": 223
2026-06-09T09:52:59.1089289Z             },
2026-06-09T09:52:59.1089379Z             {
2026-06-09T09:52:59.1089495Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-09T09:52:59.1089590Z               "line": 351
2026-06-09T09:52:59.1089679Z             },
2026-06-09T09:52:59.1089762Z             {
2026-06-09T09:52:59.1089890Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-09T09:52:59.1089981Z               "line": 502
2026-06-09T09:52:59.1090067Z             },
2026-06-09T09:52:59.1090148Z             {
2026-06-09T09:52:59.1090276Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-09T09:52:59.1090372Z               "line": 93
2026-06-09T09:52:59.1090454Z             },
2026-06-09T09:52:59.1090543Z             {
2026-06-09T09:52:59.1090653Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-09T09:52:59.1090745Z               "line": 142
2026-06-09T09:52:59.1090830Z             },
2026-06-09T09:52:59.1090914Z             {
2026-06-09T09:52:59.1091043Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-09T09:52:59.1091133Z               "line": 315
2026-06-09T09:52:59.1091222Z             },
2026-06-09T09:52:59.1091307Z             {
2026-06-09T09:52:59.1091423Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-09T09:52:59.1091518Z               "line": 355
2026-06-09T09:52:59.1091608Z             },
2026-06-09T09:52:59.1091690Z             {
2026-06-09T09:52:59.1091804Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-09T09:52:59.1091898Z               "line": 494
2026-06-09T09:52:59.1091985Z             }
2026-06-09T09:52:59.1092081Z           ]
2026-06-09T09:52:59.1092162Z         }
2026-06-09T09:52:59.1092242Z       }
2026-06-09T09:52:59.1092324Z     },
2026-06-09T09:52:59.1092405Z     {
2026-06-09T09:52:59.1092500Z       "id": "REQ-NODE-IDENTITY",
2026-06-09T09:52:59.1092734Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-09T09:52:59.1092838Z       "requiredStages": [
2026-06-09T09:52:59.1092934Z         "impl",
2026-06-09T09:52:59.1093006Z         "unit"
2026-06-09T09:52:59.1093091Z       ],
2026-06-09T09:52:59.1093172Z       "stages": {
2026-06-09T09:52:59.1093259Z         "doc": {
2026-06-09T09:52:59.1093354Z           "complete": false,
2026-06-09T09:52:59.1093448Z           "evidence": []
2026-06-09T09:52:59.1093535Z         },
2026-06-09T09:52:59.1093621Z         "impl": {
2026-06-09T09:52:59.1093721Z           "complete": true,
2026-06-09T09:52:59.1093810Z           "evidence": [
2026-06-09T09:52:59.1093896Z             {
2026-06-09T09:52:59.1094119Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-09T09:52:59.1094215Z               "line": 60
2026-06-09T09:52:59.1094307Z             },
2026-06-09T09:52:59.1094388Z             {
2026-06-09T09:52:59.1094515Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-09T09:52:59.1094607Z               "line": 68
2026-06-09T09:52:59.1094693Z             },
2026-06-09T09:52:59.1094859Z             {
2026-06-09T09:52:59.1094988Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-09T09:52:59.1095082Z               "line": 86
2026-06-09T09:52:59.1095159Z             },
2026-06-09T09:52:59.1095251Z             {
2026-06-09T09:52:59.1095365Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-09T09:52:59.1095460Z               "line": 120
2026-06-09T09:52:59.1095542Z             },
2026-06-09T09:52:59.1095631Z             {
2026-06-09T09:52:59.1095750Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-09T09:52:59.1095837Z               "line": 127
2026-06-09T09:52:59.1095928Z             },
2026-06-09T09:52:59.1096012Z             {
2026-06-09T09:52:59.1096131Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-09T09:52:59.1096217Z               "line": 143
2026-06-09T09:52:59.1096305Z             },
2026-06-09T09:52:59.1096391Z             {
2026-06-09T09:52:59.1096501Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-09T09:52:59.1096597Z               "line": 16
2026-06-09T09:52:59.1096682Z             }
2026-06-09T09:52:59.1096773Z           ]
2026-06-09T09:52:59.1096849Z         },
2026-06-09T09:52:59.1096940Z         "int": {
2026-06-09T09:52:59.1097035Z           "complete": false,
2026-06-09T09:52:59.1097121Z           "evidence": []
2026-06-09T09:52:59.1097211Z         },
2026-06-09T09:52:59.1097296Z         "unit": {
2026-06-09T09:52:59.1097441Z           "complete": true,
2026-06-09T09:52:59.1097526Z           "evidence": [
2026-06-09T09:52:59.1097616Z             {
2026-06-09T09:52:59.1097746Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-09T09:52:59.1097831Z               "line": 199
2026-06-09T09:52:59.1097922Z             },
2026-06-09T09:52:59.1098003Z             {
2026-06-09T09:52:59.1098123Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-09T09:52:59.1098208Z               "line": 218
2026-06-09T09:52:59.1098293Z             },
2026-06-09T09:52:59.1098390Z             {
2026-06-09T09:52:59.1098499Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-09T09:52:59.1098589Z               "line": 234
2026-06-09T09:52:59.1098671Z             },
2026-06-09T09:52:59.1098753Z             {
2026-06-09T09:52:59.1098875Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-09T09:52:59.1099051Z               "line": 256
2026-06-09T09:52:59.1099140Z             },
2026-06-09T09:52:59.1099220Z             {
2026-06-09T09:52:59.1099339Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-09T09:52:59.1099426Z               "line": 124
2026-06-09T09:52:59.1099520Z             },
2026-06-09T09:52:59.1099610Z             {
2026-06-09T09:52:59.1099721Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-09T09:52:59.1099817Z               "line": 140
2026-06-09T09:52:59.1099902Z             },
2026-06-09T09:52:59.1099988Z             {
2026-06-09T09:52:59.1100098Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-09T09:52:59.1100197Z               "line": 155
2026-06-09T09:52:59.1100284Z             }
2026-06-09T09:52:59.1100370Z           ]
2026-06-09T09:52:59.1100455Z         }
2026-06-09T09:52:59.1100536Z       }
2026-06-09T09:52:59.1100622Z     },
2026-06-09T09:52:59.1100703Z     {
2026-06-09T09:52:59.1100803Z       "id": "REQ-NOTIF-1",
2026-06-09T09:52:59.1101171Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-09T09:52:59.1101262Z       "requiredStages": [
2026-06-09T09:52:59.1101352Z         "impl",
2026-06-09T09:52:59.1101442Z         "unit",
2026-06-09T09:52:59.1101632Z         "int"
2026-06-09T09:52:59.1101716Z       ],
2026-06-09T09:52:59.1101805Z       "stages": {
2026-06-09T09:52:59.1101891Z         "doc": {
2026-06-09T09:52:59.1101983Z           "complete": false,
2026-06-09T09:52:59.1102078Z           "evidence": []
2026-06-09T09:52:59.1102158Z         },
2026-06-09T09:52:59.1102250Z         "impl": {
2026-06-09T09:52:59.1102430Z           "complete": true,
2026-06-09T09:52:59.1102521Z           "evidence": [
2026-06-09T09:52:59.1102608Z             {
2026-06-09T09:52:59.1102731Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-09T09:52:59.1102821Z               "line": 514
2026-06-09T09:52:59.1102894Z             },
2026-06-09T09:52:59.1102984Z             {
2026-06-09T09:52:59.1103098Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-09T09:52:59.1103194Z               "line": 30
2026-06-09T09:52:59.1103284Z             },
2026-06-09T09:52:59.1103365Z             {
2026-06-09T09:52:59.1103489Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-09T09:52:59.1103576Z               "line": 62
2026-06-09T09:52:59.1103665Z             },
2026-06-09T09:52:59.1103746Z             {
2026-06-09T09:52:59.1103867Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-09T09:52:59.1103956Z               "line": 86
2026-06-09T09:52:59.1104038Z             },
2026-06-09T09:52:59.1104139Z             {
2026-06-09T09:52:59.1104248Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-09T09:52:59.1104341Z               "line": 100
2026-06-09T09:52:59.1104422Z             },
2026-06-09T09:52:59.1104508Z             {
2026-06-09T09:52:59.1107075Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-09T09:52:59.1107185Z               "line": 135
2026-06-09T09:52:59.1107275Z             },
2026-06-09T09:52:59.1107361Z             {
2026-06-09T09:52:59.1107491Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-09T09:52:59.1107580Z               "line": 180
2026-06-09T09:52:59.1107686Z             },
2026-06-09T09:52:59.1107776Z             {
2026-06-09T09:52:59.1107895Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-09T09:52:59.1107982Z               "line": 251
2026-06-09T09:52:59.1108067Z             },
2026-06-09T09:52:59.1108153Z             {
2026-06-09T09:52:59.1108262Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-09T09:52:59.1108359Z               "line": 361
2026-06-09T09:52:59.1108448Z             },
2026-06-09T09:52:59.1108524Z             {
2026-06-09T09:52:59.1108640Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-09T09:52:59.1108734Z               "line": 421
2026-06-09T09:52:59.1108820Z             },
2026-06-09T09:52:59.1108901Z             {
2026-06-09T09:52:59.1109125Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-09T09:52:59.1109221Z               "line": 24
2026-06-09T09:52:59.1109303Z             },
2026-06-09T09:52:59.1109388Z             {
2026-06-09T09:52:59.1109515Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-09T09:52:59.1109606Z               "line": 34
2026-06-09T09:52:59.1109696Z             },
2026-06-09T09:52:59.1109775Z             {
2026-06-09T09:52:59.1109904Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-09T09:52:59.1109986Z               "line": 60
2026-06-09T09:52:59.1110071Z             },
2026-06-09T09:52:59.1110161Z             {
2026-06-09T09:52:59.1110277Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-09T09:52:59.1110377Z               "line": 82
2026-06-09T09:52:59.1110457Z             },
2026-06-09T09:52:59.1110543Z             {
2026-06-09T09:52:59.1110658Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-09T09:52:59.1110748Z               "line": 94
2026-06-09T09:52:59.1110834Z             },
2026-06-09T09:52:59.1110916Z             {
2026-06-09T09:52:59.1111044Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.1111124Z               "line": 43
2026-06-09T09:52:59.1111363Z             },
2026-06-09T09:52:59.1111449Z             {
2026-06-09T09:52:59.1111574Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-09T09:52:59.1111658Z               "line": 96
2026-06-09T09:52:59.1111750Z             },
2026-06-09T09:52:59.1111836Z             {
2026-06-09T09:52:59.1111955Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-09T09:52:59.1112139Z               "line": 20
2026-06-09T09:52:59.1112230Z             },
2026-06-09T09:52:59.1112314Z             {
2026-06-09T09:52:59.1112427Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-09T09:52:59.1112523Z               "line": 30
2026-06-09T09:52:59.1112610Z             },
2026-06-09T09:52:59.1112690Z             {
2026-06-09T09:52:59.1112805Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-09T09:52:59.1112896Z               "line": 50
2026-06-09T09:52:59.1112981Z             },
2026-06-09T09:52:59.1113062Z             {
2026-06-09T09:52:59.1113191Z               "path": "crates/spt-store/src/notif.rs",
2026-06-09T09:52:59.1113282Z               "line": 28
2026-06-09T09:52:59.1113362Z             },
2026-06-09T09:52:59.1113450Z             {
2026-06-09T09:52:59.1113563Z               "path": "crates/spt-store/src/notif.rs",
2026-06-09T09:52:59.1113653Z               "line": 126
2026-06-09T09:52:59.1113734Z             },
2026-06-09T09:52:59.1113830Z             {
2026-06-09T09:52:59.1113945Z               "path": "crates/spt-store/src/notif.rs",
2026-06-09T09:52:59.1114035Z               "line": 161
2026-06-09T09:52:59.1114121Z             },
2026-06-09T09:52:59.1114202Z             {
2026-06-09T09:52:59.1114321Z               "path": "crates/spt-store/src/notif.rs",
2026-06-09T09:52:59.1114408Z               "line": 202
2026-06-09T09:52:59.1114498Z             },
2026-06-09T09:52:59.1114588Z             {
2026-06-09T09:52:59.1114699Z               "path": "crates/spt-store/src/notif.rs",
2026-06-09T09:52:59.1114794Z               "line": 213
2026-06-09T09:52:59.1114878Z             },
2026-06-09T09:52:59.1114968Z             {
2026-06-09T09:52:59.1115073Z               "path": "crates/spt-store/src/notif.rs",
2026-06-09T09:52:59.1115174Z               "line": 238
2026-06-09T09:52:59.1115263Z             },
2026-06-09T09:52:59.1115350Z             {
2026-06-09T09:52:59.1115464Z               "path": "crates/spt-store/src/notif.rs",
2026-06-09T09:52:59.1115559Z               "line": 261
2026-06-09T09:52:59.1115645Z             },
2026-06-09T09:52:59.1115737Z             {
2026-06-09T09:52:59.1115856Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:59.1115946Z               "line": 63
2026-06-09T09:52:59.1116028Z             }
2026-06-09T09:52:59.1116117Z           ]
2026-06-09T09:52:59.1116199Z         },
2026-06-09T09:52:59.1116284Z         "int": {
2026-06-09T09:52:59.1116385Z           "complete": true,
2026-06-09T09:52:59.1116475Z           "evidence": [
2026-06-09T09:52:59.1116565Z             {
2026-06-09T09:52:59.1116696Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-09T09:52:59.1116789Z               "line": 285
2026-06-09T09:52:59.1116870Z             },
2026-06-09T09:52:59.1116963Z             {
2026-06-09T09:52:59.1117095Z               "path": "crates/spt-daemon/tests/peerloop.rs",
2026-06-09T09:52:59.1117180Z               "line": 102
2026-06-09T09:52:59.1117261Z             },
2026-06-09T09:52:59.1117347Z             {
2026-06-09T09:52:59.1117473Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.1117558Z               "line": 614
2026-06-09T09:52:59.1117655Z             },
2026-06-09T09:52:59.1117741Z             {
2026-06-09T09:52:59.1117859Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.1117955Z               "line": 1007
2026-06-09T09:52:59.1118036Z             }
2026-06-09T09:52:59.1118126Z           ]
2026-06-09T09:52:59.1118207Z         },
2026-06-09T09:52:59.1118299Z         "unit": {
2026-06-09T09:52:59.1118479Z           "complete": true,
2026-06-09T09:52:59.1118566Z           "evidence": [
2026-06-09T09:52:59.1118656Z             {
2026-06-09T09:52:59.1118779Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-09T09:52:59.1118871Z               "line": 514
2026-06-09T09:52:59.1119038Z             },
2026-06-09T09:52:59.1119128Z             {
2026-06-09T09:52:59.1119248Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-09T09:52:59.1119433Z               "line": 563
2026-06-09T09:52:59.1119520Z             },
2026-06-09T09:52:59.1119601Z             {
2026-06-09T09:52:59.1119724Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-09T09:52:59.1119816Z               "line": 666
2026-06-09T09:52:59.1119902Z             },
2026-06-09T09:52:59.1119985Z             {
2026-06-09T09:52:59.1120094Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-09T09:52:59.1120185Z               "line": 698
2026-06-09T09:52:59.1120270Z             },
2026-06-09T09:52:59.1120355Z             {
2026-06-09T09:52:59.1120474Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-09T09:52:59.1120565Z               "line": 766
2026-06-09T09:52:59.1120655Z             },
2026-06-09T09:52:59.1120740Z             {
2026-06-09T09:52:59.1120856Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-09T09:52:59.1120946Z               "line": 824
2026-06-09T09:52:59.1121041Z             },
2026-06-09T09:52:59.1121123Z             {
2026-06-09T09:52:59.1121237Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-09T09:52:59.1121336Z               "line": 1045
2026-06-09T09:52:59.1121418Z             },
2026-06-09T09:52:59.1121509Z             {
2026-06-09T09:52:59.1121632Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-09T09:52:59.1121728Z               "line": 157
2026-06-09T09:52:59.1121815Z             },
2026-06-09T09:52:59.1121904Z             {
2026-06-09T09:52:59.1122028Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-09T09:52:59.1122120Z               "line": 250
2026-06-09T09:52:59.1122209Z             },
2026-06-09T09:52:59.1122295Z             {
2026-06-09T09:52:59.1122416Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-09T09:52:59.1122510Z               "line": 273
2026-06-09T09:52:59.1122590Z             },
2026-06-09T09:52:59.1122685Z             {
2026-06-09T09:52:59.1122808Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-09T09:52:59.1122907Z               "line": 341
2026-06-09T09:52:59.1122992Z             },
2026-06-09T09:52:59.1123084Z             {
2026-06-09T09:52:59.1123207Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-09T09:52:59.1123292Z               "line": 373
2026-06-09T09:52:59.1123380Z             },
2026-06-09T09:52:59.1123461Z             {
2026-06-09T09:52:59.1123593Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-09T09:52:59.1123680Z               "line": 131
2026-06-09T09:52:59.1123770Z             },
2026-06-09T09:52:59.1123865Z             {
2026-06-09T09:52:59.1123985Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-09T09:52:59.1124080Z               "line": 72
2026-06-09T09:52:59.1124161Z             },
2026-06-09T09:52:59.1124251Z             {
2026-06-09T09:52:59.1124362Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-09T09:52:59.1124462Z               "line": 97
2026-06-09T09:52:59.1124556Z             },
2026-06-09T09:52:59.1124644Z             {
2026-06-09T09:52:59.1124757Z               "path": "crates/spt-store/src/notif.rs",
2026-06-09T09:52:59.1124848Z               "line": 379
2026-06-09T09:52:59.1124939Z             },
2026-06-09T09:52:59.1125020Z             {
2026-06-09T09:52:59.1125143Z               "path": "crates/spt-store/src/notif.rs",
2026-06-09T09:52:59.1125230Z               "line": 417
2026-06-09T09:52:59.1125316Z             },
2026-06-09T09:52:59.1125401Z             {
2026-06-09T09:52:59.1125509Z               "path": "crates/spt-store/src/notif.rs",
2026-06-09T09:52:59.1125701Z               "line": 433
2026-06-09T09:52:59.1125791Z             },
2026-06-09T09:52:59.1125881Z             {
2026-06-09T09:52:59.1125992Z               "path": "crates/spt-store/src/notif.rs",
2026-06-09T09:52:59.1126082Z               "line": 472
2026-06-09T09:52:59.1126172Z             },
2026-06-09T09:52:59.1126254Z             {
2026-06-09T09:52:59.1126373Z               "path": "crates/spt-store/src/notif.rs",
2026-06-09T09:52:59.1126539Z               "line": 489
2026-06-09T09:52:59.1126645Z             },
2026-06-09T09:52:59.1126726Z             {
2026-06-09T09:52:59.1126845Z               "path": "crates/spt-store/src/notif.rs",
2026-06-09T09:52:59.1126936Z               "line": 517
2026-06-09T09:52:59.1127016Z             },
2026-06-09T09:52:59.1127106Z             {
2026-06-09T09:52:59.1127213Z               "path": "crates/spt-store/src/notif.rs",
2026-06-09T09:52:59.1127294Z               "line": 548
2026-06-09T09:52:59.1127383Z             },
2026-06-09T09:52:59.1127465Z             {
2026-06-09T09:52:59.1127589Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:59.1127678Z               "line": 455
2026-06-09T09:52:59.1127764Z             }
2026-06-09T09:52:59.1127850Z           ]
2026-06-09T09:52:59.1127926Z         }
2026-06-09T09:52:59.1128014Z       }
2026-06-09T09:52:59.1128109Z     },
2026-06-09T09:52:59.1128200Z     {
2026-06-09T09:52:59.1128301Z       "id": "REQ-NOTIF-2",
2026-06-09T09:52:59.1128572Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-09T09:52:59.1128672Z       "requiredStages": [
2026-06-09T09:52:59.1128757Z         "doc",
2026-06-09T09:52:59.1128850Z         "impl",
2026-06-09T09:52:59.1128935Z         "unit",
2026-06-09T09:52:59.1129097Z         "int"
2026-06-09T09:52:59.1129179Z       ],
2026-06-09T09:52:59.1129269Z       "stages": {
2026-06-09T09:52:59.1129358Z         "doc": {
2026-06-09T09:52:59.1129455Z           "complete": true,
2026-06-09T09:52:59.1129550Z           "evidence": [
2026-06-09T09:52:59.1129635Z             {
2026-06-09T09:52:59.1129741Z               "path": "CONTEXT.md",
2026-06-09T09:52:59.1129827Z               "line": 346
2026-06-09T09:52:59.1129921Z             },
2026-06-09T09:52:59.1130007Z             {
2026-06-09T09:52:59.1130109Z               "path": "docs/MANIFEST.md",
2026-06-09T09:52:59.1130203Z               "line": 62
2026-06-09T09:52:59.1130288Z             }
2026-06-09T09:52:59.1130380Z           ]
2026-06-09T09:52:59.1130462Z         },
2026-06-09T09:52:59.1130555Z         "impl": {
2026-06-09T09:52:59.1130654Z           "complete": true,
2026-06-09T09:52:59.1130745Z           "evidence": [
2026-06-09T09:52:59.1130835Z             {
2026-06-09T09:52:59.1130953Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-09T09:52:59.1131048Z               "line": 280
2026-06-09T09:52:59.1131130Z             },
2026-06-09T09:52:59.1131224Z             {
2026-06-09T09:52:59.1131344Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-09T09:52:59.1131440Z               "line": 294
2026-06-09T09:52:59.1131534Z             },
2026-06-09T09:52:59.1131620Z             {
2026-06-09T09:52:59.1131740Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-09T09:52:59.1131826Z               "line": 319
2026-06-09T09:52:59.1131920Z             },
2026-06-09T09:52:59.1132002Z             {
2026-06-09T09:52:59.1132130Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-09T09:52:59.1132231Z               "line": 126
2026-06-09T09:52:59.1132312Z             },
2026-06-09T09:52:59.1132403Z             {
2026-06-09T09:52:59.1132521Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:59.1132623Z               "line": 72
2026-06-09T09:52:59.1132708Z             },
2026-06-09T09:52:59.1132793Z             {
2026-06-09T09:52:59.1132903Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1132995Z               "line": 1506
2026-06-09T09:52:59.1133084Z             },
2026-06-09T09:52:59.1133269Z             {
2026-06-09T09:52:59.1133382Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1133477Z               "line": 1555
2026-06-09T09:52:59.1133562Z             },
2026-06-09T09:52:59.1133649Z             {
2026-06-09T09:52:59.1133749Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1133843Z               "line": 1634
2026-06-09T09:52:59.1134021Z             },
2026-06-09T09:52:59.1134106Z             {
2026-06-09T09:52:59.1134216Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1134302Z               "line": 1673
2026-06-09T09:52:59.1134387Z             }
2026-06-09T09:52:59.1134468Z           ]
2026-06-09T09:52:59.1134555Z         },
2026-06-09T09:52:59.1134635Z         "int": {
2026-06-09T09:52:59.1134736Z           "complete": true,
2026-06-09T09:52:59.1134821Z           "evidence": [
2026-06-09T09:52:59.1134904Z             {
2026-06-09T09:52:59.1135036Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.1135131Z               "line": 740
2026-06-09T09:52:59.1135223Z             },
2026-06-09T09:52:59.1135307Z             {
2026-06-09T09:52:59.1135436Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.1135528Z               "line": 1160
2026-06-09T09:52:59.1135608Z             }
2026-06-09T09:52:59.1135698Z           ]
2026-06-09T09:52:59.1135790Z         },
2026-06-09T09:52:59.1135881Z         "unit": {
2026-06-09T09:52:59.1135970Z           "complete": true,
2026-06-09T09:52:59.1136074Z           "evidence": [
2026-06-09T09:52:59.1136160Z             {
2026-06-09T09:52:59.1136276Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-09T09:52:59.1136370Z               "line": 894
2026-06-09T09:52:59.1136451Z             },
2026-06-09T09:52:59.1136542Z             {
2026-06-09T09:52:59.1136651Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-09T09:52:59.1136746Z               "line": 962
2026-06-09T09:52:59.1136833Z             },
2026-06-09T09:52:59.1136919Z             {
2026-06-09T09:52:59.1137027Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1137119Z               "line": 5487
2026-06-09T09:52:59.1137210Z             },
2026-06-09T09:52:59.1137291Z             {
2026-06-09T09:52:59.1137395Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1137487Z               "line": 5542
2026-06-09T09:52:59.1137572Z             }
2026-06-09T09:52:59.1137662Z           ]
2026-06-09T09:52:59.1137744Z         }
2026-06-09T09:52:59.1137839Z       }
2026-06-09T09:52:59.1137919Z     },
2026-06-09T09:52:59.1138010Z     {
2026-06-09T09:52:59.1138116Z       "id": "REQ-PAIR-1",
2026-06-09T09:52:59.1138225Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-09T09:52:59.1138324Z       "requiredStages": [
2026-06-09T09:52:59.1138415Z         "impl",
2026-06-09T09:52:59.1138504Z         "unit",
2026-06-09T09:52:59.1138584Z         "int"
2026-06-09T09:52:59.1138674Z       ],
2026-06-09T09:52:59.1138765Z       "stages": {
2026-06-09T09:52:59.1138857Z         "doc": {
2026-06-09T09:52:59.1139047Z           "complete": false,
2026-06-09T09:52:59.1139142Z           "evidence": []
2026-06-09T09:52:59.1139232Z         },
2026-06-09T09:52:59.1139323Z         "impl": {
2026-06-09T09:52:59.1139419Z           "complete": true,
2026-06-09T09:52:59.1139514Z           "evidence": [
2026-06-09T09:52:59.1139594Z             {
2026-06-09T09:52:59.1139729Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-09T09:52:59.1139819Z               "line": 27
2026-06-09T09:52:59.1139909Z             },
2026-06-09T09:52:59.1139991Z             {
2026-06-09T09:52:59.1140128Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-09T09:52:59.1140224Z               "line": 88
2026-06-09T09:52:59.1140311Z             },
2026-06-09T09:52:59.1140397Z             {
2026-06-09T09:52:59.1140524Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-09T09:52:59.1140626Z               "line": 110
2026-06-09T09:52:59.1140844Z             },
2026-06-09T09:52:59.1140936Z             {
2026-06-09T09:52:59.1141064Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-09T09:52:59.1141153Z               "line": 153
2026-06-09T09:52:59.1141243Z             },
2026-06-09T09:52:59.1141324Z             {
2026-06-09T09:52:59.1141451Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-09T09:52:59.1141637Z               "line": 182
2026-06-09T09:52:59.1141724Z             },
2026-06-09T09:52:59.1141813Z             {
2026-06-09T09:52:59.1141938Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-09T09:52:59.1142028Z               "line": 29
2026-06-09T09:52:59.1142108Z             },
2026-06-09T09:52:59.1142194Z             {
2026-06-09T09:52:59.1142343Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-09T09:52:59.1142433Z               "line": 31
2026-06-09T09:52:59.1142519Z             },
2026-06-09T09:52:59.1142601Z             {
2026-06-09T09:52:59.1142738Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-09T09:52:59.1142824Z               "line": 44
2026-06-09T09:52:59.1142911Z             },
2026-06-09T09:52:59.1143005Z             {
2026-06-09T09:52:59.1143125Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-09T09:52:59.1143221Z               "line": 171
2026-06-09T09:52:59.1143306Z             },
2026-06-09T09:52:59.1143391Z             {
2026-06-09T09:52:59.1143512Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-09T09:52:59.1143607Z               "line": 376
2026-06-09T09:52:59.1143691Z             }
2026-06-09T09:52:59.1143776Z           ]
2026-06-09T09:52:59.1143863Z         },
2026-06-09T09:52:59.1143943Z         "int": {
2026-06-09T09:52:59.1144042Z           "complete": true,
2026-06-09T09:52:59.1144132Z           "evidence": [
2026-06-09T09:52:59.1144223Z             {
2026-06-09T09:52:59.1144347Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.1144442Z               "line": 575
2026-06-09T09:52:59.1144529Z             },
2026-06-09T09:52:59.1144610Z             {
2026-06-09T09:52:59.1144732Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.1144820Z               "line": 792
2026-06-09T09:52:59.1144910Z             }
2026-06-09T09:52:59.1144999Z           ]
2026-06-09T09:52:59.1145086Z         },
2026-06-09T09:52:59.1145172Z         "unit": {
2026-06-09T09:52:59.1145262Z           "complete": true,
2026-06-09T09:52:59.1145358Z           "evidence": [
2026-06-09T09:52:59.1145444Z             {
2026-06-09T09:52:59.1145572Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-09T09:52:59.1145663Z               "line": 236
2026-06-09T09:52:59.1145740Z             },
2026-06-09T09:52:59.1145830Z             {
2026-06-09T09:52:59.1145944Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-09T09:52:59.1146035Z               "line": 349
2026-06-09T09:52:59.1146122Z             },
2026-06-09T09:52:59.1146201Z             {
2026-06-09T09:52:59.1146326Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-09T09:52:59.1146413Z               "line": 194
2026-06-09T09:52:59.1146502Z             },
2026-06-09T09:52:59.1146582Z             {
2026-06-09T09:52:59.1146696Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-09T09:52:59.1146793Z               "line": 216
2026-06-09T09:52:59.1146868Z             },
2026-06-09T09:52:59.1146967Z             {
2026-06-09T09:52:59.1147088Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-09T09:52:59.1147193Z               "line": 230
2026-06-09T09:52:59.1147273Z             },
2026-06-09T09:52:59.1147365Z             {
2026-06-09T09:52:59.1147493Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-09T09:52:59.1147583Z               "line": 242
2026-06-09T09:52:59.1147674Z             },
2026-06-09T09:52:59.1147760Z             {
2026-06-09T09:52:59.1147965Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-09T09:52:59.1148056Z               "line": 256
2026-06-09T09:52:59.1148151Z             },
2026-06-09T09:52:59.1148236Z             {
2026-06-09T09:52:59.1148366Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-09T09:52:59.1148460Z               "line": 270
2026-06-09T09:52:59.1148609Z             },
2026-06-09T09:52:59.1148695Z             {
2026-06-09T09:52:59.1148822Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-09T09:52:59.1148917Z               "line": 277
2026-06-09T09:52:59.1149078Z             },
2026-06-09T09:52:59.1149163Z             {
2026-06-09T09:52:59.1149297Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-09T09:52:59.1149393Z               "line": 295
2026-06-09T09:52:59.1149478Z             },
2026-06-09T09:52:59.1149559Z             {
2026-06-09T09:52:59.1149684Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-09T09:52:59.1149778Z               "line": 968
2026-06-09T09:52:59.1149863Z             },
2026-06-09T09:52:59.1149950Z             {
2026-06-09T09:52:59.1150074Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-09T09:52:59.1150164Z               "line": 1051
2026-06-09T09:52:59.1150237Z             },
2026-06-09T09:52:59.1150322Z             {
2026-06-09T09:52:59.1150531Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-09T09:52:59.1150618Z               "line": 1121
2026-06-09T09:52:59.1150703Z             },
2026-06-09T09:52:59.1150788Z             {
2026-06-09T09:52:59.1150923Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-09T09:52:59.1151018Z               "line": 1182
2026-06-09T09:52:59.1151103Z             },
2026-06-09T09:52:59.1151191Z             {
2026-06-09T09:52:59.1151314Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-09T09:52:59.1151409Z               "line": 1238
2026-06-09T09:52:59.1151491Z             },
2026-06-09T09:52:59.1151582Z             {
2026-06-09T09:52:59.1151713Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-09T09:52:59.1151798Z               "line": 1457
2026-06-09T09:52:59.1151884Z             }
2026-06-09T09:52:59.1151969Z           ]
2026-06-09T09:52:59.1152053Z         }
2026-06-09T09:52:59.1152135Z       }
2026-06-09T09:52:59.1152222Z     },
2026-06-09T09:52:59.1152317Z     {
2026-06-09T09:52:59.1152406Z       "id": "REQ-PAIR-2",
2026-06-09T09:52:59.1152546Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-09T09:52:59.1152641Z       "requiredStages": [],
2026-06-09T09:52:59.1152735Z       "stages": {
2026-06-09T09:52:59.1152818Z         "doc": {
2026-06-09T09:52:59.1152917Z           "complete": false,
2026-06-09T09:52:59.1153007Z           "evidence": []
2026-06-09T09:52:59.1153093Z         },
2026-06-09T09:52:59.1153185Z         "impl": {
2026-06-09T09:52:59.1153275Z           "complete": false,
2026-06-09T09:52:59.1153365Z           "evidence": []
2026-06-09T09:52:59.1153452Z         },
2026-06-09T09:52:59.1153542Z         "int": {
2026-06-09T09:52:59.1153637Z           "complete": false,
2026-06-09T09:52:59.1153723Z           "evidence": []
2026-06-09T09:52:59.1153815Z         },
2026-06-09T09:52:59.1153899Z         "unit": {
2026-06-09T09:52:59.1153990Z           "complete": false,
2026-06-09T09:52:59.1154082Z           "evidence": []
2026-06-09T09:52:59.1154177Z         }
2026-06-09T09:52:59.1154265Z       }
2026-06-09T09:52:59.1154355Z     },
2026-06-09T09:52:59.1154442Z     {
2026-06-09T09:52:59.1154531Z       "id": "REQ-PAIR-3",
2026-06-09T09:52:59.1154682Z       "title": "Fetch current pairing code from any paired node",
2026-06-09T09:52:59.1154774Z       "requiredStages": [
2026-06-09T09:52:59.1154864Z         "impl",
2026-06-09T09:52:59.1154959Z         "unit"
2026-06-09T09:52:59.1155040Z       ],
2026-06-09T09:52:59.1155131Z       "stages": {
2026-06-09T09:52:59.1155216Z         "doc": {
2026-06-09T09:52:59.1155316Z           "complete": false,
2026-06-09T09:52:59.1155517Z           "evidence": []
2026-06-09T09:52:59.1155607Z         },
2026-06-09T09:52:59.1155694Z         "impl": {
2026-06-09T09:52:59.1155793Z           "complete": true,
2026-06-09T09:52:59.1155884Z           "evidence": [
2026-06-09T09:52:59.1155970Z             {
2026-06-09T09:52:59.1156080Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1156256Z               "line": 2275
2026-06-09T09:52:59.1156343Z             },
2026-06-09T09:52:59.1156428Z             {
2026-06-09T09:52:59.1156542Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1156639Z               "line": 2344
2026-06-09T09:52:59.1156738Z             },
2026-06-09T09:52:59.1156843Z             {
2026-06-09T09:52:59.1156939Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1157039Z               "line": 2580
2026-06-09T09:52:59.1157128Z             }
2026-06-09T09:52:59.1157213Z           ]
2026-06-09T09:52:59.1157295Z         },
2026-06-09T09:52:59.1157382Z         "int": {
2026-06-09T09:52:59.1157485Z           "complete": false,
2026-06-09T09:52:59.1157576Z           "evidence": []
2026-06-09T09:52:59.1157662Z         },
2026-06-09T09:52:59.1157743Z         "unit": {
2026-06-09T09:52:59.1157838Z           "complete": true,
2026-06-09T09:52:59.1157935Z           "evidence": [
2026-06-09T09:52:59.1158015Z             {
2026-06-09T09:52:59.1158124Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1158211Z               "line": 6855
2026-06-09T09:52:59.1158301Z             },
2026-06-09T09:52:59.1158387Z             {
2026-06-09T09:52:59.1158496Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1158588Z               "line": 7070
2026-06-09T09:52:59.1158663Z             },
2026-06-09T09:52:59.1158754Z             {
2026-06-09T09:52:59.1158855Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1159025Z               "line": 7644
2026-06-09T09:52:59.1159116Z             },
2026-06-09T09:52:59.1159203Z             {
2026-06-09T09:52:59.1159311Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1159401Z               "line": 7663
2026-06-09T09:52:59.1159487Z             },
2026-06-09T09:52:59.1159568Z             {
2026-06-09T09:52:59.1159676Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1159756Z               "line": 7687
2026-06-09T09:52:59.1159842Z             },
2026-06-09T09:52:59.1159924Z             {
2026-06-09T09:52:59.1160024Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1160114Z               "line": 7706
2026-06-09T09:52:59.1160186Z             },
2026-06-09T09:52:59.1160277Z             {
2026-06-09T09:52:59.1160390Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1160477Z               "line": 7719
2026-06-09T09:52:59.1160554Z             },
2026-06-09T09:52:59.1160657Z             {
2026-06-09T09:52:59.1160763Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1160844Z               "line": 7728
2026-06-09T09:52:59.1160930Z             }
2026-06-09T09:52:59.1161010Z           ]
2026-06-09T09:52:59.1161092Z         }
2026-06-09T09:52:59.1161178Z       }
2026-06-09T09:52:59.1161258Z     },
2026-06-09T09:52:59.1161349Z     {
2026-06-09T09:52:59.1161441Z       "id": "REQ-PAIR-4",
2026-06-09T09:52:59.1161559Z       "title": "Subnet naming on first pairing",
2026-06-09T09:52:59.1161659Z       "requiredStages": [
2026-06-09T09:52:59.1161746Z         "impl",
2026-06-09T09:52:59.1161836Z         "unit"
2026-06-09T09:52:59.1161916Z       ],
2026-06-09T09:52:59.1162007Z       "stages": {
2026-06-09T09:52:59.1162090Z         "doc": {
2026-06-09T09:52:59.1162189Z           "complete": false,
2026-06-09T09:52:59.1162282Z           "evidence": []
2026-06-09T09:52:59.1162363Z         },
2026-06-09T09:52:59.1162454Z         "impl": {
2026-06-09T09:52:59.1162548Z           "complete": true,
2026-06-09T09:52:59.1162637Z           "evidence": [
2026-06-09T09:52:59.1162719Z             {
2026-06-09T09:52:59.1162947Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-09T09:52:59.1163044Z               "line": 174
2026-06-09T09:52:59.1163130Z             }
2026-06-09T09:52:59.1163220Z           ]
2026-06-09T09:52:59.1163300Z         },
2026-06-09T09:52:59.1163392Z         "int": {
2026-06-09T09:52:59.1163482Z           "complete": false,
2026-06-09T09:52:59.1163577Z           "evidence": []
2026-06-09T09:52:59.1163783Z         },
2026-06-09T09:52:59.1163864Z         "unit": {
2026-06-09T09:52:59.1163963Z           "complete": true,
2026-06-09T09:52:59.1164050Z           "evidence": [
2026-06-09T09:52:59.1164144Z             {
2026-06-09T09:52:59.1164264Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-09T09:52:59.1164360Z               "line": 1294
2026-06-09T09:52:59.1164454Z             }
2026-06-09T09:52:59.1164535Z           ]
2026-06-09T09:52:59.1164623Z         }
2026-06-09T09:52:59.1164704Z       }
2026-06-09T09:52:59.1164792Z     },
2026-06-09T09:52:59.1164878Z     {
2026-06-09T09:52:59.1164983Z       "id": "REQ-PAIR-5",
2026-06-09T09:52:59.1165290Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-09T09:52:59.1165387Z       "requiredStages": [
2026-06-09T09:52:59.1165509Z         "impl",
2026-06-09T09:52:59.1165610Z         "unit",
2026-06-09T09:52:59.1165701Z         "int"
2026-06-09T09:52:59.1165786Z       ],
2026-06-09T09:52:59.1165876Z       "stages": {
2026-06-09T09:52:59.1165964Z         "doc": {
2026-06-09T09:52:59.1166059Z           "complete": false,
2026-06-09T09:52:59.1166148Z           "evidence": []
2026-06-09T09:52:59.1166231Z         },
2026-06-09T09:52:59.1166321Z         "impl": {
2026-06-09T09:52:59.1166407Z           "complete": true,
2026-06-09T09:52:59.1166497Z           "evidence": [
2026-06-09T09:52:59.1166584Z             {
2026-06-09T09:52:59.1166707Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-09T09:52:59.1166797Z               "line": 44
2026-06-09T09:52:59.1166884Z             },
2026-06-09T09:52:59.1166974Z             {
2026-06-09T09:52:59.1167097Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-09T09:52:59.1167189Z               "line": 96
2026-06-09T09:52:59.1167275Z             },
2026-06-09T09:52:59.1167354Z             {
2026-06-09T09:52:59.1167485Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-09T09:52:59.1167576Z               "line": 107
2026-06-09T09:52:59.1167660Z             },
2026-06-09T09:52:59.1167741Z             {
2026-06-09T09:52:59.1167869Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-09T09:52:59.1167951Z               "line": 124
2026-06-09T09:52:59.1168022Z             },
2026-06-09T09:52:59.1168107Z             {
2026-06-09T09:52:59.1168227Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-09T09:52:59.1168317Z               "line": 155
2026-06-09T09:52:59.1168398Z             },
2026-06-09T09:52:59.1168490Z             {
2026-06-09T09:52:59.1168618Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-09T09:52:59.1168708Z               "line": 195
2026-06-09T09:52:59.1168794Z             },
2026-06-09T09:52:59.1168875Z             {
2026-06-09T09:52:59.1169075Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-09T09:52:59.1169163Z               "line": 251
2026-06-09T09:52:59.1169257Z             },
2026-06-09T09:52:59.1169342Z             {
2026-06-09T09:52:59.1169487Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-09T09:52:59.1169580Z               "line": 33
2026-06-09T09:52:59.1169662Z             },
2026-06-09T09:52:59.1169748Z             {
2026-06-09T09:52:59.1169885Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-09T09:52:59.1169980Z               "line": 45
2026-06-09T09:52:59.1170071Z             },
2026-06-09T09:52:59.1170152Z             {
2026-06-09T09:52:59.1170293Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-09T09:52:59.1170494Z               "line": 59
2026-06-09T09:52:59.1170584Z             },
2026-06-09T09:52:59.1170674Z             {
2026-06-09T09:52:59.1170799Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-09T09:52:59.1170894Z               "line": 376
2026-06-09T09:52:59.1170979Z             }
2026-06-09T09:52:59.1171066Z           ]
2026-06-09T09:52:59.1171237Z         },
2026-06-09T09:52:59.1173560Z         "int": {
2026-06-09T09:52:59.1173676Z           "complete": true,
2026-06-09T09:52:59.1173775Z           "evidence": [
2026-06-09T09:52:59.1173865Z             {
2026-06-09T09:52:59.1174000Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.1174099Z               "line": 792
2026-06-09T09:52:59.1174180Z             },
2026-06-09T09:52:59.1174276Z             {
2026-06-09T09:52:59.1174419Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-09T09:52:59.1174509Z               "line": 342
2026-06-09T09:52:59.1174601Z             }
2026-06-09T09:52:59.1174695Z           ]
2026-06-09T09:52:59.1174785Z         },
2026-06-09T09:52:59.1174873Z         "unit": {
2026-06-09T09:52:59.1174977Z           "complete": true,
2026-06-09T09:52:59.1175077Z           "evidence": [
2026-06-09T09:52:59.1175163Z             {
2026-06-09T09:52:59.1175292Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-09T09:52:59.1175390Z               "line": 293
2026-06-09T09:52:59.1175476Z             },
2026-06-09T09:52:59.1175562Z             {
2026-06-09T09:52:59.1175689Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-09T09:52:59.1175784Z               "line": 304
2026-06-09T09:52:59.1175870Z             },
2026-06-09T09:52:59.1175957Z             {
2026-06-09T09:52:59.1176074Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-09T09:52:59.1176170Z               "line": 406
2026-06-09T09:52:59.1176251Z             },
2026-06-09T09:52:59.1176337Z             {
2026-06-09T09:52:59.1176490Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-09T09:52:59.1176580Z               "line": 72
2026-06-09T09:52:59.1176666Z             },
2026-06-09T09:52:59.1176752Z             {
2026-06-09T09:52:59.1176895Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-09T09:52:59.1176981Z               "line": 82
2026-06-09T09:52:59.1177076Z             },
2026-06-09T09:52:59.1177158Z             {
2026-06-09T09:52:59.1177291Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-09T09:52:59.1177381Z               "line": 100
2026-06-09T09:52:59.1177463Z             },
2026-06-09T09:52:59.1177553Z             {
2026-06-09T09:52:59.1177691Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-09T09:52:59.1177788Z               "line": 110
2026-06-09T09:52:59.1177873Z             },
2026-06-09T09:52:59.1177958Z             {
2026-06-09T09:52:59.1178098Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-09T09:52:59.1178187Z               "line": 125
2026-06-09T09:52:59.1178272Z             },
2026-06-09T09:52:59.1178367Z             {
2026-06-09T09:52:59.1178502Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-09T09:52:59.1178596Z               "line": 1044
2026-06-09T09:52:59.1178677Z             },
2026-06-09T09:52:59.1178769Z             {
2026-06-09T09:52:59.1178891Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-09T09:52:59.1179093Z               "line": 1110
2026-06-09T09:52:59.1179183Z             },
2026-06-09T09:52:59.1179268Z             {
2026-06-09T09:52:59.1179393Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-09T09:52:59.1179478Z               "line": 1357
2026-06-09T09:52:59.1179563Z             }
2026-06-09T09:52:59.1179650Z           ]
2026-06-09T09:52:59.1179741Z         }
2026-06-09T09:52:59.1179826Z       }
2026-06-09T09:52:59.1179917Z     },
2026-06-09T09:52:59.1180004Z     {
2026-06-09T09:52:59.1180222Z       "id": "REQ-PAIR-6",
2026-06-09T09:52:59.1180503Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-09T09:52:59.1180597Z       "requiredStages": [
2026-06-09T09:52:59.1180689Z         "impl",
2026-06-09T09:52:59.1180777Z         "unit"
2026-06-09T09:52:59.1180858Z       ],
2026-06-09T09:52:59.1181040Z       "stages": {
2026-06-09T09:52:59.1181125Z         "doc": {
2026-06-09T09:52:59.1181219Z           "complete": false,
2026-06-09T09:52:59.1181311Z           "evidence": []
2026-06-09T09:52:59.1181397Z         },
2026-06-09T09:52:59.1181487Z         "impl": {
2026-06-09T09:52:59.1181578Z           "complete": true,
2026-06-09T09:52:59.1181669Z           "evidence": [
2026-06-09T09:52:59.1181754Z             {
2026-06-09T09:52:59.1181863Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1181955Z               "line": 2344
2026-06-09T09:52:59.1182045Z             },
2026-06-09T09:52:59.1182130Z             {
2026-06-09T09:52:59.1182241Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1182336Z               "line": 2580
2026-06-09T09:52:59.1182421Z             },
2026-06-09T09:52:59.1182507Z             {
2026-06-09T09:52:59.1182623Z               "path": "crates/spt/src/elevation.rs",
2026-06-09T09:52:59.1182717Z               "line": 18
2026-06-09T09:52:59.1182803Z             },
2026-06-09T09:52:59.1182895Z             {
2026-06-09T09:52:59.1183008Z               "path": "crates/spt/src/elevation.rs",
2026-06-09T09:52:59.1183099Z               "line": 49
2026-06-09T09:52:59.1183185Z             },
2026-06-09T09:52:59.1183276Z             {
2026-06-09T09:52:59.1183389Z               "path": "crates/spt/src/elevation.rs",
2026-06-09T09:52:59.1183489Z               "line": 163
2026-06-09T09:52:59.1183574Z             }
2026-06-09T09:52:59.1183663Z           ]
2026-06-09T09:52:59.1183743Z         },
2026-06-09T09:52:59.1183839Z         "int": {
2026-06-09T09:52:59.1183931Z           "complete": false,
2026-06-09T09:52:59.1184035Z           "evidence": []
2026-06-09T09:52:59.1184130Z         },
2026-06-09T09:52:59.1184217Z         "unit": {
2026-06-09T09:52:59.1184330Z           "complete": true,
2026-06-09T09:52:59.1184420Z           "evidence": [
2026-06-09T09:52:59.1184522Z             {
2026-06-09T09:52:59.1184636Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1184750Z               "line": 7741
2026-06-09T09:52:59.1184870Z             },
2026-06-09T09:52:59.1184965Z             {
2026-06-09T09:52:59.1185098Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1185189Z               "line": 7758
2026-06-09T09:52:59.1185303Z             },
2026-06-09T09:52:59.1185394Z             {
2026-06-09T09:52:59.1185528Z               "path": "crates/spt/src/elevation.rs",
2026-06-09T09:52:59.1185642Z               "line": 228
2026-06-09T09:52:59.1185728Z             },
2026-06-09T09:52:59.1185833Z             {
2026-06-09T09:52:59.1185950Z               "path": "crates/spt/src/elevation.rs",
2026-06-09T09:52:59.1186060Z               "line": 237
2026-06-09T09:52:59.1186146Z             }
2026-06-09T09:52:59.1186249Z           ]
2026-06-09T09:52:59.1186344Z         }
2026-06-09T09:52:59.1186434Z       }
2026-06-09T09:52:59.1186540Z     },
2026-06-09T09:52:59.1186634Z     {
2026-06-09T09:52:59.1186750Z       "id": "REQ-PAIR-7",
2026-06-09T09:52:59.1186958Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-09T09:52:59.1187069Z       "requiredStages": [],
2026-06-09T09:52:59.1187174Z       "stages": {
2026-06-09T09:52:59.1187263Z         "doc": {
2026-06-09T09:52:59.1187370Z           "complete": false,
2026-06-09T09:52:59.1187469Z           "evidence": []
2026-06-09T09:52:59.1187569Z         },
2026-06-09T09:52:59.1187660Z         "impl": {
2026-06-09T09:52:59.1187770Z           "complete": false,
2026-06-09T09:52:59.1187875Z           "evidence": []
2026-06-09T09:52:59.1187960Z         },
2026-06-09T09:52:59.1188062Z         "int": {
2026-06-09T09:52:59.1188246Z           "complete": false,
2026-06-09T09:52:59.1188357Z           "evidence": []
2026-06-09T09:52:59.1188442Z         },
2026-06-09T09:52:59.1188551Z         "unit": {
2026-06-09T09:52:59.1188658Z           "complete": false,
2026-06-09T09:52:59.1188752Z           "evidence": []
2026-06-09T09:52:59.1188856Z         }
2026-06-09T09:52:59.1189042Z       }
2026-06-09T09:52:59.1189280Z     },
2026-06-09T09:52:59.1189366Z     {
2026-06-09T09:52:59.1189480Z       "id": "REQ-PAIR-8",
2026-06-09T09:52:59.1190983Z       "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-09T09:52:59.1191091Z       "requiredStages": [
2026-06-09T09:52:59.1191225Z         "impl",
2026-06-09T09:52:59.1191323Z         "unit"
2026-06-09T09:52:59.1191423Z       ],
2026-06-09T09:52:59.1191527Z       "stages": {
2026-06-09T09:52:59.1191614Z         "doc": {
2026-06-09T09:52:59.1191732Z           "complete": false,
2026-06-09T09:52:59.1191828Z           "evidence": []
2026-06-09T09:52:59.1191919Z         },
2026-06-09T09:52:59.1192032Z         "impl": {
2026-06-09T09:52:59.1192143Z           "complete": true,
2026-06-09T09:52:59.1192257Z           "evidence": [
2026-06-09T09:52:59.1192347Z             {
2026-06-09T09:52:59.1192496Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-09T09:52:59.1192591Z               "line": 577
2026-06-09T09:52:59.1192690Z             },
2026-06-09T09:52:59.1192782Z             {
2026-06-09T09:52:59.1192929Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-09T09:52:59.1193034Z               "line": 22
2026-06-09T09:52:59.1193121Z             },
2026-06-09T09:52:59.1193220Z             {
2026-06-09T09:52:59.1193358Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-09T09:52:59.1193465Z               "line": 76
2026-06-09T09:52:59.1193554Z             },
2026-06-09T09:52:59.1193654Z             {
2026-06-09T09:52:59.1193799Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-09T09:52:59.1193892Z               "line": 127
2026-06-09T09:52:59.1194000Z             }
2026-06-09T09:52:59.1194092Z           ]
2026-06-09T09:52:59.1194190Z         },
2026-06-09T09:52:59.1194285Z         "int": {
2026-06-09T09:52:59.1194404Z           "complete": false,
2026-06-09T09:52:59.1194510Z           "evidence": []
2026-06-09T09:52:59.1194599Z         },
2026-06-09T09:52:59.1194690Z         "unit": {
2026-06-09T09:52:59.1194777Z           "complete": true,
2026-06-09T09:52:59.1194872Z           "evidence": [
2026-06-09T09:52:59.1194943Z             {
2026-06-09T09:52:59.1195096Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-09T09:52:59.1195243Z               "line": 183
2026-06-09T09:52:59.1195330Z             },
2026-06-09T09:52:59.1195425Z             {
2026-06-09T09:52:59.1195548Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-09T09:52:59.1195649Z               "line": 195
2026-06-09T09:52:59.1195744Z             },
2026-06-09T09:52:59.1195834Z             {
2026-06-09T09:52:59.1195973Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-09T09:52:59.1196069Z               "line": 211
2026-06-09T09:52:59.1196168Z             },
2026-06-09T09:52:59.1196259Z             {
2026-06-09T09:52:59.1196393Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-09T09:52:59.1196497Z               "line": 227
2026-06-09T09:52:59.1196587Z             }
2026-06-09T09:52:59.1196682Z           ]
2026-06-09T09:52:59.1196771Z         }
2026-06-09T09:52:59.1196870Z       }
2026-06-09T09:52:59.1196952Z     },
2026-06-09T09:52:59.1197053Z     {
2026-06-09T09:52:59.1197161Z       "id": "REQ-PRES-1",
2026-06-09T09:52:59.1198678Z       "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-09T09:52:59.1198913Z       "requiredStages": [
2026-06-09T09:52:59.1199088Z         "impl",
2026-06-09T09:52:59.1199189Z         "unit",
2026-06-09T09:52:59.1199280Z         "int"
2026-06-09T09:52:59.1199364Z       ],
2026-06-09T09:52:59.1199468Z       "stages": {
2026-06-09T09:52:59.1199554Z         "doc": {
2026-06-09T09:52:59.1199665Z           "complete": true,
2026-06-09T09:52:59.1199744Z           "evidence": [
2026-06-09T09:52:59.1199846Z             {
2026-06-09T09:52:59.1199970Z               "path": "docs/DEFERRED.md",
2026-06-09T09:52:59.1200073Z               "line": 11
2026-06-09T09:52:59.1200170Z             }
2026-06-09T09:52:59.1200265Z           ]
2026-06-09T09:52:59.1200378Z         },
2026-06-09T09:52:59.1200465Z         "impl": {
2026-06-09T09:52:59.1200561Z           "complete": true,
2026-06-09T09:52:59.1200665Z           "evidence": [
2026-06-09T09:52:59.1200760Z             {
2026-06-09T09:52:59.1200961Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-09T09:52:59.1201056Z               "line": 515
2026-06-09T09:52:59.1201148Z             },
2026-06-09T09:52:59.1201237Z             {
2026-06-09T09:52:59.1201386Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-09T09:52:59.1201482Z               "line": 567
2026-06-09T09:52:59.1201571Z             },
2026-06-09T09:52:59.1201670Z             {
2026-06-09T09:52:59.1201799Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-09T09:52:59.1201897Z               "line": 181
2026-06-09T09:52:59.1201983Z             },
2026-06-09T09:52:59.1202083Z             {
2026-06-09T09:52:59.1202212Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-09T09:52:59.1202307Z               "line": 207
2026-06-09T09:52:59.1202407Z             },
2026-06-09T09:52:59.1202493Z             {
2026-06-09T09:52:59.1202626Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-09T09:52:59.1202717Z               "line": 28
2026-06-09T09:52:59.1202817Z             },
2026-06-09T09:52:59.1202912Z             {
2026-06-09T09:52:59.1203032Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-09T09:52:59.1203132Z               "line": 105
2026-06-09T09:52:59.1203217Z             },
2026-06-09T09:52:59.1203317Z             {
2026-06-09T09:52:59.1203437Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-09T09:52:59.1203537Z               "line": 161
2026-06-09T09:52:59.1203637Z             },
2026-06-09T09:52:59.1203724Z             {
2026-06-09T09:52:59.1203852Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-09T09:52:59.1203947Z               "line": 180
2026-06-09T09:52:59.1204049Z             },
2026-06-09T09:52:59.1204137Z             {
2026-06-09T09:52:59.1204282Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.1204382Z               "line": 399
2026-06-09T09:52:59.1204471Z             },
2026-06-09T09:52:59.1204565Z             {
2026-06-09T09:52:59.1204695Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-09T09:52:59.1204792Z               "line": 289
2026-06-09T09:52:59.1204883Z             },
2026-06-09T09:52:59.1204964Z             {
2026-06-09T09:52:59.1205098Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-09T09:52:59.1205183Z               "line": 336
2026-06-09T09:52:59.1205279Z             },
2026-06-09T09:52:59.1205365Z             {
2026-06-09T09:52:59.1205503Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-09T09:52:59.1205599Z               "line": 362
2026-06-09T09:52:59.1205680Z             },
2026-06-09T09:52:59.1205904Z             {
2026-06-09T09:52:59.1206023Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.1206113Z               "line": 100
2026-06-09T09:52:59.1206194Z             }
2026-06-09T09:52:59.1206281Z           ]
2026-06-09T09:52:59.1206371Z         },
2026-06-09T09:52:59.1206442Z         "int": {
2026-06-09T09:52:59.1206657Z           "complete": true,
2026-06-09T09:52:59.1206772Z           "evidence": [
2026-06-09T09:52:59.1206858Z             {
2026-06-09T09:52:59.1206986Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-09T09:52:59.1207085Z               "line": 557
2026-06-09T09:52:59.1207180Z             },
2026-06-09T09:52:59.1207266Z             {
2026-06-09T09:52:59.1207393Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.1207483Z               "line": 677
2026-06-09T09:52:59.1207574Z             },
2026-06-09T09:52:59.1207660Z             {
2026-06-09T09:52:59.1207798Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.1207894Z               "line": 1070
2026-06-09T09:52:59.1207980Z             }
2026-06-09T09:52:59.1208078Z           ]
2026-06-09T09:52:59.1208166Z         },
2026-06-09T09:52:59.1208275Z         "unit": {
2026-06-09T09:52:59.1208398Z           "complete": true,
2026-06-09T09:52:59.1208509Z           "evidence": [
2026-06-09T09:52:59.1208609Z             {
2026-06-09T09:52:59.1208737Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-09T09:52:59.1208838Z               "line": 601
2026-06-09T09:52:59.1208923Z             },
2026-06-09T09:52:59.1209090Z             {
2026-06-09T09:52:59.1209205Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-09T09:52:59.1209295Z               "line": 237
2026-06-09T09:52:59.1209391Z             },
2026-06-09T09:52:59.1209477Z             {
2026-06-09T09:52:59.1209648Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-09T09:52:59.1209735Z               "line": 268
2026-06-09T09:52:59.1209830Z             },
2026-06-09T09:52:59.1209914Z             {
2026-06-09T09:52:59.1210033Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-09T09:52:59.1210129Z               "line": 304
2026-06-09T09:52:59.1210215Z             },
2026-06-09T09:52:59.1210304Z             {
2026-06-09T09:52:59.1210420Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-09T09:52:59.1210525Z               "line": 335
2026-06-09T09:52:59.1210619Z             },
2026-06-09T09:52:59.1210701Z             {
2026-06-09T09:52:59.1210834Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.1210925Z               "line": 1135
2026-06-09T09:52:59.1211015Z             },
2026-06-09T09:52:59.1211097Z             {
2026-06-09T09:52:59.1211212Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.1211311Z               "line": 1112
2026-06-09T09:52:59.1211398Z             }
2026-06-09T09:52:59.1211487Z           ]
2026-06-09T09:52:59.1211573Z         }
2026-06-09T09:52:59.1211670Z       }
2026-06-09T09:52:59.1211765Z     },
2026-06-09T09:52:59.1211869Z     {
2026-06-09T09:52:59.1211964Z       "id": "REQ-REACH-1",
2026-06-09T09:52:59.1212126Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-09T09:52:59.1212231Z       "requiredStages": [
2026-06-09T09:52:59.1212321Z         "impl",
2026-06-09T09:52:59.1212421Z         "unit",
2026-06-09T09:52:59.1212509Z         "int"
2026-06-09T09:52:59.1212614Z       ],
2026-06-09T09:52:59.1212720Z       "stages": {
2026-06-09T09:52:59.1212810Z         "doc": {
2026-06-09T09:52:59.1212929Z           "complete": false,
2026-06-09T09:52:59.1213025Z           "evidence": []
2026-06-09T09:52:59.1213125Z         },
2026-06-09T09:52:59.1213215Z         "impl": {
2026-06-09T09:52:59.1213326Z           "complete": true,
2026-06-09T09:52:59.1213416Z           "evidence": [
2026-06-09T09:52:59.1213520Z             {
2026-06-09T09:52:59.1213750Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-09T09:52:59.1213839Z               "line": 140
2026-06-09T09:52:59.1213931Z             },
2026-06-09T09:52:59.1214016Z             {
2026-06-09T09:52:59.1214140Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-09T09:52:59.1214236Z               "line": 76
2026-06-09T09:52:59.1214317Z             },
2026-06-09T09:52:59.1214412Z             {
2026-06-09T09:52:59.1214618Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-09T09:52:59.1214712Z               "line": 222
2026-06-09T09:52:59.1214798Z             },
2026-06-09T09:52:59.1214885Z             {
2026-06-09T09:52:59.1215003Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-09T09:52:59.1215093Z               "line": 422
2026-06-09T09:52:59.1215184Z             },
2026-06-09T09:52:59.1215269Z             {
2026-06-09T09:52:59.1215381Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-09T09:52:59.1215476Z               "line": 529
2026-06-09T09:52:59.1215568Z             },
2026-06-09T09:52:59.1215658Z             {
2026-06-09T09:52:59.1215776Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-09T09:52:59.1215874Z               "line": 39
2026-06-09T09:52:59.1215954Z             },
2026-06-09T09:52:59.1216048Z             {
2026-06-09T09:52:59.1216149Z               "path": "crates/spt-store/src/info.rs",
2026-06-09T09:52:59.1216240Z               "line": 229
2026-06-09T09:52:59.1216344Z             },
2026-06-09T09:52:59.1216440Z             {
2026-06-09T09:52:59.1216573Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-09T09:52:59.1216664Z               "line": 88
2026-06-09T09:52:59.1216754Z             },
2026-06-09T09:52:59.1216842Z             {
2026-06-09T09:52:59.1216964Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-09T09:52:59.1217064Z               "line": 98
2026-06-09T09:52:59.1217156Z             },
2026-06-09T09:52:59.1217259Z             {
2026-06-09T09:52:59.1217389Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:59.1217504Z               "line": 210
2026-06-09T09:52:59.1217593Z             }
2026-06-09T09:52:59.1217702Z           ]
2026-06-09T09:52:59.1217798Z         },
2026-06-09T09:52:59.1217891Z         "int": {
2026-06-09T09:52:59.1218004Z           "complete": true,
2026-06-09T09:52:59.1218101Z           "evidence": [
2026-06-09T09:52:59.1218192Z             {
2026-06-09T09:52:59.1218324Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-09T09:52:59.1218421Z               "line": 415
2026-06-09T09:52:59.1218511Z             },
2026-06-09T09:52:59.1218596Z             {
2026-06-09T09:52:59.1218721Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-09T09:52:59.1218811Z               "line": 514
2026-06-09T09:52:59.1218902Z             },
2026-06-09T09:52:59.1219070Z             {
2026-06-09T09:52:59.1219202Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.1219302Z               "line": 903
2026-06-09T09:52:59.1219385Z             },
2026-06-09T09:52:59.1219479Z             {
2026-06-09T09:52:59.1219598Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.1219695Z               "line": 1198
2026-06-09T09:52:59.1219779Z             }
2026-06-09T09:52:59.1219865Z           ]
2026-06-09T09:52:59.1219951Z         },
2026-06-09T09:52:59.1220038Z         "unit": {
2026-06-09T09:52:59.1220136Z           "complete": true,
2026-06-09T09:52:59.1220223Z           "evidence": [
2026-06-09T09:52:59.1220309Z             {
2026-06-09T09:52:59.1220423Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-09T09:52:59.1220512Z               "line": 639
2026-06-09T09:52:59.1220593Z             },
2026-06-09T09:52:59.1220679Z             {
2026-06-09T09:52:59.1220785Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-09T09:52:59.1220869Z               "line": 660
2026-06-09T09:52:59.1220966Z             },
2026-06-09T09:52:59.1221066Z             {
2026-06-09T09:52:59.1221304Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-09T09:52:59.1221414Z               "line": 391
2026-06-09T09:52:59.1221504Z             },
2026-06-09T09:52:59.1221605Z             {
2026-06-09T09:52:59.1221728Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-09T09:52:59.1221832Z               "line": 93
2026-06-09T09:52:59.1221944Z             },
2026-06-09T09:52:59.1222129Z             {
2026-06-09T09:52:59.1222263Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-09T09:52:59.1222363Z               "line": 224
2026-06-09T09:52:59.1222462Z             },
2026-06-09T09:52:59.1222554Z             {
2026-06-09T09:52:59.1222691Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-09T09:52:59.1222781Z               "line": 96
2026-06-09T09:52:59.1222867Z             },
2026-06-09T09:52:59.1222962Z             {
2026-06-09T09:52:59.1223074Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-09T09:52:59.1223169Z               "line": 146
2026-06-09T09:52:59.1223256Z             },
2026-06-09T09:52:59.1223346Z             {
2026-06-09T09:52:59.1223465Z               "path": "crates/spt-store/src/info.rs",
2026-06-09T09:52:59.1223551Z               "line": 502
2026-06-09T09:52:59.1223637Z             },
2026-06-09T09:52:59.1223722Z             {
2026-06-09T09:52:59.1223838Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-09T09:52:59.1223928Z               "line": 118
2026-06-09T09:52:59.1224018Z             },
2026-06-09T09:52:59.1224109Z             {
2026-06-09T09:52:59.1224224Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-09T09:52:59.1224319Z               "line": 148
2026-06-09T09:52:59.1224404Z             },
2026-06-09T09:52:59.1224496Z             {
2026-06-09T09:52:59.1224614Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:59.1224709Z               "line": 602
2026-06-09T09:52:59.1224797Z             }
2026-06-09T09:52:59.1224887Z           ]
2026-06-09T09:52:59.1224972Z         }
2026-06-09T09:52:59.1225053Z       }
2026-06-09T09:52:59.1225140Z     },
2026-06-09T09:52:59.1225221Z     {
2026-06-09T09:52:59.1225306Z       "id": "REQ-REACH-2",
2026-06-09T09:52:59.1225474Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-09T09:52:59.1225577Z       "requiredStages": [],
2026-06-09T09:52:59.1225672Z       "stages": {
2026-06-09T09:52:59.1225758Z         "doc": {
2026-06-09T09:52:59.1225862Z           "complete": false,
2026-06-09T09:52:59.1225951Z           "evidence": []
2026-06-09T09:52:59.1226066Z         },
2026-06-09T09:52:59.1226180Z         "impl": {
2026-06-09T09:52:59.1226265Z           "complete": false,
2026-06-09T09:52:59.1226365Z           "evidence": []
2026-06-09T09:52:59.1226476Z         },
2026-06-09T09:52:59.1226585Z         "int": {
2026-06-09T09:52:59.1226690Z           "complete": false,
2026-06-09T09:52:59.1226795Z           "evidence": []
2026-06-09T09:52:59.1226923Z         },
2026-06-09T09:52:59.1227014Z         "unit": {
2026-06-09T09:52:59.1227120Z           "complete": false,
2026-06-09T09:52:59.1227214Z           "evidence": []
2026-06-09T09:52:59.1227319Z         }
2026-06-09T09:52:59.1227407Z       }
2026-06-09T09:52:59.1227505Z     },
2026-06-09T09:52:59.1227596Z     {
2026-06-09T09:52:59.1227683Z       "id": "REQ-REL-1",
2026-06-09T09:52:59.1228064Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-09T09:52:59.1228168Z       "requiredStages": [
2026-06-09T09:52:59.1228257Z         "doc",
2026-06-09T09:52:59.1228344Z         "impl"
2026-06-09T09:52:59.1228437Z       ],
2026-06-09T09:52:59.1228527Z       "stages": {
2026-06-09T09:52:59.1228608Z         "doc": {
2026-06-09T09:52:59.1228709Z           "complete": true,
2026-06-09T09:52:59.1228799Z           "evidence": [
2026-06-09T09:52:59.1228884Z             {
2026-06-09T09:52:59.1229185Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-09T09:52:59.1229405Z               "line": 3
2026-06-09T09:52:59.1229500Z             }
2026-06-09T09:52:59.1229581Z           ]
2026-06-09T09:52:59.1229681Z         },
2026-06-09T09:52:59.1229762Z         "impl": {
2026-06-09T09:52:59.1229848Z           "complete": true,
2026-06-09T09:52:59.1229935Z           "evidence": [
2026-06-09T09:52:59.1230029Z             {
2026-06-09T09:52:59.1230292Z               "path": ".github/workflows/docs-publish.yml",
2026-06-09T09:52:59.1230382Z               "line": 11
2026-06-09T09:52:59.1230482Z             },
2026-06-09T09:52:59.1230569Z             {
2026-06-09T09:52:59.1230701Z               "path": "crates/xtask/src/main.rs",
2026-06-09T09:52:59.1230792Z               "line": 265
2026-06-09T09:52:59.1230889Z             }
2026-06-09T09:52:59.1230992Z           ]
2026-06-09T09:52:59.1231073Z         },
2026-06-09T09:52:59.1231172Z         "int": {
2026-06-09T09:52:59.1231274Z           "complete": false,
2026-06-09T09:52:59.1231368Z           "evidence": []
2026-06-09T09:52:59.1231458Z         },
2026-06-09T09:52:59.1231569Z         "unit": {
2026-06-09T09:52:59.1231716Z           "complete": false,
2026-06-09T09:52:59.1231811Z           "evidence": []
2026-06-09T09:52:59.1231903Z         }
2026-06-09T09:52:59.1231984Z       }
2026-06-09T09:52:59.1232069Z     },
2026-06-09T09:52:59.1232145Z     {
2026-06-09T09:52:59.1232246Z       "id": "REQ-REL-2",
2026-06-09T09:52:59.1232731Z       "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-09T09:52:59.1232824Z       "requiredStages": [
2026-06-09T09:52:59.1232918Z         "impl",
2026-06-09T09:52:59.1232999Z         "int"
2026-06-09T09:52:59.1233090Z       ],
2026-06-09T09:52:59.1233181Z       "stages": {
2026-06-09T09:52:59.1233266Z         "doc": {
2026-06-09T09:52:59.1233365Z           "complete": true,
2026-06-09T09:52:59.1233456Z           "evidence": [
2026-06-09T09:52:59.1233545Z             {
2026-06-09T09:52:59.1233658Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-09T09:52:59.1233754Z               "line": 6
2026-06-09T09:52:59.1233849Z             }
2026-06-09T09:52:59.1233930Z           ]
2026-06-09T09:52:59.1234020Z         },
2026-06-09T09:52:59.1234102Z         "impl": {
2026-06-09T09:52:59.1234197Z           "complete": true,
2026-06-09T09:52:59.1234283Z           "evidence": [
2026-06-09T09:52:59.1234368Z             {
2026-06-09T09:52:59.1234498Z               "path": ".github/workflows/release.yml",
2026-06-09T09:52:59.1234588Z               "line": 16
2026-06-09T09:52:59.1234693Z             },
2026-06-09T09:52:59.1234780Z             {
2026-06-09T09:52:59.1234898Z               "path": "crates/xtask/src/main.rs",
2026-06-09T09:52:59.1234989Z               "line": 352
2026-06-09T09:52:59.1235094Z             },
2026-06-09T09:52:59.1235189Z             {
2026-06-09T09:52:59.1235303Z               "path": "crates/xtask/src/main.rs",
2026-06-09T09:52:59.1235409Z               "line": 426
2026-06-09T09:52:59.1235498Z             },
2026-06-09T09:52:59.1235603Z             {
2026-06-09T09:52:59.1235710Z               "path": "crates/xtask/src/main.rs",
2026-06-09T09:52:59.1235813Z               "line": 588
2026-06-09T09:52:59.1235923Z             },
2026-06-09T09:52:59.1236015Z             {
2026-06-09T09:52:59.1236138Z               "path": "crates/xtask/src/main.rs",
2026-06-09T09:52:59.1236237Z               "line": 720
2026-06-09T09:52:59.1236323Z             }
2026-06-09T09:52:59.1236403Z           ]
2026-06-09T09:52:59.1236483Z         },
2026-06-09T09:52:59.1236578Z         "int": {
2026-06-09T09:52:59.1236668Z           "complete": true,
2026-06-09T09:52:59.1236765Z           "evidence": [
2026-06-09T09:52:59.1236849Z             {
2026-06-09T09:52:59.1236984Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-09T09:52:59.1237074Z               "line": 13
2026-06-09T09:52:59.1237164Z             }
2026-06-09T09:52:59.1237255Z           ]
2026-06-09T09:52:59.1237418Z         },
2026-06-09T09:52:59.1237512Z         "unit": {
2026-06-09T09:52:59.1237603Z           "complete": false,
2026-06-09T09:52:59.1237694Z           "evidence": []
2026-06-09T09:52:59.1237779Z         }
2026-06-09T09:52:59.1237870Z       }
2026-06-09T09:52:59.1237962Z     },
2026-06-09T09:52:59.1238041Z     {
2026-06-09T09:52:59.1238137Z       "id": "REQ-REL-3",
2026-06-09T09:52:59.1238643Z       "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-09T09:52:59.1238746Z       "requiredStages": [
2026-06-09T09:52:59.1238831Z         "impl",
2026-06-09T09:52:59.1238913Z         "unit"
2026-06-09T09:52:59.1239087Z       ],
2026-06-09T09:52:59.1239183Z       "stages": {
2026-06-09T09:52:59.1239288Z         "doc": {
2026-06-09T09:52:59.1239388Z           "complete": false,
2026-06-09T09:52:59.1239483Z           "evidence": []
2026-06-09T09:52:59.1239565Z         },
2026-06-09T09:52:59.1239660Z         "impl": {
2026-06-09T09:52:59.1239750Z           "complete": true,
2026-06-09T09:52:59.1239841Z           "evidence": [
2026-06-09T09:52:59.1239927Z             {
2026-06-09T09:52:59.1240050Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1240142Z               "line": 237
2026-06-09T09:52:59.1240223Z             },
2026-06-09T09:52:59.1240313Z             {
2026-06-09T09:52:59.1240436Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1240524Z               "line": 289
2026-06-09T09:52:59.1240608Z             },
2026-06-09T09:52:59.1240689Z             {
2026-06-09T09:52:59.1240800Z               "path": "crates/xtask/src/main.rs",
2026-06-09T09:52:59.1240885Z               "line": 329
2026-06-09T09:52:59.1240975Z             },
2026-06-09T09:52:59.1241061Z             {
2026-06-09T09:52:59.1241163Z               "path": "crates/xtask/src/main.rs",
2026-06-09T09:52:59.1241256Z               "line": 353
2026-06-09T09:52:59.1241343Z             },
2026-06-09T09:52:59.1241425Z             {
2026-06-09T09:52:59.1241529Z               "path": "crates/xtask/src/main.rs",
2026-06-09T09:52:59.1241618Z               "line": 394
2026-06-09T09:52:59.1241708Z             }
2026-06-09T09:52:59.1241790Z           ]
2026-06-09T09:52:59.1241872Z         },
2026-06-09T09:52:59.1241957Z         "int": {
2026-06-09T09:52:59.1242062Z           "complete": false,
2026-06-09T09:52:59.1242148Z           "evidence": []
2026-06-09T09:52:59.1242238Z         },
2026-06-09T09:52:59.1242323Z         "unit": {
2026-06-09T09:52:59.1242411Z           "complete": true,
2026-06-09T09:52:59.1242506Z           "evidence": [
2026-06-09T09:52:59.1242595Z             {
2026-06-09T09:52:59.1242715Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1242801Z               "line": 992
2026-06-09T09:52:59.1242892Z             },
2026-06-09T09:52:59.1242981Z             {
2026-06-09T09:52:59.1243097Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1243196Z               "line": 1051
2026-06-09T09:52:59.1243277Z             }
2026-06-09T09:52:59.1243365Z           ]
2026-06-09T09:52:59.1243445Z         }
2026-06-09T09:52:59.1243534Z       }
2026-06-09T09:52:59.1243621Z     },
2026-06-09T09:52:59.1243703Z     {
2026-06-09T09:52:59.1243821Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-09T09:52:59.1244006Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-09T09:52:59.1244110Z       "requiredStages": [
2026-06-09T09:52:59.1244194Z         "impl",
2026-06-09T09:52:59.1246580Z         "unit"
2026-06-09T09:52:59.1246670Z       ],
2026-06-09T09:52:59.1246754Z       "stages": {
2026-06-09T09:52:59.1246844Z         "doc": {
2026-06-09T09:52:59.1246940Z           "complete": false,
2026-06-09T09:52:59.1247038Z           "evidence": []
2026-06-09T09:52:59.1247123Z         },
2026-06-09T09:52:59.1247214Z         "impl": {
2026-06-09T09:52:59.1247315Z           "complete": true,
2026-06-09T09:52:59.1247568Z           "evidence": [
2026-06-09T09:52:59.1247659Z             {
2026-06-09T09:52:59.1247791Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-09T09:52:59.1247887Z               "line": 18
2026-06-09T09:52:59.1247968Z             },
2026-06-09T09:52:59.1248062Z             {
2026-06-09T09:52:59.1248188Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-09T09:52:59.1248368Z               "line": 35
2026-06-09T09:52:59.1248454Z             },
2026-06-09T09:52:59.1248531Z             {
2026-06-09T09:52:59.1248649Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-09T09:52:59.1248735Z               "line": 72
2026-06-09T09:52:59.1248822Z             }
2026-06-09T09:52:59.1248907Z           ]
2026-06-09T09:52:59.1249094Z         },
2026-06-09T09:52:59.1249185Z         "int": {
2026-06-09T09:52:59.1249288Z           "complete": false,
2026-06-09T09:52:59.1249391Z           "evidence": []
2026-06-09T09:52:59.1249473Z         },
2026-06-09T09:52:59.1249563Z         "unit": {
2026-06-09T09:52:59.1249652Z           "complete": true,
2026-06-09T09:52:59.1249738Z           "evidence": [
2026-06-09T09:52:59.1249820Z             {
2026-06-09T09:52:59.1249929Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-09T09:52:59.1250019Z               "line": 214
2026-06-09T09:52:59.1250106Z             },
2026-06-09T09:52:59.1250196Z             {
2026-06-09T09:52:59.1250305Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-09T09:52:59.1250387Z               "line": 231
2026-06-09T09:52:59.1250468Z             },
2026-06-09T09:52:59.1250549Z             {
2026-06-09T09:52:59.1250663Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-09T09:52:59.1250750Z               "line": 240
2026-06-09T09:52:59.1250830Z             }
2026-06-09T09:52:59.1250911Z           ]
2026-06-09T09:52:59.1250982Z         }
2026-06-09T09:52:59.1251070Z       }
2026-06-09T09:52:59.1251149Z     },
2026-06-09T09:52:59.1251230Z     {
2026-06-09T09:52:59.1251336Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-09T09:52:59.1251502Z       "title": "Hostable endpoint-types capability declaration",
2026-06-09T09:52:59.1251593Z       "requiredStages": [
2026-06-09T09:52:59.1251675Z         "impl",
2026-06-09T09:52:59.1251760Z         "unit"
2026-06-09T09:52:59.1251840Z       ],
2026-06-09T09:52:59.1251927Z       "stages": {
2026-06-09T09:52:59.1252014Z         "doc": {
2026-06-09T09:52:59.1252112Z           "complete": false,
2026-06-09T09:52:59.1252207Z           "evidence": []
2026-06-09T09:52:59.1252288Z         },
2026-06-09T09:52:59.1252374Z         "impl": {
2026-06-09T09:52:59.1252460Z           "complete": true,
2026-06-09T09:52:59.1252545Z           "evidence": [
2026-06-09T09:52:59.1252641Z             {
2026-06-09T09:52:59.1252803Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:59.1252893Z               "line": 404
2026-06-09T09:52:59.1252976Z             }
2026-06-09T09:52:59.1253061Z           ]
2026-06-09T09:52:59.1253155Z         },
2026-06-09T09:52:59.1253252Z         "int": {
2026-06-09T09:52:59.1253338Z           "complete": false,
2026-06-09T09:52:59.1253432Z           "evidence": []
2026-06-09T09:52:59.1253541Z         },
2026-06-09T09:52:59.1253625Z         "unit": {
2026-06-09T09:52:59.1253714Z           "complete": true,
2026-06-09T09:52:59.1253799Z           "evidence": [
2026-06-09T09:52:59.1253891Z             {
2026-06-09T09:52:59.1254000Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:59.1254095Z               "line": 641
2026-06-09T09:52:59.1254181Z             }
2026-06-09T09:52:59.1254259Z           ]
2026-06-09T09:52:59.1254348Z         }
2026-06-09T09:52:59.1254424Z       }
2026-06-09T09:52:59.1254509Z     },
2026-06-09T09:52:59.1254590Z     {
2026-06-09T09:52:59.1254693Z       "id": "REQ-SEAM-HISTORY",
2026-06-09T09:52:59.1254874Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-09T09:52:59.1254965Z       "requiredStages": [
2026-06-09T09:52:59.1255155Z         "impl",
2026-06-09T09:52:59.1255246Z         "unit",
2026-06-09T09:52:59.1255332Z         "int"
2026-06-09T09:52:59.1255417Z       ],
2026-06-09T09:52:59.1255498Z       "stages": {
2026-06-09T09:52:59.1255585Z         "doc": {
2026-06-09T09:52:59.1255675Z           "complete": false,
2026-06-09T09:52:59.1255769Z           "evidence": []
2026-06-09T09:52:59.1255848Z         },
2026-06-09T09:52:59.1257006Z         "impl": {
2026-06-09T09:52:59.1257092Z           "complete": true,
2026-06-09T09:52:59.1257183Z           "evidence": [
2026-06-09T09:52:59.1257267Z             {
2026-06-09T09:52:59.1257381Z               "path": "crates/spt-live/src/echo.rs",
2026-06-09T09:52:59.1257467Z               "line": 24
2026-06-09T09:52:59.1257547Z             },
2026-06-09T09:52:59.1257631Z             {
2026-06-09T09:52:59.1257741Z               "path": "crates/spt-live/src/history.rs",
2026-06-09T09:52:59.1257837Z               "line": 22
2026-06-09T09:52:59.1257918Z             }
2026-06-09T09:52:59.1257998Z           ]
2026-06-09T09:52:59.1258090Z         },
2026-06-09T09:52:59.1258171Z         "int": {
2026-06-09T09:52:59.1258265Z           "complete": true,
2026-06-09T09:52:59.1258346Z           "evidence": [
2026-06-09T09:52:59.1258428Z             {
2026-06-09T09:52:59.1258552Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-09T09:52:59.1258641Z               "line": 256
2026-06-09T09:52:59.1258729Z             }
2026-06-09T09:52:59.1258810Z           ]
2026-06-09T09:52:59.1258895Z         },
2026-06-09T09:52:59.1259044Z         "unit": {
2026-06-09T09:52:59.1259129Z           "complete": true,
2026-06-09T09:52:59.1259229Z           "evidence": [
2026-06-09T09:52:59.1259310Z             {
2026-06-09T09:52:59.1259420Z               "path": "crates/spt-live/src/echo.rs",
2026-06-09T09:52:59.1259505Z               "line": 167
2026-06-09T09:52:59.1259591Z             },
2026-06-09T09:52:59.1259674Z             {
2026-06-09T09:52:59.1259783Z               "path": "crates/spt-live/src/echo.rs",
2026-06-09T09:52:59.1259876Z               "line": 196
2026-06-09T09:52:59.1259956Z             },
2026-06-09T09:52:59.1260043Z             {
2026-06-09T09:52:59.1260146Z               "path": "crates/spt-live/src/echo.rs",
2026-06-09T09:52:59.1260236Z               "line": 216
2026-06-09T09:52:59.1260318Z             },
2026-06-09T09:52:59.1260403Z             {
2026-06-09T09:52:59.1260522Z               "path": "crates/spt-live/src/history.rs",
2026-06-09T09:52:59.1260613Z               "line": 199
2026-06-09T09:52:59.1260700Z             },
2026-06-09T09:52:59.1260776Z             {
2026-06-09T09:52:59.1260894Z               "path": "crates/spt-live/src/history.rs",
2026-06-09T09:52:59.1260986Z               "line": 219
2026-06-09T09:52:59.1261066Z             },
2026-06-09T09:52:59.1261151Z             {
2026-06-09T09:52:59.1261262Z               "path": "crates/spt-live/src/history.rs",
2026-06-09T09:52:59.1261353Z               "line": 244
2026-06-09T09:52:59.1261433Z             },
2026-06-09T09:52:59.1261523Z             {
2026-06-09T09:52:59.1261639Z               "path": "crates/spt-live/src/history.rs",
2026-06-09T09:52:59.1261723Z               "line": 269
2026-06-09T09:52:59.1261809Z             },
2026-06-09T09:52:59.1261891Z             {
2026-06-09T09:52:59.1262006Z               "path": "crates/spt-live/src/history.rs",
2026-06-09T09:52:59.1262091Z               "line": 290
2026-06-09T09:52:59.1262182Z             },
2026-06-09T09:52:59.1262269Z             {
2026-06-09T09:52:59.1262376Z               "path": "crates/spt-live/src/history.rs",
2026-06-09T09:52:59.1262472Z               "line": 317
2026-06-09T09:52:59.1262550Z             }
2026-06-09T09:52:59.1262636Z           ]
2026-06-09T09:52:59.1262714Z         }
2026-06-09T09:52:59.1262800Z       }
2026-06-09T09:52:59.1262886Z     },
2026-06-09T09:52:59.1262968Z     {
2026-06-09T09:52:59.1263067Z       "id": "REQ-SEAM-INJECT",
2026-06-09T09:52:59.1263230Z       "title": "inject-input methods configurable per activity-state",
2026-06-09T09:52:59.1263472Z       "requiredStages": [
2026-06-09T09:52:59.1263560Z         "impl",
2026-06-09T09:52:59.1263645Z         "unit"
2026-06-09T09:52:59.1263730Z       ],
2026-06-09T09:52:59.1263816Z       "stages": {
2026-06-09T09:52:59.1263903Z         "doc": {
2026-06-09T09:52:59.1263997Z           "complete": false,
2026-06-09T09:52:59.1264088Z           "evidence": []
2026-06-09T09:52:59.1264260Z         },
2026-06-09T09:52:59.1264350Z         "impl": {
2026-06-09T09:52:59.1264441Z           "complete": true,
2026-06-09T09:52:59.1264528Z           "evidence": [
2026-06-09T09:52:59.1264621Z             {
2026-06-09T09:52:59.1264736Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-09T09:52:59.1264829Z               "line": 19
2026-06-09T09:52:59.1264912Z             },
2026-06-09T09:52:59.1264998Z             {
2026-06-09T09:52:59.1265116Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-09T09:52:59.1265197Z               "line": 111
2026-06-09T09:52:59.1265286Z             }
2026-06-09T09:52:59.1265366Z           ]
2026-06-09T09:52:59.1265468Z         },
2026-06-09T09:52:59.1265582Z         "int": {
2026-06-09T09:52:59.1265686Z           "complete": false,
2026-06-09T09:52:59.1265782Z           "evidence": []
2026-06-09T09:52:59.1265859Z         },
2026-06-09T09:52:59.1265953Z         "unit": {
2026-06-09T09:52:59.1266044Z           "complete": true,
2026-06-09T09:52:59.1266135Z           "evidence": [
2026-06-09T09:52:59.1266216Z             {
2026-06-09T09:52:59.1266334Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-09T09:52:59.1266422Z               "line": 320
2026-06-09T09:52:59.1266507Z             },
2026-06-09T09:52:59.1266597Z             {
2026-06-09T09:52:59.1266702Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-09T09:52:59.1266798Z               "line": 340
2026-06-09T09:52:59.1266879Z             }
2026-06-09T09:52:59.1266969Z           ]
2026-06-09T09:52:59.1267052Z         }
2026-06-09T09:52:59.1267132Z       }
2026-06-09T09:52:59.1267222Z     },
2026-06-09T09:52:59.1267303Z     {
2026-06-09T09:52:59.1267409Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-09T09:52:59.1267541Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-09T09:52:59.1267638Z       "requiredStages": [
2026-06-09T09:52:59.1267724Z         "impl",
2026-06-09T09:52:59.1267804Z         "unit"
2026-06-09T09:52:59.1267888Z       ],
2026-06-09T09:52:59.1267979Z       "stages": {
2026-06-09T09:52:59.1268065Z         "doc": {
2026-06-09T09:52:59.1268153Z           "complete": false,
2026-06-09T09:52:59.1268243Z           "evidence": []
2026-06-09T09:52:59.1268330Z         },
2026-06-09T09:52:59.1268412Z         "impl": {
2026-06-09T09:52:59.1268506Z           "complete": true,
2026-06-09T09:52:59.1268592Z           "evidence": [
2026-06-09T09:52:59.1268678Z             {
2026-06-09T09:52:59.1268793Z               "path": "crates/spt/src/api/startup.rs",
2026-06-09T09:52:59.1268882Z               "line": 18
2026-06-09T09:52:59.1269031Z             },
2026-06-09T09:52:59.1269117Z             {
2026-06-09T09:52:59.1269231Z               "path": "crates/spt/src/api/startup.rs",
2026-06-09T09:52:59.1269322Z               "line": 309
2026-06-09T09:52:59.1269412Z             }
2026-06-09T09:52:59.1269488Z           ]
2026-06-09T09:52:59.1269574Z         },
2026-06-09T09:52:59.1269665Z         "int": {
2026-06-09T09:52:59.1269750Z           "complete": false,
2026-06-09T09:52:59.1269846Z           "evidence": []
2026-06-09T09:52:59.1269924Z         },
2026-06-09T09:52:59.1270018Z         "unit": {
2026-06-09T09:52:59.1270103Z           "complete": true,
2026-06-09T09:52:59.1270195Z           "evidence": [
2026-06-09T09:52:59.1270276Z             {
2026-06-09T09:52:59.1270389Z               "path": "crates/spt/src/api/startup.rs",
2026-06-09T09:52:59.1270479Z               "line": 559
2026-06-09T09:52:59.1270560Z             },
2026-06-09T09:52:59.1270641Z             {
2026-06-09T09:52:59.1270748Z               "path": "crates/spt/src/api/startup.rs",
2026-06-09T09:52:59.1270945Z               "line": 569
2026-06-09T09:52:59.1271035Z             }
2026-06-09T09:52:59.1271115Z           ]
2026-06-09T09:52:59.1271207Z         }
2026-06-09T09:52:59.1271283Z       }
2026-06-09T09:52:59.1271374Z     },
2026-06-09T09:52:59.1271454Z     {
2026-06-09T09:52:59.1271550Z       "id": "REQ-SEAM-PSYCHE",
2026-06-09T09:52:59.1271693Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-09T09:52:59.1271879Z       "requiredStages": [
2026-06-09T09:52:59.1271964Z         "impl",
2026-06-09T09:52:59.1272050Z         "unit",
2026-06-09T09:52:59.1272126Z         "int"
2026-06-09T09:52:59.1272204Z       ],
2026-06-09T09:52:59.1272284Z       "stages": {
2026-06-09T09:52:59.1272369Z         "doc": {
2026-06-09T09:52:59.1272461Z           "complete": false,
2026-06-09T09:52:59.1272561Z           "evidence": []
2026-06-09T09:52:59.1272651Z         },
2026-06-09T09:52:59.1272737Z         "impl": {
2026-06-09T09:52:59.1272824Z           "complete": true,
2026-06-09T09:52:59.1272914Z           "evidence": [
2026-06-09T09:52:59.1272999Z             {
2026-06-09T09:52:59.1273110Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-09T09:52:59.1273196Z               "line": 19
2026-06-09T09:52:59.1273275Z             },
2026-06-09T09:52:59.1273356Z             {
2026-06-09T09:52:59.1273466Z               "path": "crates/spt/src/api/live.rs",
2026-06-09T09:52:59.1273562Z               "line": 12
2026-06-09T09:52:59.1273646Z             },
2026-06-09T09:52:59.1273722Z             {
2026-06-09T09:52:59.1273828Z               "path": "crates/spt/src/api/startup.rs",
2026-06-09T09:52:59.1273914Z               "line": 209
2026-06-09T09:52:59.1273999Z             }
2026-06-09T09:52:59.1274076Z           ]
2026-06-09T09:52:59.1274157Z         },
2026-06-09T09:52:59.1274243Z         "int": {
2026-06-09T09:52:59.1274333Z           "complete": true,
2026-06-09T09:52:59.1274420Z           "evidence": [
2026-06-09T09:52:59.1274500Z             {
2026-06-09T09:52:59.1274628Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-09T09:52:59.1274715Z               "line": 255
2026-06-09T09:52:59.1274796Z             }
2026-06-09T09:52:59.1274882Z           ]
2026-06-09T09:52:59.1274958Z         },
2026-06-09T09:52:59.1275045Z         "unit": {
2026-06-09T09:52:59.1275135Z           "complete": true,
2026-06-09T09:52:59.1275225Z           "evidence": [
2026-06-09T09:52:59.1275311Z             {
2026-06-09T09:52:59.1275426Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-09T09:52:59.1275515Z               "line": 161
2026-06-09T09:52:59.1275595Z             },
2026-06-09T09:52:59.1275686Z             {
2026-06-09T09:52:59.1275799Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-09T09:52:59.1275889Z               "line": 168
2026-06-09T09:52:59.1275965Z             },
2026-06-09T09:52:59.1276052Z             {
2026-06-09T09:52:59.1276161Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-09T09:52:59.1276246Z               "line": 191
2026-06-09T09:52:59.1276338Z             },
2026-06-09T09:52:59.1276419Z             {
2026-06-09T09:52:59.1276528Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-09T09:52:59.1276614Z               "line": 106
2026-06-09T09:52:59.1276700Z             },
2026-06-09T09:52:59.1276790Z             {
2026-06-09T09:52:59.1276899Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-09T09:52:59.1276992Z               "line": 137
2026-06-09T09:52:59.1277072Z             },
2026-06-09T09:52:59.1277167Z             {
2026-06-09T09:52:59.1277272Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-09T09:52:59.1277367Z               "line": 161
2026-06-09T09:52:59.1277458Z             }
2026-06-09T09:52:59.1277538Z           ]
2026-06-09T09:52:59.1277626Z         }
2026-06-09T09:52:59.1277706Z       }
2026-06-09T09:52:59.1277792Z     },
2026-06-09T09:52:59.1277868Z     {
2026-06-09T09:52:59.1277965Z       "id": "REQ-SEAM-RESUME",
2026-06-09T09:52:59.1278226Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-09T09:52:59.1278322Z       "requiredStages": [
2026-06-09T09:52:59.1278411Z         "impl",
2026-06-09T09:52:59.1278496Z         "unit"
2026-06-09T09:52:59.1278578Z       ],
2026-06-09T09:52:59.1278662Z       "stages": {
2026-06-09T09:52:59.1278747Z         "doc": {
2026-06-09T09:52:59.1278847Z           "complete": false,
2026-06-09T09:52:59.1279090Z           "evidence": []
2026-06-09T09:52:59.1279176Z         },
2026-06-09T09:52:59.1279258Z         "impl": {
2026-06-09T09:52:59.1279367Z           "complete": true,
2026-06-09T09:52:59.1279466Z           "evidence": [
2026-06-09T09:52:59.1279544Z             {
2026-06-09T09:52:59.1279663Z               "path": "crates/spt-live/src/resume.rs",
2026-06-09T09:52:59.1279762Z               "line": 19
2026-06-09T09:52:59.1279844Z             }
2026-06-09T09:52:59.1279930Z           ]
2026-06-09T09:52:59.1280020Z         },
2026-06-09T09:52:59.1280106Z         "int": {
2026-06-09T09:52:59.1280216Z           "complete": false,
2026-06-09T09:52:59.1280310Z           "evidence": []
2026-06-09T09:52:59.1280396Z         },
2026-06-09T09:52:59.1280484Z         "unit": {
2026-06-09T09:52:59.1280574Z           "complete": true,
2026-06-09T09:52:59.1280668Z           "evidence": [
2026-06-09T09:52:59.1280745Z             {
2026-06-09T09:52:59.1280860Z               "path": "crates/spt-live/src/resume.rs",
2026-06-09T09:52:59.1280959Z               "line": 179
2026-06-09T09:52:59.1281044Z             },
2026-06-09T09:52:59.1281130Z             {
2026-06-09T09:52:59.1281234Z               "path": "crates/spt-live/src/resume.rs",
2026-06-09T09:52:59.1281323Z               "line": 201
2026-06-09T09:52:59.1281404Z             },
2026-06-09T09:52:59.1281490Z             {
2026-06-09T09:52:59.1281609Z               "path": "crates/spt-live/src/resume.rs",
2026-06-09T09:52:59.1281694Z               "line": 222
2026-06-09T09:52:59.1281776Z             }
2026-06-09T09:52:59.1281857Z           ]
2026-06-09T09:52:59.1281943Z         }
2026-06-09T09:52:59.1282029Z       }
2026-06-09T09:52:59.1282110Z     },
2026-06-09T09:52:59.1282196Z     {
2026-06-09T09:52:59.1282286Z       "id": "REQ-SEAM-SPAWN",
2026-06-09T09:52:59.1282392Z       "title": "spawn-session seam",
2026-06-09T09:52:59.1282477Z       "requiredStages": [
2026-06-09T09:52:59.1282568Z         "impl",
2026-06-09T09:52:59.1282648Z         "unit"
2026-06-09T09:52:59.1282735Z       ],
2026-06-09T09:52:59.1282826Z       "stages": {
2026-06-09T09:52:59.1282907Z         "doc": {
2026-06-09T09:52:59.1283002Z           "complete": false,
2026-06-09T09:52:59.1283088Z           "evidence": []
2026-06-09T09:52:59.1283173Z         },
2026-06-09T09:52:59.1283254Z         "impl": {
2026-06-09T09:52:59.1283351Z           "complete": true,
2026-06-09T09:52:59.1283446Z           "evidence": [
2026-06-09T09:52:59.1283525Z             {
2026-06-09T09:52:59.1283646Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-09T09:52:59.1283732Z               "line": 20
2026-06-09T09:52:59.1283821Z             }
2026-06-09T09:52:59.1283906Z           ]
2026-06-09T09:52:59.1283992Z         },
2026-06-09T09:52:59.1284083Z         "int": {
2026-06-09T09:52:59.1284173Z           "complete": false,
2026-06-09T09:52:59.1284264Z           "evidence": []
2026-06-09T09:52:59.1284345Z         },
2026-06-09T09:52:59.1284465Z         "unit": {
2026-06-09T09:52:59.1284554Z           "complete": true,
2026-06-09T09:52:59.1284646Z           "evidence": [
2026-06-09T09:52:59.1284731Z             {
2026-06-09T09:52:59.1284850Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-09T09:52:59.1284941Z               "line": 435
2026-06-09T09:52:59.1285018Z             },
2026-06-09T09:52:59.1285103Z             {
2026-06-09T09:52:59.1285218Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-09T09:52:59.1285314Z               "line": 442
2026-06-09T09:52:59.1285403Z             },
2026-06-09T09:52:59.1285489Z             {
2026-06-09T09:52:59.1285629Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-09T09:52:59.1285823Z               "line": 452
2026-06-09T09:52:59.1285915Z             },
2026-06-09T09:52:59.1285991Z             {
2026-06-09T09:52:59.1286108Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-09T09:52:59.1286294Z               "line": 458
2026-06-09T09:52:59.1286387Z             },
2026-06-09T09:52:59.1286482Z             {
2026-06-09T09:52:59.1286716Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-09T09:52:59.1286807Z               "line": 483
2026-06-09T09:52:59.1286893Z             },
2026-06-09T09:52:59.1286970Z             {
2026-06-09T09:52:59.1287093Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-09T09:52:59.1287193Z               "line": 520
2026-06-09T09:52:59.1287279Z             }
2026-06-09T09:52:59.1287374Z           ]
2026-06-09T09:52:59.1287460Z         }
2026-06-09T09:52:59.1287557Z       }
2026-06-09T09:52:59.1287646Z     },
2026-06-09T09:52:59.1287736Z     {
2026-06-09T09:52:59.1287847Z       "id": "REQ-SEAM-UPDATE",
2026-06-09T09:52:59.1288018Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-09T09:52:59.1288118Z       "requiredStages": [
2026-06-09T09:52:59.1288210Z         "impl",
2026-06-09T09:52:59.1288299Z         "unit"
2026-06-09T09:52:59.1288375Z       ],
2026-06-09T09:52:59.1288462Z       "stages": {
2026-06-09T09:52:59.1288553Z         "doc": {
2026-06-09T09:52:59.1288647Z           "complete": false,
2026-06-09T09:52:59.1288733Z           "evidence": []
2026-06-09T09:52:59.1288816Z         },
2026-06-09T09:52:59.1288905Z         "impl": {
2026-06-09T09:52:59.1289085Z           "complete": true,
2026-06-09T09:52:59.1289176Z           "evidence": [
2026-06-09T09:52:59.1289259Z             {
2026-06-09T09:52:59.1289392Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-09T09:52:59.1289484Z               "line": 28
2026-06-09T09:52:59.1289570Z             },
2026-06-09T09:52:59.1289655Z             {
2026-06-09T09:52:59.1289789Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-09T09:52:59.1289884Z               "line": 83
2026-06-09T09:52:59.1289969Z             }
2026-06-09T09:52:59.1290051Z           ]
2026-06-09T09:52:59.1290132Z         },
2026-06-09T09:52:59.1290213Z         "int": {
2026-06-09T09:52:59.1290313Z           "complete": false,
2026-06-09T09:52:59.1290399Z           "evidence": []
2026-06-09T09:52:59.1290494Z         },
2026-06-09T09:52:59.1290580Z         "unit": {
2026-06-09T09:52:59.1290670Z           "complete": true,
2026-06-09T09:52:59.1290767Z           "evidence": [
2026-06-09T09:52:59.1290857Z             {
2026-06-09T09:52:59.1290990Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-09T09:52:59.1291082Z               "line": 286
2026-06-09T09:52:59.1291166Z             },
2026-06-09T09:52:59.1291248Z             {
2026-06-09T09:52:59.1291373Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-09T09:52:59.1291463Z               "line": 297
2026-06-09T09:52:59.1291552Z             }
2026-06-09T09:52:59.1291637Z           ]
2026-06-09T09:52:59.1291718Z         }
2026-06-09T09:52:59.1291808Z       }
2026-06-09T09:52:59.1291911Z     },
2026-06-09T09:52:59.1291998Z     {
2026-06-09T09:52:59.1292089Z       "id": "REQ-SEC-1",
2026-06-09T09:52:59.1292484Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-09T09:52:59.1292579Z       "requiredStages": [
2026-06-09T09:52:59.1292670Z         "impl",
2026-06-09T09:52:59.1292756Z         "unit"
2026-06-09T09:52:59.1292837Z       ],
2026-06-09T09:52:59.1292927Z       "stages": {
2026-06-09T09:52:59.1293009Z         "doc": {
2026-06-09T09:52:59.1293103Z           "complete": false,
2026-06-09T09:52:59.1293189Z           "evidence": []
2026-06-09T09:52:59.1293276Z         },
2026-06-09T09:52:59.1293362Z         "impl": {
2026-06-09T09:52:59.1293452Z           "complete": true,
2026-06-09T09:52:59.1293648Z           "evidence": [
2026-06-09T09:52:59.1293738Z             {
2026-06-09T09:52:59.1293862Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-09T09:52:59.1293949Z               "line": 84
2026-06-09T09:52:59.1294043Z             },
2026-06-09T09:52:59.1294125Z             {
2026-06-09T09:52:59.1294240Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-09T09:52:59.1294423Z               "line": 114
2026-06-09T09:52:59.1294509Z             },
2026-06-09T09:52:59.1294595Z             {
2026-06-09T09:52:59.1294710Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-09T09:52:59.1294800Z               "line": 128
2026-06-09T09:52:59.1294887Z             },
2026-06-09T09:52:59.1294968Z             {
2026-06-09T09:52:59.1295081Z               "path": "crates/spt-store/src/access.rs",
2026-06-09T09:52:59.1295167Z               "line": 108
2026-06-09T09:52:59.1295254Z             },
2026-06-09T09:52:59.1295335Z             {
2026-06-09T09:52:59.1295453Z               "path": "crates/spt-store/src/access.rs",
2026-06-09T09:52:59.1295550Z               "line": 129
2026-06-09T09:52:59.1295625Z             },
2026-06-09T09:52:59.1295711Z             {
2026-06-09T09:52:59.1295821Z               "path": "crates/spt-store/src/access.rs",
2026-06-09T09:52:59.1295912Z               "line": 142
2026-06-09T09:52:59.1295997Z             },
2026-06-09T09:52:59.1296073Z             {
2026-06-09T09:52:59.1296189Z               "path": "crates/spt-store/src/access.rs",
2026-06-09T09:52:59.1296278Z               "line": 208
2026-06-09T09:52:59.1296364Z             },
2026-06-09T09:52:59.1296450Z             {
2026-06-09T09:52:59.1296561Z               "path": "crates/spt-store/src/access.rs",
2026-06-09T09:52:59.1296654Z               "line": 234
2026-06-09T09:52:59.1296735Z             },
2026-06-09T09:52:59.1296821Z             {
2026-06-09T09:52:59.1296925Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1297014Z               "line": 4007
2026-06-09T09:52:59.1297095Z             }
2026-06-09T09:52:59.1297186Z           ]
2026-06-09T09:52:59.1297277Z         },
2026-06-09T09:52:59.1297357Z         "int": {
2026-06-09T09:52:59.1297453Z           "complete": false,
2026-06-09T09:52:59.1297539Z           "evidence": []
2026-06-09T09:52:59.1297624Z         },
2026-06-09T09:52:59.1297710Z         "unit": {
2026-06-09T09:52:59.1297797Z           "complete": true,
2026-06-09T09:52:59.1297892Z           "evidence": [
2026-06-09T09:52:59.1297977Z             {
2026-06-09T09:52:59.1298093Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-09T09:52:59.1298178Z               "line": 140
2026-06-09T09:52:59.1298259Z             },
2026-06-09T09:52:59.1298340Z             {
2026-06-09T09:52:59.1298455Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-09T09:52:59.1298545Z               "line": 192
2026-06-09T09:52:59.1298626Z             },
2026-06-09T09:52:59.1298708Z             {
2026-06-09T09:52:59.1298817Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-09T09:52:59.1298912Z               "line": 233
2026-06-09T09:52:59.1299066Z             },
2026-06-09T09:52:59.1299164Z             {
2026-06-09T09:52:59.1299303Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-09T09:52:59.1299390Z               "line": 138
2026-06-09T09:52:59.1299479Z             },
2026-06-09T09:52:59.1299560Z             {
2026-06-09T09:52:59.1299683Z               "path": "crates/spt-store/src/access.rs",
2026-06-09T09:52:59.1299768Z               "line": 246
2026-06-09T09:52:59.1299857Z             },
2026-06-09T09:52:59.1299942Z             {
2026-06-09T09:52:59.1300053Z               "path": "crates/spt-store/src/access.rs",
2026-06-09T09:52:59.1300144Z               "line": 276
2026-06-09T09:52:59.1300224Z             },
2026-06-09T09:52:59.1300310Z             {
2026-06-09T09:52:59.1300420Z               "path": "crates/spt-store/src/access.rs",
2026-06-09T09:52:59.1300510Z               "line": 309
2026-06-09T09:52:59.1300591Z             },
2026-06-09T09:52:59.1300778Z             {
2026-06-09T09:52:59.1300892Z               "path": "crates/spt-store/src/access.rs",
2026-06-09T09:52:59.1300979Z               "line": 328
2026-06-09T09:52:59.1301064Z             },
2026-06-09T09:52:59.1301145Z             {
2026-06-09T09:52:59.1301265Z               "path": "crates/spt-store/src/access.rs",
2026-06-09T09:52:59.1301360Z               "line": 361
2026-06-09T09:52:59.1301531Z             },
2026-06-09T09:52:59.1301618Z             {
2026-06-09T09:52:59.1301726Z               "path": "crates/spt-store/src/access.rs",
2026-06-09T09:52:59.1301817Z               "line": 385
2026-06-09T09:52:59.1301899Z             },
2026-06-09T09:52:59.1301985Z             {
2026-06-09T09:52:59.1302093Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1302178Z               "line": 5573
2026-06-09T09:52:59.1302265Z             }
2026-06-09T09:52:59.1302349Z           ]
2026-06-09T09:52:59.1302434Z         }
2026-06-09T09:52:59.1302514Z       }
2026-06-09T09:52:59.1302605Z     },
2026-06-09T09:52:59.1302692Z     {
2026-06-09T09:52:59.1302781Z       "id": "REQ-SHELL-1",
2026-06-09T09:52:59.1303688Z       "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-09T09:52:59.1303826Z       "requiredStages": [
2026-06-09T09:52:59.1303917Z         "impl",
2026-06-09T09:52:59.1304007Z         "unit",
2026-06-09T09:52:59.1304088Z         "int"
2026-06-09T09:52:59.1304176Z       ],
2026-06-09T09:52:59.1304265Z       "stages": {
2026-06-09T09:52:59.1304351Z         "doc": {
2026-06-09T09:52:59.1304437Z           "complete": false,
2026-06-09T09:52:59.1304533Z           "evidence": []
2026-06-09T09:52:59.1304622Z         },
2026-06-09T09:52:59.1304708Z         "impl": {
2026-06-09T09:52:59.1304805Z           "complete": true,
2026-06-09T09:52:59.1304890Z           "evidence": [
2026-06-09T09:52:59.1304975Z             {
2026-06-09T09:52:59.1305098Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-09T09:52:59.1305195Z               "line": 94
2026-06-09T09:52:59.1305280Z             },
2026-06-09T09:52:59.1305360Z             {
2026-06-09T09:52:59.1305490Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-09T09:52:59.1305571Z               "line": 119
2026-06-09T09:52:59.1305660Z             },
2026-06-09T09:52:59.1305737Z             {
2026-06-09T09:52:59.1305852Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-09T09:52:59.1305947Z               "line": 27
2026-06-09T09:52:59.1306047Z             },
2026-06-09T09:52:59.1306134Z             {
2026-06-09T09:52:59.1306248Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-09T09:52:59.1306338Z               "line": 52
2026-06-09T09:52:59.1306444Z             },
2026-06-09T09:52:59.1306542Z             {
2026-06-09T09:52:59.1306667Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-09T09:52:59.1306773Z               "line": 132
2026-06-09T09:52:59.1306862Z             },
2026-06-09T09:52:59.1306943Z             {
2026-06-09T09:52:59.1307059Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-09T09:52:59.1307158Z               "line": 164
2026-06-09T09:52:59.1307243Z             },
2026-06-09T09:52:59.1307328Z             {
2026-06-09T09:52:59.1307443Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-09T09:52:59.1307536Z               "line": 22
2026-06-09T09:52:59.1307622Z             },
2026-06-09T09:52:59.1307708Z             {
2026-06-09T09:52:59.1307832Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-09T09:52:59.1307917Z               "line": 65
2026-06-09T09:52:59.1308004Z             },
2026-06-09T09:52:59.1308085Z             {
2026-06-09T09:52:59.1308203Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-09T09:52:59.1308372Z               "line": 76
2026-06-09T09:52:59.1308462Z             },
2026-06-09T09:52:59.1308546Z             {
2026-06-09T09:52:59.1308667Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-09T09:52:59.1308757Z               "line": 150
2026-06-09T09:52:59.1308837Z             },
2026-06-09T09:52:59.1308928Z             {
2026-06-09T09:52:59.1309219Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-09T09:52:59.1309349Z               "line": 209
2026-06-09T09:52:59.1309438Z             },
2026-06-09T09:52:59.1309519Z             {
2026-06-09T09:52:59.1309640Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-09T09:52:59.1309729Z               "line": 246
2026-06-09T09:52:59.1309820Z             },
2026-06-09T09:52:59.1309898Z             {
2026-06-09T09:52:59.1310025Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-09T09:52:59.1310115Z               "line": 267
2026-06-09T09:52:59.1312876Z             },
2026-06-09T09:52:59.1312994Z             {
2026-06-09T09:52:59.1313147Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-09T09:52:59.1313238Z               "line": 280
2026-06-09T09:52:59.1313327Z             },
2026-06-09T09:52:59.1313414Z             {
2026-06-09T09:52:59.1313538Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.1313632Z               "line": 207
2026-06-09T09:52:59.1313718Z             },
2026-06-09T09:52:59.1313805Z             {
2026-06-09T09:52:59.1313924Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.1314004Z               "line": 223
2026-06-09T09:52:59.1314092Z             },
2026-06-09T09:52:59.1314167Z             {
2026-06-09T09:52:59.1314290Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-09T09:52:59.1314377Z               "line": 41
2026-06-09T09:52:59.1314454Z             },
2026-06-09T09:52:59.1314524Z             {
2026-06-09T09:52:59.1314653Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-09T09:52:59.1314740Z               "line": 204
2026-06-09T09:52:59.1314815Z             },
2026-06-09T09:52:59.1314896Z             {
2026-06-09T09:52:59.1315026Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-09T09:52:59.1315135Z               "line": 156
2026-06-09T09:52:59.1315220Z             },
2026-06-09T09:52:59.1315307Z             {
2026-06-09T09:52:59.1315431Z               "path": "crates/spt/src/api/mod.rs",
2026-06-09T09:52:59.1315520Z               "line": 295
2026-06-09T09:52:59.1315605Z             },
2026-06-09T09:52:59.1315687Z             {
2026-06-09T09:52:59.1315812Z               "path": "crates/spt/src/api/mod.rs",
2026-06-09T09:52:59.1315901Z               "line": 345
2026-06-09T09:52:59.1315987Z             },
2026-06-09T09:52:59.1316074Z             {
2026-06-09T09:52:59.1316197Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:59.1316283Z               "line": 261
2026-06-09T09:52:59.1316365Z             },
2026-06-09T09:52:59.1316460Z             {
2026-06-09T09:52:59.1316563Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1316656Z               "line": 4505
2026-06-09T09:52:59.1316751Z             },
2026-06-09T09:52:59.1316831Z             {
2026-06-09T09:52:59.1316936Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1317023Z               "line": 4655
2026-06-09T09:52:59.1317117Z             },
2026-06-09T09:52:59.1317203Z             {
2026-06-09T09:52:59.1317300Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1317394Z               "line": 4692
2026-06-09T09:52:59.1317480Z             }
2026-06-09T09:52:59.1317571Z           ]
2026-06-09T09:52:59.1317648Z         },
2026-06-09T09:52:59.1317737Z         "int": {
2026-06-09T09:52:59.1317832Z           "complete": true,
2026-06-09T09:52:59.1317927Z           "evidence": [
2026-06-09T09:52:59.1318012Z             {
2026-06-09T09:52:59.1318139Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-09T09:52:59.1318360Z               "line": 706
2026-06-09T09:52:59.1318448Z             },
2026-06-09T09:52:59.1318535Z             {
2026-06-09T09:52:59.1318668Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-09T09:52:59.1318749Z               "line": 8
2026-06-09T09:52:59.1318835Z             },
2026-06-09T09:52:59.1318917Z             {
2026-06-09T09:52:59.1319298Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-09T09:52:59.1319393Z               "line": 49
2026-06-09T09:52:59.1319503Z             },
2026-06-09T09:52:59.1319599Z             {
2026-06-09T09:52:59.1319727Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.1319823Z               "line": 708
2026-06-09T09:52:59.1319905Z             },
2026-06-09T09:52:59.1319988Z             {
2026-06-09T09:52:59.1320113Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.1320205Z               "line": 1118
2026-06-09T09:52:59.1320289Z             },
2026-06-09T09:52:59.1320375Z             {
2026-06-09T09:52:59.1320505Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-09T09:52:59.1320595Z               "line": 17
2026-06-09T09:52:59.1320680Z             },
2026-06-09T09:52:59.1320760Z             {
2026-06-09T09:52:59.1320880Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-09T09:52:59.1320977Z               "line": 14
2026-06-09T09:52:59.1321063Z             }
2026-06-09T09:52:59.1321149Z           ]
2026-06-09T09:52:59.1321226Z         },
2026-06-09T09:52:59.1321316Z         "unit": {
2026-06-09T09:52:59.1321411Z           "complete": true,
2026-06-09T09:52:59.1321503Z           "evidence": [
2026-06-09T09:52:59.1321589Z             {
2026-06-09T09:52:59.1321702Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-09T09:52:59.1321799Z               "line": 234
2026-06-09T09:52:59.1321879Z             },
2026-06-09T09:52:59.1321969Z             {
2026-06-09T09:52:59.1322094Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-09T09:52:59.1322188Z               "line": 267
2026-06-09T09:52:59.1322274Z             },
2026-06-09T09:52:59.1322360Z             {
2026-06-09T09:52:59.1322485Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-09T09:52:59.1322575Z               "line": 307
2026-06-09T09:52:59.1322661Z             },
2026-06-09T09:52:59.1322743Z             {
2026-06-09T09:52:59.1322860Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-09T09:52:59.1322952Z               "line": 519
2026-06-09T09:52:59.1323029Z             },
2026-06-09T09:52:59.1323119Z             {
2026-06-09T09:52:59.1323232Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-09T09:52:59.1323327Z               "line": 592
2026-06-09T09:52:59.1323413Z             },
2026-06-09T09:52:59.1323497Z             {
2026-06-09T09:52:59.1323620Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-09T09:52:59.1323707Z               "line": 736
2026-06-09T09:52:59.1323798Z             },
2026-06-09T09:52:59.1323883Z             {
2026-06-09T09:52:59.1323997Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.1324093Z               "line": 585
2026-06-09T09:52:59.1324178Z             },
2026-06-09T09:52:59.1324264Z             {
2026-06-09T09:52:59.1324379Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-09T09:52:59.1324484Z               "line": 352
2026-06-09T09:52:59.1324564Z             },
2026-06-09T09:52:59.1324652Z             {
2026-06-09T09:52:59.1324760Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1324855Z               "line": 5921
2026-06-09T09:52:59.1324947Z             },
2026-06-09T09:52:59.1325028Z             {
2026-06-09T09:52:59.1325132Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1325218Z               "line": 6243
2026-06-09T09:52:59.1325310Z             },
2026-06-09T09:52:59.1325394Z             {
2026-06-09T09:52:59.1325591Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1325690Z               "line": 6609
2026-06-09T09:52:59.1325771Z             }
2026-06-09T09:52:59.1325852Z           ]
2026-06-09T09:52:59.1325940Z         }
2026-06-09T09:52:59.1326019Z       }
2026-06-09T09:52:59.1326104Z     },
2026-06-09T09:52:59.1326189Z     {
2026-06-09T09:52:59.1326295Z       "id": "REQ-SHELL-2",
2026-06-09T09:52:59.1327936Z       "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-09T09:52:59.1328040Z       "requiredStages": [
2026-06-09T09:52:59.1328131Z         "impl",
2026-06-09T09:52:59.1328213Z         "unit",
2026-06-09T09:52:59.1328311Z         "int"
2026-06-09T09:52:59.1328401Z       ],
2026-06-09T09:52:59.1328492Z       "stages": {
2026-06-09T09:52:59.1328577Z         "doc": {
2026-06-09T09:52:59.1328675Z           "complete": false,
2026-06-09T09:52:59.1328770Z           "evidence": []
2026-06-09T09:52:59.1328852Z         },
2026-06-09T09:52:59.1328939Z         "impl": {
2026-06-09T09:52:59.1329143Z           "complete": true,
2026-06-09T09:52:59.1329233Z           "evidence": [
2026-06-09T09:52:59.1329333Z             {
2026-06-09T09:52:59.1329458Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-09T09:52:59.1329553Z               "line": 213
2026-06-09T09:52:59.1329634Z             },
2026-06-09T09:52:59.1329724Z             {
2026-06-09T09:52:59.1329844Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-09T09:52:59.1329930Z               "line": 403
2026-06-09T09:52:59.1330010Z             },
2026-06-09T09:52:59.1330102Z             {
2026-06-09T09:52:59.1330225Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-09T09:52:59.1330306Z               "line": 250
2026-06-09T09:52:59.1330393Z             },
2026-06-09T09:52:59.1330479Z             {
2026-06-09T09:52:59.1330621Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.1330708Z               "line": 310
2026-06-09T09:52:59.1330794Z             },
2026-06-09T09:52:59.1330887Z             {
2026-06-09T09:52:59.1331003Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-09T09:52:59.1331094Z               "line": 30
2026-06-09T09:52:59.1331179Z             },
2026-06-09T09:52:59.1331264Z             {
2026-06-09T09:52:59.1331382Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-09T09:52:59.1331477Z               "line": 150
2026-06-09T09:52:59.1331561Z             },
2026-06-09T09:52:59.1331642Z             {
2026-06-09T09:52:59.1331767Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-09T09:52:59.1331853Z               "line": 186
2026-06-09T09:52:59.1331943Z             },
2026-06-09T09:52:59.1332030Z             {
2026-06-09T09:52:59.1332144Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-09T09:52:59.1332229Z               "line": 345
2026-06-09T09:52:59.1332306Z             },
2026-06-09T09:52:59.1332392Z             {
2026-06-09T09:52:59.1332506Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.1332611Z               "line": 348
2026-06-09T09:52:59.1332721Z             },
2026-06-09T09:52:59.1332802Z             {
2026-06-09T09:52:59.1332925Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-09T09:52:59.1333003Z               "line": 115
2026-06-09T09:52:59.1333115Z             },
2026-06-09T09:52:59.1333197Z             {
2026-06-09T09:52:59.1333322Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-09T09:52:59.1333435Z               "line": 120
2026-06-09T09:52:59.1333517Z             },
2026-06-09T09:52:59.1333603Z             {
2026-06-09T09:52:59.1333821Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-09T09:52:59.1333916Z               "line": 360
2026-06-09T09:52:59.1333997Z             },
2026-06-09T09:52:59.1334085Z             {
2026-06-09T09:52:59.1334219Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-09T09:52:59.1334305Z               "line": 464
2026-06-09T09:52:59.1334486Z             },
2026-06-09T09:52:59.1334572Z             {
2026-06-09T09:52:59.1334692Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-09T09:52:59.1334781Z               "line": 24
2026-06-09T09:52:59.1334868Z             },
2026-06-09T09:52:59.1334954Z             {
2026-06-09T09:52:59.1335067Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-09T09:52:59.1335158Z               "line": 76
2026-06-09T09:52:59.1335240Z             },
2026-06-09T09:52:59.1335325Z             {
2026-06-09T09:52:59.1335444Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-09T09:52:59.1335546Z               "line": 154
2026-06-09T09:52:59.1335630Z             },
2026-06-09T09:52:59.1335711Z             {
2026-06-09T09:52:59.1335827Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-09T09:52:59.1335917Z               "line": 177
2026-06-09T09:52:59.1336007Z             },
2026-06-09T09:52:59.1336088Z             {
2026-06-09T09:52:59.1336209Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-09T09:52:59.1336302Z               "line": 273
2026-06-09T09:52:59.1336384Z             },
2026-06-09T09:52:59.1336470Z             {
2026-06-09T09:52:59.1336589Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-09T09:52:59.1336679Z               "line": 450
2026-06-09T09:52:59.1336769Z             },
2026-06-09T09:52:59.1336850Z             {
2026-06-09T09:52:59.1336969Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-09T09:52:59.1337054Z               "line": 532
2026-06-09T09:52:59.1337141Z             },
2026-06-09T09:52:59.1337222Z             {
2026-06-09T09:52:59.1337355Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-09T09:52:59.1337447Z               "line": 27
2026-06-09T09:52:59.1337527Z             },
2026-06-09T09:52:59.1337613Z             {
2026-06-09T09:52:59.1337733Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-09T09:52:59.1337832Z               "line": 43
2026-06-09T09:52:59.1337918Z             },
2026-06-09T09:52:59.1338008Z             {
2026-06-09T09:52:59.1338133Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:59.1338223Z               "line": 323
2026-06-09T09:52:59.1338314Z             },
2026-06-09T09:52:59.1338396Z             {
2026-06-09T09:52:59.1338510Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1338595Z               "line": 1236
2026-06-09T09:52:59.1338681Z             },
2026-06-09T09:52:59.1338773Z             {
2026-06-09T09:52:59.1338881Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1339047Z               "line": 4519
2026-06-09T09:52:59.1339123Z             },
2026-06-09T09:52:59.1339212Z             {
2026-06-09T09:52:59.1339326Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1339422Z               "line": 4580
2026-06-09T09:52:59.1339507Z             },
2026-06-09T09:52:59.1339592Z             {
2026-06-09T09:52:59.1339694Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1339794Z               "line": 4608
2026-06-09T09:52:59.1339884Z             },
2026-06-09T09:52:59.1339965Z             {
2026-06-09T09:52:59.1340071Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1340161Z               "line": 4662
2026-06-09T09:52:59.1340241Z             },
2026-06-09T09:52:59.1340329Z             {
2026-06-09T09:52:59.1340428Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1340523Z               "line": 4778
2026-06-09T09:52:59.1340609Z             },
2026-06-09T09:52:59.1340695Z             {
2026-06-09T09:52:59.1340899Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1340991Z               "line": 4831
2026-06-09T09:52:59.1341071Z             },
2026-06-09T09:52:59.1341143Z             {
2026-06-09T09:52:59.1341253Z               "path": "crates/spt/src/wansend.rs",
2026-06-09T09:52:59.1341344Z               "line": 298
2026-06-09T09:52:59.1341500Z             },
2026-06-09T09:52:59.1341678Z             {
2026-06-09T09:52:59.1341785Z               "path": "crates/spt/src/wansend.rs",
2026-06-09T09:52:59.1341880Z               "line": 339
2026-06-09T09:52:59.1341962Z             }
2026-06-09T09:52:59.1342051Z           ]
2026-06-09T09:52:59.1342131Z         },
2026-06-09T09:52:59.1342217Z         "int": {
2026-06-09T09:52:59.1342313Z           "complete": true,
2026-06-09T09:52:59.1342403Z           "evidence": [
2026-06-09T09:52:59.1342488Z             {
2026-06-09T09:52:59.1342614Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-09T09:52:59.1342709Z               "line": 699
2026-06-09T09:52:59.1342798Z             },
2026-06-09T09:52:59.1342881Z             {
2026-06-09T09:52:59.1343009Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.1343094Z               "line": 708
2026-06-09T09:52:59.1343180Z             },
2026-06-09T09:52:59.1343267Z             {
2026-06-09T09:52:59.1343390Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.1343485Z               "line": 1118
2026-06-09T09:52:59.1343572Z             },
2026-06-09T09:52:59.1343652Z             {
2026-06-09T09:52:59.1343786Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-09T09:52:59.1343877Z               "line": 18
2026-06-09T09:52:59.1343962Z             }
2026-06-09T09:52:59.1344048Z           ]
2026-06-09T09:52:59.1344135Z         },
2026-06-09T09:52:59.1344221Z         "unit": {
2026-06-09T09:52:59.1344314Z           "complete": true,
2026-06-09T09:52:59.1344405Z           "evidence": [
2026-06-09T09:52:59.1344490Z             {
2026-06-09T09:52:59.1344613Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-09T09:52:59.1344707Z               "line": 429
2026-06-09T09:52:59.1344794Z             },
2026-06-09T09:52:59.1344875Z             {
2026-06-09T09:52:59.1344998Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-09T09:52:59.1345084Z               "line": 794
2026-06-09T09:52:59.1345176Z             },
2026-06-09T09:52:59.1345257Z             {
2026-06-09T09:52:59.1345380Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-09T09:52:59.1345471Z               "line": 625
2026-06-09T09:52:59.1345552Z             },
2026-06-09T09:52:59.1345641Z             {
2026-06-09T09:52:59.1345757Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-09T09:52:59.1345852Z               "line": 674
2026-06-09T09:52:59.1345938Z             },
2026-06-09T09:52:59.1346028Z             {
2026-06-09T09:52:59.1346148Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-09T09:52:59.1346243Z               "line": 698
2026-06-09T09:52:59.1346334Z             },
2026-06-09T09:52:59.1346416Z             {
2026-06-09T09:52:59.1346543Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-09T09:52:59.1346629Z               "line": 596
2026-06-09T09:52:59.1346721Z             },
2026-06-09T09:52:59.1346806Z             {
2026-06-09T09:52:59.1346925Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-09T09:52:59.1347031Z               "line": 617
2026-06-09T09:52:59.1347121Z             },
2026-06-09T09:52:59.1347205Z             {
2026-06-09T09:52:59.1347324Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-09T09:52:59.1347415Z               "line": 653
2026-06-09T09:52:59.1347506Z             },
2026-06-09T09:52:59.1347586Z             {
2026-06-09T09:52:59.1347711Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-09T09:52:59.1347802Z               "line": 707
2026-06-09T09:52:59.1347887Z             },
2026-06-09T09:52:59.1347968Z             {
2026-06-09T09:52:59.1348196Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-09T09:52:59.1348293Z               "line": 725
2026-06-09T09:52:59.1348374Z             },
2026-06-09T09:52:59.1348459Z             {
2026-06-09T09:52:59.1348573Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-09T09:52:59.1348670Z               "line": 759
2026-06-09T09:52:59.1348826Z             },
2026-06-09T09:52:59.1348907Z             {
2026-06-09T09:52:59.1349126Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-09T09:52:59.1349212Z               "line": 834
2026-06-09T09:52:59.1349305Z             },
2026-06-09T09:52:59.1349385Z             {
2026-06-09T09:52:59.1349507Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-09T09:52:59.1349602Z               "line": 80
2026-06-09T09:52:59.1349674Z             },
2026-06-09T09:52:59.1349762Z             {
2026-06-09T09:52:59.1349862Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1349949Z               "line": 5392
2026-06-09T09:52:59.1350035Z             },
2026-06-09T09:52:59.1350125Z             {
2026-06-09T09:52:59.1350229Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1350316Z               "line": 5998
2026-06-09T09:52:59.1350406Z             },
2026-06-09T09:52:59.1350496Z             {
2026-06-09T09:52:59.1350602Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1350697Z               "line": 6068
2026-06-09T09:52:59.1350792Z             },
2026-06-09T09:52:59.1350894Z             {
2026-06-09T09:52:59.1351002Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1351107Z               "line": 6106
2026-06-09T09:52:59.1351198Z             }
2026-06-09T09:52:59.1351298Z           ]
2026-06-09T09:52:59.1351393Z         }
2026-06-09T09:52:59.1351498Z       }
2026-06-09T09:52:59.1351599Z     },
2026-06-09T09:52:59.1351698Z     {
2026-06-09T09:52:59.1351799Z       "id": "REQ-START-1",
2026-06-09T09:52:59.1352003Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-09T09:52:59.1352119Z       "requiredStages": [
2026-06-09T09:52:59.1352209Z         "impl",
2026-06-09T09:52:59.1352313Z         "unit"
2026-06-09T09:52:59.1352422Z       ],
2026-06-09T09:52:59.1352512Z       "stages": {
2026-06-09T09:52:59.1352616Z         "doc": {
2026-06-09T09:52:59.1352715Z           "complete": false,
2026-06-09T09:52:59.1352830Z           "evidence": []
2026-06-09T09:52:59.1352921Z         },
2026-06-09T09:52:59.1353024Z         "impl": {
2026-06-09T09:52:59.1353135Z           "complete": true,
2026-06-09T09:52:59.1353230Z           "evidence": [
2026-06-09T09:52:59.1353330Z             {
2026-06-09T09:52:59.1353450Z               "path": "crates/spt-store/src/seed.rs",
2026-06-09T09:52:59.1353564Z               "line": 16
2026-06-09T09:52:59.1353654Z             }
2026-06-09T09:52:59.1353760Z           ]
2026-06-09T09:52:59.1353869Z         },
2026-06-09T09:52:59.1353960Z         "int": {
2026-06-09T09:52:59.1354075Z           "complete": false,
2026-06-09T09:52:59.1354170Z           "evidence": []
2026-06-09T09:52:59.1354270Z         },
2026-06-09T09:52:59.1354361Z         "unit": {
2026-06-09T09:52:59.1354466Z           "complete": true,
2026-06-09T09:52:59.1354574Z           "evidence": [
2026-06-09T09:52:59.1354666Z             {
2026-06-09T09:52:59.1354795Z               "path": "crates/spt-store/src/seed.rs",
2026-06-09T09:52:59.1354898Z               "line": 43
2026-06-09T09:52:59.1355012Z             },
2026-06-09T09:52:59.1355113Z             {
2026-06-09T09:52:59.1355239Z               "path": "crates/spt-store/src/seed.rs",
2026-06-09T09:52:59.1355349Z               "line": 59
2026-06-09T09:52:59.1355435Z             }
2026-06-09T09:52:59.1355544Z           ]
2026-06-09T09:52:59.1355634Z         }
2026-06-09T09:52:59.1355736Z       }
2026-06-09T09:52:59.1355822Z     },
2026-06-09T09:52:59.1355925Z     {
2026-06-09T09:52:59.1356036Z       "id": "REQ-START-2",
2026-06-09T09:52:59.1356298Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-09T09:52:59.1356426Z       "requiredStages": [
2026-06-09T09:52:59.1356521Z         "impl",
2026-06-09T09:52:59.1356622Z         "unit",
2026-06-09T09:52:59.1356713Z         "int"
2026-06-09T09:52:59.1356813Z       ],
2026-06-09T09:52:59.1356917Z       "stages": {
2026-06-09T09:52:59.1357004Z         "doc": {
2026-06-09T09:52:59.1357223Z           "complete": false,
2026-06-09T09:52:59.1357315Z           "evidence": []
2026-06-09T09:52:59.1357417Z         },
2026-06-09T09:52:59.1357513Z         "impl": {
2026-06-09T09:52:59.1357629Z           "complete": true,
2026-06-09T09:52:59.1357737Z           "evidence": [
2026-06-09T09:52:59.1357827Z             {
2026-06-09T09:52:59.1357961Z               "path": "crates/spt/src/api/startup.rs",
2026-06-09T09:52:59.1358057Z               "line": 16
2026-06-09T09:52:59.1358161Z             },
2026-06-09T09:52:59.1358247Z             {
2026-06-09T09:52:59.1358385Z               "path": "crates/spt/src/api/startup.rs",
2026-06-09T09:52:59.1358499Z               "line": 100
2026-06-09T09:52:59.1358586Z             },
2026-06-09T09:52:59.1358686Z             {
2026-06-09T09:52:59.1358809Z               "path": "crates/spt/src/api/startup.rs",
2026-06-09T09:52:59.1358911Z               "line": 208
2026-06-09T09:52:59.1359085Z             }
2026-06-09T09:52:59.1359191Z           ]
2026-06-09T09:52:59.1359296Z         },
2026-06-09T09:52:59.1359382Z         "int": {
2026-06-09T09:52:59.1359477Z           "complete": true,
2026-06-09T09:52:59.1359564Z           "evidence": [
2026-06-09T09:52:59.1359667Z             {
2026-06-09T09:52:59.1359821Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-09T09:52:59.1359926Z               "line": 182
2026-06-09T09:52:59.1360044Z             }
2026-06-09T09:52:59.1360139Z           ]
2026-06-09T09:52:59.1360238Z         },
2026-06-09T09:52:59.1360332Z         "unit": {
2026-06-09T09:52:59.1360446Z           "complete": true,
2026-06-09T09:52:59.1360547Z           "evidence": [
2026-06-09T09:52:59.1360651Z             {
2026-06-09T09:52:59.1360780Z               "path": "crates/spt/src/api/startup.rs",
2026-06-09T09:52:59.1360881Z               "line": 421
2026-06-09T09:52:59.1360985Z             },
2026-06-09T09:52:59.1361075Z             {
2026-06-09T09:52:59.1361210Z               "path": "crates/spt/src/api/startup.rs",
2026-06-09T09:52:59.1361314Z               "line": 454
2026-06-09T09:52:59.1361419Z             }
2026-06-09T09:52:59.1361519Z           ]
2026-06-09T09:52:59.1361614Z         }
2026-06-09T09:52:59.1361729Z       }
2026-06-09T09:52:59.1361815Z     },
2026-06-09T09:52:59.1361906Z     {
2026-06-09T09:52:59.1361991Z       "id": "REQ-START-3",
2026-06-09T09:52:59.1362168Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-09T09:52:59.1362282Z       "requiredStages": [
2026-06-09T09:52:59.1362393Z         "impl",
2026-06-09T09:52:59.1362511Z         "unit",
2026-06-09T09:52:59.1362602Z         "int"
2026-06-09T09:52:59.1362702Z       ],
2026-06-09T09:52:59.1362798Z       "stages": {
2026-06-09T09:52:59.1362901Z         "doc": {
2026-06-09T09:52:59.1363010Z           "complete": false,
2026-06-09T09:52:59.1363106Z           "evidence": []
2026-06-09T09:52:59.1363209Z         },
2026-06-09T09:52:59.1363299Z         "impl": {
2026-06-09T09:52:59.1363419Z           "complete": true,
2026-06-09T09:52:59.1363519Z           "evidence": [
2026-06-09T09:52:59.1363618Z             {
2026-06-09T09:52:59.1363753Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-09T09:52:59.1363843Z               "line": 23
2026-06-09T09:52:59.1363937Z             },
2026-06-09T09:52:59.1364029Z             {
2026-06-09T09:52:59.1364158Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-09T09:52:59.1364252Z               "line": 205
2026-06-09T09:52:59.1364354Z             },
2026-06-09T09:52:59.1364453Z             {
2026-06-09T09:52:59.1364577Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-09T09:52:59.1364796Z               "line": 221
2026-06-09T09:52:59.1364887Z             },
2026-06-09T09:52:59.1364983Z             {
2026-06-09T09:52:59.1365106Z               "path": "crates/spt/src/api/startup.rs",
2026-06-09T09:52:59.1365211Z               "line": 17
2026-06-09T09:52:59.1365312Z             },
2026-06-09T09:52:59.1365398Z             {
2026-06-09T09:52:59.1365548Z               "path": "crates/spt/src/api/startup.rs",
2026-06-09T09:52:59.1365808Z               "line": 43
2026-06-09T09:52:59.1365914Z             },
2026-06-09T09:52:59.1366000Z             {
2026-06-09T09:52:59.1366132Z               "path": "crates/spt/src/api/startup.rs",
2026-06-09T09:52:59.1366238Z               "line": 101
2026-06-09T09:52:59.1366320Z             }
2026-06-09T09:52:59.1366429Z           ]
2026-06-09T09:52:59.1366514Z         },
2026-06-09T09:52:59.1366615Z         "int": {
2026-06-09T09:52:59.1366715Z           "complete": true,
2026-06-09T09:52:59.1366829Z           "evidence": [
2026-06-09T09:52:59.1366930Z             {
2026-06-09T09:52:59.1367091Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-09T09:52:59.1367235Z               "line": 436
2026-06-09T09:52:59.1367320Z             }
2026-06-09T09:52:59.1367415Z           ]
2026-06-09T09:52:59.1367502Z         },
2026-06-09T09:52:59.1367593Z         "unit": {
2026-06-09T09:52:59.1367692Z           "complete": true,
2026-06-09T09:52:59.1367797Z           "evidence": [
2026-06-09T09:52:59.1367894Z             {
2026-06-09T09:52:59.1368011Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-09T09:52:59.1368122Z               "line": 331
2026-06-09T09:52:59.1368208Z             },
2026-06-09T09:52:59.1368325Z             {
2026-06-09T09:52:59.1368459Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-09T09:52:59.1368541Z               "line": 352
2026-06-09T09:52:59.1368636Z             },
2026-06-09T09:52:59.1368721Z             {
2026-06-09T09:52:59.1368856Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-09T09:52:59.1369078Z               "line": 362
2026-06-09T09:52:59.1369184Z             },
2026-06-09T09:52:59.1369289Z             {
2026-06-09T09:52:59.1369408Z               "path": "crates/spt/src/api/startup.rs",
2026-06-09T09:52:59.1369518Z               "line": 422
2026-06-09T09:52:59.1369608Z             },
2026-06-09T09:52:59.1369712Z             {
2026-06-09T09:52:59.1369851Z               "path": "crates/spt/src/api/startup.rs",
2026-06-09T09:52:59.1369951Z               "line": 455
2026-06-09T09:52:59.1370057Z             },
2026-06-09T09:52:59.1370148Z             {
2026-06-09T09:52:59.1370275Z               "path": "crates/spt/src/api/startup.rs",
2026-06-09T09:52:59.1370371Z               "line": 463
2026-06-09T09:52:59.1370467Z             }
2026-06-09T09:52:59.1370571Z           ]
2026-06-09T09:52:59.1370679Z         }
2026-06-09T09:52:59.1370785Z       }
2026-06-09T09:52:59.1370873Z     },
2026-06-09T09:52:59.1370972Z     {
2026-06-09T09:52:59.1371069Z       "id": "REQ-START-4",
2026-06-09T09:52:59.1371231Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-09T09:52:59.1371340Z       "requiredStages": [
2026-06-09T09:52:59.1371431Z         "impl",
2026-06-09T09:52:59.1371536Z         "unit"
2026-06-09T09:52:59.1371625Z       ],
2026-06-09T09:52:59.1371727Z       "stages": {
2026-06-09T09:52:59.1371818Z         "doc": {
2026-06-09T09:52:59.1371936Z           "complete": false,
2026-06-09T09:52:59.1372033Z           "evidence": []
2026-06-09T09:52:59.1372127Z         },
2026-06-09T09:52:59.1372227Z         "impl": {
2026-06-09T09:52:59.1372328Z           "complete": true,
2026-06-09T09:52:59.1372427Z           "evidence": [
2026-06-09T09:52:59.1372518Z             {
2026-06-09T09:52:59.1372658Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:59.1372775Z               "line": 391
2026-06-09T09:52:59.1372861Z             }
2026-06-09T09:52:59.1372958Z           ]
2026-06-09T09:52:59.1373048Z         },
2026-06-09T09:52:59.1373147Z         "int": {
2026-06-09T09:52:59.1373363Z           "complete": false,
2026-06-09T09:52:59.1373471Z           "evidence": []
2026-06-09T09:52:59.1373556Z         },
2026-06-09T09:52:59.1373642Z         "unit": {
2026-06-09T09:52:59.1373736Z           "complete": true,
2026-06-09T09:52:59.1373825Z           "evidence": [
2026-06-09T09:52:59.1373912Z             {
2026-06-09T09:52:59.1374027Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-09T09:52:59.1374270Z               "line": 660
2026-06-09T09:52:59.1374360Z             }
2026-06-09T09:52:59.1374450Z           ]
2026-06-09T09:52:59.1374541Z         }
2026-06-09T09:52:59.1374623Z       }
2026-06-09T09:52:59.1374723Z     },
2026-06-09T09:52:59.1374807Z     {
2026-06-09T09:52:59.1374909Z       "id": "REQ-STORE-1",
2026-06-09T09:52:59.1375815Z       "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-09T09:52:59.1375920Z       "requiredStages": [
2026-06-09T09:52:59.1376019Z         "impl",
2026-06-09T09:52:59.1376185Z         "unit"
2026-06-09T09:52:59.1376284Z       ],
2026-06-09T09:52:59.1376392Z       "stages": {
2026-06-09T09:52:59.1376488Z         "doc": {
2026-06-09T09:52:59.1376589Z           "complete": false,
2026-06-09T09:52:59.1376679Z           "evidence": []
2026-06-09T09:52:59.1376769Z         },
2026-06-09T09:52:59.1376851Z         "impl": {
2026-06-09T09:52:59.1376942Z           "complete": true,
2026-06-09T09:52:59.1377040Z           "evidence": [
2026-06-09T09:52:59.1377123Z             {
2026-06-09T09:52:59.1377313Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-09T09:52:59.1377403Z               "line": 23
2026-06-09T09:52:59.1377504Z             },
2026-06-09T09:52:59.1377584Z             {
2026-06-09T09:52:59.1377723Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-09T09:52:59.1377819Z               "line": 46
2026-06-09T09:52:59.1377904Z             },
2026-06-09T09:52:59.1377994Z             {
2026-06-09T09:52:59.1378115Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-09T09:52:59.1378209Z               "line": 97
2026-06-09T09:52:59.1378295Z             },
2026-06-09T09:52:59.1378392Z             {
2026-06-09T09:52:59.1378519Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-09T09:52:59.1378610Z               "line": 125
2026-06-09T09:52:59.1378702Z             },
2026-06-09T09:52:59.1378783Z             {
2026-06-09T09:52:59.1378909Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-09T09:52:59.1379081Z               "line": 181
2026-06-09T09:52:59.1379159Z             },
2026-06-09T09:52:59.1379262Z             {
2026-06-09T09:52:59.1379391Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-09T09:52:59.1379511Z               "line": 205
2026-06-09T09:52:59.1379605Z             },
2026-06-09T09:52:59.1379702Z             {
2026-06-09T09:52:59.1379821Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-09T09:52:59.1379920Z               "line": 441
2026-06-09T09:52:59.1380016Z             },
2026-06-09T09:52:59.1380106Z             {
2026-06-09T09:52:59.1380249Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-09T09:52:59.1380350Z               "line": 25
2026-06-09T09:52:59.1380449Z             },
2026-06-09T09:52:59.1380544Z             {
2026-06-09T09:52:59.1380689Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-09T09:52:59.1380802Z               "line": 104
2026-06-09T09:52:59.1380893Z             },
2026-06-09T09:52:59.1380990Z             {
2026-06-09T09:52:59.1381111Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-09T09:52:59.1381211Z               "line": 132
2026-06-09T09:52:59.1381297Z             },
2026-06-09T09:52:59.1381387Z             {
2026-06-09T09:52:59.1381634Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-09T09:52:59.1381725Z               "line": 148
2026-06-09T09:52:59.1381814Z             },
2026-06-09T09:52:59.1381900Z             {
2026-06-09T09:52:59.1384940Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-09T09:52:59.1385062Z               "line": 166
2026-06-09T09:52:59.1385315Z             },
2026-06-09T09:52:59.1385421Z             {
2026-06-09T09:52:59.1385578Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-09T09:52:59.1385683Z               "line": 175
2026-06-09T09:52:59.1385775Z             },
2026-06-09T09:52:59.1385888Z             {
2026-06-09T09:52:59.1386041Z               "path": "crates/spt-store/src/project.rs",
2026-06-09T09:52:59.1386132Z               "line": 16
2026-06-09T09:52:59.1386231Z             },
2026-06-09T09:52:59.1386308Z             {
2026-06-09T09:52:59.1386428Z               "path": "crates/spt-store/src/project.rs",
2026-06-09T09:52:59.1386541Z               "line": 63
2026-06-09T09:52:59.1386649Z             }
2026-06-09T09:52:59.1386731Z           ]
2026-06-09T09:52:59.1386811Z         },
2026-06-09T09:52:59.1386901Z         "int": {
2026-06-09T09:52:59.1386995Z           "complete": false,
2026-06-09T09:52:59.1387086Z           "evidence": []
2026-06-09T09:52:59.1387178Z         },
2026-06-09T09:52:59.1387276Z         "unit": {
2026-06-09T09:52:59.1387373Z           "complete": true,
2026-06-09T09:52:59.1387459Z           "evidence": [
2026-06-09T09:52:59.1387600Z             {
2026-06-09T09:52:59.1387726Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-09T09:52:59.1387821Z               "line": 558
2026-06-09T09:52:59.1387901Z             },
2026-06-09T09:52:59.1387993Z             {
2026-06-09T09:52:59.1388121Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-09T09:52:59.1388207Z               "line": 568
2026-06-09T09:52:59.1388283Z             },
2026-06-09T09:52:59.1388370Z             {
2026-06-09T09:52:59.1388498Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-09T09:52:59.1388574Z               "line": 590
2026-06-09T09:52:59.1388661Z             },
2026-06-09T09:52:59.1388750Z             {
2026-06-09T09:52:59.1388884Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-09T09:52:59.1389079Z               "line": 606
2026-06-09T09:52:59.1389170Z             },
2026-06-09T09:52:59.1389267Z             {
2026-06-09T09:52:59.1389390Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-09T09:52:59.1389493Z               "line": 629
2026-06-09T09:52:59.1389593Z             },
2026-06-09T09:52:59.1389680Z             {
2026-06-09T09:52:59.1389822Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-09T09:52:59.1389913Z               "line": 440
2026-06-09T09:52:59.1390009Z             },
2026-06-09T09:52:59.1390094Z             {
2026-06-09T09:52:59.1390228Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-09T09:52:59.1390333Z               "line": 475
2026-06-09T09:52:59.1390419Z             },
2026-06-09T09:52:59.1390523Z             {
2026-06-09T09:52:59.1390629Z               "path": "crates/spt-store/src/project.rs",
2026-06-09T09:52:59.1390719Z               "line": 120
2026-06-09T09:52:59.1390804Z             },
2026-06-09T09:52:59.1390886Z             {
2026-06-09T09:52:59.1391009Z               "path": "crates/spt-store/src/project.rs",
2026-06-09T09:52:59.1391095Z               "line": 128
2026-06-09T09:52:59.1391182Z             }
2026-06-09T09:52:59.1391268Z           ]
2026-06-09T09:52:59.1391352Z         }
2026-06-09T09:52:59.1391438Z       }
2026-06-09T09:52:59.1391521Z     },
2026-06-09T09:52:59.1391611Z     {
2026-06-09T09:52:59.1391705Z       "id": "REQ-SUBNET-1",
2026-06-09T09:52:59.1392036Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-09T09:52:59.1392126Z       "requiredStages": [
2026-06-09T09:52:59.1392322Z         "impl",
2026-06-09T09:52:59.1392422Z         "unit"
2026-06-09T09:52:59.1392499Z       ],
2026-06-09T09:52:59.1392589Z       "stages": {
2026-06-09T09:52:59.1392674Z         "doc": {
2026-06-09T09:52:59.1392775Z           "complete": false,
2026-06-09T09:52:59.1392862Z           "evidence": []
2026-06-09T09:52:59.1392952Z         },
2026-06-09T09:52:59.1393119Z         "impl": {
2026-06-09T09:52:59.1393209Z           "complete": true,
2026-06-09T09:52:59.1393314Z           "evidence": [
2026-06-09T09:52:59.1393414Z             {
2026-06-09T09:52:59.1393566Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.1393657Z               "line": 265
2026-06-09T09:52:59.1393744Z             },
2026-06-09T09:52:59.1393848Z             {
2026-06-09T09:52:59.1393976Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.1394083Z               "line": 571
2026-06-09T09:52:59.1394168Z             },
2026-06-09T09:52:59.1394268Z             {
2026-06-09T09:52:59.1394383Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1394492Z               "line": 2415
2026-06-09T09:52:59.1394591Z             },
2026-06-09T09:52:59.1394676Z             {
2026-06-09T09:52:59.1394796Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1394889Z               "line": 2580
2026-06-09T09:52:59.1394988Z             },
2026-06-09T09:52:59.1395070Z             {
2026-06-09T09:52:59.1395175Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1395265Z               "line": 2599
2026-06-09T09:52:59.1395342Z             },
2026-06-09T09:52:59.1395471Z             {
2026-06-09T09:52:59.1395570Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1395662Z               "line": 2660
2026-06-09T09:52:59.1395743Z             },
2026-06-09T09:52:59.1395829Z             {
2026-06-09T09:52:59.1395937Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1396025Z               "line": 2702
2026-06-09T09:52:59.1396119Z             },
2026-06-09T09:52:59.1396200Z             {
2026-06-09T09:52:59.1396306Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1396401Z               "line": 2875
2026-06-09T09:52:59.1396486Z             },
2026-06-09T09:52:59.1396572Z             {
2026-06-09T09:52:59.1396678Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1396777Z               "line": 2945
2026-06-09T09:52:59.1396858Z             },
2026-06-09T09:52:59.1396945Z             {
2026-06-09T09:52:59.1397045Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1397153Z               "line": 3169
2026-06-09T09:52:59.1397267Z             },
2026-06-09T09:52:59.1397348Z             {
2026-06-09T09:52:59.1397465Z               "path": "crates/spt/src/wansend.rs",
2026-06-09T09:52:59.1397555Z               "line": 418
2026-06-09T09:52:59.1397642Z             }
2026-06-09T09:52:59.1397724Z           ]
2026-06-09T09:52:59.1397822Z         },
2026-06-09T09:52:59.1397938Z         "int": {
2026-06-09T09:52:59.1398033Z           "complete": false,
2026-06-09T09:52:59.1398133Z           "evidence": []
2026-06-09T09:52:59.1398214Z         },
2026-06-09T09:52:59.1398309Z         "unit": {
2026-06-09T09:52:59.1398400Z           "complete": true,
2026-06-09T09:52:59.1398504Z           "evidence": [
2026-06-09T09:52:59.1398605Z             {
2026-06-09T09:52:59.1398743Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.1398853Z               "line": 1446
2026-06-09T09:52:59.1399029Z             },
2026-06-09T09:52:59.1399124Z             {
2026-06-09T09:52:59.1399235Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1399344Z               "line": 6855
2026-06-09T09:52:59.1399439Z             },
2026-06-09T09:52:59.1399531Z             {
2026-06-09T09:52:59.1399635Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1399721Z               "line": 7025
2026-06-09T09:52:59.1399803Z             },
2026-06-09T09:52:59.1399987Z             {
2026-06-09T09:52:59.1400096Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1400187Z               "line": 7032
2026-06-09T09:52:59.1400269Z             },
2026-06-09T09:52:59.1400358Z             {
2026-06-09T09:52:59.1400463Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1400555Z               "line": 7085
2026-06-09T09:52:59.1400739Z             },
2026-06-09T09:52:59.1400822Z             {
2026-06-09T09:52:59.1400926Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1401016Z               "line": 7102
2026-06-09T09:52:59.1401102Z             },
2026-06-09T09:52:59.1401184Z             {
2026-06-09T09:52:59.1401289Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1401379Z               "line": 7116
2026-06-09T09:52:59.1401461Z             },
2026-06-09T09:52:59.1401546Z             {
2026-06-09T09:52:59.1401646Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1401737Z               "line": 7214
2026-06-09T09:52:59.1401809Z             },
2026-06-09T09:52:59.1401894Z             {
2026-06-09T09:52:59.1401993Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1402081Z               "line": 7364
2026-06-09T09:52:59.1402157Z             }
2026-06-09T09:52:59.1402246Z           ]
2026-06-09T09:52:59.1402350Z         }
2026-06-09T09:52:59.1402436Z       }
2026-06-09T09:52:59.1402535Z     },
2026-06-09T09:52:59.1402630Z     {
2026-06-09T09:52:59.1402725Z       "id": "REQ-SUBNET-2",
2026-06-09T09:52:59.1402992Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-09T09:52:59.1403093Z       "requiredStages": [
2026-06-09T09:52:59.1403197Z         "impl",
2026-06-09T09:52:59.1403287Z         "unit",
2026-06-09T09:52:59.1403389Z         "int"
2026-06-09T09:52:59.1403493Z       ],
2026-06-09T09:52:59.1403587Z       "stages": {
2026-06-09T09:52:59.1403684Z         "doc": {
2026-06-09T09:52:59.1403784Z           "complete": true,
2026-06-09T09:52:59.1403892Z           "evidence": [
2026-06-09T09:52:59.1403979Z             {
2026-06-09T09:52:59.1404151Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-09T09:52:59.1404241Z               "line": 60
2026-06-09T09:52:59.1404323Z             }
2026-06-09T09:52:59.1404413Z           ]
2026-06-09T09:52:59.1404494Z         },
2026-06-09T09:52:59.1404589Z         "impl": {
2026-06-09T09:52:59.1404681Z           "complete": true,
2026-06-09T09:52:59.1404789Z           "evidence": [
2026-06-09T09:52:59.1404875Z             {
2026-06-09T09:52:59.1404996Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-09T09:52:59.1405090Z               "line": 548
2026-06-09T09:52:59.1405170Z             },
2026-06-09T09:52:59.1405261Z             {
2026-06-09T09:52:59.1405375Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-09T09:52:59.1405468Z               "line": 655
2026-06-09T09:52:59.1405558Z             },
2026-06-09T09:52:59.1405645Z             {
2026-06-09T09:52:59.1405773Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-09T09:52:59.1405859Z               "line": 448
2026-06-09T09:52:59.1405951Z             },
2026-06-09T09:52:59.1406031Z             {
2026-06-09T09:52:59.1406159Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-09T09:52:59.1406256Z               "line": 578
2026-06-09T09:52:59.1406341Z             },
2026-06-09T09:52:59.1406431Z             {
2026-06-09T09:52:59.1406556Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-09T09:52:59.1406651Z               "line": 26
2026-06-09T09:52:59.1406741Z             },
2026-06-09T09:52:59.1406827Z             {
2026-06-09T09:52:59.1406947Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-09T09:52:59.1407032Z               "line": 60
2026-06-09T09:52:59.1407118Z             },
2026-06-09T09:52:59.1407200Z             {
2026-06-09T09:52:59.1407313Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-09T09:52:59.1407476Z               "line": 168
2026-06-09T09:52:59.1407568Z             },
2026-06-09T09:52:59.1407656Z             {
2026-06-09T09:52:59.1407769Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-09T09:52:59.1407856Z               "line": 295
2026-06-09T09:52:59.1407936Z             },
2026-06-09T09:52:59.1408021Z             {
2026-06-09T09:52:59.1408135Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-09T09:52:59.1408326Z               "line": 417
2026-06-09T09:52:59.1408411Z             },
2026-06-09T09:52:59.1408488Z             {
2026-06-09T09:52:59.1408622Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-09T09:52:59.1408712Z               "line": 252
2026-06-09T09:52:59.1408793Z             },
2026-06-09T09:52:59.1408879Z             {
2026-06-09T09:52:59.1409074Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1409170Z               "line": 2626
2026-06-09T09:52:59.1409256Z             },
2026-06-09T09:52:59.1409341Z             {
2026-06-09T09:52:59.1409452Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1409547Z               "line": 3108
2026-06-09T09:52:59.1409637Z             },
2026-06-09T09:52:59.1409718Z             {
2026-06-09T09:52:59.1409828Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1409913Z               "line": 3731
2026-06-09T09:52:59.1410004Z             }
2026-06-09T09:52:59.1410086Z           ]
2026-06-09T09:52:59.1410171Z         },
2026-06-09T09:52:59.1410271Z         "int": {
2026-06-09T09:52:59.1410358Z           "complete": true,
2026-06-09T09:52:59.1410453Z           "evidence": [
2026-06-09T09:52:59.1410538Z             {
2026-06-09T09:52:59.1410665Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-09T09:52:59.1410752Z               "line": 22
2026-06-09T09:52:59.1410839Z             },
2026-06-09T09:52:59.1410923Z             {
2026-06-09T09:52:59.1411038Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.1411139Z               "line": 575
2026-06-09T09:52:59.1411219Z             },
2026-06-09T09:52:59.1411304Z             {
2026-06-09T09:52:59.1411420Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.1411511Z               "line": 792
2026-06-09T09:52:59.1411595Z             }
2026-06-09T09:52:59.1411677Z           ]
2026-06-09T09:52:59.1411758Z         },
2026-06-09T09:52:59.1411849Z         "unit": {
2026-06-09T09:52:59.1411934Z           "complete": true,
2026-06-09T09:52:59.1412021Z           "evidence": [
2026-06-09T09:52:59.1412106Z             {
2026-06-09T09:52:59.1412220Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-09T09:52:59.1412297Z               "line": 586
2026-06-09T09:52:59.1412369Z             },
2026-06-09T09:52:59.1412449Z             {
2026-06-09T09:52:59.1412558Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1412665Z               "line": 6895
2026-06-09T09:52:59.1412750Z             },
2026-06-09T09:52:59.1412844Z             {
2026-06-09T09:52:59.1412944Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1413035Z               "line": 7561
2026-06-09T09:52:59.1413119Z             }
2026-06-09T09:52:59.1413204Z           ]
2026-06-09T09:52:59.1413295Z         }
2026-06-09T09:52:59.1413406Z       }
2026-06-09T09:52:59.1413489Z     },
2026-06-09T09:52:59.1413571Z     {
2026-06-09T09:52:59.1413668Z       "id": "REQ-SUBNET-3",
2026-06-09T09:52:59.1413939Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-09T09:52:59.1414038Z       "requiredStages": [
2026-06-09T09:52:59.1414119Z         "impl",
2026-06-09T09:52:59.1414205Z         "unit"
2026-06-09T09:52:59.1414292Z       ],
2026-06-09T09:52:59.1414372Z       "stages": {
2026-06-09T09:52:59.1414462Z         "doc": {
2026-06-09T09:52:59.1414549Z           "complete": false,
2026-06-09T09:52:59.1414645Z           "evidence": []
2026-06-09T09:52:59.1414721Z         },
2026-06-09T09:52:59.1414912Z         "impl": {
2026-06-09T09:52:59.1415011Z           "complete": true,
2026-06-09T09:52:59.1415097Z           "evidence": [
2026-06-09T09:52:59.1415179Z             {
2026-06-09T09:52:59.1415312Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.1415407Z               "line": 152
2026-06-09T09:52:59.1415494Z             },
2026-06-09T09:52:59.1415669Z             {
2026-06-09T09:52:59.1415796Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.1415883Z               "line": 283
2026-06-09T09:52:59.1415967Z             },
2026-06-09T09:52:59.1416047Z             {
2026-06-09T09:52:59.1416176Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.1416258Z               "line": 413
2026-06-09T09:52:59.1416347Z             },
2026-06-09T09:52:59.1416433Z             {
2026-06-09T09:52:59.1416553Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.1416639Z               "line": 452
2026-06-09T09:52:59.1416724Z             },
2026-06-09T09:52:59.1416811Z             {
2026-06-09T09:52:59.1416930Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.1417019Z               "line": 125
2026-06-09T09:52:59.1417101Z             },
2026-06-09T09:52:59.1417192Z             {
2026-06-09T09:52:59.1417334Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.1417431Z               "line": 237
2026-06-09T09:52:59.1417517Z             },
2026-06-09T09:52:59.1417601Z             {
2026-06-09T09:52:59.1417711Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.1417808Z               "line": 248
2026-06-09T09:52:59.1417897Z             },
2026-06-09T09:52:59.1417983Z             {
2026-06-09T09:52:59.1418094Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.1418188Z               "line": 269
2026-06-09T09:52:59.1418278Z             },
2026-06-09T09:52:59.1418358Z             {
2026-06-09T09:52:59.1418482Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.1418561Z               "line": 573
2026-06-09T09:52:59.1418651Z             },
2026-06-09T09:52:59.1418723Z             {
2026-06-09T09:52:59.1418844Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.1418938Z               "line": 632
2026-06-09T09:52:59.1419087Z             },
2026-06-09T09:52:59.1419173Z             {
2026-06-09T09:52:59.1419310Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-09T09:52:59.1419397Z               "line": 61
2026-06-09T09:52:59.1419482Z             },
2026-06-09T09:52:59.1419562Z             {
2026-06-09T09:52:59.1419688Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-09T09:52:59.1419773Z               "line": 90
2026-06-09T09:52:59.1419863Z             },
2026-06-09T09:52:59.1419944Z             {
2026-06-09T09:52:59.1420055Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-09T09:52:59.1420145Z               "line": 125
2026-06-09T09:52:59.1420230Z             },
2026-06-09T09:52:59.1420307Z             {
2026-06-09T09:52:59.1420421Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-09T09:52:59.1420507Z               "line": 9
2026-06-09T09:52:59.1420608Z             },
2026-06-09T09:52:59.1420694Z             {
2026-06-09T09:52:59.1420797Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1420893Z               "line": 2945
2026-06-09T09:52:59.1420976Z             },
2026-06-09T09:52:59.1421056Z             {
2026-06-09T09:52:59.1421169Z               "path": "crates/spt/src/wansend.rs",
2026-06-09T09:52:59.1421254Z               "line": 445
2026-06-09T09:52:59.1421341Z             }
2026-06-09T09:52:59.1421427Z           ]
2026-06-09T09:52:59.1421516Z         },
2026-06-09T09:52:59.1421603Z         "int": {
2026-06-09T09:52:59.1421694Z           "complete": false,
2026-06-09T09:52:59.1421788Z           "evidence": []
2026-06-09T09:52:59.1421869Z         },
2026-06-09T09:52:59.1422056Z         "unit": {
2026-06-09T09:52:59.1422151Z           "complete": true,
2026-06-09T09:52:59.1422242Z           "evidence": [
2026-06-09T09:52:59.1422323Z             {
2026-06-09T09:52:59.1422446Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.1422537Z               "line": 1273
2026-06-09T09:52:59.1422619Z             },
2026-06-09T09:52:59.1422795Z             {
2026-06-09T09:52:59.1422915Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.1423005Z               "line": 1575
2026-06-09T09:52:59.1423086Z             },
2026-06-09T09:52:59.1423157Z             {
2026-06-09T09:52:59.1423277Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-09T09:52:59.1423367Z               "line": 885
2026-06-09T09:52:59.1423457Z             },
2026-06-09T09:52:59.1423543Z             {
2026-06-09T09:52:59.1423665Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.1423750Z               "line": 941
2026-06-09T09:52:59.1423831Z             },
2026-06-09T09:52:59.1423913Z             {
2026-06-09T09:52:59.1424027Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.1424117Z               "line": 990
2026-06-09T09:52:59.1424198Z             },
2026-06-09T09:52:59.1424279Z             {
2026-06-09T09:52:59.1424398Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.1424490Z               "line": 1049
2026-06-09T09:52:59.1424575Z             },
2026-06-09T09:52:59.1424656Z             {
2026-06-09T09:52:59.1424780Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-09T09:52:59.1424866Z               "line": 233
2026-06-09T09:52:59.1424947Z             },
2026-06-09T09:52:59.1425036Z             {
2026-06-09T09:52:59.1425147Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-09T09:52:59.1425238Z               "line": 49
2026-06-09T09:52:59.1425323Z             },
2026-06-09T09:52:59.1425405Z             {
2026-06-09T09:52:59.1425515Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1425599Z               "line": 7214
2026-06-09T09:52:59.1425685Z             },
2026-06-09T09:52:59.1425768Z             {
2026-06-09T09:52:59.1425877Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1425958Z               "line": 7319
2026-06-09T09:52:59.1426059Z             },
2026-06-09T09:52:59.1426140Z             {
2026-06-09T09:52:59.1426238Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1426328Z               "line": 7527
2026-06-09T09:52:59.1426447Z             }
2026-06-09T09:52:59.1426537Z           ]
2026-06-09T09:52:59.1426612Z         }
2026-06-09T09:52:59.1426708Z       }
2026-06-09T09:52:59.1426818Z     },
2026-06-09T09:52:59.1426898Z     {
2026-06-09T09:52:59.1426993Z       "id": "REQ-SUBNET-4",
2026-06-09T09:52:59.1427274Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-09T09:52:59.1427366Z       "requiredStages": [
2026-06-09T09:52:59.1427452Z         "impl",
2026-06-09T09:52:59.1427537Z         "unit"
2026-06-09T09:52:59.1427618Z       ],
2026-06-09T09:52:59.1427700Z       "stages": {
2026-06-09T09:52:59.1427785Z         "doc": {
2026-06-09T09:52:59.1427871Z           "complete": true,
2026-06-09T09:52:59.1427961Z           "evidence": [
2026-06-09T09:52:59.1428044Z             {
2026-06-09T09:52:59.1428209Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-09T09:52:59.1428296Z               "line": 60
2026-06-09T09:52:59.1428378Z             }
2026-06-09T09:52:59.1428466Z           ]
2026-06-09T09:52:59.1428548Z         },
2026-06-09T09:52:59.1428635Z         "impl": {
2026-06-09T09:52:59.1428716Z           "complete": true,
2026-06-09T09:52:59.1428810Z           "evidence": [
2026-06-09T09:52:59.1428895Z             {
2026-06-09T09:52:59.1429098Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1429193Z               "line": 2415
2026-06-09T09:52:59.1429423Z             },
2026-06-09T09:52:59.1429508Z             {
2026-06-09T09:52:59.1429608Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1429704Z               "line": 3698
2026-06-09T09:52:59.1429784Z             },
2026-06-09T09:52:59.1429865Z             {
2026-06-09T09:52:59.1429967Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1430146Z               "line": 3731
2026-06-09T09:52:59.1430228Z             }
2026-06-09T09:52:59.1430310Z           ]
2026-06-09T09:52:59.1430395Z         },
2026-06-09T09:52:59.1430481Z         "int": {
2026-06-09T09:52:59.1430567Z           "complete": false,
2026-06-09T09:52:59.1430657Z           "evidence": []
2026-06-09T09:52:59.1430738Z         },
2026-06-09T09:52:59.1430824Z         "unit": {
2026-06-09T09:52:59.1430911Z           "complete": true,
2026-06-09T09:52:59.1431000Z           "evidence": [
2026-06-09T09:52:59.1431081Z             {
2026-06-09T09:52:59.1431183Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1431273Z               "line": 7011
2026-06-09T09:52:59.1431353Z             },
2026-06-09T09:52:59.1431439Z             {
2026-06-09T09:52:59.1431536Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1431630Z               "line": 7085
2026-06-09T09:52:59.1431715Z             }
2026-06-09T09:52:59.1431795Z           ]
2026-06-09T09:52:59.1431887Z         }
2026-06-09T09:52:59.1431963Z       }
2026-06-09T09:52:59.1432053Z     },
2026-06-09T09:52:59.1432134Z     {
2026-06-09T09:52:59.1432235Z       "id": "REQ-SUBNET-5",
2026-06-09T09:52:59.1433527Z       "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-09T09:52:59.1433641Z       "requiredStages": [
2026-06-09T09:52:59.1433732Z         "impl",
2026-06-09T09:52:59.1433809Z         "unit",
2026-06-09T09:52:59.1433898Z         "int"
2026-06-09T09:52:59.1433983Z       ],
2026-06-09T09:52:59.1434069Z       "stages": {
2026-06-09T09:52:59.1434159Z         "doc": {
2026-06-09T09:52:59.1434253Z           "complete": false,
2026-06-09T09:52:59.1434343Z           "evidence": []
2026-06-09T09:52:59.1434453Z         },
2026-06-09T09:52:59.1434544Z         "impl": {
2026-06-09T09:52:59.1434638Z           "complete": true,
2026-06-09T09:52:59.1434725Z           "evidence": [
2026-06-09T09:52:59.1434812Z             {
2026-06-09T09:52:59.1434939Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-09T09:52:59.1435030Z               "line": 126
2026-06-09T09:52:59.1435112Z             },
2026-06-09T09:52:59.1435202Z             {
2026-06-09T09:52:59.1435326Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-09T09:52:59.1435412Z               "line": 413
2026-06-09T09:52:59.1435497Z             },
2026-06-09T09:52:59.1435578Z             {
2026-06-09T09:52:59.1435703Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-09T09:52:59.1435788Z               "line": 74
2026-06-09T09:52:59.1435874Z             },
2026-06-09T09:52:59.1435960Z             {
2026-06-09T09:52:59.1436080Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.1436174Z               "line": 357
2026-06-09T09:52:59.1436260Z             },
2026-06-09T09:52:59.1436342Z             {
2026-06-09T09:52:59.1436460Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-09T09:52:59.1436555Z               "line": 31
2026-06-09T09:52:59.1436643Z             },
2026-06-09T09:52:59.1436728Z             {
2026-06-09T09:52:59.1436850Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-09T09:52:59.1436931Z               "line": 50
2026-06-09T09:52:59.1437017Z             },
2026-06-09T09:52:59.1437101Z             {
2026-06-09T09:52:59.1437378Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-09T09:52:59.1437468Z               "line": 69
2026-06-09T09:52:59.1437549Z             },
2026-06-09T09:52:59.1437636Z             {
2026-06-09T09:52:59.1437755Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-09T09:52:59.1437844Z               "line": 113
2026-06-09T09:52:59.1437926Z             },
2026-06-09T09:52:59.1438102Z             {
2026-06-09T09:52:59.1438226Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-09T09:52:59.1438313Z               "line": 25
2026-06-09T09:52:59.1438403Z             },
2026-06-09T09:52:59.1438478Z             {
2026-06-09T09:52:59.1438604Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-09T09:52:59.1438698Z               "line": 34
2026-06-09T09:52:59.1438779Z             },
2026-06-09T09:52:59.1438861Z             {
2026-06-09T09:52:59.1439060Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-09T09:52:59.1439156Z               "line": 17
2026-06-09T09:52:59.1439238Z             },
2026-06-09T09:52:59.1439323Z             {
2026-06-09T09:52:59.1439455Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1439536Z               "line": 3656
2026-06-09T09:52:59.1439612Z             },
2026-06-09T09:52:59.1439682Z             {
2026-06-09T09:52:59.1439781Z               "path": "crates/spt/src/wansend.rs",
2026-06-09T09:52:59.1439868Z               "line": 419
2026-06-09T09:52:59.1439955Z             }
2026-06-09T09:52:59.1440063Z           ]
2026-06-09T09:52:59.1440149Z         },
2026-06-09T09:52:59.1440235Z         "int": {
2026-06-09T09:52:59.1440321Z           "complete": true,
2026-06-09T09:52:59.1440421Z           "evidence": [
2026-06-09T09:52:59.1440498Z             {
2026-06-09T09:52:59.1440627Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-09T09:52:59.1440711Z               "line": 814
2026-06-09T09:52:59.1440813Z             }
2026-06-09T09:52:59.1440893Z           ]
2026-06-09T09:52:59.1440960Z         },
2026-06-09T09:52:59.1441041Z         "unit": {
2026-06-09T09:52:59.1441132Z           "complete": true,
2026-06-09T09:52:59.1441222Z           "evidence": [
2026-06-09T09:52:59.1441312Z             {
2026-06-09T09:52:59.1441423Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-09T09:52:59.1441518Z               "line": 341
2026-06-09T09:52:59.1441603Z             },
2026-06-09T09:52:59.1441685Z             {
2026-06-09T09:52:59.1441800Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-09T09:52:59.1441894Z               "line": 151
2026-06-09T09:52:59.1441980Z             },
2026-06-09T09:52:59.1442058Z             {
2026-06-09T09:52:59.1442185Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-09T09:52:59.1442275Z               "line": 61
2026-06-09T09:52:59.1442360Z             },
2026-06-09T09:52:59.1442437Z             {
2026-06-09T09:52:59.1442556Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-09T09:52:59.1442655Z               "line": 111
2026-06-09T09:52:59.1442733Z             },
2026-06-09T09:52:59.1442819Z             {
2026-06-09T09:52:59.1442932Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-09T09:52:59.1443024Z               "line": 138
2026-06-09T09:52:59.1443114Z             },
2026-06-09T09:52:59.1443191Z             {
2026-06-09T09:52:59.1443314Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-09T09:52:59.1443406Z               "line": 148
2026-06-09T09:52:59.1443491Z             },
2026-06-09T09:52:59.1443566Z             {
2026-06-09T09:52:59.1443677Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1443772Z               "line": 6912
2026-06-09T09:52:59.1443853Z             }
2026-06-09T09:52:59.1443938Z           ]
2026-06-09T09:52:59.1444016Z         }
2026-06-09T09:52:59.1444101Z       }
2026-06-09T09:52:59.1444186Z     },
2026-06-09T09:52:59.1444273Z     {
2026-06-09T09:52:59.1444360Z       "id": "REQ-SUBNET-6",
2026-06-09T09:52:59.1445152Z       "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-09T09:52:59.1445256Z       "requiredStages": [
2026-06-09T09:52:59.1445428Z         "impl",
2026-06-09T09:52:59.1445513Z         "unit"
2026-06-09T09:52:59.1445590Z       ],
2026-06-09T09:52:59.1445681Z       "stages": {
2026-06-09T09:52:59.1445771Z         "doc": {
2026-06-09T09:52:59.1445861Z           "complete": false,
2026-06-09T09:52:59.1445949Z           "evidence": []
2026-06-09T09:52:59.1446029Z         },
2026-06-09T09:52:59.1446119Z         "impl": {
2026-06-09T09:52:59.1446210Z           "complete": true,
2026-06-09T09:52:59.1446301Z           "evidence": [
2026-06-09T09:52:59.1446386Z             {
2026-06-09T09:52:59.1446505Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.1446597Z               "line": 238
2026-06-09T09:52:59.1446682Z             },
2026-06-09T09:52:59.1446763Z             {
2026-06-09T09:52:59.1446869Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1446959Z               "line": 3314
2026-06-09T09:52:59.1447049Z             },
2026-06-09T09:52:59.1447125Z             {
2026-06-09T09:52:59.1447250Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1447344Z               "line": 3331
2026-06-09T09:52:59.1447429Z             },
2026-06-09T09:52:59.1447510Z             {
2026-06-09T09:52:59.1447610Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1447699Z               "line": 3384
2026-06-09T09:52:59.1447780Z             },
2026-06-09T09:52:59.1447866Z             {
2026-06-09T09:52:59.1447962Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1448051Z               "line": 3407
2026-06-09T09:52:59.1448128Z             }
2026-06-09T09:52:59.1448220Z           ]
2026-06-09T09:52:59.1448310Z         },
2026-06-09T09:52:59.1448385Z         "int": {
2026-06-09T09:52:59.1448487Z           "complete": false,
2026-06-09T09:52:59.1448572Z           "evidence": []
2026-06-09T09:52:59.1448658Z         },
2026-06-09T09:52:59.1448738Z         "unit": {
2026-06-09T09:52:59.1448834Z           "complete": true,
2026-06-09T09:52:59.1448929Z           "evidence": [
2026-06-09T09:52:59.1449082Z             {
2026-06-09T09:52:59.1449187Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1449272Z               "line": 6926
2026-06-09T09:52:59.1449363Z             },
2026-06-09T09:52:59.1449441Z             {
2026-06-09T09:52:59.1449545Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1449640Z               "line": 6959
2026-06-09T09:52:59.1449717Z             },
2026-06-09T09:52:59.1449803Z             {
2026-06-09T09:52:59.1449902Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1449996Z               "line": 6968
2026-06-09T09:52:59.1450082Z             }
2026-06-09T09:52:59.1450168Z           ]
2026-06-09T09:52:59.1450252Z         }
2026-06-09T09:52:59.1450332Z       }
2026-06-09T09:52:59.1450418Z     },
2026-06-09T09:52:59.1450500Z     {
2026-06-09T09:52:59.1450594Z       "id": "REQ-SUBNET-7",
2026-06-09T09:52:59.1454547Z       "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-09T09:52:59.1454680Z       "requiredStages": [
2026-06-09T09:52:59.1454770Z         "impl",
2026-06-09T09:52:59.1454847Z         "unit"
2026-06-09T09:52:59.1454930Z       ],
2026-06-09T09:52:59.1455165Z       "stages": {
2026-06-09T09:52:59.1455256Z         "doc": {
2026-06-09T09:52:59.1455349Z           "complete": false,
2026-06-09T09:52:59.1455439Z           "evidence": []
2026-06-09T09:52:59.1455525Z         },
2026-06-09T09:52:59.1455612Z         "impl": {
2026-06-09T09:52:59.1455707Z           "complete": true,
2026-06-09T09:52:59.1455802Z           "evidence": [
2026-06-09T09:52:59.1455997Z             {
2026-06-09T09:52:59.1456136Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-09T09:52:59.1456227Z               "line": 17
2026-06-09T09:52:59.1456312Z             },
2026-06-09T09:52:59.1456398Z             {
2026-06-09T09:52:59.1456528Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-09T09:52:59.1456618Z               "line": 103
2026-06-09T09:52:59.1456698Z             },
2026-06-09T09:52:59.1456780Z             {
2026-06-09T09:52:59.1456899Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-09T09:52:59.1456994Z               "line": 312
2026-06-09T09:52:59.1457075Z             },
2026-06-09T09:52:59.1457162Z             {
2026-06-09T09:52:59.1457323Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.1457415Z               "line": 388
2026-06-09T09:52:59.1457505Z             },
2026-06-09T09:52:59.1457590Z             {
2026-06-09T09:52:59.1457725Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.1457820Z               "line": 160
2026-06-09T09:52:59.1457909Z             },
2026-06-09T09:52:59.1457994Z             {
2026-06-09T09:52:59.1458119Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.1458212Z               "line": 417
2026-06-09T09:52:59.1458297Z             },
2026-06-09T09:52:59.1458378Z             {
2026-06-09T09:52:59.1458508Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.1458602Z               "line": 590
2026-06-09T09:52:59.1458693Z             },
2026-06-09T09:52:59.1458775Z             {
2026-06-09T09:52:59.1458907Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.1459094Z               "line": 630
2026-06-09T09:52:59.1459175Z             },
2026-06-09T09:52:59.1459265Z             {
2026-06-09T09:52:59.1459385Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.1459480Z               "line": 686
2026-06-09T09:52:59.1459566Z             },
2026-06-09T09:52:59.1459652Z             {
2026-06-09T09:52:59.1459781Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-09T09:52:59.1459871Z               "line": 136
2026-06-09T09:52:59.1459957Z             },
2026-06-09T09:52:59.1460038Z             {
2026-06-09T09:52:59.1460157Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.1460242Z               "line": 139
2026-06-09T09:52:59.1460330Z             }
2026-06-09T09:52:59.1460415Z           ]
2026-06-09T09:52:59.1460504Z         },
2026-06-09T09:52:59.1460594Z         "int": {
2026-06-09T09:52:59.1460690Z           "complete": false,
2026-06-09T09:52:59.1460784Z           "evidence": []
2026-06-09T09:52:59.1460868Z         },
2026-06-09T09:52:59.1460955Z         "unit": {
2026-06-09T09:52:59.1461046Z           "complete": true,
2026-06-09T09:52:59.1461141Z           "evidence": [
2026-06-09T09:52:59.1461226Z             {
2026-06-09T09:52:59.1461351Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-09T09:52:59.1461446Z               "line": 136
2026-06-09T09:52:59.1461526Z             },
2026-06-09T09:52:59.1461613Z             {
2026-06-09T09:52:59.1461732Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-09T09:52:59.1461826Z               "line": 156
2026-06-09T09:52:59.1461914Z             },
2026-06-09T09:52:59.1461995Z             {
2026-06-09T09:52:59.1462123Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.1462208Z               "line": 905
2026-06-09T09:52:59.1462296Z             },
2026-06-09T09:52:59.1462480Z             {
2026-06-09T09:52:59.1462610Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-09T09:52:59.1462690Z               "line": 927
2026-06-09T09:52:59.1462766Z             },
2026-06-09T09:52:59.1462853Z             {
2026-06-09T09:52:59.1462977Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-09T09:52:59.1463163Z               "line": 1419
2026-06-09T09:52:59.1463245Z             },
2026-06-09T09:52:59.1463339Z             {
2026-06-09T09:52:59.1463457Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-09T09:52:59.1463543Z               "line": 985
2026-06-09T09:52:59.1463630Z             }
2026-06-09T09:52:59.1463714Z           ]
2026-06-09T09:52:59.1463804Z         }
2026-06-09T09:52:59.1463887Z       }
2026-06-09T09:52:59.1463978Z     },
2026-06-09T09:52:59.1464062Z     {
2026-06-09T09:52:59.1464154Z       "id": "REQ-SUBNET-8",
2026-06-09T09:52:59.1465321Z       "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-09T09:52:59.1465422Z       "requiredStages": [
2026-06-09T09:52:59.1465532Z         "impl",
2026-06-09T09:52:59.1465654Z         "unit"
2026-06-09T09:52:59.1465759Z       ],
2026-06-09T09:52:59.1465844Z       "stages": {
2026-06-09T09:52:59.1465928Z         "doc": {
2026-06-09T09:52:59.1466052Z           "complete": false,
2026-06-09T09:52:59.1466148Z           "evidence": []
2026-06-09T09:52:59.1466224Z         },
2026-06-09T09:52:59.1466314Z         "impl": {
2026-06-09T09:52:59.1466400Z           "complete": true,
2026-06-09T09:52:59.1466492Z           "evidence": [
2026-06-09T09:52:59.1466577Z             {
2026-06-09T09:52:59.1466706Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1466835Z               "line": 2703
2026-06-09T09:52:59.1466920Z             },
2026-06-09T09:52:59.1467006Z             {
2026-06-09T09:52:59.1467106Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1467206Z               "line": 2732
2026-06-09T09:52:59.1467306Z             },
2026-06-09T09:52:59.1467408Z             {
2026-06-09T09:52:59.1467516Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1467607Z               "line": 2749
2026-06-09T09:52:59.1467694Z             },
2026-06-09T09:52:59.1467774Z             {
2026-06-09T09:52:59.1467879Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1467965Z               "line": 3170
2026-06-09T09:52:59.1468051Z             }
2026-06-09T09:52:59.1468131Z           ]
2026-06-09T09:52:59.1468222Z         },
2026-06-09T09:52:59.1468308Z         "int": {
2026-06-09T09:52:59.1468399Z           "complete": false,
2026-06-09T09:52:59.1468498Z           "evidence": []
2026-06-09T09:52:59.1468578Z         },
2026-06-09T09:52:59.1468679Z         "unit": {
2026-06-09T09:52:59.1468772Z           "complete": true,
2026-06-09T09:52:59.1468862Z           "evidence": [
2026-06-09T09:52:59.1469039Z             {
2026-06-09T09:52:59.1469139Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1469234Z               "line": 7116
2026-06-09T09:52:59.1469316Z             }
2026-06-09T09:52:59.1469411Z           ]
2026-06-09T09:52:59.1469491Z         }
2026-06-09T09:52:59.1469577Z       }
2026-06-09T09:52:59.1469669Z     },
2026-06-09T09:52:59.1469745Z     {
2026-06-09T09:52:59.1469844Z       "id": "REQ-TERM-1",
2026-06-09T09:52:59.1470026Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-09T09:52:59.1470126Z       "requiredStages": [
2026-06-09T09:52:59.1470212Z         "impl",
2026-06-09T09:52:59.1470303Z         "unit"
2026-06-09T09:52:59.1470421Z       ],
2026-06-09T09:52:59.1470522Z       "stages": {
2026-06-09T09:52:59.1470603Z         "doc": {
2026-06-09T09:52:59.1470827Z           "complete": false,
2026-06-09T09:52:59.1470923Z           "evidence": []
2026-06-09T09:52:59.1471008Z         },
2026-06-09T09:52:59.1471097Z         "impl": {
2026-06-09T09:52:59.1471240Z           "complete": true,
2026-06-09T09:52:59.1471330Z           "evidence": [
2026-06-09T09:52:59.1471414Z             {
2026-06-09T09:52:59.1471544Z               "path": "crates/spt-term/src/pty.rs",
2026-06-09T09:52:59.1471834Z               "line": 59
2026-06-09T09:52:59.1471954Z             },
2026-06-09T09:52:59.1472039Z             {
2026-06-09T09:52:59.1472154Z               "path": "crates/spt-term/src/pty.rs",
2026-06-09T09:52:59.1472230Z               "line": 171
2026-06-09T09:52:59.1472316Z             },
2026-06-09T09:52:59.1472396Z             {
2026-06-09T09:52:59.1472526Z               "path": "crates/spt-term/src/surface.rs",
2026-06-09T09:52:59.1472607Z               "line": 100
2026-06-09T09:52:59.1472692Z             }
2026-06-09T09:52:59.1472778Z           ]
2026-06-09T09:52:59.1472865Z         },
2026-06-09T09:52:59.1472950Z         "int": {
2026-06-09T09:52:59.1473040Z           "complete": false,
2026-06-09T09:52:59.1473132Z           "evidence": []
2026-06-09T09:52:59.1473217Z         },
2026-06-09T09:52:59.1473293Z         "unit": {
2026-06-09T09:52:59.1473389Z           "complete": true,
2026-06-09T09:52:59.1473476Z           "evidence": [
2026-06-09T09:52:59.1473570Z             {
2026-06-09T09:52:59.1473684Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-09T09:52:59.1473776Z               "line": 24
2026-06-09T09:52:59.1473857Z             },
2026-06-09T09:52:59.1473941Z             {
2026-06-09T09:52:59.1474060Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-09T09:52:59.1474147Z               "line": 56
2026-06-09T09:52:59.1474232Z             }
2026-06-09T09:52:59.1474307Z           ]
2026-06-09T09:52:59.1474394Z         }
2026-06-09T09:52:59.1474471Z       }
2026-06-09T09:52:59.1474561Z     },
2026-06-09T09:52:59.1474651Z     {
2026-06-09T09:52:59.1474743Z       "id": "REQ-TERM-2",
2026-06-09T09:52:59.1474927Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-09T09:52:59.1475023Z       "requiredStages": [
2026-06-09T09:52:59.1475114Z         "impl",
2026-06-09T09:52:59.1475200Z         "unit"
2026-06-09T09:52:59.1475285Z       ],
2026-06-09T09:52:59.1475377Z       "stages": {
2026-06-09T09:52:59.1475462Z         "doc": {
2026-06-09T09:52:59.1475566Z           "complete": false,
2026-06-09T09:52:59.1475658Z           "evidence": []
2026-06-09T09:52:59.1475744Z         },
2026-06-09T09:52:59.1475828Z         "impl": {
2026-06-09T09:52:59.1475929Z           "complete": true,
2026-06-09T09:52:59.1476026Z           "evidence": [
2026-06-09T09:52:59.1476111Z             {
2026-06-09T09:52:59.1476229Z               "path": "crates/spt-term/src/surface.rs",
2026-06-09T09:52:59.1476314Z               "line": 117
2026-06-09T09:52:59.1476400Z             },
2026-06-09T09:52:59.1476479Z             {
2026-06-09T09:52:59.1476602Z               "path": "crates/spt-term/src/surface.rs",
2026-06-09T09:52:59.1476694Z               "line": 127
2026-06-09T09:52:59.1476775Z             }
2026-06-09T09:52:59.1476865Z           ]
2026-06-09T09:52:59.1476946Z         },
2026-06-09T09:52:59.1477037Z         "int": {
2026-06-09T09:52:59.1477127Z           "complete": false,
2026-06-09T09:52:59.1477222Z           "evidence": []
2026-06-09T09:52:59.1477310Z         },
2026-06-09T09:52:59.1477395Z         "unit": {
2026-06-09T09:52:59.1477489Z           "complete": true,
2026-06-09T09:52:59.1477576Z           "evidence": [
2026-06-09T09:52:59.1477662Z             {
2026-06-09T09:52:59.1477776Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-09T09:52:59.1477871Z               "line": 46
2026-06-09T09:52:59.1477958Z             },
2026-06-09T09:52:59.1478038Z             {
2026-06-09T09:52:59.1478157Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-09T09:52:59.1478244Z               "line": 77
2026-06-09T09:52:59.1478410Z             }
2026-06-09T09:52:59.1478491Z           ]
2026-06-09T09:52:59.1478578Z         }
2026-06-09T09:52:59.1478667Z       }
2026-06-09T09:52:59.1478748Z     },
2026-06-09T09:52:59.1478835Z     {
2026-06-09T09:52:59.1478922Z       "id": "REQ-TERM-3",
2026-06-09T09:52:59.1479157Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-09T09:52:59.1479370Z       "requiredStages": [
2026-06-09T09:52:59.1479464Z         "impl",
2026-06-09T09:52:59.1479556Z         "unit"
2026-06-09T09:52:59.1479638Z       ],
2026-06-09T09:52:59.1479727Z       "stages": {
2026-06-09T09:52:59.1479808Z         "doc": {
2026-06-09T09:52:59.1479909Z           "complete": false,
2026-06-09T09:52:59.1479999Z           "evidence": []
2026-06-09T09:52:59.1480089Z         },
2026-06-09T09:52:59.1480182Z         "impl": {
2026-06-09T09:52:59.1480276Z           "complete": true,
2026-06-09T09:52:59.1480366Z           "evidence": [
2026-06-09T09:52:59.1480453Z             {
2026-06-09T09:52:59.1480576Z               "path": "crates/spt-term/src/stream.rs",
2026-06-09T09:52:59.1480662Z               "line": 71
2026-06-09T09:52:59.1480752Z             }
2026-06-09T09:52:59.1480835Z           ]
2026-06-09T09:52:59.1480919Z         },
2026-06-09T09:52:59.1481005Z         "int": {
2026-06-09T09:52:59.1481097Z           "complete": false,
2026-06-09T09:52:59.1481192Z           "evidence": []
2026-06-09T09:52:59.1481277Z         },
2026-06-09T09:52:59.1481368Z         "unit": {
2026-06-09T09:52:59.1481465Z           "complete": true,
2026-06-09T09:52:59.1481554Z           "evidence": [
2026-06-09T09:52:59.1481643Z             {
2026-06-09T09:52:59.1481762Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-09T09:52:59.1481852Z               "line": 37
2026-06-09T09:52:59.1481937Z             },
2026-06-09T09:52:59.1482027Z             {
2026-06-09T09:52:59.1482147Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-09T09:52:59.1482237Z               "line": 67
2026-06-09T09:52:59.1482327Z             }
2026-06-09T09:52:59.1482409Z           ]
2026-06-09T09:52:59.1482495Z         }
2026-06-09T09:52:59.1482580Z       }
2026-06-09T09:52:59.1482675Z     },
2026-06-09T09:52:59.1482762Z     {
2026-06-09T09:52:59.1482852Z       "id": "REQ-TERM-4",
2026-06-09T09:52:59.1483220Z       "title": "Live activity buffer (PTY digest): adapter-supplied patterns over broker PTY, spt digest pull + delta-stream, opt-in Path-B log",
2026-06-09T09:52:59.1483319Z       "requiredStages": [
2026-06-09T09:52:59.1483406Z         "impl",
2026-06-09T09:52:59.1483491Z         "unit",
2026-06-09T09:52:59.1483577Z         "int"
2026-06-09T09:52:59.1483663Z       ],
2026-06-09T09:52:59.1483749Z       "stages": {
2026-06-09T09:52:59.1483843Z         "doc": {
2026-06-09T09:52:59.1483929Z           "complete": true,
2026-06-09T09:52:59.1484022Z           "evidence": [
2026-06-09T09:52:59.1484102Z             {
2026-06-09T09:52:59.1484211Z               "path": "docs/MANIFEST.md",
2026-06-09T09:52:59.1484303Z               "line": 115
2026-06-09T09:52:59.1484389Z             }
2026-06-09T09:52:59.1484477Z           ]
2026-06-09T09:52:59.1484562Z         },
2026-06-09T09:52:59.1484658Z         "impl": {
2026-06-09T09:52:59.1484745Z           "complete": true,
2026-06-09T09:52:59.1484834Z           "evidence": [
2026-06-09T09:52:59.1484925Z             {
2026-06-09T09:52:59.1485041Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-09T09:52:59.1485140Z               "line": 507
2026-06-09T09:52:59.1485220Z             },
2026-06-09T09:52:59.1485307Z             {
2026-06-09T09:52:59.1485427Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-09T09:52:59.1485525Z               "line": 41
2026-06-09T09:52:59.1485613Z             },
2026-06-09T09:52:59.1485694Z             {
2026-06-09T09:52:59.1485816Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-09T09:52:59.1485903Z               "line": 91
2026-06-09T09:52:59.1485994Z             },
2026-06-09T09:52:59.1486074Z             {
2026-06-09T09:52:59.1486300Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-09T09:52:59.1486398Z               "line": 152
2026-06-09T09:52:59.1486479Z             },
2026-06-09T09:52:59.1486567Z             {
2026-06-09T09:52:59.1486675Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-09T09:52:59.1486770Z               "line": 221
2026-06-09T09:52:59.1486927Z             },
2026-06-09T09:52:59.1487011Z             {
2026-06-09T09:52:59.1487139Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-09T09:52:59.1487230Z               "line": 20
2026-06-09T09:52:59.1487322Z             },
2026-06-09T09:52:59.1487401Z             {
2026-06-09T09:52:59.1487530Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-09T09:52:59.1487621Z               "line": 222
2026-06-09T09:52:59.1487706Z             },
2026-06-09T09:52:59.1487792Z             {
2026-06-09T09:52:59.1487917Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-09T09:52:59.1488021Z               "line": 242
2026-06-09T09:52:59.1488107Z             },
2026-06-09T09:52:59.1488194Z             {
2026-06-09T09:52:59.1488322Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-09T09:52:59.1488412Z               "line": 625
2026-06-09T09:52:59.1488499Z             },
2026-06-09T09:52:59.1488579Z             {
2026-06-09T09:52:59.1488698Z               "path": "crates/spt-term/src/digest.rs",
2026-06-09T09:52:59.1488790Z               "line": 162
2026-06-09T09:52:59.1488880Z             },
2026-06-09T09:52:59.1489041Z             {
2026-06-09T09:52:59.1489153Z               "path": "crates/spt-term/src/digest.rs",
2026-06-09T09:52:59.1489251Z               "line": 206
2026-06-09T09:52:59.1489332Z             },
2026-06-09T09:52:59.1489424Z             {
2026-06-09T09:52:59.1489533Z               "path": "crates/spt-term/src/digest.rs",
2026-06-09T09:52:59.1489627Z               "line": 233
2026-06-09T09:52:59.1489712Z             },
2026-06-09T09:52:59.1489794Z             {
2026-06-09T09:52:59.1489906Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1489992Z               "line": 837
2026-06-09T09:52:59.1490082Z             }
2026-06-09T09:52:59.1490164Z           ]
2026-06-09T09:52:59.1490249Z         },
2026-06-09T09:52:59.1490344Z         "int": {
2026-06-09T09:52:59.1490437Z           "complete": true,
2026-06-09T09:52:59.1490531Z           "evidence": [
2026-06-09T09:52:59.1490621Z             {
2026-06-09T09:52:59.1490742Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-09T09:52:59.1490831Z               "line": 18
2026-06-09T09:52:59.1490916Z             }
2026-06-09T09:52:59.1491003Z           ]
2026-06-09T09:52:59.1491085Z         },
2026-06-09T09:52:59.1491174Z         "unit": {
2026-06-09T09:52:59.1491265Z           "complete": true,
2026-06-09T09:52:59.1491356Z           "evidence": [
2026-06-09T09:52:59.1491442Z             {
2026-06-09T09:52:59.1491565Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-09T09:52:59.1491652Z               "line": 259
2026-06-09T09:52:59.1491743Z             },
2026-06-09T09:52:59.1491818Z             {
2026-06-09T09:52:59.1491928Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-09T09:52:59.1492015Z               "line": 277
2026-06-09T09:52:59.1492100Z             },
2026-06-09T09:52:59.1492185Z             {
2026-06-09T09:52:59.1492303Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-09T09:52:59.1492394Z               "line": 289
2026-06-09T09:52:59.1492482Z             },
2026-06-09T09:52:59.1492563Z             {
2026-06-09T09:52:59.1492697Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-09T09:52:59.1492774Z               "line": 304
2026-06-09T09:52:59.1492868Z             },
2026-06-09T09:52:59.1492949Z             {
2026-06-09T09:52:59.1493069Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-09T09:52:59.1493178Z               "line": 320
2026-06-09T09:52:59.1493250Z             },
2026-06-09T09:52:59.1493332Z             {
2026-06-09T09:52:59.1493555Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-09T09:52:59.1493642Z               "line": 346
2026-06-09T09:52:59.1493727Z             },
2026-06-09T09:52:59.1493808Z             {
2026-06-09T09:52:59.1493952Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-09T09:52:59.1494075Z               "line": 361
2026-06-09T09:52:59.1494253Z             },
2026-06-09T09:52:59.1494342Z             {
2026-06-09T09:52:59.1494452Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-09T09:52:59.1494543Z               "line": 391
2026-06-09T09:52:59.1494629Z             },
2026-06-09T09:52:59.1494714Z             {
2026-06-09T09:52:59.1494834Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-09T09:52:59.1494925Z               "line": 365
2026-06-09T09:52:59.1495014Z             },
2026-06-09T09:52:59.1495099Z             {
2026-06-09T09:52:59.1495223Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-09T09:52:59.1495315Z               "line": 382
2026-06-09T09:52:59.1495409Z             },
2026-06-09T09:52:59.1495494Z             {
2026-06-09T09:52:59.1495615Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-09T09:52:59.1495709Z               "line": 411
2026-06-09T09:52:59.1495795Z             },
2026-06-09T09:52:59.1495877Z             {
2026-06-09T09:52:59.1496001Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-09T09:52:59.1496095Z               "line": 428
2026-06-09T09:52:59.1496178Z             },
2026-06-09T09:52:59.1496268Z             {
2026-06-09T09:52:59.1496386Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-09T09:52:59.1496473Z               "line": 828
2026-06-09T09:52:59.1496559Z             },
2026-06-09T09:52:59.1496639Z             {
2026-06-09T09:52:59.1496759Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-09T09:52:59.1496850Z               "line": 835
2026-06-09T09:52:59.1496940Z             },
2026-06-09T09:52:59.1497030Z             {
2026-06-09T09:52:59.1497151Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-09T09:52:59.1497240Z               "line": 850
2026-06-09T09:52:59.1497320Z             },
2026-06-09T09:52:59.1497410Z             {
2026-06-09T09:52:59.1497525Z               "path": "crates/spt-term/src/digest.rs",
2026-06-09T09:52:59.1497618Z               "line": 420
2026-06-09T09:52:59.1497708Z             },
2026-06-09T09:52:59.1497785Z             {
2026-06-09T09:52:59.1497896Z               "path": "crates/spt-term/src/digest.rs",
2026-06-09T09:52:59.1497980Z               "line": 458
2026-06-09T09:52:59.1498066Z             },
2026-06-09T09:52:59.1498148Z             {
2026-06-09T09:52:59.1498257Z               "path": "crates/spt-term/src/digest.rs",
2026-06-09T09:52:59.1498347Z               "line": 471
2026-06-09T09:52:59.1498430Z             },
2026-06-09T09:52:59.1498519Z             {
2026-06-09T09:52:59.1498628Z               "path": "crates/spt-term/src/digest.rs",
2026-06-09T09:52:59.1498725Z               "line": 497
2026-06-09T09:52:59.1498815Z             },
2026-06-09T09:52:59.1498896Z             {
2026-06-09T09:52:59.1499083Z               "path": "crates/spt-term/src/digest.rs",
2026-06-09T09:52:59.1499167Z               "line": 524
2026-06-09T09:52:59.1499258Z             },
2026-06-09T09:52:59.1499335Z             {
2026-06-09T09:52:59.1499464Z               "path": "crates/spt-term/tests/digest.rs",
2026-06-09T09:52:59.1499554Z               "line": 32
2026-06-09T09:52:59.1499635Z             },
2026-06-09T09:52:59.1499722Z             {
2026-06-09T09:52:59.1499825Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1499921Z               "line": 6684
2026-06-09T09:52:59.1500003Z             }
2026-06-09T09:52:59.1500094Z           ]
2026-06-09T09:52:59.1500178Z         }
2026-06-09T09:52:59.1500258Z       }
2026-06-09T09:52:59.1500344Z     },
2026-06-09T09:52:59.1500425Z     {
2026-06-09T09:52:59.1500519Z       "id": "REQ-UPD-1",
2026-06-09T09:52:59.1500772Z       "title": "Peer-propagated update over P2P",
2026-06-09T09:52:59.1500881Z       "requiredStages": [
2026-06-09T09:52:59.1500967Z         "impl",
2026-06-09T09:52:59.1501053Z         "unit",
2026-06-09T09:52:59.1501138Z         "int"
2026-06-09T09:52:59.1501224Z       ],
2026-06-09T09:52:59.1501311Z       "stages": {
2026-06-09T09:52:59.1501396Z         "doc": {
2026-06-09T09:52:59.1501582Z           "complete": false,
2026-06-09T09:52:59.1501678Z           "evidence": []
2026-06-09T09:52:59.1501763Z         },
2026-06-09T09:52:59.1501849Z         "impl": {
2026-06-09T09:52:59.1501946Z           "complete": true,
2026-06-09T09:52:59.1502039Z           "evidence": [
2026-06-09T09:52:59.1502120Z             {
2026-06-09T09:52:59.1502246Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-09T09:52:59.1502340Z               "line": 28
2026-06-09T09:52:59.1502426Z             },
2026-06-09T09:52:59.1502512Z             {
2026-06-09T09:52:59.1502632Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-09T09:52:59.1502726Z               "line": 103
2026-06-09T09:52:59.1502810Z             },
2026-06-09T09:52:59.1502897Z             {
2026-06-09T09:52:59.1503019Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-09T09:52:59.1503104Z               "line": 342
2026-06-09T09:52:59.1503200Z             },
2026-06-09T09:52:59.1503286Z             {
2026-06-09T09:52:59.1503409Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-09T09:52:59.1503486Z               "line": 22
2026-06-09T09:52:59.1503577Z             },
2026-06-09T09:52:59.1503705Z             {
2026-06-09T09:52:59.1503825Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-09T09:52:59.1503915Z               "line": 145
2026-06-09T09:52:59.1503996Z             },
2026-06-09T09:52:59.1504082Z             {
2026-06-09T09:52:59.1504202Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-09T09:52:59.1504292Z               "line": 221
2026-06-09T09:52:59.1504382Z             },
2026-06-09T09:52:59.1504464Z             {
2026-06-09T09:52:59.1504583Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-09T09:52:59.1504669Z               "line": 278
2026-06-09T09:52:59.1504754Z             },
2026-06-09T09:52:59.1504832Z             {
2026-06-09T09:52:59.1504954Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-09T09:52:59.1505054Z               "line": 37
2026-06-09T09:52:59.1505132Z             }
2026-06-09T09:52:59.1505222Z           ]
2026-06-09T09:52:59.1505302Z         },
2026-06-09T09:52:59.1505394Z         "int": {
2026-06-09T09:52:59.1505485Z           "complete": true,
2026-06-09T09:52:59.1505583Z           "evidence": [
2026-06-09T09:52:59.1505668Z             {
2026-06-09T09:52:59.1505788Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-09T09:52:59.1505880Z               "line": 207
2026-06-09T09:52:59.1505969Z             },
2026-06-09T09:52:59.1506050Z             {
2026-06-09T09:52:59.1506170Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-09T09:52:59.1506265Z               "line": 987
2026-06-09T09:52:59.1506355Z             }
2026-06-09T09:52:59.1506437Z           ]
2026-06-09T09:52:59.1506527Z         },
2026-06-09T09:52:59.1506613Z         "unit": {
2026-06-09T09:52:59.1506708Z           "complete": true,
2026-06-09T09:52:59.1506794Z           "evidence": [
2026-06-09T09:52:59.1506890Z             {
2026-06-09T09:52:59.1507014Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-09T09:52:59.1507100Z               "line": 381
2026-06-09T09:52:59.1507185Z             },
2026-06-09T09:52:59.1507266Z             {
2026-06-09T09:52:59.1507386Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-09T09:52:59.1507476Z               "line": 440
2026-06-09T09:52:59.1507562Z             },
2026-06-09T09:52:59.1507648Z             {
2026-06-09T09:52:59.1507777Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-09T09:52:59.1507942Z               "line": 277
2026-06-09T09:52:59.1508028Z             },
2026-06-09T09:52:59.1508113Z             {
2026-06-09T09:52:59.1508240Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-09T09:52:59.1508326Z               "line": 124
2026-06-09T09:52:59.1508417Z             },
2026-06-09T09:52:59.1508498Z             {
2026-06-09T09:52:59.1508621Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-09T09:52:59.1508784Z               "line": 200
2026-06-09T09:52:59.1508874Z             }
2026-06-09T09:52:59.1509052Z           ]
2026-06-09T09:52:59.1509137Z         }
2026-06-09T09:52:59.1509222Z       }
2026-06-09T09:52:59.1509299Z     },
2026-06-09T09:52:59.1509385Z     {
2026-06-09T09:52:59.1509485Z       "id": "REQ-UPD-2",
2026-06-09T09:52:59.1509643Z       "title": "All binaries signature-verified before handoff",
2026-06-09T09:52:59.1509742Z       "requiredStages": [
2026-06-09T09:52:59.1509828Z         "impl",
2026-06-09T09:52:59.1509915Z         "unit"
2026-06-09T09:52:59.1510001Z       ],
2026-06-09T09:52:59.1510090Z       "stages": {
2026-06-09T09:52:59.1510171Z         "doc": {
2026-06-09T09:52:59.1510273Z           "complete": false,
2026-06-09T09:52:59.1510367Z           "evidence": []
2026-06-09T09:52:59.1510457Z         },
2026-06-09T09:52:59.1510607Z         "impl": {
2026-06-09T09:52:59.1510700Z           "complete": true,
2026-06-09T09:52:59.1510795Z           "evidence": [
2026-06-09T09:52:59.1510881Z             {
2026-06-09T09:52:59.1511004Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-09T09:52:59.1511102Z               "line": 343
2026-06-09T09:52:59.1511184Z             },
2026-06-09T09:52:59.1511275Z             {
2026-06-09T09:52:59.1511393Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-09T09:52:59.1511483Z               "line": 469
2026-06-09T09:52:59.1511566Z             },
2026-06-09T09:52:59.1511652Z             {
2026-06-09T09:52:59.1511770Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1511866Z               "line": 29
2026-06-09T09:52:59.1511951Z             },
2026-06-09T09:52:59.1512037Z             {
2026-06-09T09:52:59.1512152Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1512238Z               "line": 271
2026-06-09T09:52:59.1512328Z             },
2026-06-09T09:52:59.1512414Z             {
2026-06-09T09:52:59.1512530Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1512623Z               "line": 288
2026-06-09T09:52:59.1512704Z             },
2026-06-09T09:52:59.1512787Z             {
2026-06-09T09:52:59.1512901Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1512995Z               "line": 408
2026-06-09T09:52:59.1513082Z             },
2026-06-09T09:52:59.1513164Z             {
2026-06-09T09:52:59.1513276Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1513361Z               "line": 540
2026-06-09T09:52:59.1513447Z             },
2026-06-09T09:52:59.1513533Z             {
2026-06-09T09:52:59.1513655Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-09T09:52:59.1513741Z               "line": 155
2026-06-09T09:52:59.1513822Z             }
2026-06-09T09:52:59.1513908Z           ]
2026-06-09T09:52:59.1513989Z         },
2026-06-09T09:52:59.1514079Z         "int": {
2026-06-09T09:52:59.1514180Z           "complete": false,
2026-06-09T09:52:59.1514279Z           "evidence": []
2026-06-09T09:52:59.1514365Z         },
2026-06-09T09:52:59.1514448Z         "unit": {
2026-06-09T09:52:59.1514542Z           "complete": true,
2026-06-09T09:52:59.1514627Z           "evidence": [
2026-06-09T09:52:59.1514719Z             {
2026-06-09T09:52:59.1514833Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1514928Z               "line": 697
2026-06-09T09:52:59.1515019Z             },
2026-06-09T09:52:59.1515105Z             {
2026-06-09T09:52:59.1515219Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1515416Z               "line": 758
2026-06-09T09:52:59.1515505Z             },
2026-06-09T09:52:59.1515586Z             {
2026-06-09T09:52:59.1515707Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1515805Z               "line": 772
2026-06-09T09:52:59.1515887Z             },
2026-06-09T09:52:59.1515974Z             {
2026-06-09T09:52:59.1516083Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1516271Z               "line": 788
2026-06-09T09:52:59.1516344Z             },
2026-06-09T09:52:59.1516430Z             {
2026-06-09T09:52:59.1516539Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1516624Z               "line": 879
2026-06-09T09:52:59.1516711Z             },
2026-06-09T09:52:59.1516792Z             {
2026-06-09T09:52:59.1516910Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-09T09:52:59.1517002Z               "line": 414
2026-06-09T09:52:59.1517088Z             },
2026-06-09T09:52:59.1517182Z             {
2026-06-09T09:52:59.1517308Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-09T09:52:59.1517407Z               "line": 427
2026-06-09T09:52:59.1517497Z             },
2026-06-09T09:52:59.1517598Z             {
2026-06-09T09:52:59.1517750Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-09T09:52:59.1517850Z               "line": 410
2026-06-09T09:52:59.1517961Z             }
2026-06-09T09:52:59.1518055Z           ]
2026-06-09T09:52:59.1518169Z         }
2026-06-09T09:52:59.1518266Z       }
2026-06-09T09:52:59.1518389Z     },
2026-06-09T09:52:59.1518493Z     {
2026-06-09T09:52:59.1518588Z       "id": "REQ-UPD-3",
2026-06-09T09:52:59.1518781Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-09T09:52:59.1518886Z       "requiredStages": [
2026-06-09T09:52:59.1519053Z         "impl",
2026-06-09T09:52:59.1519138Z         "unit",
2026-06-09T09:52:59.1519239Z         "int"
2026-06-09T09:52:59.1519320Z       ],
2026-06-09T09:52:59.1519429Z       "stages": {
2026-06-09T09:52:59.1519526Z         "doc": {
2026-06-09T09:52:59.1519626Z           "complete": false,
2026-06-09T09:52:59.1519753Z           "evidence": []
2026-06-09T09:52:59.1519841Z         },
2026-06-09T09:52:59.1522511Z         "impl": {
2026-06-09T09:52:59.1522640Z           "complete": true,
2026-06-09T09:52:59.1522746Z           "evidence": [
2026-06-09T09:52:59.1522854Z             {
2026-06-09T09:52:59.1522998Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-09T09:52:59.1523099Z               "line": 39
2026-06-09T09:52:59.1523193Z             },
2026-06-09T09:52:59.1523294Z             {
2026-06-09T09:52:59.1523442Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-09T09:52:59.1523536Z               "line": 77
2026-06-09T09:52:59.1523632Z             },
2026-06-09T09:52:59.1523724Z             {
2026-06-09T09:52:59.1523860Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-09T09:52:59.1523954Z               "line": 26
2026-06-09T09:52:59.1524055Z             },
2026-06-09T09:52:59.1524153Z             {
2026-06-09T09:52:59.1524276Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-09T09:52:59.1524383Z               "line": 114
2026-06-09T09:52:59.1524468Z             },
2026-06-09T09:52:59.1524563Z             {
2026-06-09T09:52:59.1524679Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-09T09:52:59.1524788Z               "line": 246
2026-06-09T09:52:59.1524882Z             },
2026-06-09T09:52:59.1524964Z             {
2026-06-09T09:52:59.1525088Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1525183Z               "line": 1717
2026-06-09T09:52:59.1525284Z             }
2026-06-09T09:52:59.1525369Z           ]
2026-06-09T09:52:59.1525469Z         },
2026-06-09T09:52:59.1525564Z         "int": {
2026-06-09T09:52:59.1525666Z           "complete": true,
2026-06-09T09:52:59.1525770Z           "evidence": [
2026-06-09T09:52:59.1525860Z             {
2026-06-09T09:52:59.1526166Z               "path": "crates/spt-daemon/tests/brain_swap.rs",
2026-06-09T09:52:59.1526267Z               "line": 23
2026-06-09T09:52:59.1526370Z             }
2026-06-09T09:52:59.1526466Z           ]
2026-06-09T09:52:59.1526553Z         },
2026-06-09T09:52:59.1526652Z         "unit": {
2026-06-09T09:52:59.1526751Z           "complete": true,
2026-06-09T09:52:59.1526861Z           "evidence": [
2026-06-09T09:52:59.1527075Z             {
2026-06-09T09:52:59.1527223Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-09T09:52:59.1527333Z               "line": 530
2026-06-09T09:52:59.1527456Z             },
2026-06-09T09:52:59.1527576Z             {
2026-06-09T09:52:59.1527700Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-09T09:52:59.1527805Z               "line": 598
2026-06-09T09:52:59.1527891Z             },
2026-06-09T09:52:59.1527991Z             {
2026-06-09T09:52:59.1528109Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-09T09:52:59.1528197Z               "line": 271
2026-06-09T09:52:59.1528277Z             },
2026-06-09T09:52:59.1528358Z             {
2026-06-09T09:52:59.1528512Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-09T09:52:59.1528624Z               "line": 295
2026-06-09T09:52:59.1528725Z             },
2026-06-09T09:52:59.1528822Z             {
2026-06-09T09:52:59.1528934Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-09T09:52:59.1529139Z               "line": 316
2026-06-09T09:52:59.1529228Z             },
2026-06-09T09:52:59.1529318Z             {
2026-06-09T09:52:59.1529437Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-09T09:52:59.1529538Z               "line": 332
2026-06-09T09:52:59.1529642Z             }
2026-06-09T09:52:59.1529728Z           ]
2026-06-09T09:52:59.1529824Z         }
2026-06-09T09:52:59.1529909Z       }
2026-06-09T09:52:59.1529999Z     },
2026-06-09T09:52:59.1530086Z     {
2026-06-09T09:52:59.1530191Z       "id": "REQ-UPD-4",
2026-06-09T09:52:59.1530391Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-09T09:52:59.1530491Z       "requiredStages": [
2026-06-09T09:52:59.1530591Z         "impl",
2026-06-09T09:52:59.1530686Z         "unit"
2026-06-09T09:52:59.1530782Z       ],
2026-06-09T09:52:59.1530867Z       "stages": {
2026-06-09T09:52:59.1530967Z         "doc": {
2026-06-09T09:52:59.1531073Z           "complete": false,
2026-06-09T09:52:59.1531173Z           "evidence": []
2026-06-09T09:52:59.1531268Z         },
2026-06-09T09:52:59.1531360Z         "impl": {
2026-06-09T09:52:59.1531464Z           "complete": true,
2026-06-09T09:52:59.1531559Z           "evidence": [
2026-06-09T09:52:59.1531655Z             {
2026-06-09T09:52:59.1531788Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-09T09:52:59.1531882Z               "line": 40
2026-06-09T09:52:59.1531977Z             },
2026-06-09T09:52:59.1532058Z             {
2026-06-09T09:52:59.1532189Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-09T09:52:59.1532280Z               "line": 78
2026-06-09T09:52:59.1532386Z             },
2026-06-09T09:52:59.1532481Z             {
2026-06-09T09:52:59.1532604Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-09T09:52:59.1532710Z               "line": 23
2026-06-09T09:52:59.1532800Z             },
2026-06-09T09:52:59.1532895Z             {
2026-06-09T09:52:59.1533020Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-09T09:52:59.1533129Z               "line": 56
2026-06-09T09:52:59.1533224Z             },
2026-06-09T09:52:59.1533311Z             {
2026-06-09T09:52:59.1533429Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-09T09:52:59.1533519Z               "line": 77
2026-06-09T09:52:59.1533616Z             },
2026-06-09T09:52:59.1533697Z             {
2026-06-09T09:52:59.1533829Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-09T09:52:59.1533931Z               "line": 184
2026-06-09T09:52:59.1534021Z             },
2026-06-09T09:52:59.1534241Z             {
2026-06-09T09:52:59.1534359Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-09T09:52:59.1534463Z               "line": 101
2026-06-09T09:52:59.1534558Z             },
2026-06-09T09:52:59.1534649Z             {
2026-06-09T09:52:59.1534775Z               "path": "crates/spt-store/src/info.rs",
2026-06-09T09:52:59.1534866Z               "line": 170
2026-06-09T09:52:59.1535061Z             },
2026-06-09T09:52:59.1535147Z             {
2026-06-09T09:52:59.1535272Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1535376Z               "line": 1716
2026-06-09T09:52:59.1535462Z             }
2026-06-09T09:52:59.1535558Z           ]
2026-06-09T09:52:59.1535643Z         },
2026-06-09T09:52:59.1535747Z         "int": {
2026-06-09T09:52:59.1535844Z           "complete": false,
2026-06-09T09:52:59.1535948Z           "evidence": []
2026-06-09T09:52:59.1536048Z         },
2026-06-09T09:52:59.1536134Z         "unit": {
2026-06-09T09:52:59.1536244Z           "complete": true,
2026-06-09T09:52:59.1536339Z           "evidence": [
2026-06-09T09:52:59.1536430Z             {
2026-06-09T09:52:59.1536555Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-09T09:52:59.1536659Z               "line": 526
2026-06-09T09:52:59.1536759Z             },
2026-06-09T09:52:59.1536846Z             {
2026-06-09T09:52:59.1536983Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-09T09:52:59.1537079Z               "line": 651
2026-06-09T09:52:59.1537175Z             },
2026-06-09T09:52:59.1537263Z             {
2026-06-09T09:52:59.1537386Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-09T09:52:59.1537488Z               "line": 384
2026-06-09T09:52:59.1537578Z             },
2026-06-09T09:52:59.1537668Z             {
2026-06-09T09:52:59.1537788Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-09T09:52:59.1537889Z               "line": 102
2026-06-09T09:52:59.1537978Z             },
2026-06-09T09:52:59.1538074Z             {
2026-06-09T09:52:59.1538208Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-09T09:52:59.1538302Z               "line": 123
2026-06-09T09:52:59.1538408Z             },
2026-06-09T09:52:59.1538494Z             {
2026-06-09T09:52:59.1538622Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-09T09:52:59.1538713Z               "line": 142
2026-06-09T09:52:59.1538813Z             },
2026-06-09T09:52:59.1538908Z             {
2026-06-09T09:52:59.1539109Z               "path": "crates/spt-store/src/info.rs",
2026-06-09T09:52:59.1539199Z               "line": 386
2026-06-09T09:52:59.1539280Z             },
2026-06-09T09:52:59.1539362Z             {
2026-06-09T09:52:59.1539480Z               "path": "crates/spt-store/src/perch.rs",
2026-06-09T09:52:59.1539575Z               "line": 556
2026-06-09T09:52:59.1539665Z             },
2026-06-09T09:52:59.1539746Z             {
2026-06-09T09:52:59.1539887Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1539982Z               "line": 5533
2026-06-09T09:52:59.1540069Z             }
2026-06-09T09:52:59.1540154Z           ]
2026-06-09T09:52:59.1540249Z         }
2026-06-09T09:52:59.1540345Z       }
2026-06-09T09:52:59.1540431Z     },
2026-06-09T09:52:59.1540521Z     {
2026-06-09T09:52:59.1540621Z       "id": "REQ-UPD-5",
2026-06-09T09:52:59.1540774Z       "title": "spt-core ripple-updates registered adapters",
2026-06-09T09:52:59.1540879Z       "requiredStages": [
2026-06-09T09:52:59.1540980Z         "impl",
2026-06-09T09:52:59.1541075Z         "unit"
2026-06-09T09:52:59.1541170Z       ],
2026-06-09T09:52:59.1541275Z       "stages": {
2026-06-09T09:52:59.1541366Z         "doc": {
2026-06-09T09:52:59.1541475Z           "complete": false,
2026-06-09T09:52:59.1541571Z           "evidence": []
2026-06-09T09:52:59.1541671Z         },
2026-06-09T09:52:59.1541780Z         "impl": {
2026-06-09T09:52:59.1541881Z           "complete": true,
2026-06-09T09:52:59.1541991Z           "evidence": [
2026-06-09T09:52:59.1542076Z             {
2026-06-09T09:52:59.1542325Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-09T09:52:59.1542419Z               "line": 27
2026-06-09T09:52:59.1542504Z             },
2026-06-09T09:52:59.1542590Z             {
2026-06-09T09:52:59.1542764Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-09T09:52:59.1542859Z               "line": 82
2026-06-09T09:52:59.1543031Z             },
2026-06-09T09:52:59.1543126Z             {
2026-06-09T09:52:59.1543256Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-09T09:52:59.1543351Z               "line": 134
2026-06-09T09:52:59.1543440Z             },
2026-06-09T09:52:59.1543523Z             {
2026-06-09T09:52:59.1543646Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1543736Z               "line": 492
2026-06-09T09:52:59.1543827Z             },
2026-06-09T09:52:59.1543914Z             {
2026-06-09T09:52:59.1544032Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1544132Z               "line": 528
2026-06-09T09:52:59.1544214Z             }
2026-06-09T09:52:59.1544304Z           ]
2026-06-09T09:52:59.1544385Z         },
2026-06-09T09:52:59.1544477Z         "int": {
2026-06-09T09:52:59.1544577Z           "complete": false,
2026-06-09T09:52:59.1544666Z           "evidence": []
2026-06-09T09:52:59.1544748Z         },
2026-06-09T09:52:59.1544839Z         "unit": {
2026-06-09T09:52:59.1544938Z           "complete": true,
2026-06-09T09:52:59.1545033Z           "evidence": [
2026-06-09T09:52:59.1545128Z             {
2026-06-09T09:52:59.1545260Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-09T09:52:59.1545344Z               "line": 232
2026-06-09T09:52:59.1545441Z             },
2026-06-09T09:52:59.1545527Z             {
2026-06-09T09:52:59.1545673Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-09T09:52:59.1545770Z               "line": 246
2026-06-09T09:52:59.1545860Z             },
2026-06-09T09:52:59.1545955Z             {
2026-06-09T09:52:59.1546085Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-09T09:52:59.1546184Z               "line": 260
2026-06-09T09:52:59.1546265Z             },
2026-06-09T09:52:59.1546365Z             {
2026-06-09T09:52:59.1546504Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-09T09:52:59.1546622Z               "line": 274
2026-06-09T09:52:59.1546724Z             },
2026-06-09T09:52:59.1546814Z             {
2026-06-09T09:52:59.1546947Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-09T09:52:59.1547039Z               "line": 308
2026-06-09T09:52:59.1547124Z             },
2026-06-09T09:52:59.1547209Z             {
2026-06-09T09:52:59.1547334Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-09T09:52:59.1547425Z               "line": 792
2026-06-09T09:52:59.1547509Z             }
2026-06-09T09:52:59.1547595Z           ]
2026-06-09T09:52:59.1547683Z         }
2026-06-09T09:52:59.1547773Z       }
2026-06-09T09:52:59.1547861Z     },
2026-06-09T09:52:59.1547951Z     {
2026-06-09T09:52:59.1548048Z       "id": "REQ-UPD-6",
2026-06-09T09:52:59.1548858Z       "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-09T09:52:59.1549044Z       "requiredStages": [
2026-06-09T09:52:59.1549125Z         "doc",
2026-06-09T09:52:59.1549225Z         "impl",
2026-06-09T09:52:59.1549312Z         "unit",
2026-06-09T09:52:59.1549392Z         "int"
2026-06-09T09:52:59.1549482Z       ],
2026-06-09T09:52:59.1549574Z       "stages": {
2026-06-09T09:52:59.1549693Z         "doc": {
2026-06-09T09:52:59.1549788Z           "complete": true,
2026-06-09T09:52:59.1549888Z           "evidence": [
2026-06-09T09:52:59.1549980Z             {
2026-06-09T09:52:59.1550230Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-09T09:52:59.1550344Z               "line": 3
2026-06-09T09:52:59.1550428Z             },
2026-06-09T09:52:59.1550528Z             {
2026-06-09T09:52:59.1550639Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-09T09:52:59.1550748Z               "line": 3
2026-06-09T09:52:59.1550848Z             },
2026-06-09T09:52:59.1551043Z             {
2026-06-09T09:52:59.1551211Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-09T09:52:59.1551311Z               "line": 3
2026-06-09T09:52:59.1551405Z             }
2026-06-09T09:52:59.1551492Z           ]
2026-06-09T09:52:59.1551569Z         },
2026-06-09T09:52:59.1551659Z         "impl": {
2026-06-09T09:52:59.1551749Z           "complete": true,
2026-06-09T09:52:59.1551845Z           "evidence": [
2026-06-09T09:52:59.1551921Z             {
2026-06-09T09:52:59.1552054Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-09T09:52:59.1552145Z               "line": 175
2026-06-09T09:52:59.1552236Z             },
2026-06-09T09:52:59.1552326Z             {
2026-06-09T09:52:59.1552446Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.1552541Z               "line": 511
2026-06-09T09:52:59.1552626Z             },
2026-06-09T09:52:59.1552713Z             {
2026-06-09T09:52:59.1552833Z               "path": "crates/spt-daemon/src/peerloop.rs",
2026-06-09T09:52:59.1552931Z               "line": 564
2026-06-09T09:52:59.1553021Z             },
2026-06-09T09:52:59.1553107Z             {
2026-06-09T09:52:59.1553230Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-09T09:52:59.1553315Z               "line": 69
2026-06-09T09:52:59.1553410Z             },
2026-06-09T09:52:59.1553491Z             {
2026-06-09T09:52:59.1553615Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-09T09:52:59.1553705Z               "line": 133
2026-06-09T09:52:59.1553792Z             },
2026-06-09T09:52:59.1553873Z             {
2026-06-09T09:52:59.1553996Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-09T09:52:59.1554098Z               "line": 243
2026-06-09T09:52:59.1554192Z             },
2026-06-09T09:52:59.1554282Z             {
2026-06-09T09:52:59.1554412Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-09T09:52:59.1554502Z               "line": 399
2026-06-09T09:52:59.1554607Z             },
2026-06-09T09:52:59.1554693Z             {
2026-06-09T09:52:59.1554822Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-09T09:52:59.1554926Z               "line": 527
2026-06-09T09:52:59.1555017Z             },
2026-06-09T09:52:59.1555118Z             {
2026-06-09T09:52:59.1555241Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-09T09:52:59.1555352Z               "line": 541
2026-06-09T09:52:59.1555447Z             },
2026-06-09T09:52:59.1555554Z             {
2026-06-09T09:52:59.1555693Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-09T09:52:59.1555787Z               "line": 596
2026-06-09T09:52:59.1555890Z             },
2026-06-09T09:52:59.1555971Z             {
2026-06-09T09:52:59.1556087Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-09T09:52:59.1556172Z               "line": 627
2026-06-09T09:52:59.1556257Z             },
2026-06-09T09:52:59.1556349Z             {
2026-06-09T09:52:59.1556469Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-09T09:52:59.1556558Z               "line": 52
2026-06-09T09:52:59.1556645Z             },
2026-06-09T09:52:59.1556731Z             {
2026-06-09T09:52:59.1556853Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-09T09:52:59.1556945Z               "line": 123
2026-06-09T09:52:59.1557036Z             },
2026-06-09T09:52:59.1557116Z             {
2026-06-09T09:52:59.1557240Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-09T09:52:59.1557327Z               "line": 198
2026-06-09T09:52:59.1557416Z             },
2026-06-09T09:52:59.1557579Z             {
2026-06-09T09:52:59.1557712Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-09T09:52:59.1557817Z               "line": 230
2026-06-09T09:52:59.1557899Z             },
2026-06-09T09:52:59.1557990Z             {
2026-06-09T09:52:59.1558103Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-09T09:52:59.1558204Z               "line": 261
2026-06-09T09:52:59.1558375Z             },
2026-06-09T09:52:59.1558450Z             {
2026-06-09T09:52:59.1558584Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-09T09:52:59.1558685Z               "line": 284
2026-06-09T09:52:59.1558779Z             },
2026-06-09T09:52:59.1558865Z             {
2026-06-09T09:52:59.1559074Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-09T09:52:59.1559170Z               "line": 302
2026-06-09T09:52:59.1559276Z             },
2026-06-09T09:52:59.1559380Z             {
2026-06-09T09:52:59.1559509Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-09T09:52:59.1559614Z               "line": 312
2026-06-09T09:52:59.1559704Z             },
2026-06-09T09:52:59.1559814Z             {
2026-06-09T09:52:59.1559947Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-09T09:52:59.1560047Z               "line": 324
2026-06-09T09:52:59.1560144Z             },
2026-06-09T09:52:59.1560230Z             {
2026-06-09T09:52:59.1560371Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-09T09:52:59.1560463Z               "line": 334
2026-06-09T09:52:59.1560563Z             },
2026-06-09T09:52:59.1560648Z             {
2026-06-09T09:52:59.1560756Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1560848Z               "line": 94
2026-06-09T09:52:59.1560932Z             },
2026-06-09T09:52:59.1561017Z             {
2026-06-09T09:52:59.1561136Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1561228Z               "line": 120
2026-06-09T09:52:59.1561317Z             },
2026-06-09T09:52:59.1561408Z             {
2026-06-09T09:52:59.1561528Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1561618Z               "line": 135
2026-06-09T09:52:59.1561703Z             },
2026-06-09T09:52:59.1561791Z             {
2026-06-09T09:52:59.1561909Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1562004Z               "line": 162
2026-06-09T09:52:59.1562086Z             },
2026-06-09T09:52:59.1562176Z             {
2026-06-09T09:52:59.1562285Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1562381Z               "line": 174
2026-06-09T09:52:59.1562462Z             },
2026-06-09T09:52:59.1562548Z             {
2026-06-09T09:52:59.1562666Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1562754Z               "line": 185
2026-06-09T09:52:59.1562833Z             },
2026-06-09T09:52:59.1562915Z             {
2026-06-09T09:52:59.1563035Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1563116Z               "line": 451
2026-06-09T09:52:59.1563196Z             },
2026-06-09T09:52:59.1563287Z             {
2026-06-09T09:52:59.1563412Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1563510Z               "line": 555
2026-06-09T09:52:59.1563595Z             },
2026-06-09T09:52:59.1563686Z             {
2026-06-09T09:52:59.1563808Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-09T09:52:59.1563908Z               "line": 171
2026-06-09T09:52:59.1563998Z             },
2026-06-09T09:52:59.1564085Z             {
2026-06-09T09:52:59.1564208Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-09T09:52:59.1564304Z               "line": 65
2026-06-09T09:52:59.1564409Z             },
2026-06-09T09:52:59.1564508Z             {
2026-06-09T09:52:59.1564628Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-09T09:52:59.1564719Z               "line": 71
2026-06-09T09:52:59.1564814Z             },
2026-06-09T09:52:59.1565024Z             {
2026-06-09T09:52:59.1565143Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-09T09:52:59.1565238Z               "line": 77
2026-06-09T09:52:59.1565334Z             },
2026-06-09T09:52:59.1565420Z             {
2026-06-09T09:52:59.1565524Z               "path": "crates/xtask/src/main.rs",
2026-06-09T09:52:59.1565763Z               "line": 778
2026-06-09T09:52:59.1565858Z             },
2026-06-09T09:52:59.1565941Z             {
2026-06-09T09:52:59.1566058Z               "path": "crates/xtask/src/main.rs",
2026-06-09T09:52:59.1566157Z               "line": 795
2026-06-09T09:52:59.1566243Z             },
2026-06-09T09:52:59.1566333Z             {
2026-06-09T09:52:59.1566437Z               "path": "crates/xtask/src/main.rs",
2026-06-09T09:52:59.1566531Z               "line": 838
2026-06-09T09:52:59.1566618Z             },
2026-06-09T09:52:59.1566709Z             {
2026-06-09T09:52:59.1566817Z               "path": "crates/xtask/src/main.rs",
2026-06-09T09:52:59.1566909Z               "line": 981
2026-06-09T09:52:59.1566999Z             },
2026-06-09T09:52:59.1567085Z             {
2026-06-09T09:52:59.1567195Z               "path": "crates/xtask/src/main.rs",
2026-06-09T09:52:59.1567281Z               "line": 1131
2026-06-09T09:52:59.1567367Z             }
2026-06-09T09:52:59.1567461Z           ]
2026-06-09T09:52:59.1567548Z         },
2026-06-09T09:52:59.1567634Z         "int": {
2026-06-09T09:52:59.1567729Z           "complete": true,
2026-06-09T09:52:59.1567844Z           "evidence": [
2026-06-09T09:52:59.1567929Z             {
2026-06-09T09:52:59.1568062Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-09T09:52:59.1568159Z               "line": 569
2026-06-09T09:52:59.1568244Z             },
2026-06-09T09:52:59.1568339Z             {
2026-06-09T09:52:59.1568459Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-09T09:52:59.1568559Z               "line": 135
2026-06-09T09:52:59.1568644Z             }
2026-06-09T09:52:59.1568750Z           ]
2026-06-09T09:52:59.1568855Z         },
2026-06-09T09:52:59.1569029Z         "unit": {
2026-06-09T09:52:59.1569144Z           "complete": true,
2026-06-09T09:52:59.1569241Z           "evidence": [
2026-06-09T09:52:59.1569353Z             {
2026-06-09T09:52:59.1569483Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-09T09:52:59.1569593Z               "line": 571
2026-06-09T09:52:59.1569692Z             },
2026-06-09T09:52:59.1569774Z             {
2026-06-09T09:52:59.1569903Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-09T09:52:59.1569992Z               "line": 620
2026-06-09T09:52:59.1570079Z             },
2026-06-09T09:52:59.1570165Z             {
2026-06-09T09:52:59.1570288Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-09T09:52:59.1570384Z               "line": 689
2026-06-09T09:52:59.1570470Z             },
2026-06-09T09:52:59.1570555Z             {
2026-06-09T09:52:59.1570679Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-09T09:52:59.1570771Z               "line": 462
2026-06-09T09:52:59.1570855Z             },
2026-06-09T09:52:59.1570946Z             {
2026-06-09T09:52:59.1571067Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-09T09:52:59.1571156Z               "line": 499
2026-06-09T09:52:59.1571246Z             },
2026-06-09T09:52:59.1571331Z             {
2026-06-09T09:52:59.1571455Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1571548Z               "line": 894
2026-06-09T09:52:59.1571633Z             },
2026-06-09T09:52:59.1571720Z             {
2026-06-09T09:52:59.1571835Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1571925Z               "line": 916
2026-06-09T09:52:59.1572002Z             },
2026-06-09T09:52:59.1572093Z             {
2026-06-09T09:52:59.1572211Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1572317Z               "line": 933
2026-06-09T09:52:59.1572502Z             },
2026-06-09T09:52:59.1572583Z             {
2026-06-09T09:52:59.1572717Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1572807Z               "line": 948
2026-06-09T09:52:59.1572893Z             },
2026-06-09T09:52:59.1572985Z             {
2026-06-09T09:52:59.1573141Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1573342Z               "line": 974
2026-06-09T09:52:59.1573422Z             },
2026-06-09T09:52:59.1573513Z             {
2026-06-09T09:52:59.1573629Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-09T09:52:59.1573718Z               "line": 457
2026-06-09T09:52:59.1573809Z             },
2026-06-09T09:52:59.1573876Z             {
2026-06-09T09:52:59.1574005Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-09T09:52:59.1574089Z               "line": 338
2026-06-09T09:52:59.1574179Z             },
2026-06-09T09:52:59.1574256Z             {
2026-06-09T09:52:59.1574373Z               "path": "crates/xtask/src/main.rs",
2026-06-09T09:52:59.1574463Z               "line": 1260
2026-06-09T09:52:59.1574540Z             },
2026-06-09T09:52:59.1574631Z             {
2026-06-09T09:52:59.1574745Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-09T09:52:59.1574840Z               "line": 130
2026-06-09T09:52:59.1574922Z             }
2026-06-09T09:52:59.1575012Z           ]
2026-06-09T09:52:59.1575097Z         }
2026-06-09T09:52:59.1575179Z       }
2026-06-09T09:52:59.1575260Z     },
2026-06-09T09:52:59.1575346Z     {
2026-06-09T09:52:59.1575436Z       "id": "REQ-UPD-7",
2026-06-09T09:52:59.1577650Z       "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-09T09:52:59.1577750Z       "requiredStages": [
2026-06-09T09:52:59.1577841Z         "impl",
2026-06-09T09:52:59.1577946Z         "unit"
2026-06-09T09:52:59.1578031Z       ],
2026-06-09T09:52:59.1578118Z       "stages": {
2026-06-09T09:52:59.1578198Z         "doc": {
2026-06-09T09:52:59.1578298Z           "complete": false,
2026-06-09T09:52:59.1578384Z           "evidence": []
2026-06-09T09:52:59.1578471Z         },
2026-06-09T09:52:59.1578551Z         "impl": {
2026-06-09T09:52:59.1578646Z           "complete": true,
2026-06-09T09:52:59.1578738Z           "evidence": [
2026-06-09T09:52:59.1578818Z             {
2026-06-09T09:52:59.1578933Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1579096Z               "line": 1813
2026-06-09T09:52:59.1579190Z             }
2026-06-09T09:52:59.1579285Z           ]
2026-06-09T09:52:59.1579373Z         },
2026-06-09T09:52:59.1579458Z         "int": {
2026-06-09T09:52:59.1579556Z           "complete": false,
2026-06-09T09:52:59.1579651Z           "evidence": []
2026-06-09T09:52:59.1579728Z         },
2026-06-09T09:52:59.1579819Z         "unit": {
2026-06-09T09:52:59.1579913Z           "complete": true,
2026-06-09T09:52:59.1580010Z           "evidence": [
2026-06-09T09:52:59.1580096Z             {
2026-06-09T09:52:59.1580195Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1580285Z               "line": 7381
2026-06-09T09:52:59.1580368Z             }
2026-06-09T09:52:59.1580453Z           ]
2026-06-09T09:52:59.1580533Z         }
2026-06-09T09:52:59.1580615Z       }
2026-06-09T09:52:59.1580701Z     },
2026-06-09T09:52:59.1580776Z     {
2026-06-09T09:52:59.1580876Z       "id": "REQ-UPD-8",
2026-06-09T09:52:59.1583903Z       "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-09T09:52:59.1584107Z       "requiredStages": [
2026-06-09T09:52:59.1584194Z         "impl",
2026-06-09T09:52:59.1584283Z         "unit"
2026-06-09T09:52:59.1584369Z       ],
2026-06-09T09:52:59.1584475Z       "stages": {
2026-06-09T09:52:59.1584556Z         "doc": {
2026-06-09T09:52:59.1584654Z           "complete": false,
2026-06-09T09:52:59.1584748Z           "evidence": []
2026-06-09T09:52:59.1584835Z         },
2026-06-09T09:52:59.1584920Z         "impl": {
2026-06-09T09:52:59.1585014Z           "complete": true,
2026-06-09T09:52:59.1585105Z           "evidence": [
2026-06-09T09:52:59.1585210Z             {
2026-06-09T09:52:59.1585343Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-09T09:52:59.1585429Z               "line": 67
2026-06-09T09:52:59.1585520Z             },
2026-06-09T09:52:59.1585600Z             {
2026-06-09T09:52:59.1585724Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-09T09:52:59.1585811Z               "line": 46
2026-06-09T09:52:59.1585901Z             },
2026-06-09T09:52:59.1585986Z             {
2026-06-09T09:52:59.1586097Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-09T09:52:59.1586206Z               "line": 90
2026-06-09T09:52:59.1586292Z             },
2026-06-09T09:52:59.1586383Z             {
2026-06-09T09:52:59.1586502Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-09T09:52:59.1586587Z               "line": 153
2026-06-09T09:52:59.1586673Z             },
2026-06-09T09:52:59.1586751Z             {
2026-06-09T09:52:59.1586868Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-09T09:52:59.1586960Z               "line": 168
2026-06-09T09:52:59.1587046Z             },
2026-06-09T09:52:59.1587136Z             {
2026-06-09T09:52:59.1587254Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-09T09:52:59.1587340Z               "line": 185
2026-06-09T09:52:59.1587421Z             },
2026-06-09T09:52:59.1587514Z             {
2026-06-09T09:52:59.1587623Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-09T09:52:59.1587710Z               "line": 207
2026-06-09T09:52:59.1587796Z             },
2026-06-09T09:52:59.1587876Z             {
2026-06-09T09:52:59.1587990Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1588077Z               "line": 66
2026-06-09T09:52:59.1588163Z             },
2026-06-09T09:52:59.1588243Z             {
2026-06-09T09:52:59.1588363Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-09T09:52:59.1588454Z               "line": 154
2026-06-09T09:52:59.1588539Z             },
2026-06-09T09:52:59.1588620Z             {
2026-06-09T09:52:59.1588720Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1588811Z               "line": 1705
2026-06-09T09:52:59.1588891Z             },
2026-06-09T09:52:59.1589078Z             {
2026-06-09T09:52:59.1589183Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1589274Z               "line": 1760
2026-06-09T09:52:59.1589360Z             },
2026-06-09T09:52:59.1589435Z             {
2026-06-09T09:52:59.1589540Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1589632Z               "line": 1770
2026-06-09T09:52:59.1589845Z             },
2026-06-09T09:52:59.1589938Z             {
2026-06-09T09:52:59.1590036Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1590126Z               "line": 1777
2026-06-09T09:52:59.1590207Z             },
2026-06-09T09:52:59.1590293Z             {
2026-06-09T09:52:59.1590398Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1590575Z               "line": 1814
2026-06-09T09:52:59.1590661Z             },
2026-06-09T09:52:59.1590741Z             {
2026-06-09T09:52:59.1590850Z               "path": "crates/xtask/src/main.rs",
2026-06-09T09:52:59.1590937Z               "line": 480
2026-06-09T09:52:59.1591023Z             },
2026-06-09T09:52:59.1591108Z             {
2026-06-09T09:52:59.1591209Z               "path": "crates/xtask/src/main.rs",
2026-06-09T09:52:59.1591299Z               "line": 494
2026-06-09T09:52:59.1591385Z             }
2026-06-09T09:52:59.1591470Z           ]
2026-06-09T09:52:59.1591548Z         },
2026-06-09T09:52:59.1591638Z         "int": {
2026-06-09T09:52:59.1591728Z           "complete": false,
2026-06-09T09:52:59.1591819Z           "evidence": []
2026-06-09T09:52:59.1591905Z         },
2026-06-09T09:52:59.1591985Z         "unit": {
2026-06-09T09:52:59.1592085Z           "complete": true,
2026-06-09T09:52:59.1592173Z           "evidence": [
2026-06-09T09:52:59.1592258Z             {
2026-06-09T09:52:59.1592385Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-09T09:52:59.1592476Z               "line": 456
2026-06-09T09:52:59.1592561Z             },
2026-06-09T09:52:59.1592641Z             {
2026-06-09T09:52:59.1592763Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-09T09:52:59.1592850Z               "line": 404
2026-06-09T09:52:59.1592942Z             },
2026-06-09T09:52:59.1593026Z             {
2026-06-09T09:52:59.1593127Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1593222Z               "line": 7383
2026-06-09T09:52:59.1593303Z             },
2026-06-09T09:52:59.1593388Z             {
2026-06-09T09:52:59.1593490Z               "path": "crates/spt/src/cli.rs",
2026-06-09T09:52:59.1593580Z               "line": 7405
2026-06-09T09:52:59.1593665Z             }
2026-06-09T09:52:59.1593747Z           ]
2026-06-09T09:52:59.1593833Z         }
2026-06-09T09:52:59.1593914Z       }
2026-06-09T09:52:59.1593998Z     }
2026-06-09T09:52:59.1594076Z   ],
2026-06-09T09:52:59.1594176Z   "findings": []
2026-06-09T09:52:59.1594266Z }
2026-06-09T09:52:59.1622741Z ##[group]Run ./traceable-reqs lint || true
2026-06-09T09:52:59.1622889Z [36;1m./traceable-reqs lint || true[0m
2026-06-09T09:52:59.1636159Z shell: /usr/bin/bash -e {0}
2026-06-09T09:52:59.1636263Z ##[endgroup]
2026-06-09T09:52:59.1808659Z Requirement quality findings (79); 179 requirements queued for agent review:
2026-06-09T09:52:59.1809596Z   [must] requirement_quality REQ-API-1 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1809948Z   [must] requirement_quality REQ-CLI-1 criterion=length — title is 47 words; want 3..=25
2026-06-09T09:52:59.1810282Z   [must] requirement_quality REQ-CLI-2 criterion=length — title is 37 words; want 3..=25
2026-06-09T09:52:59.1810578Z   [must] requirement_quality REQ-CLI-3 criterion=length — title is 37 words; want 3..=25
2026-06-09T09:52:59.1810902Z   [must] requirement_quality REQ-CONSENT-1 criterion=length — title is 41 words; want 3..=25
2026-06-09T09:52:59.1811380Z   [must] requirement_quality REQ-CONSENT-2 criterion=length — title is 37 words; want 3..=25
2026-06-09T09:52:59.1811826Z   [must] requirement_quality REQ-CONV-1 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1812146Z   [must] requirement_quality REQ-CONV-1 criterion=length — title is 73 words; want 3..=25
2026-06-09T09:52:59.1812494Z   [must] requirement_quality REQ-CONV-2 criterion=length — title is 47 words; want 3..=25
2026-06-09T09:52:59.1813128Z   [must] requirement_quality REQ-DAEMON-5 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1813462Z   [must] requirement_quality REQ-DAEMON-5 criterion=length — title is 64 words; want 3..=25
2026-06-09T09:52:59.1813896Z   [must] requirement_quality REQ-DAEMON-6 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1814214Z   [must] requirement_quality REQ-DAEMON-6 criterion=length — title is 84 words; want 3..=25
2026-06-09T09:52:59.1815136Z   [must] requirement_quality REQ-DAEMON-7 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1815451Z   [must] requirement_quality REQ-DAEMON-7 criterion=length — title is 62 words; want 3..=25
2026-06-09T09:52:59.1815761Z   [must] requirement_quality REQ-DAEMON-8 criterion=length — title is 44 words; want 3..=25
2026-06-09T09:52:59.1816225Z   [must] requirement_quality REQ-DAEMON-9 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1816544Z   [must] requirement_quality REQ-DAEMON-9 criterion=length — title is 114 words; want 3..=25
2026-06-09T09:52:59.1816981Z   [must] requirement_quality REQ-HAZARD-CONFLICT-BOTH-PRESERVED criterion=length — title is 29 words; want 3..=25
2026-06-09T09:52:59.1817398Z   [must] requirement_quality REQ-HAZARD-DAEMON-SCHED-NONBLOCKING criterion=length — title is 32 words; want 3..=25
2026-06-09T09:52:59.1817895Z   [must] requirement_quality REQ-HAZARD-DETACHED-PIPE-INHERIT criterion=length — title is 52 words; want 3..=25
2026-06-09T09:52:59.1818443Z   [must] requirement_quality REQ-HAZARD-ELEVATED-DAEMON-SPAWN criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1818848Z   [must] requirement_quality REQ-HAZARD-ELEVATED-DAEMON-SPAWN criterion=length — title is 58 words; want 3..=25
2026-06-09T09:52:59.1819552Z   [must] requirement_quality REQ-HAZARD-ENVELOPE-CR-LINESAFE criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1820203Z   [must] requirement_quality REQ-HAZARD-ENVELOPE-CR-LINESAFE criterion=length — title is 73 words; want 3..=25
2026-06-09T09:52:59.1820681Z   [must] requirement_quality REQ-HAZARD-ENVELOPE-PARSER-SAFE criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1821001Z   [must] requirement_quality REQ-HAZARD-EPOCH-RESET criterion=length — title is 60 words; want 3..=25
2026-06-09T09:52:59.1821706Z   [must] requirement_quality REQ-HAZARD-GEN-START-NOW criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1822081Z   [must] requirement_quality REQ-HAZARD-INSTANT-UNDERFLOW criterion=length — title is 30 words; want 3..=25
2026-06-09T09:52:59.1822434Z   [must] requirement_quality REQ-HAZARD-PAIR-RATE-LIMIT criterion=length — title is 37 words; want 3..=25
2026-06-09T09:52:59.1822787Z   [must] requirement_quality REQ-HAZARD-PAIR-SEED-ROTATION criterion=length — title is 33 words; want 3..=25
2026-06-09T09:52:59.1823264Z   [must] requirement_quality REQ-HAZARD-PAIR-TRANSCRIPT-BIND criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1823745Z   [must] requirement_quality REQ-HAZARD-PSYCHE-OUTBOUND-PROXY criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1824151Z   [must] requirement_quality REQ-HAZARD-PSYCHE-OUTBOUND-PROXY criterion=length — title is 27 words; want 3..=25
2026-06-09T09:52:59.1824651Z   [must] requirement_quality REQ-HAZARD-REGISTRY-GHOST-ROWS criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1825006Z   [must] requirement_quality REQ-HAZARD-REGISTRY-GHOST-ROWS criterion=length — title is 66 words; want 3..=25
2026-06-09T09:52:59.1825344Z   [must] requirement_quality REQ-HAZARD-SUDO-SECURE-PATH criterion=length — title is 43 words; want 3..=25
2026-06-09T09:52:59.1825682Z   [must] requirement_quality REQ-HAZARD-WAN-ORIGIN-AUTH criterion=length — title is 37 words; want 3..=25
2026-06-09T09:52:59.1825959Z   [must] requirement_quality REQ-INST-15 criterion=length — title is 32 words; want 3..=25
2026-06-09T09:52:59.1826250Z   [must] requirement_quality REQ-INSTALL-2 criterion=length — title is 2 word(s); want 3..=25
2026-06-09T09:52:59.1826650Z   [must] requirement_quality REQ-INSTALL-6 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1827119Z   [must] requirement_quality REQ-INSTALL-6 criterion=length — title is 56 words; want 3..=25
2026-06-09T09:52:59.1827523Z   [must] requirement_quality REQ-INSTALL-7 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1827797Z   [must] requirement_quality REQ-INSTALL-7 criterion=length — title is 50 words; want 3..=25
2026-06-09T09:52:59.1828083Z   [must] requirement_quality REQ-INSTALL-8 criterion=length — title is 55 words; want 3..=25
2026-06-09T09:52:59.1828479Z   [must] requirement_quality REQ-MANIFEST-1 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1828760Z   [must] requirement_quality REQ-MESH-1 criterion=length — title is 86 words; want 3..=25
2026-06-09T09:52:59.1829314Z   [must] requirement_quality REQ-MESH-2 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1829657Z   [must] requirement_quality REQ-MESH-2 criterion=length — title is 120 words; want 3..=25
2026-06-09T09:52:59.1830052Z   [must] requirement_quality REQ-MESH-3 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1830327Z   [must] requirement_quality REQ-MESH-3 criterion=length — title is 86 words; want 3..=25
2026-06-09T09:52:59.1830707Z   [must] requirement_quality REQ-MESH-4 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1830974Z   [must] requirement_quality REQ-MESH-4 criterion=length — title is 99 words; want 3..=25
2026-06-09T09:52:59.1831532Z   [must] requirement_quality REQ-MESH-5 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1831794Z   [must] requirement_quality REQ-MESH-5 criterion=length — title is 72 words; want 3..=25
2026-06-09T09:52:59.1832142Z   [must] requirement_quality REQ-MESH-6 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1832576Z   [must] requirement_quality REQ-MESH-6 criterion=length — title is 56 words; want 3..=25
2026-06-09T09:52:59.1832966Z   [must] requirement_quality REQ-MIGRATE-1 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1833214Z   [must] requirement_quality REQ-MSG-4 criterion=length — title is 31 words; want 3..=25
2026-06-09T09:52:59.1833582Z   [must] requirement_quality REQ-PAIR-8 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1833829Z   [must] requirement_quality REQ-PAIR-8 criterion=length — title is 67 words; want 3..=25
2026-06-09T09:52:59.1834172Z   [must] requirement_quality REQ-PRES-1 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1834421Z   [must] requirement_quality REQ-PRES-1 criterion=length — title is 48 words; want 3..=25
2026-06-09T09:52:59.1834726Z   [must] requirement_quality REQ-SEAM-SPAWN criterion=length — title is 2 word(s); want 3..=25
2026-06-09T09:52:59.1835006Z   [must] requirement_quality REQ-SHELL-1 criterion=length — title is 36 words; want 3..=25
2026-06-09T09:52:59.1835258Z   [must] requirement_quality REQ-SHELL-2 criterion=length — title is 49 words; want 3..=25
2026-06-09T09:52:59.1835499Z   [must] requirement_quality REQ-STORE-1 criterion=length — title is 34 words; want 3..=25
2026-06-09T09:52:59.1835757Z   [must] requirement_quality REQ-SUBNET-5 criterion=length — title is 52 words; want 3..=25
2026-06-09T09:52:59.1836110Z   [must] requirement_quality REQ-SUBNET-6 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1836363Z   [must] requirement_quality REQ-SUBNET-6 criterion=length — title is 38 words; want 3..=25
2026-06-09T09:52:59.1836715Z   [must] requirement_quality REQ-SUBNET-7 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1837120Z   [must] requirement_quality REQ-SUBNET-7 criterion=length — title is 75 words; want 3..=25
2026-06-09T09:52:59.1837382Z   [must] requirement_quality REQ-SUBNET-8 criterion=length — title is 53 words; want 3..=25
2026-06-09T09:52:59.1837730Z   [must] requirement_quality REQ-UPD-6 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1837970Z   [must] requirement_quality REQ-UPD-6 criterion=length — title is 32 words; want 3..=25
2026-06-09T09:52:59.1838315Z   [must] requirement_quality REQ-UPD-7 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1838557Z   [must] requirement_quality REQ-UPD-7 criterion=length — title is 88 words; want 3..=25
2026-06-09T09:52:59.1838896Z   [must] requirement_quality REQ-UPD-8 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-09T09:52:59.1839525Z   [must] requirement_quality REQ-UPD-8 criterion=length — title is 115 words; want 3..=25
2026-06-09T09:52:59.1839654Z 
2026-06-09T09:52:59.1839825Z # Requirement quality review
2026-06-09T09:52:59.1839865Z 
2026-06-09T09:52:59.1840131Z You are reviewing 179 requirement(s) from `traceable-reqs.toml` against a quality
2026-06-09T09:52:59.1840379Z rubric. Deterministic checks (length, contains-and, tbd-todo, duplicate-titles,
2026-06-09T09:52:59.1840617Z trailing-etc) have already run and surfaced as `requirement_quality` findings on
2026-06-09T09:52:59.1840797Z this command's output. Your task is the rubric items below.
2026-06-09T09:52:59.1840830Z 
2026-06-09T09:52:59.1840929Z ## Rubric
2026-06-09T09:52:59.1840962Z 
2026-06-09T09:52:59.1841385Z - **singular** — describes one capability; no smuggled "and"/"or" across distinct actions.
2026-06-09T09:52:59.1841690Z - **verifiable** — states an observable behavior a test or reviewer could confirm.
2026-06-09T09:52:59.1841958Z - **atomic** — cannot be split into two requirements without losing meaning.
2026-06-09T09:52:59.1842149Z - **active-voice** — clear subject and active verb.
2026-06-09T09:52:59.1842215Z 
2026-06-09T09:52:59.1842722Z If a criterion is borderline or doesn't apply, abstain — only emit findings for
2026-06-09T09:52:59.1842850Z clear concerns.
2026-06-09T09:52:59.1842882Z 
2026-06-09T09:52:59.1842993Z ## Requirements
2026-06-09T09:52:59.1843022Z 
2026-06-09T09:52:59.1843127Z ### REQ-ARCH-1
2026-06-09T09:52:59.1843278Z - Title: Many small acyclically-layered crates
2026-06-09T09:52:59.1843394Z - Required stages: impl
2026-06-09T09:52:59.1843428Z 
2026-06-09T09:52:59.1843535Z ### REQ-ARCH-2
2026-06-09T09:52:59.1843721Z - Title: Public SDK surface is spt-proto, spt-runtime, spt-msg
2026-06-09T09:52:59.1843846Z - Required stages: impl
2026-06-09T09:52:59.1843878Z 
2026-06-09T09:52:59.1843983Z ### REQ-ARCH-3
2026-06-09T09:52:59.1844216Z - Title: Wire-protocol version independent of crate semver, N-1 compat window
2026-06-09T09:52:59.1844342Z - Required stages: impl, unit
2026-06-09T09:52:59.1844380Z 
2026-06-09T09:52:59.1844480Z ### REQ-ARCH-4
2026-06-09T09:52:59.1844733Z - Title: Copy-verbatim the commodity layer from the sister project
2026-06-09T09:52:59.1844855Z - Required stages: impl, unit
2026-06-09T09:52:59.1844889Z 
2026-06-09T09:52:59.1844991Z ### REQ-DAEMON-1
2026-06-09T09:52:59.1845175Z - Title: One per-machine spt-daemon owning all per-machine state
2026-06-09T09:52:59.1845296Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1845334Z 
2026-06-09T09:52:59.1845437Z ### REQ-DAEMON-2
2026-06-09T09:52:59.1845596Z - Title: Broker/brain split for seamless self-update
2026-06-09T09:52:59.1845715Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1845747Z 
2026-06-09T09:52:59.1845856Z ### REQ-DAEMON-3
2026-06-09T09:52:59.1846032Z - Title: Any api invocation auto-starts the daemon if absent
2026-06-09T09:52:59.1846150Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1846182Z 
2026-06-09T09:52:59.1846283Z ### REQ-DAEMON-4
2026-06-09T09:52:59.1846421Z - Title: Honor every KNOWN-HAZARDS invariant
2026-06-09T09:52:59.1846684Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1846717Z 
2026-06-09T09:52:59.1846831Z ### REQ-STORE-1
2026-06-09T09:52:59.1847838Z - 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-09T09:52:59.1847966Z - Required stages: impl, unit
2026-06-09T09:52:59.1847999Z 
2026-06-09T09:52:59.1848109Z ### REQ-MANIFEST-1
2026-06-09T09:52:59.1848323Z - Title: Per-adapter manifest with adapter_name and min_spt_core_version
2026-06-09T09:52:59.1848439Z - Required stages: doc, impl, unit
2026-06-09T09:52:59.1848473Z 
2026-06-09T09:52:59.1848582Z ### REQ-SEAM-SPAWN
2026-06-09T09:52:59.1848700Z - Title: spawn-session seam
2026-06-09T09:52:59.1848814Z - Required stages: impl, unit
2026-06-09T09:52:59.1848843Z 
2026-06-09T09:52:59.1849031Z ### REQ-SEAM-POSTSPAWN
2026-06-09T09:52:59.1849199Z - Title: post-spawn / api bind seam with boot nonce
2026-06-09T09:52:59.1849322Z - Required stages: impl, unit
2026-06-09T09:52:59.1849355Z 
2026-06-09T09:52:59.1849471Z ### REQ-SEAM-PSYCHE
2026-06-09T09:52:59.1849631Z - Title: spawn-psyche seam (fresh + resume templates)
2026-06-09T09:52:59.1849809Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1849847Z 
2026-06-09T09:52:59.1849994Z ### REQ-SEAM-HISTORY
2026-06-09T09:52:59.1850185Z - Title: History subsystem (fetcher / locate-normalize / native store)
2026-06-09T09:52:59.1850290Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1850323Z 
2026-06-09T09:52:59.1850415Z ### REQ-SEAM-ACTIVITY
2026-06-09T09:52:59.1850595Z - Title: Activity/idle reported via api sentinels, not PTY quiescence
2026-06-09T09:52:59.1850696Z - Required stages: impl, unit
2026-06-09T09:52:59.1850725Z 
2026-06-09T09:52:59.1850834Z ### REQ-SEAM-INJECT
2026-06-09T09:52:59.1850986Z - Title: inject-input methods configurable per activity-state
2026-06-09T09:52:59.1851111Z - Required stages: impl, unit
2026-06-09T09:52:59.1851304Z 
2026-06-09T09:52:59.1851423Z ### REQ-SEAM-RESUME
2026-06-09T09:52:59.1851597Z - Title: resume-session seam (fresh-with-preload / continue-existing)
2026-06-09T09:52:59.1851713Z - Required stages: impl, unit
2026-06-09T09:52:59.1851746Z 
2026-06-09T09:52:59.1851841Z ### REQ-SEAM-CAPABILITY
2026-06-09T09:52:59.1851998Z - Title: Hostable endpoint-types capability declaration
2026-06-09T09:52:59.1852113Z - Required stages: impl, unit
2026-06-09T09:52:59.1852142Z 
2026-06-09T09:52:59.1852236Z ### REQ-SEAM-UPDATE
2026-06-09T09:52:59.1852414Z - Title: Adapter-update avenue (file-pull / delegated command)
2026-06-09T09:52:59.1852513Z - Required stages: impl, unit
2026-06-09T09:52:59.1852546Z 
2026-06-09T09:52:59.1852658Z ### REQ-API-1
2026-06-09T09:52:59.1852828Z - Title: api prefix and adapter_name on every machinery invocation
2026-06-09T09:52:59.1852933Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1852972Z 
2026-06-09T09:52:59.1853081Z ### REQ-API-2
2026-06-09T09:52:59.1853287Z - Title: The api subcommand surface (bind/listen/poll/state/worker/boundary/...)
2026-06-09T09:52:59.1853410Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1853438Z 
2026-06-09T09:52:59.1853548Z ### REQ-API-3
2026-06-09T09:52:59.1853678Z - Title: commune/signoff are file-drops, not commands
2026-06-09T09:52:59.1853796Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1853825Z 
2026-06-09T09:52:59.1853916Z ### REQ-START-1
2026-06-09T09:52:59.1854114Z - Title: Adapters never resolve SPT_HOME; binary on PATH; api bridging only
2026-06-09T09:52:59.1854243Z - Required stages: impl, unit
2026-06-09T09:52:59.1854272Z 
2026-06-09T09:52:59.1854368Z ### REQ-START-2
2026-06-09T09:52:59.1854529Z - Title: Harness-hosted startup: api seed then listen
2026-06-09T09:52:59.1854630Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1854658Z 
2026-06-09T09:52:59.1854763Z ### REQ-START-3
2026-06-09T09:52:59.1854945Z - Title: spt-hosted startup: spawn-session then api bind (no file)
2026-06-09T09:52:59.1855182Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1855212Z 
2026-06-09T09:52:59.1855316Z ### REQ-START-4
2026-06-09T09:52:59.1855449Z - Title: Adapter-injected env aliases (SPT/OWL/LIVE)
2026-06-09T09:52:59.1855575Z - Required stages: impl, unit
2026-06-09T09:52:59.1855603Z 
2026-06-09T09:52:59.1855693Z ### REQ-EP-1
2026-06-09T09:52:59.1855837Z - Title: Day-one endpoint types; open type system
2026-06-09T09:52:59.1855960Z - Required stages: impl, unit
2026-06-09T09:52:59.1855988Z 
2026-06-09T09:52:59.1856088Z ### REQ-EP-2
2026-06-09T09:52:59.1856256Z - Title: Agent endpoints vs Shells distinction in the type model
2026-06-09T09:52:59.1856359Z - Required stages: impl, unit
2026-06-09T09:52:59.1856388Z 
2026-06-09T09:52:59.1856497Z ### REQ-EP-3
2026-06-09T09:52:59.1856681Z - Title: Messaging payloads carry typed operation commands + file blobs
2026-06-09T09:52:59.1856786Z - Required stages: impl, unit
2026-06-09T09:52:59.1856824Z 
2026-06-09T09:52:59.1856967Z ### REQ-EP-4
2026-06-09T09:52:59.1857120Z - Title: PresenceChannel broker endpoint (seam day-one)
2026-06-09T09:52:59.1857249Z - Required stages: impl, unit
2026-06-09T09:52:59.1857278Z 
2026-06-09T09:52:59.1857382Z ### REQ-EP-5
2026-06-09T09:52:59.1858021Z - 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-09T09:52:59.1858141Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1858174Z 
2026-06-09T09:52:59.1858264Z ### REQ-INST-1
2026-06-09T09:52:59.1858437Z - Title: endpoint ID vs instance split (adapter-agnostic ID)
2026-06-09T09:52:59.1858550Z - Required stages: 
2026-06-09T09:52:59.1858579Z 
2026-06-09T09:52:59.1858674Z ### REQ-INST-2
2026-06-09T09:52:59.1858832Z - Title: Per-node files, synced Psyche mind
2026-06-09T09:52:59.1859028Z - Required stages: impl, unit
2026-06-09T09:52:59.1859071Z 
2026-06-09T09:52:59.1859174Z ### REQ-INST-3
2026-06-09T09:52:59.1859441Z - Title: Dormant (warm) / suspended (cold) resting states
2026-06-09T09:52:59.1859586Z - Required stages: doc, impl, unit
2026-06-09T09:52:59.1859614Z 
2026-06-09T09:52:59.1859715Z ### REQ-INST-4
2026-06-09T09:52:59.1859896Z - Title: active to dormant/suspended fires a transition echo commune
2026-06-09T09:52:59.1860011Z - Required stages: impl, unit
2026-06-09T09:52:59.1860041Z 
2026-06-09T09:52:59.1860140Z ### REQ-INST-5
2026-06-09T09:52:59.1860302Z - Title: Two-tier context sync (live to all, project to same-project)
2026-06-09T09:52:59.1860421Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1860455Z 
2026-06-09T09:52:59.1860544Z ### REQ-INST-6
2026-06-09T09:52:59.1860726Z - Title: Deferred messages not delivered to dormant/suspended instances
2026-06-09T09:52:59.1860845Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1860874Z 
2026-06-09T09:52:59.1860975Z ### REQ-INST-7
2026-06-09T09:52:59.1861131Z - Title: Subnet registry + bare-id resolution policy
2026-06-09T09:52:59.1861246Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1861275Z 
2026-06-09T09:52:59.1861384Z ### REQ-INST-8
2026-06-09T09:52:59.1861532Z - Title: Remote-control mode distinct from local operation
2026-06-09T09:52:59.1861657Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1861680Z 
2026-06-09T09:52:59.1861821Z ### REQ-INST-9
2026-06-09T09:52:59.1862101Z - Title: Multi-subnet membership (same-user N subnets; cross-user seam)
2026-06-09T09:52:59.1862273Z - Required stages: impl, unit
2026-06-09T09:52:59.1862306Z 
2026-06-09T09:52:59.1862458Z ### REQ-INST-10
2026-06-09T09:52:59.1862758Z - Title: Qualified addressing [subnet:]id[@node] + ambiguity forces qualification
2026-06-09T09:52:59.1862936Z - Required stages: impl, unit
2026-06-09T09:52:59.1862964Z 
2026-06-09T09:52:59.1863097Z ### REQ-INST-11
2026-06-09T09:52:59.1863440Z - Title: spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)
2026-06-09T09:52:59.1863822Z - Required stages: impl, unit
2026-06-09T09:52:59.1863876Z 
2026-06-09T09:52:59.1864027Z ### REQ-INST-12
2026-06-09T09:52:59.1864515Z - Title: Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync
2026-06-09T09:52:59.1864684Z - Required stages: impl, unit
2026-06-09T09:52:59.1864722Z 
2026-06-09T09:52:59.1864871Z ### REQ-INST-13
2026-06-09T09:52:59.1865171Z - Title: Subnet-exclusive sync + per-endpoint subnet-membership list
2026-06-09T09:52:59.1865342Z - Required stages: impl, unit
2026-06-09T09:52:59.1865380Z 
2026-06-09T09:52:59.1865524Z ### REQ-INST-14
2026-06-09T09:52:59.1866115Z - Title: Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated
2026-06-09T09:52:59.1866291Z - Required stages: doc, impl, unit
2026-06-09T09:52:59.1866324Z 
2026-06-09T09:52:59.1866487Z ### REQ-INST-15
2026-06-09T09:52:59.1867762Z - 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-09T09:52:59.1867970Z - Required stages: doc, impl, unit
2026-06-09T09:52:59.1868009Z 
2026-06-09T09:52:59.1868153Z ### REQ-REACH-1
2026-06-09T09:52:59.1868396Z - Title: Off-node remote-drive detection + file transfer
2026-06-09T09:52:59.1868576Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1868614Z 
2026-06-09T09:52:59.1868757Z ### REQ-REACH-2
2026-06-09T09:52:59.1869082Z - Title: Remote command execution (deferred, consent-gated)
2026-06-09T09:52:59.1869525Z - Required stages: 
2026-06-09T09:52:59.1869598Z 
2026-06-09T09:52:59.1869730Z ### REQ-MSG-1
2026-06-09T09:52:59.1870198Z - 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-09T09:52:59.1870352Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1870386Z 
2026-06-09T09:52:59.1870705Z ### REQ-MSG-2
2026-06-09T09:52:59.1870981Z - Title: spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes
2026-06-09T09:52:59.1871095Z - Required stages: impl, unit
2026-06-09T09:52:59.1871124Z 
2026-06-09T09:52:59.1871225Z ### REQ-MSG-3
2026-06-09T09:52:59.1871601Z - Title: Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown
2026-06-09T09:52:59.1871720Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1871753Z 
2026-06-09T09:52:59.1871840Z ### REQ-MSG-4
2026-06-09T09:52:59.1872746Z - 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-09T09:52:59.1872842Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1872886Z 
2026-06-09T09:52:59.1872995Z ### REQ-NODE-IDENTITY
2026-06-09T09:52:59.1873210Z - Title: Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex
2026-06-09T09:52:59.1873314Z - Required stages: impl, unit
2026-06-09T09:52:59.1873352Z 
2026-06-09T09:52:59.1873438Z ### REQ-NET-1
2026-06-09T09:52:59.1873610Z - Title: WAN messaging first-class, behind default-on net feature flag
2026-06-09T09:52:59.1873714Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1873744Z 
2026-06-09T09:52:59.1873843Z ### REQ-NET-2
2026-06-09T09:52:59.1874001Z - Title: n0 relay default + self-host knob + plain-language disclosure
2026-06-09T09:52:59.1874112Z - Required stages: impl
2026-06-09T09:52:59.1874140Z 
2026-06-09T09:52:59.1874234Z ### REQ-NET-3
2026-06-09T09:52:59.1874402Z - Title: Cross-node Psyche sync over P2P replaces gh-repo-sync
2026-06-09T09:52:59.1874515Z - Required stages: impl, unit
2026-06-09T09:52:59.1874544Z 
2026-06-09T09:52:59.1874756Z ### REQ-PAIR-1
2026-06-09T09:52:59.1874887Z - Title: TOTP-seeded SPAKE2 pairing
2026-06-09T09:52:59.1875008Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1875036Z 
2026-06-09T09:52:59.1875131Z ### REQ-PAIR-2
2026-06-09T09:52:59.1875263Z - Title: Local trust store with TOFU + warn-on-change
2026-06-09T09:52:59.1875353Z - Required stages: 
2026-06-09T09:52:59.1875383Z 
2026-06-09T09:52:59.1875479Z ### REQ-PAIR-3
2026-06-09T09:52:59.1875620Z - Title: Fetch current pairing code from any paired node
2026-06-09T09:52:59.1875721Z - Required stages: impl, unit
2026-06-09T09:52:59.1875750Z 
2026-06-09T09:52:59.1875845Z ### REQ-PAIR-4
2026-06-09T09:52:59.1875949Z - Title: Subnet naming on first pairing
2026-06-09T09:52:59.1876055Z - Required stages: impl, unit
2026-06-09T09:52:59.1876084Z 
2026-06-09T09:52:59.1876184Z ### REQ-PAIR-5
2026-06-09T09:52:59.1876465Z - Title: Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing
2026-06-09T09:52:59.1876574Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1876608Z 
2026-06-09T09:52:59.1876699Z ### REQ-PAIR-6
2026-06-09T09:52:59.1876942Z - Title: Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)
2026-06-09T09:52:59.1877047Z - Required stages: impl, unit
2026-06-09T09:52:59.1877080Z 
2026-06-09T09:52:59.1877171Z ### REQ-PAIR-7
2026-06-09T09:52:59.1877319Z - Title: Subnet icon (inline image metadata, GUI-only consumer)
2026-06-09T09:52:59.1877413Z - Required stages: 
2026-06-09T09:52:59.1877437Z 
2026-06-09T09:52:59.1877532Z ### REQ-SUBNET-1
2026-06-09T09:52:59.1877830Z - Title: spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted
2026-06-09T09:52:59.1877940Z - Required stages: impl, unit
2026-06-09T09:52:59.1877968Z 
2026-06-09T09:52:59.1878065Z ### REQ-SUBNET-2
2026-06-09T09:52:59.1878288Z - Title: Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder
2026-06-09T09:52:59.1878407Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1878440Z 
2026-06-09T09:52:59.1878651Z ### REQ-SUBNET-3
2026-06-09T09:52:59.1878932Z - Title: Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)
2026-06-09T09:52:59.1879131Z - Required stages: impl, unit
2026-06-09T09:52:59.1879165Z 
2026-06-09T09:52:59.1879256Z ### REQ-SUBNET-4
2026-06-09T09:52:59.1879552Z - Title: Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)
2026-06-09T09:52:59.1879651Z - Required stages: impl, unit
2026-06-09T09:52:59.1879689Z 
2026-06-09T09:52:59.1879770Z ### REQ-DOCS-6
2026-06-09T09:52:59.1880080Z - Title: spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)
2026-06-09T09:52:59.1880182Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1880215Z 
2026-06-09T09:52:59.1880314Z ### REQ-SEC-1
2026-06-09T09:52:59.1880687Z - Title: Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants
2026-06-09T09:52:59.1880798Z - Required stages: impl, unit
2026-06-09T09:52:59.1880826Z 
2026-06-09T09:52:59.1880917Z ### REQ-NOTIF-1
2026-06-09T09:52:59.1881256Z - Title: Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts
2026-06-09T09:52:59.1881369Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1881397Z 
2026-06-09T09:52:59.1881494Z ### REQ-NOTIF-2
2026-06-09T09:52:59.1881737Z - Title: spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)
2026-06-09T09:52:59.1881847Z - Required stages: doc, impl, unit, int
2026-06-09T09:52:59.1881879Z 
2026-06-09T09:52:59.1881965Z ### REQ-UPD-1
2026-06-09T09:52:59.1882071Z - Title: Peer-propagated update over P2P
2026-06-09T09:52:59.1882166Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1882194Z 
2026-06-09T09:52:59.1882289Z ### REQ-UPD-2
2026-06-09T09:52:59.1882556Z - Title: All binaries signature-verified before handoff
2026-06-09T09:52:59.1882657Z - Required stages: impl, unit
2026-06-09T09:52:59.1882686Z 
2026-06-09T09:52:59.1882792Z ### REQ-UPD-3
2026-06-09T09:52:59.1882956Z - Title: No endpoint process terminates/suspends during self-update
2026-06-09T09:52:59.1883071Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1883099Z 
2026-06-09T09:52:59.1883202Z ### REQ-UPD-4
2026-06-09T09:52:59.1883383Z - Title: Update gated on user confirmation by default; opt-in full-auto
2026-06-09T09:52:59.1883503Z - Required stages: impl, unit
2026-06-09T09:52:59.1883531Z 
2026-06-09T09:52:59.1883625Z ### REQ-UPD-5
2026-06-09T09:52:59.1883784Z - Title: spt-core ripple-updates registered adapters
2026-06-09T09:52:59.1883907Z - Required stages: impl, unit
2026-06-09T09:52:59.1883936Z 
2026-06-09T09:52:59.1884013Z ### REQ-UPD-6
2026-06-09T09:52:59.1884823Z - 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-09T09:52:59.1884938Z - Required stages: doc, impl, unit, int
2026-06-09T09:52:59.1884977Z 
2026-06-09T09:52:59.1885066Z ### REQ-UPD-7
2026-06-09T09:52:59.1887096Z - 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-09T09:52:59.1887363Z - Required stages: impl, unit
2026-06-09T09:52:59.1887397Z 
2026-06-09T09:52:59.1887493Z ### REQ-UPD-8
2026-06-09T09:52:59.1890006Z - 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-09T09:52:59.1890131Z - Required stages: impl, unit
2026-06-09T09:52:59.1890179Z 
2026-06-09T09:52:59.1890269Z ### REQ-TERM-1
2026-06-09T09:52:59.1890437Z - Title: Process-supervisor terminal wrapper hosting broker PTYs
2026-06-09T09:52:59.1890536Z - Required stages: impl, unit
2026-06-09T09:52:59.1890573Z 
2026-06-09T09:52:59.1890660Z ### REQ-TERM-2
2026-06-09T09:52:59.1890832Z - Title: session-surface abstraction; send-keys + send-line injection
2026-06-09T09:52:59.1890921Z - Required stages: impl, unit
2026-06-09T09:52:59.1890945Z 
2026-06-09T09:52:59.1891040Z ### REQ-TERM-3
2026-06-09T09:52:59.1891177Z - Title: Byte-stream remote terminal streaming for v1
2026-06-09T09:52:59.1891285Z - Required stages: impl, unit
2026-06-09T09:52:59.1891314Z 
2026-06-09T09:52:59.1891410Z ### REQ-TERM-4
2026-06-09T09:52:59.1891749Z - Title: Live activity buffer (PTY digest): adapter-supplied patterns over broker PTY, spt digest pull + delta-stream, opt-in Path-B log
2026-06-09T09:52:59.1891868Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1892011Z 
2026-06-09T09:52:59.1892120Z ### REQ-FRONT-1
2026-06-09T09:52:59.1892297Z - Title: Day-one launcher/manager frontend (list/launch/attach/init)
2026-06-09T09:52:59.1892407Z - Required stages: 
2026-06-09T09:52:59.1892440Z 
2026-06-09T09:52:59.1892530Z ### REQ-INSTALL-1
2026-06-09T09:52:59.1892741Z - Title: Two install paths; signed one-line script; OS-service registration
2026-06-09T09:52:59.1892831Z - Required stages: doc, impl, int
2026-06-09T09:52:59.1892854Z 
2026-06-09T09:52:59.1892951Z ### REQ-INSTALL-2
2026-06-09T09:52:59.1893079Z - Title: Marketplace-repackaging-friendly install
2026-06-09T09:52:59.1893174Z - Required stages: doc
2026-06-09T09:52:59.1893198Z 
2026-06-09T09:52:59.1893294Z ### REQ-INSTALL-3
2026-06-09T09:52:59.1893426Z - Title: Idempotent + interactive-optional first run
2026-06-09T09:52:59.1893535Z - Required stages: impl, int
2026-06-09T09:52:59.1893563Z 
2026-06-09T09:52:59.1893659Z ### REQ-INSTALL-4
2026-06-09T09:52:59.1894273Z - 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-09T09:52:59.1894378Z - Required stages: impl, unit
2026-06-09T09:52:59.1894410Z 
2026-06-09T09:52:59.1894501Z ### REQ-MIGRATE-1
2026-06-09T09:52:59.1894663Z - Title: Auto-detect and migrate a legacy claude_skill_owl install
2026-06-09T09:52:59.1894767Z - Required stages: 
2026-06-09T09:52:59.1894796Z 
2026-06-09T09:52:59.1894878Z ### REQ-INFRA-1
2026-06-09T09:52:59.1895054Z - Title: GitHub issue tracking for v1; tangled.org as migration target
2026-06-09T09:52:59.1895144Z - Required stages: 
2026-06-09T09:52:59.1895173Z 
2026-06-09T09:52:59.1895256Z ### REQ-INSTALL-5
2026-06-09T09:52:59.1895731Z - 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-09T09:52:59.1895842Z - Required stages: impl, int
2026-06-09T09:52:59.1895978Z 
2026-06-09T09:52:59.1896084Z ### REQ-REL-1
2026-06-09T09:52:59.1896450Z - Title: spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)
2026-06-09T09:52:59.1896580Z - Required stages: doc, impl
2026-06-09T09:52:59.1896608Z 
2026-06-09T09:52:59.1896712Z ### REQ-REL-2
2026-06-09T09:52:59.1897180Z - 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-09T09:52:59.1897290Z - Required stages: impl, int
2026-06-09T09:52:59.1897318Z 
2026-06-09T09:52:59.1897399Z ### REQ-REL-3
2026-06-09T09:52:59.1897819Z - 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-09T09:52:59.1897928Z - Required stages: impl, unit
2026-06-09T09:52:59.1897966Z 
2026-06-09T09:52:59.1898062Z ### REQ-DOCS-1
2026-06-09T09:52:59.1898257Z - Title: Dual-audience docs (human + AI dev-agent), markdown once / two depths
2026-06-09T09:52:59.1898358Z - Required stages: doc, impl
2026-06-09T09:52:59.1898387Z 
2026-06-09T09:52:59.1898487Z ### REQ-DOCS-2
2026-06-09T09:52:59.1898642Z - Title: Sub-10-minute runnable killer quickstart per audience
2026-06-09T09:52:59.1898738Z - Required stages: doc, int
2026-06-09T09:52:59.1898771Z 
2026-06-09T09:52:59.1898870Z ### REQ-DOCS-3
2026-06-09T09:52:59.1899113Z - Title: Diátaxis structure; one canonical way to do X
2026-06-09T09:52:59.1899217Z - Required stages: doc
2026-06-09T09:52:59.1899251Z 
2026-06-09T09:52:59.1899341Z ### REQ-DOCS-4
2026-06-09T09:52:59.1899518Z - Title: Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)
2026-06-09T09:52:59.1899631Z - Required stages: doc, impl, unit
2026-06-09T09:52:59.1899660Z 
2026-06-09T09:52:59.1899742Z ### REQ-DOCS-5
2026-06-09T09:52:59.1900067Z - Title: Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked
2026-06-09T09:52:59.1900171Z - Required stages: impl, int
2026-06-09T09:52:59.1900204Z 
2026-06-09T09:52:59.1900314Z ### REQ-HAZARD-GRACE-BEFORE-SIGNOFF
2026-06-09T09:52:59.1900500Z - Title: Grace-period wait completes before composing INIT_SIGNOFF (1.1)
2026-06-09T09:52:59.1900610Z - Required stages: impl, unit
2026-06-09T09:52:59.1900644Z 
2026-06-09T09:52:59.1900767Z ### REQ-HAZARD-INFO-JSON-TORN-READ
2026-06-09T09:52:59.1900925Z - Title: State-file reads tolerate concurrent writes (1.2)
2026-06-09T09:52:59.1901035Z - Required stages: impl, unit
2026-06-09T09:52:59.1901063Z 
2026-06-09T09:52:59.1901187Z ### REQ-HAZARD-STALE-INDEX-LOCK
2026-06-09T09:52:59.1901316Z - Title: Sweep stale lockfiles on daemon boot (1.3)
2026-06-09T09:52:59.1901434Z - Required stages: impl, unit
2026-06-09T09:52:59.1901462Z 
2026-06-09T09:52:59.1901586Z ### REQ-HAZARD-DEFERRED-DRAIN
2026-06-09T09:52:59.1901751Z - Title: Deferred spool rows excluded from the event-stream drain (1.4)
2026-06-09T09:52:59.1901865Z - Required stages: impl, unit
2026-06-09T09:52:59.1901888Z 
2026-06-09T09:52:59.1901999Z ### REQ-HAZARD-WORKER-PATH
2026-06-09T09:52:59.1902170Z - Title: Single source of truth for Worker/Psyche perch location (1.5)
2026-06-09T09:52:59.1902266Z - Required stages: impl, unit
2026-06-09T09:52:59.1902305Z 
2026-06-09T09:52:59.1902414Z ### REQ-HAZARD-PARENT-PID-PREFER
2026-06-09T09:52:59.1902590Z - Title: Prefer stable parent PID / broker handle over ephemeral PID (2.1)
2026-06-09T09:52:59.1902685Z - Required stages: 
2026-06-09T09:52:59.1902715Z 
2026-06-09T09:52:59.1902823Z ### REQ-HAZARD-STDIN-SESSION-ID
2026-06-09T09:52:59.1902943Z - Title: Stdin session_id precedence over env (2.2)
2026-06-09T09:52:59.1903038Z - Required stages: 
2026-06-09T09:52:59.1903067Z 
2026-06-09T09:52:59.1903181Z ### REQ-HAZARD-HANDOFF-ARGV-COMPAT
2026-06-09T09:52:59.1903329Z - Title: Broker/brain IPC + handoff argv version-tolerant (2.3)
2026-06-09T09:52:59.1903424Z - Required stages: impl, unit
2026-06-09T09:52:59.1903453Z 
2026-06-09T09:52:59.1903648Z ### REQ-HAZARD-GEN-START-NOW
2026-06-09T09:52:59.1903792Z - Title: gen_start = now() on cold-start and handoff (2.4)
2026-06-09T09:52:59.1903898Z - Required stages: impl, int
2026-06-09T09:52:59.1903926Z 
2026-06-09T09:52:59.1904029Z ### REQ-HAZARD-EPHEMERAL-CLEANUP
2026-06-09T09:52:59.1904181Z - Title: Ephemeral perch cleanup on every ring exit path (3.1)
2026-06-09T09:52:59.1904276Z - Required stages: impl, unit
2026-06-09T09:52:59.1904313Z 
2026-06-09T09:52:59.1904436Z ### REQ-HAZARD-STALE-SIGNOFF-SENTINEL
2026-06-09T09:52:59.1904590Z - Title: Stale signoff sentinel does not kill a fresh start (3.2)
2026-06-09T09:52:59.1904684Z - Required stages: impl, unit
2026-06-09T09:52:59.1904713Z 
2026-06-09T09:52:59.1904823Z ### REQ-HAZARD-ECHO-BEFORE-SIGNOFF
2026-06-09T09:52:59.1904985Z - Title: Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)
2026-06-09T09:52:59.1905084Z - Required stages: impl, unit
2026-06-09T09:52:59.1905119Z 
2026-06-09T09:52:59.1905242Z ### REQ-HAZARD-ENVELOPE-DECODE-ORDER
2026-06-09T09:52:59.1905385Z - Title: Envelope decode order, ampersand decoded last (4.1)
2026-06-09T09:52:59.1905486Z - Required stages: impl, unit
2026-06-09T09:52:59.1905515Z 
2026-06-09T09:52:59.1905619Z ### REQ-HAZARD-ENVELOPE-CR-LINESAFE
2026-06-09T09:52:59.1907373Z - 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-09T09:52:59.1907473Z - Required stages: impl, unit
2026-06-09T09:52:59.1907615Z 
2026-06-09T09:52:59.1907717Z ### REQ-HAZARD-ENVELOPE-PARSER-SAFE
2026-06-09T09:52:59.1907906Z - Title: Two-slice envelope parser is panic-free and tolerant (4.2)
2026-06-09T09:52:59.1908007Z - Required stages: impl, unit
2026-06-09T09:52:59.1908037Z 
2026-06-09T09:52:59.1908145Z ### REQ-HAZARD-EVENTPART-REASSEMBLY
2026-06-09T09:52:59.1908352Z - Title: EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently
2026-06-09T09:52:59.1908445Z - Required stages: impl, unit
2026-06-09T09:52:59.1908474Z 
2026-06-09T09:52:59.1908579Z ### REQ-HAZARD-ID-CHARSET
2026-06-09T09:52:59.1908812Z - Title: Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)
2026-06-09T09:52:59.1908908Z - Required stages: impl, unit
2026-06-09T09:52:59.1909024Z 
2026-06-09T09:52:59.1909151Z ### REQ-HAZARD-REGISTRY-STALE-CLEAN
2026-06-09T09:52:59.1909322Z - Title: Stale registry entries degrade to fallback, never hard-fail (4.3)
2026-06-09T09:52:59.1909420Z - Required stages: impl, unit
2026-06-09T09:52:59.1909463Z 
2026-06-09T09:52:59.1909577Z ### REQ-HAZARD-REGISTRY-CONCURRENT
2026-06-09T09:52:59.1909806Z - Title: Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)
2026-06-09T09:52:59.1909906Z - Required stages: impl, unit
2026-06-09T09:52:59.1909935Z 
2026-06-09T09:52:59.1910035Z ### REQ-HAZARD-REGISTRY-DIR-CREATE
2026-06-09T09:52:59.1910397Z - Title: SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)
2026-06-09T09:52:59.1910501Z - Required stages: doc, impl, unit
2026-06-09T09:52:59.1910526Z 
2026-06-09T09:52:59.1910627Z ### REQ-HAZARD-REGISTRY-EPOCH-LEASE
2026-06-09T09:52:59.1911041Z - 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-09T09:52:59.1911140Z - Required stages: impl, unit
2026-06-09T09:52:59.1911165Z 
2026-06-09T09:52:59.1911275Z ### REQ-HAZARD-DEFERRED-SURVIVE-DRAIN
2026-06-09T09:52:59.1911418Z - Title: Deferred rows survive poll drain (4.4)
2026-06-09T09:52:59.1911632Z - Required stages: impl, unit
2026-06-09T09:52:59.1911660Z 
2026-06-09T09:52:59.1911770Z ### REQ-HAZARD-INBOX-NO-DOUBLE
2026-06-09T09:52:59.1911891Z - Title: No double-delivery via legacy inbox (4.5)
2026-06-09T09:52:59.1911989Z - Required stages: impl, unit
2026-06-09T09:52:59.1912023Z 
2026-06-09T09:52:59.1912127Z ### REQ-HAZARD-WINDOWS-PID-RECYCLE
2026-06-09T09:52:59.1912274Z - Title: Windows PID-recycling false positives guarded (5.1)
2026-06-09T09:52:59.1912372Z - Required stages: impl, unit
2026-06-09T09:52:59.1912401Z 
2026-06-09T09:52:59.1912497Z ### REQ-HAZARD-EBUSY-RENAME
2026-06-09T09:52:59.1912654Z - Title: tmp-write + atomic-rename + retry on Windows EBUSY (5.2)
2026-06-09T09:52:59.1912754Z - Required stages: impl, unit
2026-06-09T09:52:59.1912782Z 
2026-06-09T09:52:59.1912884Z ### REQ-HAZARD-SUBPROCESS-TIMEOUT
2026-06-09T09:52:59.1913021Z - Title: Every harness/git subprocess has a timeout (5.3)
2026-06-09T09:52:59.1913122Z - Required stages: impl, unit
2026-06-09T09:52:59.1913155Z 
2026-06-09T09:52:59.1913265Z ### REQ-HAZARD-UNC-PATH-STRIP
2026-06-09T09:52:59.1913403Z - Title: Strip Windows UNC prefix on serialized paths (5.4)
2026-06-09T09:52:59.1913499Z - Required stages: impl, unit
2026-06-09T09:52:59.1913527Z 
2026-06-09T09:52:59.1913636Z ### REQ-HAZARD-SINGLE-PATH-SOURCE
2026-06-09T09:52:59.1913799Z - Title: Single path/registry source of truth; no layout ambiguity (6.1)
2026-06-09T09:52:59.1913898Z - Required stages: impl, unit
2026-06-09T09:52:59.1913926Z 
2026-06-09T09:52:59.1914027Z ### REQ-HAZARD-SOFT-CLEANUP
2026-06-09T09:52:59.1914199Z - Title: Soft-cleanup preserves state, removes only the ready marker (6.2)
2026-06-09T09:52:59.1914299Z - Required stages: impl, unit
2026-06-09T09:52:59.1914327Z 
2026-06-09T09:52:59.1914424Z ### REQ-HAZARD-CASCADE-WIPE-GUARD
2026-06-09T09:52:59.1914589Z - Title: No hard-delete of a parent hosting non-empty children (6.3)
2026-06-09T09:52:59.1914679Z - Required stages: impl, unit
2026-06-09T09:52:59.1914813Z 
2026-06-09T09:52:59.1914930Z ### REQ-HAZARD-DROP-FILE-SINGLE-WRITER
2026-06-09T09:52:59.1915068Z - Title: Drop files are daemon-owned single-writer (6.4)
2026-06-09T09:52:59.1915160Z - Required stages: impl, unit
2026-06-09T09:52:59.1915188Z 
2026-06-09T09:52:59.1915306Z ### REQ-HAZARD-DIRECT-WRITE-PRECEDENCE
2026-06-09T09:52:59.1915503Z - Title: Direct-write precedence marker (with node id) guards stale overwrite (6.5)
2026-06-09T09:52:59.1915602Z - Required stages: impl, unit
2026-06-09T09:52:59.1915631Z 
2026-06-09T09:52:59.1915741Z ### REQ-HAZARD-CONFLICT-BOTH-PRESERVED
2026-06-09T09:52:59.1916265Z - 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-09T09:52:59.1916366Z - Required stages: impl, unit
2026-06-09T09:52:59.1916395Z 
2026-06-09T09:52:59.1916504Z ### REQ-HAZARD-DETACHED-PIPE-INHERIT
2026-06-09T09:52:59.1917565Z - 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-09T09:52:59.1917666Z - Required stages: impl, unit
2026-06-09T09:52:59.1917695Z 
2026-06-09T09:52:59.1917794Z ### REQ-HAZARD-CONPTY-DSR
2026-06-09T09:52:59.1917991Z - Title: ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)
2026-06-09T09:52:59.1918086Z - Required stages: impl, unit
2026-06-09T09:52:59.1918113Z 
2026-06-09T09:52:59.1918214Z ### REQ-HAZARD-CHILD-CONSOLE-FLASH
2026-06-09T09:52:59.1918620Z - 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-09T09:52:59.1918734Z - Required stages: impl, unit
2026-06-09T09:52:59.1918767Z 
2026-06-09T09:52:59.1919025Z ### REQ-HAZARD-INSTANT-UNDERFLOW
2026-06-09T09:52:59.1919584Z - 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-09T09:52:59.1919677Z - Required stages: impl, unit
2026-06-09T09:52:59.1919706Z 
2026-06-09T09:52:59.1919810Z ### REQ-HAZARD-SUDO-SECURE-PATH
2026-06-09T09:52:59.1920652Z - 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-09T09:52:59.1920747Z - Required stages: impl, unit
2026-06-09T09:52:59.1920776Z 
2026-06-09T09:52:59.1920877Z ### REQ-HAZARD-LOCAL-API-AUTH
2026-06-09T09:52:59.1921105Z - Title: Every local `api` mutation authenticated to an endpoint/session (codex #13)
2026-06-09T09:52:59.1921201Z - Required stages: impl, unit
2026-06-09T09:52:59.1921229Z 
2026-06-09T09:52:59.1921343Z ### REQ-HAZARD-RESTART-IDEMPOTENT
2026-06-09T09:52:59.1927784Z - Title: Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)
2026-06-09T09:52:59.1927923Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1927956Z 
2026-06-09T09:52:59.1928064Z ### REQ-HAZARD-UPDATE-ROLLBACK
2026-06-09T09:52:59.1928326Z - Title: Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)
2026-06-09T09:52:59.1928431Z - Required stages: impl, unit
2026-06-09T09:52:59.1928459Z 
2026-06-09T09:52:59.1928574Z ### REQ-HAZARD-DAEMON-HOSTED-LIVENESS
2026-06-09T09:52:59.1929050Z - 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-09T09:52:59.1929313Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1929346Z 
2026-06-09T09:52:59.1929462Z ### REQ-HAZARD-PSYCHE-OUTBOUND-PROXY
2026-06-09T09:52:59.1930280Z - 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-09T09:52:59.1930380Z - Required stages: impl, unit
2026-06-09T09:52:59.1930408Z 
2026-06-09T09:52:59.1930531Z ### REQ-HAZARD-DAEMON-SCHED-NONBLOCKING
2026-06-09T09:52:59.1931151Z - 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-09T09:52:59.1931250Z - Required stages: impl, unit
2026-06-09T09:52:59.1931279Z 
2026-06-09T09:52:59.1931390Z ### REQ-HAZARD-PAIR-TRANSCRIPT-BIND
2026-06-09T09:52:59.1932062Z - 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-09T09:52:59.1932171Z - Required stages: impl, unit
2026-06-09T09:52:59.1932199Z 
2026-06-09T09:52:59.1932310Z ### REQ-HAZARD-PAIR-SEED-ROTATION
2026-06-09T09:52:59.1932819Z - 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-09T09:52:59.1932920Z - Required stages: impl, unit
2026-06-09T09:52:59.1932949Z 
2026-06-09T09:52:59.1933058Z ### REQ-HAZARD-PAIR-RATE-LIMIT
2026-06-09T09:52:59.1933903Z - 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-09T09:52:59.1934155Z - Required stages: impl, unit
2026-06-09T09:52:59.1934183Z 
2026-06-09T09:52:59.1934285Z ### REQ-HAZARD-WAN-ORIGIN-AUTH
2026-06-09T09:52:59.1935056Z - 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-09T09:52:59.1935167Z - Required stages: doc, impl, unit
2026-06-09T09:52:59.1935196Z 
2026-06-09T09:52:59.1935287Z ### REQ-CONSENT-1
2026-06-09T09:52:59.1936145Z - 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-09T09:52:59.1936270Z - Required stages: impl, unit
2026-06-09T09:52:59.1936322Z 
2026-06-09T09:52:59.1936407Z ### REQ-CONSENT-2
2026-06-09T09:52:59.1937195Z - 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-09T09:52:59.1937295Z - Required stages: impl, unit
2026-06-09T09:52:59.1937323Z 
2026-06-09T09:52:59.1937409Z ### REQ-PRES-1
2026-06-09T09:52:59.1938748Z - 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-09T09:52:59.1939019Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1939049Z 
2026-06-09T09:52:59.1939130Z ### REQ-SHELL-1
2026-06-09T09:52:59.1939973Z - 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-09T09:52:59.1940074Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1940103Z 
2026-06-09T09:52:59.1940193Z ### REQ-SHELL-2
2026-06-09T09:52:59.1941649Z - 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-09T09:52:59.1941782Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1941810Z 
2026-06-09T09:52:59.1941920Z ### REQ-HAZARD-ELEVATED-DAEMON-SPAWN
2026-06-09T09:52:59.1943213Z - 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-09T09:52:59.1943312Z - Required stages: doc, impl, unit
2026-06-09T09:52:59.1943340Z 
2026-06-09T09:52:59.1943446Z ### REQ-HAZARD-REGISTRY-GHOST-ROWS
2026-06-09T09:52:59.1944869Z - 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-09T09:52:59.1944997Z - Required stages: doc, impl, unit
2026-06-09T09:52:59.1945025Z 
2026-06-09T09:52:59.1945116Z ### REQ-CLI-1
2026-06-09T09:52:59.1946124Z - 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-09T09:52:59.1946222Z - Required stages: impl, unit
2026-06-09T09:52:59.1946270Z 
2026-06-09T09:52:59.1946379Z ### REQ-CLI-2
2026-06-09T09:52:59.1947049Z - 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-09T09:52:59.1947145Z - Required stages: impl, unit
2026-06-09T09:52:59.1947178Z 
2026-06-09T09:52:59.1947268Z ### REQ-CLI-3
2026-06-09T09:52:59.1947950Z - 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-09T09:52:59.1948051Z - Required stages: impl, unit
2026-06-09T09:52:59.1948079Z 
2026-06-09T09:52:59.1948174Z ### REQ-SUBNET-5
2026-06-09T09:52:59.1949322Z - 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-09T09:52:59.1949546Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1949579Z 
2026-06-09T09:52:59.1949667Z ### REQ-SUBNET-6
2026-06-09T09:52:59.1950329Z - 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-09T09:52:59.1950434Z - Required stages: impl, unit
2026-06-09T09:52:59.1950461Z 
2026-06-09T09:52:59.1950558Z ### REQ-SUBNET-7
2026-06-09T09:52:59.1952194Z - 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-09T09:52:59.1952323Z - Required stages: impl, unit
2026-06-09T09:52:59.1952356Z 
2026-06-09T09:52:59.1952441Z ### REQ-SUBNET-8
2026-06-09T09:52:59.1953516Z - 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-09T09:52:59.1953634Z - Required stages: impl, unit
2026-06-09T09:52:59.1953783Z 
2026-06-09T09:52:59.1953873Z ### REQ-INSTALL-6
2026-06-09T09:52:59.1955057Z - 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-09T09:52:59.1955157Z - Required stages: impl, unit
2026-06-09T09:52:59.1955190Z 
2026-06-09T09:52:59.1955276Z ### REQ-INSTALL-7
2026-06-09T09:52:59.1956383Z - 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-09T09:52:59.1956530Z - Required stages: impl
2026-06-09T09:52:59.1956559Z 
2026-06-09T09:52:59.1956645Z ### REQ-INSTALL-8
2026-06-09T09:52:59.1957662Z - 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-09T09:52:59.1957762Z - Required stages: impl
2026-06-09T09:52:59.1957790Z 
2026-06-09T09:52:59.1957880Z ### REQ-CONV-1
2026-06-09T09:52:59.1959349Z - 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-09T09:52:59.1959574Z - Required stages: impl, unit
2026-06-09T09:52:59.1959603Z 
2026-06-09T09:52:59.1959692Z ### REQ-CONV-2
2026-06-09T09:52:59.1960745Z - 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-09T09:52:59.1960846Z - Required stages: impl, unit
2026-06-09T09:52:59.1960884Z 
2026-06-09T09:52:59.1960975Z ### REQ-PAIR-8
2026-06-09T09:52:59.1962254Z - 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-09T09:52:59.1962367Z - Required stages: impl, unit
2026-06-09T09:52:59.1962397Z 
2026-06-09T09:52:59.1962492Z ### REQ-DAEMON-5
2026-06-09T09:52:59.1963771Z - 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-09T09:52:59.1963866Z - Required stages: impl, unit
2026-06-09T09:52:59.1963898Z 
2026-06-09T09:52:59.1964019Z ### REQ-DAEMON-6
2026-06-09T09:52:59.1966013Z - 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-09T09:52:59.1966121Z - Required stages: impl, unit
2026-06-09T09:52:59.1966155Z 
2026-06-09T09:52:59.1966251Z ### REQ-DAEMON-7
2026-06-09T09:52:59.1967669Z - 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-09T09:52:59.1967787Z - Required stages: impl, unit
2026-06-09T09:52:59.1967816Z 
2026-06-09T09:52:59.1967912Z ### REQ-DAEMON-8
2026-06-09T09:52:59.1968838Z - 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-09T09:52:59.1968937Z - Required stages: impl, unit
2026-06-09T09:52:59.1969037Z 
2026-06-09T09:52:59.1969128Z ### REQ-DAEMON-9
2026-06-09T09:52:59.1971392Z - 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-09T09:52:59.1971610Z - Required stages: impl, unit
2026-06-09T09:52:59.1971649Z 
2026-06-09T09:52:59.1971745Z ### REQ-HAZARD-EPOCH-RESET
2026-06-09T09:52:59.1973043Z - 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-09T09:52:59.1973162Z - Required stages: 
2026-06-09T09:52:59.1973190Z 
2026-06-09T09:52:59.1973286Z ### REQ-MESH-1
2026-06-09T09:52:59.1975477Z - 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-09T09:52:59.1975611Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1975639Z 
2026-06-09T09:52:59.1975724Z ### REQ-MESH-2
2026-06-09T09:52:59.1978305Z - 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-09T09:52:59.1978429Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1978458Z 
2026-06-09T09:52:59.1978548Z ### REQ-MESH-3
2026-06-09T09:52:59.1980264Z - 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-09T09:52:59.1980366Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1980394Z 
2026-06-09T09:52:59.1980604Z ### REQ-MESH-4
2026-06-09T09:52:59.1982810Z - 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-09T09:52:59.1982916Z - Required stages: impl, unit, int
2026-06-09T09:52:59.1982944Z 
2026-06-09T09:52:59.1983034Z ### REQ-MESH-5
2026-06-09T09:52:59.1984451Z - 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-09T09:52:59.1984571Z - Required stages: impl, unit
2026-06-09T09:52:59.1984604Z 
2026-06-09T09:52:59.1984690Z ### REQ-MESH-6
2026-06-09T09:52:59.1985910Z - 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-09T09:52:59.1986009Z - Required stages: impl, unit
2026-06-09T09:52:59.1986062Z 
2026-06-09T09:52:59.1986279Z ## How to report back
2026-06-09T09:52:59.1986312Z 
2026-06-09T09:52:59.1986480Z For every (requirement, failing criterion) pair, emit one finding:
2026-06-09T09:52:59.1986508Z 
2026-06-09T09:52:59.1986598Z     {
2026-06-09T09:52:59.1986703Z       "code": "requirement_quality",
2026-06-09T09:52:59.1986809Z       "requirementId": "REQ-...",
2026-06-09T09:52:59.1986970Z       "criterion": "singular" | "verifiable" | "atomic" | "active-voice",
2026-06-09T09:52:59.1987071Z       "message": "<short reason>",
2026-06-09T09:52:59.1987191Z       "suggestedRevision": "<optional rewrite>"
2026-06-09T09:52:59.1987275Z     }
2026-06-09T09:52:59.1987304Z 
2026-06-09T09:52:59.1987481Z Wrap your response as { "findings": [ ... ] } listing only your concerns; the
2026-06-09T09:52:59.1987619Z deterministic findings above don't need to be repeated.
2026-06-09T09:52:59.2070081Z Post job cleanup.
2026-06-09T09:52:59.2794699Z [command]/usr/bin/git version
2026-06-09T09:52:59.2864205Z git version 2.43.0
2026-06-09T09:52:59.2898627Z Temporarily overriding HOME='/home/reavus/actions-runner/_work/_temp/cb60449e-afc0-449c-a119-dc748d009bab' before making global git config changes
2026-06-09T09:52:59.2899429Z Adding repository directory to the temporary git global config as a safe directory
2026-06-09T09:52:59.2902958Z [command]/usr/bin/git config --global --add safe.directory /home/reavus/actions-runner/_work/spt-core/spt-core
2026-06-09T09:52:59.2935191Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-06-09T09:52:59.2959979Z [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-09T09:52:59.3156528Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
2026-06-09T09:52:59.3174664Z http.https://github.com/.extraheader
2026-06-09T09:52:59.3181479Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader
2026-06-09T09:52:59.3213597Z [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-09T09:52:59.3416474Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir:
2026-06-09T09:52:59.3442615Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
2026-06-09T09:52:59.3763250Z Cleaning up orphan processes
