---
id: ch.XX                        # e.g. ch.01, ch.02 … ch.07; ch.00 = intro dry-run
title: "<Chapter title>"
source_pages: "pp.NN–NN"         # page range in source PDF
status: draft                    # draft | in-review | locked
validators_signoff:
  dmitry: pending                # pending | passed | revisions-requested
  adversarial_reviewer: "0 flags"   # "<N> flags" — green when "0 flags"; if non-zero, append a flag-log path
  roma:   pending                # pending | signed  | revisions-requested
  maks:   pending                # pending | signed  | revisions-requested
locked: false                    # true only when all four review_state gates are green
---

<!--
  CHAPTER MARKDOWN TEMPLATE — fillable skeleton for per-chapter extraction artifacts.
  One file per chapter. Fill in placeholders; delete this comment block when done.

  Protocol refs (read before extracting):
    protocols/extraction.md       — two-stage gap-driven extraction, IP rules, source_ref format
    protocols/edge-cheatsheet.md  — all 10 edge types with directions and disambiguation
    voice/kai-voice-persona.md    — voice register to follow for every kai_voice_draft

  Section order (stable; do not reorder — enables clean diffs):
    1. Frontmatter
    2. # user_states
    3. # loops
    4. # principles
    5. # anti_patterns
    6. # scripts
    7. # dialogues
    8. # gap_list
    9. # validation_scenarios
   10. # cross_chapter_links
   11. # review_state
-->

---

# user_states

<!-- One exemplar entry below. Duplicate the block for each emitted user_state. -->

## S-<descriptor>  <!-- global id — NOT chapter-scoped; must be unique across all chapters -->
- **title:** <short descriptive>
- **body:** <paraphrased description of this stage in our language, 1–3 sentences>
- **source_ref:** `ch.XX p.NN para.N | "<verbatim grounding snippet ≤ 30 words, internal>"`
  <!-- internal only — never user-facing, never rendered into FigJam -->
- **kai_voice_draft:** "<how a seasoned Anakai KOL would describe or address this state to the user, 1–3 sentences>"
- **voice_context_tags:** [<warm-market | cold-market | family | friend | professional | newcomer | experienced>]
- **entry_criteria:** <one line — what observation or signal places the user in this state>
- **exit_criteria:** <one line — what indicates the user has moved on from this state>
- **linked_triggers:** [L-XX-YY]              <!-- loop(s) that fire when user is in this state -->
- **linked_vulnerable_to:** [AP-XX-YY]        <!-- anti_patterns this state makes tempting -->
- **notes:** <reviewer notes, optional>

---

# loops

<!-- One exemplar entry below. Duplicate the block for each emitted loop. -->

## L-XX-YY  <!-- chapter-XX, loop-YY -->
- **title:** <short descriptive>
- **body:** <paraphrased description of this behavioural cycle: trigger → user action → Kai response → outcome, 2–4 sentences>
- **source_ref:** `ch.XX p.NN para.N | "<verbatim grounding snippet ≤ 30 words, internal>"`
- **kai_voice_draft:** "<how a seasoned Anakai KOL would coach a user through this loop, 1–3 sentences>"
- **voice_context_tags:** [<warm-market | cold-market | family | friend | professional | newcomer | experienced>]
- **steps:**
  <!-- step ids here become the step-N-<name> tokens referenced in script.linked_implements_step (e.g. L-XX-YY.step-2-ask-permission) -->
  <!-- Dual-purpose: (a) audit structure (Phase 2 walk-through), (b) anchor for script.implements_step references. Step names should be operationally distinct and durable enough that scripts attach to them stably. -->
  <!-- kai_intent is required (closes "opaque labels" gap, Terry feedback 2026-06-10); script_ref is optional and only present when a script node implements this exact step. -->
  - id: step-1-<name>    <!-- e.g. step-1-open-contact -->
    kai_intent: "<one-sentence statement of what Kai aims to achieve in this step — not what the user does; what Kai's role is>"
    script_ref: <Sc-XX-YY or omit if no script implements this step>
  - id: step-2-<name>
    kai_intent: "<...>"
    script_ref: <optional>
  - id: step-3-<name>    <!-- add or remove steps as needed -->
    kai_intent: "<...>"
    script_ref: <optional>
- **linked_transitions_to:** [S-<descriptor>]  <!-- user_state the user lands in after loop completes -->
- **linked_backed_by:** [P-XX-YY]              <!-- principle(s) that explain why this loop works -->
- **linked_precedes:** [L-XX-YY]               <!-- loop(s) that naturally follow this one in the journey -->
- **linked_edifies:** ["<external actor name>"]  <!-- external actors edified by this loop, if any; named strings -->
- **notes:** <reviewer notes, optional>

---

# principles

<!-- One exemplar entry below. Duplicate the block for each emitted principle. -->

