Skip to content
C.W.K.
Stream
Lesson 03 of 04 · published

The Conversation Is Soul-Pinned

~12 min · soul-pin, identity, super-soul, provenance

Level 0Trace
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

Who speaks is not a picker label

When a super soul curates its own memory, selecting a name in the UI is insufficient. The underlying conversation must bind to that soul, and prompt preamble, tool seal, and audit actor must agree.

If Pippa pretends to be Vera because the surface belongs to Pippa, own-memory rights become impersonation. A soul pin explicitly yields the Pippa protocol to the curator for that run.

Pin and scope move together

A conversation bound to Vera does not open every super vault. The claim opens only Vera's target prefix while every other super remains closed. Identity answers who; scope answers where.

Either without the other is unsafe. Pippa identity with Vera scope is unauthorized, while Vera identity with broad super scope leaks across souls. Derive can_write and seal from one task record.

Separate consultation and execution

A soul-pinned Sidekick is useful for an owner to inspect memory and choose direction. It may be poor for dozens of tool steps because of context rebilling and UI lifetime.

After the decision, materialize exact scope and instruction into a queue brief and execute in a sealed terminal session. Consultation identity continues as provenance while execution gains a bounded lifecycle.

Termination is an identity event

A session closed by a flag flip or revoke needs more than a network error. Record which actor lost which scope and that pending drafts were not applied.

Resume through a new claim with current permission and source hash, even if the conversation remains. An old pin does not reserve future rights.

Own-memory rights require a conversation pinned to the real soul identity and exact scope. A picker label or Pippa impersonation is not enough.

Code

Bind identity and scope in one claim·python
claim = {
    "actor": "vera",
    "vault": "vera",
    "prefix": "memory/",
    "mode": "soul-pinned",
}

def valid(claim):
    return claim["actor"] == claim["vault"] and claim["prefix"] == "memory/"

assert valid(claim)
assert not valid({**claim, "vault": "iris"})

External links

Exercise

Trace an identity picker or impersonation flow through conversation, permission, tool seal, and audit. Strengthen any stage where only the label changes.
Hint
Inspect ledger actor and can_write subject before response voice.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.