## Defect and change Refs BigscreenVR/spt-bs-releases#307. Repairs the product defect isolated from golden run 35313912102; this is not a same-SHA golden rerun or a timing-budget increase. The CLI published UNBOUND before broker spawn completed, without the identity-checked custody already honored by liveness reconciliation. A sessionless tick could therefore CAS that same session-id row to OFFLINE while its launch was still in flight. - Acquire process-identity custody after home admission and before publishing UNBOUND; retain it through broker spawn return and error rollback, then release before terminal attachment. - Cover both true resume and fresh fallback. Serialize CLI writers of the single custody marker with the existing fs2 mechanism; preserve another owner's marker during cleanup. - Recheck for an existing row after acquiring the lock, so a fresh launcher cannot overwrite a row another CLI published/bound while it waited. - Preserve session-id CAS, existing reconciliation and broker census. No timer/grace: the unguarded dead-harness negative control still offlines on its next tick. - Register `REQ-HAZARD-CLI-SPAWN-UNBOUND-CUSTODY` with doc/impl/int evidence in this same commit; update hazard 7.67, the custody glossary/storage contract, and changelog. ## Exact tested source **Commit: `f27fc4d5243608dd710f6e319198a2277e617bca`** (one commit, nine files). All five acceptance phases were re-executed after the final source change and commit. Every phase records this HEAD before/after, zero native and wrapper exits, and an unchanged source map. The source-map SHA-256 is identical across all five phases: `570940eccf605e072bf90acd280f31c9ccf5c2f60121d3e027af3d1eba3aa63d` Windows, own worktree/target, private SPT_HOME/TEMP/TMP/TMPDIR, inherited OWL_/SPT_ values scrubbed, Cargo jobs=2, retries=0. Final phases refused runner/build overlap. No cargo fmt. | Final-source proof | Observed result | Receipt under `.spt/preserved/307/todlando-cli-resume-custody/` | |---|---|---| | Actual CLI / IPC spawn-barrier regression | 3 selected, 3 run/passed, 0 skipped | `green@final/receipt.json` | | `rc_attach_truth` including the original failing case | 6 selected, 6 run/passed, 0 skipped | `rc@final/receipt.json` | | Reconcile/selfheal/custody/attach compatibility band | 125 selected, 125 run/passed; 2,360 unrelated tests filtered out | `compat@final/receipt.json` | | `cargo clippy --workspace --all-targets -- -D warnings` | native 0, wrapper 0 | `clippy@final/receipt.json` | | `traceable-reqs check --json` (0.4.1) | 927/927 complete, 0 findings; native 0, wrapper 0 | `trace@final/receipt.json` | Compatibility inventory: CLI rc/resume-resolution 68; daemon livehost 27; store custody/resume/rollback 8; attach 16; attach_wedge_e2e 1; driven_by_selfheal 2; resume_custody_aba 2; **attach_idempotent_replay 1**. The replay case `a_same_conn_equal_gen_replay_preserves_the_seat_and_replays_no_history` actually passed (2.078s); selection is not inferred from exit 0. Baseline RED is preserved separately at unchanged production HEAD `0ab1e48b7c4cf4c16e0e46c14b415ff28bbc8f5c`: all three barrier cases failed the intended witness, `an unanswered CLI spawn must DEFER, not offline`, with custody=None. Native nextest exit 100, expected-red wrapper exit 0. The regression file is byte-identical between baseline RED and final GREEN (SHA-256 `ab074cf903d706bd4614a61f250b9c347c93c4820177815d4d510582f774691d`). The fixture drives the actual CLI and real local IPC codec, not a hand-minted marker; companion suites exercise real brokers/PTYs. ## Receipt qualifications and handoff `final-proof-summary.json` binds the phase receipts and source identities. The earlier `compat/` attempt stopped before tests because the inventory guard caught an omitted replay selector (inventory native 0, wrapper 1). The explicit selector was fixed; `compat@final/` is the counted execution above. Earlier pre-final green/rc/clippy results are not substituted for final-source proof. Local Cargo is stopped. Pool release itself exited 0 and reported released; no own-target survivors or signals. Its wrapper exited 1 only when the post-release census observed Runner.Worker 57116, newly started for #233's authorized rerun. That receipt remains unmodified; it is not reported as a passed wrapper. Thin PR only; no golden dispatch. #233 merged at 09:59:20Z; this branch has now rebased cleanly onto `d0d123ddd18ea33e10f4494ba490d4aa3958c22a`. #307 remains open for the coordinated gate. ## Rebased gate SHA and provenance **Current gate SHA: `71165e3540295d7b7b9af98d6e1a06163261b0cc`.** Complete recursive Git-tree comparison against the directly tested `f27fc4d5243608dd710f6e319198a2277e617bca` identifies exactly three changed entries, inherited from #233: | Path | Tested blob | Rebased blob | |---|---|---| | `.github/workflows/golden.yml` | `3c008cd683749407b944745faa463f7bd293f835` | `d653b907d44a3f39b66d1d8d6dedcd08db4eeceb` | | `docs/GOLDEN-CI.md` | `3fef09fd7864a06538915a042bbf71dbf062077e` | `3ca01f56af97c52e75e6f1f7cb2ad5105a4de805` | | `docs/INFRA-REGISTER.md` | `1b342ddf52a7fe3aa3995a7845fd42518e02bd5e` | `904051187eff43103387c0f8adda123d36e320eb` | Every other Git entry is identical, including all nine product-fix files, Rust sources, build scripts, dependencies, version material, and the requirement manifest. The full inherited patch was inspected: symmetric twohost dependency edges plus scheduling documentation/IR-142. This does not claim the changed golden workflow has executed successfully. Static `traceable-reqs check --json` was executed again on `71165e35`: native exit 0, 927/927 complete, zero findings. No Cargo was invoked after the handoff. Native tests/clippy above remain correctly attributed to `f27fc4d5`, not relabeled as executions on the rebased SHA. Preserved provenance: `.spt/preserved/307/todlando-cli-resume-custody/rebase/receipt.json`, both complete Git-tree manifests, exact patch, and new trace stdout/stderr. Original phase receipts remain unchanged.