## P-XX-YY  <!-- chapter-XX, principle-YY -->
- **title:** <short descriptive>
- **body:** <paraphrased substance, our wording, 1–3 sentences>
- **source_ref:** `ch.XX p.NN para.N | "<verbatim grounding snippet ≤ 30 words, internal>"`
- **kai_voice_draft:** "<how a seasoned Anakai KOL would express this principle to the user, 1–3 sentences>"
- **voice_context_tags:** [<warm-market | cold-market | family | friend | professional | newcomer | experienced>]
- **linked_corrects:** [AP-XX-YY]    <!-- anti_pattern(s) this principle corrects -->
- **linked_depends_on:** [P-XX-YY]   <!-- principle(s) that must be internalised first; omit if none -->
- **notes:** <reviewer notes, optional>

---

# anti_patterns

<!-- One exemplar entry below. Duplicate the block for each emitted anti_pattern.
     Anti-patterns have NO outgoing linked_* edges — all edges are inbound
     (principle.linked_corrects → here; user_state.linked_vulnerable_to → here). -->

## AP-XX-YY  <!-- chapter-XX, anti_pattern-YY -->
- **title:** <short descriptive>
- **body:** <paraphrased description of the wrong behaviour and why it feels instinctive, 1–3 sentences>
- **source_ref:** `ch.XX p.NN para.N | "<verbatim grounding snippet ≤ 30 words, internal>"`
- **kai_voice_draft:** "<brief reframe: here is what usually happens and why it costs the user — 1–3 sentences in Kai's voice>"
- **voice_context_tags:** [<warm-market | cold-market | family | friend | professional | newcomer | experienced>]
- **trigger_pattern:** <one line — the instinct or impulse that drives users into this behaviour>
- **cost:** <one line — what concretely goes wrong when the user falls into this anti_pattern>
- **notes:** <reviewer notes, optional>

---

# scripts

<!-- One exemplar entry below. Duplicate the block for each emitted script.
     Variant scripts (warm/cold/family/friend/language) are separate nodes linked via linked_paraphrase_of. -->

