06Visual ReasoningImplementation

Fitness-Recap Video in Remotion

#ModelScoreStepsIn tokOut tokAvg costAvg time
1GPT-5.6
0.1853
±0.029
1,154465.8M490k$475.9711.3h
2Claude Fable 5.1
0.1685
±0.057
1,128497.1M776k$266.2210.4h
3GLM-5.3
0.1408
±0.046
786339.3M621k$102.3117.6h
4Kimi K3
0.1280
±0.063
1,468638.6M1.1M$215.1219.9h
5DeepSeek V4 Flash Exp
0.0657
±0.058
1,242497.0M722k$8.0817.0h
6Qwen3.8-Max
0.0479
±0.063
796280.1M1.1M$100.4813.3h
7Grok 4.6
0.0264
±0.005
2,615715.1M1.8M$972.2019.9h
8Gemini 3.7 Flash
0.0090
±0.003
28259.1M144k$7.942.6h
9Muse Spark 1.2
0.0040
±0.003
28977.8M451k$33.885.0h
10Inkling
0.0001
±0.000
17012.0M37k$11.510.9h

Background

Parametric video generators (the engines behind year-in-review recaps) turn structured data into minutes of choreographed animation: scene sequencing, spring-based motion curves, particle effects, data-driven layouts, and a soundtrack whose stingers land on visual beats. Reproducing one exactly means recovering not just the look of every scene but the full mapping from input data to timing, layout, and audio mix.

The reference here is a re-themed derivative of a real production recap video, rebuilt around a wellness "year in motion" dataset. It is observable only as a black box: the agent can render it on any input it likes and inspect the resulting frames and audio, but never its source. Every visual is a deterministic function of the input data, so the behavior is fully inferable from probing.

Task

The agent must build a parametric video generator that turns a JSON file (one person's year of fitness data) into a fully animated 1080×1080, 30 fps recap video with a soundtrack, matching the reference generator's output exactly in both video and audio.

  • Probe the reference with reference-generator <input.json> <out_dir>, which writes the video as a PNG frame sequence plus an audio.wav (with --mp4 for a watchable preview and --seconds for a quick trim), on any input the agent constructs.
  • Build a Remotion project at /app/generator (sources in src/) so that ./render.sh <input.json> <out_dir> reproduces the reference's frames and audio from the agent's source alone.
  • Handle the full input space described by samples/schema.json: video length and scene content depend on the data, so the duration logic is part of the task.
  • Compare against the reference with /app/samples/check.sh <sample> [seconds], which renders both sides and reports per-frame and audio differences.

What The Agent Gets

A scaffolded Remotion project at /app/generator with render.sh wired up and the complete static asset pack already in public/ (illustration art, mascot planets, digit sprites, fonts, and the CC0 soundtrack and SFX), plus three example inputs in /app/samples/ and samples/schema.json documenting the input format and its conventions. The runnable-but-not-readable reference generator is on the PATH. The image is built on Node 22 with Remotion 4.0.501 and its renderer preinstalled from a pinned offline dependency store, along with the headless browser runtime it renders through. The machine is offline.

Verification

A clean-room verifier in a separate container removes the reference probe tool, then renders six hidden JSON inputs with the agent's ./render.sh as the non-root agent user (each render capped at 1200 s), kills every agent process, and renders the reference bundle on the same inputs into root-only directories. Per input, the score is 0.85 × visual + 0.15 × audio, and the reward is the mean over the six inputs.

  • Visual closeness is an exponential of per-pixel MSE computed on every reference frame: a pixel-exact render scores 1.0, a near-miss rebuild lands orders of magnitude lower, and a blank render scores ~0. The mean is divided by whichever side rendered more frames, so missing frames count zero and extra frames dilute the score.
  • Audio closeness is an exponential of the reference-normalized waveform MSE times a length ratio: identical audio scores 1, while silence, missing sound effects, or a wrong mix score ~0.
  • Anti-cheat: frames and audio are rejected if they are symlinks or resolve outside the agent's own output directory, the scorer only reads files and never executes agent code, and the reward directory is locked before any agent code runs. A failed reference render marks the trial invalid as an infrastructure fault rather than zeroing the agent.

Environment

Base imagenode:22-bookworm
Tools availableNode.js, Python 3
Compute8 CPUs · 16 GB RAM
Time limit20h

References

  • GitHub Unwrapped (remotion-dev/github-unwrapped) (MIT): The reference generator is a re-themed derivative of this year-in-review video, along with its MIT-licensed illustration assets (cockpit, rockets, planets, UFO, star sprites, gradients, backgrounds). All GitHub semantics were replaced with a wellness theme, all GitHub/Octocat trademarked art was removed and replaced with original AI-generated mascots, and input-hashed randomness was replaced with deterministic formulas so every visual is inferable from the input data.
  • Remotion (Remotion License (source-available)): Remotion 4.0.501 and the @remotion/* packages are consumed as unmodified npm dependencies baked into the image; nothing in the task forks or redistributes modified Remotion source.
  • DSEG14 Classic (by keshikan) (SIL OFL 1.1): Replaces the upstream "Seven Segment" font (free for personal use only); the pre-rendered digit sprites were regenerated from DSEG14 Classic so no Krafti Lab material remains.
  • Mona Sans (GitHub) (SIL OFL 1.1): Typeface shipped in the task's asset pack.
  • Freesound audio (various authors) (CC0): The soundtrack and all sound effects (theme by Sergmusic; whooshes by qubodup; impacts and riser by AudioPapkin and Rizzard; tick by malle99), replacing the upstream's non-redistributable SmartSound-licensed audio entirely.
  • Lucide (ISC): The "dumbbell" workout icon, shipped as an SVG asset and vendored as SVG paths in the reference source.