enrichmentlisted
Install: claude install-skill stevehansen/eidet
# Enrichment — priming
**Canonical spec:** `docs/domains/enrichment.md` — read it for the full field policy, all invariants,
key files, and gotchas. Terms of record: `UBIQUITOUS_LANGUAGE.md` § Write path (Enrichment).
Config: `docs/configuration.md`.
The only place a model touches a memory, and it is entirely optional: ports-and-adapters over one or
more backends (Ollama-native or any OpenAI-compatible server, local or a bearer-authenticated network
cluster), tried as an ordered chain. The store path stays zero-LLM — every call site must be correct
when every backend is absent.
## Core invariants (get these right)
- **Prompts, transport, health caching, and CoT quirks stay behind the port.** Callers pass an
`EnrichmentPrompt` kind; anything structured is rendered into `Primary`/`Aux` at the facade.
- **Nothing fails because enrichment is unavailable** — short-circuit to `false`/`null`/`[]`; adapters
swallow transport errors.
- **Never enrich a redaction tombstone** — the model would paraphrase scrubbed content back into
`Summary`, and therefore into `SearchText`.
- **`Summary == null` is the work queue** (subscription + unenriched stats key on it). That's why
redaction writes `""`.
- **The one-liner is re-generated only while it still equals the deterministic heuristic** — that's the
"never enriched" test for a field that is never null.
- **Enrichment writes go through `MemoryService`** — these fields feed `SearchText` and scoring, so a
direct store write leav