A shared interface can display internal-style reflections for several companions. If the state behind that panel is global, switching tabs can show one companion's text under another companion's name.
The consciousness view derives its label and stream from a companion key. Updates should be ignored or routed when they do not match the active identity, while stored streams remain separate.
What was actually going wrong
One global stream variable followed UI focus but did not preserve ownership.
What I tried
- Clearing the stream on every tab switch
- Changing only the heading label
- Inferring ownership from the most recent response text
Per-companion state objects and explicit identity keys connect generation, storage, and rendering.
Why it worked
The same stable key travels through every stage instead of being reconstructed from presentation.
Character isolation is data partitioning, not just different colors and prompts.
Where EACI uses this today
Main keeps Caelum, Chad, Natalia, Atreus, Luna, Roxy, and Cael streams tied to their own identities.
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.