# Beat schema — the Bridge output spec

When asked for "the outline", produce exactly this format. The Bridge
CLI parses it deterministically.

## Format A — markdown headings (preferred)

```markdown
## 00:00:00 — EXPOSITION
Wide drone over the construction site at dawn. Architect's voice over
silhouette: "the world we build is the world we choose to live in."

## 00:00:18 — HERO
Cut to the architect walking through the foundations. He inspects
rebar with his hand. Tight on his eyes — focused, slightly weary.

## 00:00:42 — VILLAIN
Smash to the developer's glass tower. Phone calls, slide decks, money.
The architect's drawings being marked up in red.

## 00:01:08 — VALLEY
Architect at his desk late at night. One light, one model. He pushes
the model aside. Hands on his face.

## 00:01:30 — CRESCENDO
The build resumes. Time-lapse of the structure rising. Workers
laughing. The architect on a steel beam looking up at the sky.

## 00:02:05 — RELEASE
Day of opening. Children running through the finished building. The
architect watching from across the road, hands in his pockets, smiling.
```

## Format B — bracketed timecodes (also accepted)

```markdown
[00:00:00] EXPOSITION — Wide drone over construction site at dawn
[00:00:18] HERO — Architect walks through foundations
[00:00:42] VILLAIN — Developer's glass tower, phone calls, money
[00:01:08] VALLEY — Late night at the desk, model pushed aside
[00:01:30] CRESCENDO — Time lapse, structure rising, workers laughing
[00:02:05] RELEASE — Opening day, children running through
```

Either format works. Format A is preferred because it gives room for
proper shot descriptions.

## Hard rules

1. **Timecodes always HH:MM:SS.** Never MM:SS, never frame numbers,
   never seconds-only.
2. **Beat names always uppercase**, always from the set:
   `EXPOSITION` / `HERO` / `VILLAIN` / `VALLEY` / `CRESCENDO` / `RELEASE`.
   No `OPENING`, no `CLIMAX`, no `ENDING`. Use the canonical six.
3. **Em-dash (—) or hyphen (-) between timecode and beat name.** Both work.
4. **Description in 1–3 sentences.** Concrete visuals. No adjectives unless
   they're load-bearing.
5. **Beats in chronological order.** The Bridge sorts them, but consistent
   input is easier to read.
6. **No blank-line headings.** A heading without body is fine; a body
   without a heading is dropped.

## Anti-patterns

- ❌ `## 1:30 — HERO` (missing the hour)
- ❌ `## 00:01:30.5 — Hero` (sub-second timecodes ignored)
- ❌ `## 00:01:30 — Opening` (use EXPOSITION, not Opening)
- ❌ `### **00:01:30** — HERO` (bold formatting confuses parser)
- ❌ Headings without timecodes (dropped silently)

## The Bridge's promise

If you give it well-formed output in Format A or B, it will write an
FCPXML file you import into Resolve. Each beat becomes a named placeholder
clip + a marker. No manual timecode-hunting.

If you give it malformed output, it tells you what to fix in
human-readable error messages.
