# RECORD STORE GUY — production bible (v0 draft, pending John's art review)

The whole consistency strategy: **nothing is ever prompted freestyle.** Every image
(FLUX) and every clip (Flow/Veo) is assembled from the verbatim blocks below plus
ONE shot-specific action sentence and ONE camera line. Blocks are copy-pasted
character-for-character. Edit a block → bump its version and regenerate the
ingredient stills before generating any more clips with it.

## STYLE BLOCK v1 (verbatim in every prompt, FLUX and Flow)
> 1980s hand-drawn cel animation, theatrical animated feature quality, thick
> confident ink outlines, rich painterly gouache backgrounds, dramatic colored
> rim lighting, saturated jewel-tone palette with deep shadows, subtle film grain,
> 2D animation cel look, no photorealism, no 3D render, no CGI.

**DECIDED: cel animation is canonical for the build** (John, 2026-07-19 — in the
spirit of Dragon's Lair/Space Ace). The look is now a SWAPPABLE layer: blocks live
in `production/prompts/` (blocks.json = characters/sets, looks/*.json = styles:
cel80s ✦canonical, scannerdarkly rotoscope, fmv90s, heavymetal). Compile any shot
in any look with `tools/promptc.py shots/<shot>.json [--look NAME | --all]`;
`--flux hero --look NAME` emits the matching ingredient-still prompt (each look
needs its OWN hero ingredient still — ingredients are style-baked). Style test
plan: 1 busy shot (t2_s3_sharkrun) × 4 looks ≈ 80 credits, judge, then commit.
Alt-look re-releases later = re-run the same shot files with a different --look.

## HERO BLOCK v1 — "Dez" (placeholder design, John approves at concept review)
> Dez, a lanky 20-something record store clerk with a tall messy black quiff,
> olive skin, thick eyebrows, wearing an open red flannel shirt over a faded black
> band t-shirt, rolled dark jeans, scuffed white hi-top sneakers, oversized silver
> headphones worn around the neck, expressive rubber-limbed animation acting.

Notes: silhouette-first design (quiff + flannel + neck headphones reads at any
size/angle — that's what survives gen drift). Keep clothing colors primary and few.

## VILLAIN candidates (pick one with John, then write VILLAIN BLOCK v1)
1. **The Dead Wax** — an entity living in run-out grooves; black liquid vinyl that
   drips out of records and takes shapes. Great for varied deaths, easy consistency
   (it's a black glossy mass — gen drift can't hurt it). *(recommended)*
2. **Mildred** — possessed store cat, eyes like spinning 45 adapters.
3. **The Audiophile** — tyrannical ghost of the store's founder, cable-tentacles,
   tube-amp glow chest.

## SET BLOCKS v1
**SET-A store floor:** > inside a cluttered independent record store at night, rows
> of wooden crates packed with vinyl records, walls covered in gig posters and
> album sleeves, a buzzing neon sign glowing red and cyan, dusty air, single
> flickering fluorescent tube, checkerboard floor.

**SET-B backroom:** > the record store stockroom, floor-to-ceiling industrial
> shelving stacked with record boxes, a single hanging bulb, a service hatch,
> cobwebs, teetering towers of 7-inch singles.

**SET-C listening booth:** > a vintage wood-paneled listening booth with a glowing
> turntable console, padded walls, a porthole window, warm amber light.

(3 sets is enough for a full gauntlet — Dragon's Lair reused rooms shamelessly.
Add SET-D "the groove" (surreal inside-the-record void, black glossy landscape,
concentric ridges to the horizon) if we pick villain #1.)

## PROMPT GRAMMAR
**FLUX still:** `[STYLE] [HERO or VILLAIN] [SET] [pose/expression sentence] [framing line]`
**Flow clip:** `[STYLE] [HERO] [VILLAIN if present] [SET] [ACTION: one sentence, one
verb chain, ≤25 words] [CAMERA: one line, e.g. "static wide shot" / "slow push-in"]`
Rules:
- ONE action per clip. Veo garbles compound choreography. A scene needing two beats
  = two clips frame-chained.
- Name the character every time ("Dez ducks…" never "he ducks…").
- Camera: default static or slow push — wild moves amplify drift.
- Deaths end on a held comedic tableau (readable freeze for DEATH_HOLD).
- Negative/avoid line on every gen: "no text, no captions, no watermark, no extra
  people, no photorealism."

## FLOW WORKFLOW (Phase 3+; John drives the browser/login, never Claude with credentials)
1. Ingredients: upload approved FLUX `hero_face` + `hero_sheet` (+ villain still).
   Every clip gen uses ingredients-to-video referencing them.
2. Veo Fast (~20 cr) for all takes; quality (~100 cr) reserved for intro/win/hero deaths.
3. Within-scene continuity: Flow "extend" / last-frame→first-frame chaining.
   Between scenes: hard cuts (hide drift; it's the Dragon's Lair idiom anyway).
4. 16:9, and trim in post — never re-gen to fix length (postprocess.sh trims free).
5. Log EVERY gen in production/SHOTLOG.csv before the next gen:
   `date,scene_id,take,mode,credits,verdict(keep/reject),drift_notes`.

## CONCEPT-ART PROMPTS (Phase 2, MODELBEAST flux_local, free — iterate hard)
Compose per grammar above. Shot list + specific final sentences:
1. `hero_sheet`: "character model sheet, full body turnaround, front view and side
   view, neutral standing pose, plain warm gray background" *(omit SET)*
2. `hero_face`: "close-up head and shoulders portrait, three-quarter view, confident
   smirk, plain warm gray background" *(omit SET — this is the prime Flow ingredient)*
3. `villain`: per chosen candidate + "emerging menacingly, full figure, dramatic low angle"
4. `store_wide`: STYLE + SET-A + "wide establishing shot, empty of people, moody" *(omit HERO)*
5. `store_backroom`: STYLE + SET-B same treatment
6. `style_frame`: full grammar, SET-A, "Dez frozen mid-leap over a toppling crate of
   records as black vinyl tendrils snatch at his ankles, dramatic wide shot" — the money shot
7. `death_concept`: SET-A, "Dez flattened under an avalanche of record crates, only
   sneakers and one hand visible giving a weak thumbs-up, comedic tableau"
8. `title_card`: "vintage 1983 arcade cabinet marquee art with the title RECORD STORE GUY in
   chrome airbrushed lettering over a black vinyl record dripping like liquid" *(text
   WILL come out mangled — it's concept only; real logo gets drawn/typeset later)*
Run seeds 1–4 per shot (`-p seed=N`), pick best, file as
`bible/concept/<shot>_v1_s<seed>.png`. John reviews before anything touches Flow.
