A detailed soul file carries character identity, boundaries, and private continuity rules. Serving it from a public asset path would let any visitor download it, index it, or use it to probe hidden instructions.
The safer shape is to keep the source in a private deployment area and let the server-side chat function combine it with the request. Public code only needs companion identifiers and permitted presentation data.
What was actually going wrong
Loading identity JSON directly from browser JavaScript would make secrecy depend on an interface button.
What I tried
- Hiding the soul URL in minified front-end code
- Removing navigation links while leaving the file public
- Sending the full soul to the browser after login
Private soul files are read on the trusted side, while creator-only editing surfaces fail closed when authorization is absent.
Why it worked
Access control is enforced where the file lives, not where a user happens to click.
If the browser can fetch a secret, the browser user can eventually read it.
Where EACI uses this today
Main companions use server-loaded identity instructions without publishing the source files.
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.