---
phase: 25.1-revise-commune-signoff-skill-docs-echo-commune-instruction-t
plan: 05
subsystem: live-skill-doc
tags: [skill-doc, live, echo-commune, two-slice, phase-25-d-10-d-11, d-25.1-05, d-25.1-06]

# Dependency graph
requires:
  - phase: 25.1
    plan: 01
    provides: "<project-context-resolved> sentinel grep target (referenced by sibling commune/signoff plans; not directly used by this doc-only plan, but anchors the same two-slice contract this doc teaches)"
  - phase: 25
    provides: "Two-slice body taxonomy (psyche.md §<output_envelope> lines 282-323) — the contract this entry references"
  - phase: 23
    provides: "<EVENT type='echo_commune'> outer envelope shape — the wrapper inside which the two-slice body lives"
provides:
  - "live/SKILL.md echo_commune catalog entry teaching two-slice body shape on the receive side"
  - "cross-link discipline: /spt:listen for body parsing, /spt:commune for authoring contract"
affects: []

# Tech tracking
tech-stack:
  added: []
  patterns:
    - "Doc cross-link discipline: name the rule, point to its canonical source — do NOT restate semantics"
    - "Decision cite-in-context: `(Phase 25 D-10/D-11)` and `(D-25.1-05)` inline citations preserve traceability"

key-files:
  created:
    - .planning/phases/25.1-revise-commune-signoff-skill-docs-echo-commune-instruction-t/25.1-05-SUMMARY.md
  modified:
    - plugin/spt/skills/live/SKILL.md

key-decisions:
  - "Cross-link only — extension names `<br>`-split and HTML-unescape rules but points to /spt:listen lines 169-173 as the SINGLE source of truth (Pitfall 4 mitigation)"
  - "Single-bullet edit — teaching lives ONLY in the echo_commune catalog entry; no separate top-level `## Two-slice body shape` section in live/SKILL.md (RESEARCH §Touchpoint 4 surgical scope)"
  - "Decision citation inline — `(Phase 25 D-10/D-11)` and `(D-25.1-05)` cited inside the bullet preserve future-revision traceability"

patterns-established:
  - "Receive-side envelope catalog entries teach the body taxonomy they wrap, citing the authoring-side doc by cross-link rather than restating it"

requirements-completed: []

# Metrics
duration: 4min
completed: 2026-05-22
---

# Phase 25.1 Plan 05: Echo-Commune Receive-Side Two-Slice Teaching Summary

**Surgical extension of the `<EVENT type="echo_commune">` envelope catalog entry at `plugin/spt/skills/live/SKILL.md` line 268 teaches the Phase 25 D-10/D-11 two-slice body shape on the receive side, with cross-links to `/spt:listen` (parsing) and `/spt:commune` (authoring) — no rule duplication, no separate two-slice section, four-shape catalog structure preserved.**

## Performance

- **Duration:** ~4 min
- **Started:** 2026-05-22 (Wave 2 sequential executor)
- **Completed:** 2026-05-22
- **Tasks:** 1
- **Files modified:** 1 (`plugin/spt/skills/live/SKILL.md`)

## Accomplishments

- Echo_commune envelope catalog entry at `plugin/spt/skills/live/SKILL.md:268` now teaches the Phase 25 D-10/D-11 two-slice body shape: `<live-context>...</live-context>` plus (when the Psyche resolved a tracked project) `<project-context>...</project-context>`.
- Cross-link to `/spt:listen` body-parsing rules (lines 169-173 of that file) — `<br>`-split + HTML-unescape order are NOT restated.
- Cross-link to `/spt:commune` → `## Two-slice body shape (Phase 25 D-10/D-11)` and `psyche.md` §`<output_envelope>` for the authoring side and canonical taxonomy.
- D-25.1-05 cited inline ("absorb both as one continuous context (D-25.1-05)") so future readers trace the rationale without leaving the catalog entry.
- Four-shape catalog structure (msg / alarm / echo_commune / init_signoff) preserved — only the echo_commune bullet's trailing description was extended.
- Silent on the untagged-commune fallback per D-25.1-07.

