# FORMAT_SPEC — Microserial Format Bible

> Canonical specification for 30-second microserial episodes.
> Everything in the system references this document. If it contradicts another file, this file wins.

---

## 1. Kill Box Structure

Every 30-second episode follows a rigid 3-beat structure called the **Kill Box**.

| Beat | Duration | Word Budget | Function |
|------|----------|-------------|----------|
| CONSEQUENCE | 10s | ~50 words | Opens in media res. The vote result IS the opening action. No separate poll visualization. |
| PIVOT | 12s | ~60 words | The fun reversal, clever improvisation, or complication. Gets the most screen time because entertainment lives here. |
| FREEZE | 8s | ~30 words | Mid-action or sudden-aftermath cliffhanger. Held moment. |
| VOTE | 10s (off-clock) | ≤15 words | **Every episode.** The DM question. Makes every episode 40s total (30s story + 10s vote). |

Beat timing is **±2 seconds flex**. Sequence is **rigid** — CONSEQUENCE → PIVOT → FREEZE, always.

### Episode 1 Exception

No prior vote exists. CONSEQUENCE becomes a **"World-State Boot"** — a tactile, mechanical opening establishing the visual grammar. No vote fallout to dramatize, so instead: show the world working (or breaking) through concrete physical detail.

---

## 2. Constants

```
MICRO_MAX_TOTAL_WORDS = 180
MICRO_MIN_TOTAL_WORDS = 120
MICRO_MAX_SPOKEN_WORDS = 40
MICRO_MAX_DIALOGUE_PCT = 0.25
MICRO_MAX_EXCHANGES = 3
MICRO_SHOT_RANGE = (3, 10)
MICRO_MAX_CONSECUTIVE_RHYTHM = 2
MICRO_MAX_VO_EPISODES = 2
MICRO_EPISODE_DURATION = 30
MICRO_VOTE_DURATION = 10
MICRO_VOTE_TEXT_MAX_WORDS = 15
MICRO_VOTE_OPTIONS = (2, 3)
MICRO_VOTE_EVERY_EPISODE = true
MICRO_BRANCH_NODES_PER_SERIES = 3
MICRO_VARIANTS_PER_EPISODE = (2, 3)
MICRO_TOTAL_EPISODES_VIEWER_PATH = 16
MICRO_TOTAL_EPISODES_PRODUCED = "16 base + (15 × 2 variants) = ~46"
```

### Derived Constraints

- Total spoken dialogue may not exceed 25% of total word count (`MICRO_MAX_DIALOGUE_PCT`).
- Max 40 spoken words per episode — that is dialogue + VO combined.
- Shot count per episode must fall within `MICRO_SHOT_RANGE` (3–10 shots).
- **Every episode ends with a VOTE tag.** The DM asks a question. Always.
- **Pre-generate all variants:** For each episode's vote, generate 2-3 complete versions of the NEXT episode (one per option). When the audience votes, publish the matching variant.
- Total content produced per series: ~46 episode scripts (16 base + ~30 variants). Viewer sees exactly 16.
- Generation is cheap. Pre-generating all paths eliminates JIT delay.

---

## 3. Rhythm System

Each episode is tagged with one of three rhythm types that dictate editing pace, shot count, and visual pipeline approach.

| Tag | Shots | Style | Pipeline Hint |
|-----|-------|-------|--------------|
| Frenetic | 7-10 | Fast cuts, high action, short sentences | Standard still→video |
| Measured | 4-6 | Deliberate, tense, sensory | Standard still→video |
| Fluid | 1-3 | Long shots with invisible stitch points (whip pans, foreground wipes) | Long-take video gen |

### Rhythm Rules

- **Max 2 consecutive same rhythm.** After 2 Frenetic episodes, the next must be Measured or Fluid.
- **Distribution across 16 episodes:** minimum 4 of each type.
- **Episode 1:** Measured or Fluid.
- **Episode 16:** Frenetic.

---

## 4. Emotional Beat Schedule

Fixed emotional beats pinned to specific episodes. These are non-negotiable structural anchors.

| Episode | Beat | Function |
|---------|------|----------|
| 3 | THRESHOLD | First major commitment to danger |
| 8 | MIDPOINT | Stakes shift, game changes |
| 11 | VULNERABILITY | The mask slips; quiet before the fall |
| 12 | ALL_IS_LOST | Lowest point, heavy cost |
| 15 | FRACTURE/RECONCILIATION | Relationship tested and affirmed |
| 16 | RESOLUTION | Contained victory + universe expansion |

Episodes not listed here have no mandated emotional beat (though they may carry organic emotional weight from the story).

---

