Character change and performance
Track what changes outside and inside a character, preserve the cause across Moments, and translate abstract emotion into observable performance the camera can read.
Character state has four dimensions
Storyteller does not treat a character as one static portrait plus an emotion label. State is recorded along four separate axes:
| Axis | Examples of what belongs here |
|---|---|
| Physical | injury, fatigue, clothing state, carried object, posture, visible condition, location |
| Psychological | fear, resolve, suspicion, shame, trust, intention, emotional control |
| Knowledge | what the character knows, believes, doubts, has discovered, or must not know yet |
| Relationships | trust, distance, obligation, hostility, alliance, status, and effective relationship facts |
Each genuine change is written as a State Delta with Before and After, then attached to the Moment whose event or choice caused it. That causal middle matters: “afraid → resolved” is not continuity unless the story records why control returned.
Change belongs to a Moment
A State Delta is not a free-floating character note. It stores the before/after change and belongs to the causal Moment; that Moment’s episode and scene placement supplies effective story time. Materialized character snapshots separately record their effective point and source Moment.
The directing flow checks that:
- the participating character and relationship exist in the current Canon;
- a future discovery or ended relationship is not used too early;
- the After state of the previous Moment can hand off to the Before state of the next;
- a Moment does not invent a delta merely to look dramatic;
- risky changes remain Review until the creator accepts them.
The UI provides Accept delta and Approve all changes rather than assuming every agent-proposed state change is ready. These actions are Draft-level review; the aggregate story becomes production Canon only through Approve Canon. Accepted deltas are authored evidence, but the current system does not claim that every later state snapshot is automatically materialized or that arbitrary branches and flashbacks are fully solved.
From inner state to filmable action
Generated video often feels rigid when a prompt asks for an emotion but does not specify a performance. Storyteller’s Assistant Director turns the approved story state into an actor-facing structure:
- objective — what the performer wants now;
- obstacle and stakes — what makes the action difficult and costly;
- subtext and status — what is withheld and how power moves;
- body, business, eye life, and voice — what can actually be observed;
- timed beats — tactic, action, and the visible change at the landing of each beat.
When possible, a performance beat is tied to the stable ID of the Shot that must show it. This prevents one global performance paragraph from being repeated across unrelated framings.
The shared Acting Craft interface
9Miho’s directing agents do not rely on a thin generic skill that says “be cinematic.” They use a versioned, content-addressed Acting Craft interface and medium-specific corpus.
The shared contract organizes a readable performance over time:
- Baseline — the state the audience can read at the opening.
- Trigger — what the performer sees, hears, remembers, or realizes.
- Appraisal leak — the first involuntary evidence before control returns.
- Control or action — the chosen tactic, suppression, speech, or physical action.
- Landing — the observable face, breath, posture, gaze, distance, or hand state that carries into the next beat.
Storyteller receives this shared contract, a Storyteller-specific adapter, and the relevant authoring disciplines. Canvas’s Write a direction task can load the full video or still craft corpus into its own agent turn. Both surfaces share the acting standard without pretending they have the same authoring context.
How FACS is used
FACS is an internal observation and planning lens, not an emotion diagnosis and not a request to show raw Action Unit codes to a generation model.
Typed facial action can be authored and audited in the production record. At the shared render seam, it becomes natural, observable movement of the brow, eyelids, cheeks, jaw, mouth, gaze, and timing. Raw AU evidence is removed from the rendered copy before any provider Dialect or generative model sees it.
This keeps the direction precise while avoiding brittle instructions such as “AU12 + AU6.” The model receives the acting result—what the face and body should visibly do—not the internal notation used to reason about it.
Expression-neutral identity references
A character reference should lock identity without accidentally locking the wrong emotion. Storyteller therefore prefers a pinned approved output with a known reference_expression, ranked toward character sheet or neutral material before an unknown or strongly expressive image.
This policy does not run a hidden facial classifier. It evaluates recorded production metadata, warns about reference risk, and allows the creator to override the actual execution references.
Direction owns the intended expression. The reference owns identity, physical anchors, and continuity. Keeping those responsibilities separate reduces accidental smiles, copied stiffness, and emotion inherited from the wrong source image.
Performance checks before generation
The directing diagnostics look for problems that commonly waste a paid video run:
- missing performer ownership or blocking;
- abstract emotion with no observable action;
- impossible gaze or off-screen identity leakage;
- too many actions for a very short Shot;
- Shot durations that do not add up to the Moment;
- dialogue without an exact speaker, line, and timing;
- a jump between adjacent Moment states;
- an unapproved or unpinned character reference.
An error locks generation and explains what must change. A warning keeps generation available but asks for a director’s judgment. The creator can edit the Moment directly or ask the Assistant Director to improve that same stable Moment without rewriting its neighbors or approved WHAT/WHY.