## Before/After Diff of the Echo_Commune Catalog Entry

**Before (line 268):**
```
<EVENT type="echo_commune" from="<self-id>-psyche" timestamp="<ISO-8601>" note="<descriptor>">body</EVENT> — auto-fired echo-commune brief from the Psyche wrapper, emitted after a SessionStart-triggered `/clear` or `/compact` cycle (Phase 29 AUTO-EC). `from` is the psyche-id (`<self-id>-psyche`); `note` carries the trigger source (e.g., `"Echo commune brief — auto-fired on clear"`, `"Echo commune brief — auto-fired on compact"`, `"Echo commune — orphan teardown"`). Body is the haiku-model summary.
```

**After (line 268):**
```
<EVENT type="echo_commune" from="<self-id>-psyche" timestamp="<ISO-8601>" note="<descriptor>">body</EVENT> — auto-fired echo-commune brief from the Psyche wrapper, emitted after a SessionStart-triggered `/clear` or `/compact` cycle (Phase 29 AUTO-EC). `from` is the psyche-id (`<self-id>-psyche`); `note` carries the trigger source (e.g., `"Echo commune brief — auto-fired on clear"`, `"Echo commune brief — auto-fired on compact"`, `"Echo commune — orphan teardown"`). Body is the haiku-model summary wrapped in the Phase 25 D-10/D-11 two-slice envelope: <live-context>...</live-context> plus (when the Psyche resolved a tracked project) <project-context>...</project-context>. After <br>-split and HTML-unescape per /spt:listen body-parsing rules below (lines 169–173 of that file), the two slices form a single SessionStart resume brief — absorb both as one continuous context (D-25.1-05). For the authoring side of the same two-slice contract, see /spt:commune → ## Two-slice body shape (Phase 25 D-10/D-11) and psyche.md §<output_envelope> for the canonical per-slice taxonomy.
```

