<!-- spt:source=llm spt:routed_at_ms=1789294860002 spt:node=14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d spt:vector=14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:4278236 -->
## spt-claude-code — echo-race workaround retirement (#37/#38), resolved 2026-09-11

**Task**: agent "perri" had retired a v0.40.0 workaround for an "echo race" bug, claiming the fix was "FIELD-VERIFIED" by a single observed wake on 2026-09-09. This claim was later found unsupported and corrected.

**Resolution (final, applied)**:
- doyle (peer) checked the actual tagged releases (not docs) and ruled: v0.67.1 still files the echo into the commune channel; v0.68.0 is the first release with routes-not-files behavior. Contract floor `min_spt_core_version = 0.68.0` in `claude-spt.toml` is **correct as-is** — no adapter change made. Coupling guard green on all 3 assertions, tree clean.
- perri's original doubt (that the floor might be too high) came from a bad instrument: this node's locally served doc bundle at `localhost:5474` (spt-core 0.67.1 running) already contained routes-not-files wording, but the *tagged* 0.67.1 release doc does not. Root cause of the node serving newer doc content than its binary version is unestablished — flagged as doyle's to chase.
- Sharpened conclusion: since the race was *present* in 0.67.1, the Sep 9 wake succeeded by winning a live race, not because a fix existed — the "verified by construction" mechanism was absent, not merely unproven.
- Real exposure identified: adapter 0.40.0 ran ~2 days on core 0.67.1 with the race live and workaround retired (below its own declared floor) — floor gates `adapter update`, not runtime. Closed when core updated to 0.69.0.

**Memory files updated** (in `C:\Users\decid\.claude-spt\accounts\alt\projects\C--Users-decid-Documents-projects-spt-claude-code\memory\`):
- `v0400-echo-race-workaround-retired.md` — replaced the "floor may be too high" doubt block with the confirmed-correct resolution and the three sharpened lessons.
- `node-local-book-gate.md` — added a "SHARPENED 2026-09-11" section: served docs are never evidence of what a version shipped (can skew both older AND newer than the running binary); only release tags date behavior.
- `MEMORY.md` — updated the `[v0.40.0 echo-race workaround retired]` entry line and the book-gate lesson line to reflect the above.

**Status**: Session ended cleanly. All of perri's owned work (#37, #38) is landed and recorded; perri sent doyle an acknowledgment confirming the ruling was applied with no code changes needed. perri emitted `!!done!!`.

**Still open, not blocking perri**: #35 (operator bag, blocked on human/doyle), unbiased kill rate (blocked on elapsed traffic, next session's harvest), #32 (same accrual dependency), `spt-bs-releases#299` (doyle's, tracked-not-executing), and a LAN-exposed socket (`http://192.168.1.81:5470/install`) that was flagging on every tool call — decision on whether to close it (`spt serve lan --stop`) was left to doyle/human.