QuorX
TC00:00:00:00 Open

QuorX · Research · 20 October 2026

The Director's Harness

Agent-made video looks directed when film craft and the harness work together. The craft decides what the viewer feels. The harness plans the whole film before building it, renders the same frames every time, and critiques what it actually rendered.

Plan the whole film first

Someone signs off on the shot list before a frame is built. Chained prompts spread early mistakes.

Same frames every time

Each frame is a function of time, so the preview, the critique and the final render show the same film.

Critique the render

Vision critics review real frames, one topic each. Every candidate is judged against the original brief.

Analysis only. Everything here comes from reading public sources and the QuorX source code. Nothing was tested on video, and no testing has been done to prove how the decision models perform on video questions. Scores, estimates and projections are judgments; the decider numbers come from logs of mostly text benchmark tasks. Questions and corrections are welcome on PR #110, which adds the video skills.

Pre-productionSC 1

Shape the film before building it

Trailers and launch films share one shape: a cold open, an introduction, an escalation, a climax and a closing button. Below is a 30-second plan on that shape. Press play, click the timeline, or pick a shot from the list.

Fig 1.1 · Edit timelineExample plan · 30-second launch film
S5 00:00:11:06
Feature one, close up
Why it matters
Shot
S5 · 0:10.0 to 0:14.0
Act
Act 2 · Escalate
Purpose
Escalate
Framing
Close-up
Move
Push-in
Cut out
Cut on the bar line
Bar line every 2 s (120 BPM) Product on screen Sound effect
Acts follow the trailer structure. The music changes mood at three planned points (flags on A1), cuts land on bar lines, captions are burned in on their own track, and the product is on screen before 0:03.
  • Hook in three seconds. Show the product within 3 seconds and keep launch films to 15–30 seconds. EveryInc
  • One shape. Cold open, introduce, escalate, climax, button. For a product, that is the problem, the product, the payoff and the call to action. Oseman MasterClass
  • Cut to the music. Choose the track first and cut to it. It should change mood at only two or three planned points. Oseman PremiumBeat
  • Storyboard first, code second. Rewriting scenes nobody needed is the costliest mistake, so the shot list is reviewed before any scene is built. EveryInc
  • Real copy only. Use the product's real UI text. Invented labels are the top sign that a video feels fake. EveryInc
  • Hook, build, peak, resolve. Motion-design skills frame short videos the same way, and name over-animation as a common failure. motion-designer
Fig 1.2 · Shot listClick a row to cue the timeline
ShotTimeActPurposeFramingCamera moveCut out
Every shot states its purpose, framing, camera move and the cut out of it. The fields follow the storyboard format of the ai-video-storyboard-skill, which plans 6–18 shots per film.
ProductionSC 2

Keep the viewer oriented

Continuity rules matter whenever a film has real space: live footage, a 3-D scene with a virtual camera, or several generated shots of the same characters. Drag the red camera to see what each rule protects.

Fig 2.1 · Line of action, seen from aboveDrag the red camera or use the slider
Shot 1 · fixedA left · B right
CUT
Shot 2 · yoursA left · B right
  • ✓
  • ✓
  • 180° rule. Keep the camera on one side of the line between the subjects. A cut across it can disorient the viewer, unless that confusion is the point. Adobe
  • 30° rule. Move the camera at least 30° between two shots of the same subject. MIT film lexicon
  • Match on action. Cut in the middle of a movement. The viewer follows the action and misses the edit. MIT film lexicon
  • Decide sides in the shot list, especially for dialogue scenes. FilmSkills
ProductionSC 3

Ease every move, lead with one thing

Motion tells the eye where to look. The rules are small and specific: ease in and out, keep durations short, and stagger elements so one of them leads.

Fig 3.1 · Easing labCurves at slow motion · frame at real speed
ProgressTime
  • Ease-outentering · slows on arrival
  • Ease-inleaving · speeds away
  • Ease-in-outmoving within the frame
  • Linearlooks mechanical
Launch dayTitle card
Enter · ease-out · 300 ms
Entering elements slow down as they arrive, leaving elements speed up, and moves within the frame do both. Switch to Linear to see why constant speed looks mechanical. madegooddesigns
Fig 3.2 · How long a move should take
Most UI transitions sit between 200 and 500 ms and micro-interactions between 150 and 250 ms. Faster gets missed; slower feels sluggish. The red line follows the duration picked in Fig 3.1. madegooddesigns 75secondes
Fig 3.3 · One element leads

