Dialogue was already plain text, so the gap was never the .yarn files. It was
that the character material a writing session needs was either missing or stored
somewhere a writer could not comfortably work.
Three things were wrong. The writing handbook was not in the repo and was cited
by SC101.yarn as though it were. The best voice material — register, verbal tics,
success/failure/passive samples — was a \n-escaped string inside a JSON field.
The named NPCs had no sheets at all, existing only as their Yarn lines.
writing/ now holds the dialogue-facing layer, at the repo root so it gets no
.meta files and is not a Unity asset:
STYLE.md register, the five tone moves, the ban list, branching
shapes, the Wrong Truth rule, flag families, candidate rules
YARN-PRIMER.md the one page of syntax needed to write a scene
GLOSSARY.md in-world and project vocabulary
voices/ the eleven skill voices, one readable sheet each
characters/ Bartender, Chevalier Cassian Thal, Bradford Kane
scenes/ SC-101's brief: intent, beats, checks, constraints
lore/ the three identity readings and the rules that bind them
STYLE.md is a digest of the Mystery Writing Handbook in the Obsidian vault, with
pointers rather than copies. The vault stays the authoring home for design work,
and Ground Truth — the solution document — deliberately stays out of this repo.
The voice sheets are generated from skill_bible.json but are the source of truth
for the prose. tools/writing/sync_voices.py folds edits back; voicelib.py
guarantees notes -> dict -> notes is identity for all eleven, so --to-json on
unchanged sheets is byte-identical. VoiceSheetSyncTests fails the build on drift
in either direction, and was verified to fail on real drift rather than merely
to pass.
SC101.yarn's header is trimmed from prose rationale to the six rules that bind
while editing that file, with the reasoning moved to the scene brief.
EditMode 42/42. YarnCheck compiles 9 files / 35 nodes.
Co-Authored-By: Claude Opus 5 <[email protected]>
3.6 KiB
id, name, chr, yarn_file, status, scenes
| id | name | chr | yarn_file | status | scenes | |
|---|---|---|---|---|---|---|
| bartender | Bartender | — | Assets/Dialogue/Characters/Bartender.yarn | drafted |
|
The Bartender
Who they are
He is behind the bar at a conference that is pretending to be a party, and he has been behind it long enough to have opinions he will not offer. He recognises the protagonist. He is certain he has served them before, with Mr. Doss, a few days ago — and he says so casually, the way you mention the weather, without any idea that he has just detonated something. What he wants tonight is an ordinary shift. He is not going to get one.
FACEWORK reads him as a watcher: a man who tends the bar and observes, and reports back. That reading is FACEWORK's, and FACEWORK advocates rather than reports — it may well be wrong. Do not resolve it in his prose.
How they speak
Warm, clipped, incurious on the surface. Short sentences. Contracts freely — "What can I get
ya?" He uses {$player_alias}, the club name, never the real one. That detail is load-bearing:
he knows the protagonist by a name the protagonist does not remember choosing.
Verbal tics
- Opens with "Ah," — recognition offered before it is earned.
- Names the drink rather than the person: "One Estate coming right up."
What they never say or do
He never asks why the protagonist does not remember. He notices the strangeness, files it, and pours. He never raises the matter of Doss himself — he answers about him, and only when asked.
What they know
| They know | True? | Reveals when | Records |
|---|---|---|---|
| The protagonist has been here before | believed, unverified | first conversation, unprompted | $spoke_to_bartender |
| They were with Mr. Doss "a few days ago" | believed, unverified | if the player denies having been here | $looking_for_doss |
| Their usual drink is the Estate | believed | on ordering, or "what can you recommend" | $had_the_estate_drink |
What they are wrong about
Possibly nothing. Possibly the entire identification. He is confident and casual, which is exactly the register a Wrong Truth wears — except this one is his, not a voice's. Whether the protagonist was ever here is not settled by him saying so, and the writing must not let his certainty function as proof.
Their read on the protagonist
He pushes the Made Asset reading without meaning to — someone known here, under a name they
do not remember, in company they cannot account for. Revealing the fugue to him sets
$revealed_fugue_to_bartender and adds to $self_lean_made_asset. Claiming "the usual" instead
adds to $self_lean_inheritor — a person with a standing order is a person with a past here.
Note the drink beat writes lean in both directions: agreeing the Estate tastes familiar adds to the Inheritor lean, denying it subtracts. It is the one place a player can actively push a lean down, and it only counts on the first glass.
One line that is 100% them
"I could have sworn you are {$player_alias}, weren't you with Mr. Doss a few days ago?"
Open threads
SC101_Hook_Questions_Bartender_Talk is placeholder text — literally "Question 1 / Answer
1". It is a working hub-and-spoke loop with nothing in it. This is the single largest piece of
unwritten dialogue in the shipped scene, and the natural home for testimony-channel clues,
which the candidate registry currently lists as Planned for all three candidates.
Mr. Doss never appears. He is referenced by the Bartender and by Chevalier Cassian Thal, who calls him "your friend" — two independent sources treating the protagonist's connection to him as established fact.