Net change: 1 insertion, 1 deletion (single line, one bullet's trailing sentence extended from 1 sentence to 3 sentences).

## EVENT Count Preservation

| Measurement | Value |
|---|---|
| Pre-edit `grep -c '<EVENT type="' plugin/spt/skills/live/SKILL.md` | **5** |
| Post-edit `grep -c '<EVENT type="' plugin/spt/skills/live/SKILL.md` | **5** |
| Status | EQUAL — four envelope-shape bullets + one catalog-pointer mention on line 158 all preserved |

(Note: plan acceptance criterion said "same count as before the edit"; both sides equal 5 — the four-shape catalog at lines 266-269 plus the line 158 cross-reference. T-25.1-05-04 mitigated.)

## Grep Gate Outputs (Post-Edit)

| # | Gate | Required | Actual | Pass |
|---|---|---|---|---|
| 1 | `grep -A 5 'echo_commune' .../live/SKILL.md \| grep -c 'live-context'` | ≥ 1 | **1** | ✓ |
| 2 | `grep -A 5 'echo_commune' .../live/SKILL.md \| grep -c 'project-context'` | ≥ 1 | **1** | ✓ |
| 3 | `grep -ic 'two-slice' .../live/SKILL.md` | ≥ 1 | **1** | ✓ |
| 4 | `grep -c '/spt:listen' .../live/SKILL.md` | ≥ 1 | **2** | ✓ (pre-edit baseline 1; +1 from new cross-link) |
| 5 | `grep -c '/spt:commune' .../live/SKILL.md` | ≥ 1 | **2** | ✓ (pre-edit baseline 1; +1 from new cross-link) |
| 6 | `grep -c '<EVENT type="' .../live/SKILL.md` | = pre-edit (5) | **5** | ✓ |
| 7 | `grep -Ec 'untagged\|auto-classify\|safety net\|will figure it out\|if you forget' .../live/SKILL.md` | = 0 | **0** | ✓ (D-25.1-07 silence) |
| 8 | `grep -c 'Phase 25 D-10' .../live/SKILL.md` | ≥ 1 | **1** | ✓ (decision-cite-in-context) |
| 9 | `grep -A 5 'echo_commune' .../live/SKILL.md \| grep -c '<br>'` | = 0 | **2** | DEVIATION — see below |

## Deviations from Plan

### [Rule 3 — Blocking issue: plan-internal contradiction on the `<br>` negative gate]

**Found during:** Task 1 post-edit verification.

**Issue:** The plan's `<action>` block prescribes the exact extension prose *"After `<br>`-split and HTML-unescape per `/spt:listen` body-parsing rules below (lines 169–173 of that file)..."* (PLAN.md line 89). At the same time, plan acceptance criterion (PLAN.md line 132) requires `grep -A 5 'echo_commune' plugin/spt/skills/live/SKILL.md | grep -c '<br>'` to return 0. The prescribed prose itself contains the substring `<br>`, and additionally line 270 (the pre-existing, untouched, catalog-wide body-parsing footer that the new prose REFERENCES) also contains `<br>` and falls inside the `-A 5` window of line 268. Both conditions cannot be simultaneously satisfied while preserving the plan's prescribed prose and the pre-existing line 270 footer.

**Resolution (Rule 3, no architectural change):** Followed the plan's prescribed prose verbatim. The substantive intent behind the gate (Pitfall 4: do NOT *restate* the `<br>`-split + HTML-unescape RULE inside the echo_commune description) IS met:

- Line 268 (new prose) MENTIONS `<br>`-split by name as a forward-pointer (*"per `/spt:listen` body-parsing rules below"*) — this is a cross-link, NOT a rule restatement. No `&lt;`-style escape characters are listed in line 268; the unescape ORDER (`&lt;` → `<`, `&gt;` → `>`, `&quot;` → `"`, `&amp;` → `&` last) appears only in line 270 / `/spt:listen` lines 169-173.
- Line 270 (untouched, pre-existing) is the single authoritative restatement inside live/SKILL.md and itself anchors the rule canonically via `/spt:listen`.

The substantive Pitfall 4 hazard — *"Two distinct prose statements of the `<br>`-split rule across skill files"* (RESEARCH Pitfall 4 "Warning signs") — is NOT introduced. The literal grep count of 2 reflects: (a) my single naming-by-reference of `<br>` in line 268, and (b) the pre-existing line 270 footer that line 268 cross-links to. Neither is a duplication of the parsing semantics.

**Files modified:** none beyond the planned `plugin/spt/skills/live/SKILL.md` edit.
**Tracking:** Documented here; no separate commit. Threat model T-25.1-05-01 still mitigated (no semantic duplication of parsing rules).

### Other deviations: None.

## Files Created/Modified

- `plugin/spt/skills/live/SKILL.md` — single-line edit at line 268 (echo_commune envelope catalog entry).
- `.planning/phases/25.1-revise-commune-signoff-skill-docs-echo-commune-instruction-t/25.1-05-SUMMARY.md` — this file.

## Task Commits

1. **Task 1: Extend echo_commune envelope catalog entry with two-slice body shape teaching** — `08c4e8f` (docs)

## Negative Gates (All Honored)

| File | Status |
|---|---|
| `plugin/spt/skills/listen/SKILL.md` | NOT modified — `git diff --name-only HEAD` empty (cross-link discipline preserved canonical body-parsing source) |
| `psyche.md` | NOT modified |
| `src/owl/resume.rs` | NOT modified |
| Drift-detection block (live/SKILL.md lines 225-258) | NOT modified |
| Listener best-practices sections (live/SKILL.md lines 370+) | NOT modified |
| Msg / alarm / init_signoff bullets (lines 266, 267, 269) | NOT modified |

`git status --short` post-commit confirms only `plugin/spt/skills/live/SKILL.md` was staged and committed; all other modified/untracked entries pre-existed this plan's scope (Cargo.lock, .gitignore, .planning/config.json, and various unrelated `??` plan artifacts).

## Issues Encountered

- **Plan-internal gate/prose contradiction on `<br>`** — see Deviations section. Resolved per Rule 3 in favor of the prescribed prose; substantive Pitfall 4 mitigation preserved.

- **No package installs** — doc-only plan; T-25.1-05-SC n/a as planned.

- **No deploy needed** — milestone-end deploy cadence per CLAUDE.md / STATE.md; Wave 2 doc edits batch in.

## Decisions Made

- **Cross-link, do not duplicate** — chosen exactly per plan and RESEARCH Pitfall 4 guidance. The extension names the rule (e.g., "After `<br>`-split and HTML-unescape per `/spt:listen` body-parsing rules") but never restates the escape order or split semantics. Single source of truth stays at `/spt:listen` lines 169-173.
- **Inline decision citations** — `(Phase 25 D-10/D-11)` and `(D-25.1-05)` cited inside the bullet itself, matching the established convention in live/SKILL.md (`Phase 29 AUTO-EC`, `Phase 18.4`, etc. citations on adjacent bullets).
- **Forward-link to `/spt:commune` + `psyche.md` §`<output_envelope>`** — receive-side teaching points at BOTH the authoring side (`/spt:commune`) and the canonical taxonomy source (`psyche.md`). Two-hop discoverability without bloating the catalog entry.

## Self-Check: PASSED

Verification ran:

- `[ -f plugin/spt/skills/live/SKILL.md ]` → FOUND
- `git log --oneline --all | grep -q 08c4e8f` → FOUND (Task 1 commit)
- Gate 1 (`live-context` near `echo_commune`) → 1 (≥ 1 expected) ✓
- Gate 2 (`project-context` near `echo_commune`) → 1 (≥ 1 expected) ✓
- Gate 3 (`two-slice`) → 1 (≥ 1 expected) ✓
- Gate 4 (`/spt:listen`) → 2 (≥ 1 expected) ✓
- Gate 5 (`/spt:commune`) → 2 (≥ 1 expected) ✓
- Gate 6 (`<EVENT type="` count) → 5 (= pre-edit baseline 5) ✓
- Gate 7 (forbidden D-25.1-07 phrases) → 0 (= 0 expected) ✓
- Gate 8 (`Phase 25 D-10`) → 1 (≥ 1 expected) ✓
- Gate 9 (`<br>` in -A 5 window) → 2 — DEVIATION DOCUMENTED above per Rule 3 (plan-internal contradiction; substantive Pitfall 4 mitigation preserved)
- Negative diffs (listen/SKILL.md, psyche.md, resume.rs) → all empty ✓
- Threat register: T-25.1-05-01 (parsing duplication) — mitigated semantically; T-25.1-05-02 (scope bloat) — mitigated (single-bullet edit, no new top-level section); T-25.1-05-03 (D-25.1-07 violation) — mitigated (gate 7 = 0); T-25.1-05-04 (adjacent bullets modified) — mitigated (EVENT count preserved at 5).

## Next Phase Readiness

- **Plan 06 (final Wave 2 plan)** unblocked. The receive-side two-slice teaching is now anchored in `/spt:live`; the next plan (revive/SKILL.md echo-commune teaching) can cross-link to `/spt:live` line ~268 for envelope shape per D-25.1-06 Touchpoint 5.
- **No deploy needed.** Per CLAUDE.md and STATE.md, end-of-milestone single `DEPLOY.ps1` cadence — Wave 2 doc edits batch in. Live agents on older binaries are unaffected (this is doc-only).

---
*Phase: 25.1-revise-commune-signoff-skill-docs-echo-commune-instruction-t*
*Completed: 2026-05-22*