All at once

Staggered 110 ms

When five elements arrive together, nothing leads. Staggered, the eye follows the order you chose. Keep one main focus per frame, and offer gentler cross-fades for viewers who reduce motion. madegooddesigns animation-principles
Post-productionSC 4

Cut for emotion first

Walter Murch's Rule of Six ranks what a cut has to get right. When a cut can't satisfy all six, give up items from the bottom of the list first. If the emotion is right, viewers forgive the rest.

Fig 4.1 · Murch's Rule of Six, 100 squaresHover a criterion
  1. 1EmotionIs the cut true to what the audience should feel now?51%
  2. 2StoryDoes it move the story forward?23%
  3. 3RhythmDoes it land at the right moment?10%
  4. 4Eye-traceDoes it follow where the viewer is looking?7%
  5. 52-D planeDoes it keep the flat screen layout, such as screen direction?5%
  6. 63-D spaceDoes it respect the real space of the scene?4%
Keep from the top. Sacrifice from the bottom.
Weights as commonly cited from In the Blink of an Eye: emotion alone outweighs the other five. These percentages are repeated by course pages and blogs; they could not be checked against the book itself. UT Austin No Film School
Post-productionSC 5

Finish for a muted phone

Many viewers meet the film on a phone, sound off, under the platform's own buttons. Finish for that case first.

Fig 5.1 · Loudness targets by sourceLUFS, integrated
Most sources land on −14 LUFS with true peaks near −1 dBTP. For Instagram and TikTok they disagree: one vendor says louder, another says quieter. None of these are official platform specs. Opus video-use
Fig 5.2 · 9:16 safe zone
LAUNCH DAY Burned-in caption here 1 2 3
  • 1Top bar: tabs and search.
  • 2Action rail: likes, comments, share.
  • 3Bottom band: username, post caption, music label.
  • Keep text, faces and calls to action inside the dashed zone.
Zones are approximate; the sources give no exact pixel margins, so check each platform's current guide. Tella Reap
Fig 5.3 · Delivery spec
ItemTargetWhySource
TextReadable at 720pFeeds and previews downscale the masterEveryInc
CaptionsBurned inMany viewers watch with the sound offEveryInc
Landscape master1920×1080 · 30 fps · H.264 CRF 18A clean master for every later cutEveryInc
Vertical cut1080×1920 · 9:16Native vertical gets the most reach on short-form feedsInfluenceFlow
Loudness−14 LUFS · −1 dBTPLouder masters get turned down by the platformOpus video-use
CopyThe product's real UI textInvented labels make a video feel fakeEveryInc
The harnessSC 6

The loop that makes it look directed

The agent systems that turn out well-directed video share one loop. They plan the whole film, lock the style, build from tested recipes, render deterministically, critique the real frames in parallel, and pick the winner against the original brief.

Fig 6.1 · The common loopClick any step

Step 1 of 15

Brief + real assets

Assembled from EveryInc's launch-video skill, OpenMontage, video-shotcraft, HyperFrames, Google's co-director and VISTA. The amber dashed line carries the original brief to the final selection.
Fig 6.2 · Why rendering must seek
The same ten frames with the same uneven render times (grey bars). Animation that reads the wall clock jumps at frame 4 and finishes early, so frames 7–9 repeat. Seeking frame n puts every ball where it belongs, however long the frame took. HyperFrames Remotion
Fig 6.3 · Skills load on demand
HyperFrames' router maps a request to one of its creation workflows, and the workflow loads domain skills only when it needs them. Remotion's /remotion-best-practices plays the same routing role. Which domain skills light up is illustrative. HyperFrames remotion-dev/skills
Fig 6.4 · Harness checklist0 of 12 ticked
HavePracticeWhy it mattersSeen in
Plan the whole film, then buildChained prompts spread early errors and make failures hard to trace.EveryInc OpenMontage Google
Sign-off before costly stepsThe person can redirect before time and money are spent.OpenMontage EveryInc
Deterministic, seekable renderingPreview, critique and final render all see the same frames.HyperFrames Remotion
Router skill, domain skills on demandOnly the rules a task needs sit in context.HyperFrames Remotion
Shot-recipe libraryTested timing, easing and choreography instead of improvised moves.video-shotcraft
Lock style and references earlyCharacters, palette and type stay the same across shots.Google invideo
Lint and check inside the loopCatches animation that can't seek and broken files before review.HyperFrames video-shotcraft
Vision critique with a rubric and a hard limitCatches what text-only checks miss, and the loop always ends.MindStudio
Critics split by topic, on another modelEach critic has one job; a different model avoids shared blind spots.EveryInc VISTA Taskade
Select against the original briefStops local fixes from drifting away from the intent.Google VISTA
Editable output as tracksPeople can adjust shots, captions and sound afterwards.video-shotcraft
Confirm before posting, dry run firstPosting is public and hard to undo.video-shotcraft
Ticks are saved in this browser only.
ResearchSC 7

