== commits origin/main..d0a74461 (first-parent excluded, all) == 46 == member refs in commit subjects+bodies == #297: 2 #299: 0 #300: 0 #301: 8 #302: 0 #251: 1 #282: 1 #288: 1 #230: 0 #49: 0 #267: 0 == CHANGELOG unreleased head == # Changelog All notable **user-facing** changes to `spt` — what a person running the CLI notices or does differently. The `## []` section of each release becomes that release's GitHub Release notes verbatim (see `docs/RELEASE-RUNBOOK.md`). This project follows [Keep a Changelog](https://keepachangelog.com) and semantic versioning. Pre-1.0, choose the bump by what a user can notice: **minor** when a release breaks something, or changes the observable behavior of existing surfaces broadly; **patch** for fixes, and for additive opt-in capability — a new key, flag, or page that no existing user can encounter without opting into it. ## [0.69.0] - 2026-09-11 ### Fixed - Cross-node messaging now recovers on its own instead of stalling until the service is restarted. Previously, one unanswered request could stop this node from advertising itself and reconnecting to peers, until other nodes could no longer reach it. - Sending a message to an agent on another machine no longer waits without limit when the far side accepts the connection and then never answers. Previously, such a send could hang indefinitely without reporting why. - Persistent shells now restart automatically after the background service restarts, once their owning agent is online. Previously, eligible shells could remain offline until relinked by hand. - A successful `spt shell relink` now reports `binding` while it waits for its handshake, instead of a successful launch reading as `offline`. == traceable-reqs.toml: REQs added/activated in delta == +[placement] +required_stages = ["doc", "impl", "unit", "int"] +[[requirements]] +id = "REQ-CI-NOTIFY-SCOPE" +required_stages = ["impl", "unit"] +[[requirements]] +id = "REQ-CI-NOTIFY-ATTRIBUTION" +required_stages = ["impl", "unit"] +[[requirements]] +id = "REQ-WEB-URL-BOUND-PORT" +required_stages = ["doc", "impl", "unit", "int"] +[[requirements]] +id = "REQ-LOCAL-GATE-EXECUTION-EVIDENCE" +required_stages = ["impl", "unit"] +[[requirements]] +id = "REQ-SHELL-CMD-CAPABILITY-SCOPE" +required_stages = ["impl"] +[[requirements]] +id = "REQ-WEB-LAN-BOOTSTRAP-FIREWALL" +required_stages = ["doc", "impl", "unit"] # int DEACTIVATED 2026-09-11 (doyle): no two-machine integration rig exists for bootstrap admission, and hertz measured the stage red on this lane at 7b098cc2. The obligation is carried by W2 FIELD ACCEPTANCE on releases#297 — two-machine bootstrap fetch, elevation denial and cancellation, port override, repeated start/stop, and rule ownership — and the stage is reactivated by the lane that builds that rig, not by anyone who merely wants the row green. +[[requirements]] +id = "REQ-ATTACH-CLIENT-STALE" +required_stages = ["doc", "impl", "unit", "int"] +[[requirements]] +id = "REQ-ROSTER-WAIT-ATTRIBUTION" +required_stages = ["doc", "impl"] +[[requirements]] +id = "REQ-USER-INPUT-PATH-PROPOSAL" +required_stages = ["doc", "impl", "unit"] +[[requirements]] +id = "REQ-USER-INPUT-PATH-AUTHORIZATION" +required_stages = [] +[[requirements]] +id = "REQ-WEB-PROXY-LOCATION-NAMESPACE" +required_stages = ["impl", "unit", "int"] # ACTIVATED #304 W1 rider (todlando 2026-09-11), doyle dispatch. int evidence is hertz's webserve_cross_node_e2e cell, tagged in his lane after this fix lands. [exited with code 0]