## 5. Sequence Structure

8 sequences, 2 episodes each, following a **Push/Pushback** rhythm:

- **Episode A (odd):** Proactive move. Ends on discovery/complication.
- **Episode B (even):** Reactive survival. Ends on threat/choice.

| Seq | Episodes | Name | Function |
|-----|----------|------|----------|
| 1 | 1-2 | INCITING | World-state boot / disaster locks them in |
| 2 | 3-4 | ESCALATION | First attempt / makes things worse |
| 3 | 5-6 | THE TOLL | Physical cost / emotional-resource cost |
| 4 | 7-8 | MIDPOINT | The big swing / the massive reversal |
| 5 | 9-10 | FALLOUT | Surviving midpoint / new desperate plan |
| 6 | 11-12 | ALL IS LOST | Plan fails / lowest point |
| 7 | 13-14 | THE RALLY | Spark of hope / turning tables |
| 8 | 15-16 | CLIMAX | Final confrontation / resolution + expansion |

---

## 6. Node Map Structure

The series is a branching narrative with 3 **branch nodes** (structural fork points) that create temporary divergence before reconverging. Note: every episode has a vote, but only 3 of those votes create actual story branches.

### Core Rules

- **Every episode ends with a vote.** The DM always asks.
- **3 branch nodes per series** (approximately eps 3, 8, 12 — ±1 flex) create structural story forks.
- **All other votes** use Magician's Choice — the vote shapes the CONSEQUENCE of the next episode (cost/method/tone) but not the structural destination.
- **Pre-generate all variants:** For every episode (except Ep 1), generate 2-3 complete versions (one per vote option from the previous episode). When the audience votes, publish the matching variant.
- **Total content:** ~46 episode scripts. Every viewer path = exactly 16 episodes.

### How Variants Work

**Regular votes (13 of 16 episodes):** Episode N ends with a vote. Pre-generate 2-3 versions of Episode N+1, each with a different CONSEQUENCE reflecting the vote outcome. The PIVOT and FREEZE converge — same structural destination, different cost/texture.

**Branch nodes (3 of 16 episodes):** Episode N ends with a vote that creates a genuine story fork. Pre-generate 2-3 fully distinct versions of Episode N+1 (different CONSEQUENCE, PIVOT, and FREEZE). Episode N+2 reconverges.

### Episode File Naming

- Base episode: `ep_01.md` (the "canonical" or first-generated version)
- Variant A: `ep_02_a.md` (if audience voted A on ep_01)
- Variant B: `ep_02_b.md` (if audience voted B on ep_01)
- Variant C: `ep_02_c.md` (if 3 options and audience voted C)

Every episode except Episode 1 has 2-3 variants pre-generated.

### Node Map Header Schema

For parser compatibility, every episode in the node map uses this header format:

```
### Episode N (TYPE) — [Rhythm]
```

Where `TYPE` is one of: `LINEAR`, `VOTE_NODE`, `DIVERGENT`, `RECONVERGE`.

---

## 7. Vote Mechanics (Magician's Choice)

Votes are designed so that the audience feels consequential agency while the narrative maintains structural integrity. This is the Magician's Choice principle.

### Design Rules

- Options control **COST**, **METHOD**, or **SACRIFICE** — never **DESTINATION**.
- Structural nodes are fixed; audience chooses the path between them.
- **Vote text:** ≤15 words, concrete nouns, physical actions, no abstractions.
- All options must have **real cost** (no "correct" answer).
- **The 90/10 test:** if >70% would pick same option, rewrite.

### DM_RESOLUTION Format

Injected before generation of the episode following a vote:

```
> [!DM_RESOLUTION]
> The audience voted for: **[B] Overload the reactor**.
> CONSEQUENCE beat must open with the immediate physical fallout.
```

### DM_PROMPT Format

Generated at the end of **every** episode script:

```
## VOTE
**[DM_PROMPT]** The blast doors are closing. What do they do?
* [A] Grab the relic (Physical Cost)
* [B] Jam the door with their weapon (Resource Cost)
```

---

## 8. Pulp Velocity Tone

Genre-agnostic rules for **FUN**. These apply to every episode regardless of genre, setting, or mood.

### Verb Specificity

- **No generic verbs.** Characters cannot "run," "look," or "fight."
- Must interact with environment + character archetype.
- Bad: "She ran across the room." Good: "She vaulted the console, boots cracking the display."

### Character Competence

- Characters are **highly capable**. Never panicking.
- They may be outmatched, cornered, or surprised — but they respond with skill.

### Forward Momentum

- Characters end closer to goal or deeper in mystery.
- Exception: even-numbered pushback episodes (reactive survival).

