Scene Zero
Five things a logline has to carry. Each row quotes your own words back.
Five takes, three prints. The rejects stay on the sheet.
A whole generated page can't be judged. One labelled candidate can. So everything the model writes arrives as a recognition task — and the strict pass that kills the weak ones is left on the page, crossed out.
- Role
- Spec, product, interface, every judgment — one person, not an engineer
- Status
- Runs locally · not deployed
- Size
- 21,800 lines · 141 files · 5 runtime dependencies
- Hard layer
- 49 rules, 24 with a source you can click, no model
- Tests
- 463, all local
- Stack
- Next.js · TypeScript · Claude API
Nothing here until you point at a gap. The model is invoked, never ambient.
A working model of the loop. The scene is the product's own sample script; the three rules that kill candidates are three of the 44 in the hard layer. In the product the wide pass and the strict pass are two model calls — here they're scripted, so you can see the shape: the rejects stay on the sheet, the light only turns green when nothing is left unjudged that gates.
The model is invoked, never ambient.
Press Summon. Zero — the empty frame from the wordmark — flies to the gap you pointed at, and the bar fills by characters actually received.
Unplug the model. It is still a screenplay checker.
Seven steps, and under each one the rules that run with no model at all. The model only exists at a slot you pointed at.
Unjudged is never passed.
The pre-flight has three states, not two: pass, fail, and can't tell. The green light only comes on when everything is judgeable and everything passes.
- FILM.INTERIORITYAn action line describes what a character feels or thinks. The camera can't shoot it.Source · The Story Department — The Unfilmables ↗︎
- FILM.CAMERA_DIRECTION“WE SEE”, “CLOSE ON”, “PAN TO” in a spec script. The camera is not a character.Source · Script Magazine — Why Spec Scripts Fail ↗︎
- LOG.OBSTACLEThe logline names who and what they want, but nothing is in the way.Source · Christopher Lockhart (WME), “The Logline” ↗︎
- LOG.LENGTHOver the word count a reader will hold in one breath.Source · Barri Evins, “The Logline Dilemma — Does Word Count Count?” ↗︎
- COV.NO_CUTAWAYNo neutral cutaway in the plan. Nothing to cut to when a take is bad.Source · peekatthis — two neutral cutaways per scene is “your only real insurance” ↗︎
- CUT.AXIS_CROSSEDTwo adjacent setups sit on opposite sides of the line between the actors.Source · Tim J. Smith, The Attentional Theory of Cinematic Continuity ↗︎
- SLUG.STRICT_TIMEA slugline uses DUSK, LATER, CONTINUOUS. Purists say only DAY and NIGHT — disputed, so it can't gate.Source · The Story Department — Script Check: DAY/NIGHT ↗︎
- FRAME.HEADROOMToo much air above the head for the shot size.Source · Mascelli, The Five C’s of Cinematography ↗︎
49 rules. Every one with a source.
Not house style — the craft the industry actually uses, cited. Where the industry disagrees, the rule says so.
463 tests, all run locally.
Most of them lock down a failure I actually hit, and the comment above each one says what the failure looked like.
A Han character is two Latin cells, so push it to 14.4pt and the advance lands on 0.2″.
The em box is width and height. At 12pt a Han character advances 1/6″ — 1.667 cells — and sits on the same 1/6″ line grid as the Latin.
A character's em box is its width and its height.
I assumed a Han character is two Latin cells and pushed it wider. Every Chinese page came out with its lines stacked on top of each other. The fix was a change of unit: inches, not character counts.
What works, and what doesn't yet.
No users, not deployed, and I can name exactly what is missing.
What I'd do next
- 01Deploy itA read-only demo project with a usage cap. ‘You can click into it’ and ‘there are screenshots’ are two different levels of proof.
- 02Chinese past step 4Character cues need a format decision, not a heuristic. I know the fix; I haven't shipped a guess.
- 03The action-scene grammarCoverage rules for dialogue are done. Action scenes need their own — and they are the ones small crews get wrong at 2am.