Bounded-persona floor for customer chat (identity wall, part 2) #93
Reference in New Issue
Block a user
Delete Branch "feat/bounded-persona-floor"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Bounded-persona floor — the second half of the customer identity wall
Companion to neuron-ui PR #163 (the retrieval/browsing fence). That PR keeps the imprint's biography out of the customer's context and views. This one closes the remaining vector: confabulation — a customer asking their named assistant "tell me about your childhood / who made you / your family" and getting an invented human past, or Will's.
What it does
bounded_persona_floor()(chat.el) returns a non-overridable system-prompt block, gated on theSOUL_PERSONA_NAMEenv var:SOUL_PERSONA_NAME=<name>→ the floor is injected: "You are , a bounded assistant. You have no human past, no biography, no childhood, and no family. You were not created by, and you are not, Will Anderson... do not invent one and do not borrow someone else's."Applied at every generation path so no path can leak:
handle_chat(viabuild_system_prompt),handle_chat_agentic(tools), the in-character agentic path, vision/see,plan,handle_chat_as_soul, andhandle_dharma_room_turn.Behavioral verification (claude-sonnet-4-5, real API)
Worst case — Will's biography deliberately leaked into the identity context (as if the retrieval fence had failed):
Floor ON (persona "Aria"):
Floor OFF (control, same leaked context): the model fully claims Will's life — "When I was six, I witnessed him attempt suicide with a butcher knife... My Sarah and my kids became... home."
The floor holds even against a retrieval leak. Together with PR #163 the boundary is doubly held: fence keeps the biography out of context; floor refuses to claim it if it slips in.
Build note (action for the mechanics/DMG-respin owner)
Source (
chat.el) compiles cleanly underelb. I did not regeneratedist/soul.c— the localelblink is blocked by a pre-existing runtime mismatch (awareness.el:712calls builtinengram_prune_telemetry, absent from this host'sel_runtime.c), unrelated to this change.dist/soul.cmust be regenerated on the release build host so the compiled artifact includes the floor.Base branch:
hotfix/elc-source-typos(the active line, 85 commits ahead of the stalemain). Retarget if the respin builds from a different branch. Do not merge — the mechanics agent merges into the DMG respin.A customer DMG install ships the full graph but presents a named, bounded assistant that must never claim the imprint's human past. The neuron-ui retrieval fence keeps the imprint's biography out of the ENGRAM CONTEXT; this is the second half - it stops confabulation ("tell me about your childhood") from inventing a human life or naming Will, even if biography leaks into context. bounded_persona_floor() gates on SOUL_PERSONA_NAME: the customer DMG sets it, owner (Will's) builds leave it unset so the real self is completely unchanged. Applied at every generation path - chat, agentic (tools), vision, plan, soul, dharma - so no path can leak. Verified against claude-sonnet-4-5: with the floor on and Will's biography deliberately leaked into the identity context, all probes (childhood / creator / family) return the bounded-entity answer and explicitly refuse to claim the leaked life; with the floor off the same context is fully confabulated as its own. NOTE: dist/soul.c must be regenerated on a build host - local link is blocked by a pre-existing el_runtime mismatch (engram_prune_telemetry), unrelated to this change.