PersonaStory
Something that happened to this character, in its own telling. Not a claim about the world and never checked as one:
sourcesays where a proposal came from, for the operator reading it, and nothing downstream reads it as evidence — seepersona.story.tsfor why that is the load-bearing difference from a fact
Attributes (12)
| Attribute | Type | Required | Description |
|---|---|---|---|
id | string | Yes | read-only |
title | string | Yes | A short handle. Never spoken; what this list is read by and what a proposal names |
story | string | Yes | The telling itself, in the character's voice. Already speakable, because the floor reads it as it stands |
state | 'active' | 'suggested' | 'rejected' | Yes | active can be told. rejected outlives the pass that proposed it, or the same catalogue proposes it forever. read-only |
origin | 'operator' | 'model' | Yes | Who says so. model is the enrichment pass writing from what the station already holds. read-only |
source | string | No | Where a proposal came from, in the station's own words. Absent for anything an operator wrote. read-only |
kind | 'anecdote' | 'arc' | 'bit' | Yes | An anecdote is told whole, an arc a part at a time, a bit is a running joke with no end. read-only |
details | PersonaStoryDetail[] | Yes | What it has picked up since, in every state. read-only |
beats | PersonaStoryBeat[] | Yes | The parts an arc is told in, in order and in every state. Empty for the other two kinds. read-only |
lastToldAt | string | No | Absent means never told, which is what puts it at the front of the rotation. read-only |
timesTold | number | Yes | How often it has gone out, which changes how the model is asked to tell it. read-only |
createdAt | string | Yes | read-only |