Blog
-
Migrating the shape of the state
A definition can be rewritten because it was authored. Accumulated state cannot — it is the only copy, so changing its shape is a migration.
-
The turn where the state did not arrive
One reply in a thousand is amnesiac because a piece of state was missing at assembly. Partial state fails silently and looks like a successful turn.
-
Two open sessions, one record
When two conversations write the same relationship state, a blob-shaped record loses one of them. Per-fact writes narrow the conflict but do not remove it.
-
Which definition produced a reply
A transcript records the output and none of the inputs. Without a per-turn state fingerprint, every drift report is unattributable and irreproducible.
-
The first turn has no history
At turn one the definition is the entire input, so the character is at maximum expression. The demo is the ceiling, and cold start has its own failures.
-
What a model change does to a character
The definition is not a specification, it is text interpreted by one model. Change the model and the same words produce a different character, unevenly.
-
Detecting drift without reading transcripts
Production has no ground truth, so drift must be measured against each conversation's own early behaviour rather than against a corpus or a golden sample.
-
The cost of a turn
Costs scale with usage and with history length, so your heaviest users get more expensive the longer they stay. That shapes every state decision you make.
-
Why characters drift
A fixed definition against growing history, and the history includes the model's own output. Drift is a proportion problem that reinforces itself.
-
Summarisation and what it loses
Compression is not neutral. It destroys specifics first and decays generationally, so the oldest history degrades fastest — what a relationship rests on.
-
What the model remembers between turns
Nothing. Continuity is entirely something you build, and the four ways of building it fail in four different directions.
-
A persona is state, not a personality
Four categories of state get stored as one blob, and that is why a character cannot be versioned, corrected, or debugged when it goes wrong.
-
Testing a character before it ships
A change that passes a fresh-session check fails in production: consistency is a distribution over samples at depth, not a property you can spot-check.
-
When staying in character makes the product worse
A persona will answer questions it has no information about, in register and with confidence. Some categories have to leave the character entirely.
-
A refusal does not sound like the character
Moderation sits outside the persona, so its output arrives in a different register — and then enters the history as an example of how the character speaks.
-
The small facts are the ones users check
A wrong name discredits an otherwise perfect memory. Continuity is judged on a handful of details, so state budget should follow salience, not volume.
-
One definition, many relationships
One authored character becomes as many characters as you have long conversations, and per-user customisation turns that divergence into forks you maintain.
-
The character has no clock
Elapsed time is not in the state unless you put it there. Turns are a sequence, so three weeks of absence and three seconds look identical in the input.
-
Deleting history the summary already absorbed
Removing turns does not remove what was derived from them. A deleted message survives in the summary, the fact store and every response written under it.
-
How often to rebuild the summary
Rebuild cadence decides how much a summary degrades. Frequent rebuilds compound generational loss; rare ones leave a stale summary against fresh history.
-
A wrong fact outlives a missing one
Extraction failures are not symmetrical. A missed fact is a gap the user can fill; a wrong one is included every turn and reinforces itself.
-
When the user contradicts the record
Stored facts go stale and users change their minds. Overwriting loses the history; keeping both puts two true-looking answers in the same input.
-
Constraints erode before the voice does
The voice survives a long conversation better than the rules do. Constraints are the part of a definition that decays first, and the failure is invisible.
-
Changing a character under a live conversation
A definition edit is a migration. Existing conversations get the new text with the old history, so the seam lands mid-relationship.
-
The definition grows one bug at a time
A character definition that started as a paragraph is now two pages, every line justified by a real complaint, and each line binds less than before.