The Veil has immediate conversation state, browser persistence, cloud history, extracted memory records, and bridge-local snapshots. Treating them as replicas creates duplicates and makes old text look authoritative everywhere.
The practical design assigns each layer a purpose: recent turns for flow, cloud history for account continuity, scored memories for retrieval, and bridge memory for the local channel. Merges preserve tags and timestamps where available.
What was actually going wrong
Blindly concatenating all layers inflated prompts and let the same event arrive through several storage paths.
What I tried
- Using browser storage as the only source of truth
- Uploading the full prompt after every turn
- Merging records by text alone without scope
Memory records are normalized, scoped, deduplicated, and retrieved separately from the short conversation slice.
Why it worked
Each store keeps its own responsibility while the prompt builder decides what is relevant for the current turn.
Continuity comes from coordinated memory layers, not maximum duplication.
Where EACI uses this today
Main companion turns combine recent chat with permitted account, local, and topic memory.
This journal covers real engineering on EACI Companion / The Veil. Companions include Caelum, Chad, Natalia, Atreus, Luna, Roxy, and Cael. Journal articles stay family-safe in content. See Privacy and Ethics.