What the research systems add

Two 2026 systems from Google Research push the loop further. One searches over creative directions; the other runs a tournament between candidates and critiques the winner.

Fig 7.1 · Google's AI video co-directorTwo loops
The inner loop turns one creative configuration into a storyboard, keyframes, clips and audio. The outer loop feeds the judge's score back to a multi-armed bandit that picks the next configuration. CANVAS memory keeps characters and places stable when scenes return. A final global selection re-scores every candidate against the original prompt. Google Research
Fig 7.2 · VISTA's tournament loopCycle 1 · planning
VISTA plans scenes, generates candidates, keeps the winner of a pairwise tournament, critiques it for visual, audio and context fidelity, and rewrites the prompt for the next cycle. This diagram follows the abstract; the full paper could not be opened. VISTA
Fig 7.3 · VISTA's reported results
From the abstract. The line marks 50%, a coin flip.

MVAgent passes typed conditions between agents instead of repeating text, and keeps a continuity memory of how each shot ends. arXiv

MovieAgent plans a movie with multi-agent chain-of-thought before generating. GitHub

The lessons Google draws: treat consistency as its own objective, plan globally, keep explicit world-state memory, critique in words, select against the original intent, and keep safety layers such as watermarking in the stack.

ToolkitsSC 8

What you can install today

Most toolkits are community projects for coding agents. They differ in what they render with and how much of the loop they cover.

Fig 8.1 · Toolkits compared6 of 6 match
ToolkitRenders withPlans firstReview stepLibrarySoundWorth knowing
Remotion skillsofficialRemotion (React)Not statedNot stated12 skills; /remotion-best-practices routes to the restAudio and captions topicsnpx skills add remotion-dev/skills
HyperFramesHeyGenHTML in headless Chrome + FFmpegBeat planning skill, no gatelint, check, snapshot, keyframe diagnostics21 skills behind a router, plus a block registryMixing with voice-over duckingApache 2.0; seeks every frame; no build step
video-shotcraftcommunityRemotionStoryboard stepFrame checks with ffprobe, aesthetic rules124 shot recipe cards in 10 categoriesBeat sync, 149 SFXWorkbench edits shots, captions and SFX as tracks
product-launch-videoEveryIncRemotion scaffoldShot-list table first4 parallel critics: design, readability, pacing, brandStarter scaffoldNot stated15–30 s; product by 0:03; 1080p30, CRF 18
OpenMontagecommunityRemotion, Python tools, Piper TTSTreatment before costly stepsNot stated12 pipelines, YAML manifests, hundreds of skill filesText-to-speech voiceAGPL-3.0; counts vary between write-ups
ai-video-storyboard-skillcommunityDoesn't render6–18 shot planPost-production checklistNoneNoneWrites prompts for AI video models
Read from each project's README or docs in October 2026. "Not stated" means the page didn't say. Check each repo before installing.
Fig 8.2 · 318 repos by type
One curated list of video skills for coding agents, by type. Only 10 repos focus on pre-production: scripts and shot analysis. curated list
Fig 8.3 · One brief, four render times

9 of 16
skills tested added sound

From the same list's own test: one brief, one run each. Treat it as a single data point, not a benchmark.
ScorecardSC 9

How QuorX measures up

QuorX is a general build harness, not a video tool. Its loop for apps, sites and games already matches or beats most of these practices. What it lacks is everything specific to video: a frame renderer, a timeline, video craft, and checks on rendered frames.

Fig 9.1 · Scorecard against 13 practicesFrom the QuorX source, October 2026

