Files
lennartandClaude Opus 5 f1fadf7909 add a writer-facing content pipeline under writing/
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]>
2026-08-25 20:23:42 +02:00

56 lines
2.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Glossary
In-world and project terms that come up while writing. World history, factions and the timeline
live in the Obsidian vault — `[[Lorebook]]`, `[[Timeline notes]]`,
`[[Divergence Point Analysis]]` — and this file deliberately does not duplicate them. It covers
the vocabulary you need to read a `.yarn` file and a design note without stopping.
## The project's own terms
**Voice** — one of the eleven skills. A character in the protagonist's head, not a stat. See `voices/`.
**Candidate** — one of three live readings of who the protagonist is: the Made Asset, the
Journalist, the Inheritor. They are not mutually exclusive and **never resolve**.
**Lean** — `$self_lean_<candidate>`. A counter of how far play has tilted toward one reading.
Tracks *belief*, not truth, which is why a wrong deduction still moves it.
**Clue** — a registry entry in `Assets/Candidates/candidates.json`. Each candidate has exactly
four: one object, one testimony, one document, one intuition.
**Trace channel** — where a clue physically comes from: physical, testimonial, behavioural,
documentary. Used to keep acquisition routes genuinely independent.
**Wrong Truth** — a failed check that yields a confident, coherent, false conclusion, stated
with no hedge in the prose. The workhorse failure of this game.
**Colour check / gate check** — a check written for texture versus one that controls access to
a route. 80–90% should be colour.
**Bottleneck** — a point every playthrough must pass. Clues required to pass one need multiple
independent routes.
**Detour / jump** — Yarn's two ways to move between nodes; the first returns, the second does not.
**Node group** — several nodes sharing a `title:`, with `when:` conditions selecting between them.
**Thread 2 / Thread 9** — two lore threads designed never to resolve. Do not map candidate
material onto them.
**Fugue** — the protagonist's amnesia. Dissociative, and specifically about their own identity
rather than an external event. The indeterminacy is the design, not a puzzle with a hidden answer.
## The cast so far
| Name | Where | Sheet |
|---|---|---|
| The Bartender | the bar, SC-101 | [`characters/bartender.md`](characters/bartender.md) |
| Chevalier Cassian Thal | the table, SC-101 | [`characters/chevalier-cassian-thal.md`](characters/chevalier-cassian-thal.md) |
| Bradford Kane | the table, SC-101 | [`characters/bradford-kane.md`](characters/bradford-kane.md) |
| Mr. Doss | referenced only, never seen | — |
## Scene ids
`SC101` — The Card at the Desk. The opening; playable end to end.
`SC102` — The figure at the head of the table stands up. A one-line stub.