### Environmental Interaction

- Characters **use surroundings**. Furniture, terrain, weather, architecture — all fair game, all mandatory.

### Sentence Discipline

- **Average sentence length:** 8-15 words.
- **Hard ceiling:** never >25 words per sentence.

### Word Economy

- **Verb preference:** Active, concrete ("slammed" not "impacted").
- **Adjective budget:** Max 1 per noun phrase.
- **Dialogue voice:** Clipped. Characters charged per word.

### Prohibitions (Pulp Velocity)

- Exposition dumps
- Interior monologue
- Flowery description
- Filter words (saw, felt, heard)

---

## 9. VO Rules

Voiceover is a precision tool, not a crutch.

- **Optional** — max 2 episodes per 16-episode series (~12%).
- Must be **asynchronous:** cannot describe on-screen action.
- Must provide **ironic, thematic, or temporal counterpoint**.
- Max **2 sentences** per VO episode.
- Tagged as:
  ```
  [VO: CHARACTER]
  "Spoken text."
  ```

If VO describes what the viewer can already see, cut it.

---

## 10. Cliffhanger Taxonomy

Every episode ends on one of four cliffhanger types:

| Type | Definition |
|------|-----------|
| **The Reveal** | New visual information alters the landscape |
| **The Reversal** | An advantage becomes a disadvantage |
| **The Ticking Clock** | A strict time limit imposed |
| **The Dilemma** | Two bad choices with immediate physical consequences |

Each FREEZE beat must be classifiable as exactly one of these four types.

---

## 11. Pattern Interrupts

Predictability kills tension. These rules enforce variety.

### Hard Limits

- Max **3 consecutive** same cliffhanger subtype.
- Max **2 consecutive** same rhythm (restated from Section 3).

### Pattern Interrupt Techniques

- **Editing rhythm as pattern interrupt:** oners after fast-cut sequences.
- **Micro-flashbacks:** max 1 sentence.
- **POV sensory shifts:** sound design, color temperature, focal length change.
- **Starting mid-motion:** episode opens on action already in progress (which is most episodes via the Kill Box, but varies in intensity).

---

## 12. Episode File Template

```markdown
# EP[NN] — [TITLE]

## Metadata
- Rhythm: [Frenetic/Measured/Fluid]
- Character Focus: [name]
- Emotional Beat: [beat name or "none"]
- Node Type: [LINEAR/VOTE_NODE/DIVERGENT/RECONVERGE]
- Cliffhanger Type: [Reveal/Reversal/Clock/Dilemma]

## [00:00-00:10] CONSEQUENCE

[Visual/action description. The situation. In media res.]

## [00:10-00:22] PIVOT

[The turn. What changes.]

CHARACTER_NAME
"Spoken dialogue in this exact format."

[VO: CHARACTER_NAME]
"Voiceover text in this exact format."

## [00:22-00:30] FREEZE

[Final image. The gut-punch. Held beat.]

## VOTE

**[DM_PROMPT]** [Vote text ≤ 15 words]
* [A] [option] ([cost type])
* [B] [option] ([cost type])

## Visual Direction
- Setting: [location, lighting]
- Key Props: [notable objects]
- Camera Notes: [shot size, movement]
```

### Dialogue Syntax

`CHARACTER_NAME` on its own line, followed by `"Spoken text."` on the next line.

```
KAEL
"Three seconds. Move."
```

### VO Syntax

`[VO: CHARACTER_NAME]` on its own line, followed by `"Spoken text."` on the next line.

```
[VO: KAEL]
"We had three seconds. I counted four."
```

---

## 13. Prohibitions

Absolute rules. If any of these appear in a script, it fails validation.

| Prohibition | Explanation |
|-------------|-------------|
| **Exposition** | Characters cannot explain plot, lore, or feelings. |
| **Synchronous VO** | Cannot describe on-screen action. |
| **Generic verbs** | "ran," "looked," "fought" — must be specific to character and environment. |
| **True oners** | Fluid rhythm must include stitch points (whip pans, foreground wipes). No unbroken single takes. |
| **Relationship declarations** | No "I trust you" — show through action. |
| **Interior monologue** | No "She thought to herself..." |

---

## File Naming Convention

| Type | Pattern | Example |
|------|---------|---------|
| Linear episodes | `ep_NN.md` | `ep_01.md`, `ep_02.md`, ..., `ep_16.md` |
| Divergent variants | `ep_NNa.md`, `ep_NNb.md` | `ep_04a.md`, `ep_04b.md` |

- Underscore separator.
- Zero-padded to 2 digits.
- Lowercase `a`/`b` suffix for variants.