Status of the 13 practices

    PracticeBest practiceQuorX todayStatusDistance
    Points: ahead or matches = 2, partial = 1, missing = 0. "Ahead" means QuorX enforces or measures the practice beyond what the toolkit READMEs describe. Evidence comes from reading the QuorX source; none of it was benchmarked for video.
    Fig 9.2 · Where QuorX is already ahead
    An enforced plan gate

    Build tools are refused until the person says Go ahead to the plan. The toolkits only ask the agent to storyboard first.

    server/agent.js
    A reviewer that is measured itself

    Every verdict is logged and compared with a judge, and the default reviewer comes from a different model family than most builders.

    logs/reviews.jsonl · scripts/checks.mjs
    Hardened approvals

    The judge sees only the person's own words and facts the harness computed, never the agent's text. It is never the chat's own model, and split votes go to the person.

    server/approvals.js
    A prompt enhancer

    Spells out what a request implies ("a 30-second movie" means voices, music and sound) for the agent and the judges to read.

    server/enhancer.js
    Fixed harness checks

    Decider questions at set moments: before a build, after a screenshot, after a click. The harness writes them, not the building model.

    server/harness-checks.js
    Priced media behind approval

    Paid images, video clips, music and speech each need approval, and the cards show prices measured on earlier runs.

    server/agent.js · server/budget.js
    Fig 9.3 · Closing the gapsEffort and order are estimates

    Nowsmall changes

    A video-direction skill

    Story shape, shot lists, 180° and 30° rules, easing, the Rule of Six and the delivery spec, written from this page.

    Closes: video craft
    Topic critics

    Run the reviewer as three or four parallel critics, each with its own rubric, on decider models.

    Closes: split critics
    Checks on rendered files

    Add ffprobe and a seek test to the write checks, so a broken render fails before review.

    Closes: lint in the loop

    Nextmedium changes

    A shot-recipe library

    Seed it with the trailer's own shot list, one card and one runnable demo per shot.

    Closes: shot library
    Candidates judged against the brief

    Render two or three cuts and pick one by tournament, judged against the enhancer's reading of the person's words.

    Closes: select vs. brief

    Laterlarge changes

    A render tool

    Seek each frame in the headless browser and encode with ffmpeg as a background job, so QuorX can make code-drawn films itself.

    Closes: deterministic render
    Tracks the person can edit

    A timeline manifest and editor for shots, captions and sound effects.

    Closes: editable tracks
    Projected score after each stage, using the same points as Fig 9.1. The loop is already strong, so most of the climb comes from the video stack.
    DecidersSC 10

    Slotting the deciders into the video loop

    QuorX's deciders are fast decision models: typesafe/jev-1.14, liquid/d1-ultra and openai/gpt-6-luna-decisions by default, up to five. They don't write notes. They answer typed questions with probabilities in about half a second each, and QuorX averages their votes. That suits the dozens of small yes-or-no calls a video loop needs, about text or about frames, and leaves the writing of fixes to the builder and the reviewer.

    Fig 10.1 · One question, three decidersExample votes · real formulas and latencies
    noul · yes/noimage

    Builder's guess, committed first
    Average3 of 3 votes
    Confidence0.00
    0.5 lean0.8 settled
    ◐Uncertain

    Each decider gets every question in one request; choice options are shuffled per decider, because some lean toward the first option. Confidence uses the per-type formulas in server/decisions.js: |2P−1| for yes/no, the top share above chance for a choice, and the spread around the top level for a score. Settled at 0.8 or more, lean at 0.5. The bars arrive at each decider's median response time from the maintainer's QuorX run logs.
    Fig 10.2 · Where deciders fit in the loopText and image slots
    in QuorXalready asked todaynew slotwould close a gap from SC 9image judged from framestext judged from words
    1. Brief
      in QuorXtextyes/no
      Gap check, with video fields

      "The message says how long the film is." "…where it will be posted." "…whether it needs a voice." Today's gap check asks what a build leaves out; the prompt enhancer already spells out that a movie implies voices, music and sound.

      Settled no → ask the person one question card before planning.

    2. Shot list
      new slottextyes/no
      Plan sanity before sign-off

      "Every shot states a purpose and the cut out of it." "The product is on screen before 0:03." "Music changes mood at no more than three points."

      Any settled no → the builder fixes the plan before the person sees it.

    3. Style lock
      in QuorXimagechoice
      Read a reference's look

      extract_design already has the vision deciders judge a picture's background, accent, type style, corners and density. The same call can read a mood board or a reference film still.

      Answers become DESIGN.md and tokens.css, which every later check reads.

    4. Frames
      new slotimageyes/no
      Frame checks on the contact sheet

      "The caption in this frame is fully readable at phone size." "Nothing important sits under the right-hand rail." "A is on the left in both frames." One look decider answers (gpt-6-luna-decisions by default) and the others join only when it is unsure.

      A settled no names the frame and the rule, and goes to the builder as a bug.

    5. Critique
      new slotimagescore
      Topic critics as score questions

      One score question per topic (design, readability, pacing, brand), all deciders in parallel on the same sheet. The reviewer model writes fix notes only for the topics that score low.

      Fills "critics split by topic" for about a tenth of a cent a round.

    6. Select
      new slotimagechoice
      Pairwise tournament against the brief

      "Which of these two sheets better fits what the person asked: '…'?" with the person's own words and the enhancer's reading, never the builder's notes. Shuffled options cancel first-position bias.

      Three cuts take two matches; the winner goes to the final render.

    7. Spend + post
      in QuorXtextyes/no
      Approval judge for paid media and posting

      make_video, compose_music and speak already go through it: a quorum of deciders that never includes the chat's own model, seeing only the person's words and the harness's facts.

      Split or unsure → the person decides.

    Leave to measurement what can be measured: loudness, beat sync, durations and frame timing come from ffmpeg and ffprobe, not from a vote.
    Fig 10.3 · Speed per decidermedian ms per vote
    From 531 decider votes in the maintainer's QuorX run logs. A question goes to all deciders at once, so it takes as long as the slowest: about 0.9 s with the defaults.
    Fig 10.4 · Cost per decider$ per 1,000 votes
    A three-decider question costs about $0.0003. A 12-frame contact sheet with three checks per frame is about $0.005 on the look decider alone.
    Fig 10.5 · What 868 logged questions showlogs/decisions.jsonl · mostly benchmark text tasks

    Verdict

      Deciders agreeing with the pick

        Against the builder's committed guess, 72% of questions were ones it already knew: asking was theatre. The 49 changed answers are where the deciders earned their cost. For video that means asking about pixels the builder can't judge well (legibility, safe zones, screen direction), not facts it wrote itself.
        • Guess first, then ask. The builder commits an answer and a confidence, so the log shows which questions changed anything. Fig 10.5
        • Keep the builder's claims out. In QuorX's benchmark, a model's confident misreading pulled the deciders to P=0.77; labelling its notes unverified, with "the user's message wins", brought the same deciders to P=0.04.
        • Shuffle every choice. Already done per decider, and it matters most in a tournament, where position bias would pick the first cut.
        • Don't let a majority of drafts overrule a confident pick. Drafts from one model share their mistakes: the majority was right 1 time in 5 against a confident pick, which was right 3 times in 3.
        • Quorum for money and posting. One model's parse must never stand for the panel; the approval judge already requires a quorum of valid votes.
        • Measure, don't vote. Loudness, beat sync and durations have exact answers; give the deciders only the judgments a person would make by looking.
        Update · 23 OctSC 11

        More than one way to make a video

        A video can be drawn in code, built from still images, made from AI-generated clips, cut from real footage, or a mix. So the single video-direction skill became ten: a hub that picks the route, one skill per route, and shared craft for style, sound and review. They're proposed in PR #110 and still untested on video.

        SkillRoute or craftCovers
        video-directionHubPicks the route; brief, treatment, story, camera and motion rules; delivery
        film-renderCodeA page that draws any moment, frame capture in a headless browser, ffmpeg
        film-from-imagesImagesPhotos or generated stills with camera moves and parallax
        film-from-ai-clipsAI clipsA spend plan, one look line, start images for a consistent cast, choosing takes
        film-from-footageFootageA transcript-led edit, b-roll, word-timed captions, a timeline your editor can open
        motion-graphicsCode5–15 s design-led pieces with checkable signature features
        three-from-imageCode, 3-DProps and characters in three.js code, compared with the reference after every pass
        film-styleCraftReusable looks, proven with a style frame and a short demo
        film-soundCraftAmbience, foley, an original score, voice checked by transcribing it back, a −14 LUFS master
        film-reviewCraftMeasured checks, look checks, an anchored 1–10 rubric, fix rounds
        • Where the ideas came from. Mainly lemo-opuscar and mg-styles-15 (both MIT) and img2threejs (Apache-2.0).
        • Still analysis only. None of the skills has been run on a real video task in QuorX yet. The research discussion in issue #33 is closed now that its findings are written up.

        QuorX newsletter

        Get the next piece of research.

        One email when there's a new QuorX release or research like this. Kept on our own server, never sold, and you can leave anytime.

        What we keep, and how to leave