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

Sidekick Binds a Conversation

~11 min · sidekick, conversation, folder, identity

Level 0Dry Nib
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"Embed the conversation; do not duplicate the conversational self."

Separate need from ownership

A Sidekick inside Inkwell may discuss a passage, help shape keywords, or explain a review note. It is still a surface onto a cwkPippa conversation, not a miniature assistant with separate memory.

Shape the crossing

Persist the canonical conversation id and place it in the Inkwell folder owned by cwkPippa. The UI renders and sends through that binding. Product context may be attached explicitly; conversation history remains with its owner.

The duplication temptation

A local messages table quietly forks history. A generic chat without a bound conversation loses continuity. Reusing an id across unrelated entries can leak context, so the binding and scope need explicit rules.

Family invariant. Embed the conversation; do not duplicate the conversational self.

Let requests and references cross

Audit “Sidekick Binds a Conversation” beyond code imports. Trace which request reaches which owner, whether the result is a value or managed reference, and who explains failure and retry. Credentials, canonical history, or a voice catalog copied into Inkwell are a second system, not a convenient integration.

Write the boundary table

Specify when an entry reuses a conversation and when it must start a new bound conversation. Include timeout, stale output, sibling unavailability, and schema mismatch. Any blank where both sides assume the other will act is the owner of the next incident.

Owning less makes the product more itself

Inkwell's identity is not another brain or voice engine. It composes original-first flow, penless review, handwriting UX, and late-result landing into one experience. Boundaries are features that make that composition possible.

Code

Store a conversation binding, not chat history·json
{
  "surface": "inkwell-sidekick",
  "conversation_id": "canonical-conversation-id",
  "folder": "INKWELL",
  "scope": {
    "entry_id": "synthetic-entry"
  },
  "local_message_store": false
}

External links

Exercise

Specify when an entry reuses a conversation and when it must start a new bound conversation.
Hint
Put owner, request, result, and retry on one row.

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.