# W6 DISPATCH RULING — LIFECYCLE-TRUTH (final wave)

**Gater/owner:** doyle · **Date:** 2026-07-07 · **Head:** `0d5cc04` (W5 gated PASS + seed landed)

W6 is the LAST wave. Scope is **docs + one adapter wiring** — no new spt-core code REQ,
no new invariant. Ships the contracts that already exist in the tree but were never
published, plus turns ON the W5-A echo-verify capability for the CC harness.

## Scope (3 items, frozen)

### 1. REQ-DOC-ECHO-COMMUNE-CONTRACT → **todlando** (docs-site)
Activated `required_stages = ["doc"]`. Publish the `[session.echo_commune]` I/O contract:
- key catalog / core fills;
- core does **not** stdin-feed `[history]` (field-proven);
- self-locate guidance incl. `CLAUDE_CONFIG_DIR` / `read_env`;
- drop-file protocol: single-writer, ingest-deletes, W1 resolver semantics
  (`resolve_endpoint_drop_dir`, relative-no-cwd = loud skip — REQ-ECHO-DROP-DIR-RESOLVE);
- stdout ingestion expectations.

**Binding:** VERSION numbers only, never wave/M#/REQ codes on the public page
([[public-docs-version-not-milestone]]). `docs-publish` drift gate must pass.

### 2. REQ-DOC-DELIVERY-VOCAB → **todlando** (docs-site)
Activated `required_stages = ["doc"]`. Publish:
- send-outcome vocabulary: `SENT` / `SENT(WAN)` / `QUEUED` window semantics / `DEFERRED` / `NO_PERCH`;
- `digest --json` row schema;
- `api poll` auth + MAC-stamp prefix;
- remaining `--json` shapes checklist (seed #3).

Same public-docs discipline + drift gate.

### 3. SPT_INJECT_VERIFY_ECHO CC-manifest wiring → **perri** (claude-spt adapter)
**No new spt-core REQ.** RULING: the core capability is already delivered and covered —
W5-A shipped the broker seam (`broker.rs:2123`, `SPT_INJECT_VERIFY_ECHO` declared-capability,
default OFF) with unit+int under REQ-INJECT-MULTILINE-INTEGRITY. Turning it ON for CC is an
**adapter manifest data change**, which per [[adapter-glue-model-boundary]] lives in the
claude-spt adapter (manifest + binary only; no adapter-aware source in spt-core). CC's TUI
re-renders typed text, so echo-verify is a valid belt there.

perri: add the `SPT_INJECT_VERIFY_ECHO` env inject to the claude-spt `[env]` manifest block so
CC-hosted sessions opt into Layer-2 echo-verify. Ride the next adapter floor (min_spt_core =
counter-49 published version). Verify adapter-side (CC session → env set → broker Layer-2 arms);
this is NOT gated by the spt-core wave gate (no spt-core evidence to tag).

## What W6 is NOT
- No `impl`/`unit`/`int` on the two doc REQs — they publish shipped behavior, no code change.
- No new invariant, no KNOWN-HAZARDS entry.
- Deferred followups stay OUT: revival-currency grill (operator Q1 pending) +
  REQ-SELF-ID-TRUST-INJECTED-ENV (both `required_stages = []`, future sprints).

## Gate criteria (doyle)
- Both doc pages render on docs-site; `docs-publish` drift gate GREEN; no internal codes leak
  (xtask docs-token scan clean).
- `traceable-reqs check` exit-0 with `doc` tags (`[doc→…]`, arrow shown here as
  `→` so this criterion line is not itself scanned as evidence) pointing at
  REQ-DOC-ECHO-COMMUNE-CONTRACT + REQ-DOC-DELIVERY-VOCAB on the real doc sections.
- perri's CC wiring is tracked adapter-side (not a spt-core gate blocker) — confirmed landed
  before counter-49 adapter floor ping.

## After W6 → milestone close
Milestone LIFECYCLE-TRUTH complete on W6 gate PASS. Then:
1. **Release counter 49** (deployah drives — operator wake pending). Deploys W1–W5 code incl.
   the fire_echo drop-dir resolver that clears the OLD-live-daemon commune FAILED stamps
   (todlando's live psyche included).
2. **W1 field-accept swap window** (operator) — the deferred field-accept from seed #6.
