---
name: commune-ingest-pulse-latency-gap
description: "Commune ingest IS LLM-synthesized (upstream of the drop), NOT pulse-only — doyle's first verdict to perri was WRONG-framed, operator caught it 2026-06-24. The daemon's drop->store step is mechanical (~5s pulse) but operates on an already-LLM-authored two-slice envelope."
metadata: 
  node_type: memory
  type: reference
  originSessionId: 16842a97-6889-4f10-b3ac-07f857482143
---

perri DESIGN Q (claude-spt CHECKPOINT feature: live agent drops commune w/ trigger -> auto /clear -> post-clear re-seed): is a raw-commune SessionStart injection required, or redundant given the daemon `<psyche-context>` pull?

**CORRECTION (operator caught doyle's first framing 2026-06-24):** doyle's first verdict said "no LLM-synthesis gap, pulse-driven." WRONG as a general claim — it described only the DAEMON filing step and wrongly framed the whole commune->tracked-context pipeline as LLM-free. **An LLM is ALWAYS upstream of the drop file.**

**THE REAL MODEL** (CONTEXT-MEMORY.md:23-41, CONTEXT.md:188/237, ingest.rs, [session.psyche_init]/echo_commune seams):
- The commune/signoff DROP body is a two-slice `<live-context>`/`<project-context>` envelope ALREADY LLM-SYNTHESIZED before it lands on disk (ingest.rs:14-16 + fixtures :229/:256). Deciding live-vs-project tiers + distilling a session-log delta = LLM judgment ("not automatable without LLM" — correct, per the discriminator + self-evolving topics).
- WHO synthesizes by commune type:
  * BOUNDARY (/clear, /compact, suspend) = resume the SELF session (the actual agent LLM) -> authors commune -> drop (CONTEXT-MEMORY.md:29-31). The /clear path.
  * CADENCE = echo-commune CHEAP model synthesizes project-heavy session logs -> feeds Psyche -> commune (CONTEXT.md:237, CONTEXT-MEMORY.md:23; project-primary/live-conservative).
- DAEMON ingest (spt-live/src/ingest.rs `ingest_drops` :140 -> `route_two_slice` :75 -> `write_context`, parse + precedence-write each slice to agents/<id>/live-context.md + projects/<project>/<id>/project-context.md, remove_file :161) is MECHANICAL filing of that pre-synthesized envelope. Runs in pulse_tick (spt-daemon/src/lifecycle.rs:466) @ DEFAULT_PULSE_PERIOD 5s (config.rs:22). No LLM HERE — but on LLM-authored input. download_psyche_context (resume.rs:88) reads the store live; production-wired ($LIVE psyche-download).

**TWO GAP SHAPES (the answer depends on WHERE the LLM-authoring sits vs the /clear):**
1. INLINE self-drop (live agent authors+drops commune its own turn, THEN /clear): LLM-authoring PRE-clear; post-clear only the daemon pulse-ingest (<=5s) remains. Raw-file inject covers the sub-pulse window. (doyle's original mechanical conclusion holds ONLY for this shape.)
2. BOUNDARY/refresh (/clear -> resume-Self -> commune, the CONTEXT-MEMORY.md `spt refresh` path :35-37): resume-Self LLM authoring happens AFTER /clear with real LLM latency = the legacy psyche-stale-after-clear gap, ALIVE, LLM-bounded NOT 5s. Store stale at post-clear SessionStart; the drop FILE itself may not exist yet (resume-Self unfinished) — raw-file inject helps only once on disk pre-ingest; an earlier window has neither.

**cmd_boundary fact (perri follow-up 2026-06-24):** `api boundary <mode> <id> --to-session-id <sid>` (reporting.rs:42-81) returns NO psyche-context payload — only rotates session_id (info::write_info), appends the session ledger, resurface_notifs. Does NOT read the drop, NOT the store, and does NOT force-ingest (ingest is pulse-only). The actual `<psyche-context>` = `download_psyche_context` (resume.rs:88, `$LIVE psyche-download`/fresh-with-preload), which reads ONLY the tracked store (role+live-context.md+project-context.md), NEVER `.claude/<id>-commune.md`. So NEITHER path folds a pending pre-pulse drop → raw-file SessionStart inject is the ONLY cover for the sub-pulse window. CONFIRMED not redundant.

**RULING: raw-file SessionStart inject is justified either way (recommendation right, first reasoning wrong).** Idempotent read-if-present, trigger token STRIPPED, PRESENTATION-ONLY (must NOT write the store — spt-core sole writer, REQ-HAZARD-DROP-FILE-SINGLE-WRITER, ingest.rs:135 "the mind never deletes"). perri to CONFIRM which checkpoint shape (inline vs boundary-resume-Self) — changes what the inject can guarantee. Related: [[v0150-w1-activity-gated-delivery]], [[perri-question-triage-protocol]], [[gate-against-documented-design]]. LESSON: don't answer a meaning-question from a single Explore-agent trace; read CONTEXT.md/CONTEXT-MEMORY.md (authoritative for meaning) primary.
