gates exit=0
=== GATE: traceable-reqs check (requirement coverage) ===
ok  coverage green

=== GATE: skeleton-validate (cplugs installability) ===
ok  skeleton installable

=== GATE: manifest-schema ===
ok   C:/Users/decid/Documents/projects/spt-claude-code/adapter/claude-spt.toml
ok   manifest validates against published manifest.schema.json

=== GATE: docs-drift ===
ok   mdbook build
ok   llms.txt in sync

=== RESULT: PASS ===
  [OK] REQ-WAKE-LEGACY-RETIRED  required: [impl, unit, int]  stages: -doc +impl +unit +int -e2e -shipped
       Stage 3 of the staged across/wake rename: the RECEIVE side accepts ONLY the new generation. The legacy `!!checkpoint!!` commune marker and the legacy `{"checkpoint":"v1","wake":…}` / `{"checkpoint_fire":"v1"}` envelope shapes are refused — a retired marker is ordinary text (it neither arms nor pairs, and a lone live marker beside it is still a single marker), and a retired envelope delivers as an ordinary message (no clear, no armed or drained wake). WHY NOW: REQ-WAKE-RENAME-STAGED shipped receive-both at v0.23.0 and REQ-WAKE-EMIT-FLIP flipped the emit at v0.24.0 with retirement promised for 'the release after'; it slipped forty releases. Retirement is safe because every hook that can meet this translate has emitted the new keys since v0.24.0 and both binaries ship in one adapter archive, and it is WANTED because agent-facing text stopped teaching `!!checkpoint!!` at v0.23.0, so the only remaining way that spelling reaches a commune is prose about Claude Code's own /checkpoint feature — a stale acceptance whose sole remaining effect is to arm a boundary nobody asked for (the class REQ-WAKE-MARKER-QUOTED narrowed for the live marker).
  [OK] REQ-WAKE-MARKER-QUOTED  required: [impl, unit]  stages: -doc +impl +unit -int -e2e -shipped
       A wake marker inside a code quotation is a QUOTATION, not a trigger — the rule claude-spt's shortform peer-tags already carry, applied to the wake convention the adapter owns end to end. Both wake helpers read a byte-length-preserving MASKED copy of the commune body in which fenced code blocks and inline code spans are blanked, so (a) a commune that merely quotes the marker (a release note, a plan, a message about this very defect) can no longer ARM a context reset its author never requested, and (b) a directive is paired from real markers only, never from two incidental mentions. Marker offsets still index the ORIGINAL body so the extracted directive keeps its verbatim text. Inline spans close on the SAME line only — deliberate: an unmatched stray backtick must never swallow the rest of the body and silently kill a live marker, because a dead boundary fails silently while a spurious mask is invisible. Failing toward arming is the safe direction.
  [OK] REQ-WAKE-RENAME-STAGED  required: [impl, unit]  stages: -doc +impl +unit -int -e2e -shipped
       The across/wake rename is STAGED so a cross-version boundary can never brick a live endpoint (the hook_cmd-LOCKSTEP degrade discipline applied to the wake pipeline): agent-facing verbiage hard-cuts to --across / 'commune across' / !!wake!! (the word 'checkpoint' is PURGED from agent-facing text — Claude Code ships an official /checkpoint skill that semantically collides), while the RECEIVE side accepts both marker generations (!!wake!! + legacy !!checkpoint!!, same-generation pairing only) and both envelope shapes ({"wake_arm"/"wake_fire"} + legacy {"checkpoint"/"checkpoint_fire"}), and the EMIT side keeps the LEGACY envelope keys for this one release — an un-bounced pre-rename resident translate receiving an unknown key would full-type raw JSON at a post-clear boundary. The emit flips to the wake keys next release.

note: 3 tag-carrying file(s) not placement-judged (no grammar for the language, or the parse recovered from errors)
trace exit=0

[exited with code 0]