## Sc-XX-YY  <!-- chapter-XX, script-YY; for variants use Sc-XX-YY-<register>, e.g. Sc-01-03-warm -->
- **title:** <short descriptive>
- **body:** <full script draft in Kai's voice — operational language the user can actually use>
- **source_ref:** `ch.XX p.NN para.N | "<verbatim grounding snippet ≤ 30 words, internal>"`
- **kai_voice_draft:** "<how the script sounds when voiced naturally — may overlap body for scripts>"`
- **voice_context_tags:** [<warm-market | cold-market | family | friend | professional | newcomer | experienced>]
- **situation:** <one line — when this script is used: what context / user state triggers it>
- **language:** en   <!-- default en; allowed: en | ru | kr | jp | vn -->
- **requires_variants:** [kr, jp, ru, vn]  <!-- list of language codes that need native-authored variant nodes; default to [kr, jp, ru, vn] for v0 canon scripts; empty list if no variants planned -->
- **linked_backed_by:** [P-XX-YY]              <!-- principle(s) that ground this script's design -->
- **linked_implements_step:** [L-XX-YY.step-N-<name>]  <!-- loop step(s) this script fills -->
- **linked_paraphrase_of:** [Sc-XX-YY]         <!-- canon script id if this is a variant; omit for canon -->
- **linked_edifies:** ["<external actor name>"]  <!-- external actors edified by this script, if any -->
- **notes:** <reviewer notes, optional>

---

# dialogues

<!--
Dialogues are conversation transcripts that walk through a loop end-to-end.
Each dialogue picks one loop and demonstrates Kai running the user through
its steps in concrete voice. Anti-pattern moments are encoded as user turns
where the user signals an instinctive wrong move; the Kai turn that follows
demonstrates the correction.

Dialogues are NEW (introduced 2026-06-11 for Roma operational review).
Per chapter: emit one dialogue per loop, plus 1-2 dedicated anti-pattern
correction moments. Target: 5-8 dialogues per chapter for chapters with
loops; chapters with no loops (like ch.0) emit zero dialogues.
-->

## D-XX-YY  <!-- chapter-XX, dialogue-YY -->
- **title:** <short — name the scenario, e.g. "First list-dump session with a hesitant newcomer">
- **covers_loop:** L-XX-YY  <!-- the loop this dialogue walks through end-to-end -->
- **covers_anti_patterns:** [AP-XX-YY, ...]  <!-- anti-pattern moments this dialogue includes and corrects -->
- **voice_context_tags:** [newcomer | experienced | warm-market | cold-market | family | professional]  <!-- determines register; newcomer triggers concrete-imperative-repeat-confirm per persona §Newcomer register shift -->
- **uses_scripts:** [Sc-XX-YY, ...]  <!-- canon scripts referenced verbatim in this dialogue -->
- **source_ref:** `ch.XX p.NN para.N | "<≤30 word verbatim grounding snippet, internal only>"`
- **turns:**
  - speaker: kai
    text: "<paraphrased Kai turn in persona register>"
    rationale: "<why Kai chooses this move — references loop step or principle>"
    tag: "<L-XX-YY.step-N-name | P-XX-YY | applies-script:Sc-XX-YY>"
  - speaker: user
    text: "<typical user response — newcomer-realistic, can include signals of anti-pattern temptation>"
  - speaker: kai
    text: "<Kai's response, often correcting the anti-pattern just demonstrated>"
    rationale: "<...>"
    tag: "<corrects:AP-XX-YY | next-step:L-XX-YY.step-N>"
  - speaker: user
    text: "<...>"
  - speaker: kai
    text: "<...>"
    rationale: "<...>"
    tag: "<...>"
- **notes:** <reviewer notes; populated by Roma during operational review>

---

# gap_list

<!--
  CANONICAL REASON TAGS (from protocols/extraction.md §5):

  | Tag                        | When to use                                                                 |
  |----------------------------|-----------------------------------------------------------------------------|
  | restatement-of-<id>        | Paragraph restates content already in artifact <id> (use exact artifact id) |
  | anecdote                   | Personal story / illustrative example with no new framework content         |
  | transitional               | Connective tissue between sections; no extractable content                  |
  | recap                      | Summary of multiple prior artifacts; no single id is primary                |
  | meta-commentary            | Author speaks about the book, reader, or reading process                    |
  | forward-reference          | References content belonging to a later chapter; flag for that chapter      |

  PRECEDENCE: when a paragraph restates a SINGLE prior artifact, prefer restatement-of-<id>
  over recap. Use recap only when multiple prior artifacts are summarised and no single id
  is primary.

  NON-FITTING PARAGRAPHS: if a paragraph carries substantive content and none of the six
  tags fit, do NOT force a tag — go back to Stage 1 and emit it as a new artifact.
-->

<!-- Format: - [para identifier] <reason-tag>: <one-sentence explanation if needed> -->

- [ch.XX p.NN para.N] <reason-tag>: <explanation>

---

# validation_scenarios

<!--
  Per spec §8.1: 5–10 scenarios per chapter, each a sequence of numbered steps referencing
  graph nodes. Scenarios are the validator interface — Roma uses them to check operational
  truth; Maks may walk one or two for journey-arc sanity. One empty exemplar below.
-->

### Scenario 1: <title>
1. User in state `S-<descriptor>`.
2. Kai opens with `Sc-XX-YY` (<situation>).
3. User reports: "<user input>".
4. Kai responds via `L-XX-YY` (<loop name>), uses script `Sc-XX-YY`.
5. User commits to <action>. State transitions to `S-<descriptor>`.

<!-- Add scenarios 2–N below (target: 5–10 total per spec §8.1), following the same numbered-step format -->

---

# cross_chapter_links

<!--
  Record outgoing edges from THIS chapter's nodes that target nodes in PRIOR chapters.
  Use the edge types defined in protocols/edge-cheatsheet.md.

  Common cross-chapter edge types typically appear here:
    precedes    — a loop in this chapter that precedes a loop in a prior chapter
                  (rare; usually prior chapter precedes this one, so the edge lives there)
    backed_by   — a loop or script in this chapter that is backed by a principle in a
                  prior chapter (cross-chapter principle reuse)
    depends_on  — a principle in this chapter that depends on a principle in a prior chapter

  Format: <source-id> --[edge-type]--> <target-id>  <!-- ch.NN: <brief note> -->
-->

- <source-id> --[<edge-type>]--> <target-id>  <!-- ch.NN: <brief note about why this cross-ref exists> -->

---

# review_state

<!--
  Validator-signoff tracker. A chapter is locked when ALL four conditions below are true:
    1. Dmitry editorial pass = passed
    2. Adversarial reviewer flags = 0 unresolved
    3. Roma signoff = signed
    4. Maks signoff = signed
  See spec §8.4.
-->

**Dmitry editorial pass:** `pending`
<!-- pending | passed | revisions-requested -->

**Adversarial reviewer flags:** 0 flags — no flag log yet
<!-- Record count of open flags + link to flag log file once adversarial review runs.
     Format: N flags — [flag log](../protocols/adversarial-flags-ch.XX.md) -->

**Roma signoff (operational truth):** `pending`
<!-- pending | signed | revisions-requested -->

**Maks signoff (brand / voice):** `pending`
<!-- pending | signed | revisions-requested -->

**Locked:** `false`
<!-- mirrors frontmatter `locked:` — update both together to keep machine-readable and human-readable in sync -->
<!-- Set to true only when: Dmitry = passed AND adversarial flags = 0 unresolved AND Roma = signed AND Maks = signed -->
