# Phase 25.1: Revise /commune + /signoff Skill Docs + Echo-Commune Instruction - Discussion Log

> **Audit trail only.** Do not use as input to planning, research, or execution agents.
> Decisions are captured in CONTEXT.md — this log preserves the alternatives considered.

**Date:** 2026-05-21
**Phase:** 25.1-revise-commune-signoff-skill-docs-echo-commune-instruction-t
**Areas discussed:** Self envelope requirement, Empty/missing-slice rules, Echo-commune interpretation, Untagged commune fallback

---

## Self envelope requirement

| Option | Description | Selected |
|--------|-------------|----------|
| Required two-slice | Self MUST wrap body in `<live-context>`/`<project-context>` envelopes. Symmetric with Psyche output contract. Self pre-classifies, Psyche routes verbatim. | ✓ |
| Optional two-slice | Self MAY use envelopes; if present, Psyche routes accordingly; if absent, Psyche classifies on absorb. | |
| Free-form only | Self writes one journal body. Psyche reads + emits two-slice on save. | |

**User's choice:** Required two-slice
**Notes:** Self pre-classifies. Locks D-25.1-01.

---

## Empty/missing-slice rules

### In-project + nothing project-specific

| Option | Description | Selected |
|--------|-------------|----------|
| Empty tag | `<project-context></project-context>` with empty body. Deliberate signal: 'in-project but nothing new'. Mirrors psyche.md rule 3. | ✓ |
| Omit tag entirely | Skip `<project-context>` even when in a project. Indistinguishable from 'no project resolved'. | |
| Always emit with placeholder | `<project-context>(no new project state)</project-context>` — explicit prose marker. | |

**User's choice:** Empty tag (D-25.1-02)

### Outside any tracked project

| Option | Description | Selected |
|--------|-------------|----------|
| Omit `<project-context>` entirely | Emit `<live-context>...</live-context>` only. Mirrors psyche.md rule 2. | ✓ |
| Empty `<project-context>` anyway | Always emit both tags; project body empty. Conflates 'no project' with 'in-project but quiet'. | |
| Wrap whole body in `<live-context>` reflexively | Same effect as option 1 but framed as agent rule. | |

**User's choice:** Omit `<project-context>` entirely (D-25.1-03)

### How agent knows in-project status

| Option | Description | Selected |
|--------|-------------|----------|
| Use psyche-download output | Skill flow already runs `$LIVE psyche-download`. If output contains a project section, Self is in-project. Reuses existing call. | ✓ |
| New `$LIVE pwd-project` query | Tiny status command. New surface, extra call. | |
| Trust cwd implicitly | Self writes envelopes based on whether it 'feels' in a project. Fragile. | |

**User's choice:** Use psyche-download output (D-25.1-04)

---

## Echo-commune interpretation

### Self listener intake of two-slice body

| Option | Description | Selected |
|--------|-------------|----------|
| Absorb both as one brief | Unescape body, treat live-context + project-context together as the SessionStart resume brief. | ✓ |
| Use project-context only when relevant | Prefer project-context when cwd matches; live-context as backdrop. More nuanced. | |
| Treat slices as separate facts | Self lists live-context as 'role state' and project-context as 'project state' — explicit dual-channel. | |

**User's choice:** Absorb both as one brief (D-25.1-05)

### Doc placement for echo-commune teaching

| Option | Description | Selected |
|--------|-------------|----------|
| Update listen + live SKILL.md both | Echo-commune envelope appears in both listen/SKILL.md and live/SKILL.md. | |
| Update listen/SKILL.md only | Single source in listener docs. | |
| New dedicated echo-commune.md | Pull echo-commune fully into its own doc. | |

**User's choice (free-text):** "echo communes don't affect non-live agents. so the `/live` skill doc and the SessionStart (post-/clear resume) hook are the places to educate about it."

**Follow-on (user-added):** also `/revive`.

**Notes:** Live-only surfaces: `/live` SKILL.md, `/revive` SKILL.md, SessionStart `<psyche-context>` hook output. `/listen` explicitly excluded. Locks D-25.1-06.

---

## Untagged commune fallback

### Runtime behavior

| Option | Description | Selected |
|--------|-------------|----------|
| Psyche auto-classifies on absorb | Psyche LLM judges per-line which slice each fact belongs to. | ✓ |
| Route whole untagged body to live slice | Hard rule: untagged = role/agent context. | |
| Reject + retain file with warning | Self listener checks for envelope tags; logs stderr 'untagged commune ignored'. | |

**User's choice:** Psyche auto-classifies on absorb

### Doc tone on fallback

| Option | Description | Selected |
|--------|-------------|----------|
| Mention briefly + lean on instruction | One-line note: 'If you omit envelope tags, Psyche will classify on absorb — quality varies. Prefer pre-tagging.' | |
| Silent — no fallback mentioned | Skill teaches two-slice as the only path. | ✓ |
| Detailed fallback section | Dedicated subsection explaining classification heuristics, edge cases. | |

**User's choice:** Silent (D-25.1-07)

**Notes:** Deliberate omission to keep tagging instruction loud and uncontested.

---

## Claude's Discretion

- Exact rewrite shape + number of worked examples in `commune.md` (recommend 3 covering in-project-both, in-project-empty-project, outside-project).
- Whether to add "what NOT to do" anti-example.
- Reordering of Phase 23 Envelope-shape section relative to new two-slice teaching.
- Prose for SessionStart `<psyche-context>` block header/footer.
- One-line link from touched docs back to Phase 25 D-10 (optional discoverability).
- Cross-link tightness: `/live` echo-commune section linking to `/listen` parsing rules vs self-contained.

## Deferred Ideas

- Memformat taxonomy split into role-vs-project topics (out of scope; future phase).
- Diligence-trigger updates for project-state shifts (skipped to keep 25.1 surgical).
- `/listen` echo-commune teaching (excluded — non-live listeners don't see it).
- Anti-example malformed commune (planner discretion).
- Stable `download_payload` output marker for in-project detection (verify Phase 25 shape; only add sentinel if missing).
- Untagged-commune telemetry counter (debug enhancement, separate).
