OpenAI Film Fieldnotes

Candidate construction guide · native Resolve not tested

Prerequisite: Python 3.11+ for handoff.py and kit tests.

Three topic rows build, hold, then release

One editable treatment, two original SVG/code content variants. Authored2026-09-14. Concrete original SVG/code kit. Authoring-time mechanical checks only; parent production and independent source-first review are separate. No source-quality win or native Resolve execution claim.

Download and install

Start from the downloaded kit root. Required files are all of:

Optional: test_kit.py is a self-contained source/preflight test. No authoring generator, private preparation script, worker directory, inspection PNG, source movie, or external helper document is required. The complete manual is this README plus the downloaded guide.json.

Core SHA-256: 307fb6b927e35e6d73779652873d994f5c3e36cb7deba65f22fa64748057a0de. Active overlay SHA-256: c2530f9c3fe2dfa93e052eaa0e4173fd9b42cebd46f2c80b881e42040c13c881.

The active overlay is mandatory. Core alone does not supply this recipe. Use a fresh directory; install core before the selected override. Do not substitute a historical assets-001.zip.

test ! -e project
unzip core-publication-v08.zip
unzip -o active-assets.zip
python3 handoff.py verify --guide guide.json --project project
python3 handoff.py frames --guide guide.json --project project > controls-regenerated.csv
cd project
npm ci

The commands above intentionally verify from the kit root before entering project/. npm ci is a reader/parent action, not an action performed by this source-only builder. Node22.18+ and Python3 are required; follow the accepted lockfile, not an upgraded dependency set.

Remotion: edit and run

The installed recipe is project/recipes/overlay-topic-stack-release.json with SHA-256 672244cd440381e59fb7b4244b01cd54d5009982594bc26d6e6a5b1fefa4c337. It embeds both defaults and adaptation. Edit full content through a new content JSON, not a partial override. The active SVG files stay editable as XML. To alter geometry or choreography, edit a working copy and regenerate its guide/pins before calling it verified.

From project/, inspect the actual contract and CLI, then run the selected variant:

node --experimental-strip-types scripts/catalog.mjs show overlay-topic-stack-release --contract
node --experimental-strip-types scripts/render.mjs --help
node --experimental-strip-types scripts/verify.mjs --help
node --experimental-strip-types scripts/render.mjs --recipe overlay-topic-stack-release --variant default --out out/overlay-topic-stack-release-default.mp4
node --experimental-strip-types scripts/render.mjs --recipe overlay-topic-stack-release --variant adaptation --out out/overlay-topic-stack-release-adaptation.mp4
node --experimental-strip-types scripts/verify.mjs out/overlay-topic-stack-release-default.mp4
node --experimental-strip-types scripts/verify.mjs out/overlay-topic-stack-release-adaptation.mp4

For custom content, create the file from the installed recipe, then edit that complete object. flag:wx deliberately refuses to overwrite an existing custom file:

node --input-type=module -e "import {readFileSync,mkdirSync,writeFileSync} from 'node:fs'; const recipe=JSON.parse(readFileSync('recipes/overlay-topic-stack-release.json','utf8')); mkdirSync('inputs',{recursive:true}); writeFileSync('inputs/overlay-topic-stack-release-custom.json',JSON.stringify(recipe.defaults,null,2)+'\n',{flag:'wx'});"
node --experimental-strip-types scripts/render.mjs --recipe overlay-topic-stack-release --content inputs/overlay-topic-stack-release-custom.json --out out/overlay-topic-stack-release-custom.mp4

Use --out, not --output; do not add --fps, --duration, or hold flags. Do not combine --content with --variant. Existing output paths are not overwritten. The archived script creates a sibling output manifest. Rendering and any resulting output review belong to the parent/reader, not this authoring receipt.

Optional, from the kit root:

python3 test_kit.py --project project

Exact source and clocks

Source: Scheduled Tasks, official source ID urXc4xxixVU. Published 2026-08-28 (timestamp 2026-08-28T13:51:45-07:00); metadata retrieved 2026-09-05T17:14:51+00:00. Full watch URL, official channel and metadata response SHA are pinned in guide.json → queueSelection.sourceMetadata.

Source half-open frames [419,495); target 76 native frames at 24000/1001. Retained excerpt context is [419,495) (76 frames); select excerpt [0,76). First/last selected unrebased excerpt PTS are 0 / 75075 at 1/24000.

Official metadata and master hashes are inherited from the pinned records, not newly fetched. Nominal frame/rate seconds are not recovered absolute master PTS. sourceClock keeps raw source-relative PTS where supplied, actual decoded excerpt clocks, inherited rounded samples, and the nominal composition rational distinct.

The retained excerpt already matches all76 target frames. No index trimming is needed.

Source research media are not active inputs and are not needed to render this kit. Retained context inspection is private evidence. This builder decoded and inspected all retained indices as static cells, with selected full-resolution stills; sheets are not moving review. See inspection.method for the exact viewed indices and resolution.

Original content and limits

Field Kind and limits Default Adaptation
paper color #ffffff #ffffff
ink color #ffffff #ffffff
topicFirst text; 1–8 chars, 1 line Gather Survey
topicSecond text; 1–8 chars, 1 line Shape Trace
topicThird text; 6–8 chars, 1 line Finish Publish
contextArt image art/overlay-topic-stack-release/context-default.svg art/overlay-topic-stack-release/context-adaptation.svg

Active SVG hashes

Installed path under public/ SHA-256
art/overlay-topic-stack-release/context-adaptation.svg 69dedf9ea67241e3caa026f51c7f6bb434d3ee9a495323f575318613d7cb2667
art/overlay-topic-stack-release/context-default.svg f15e1be6d42801acc5cf1a3e520ef279bc81ec4453417e5f6f07bec25eb745e8

The only active imagery is the selected SVG closure. The accepted core also supplies its licensed Geist font. Prior raster-backed partial guides and checkpoint media do not count as this SVG kit.

DaVinci Resolve / Fusion: manual construction

Application-unverified manual. No .drp, .dra, imported Fusion setup or native render is promised. Rebuild the hierarchy with native tools; the recipe and controls are numerical references, not a Resolve import format.

Set the exact clock

Create1920x1080 square-pixel composition,24000/1001 (23.976 label),76frames indexed0..75. Do not use24fps or add transition handles. Whole-source frame is419+f. Source-relative integer clock uses f*1001 ticks at24000; keep the provided actual PTS record separate from nominal calculations.

Build original context on V1

Use canvas-paper, then original-context as ordered Over merges. Reconstruct the selected context SVG from svgConstruction: wall gradient, angled light, dark workbench, tabletop, shelf, frame, contact shadow, and variant-specific objects. Preserve element IDs, exact paths/stops/opacities. Default has ceramic vessels; adaptation has map, roll, ruler and compass. No MediaIn of a source frame, person or laptop.

Make three editable text groups on V2–V4

For each topic-parent use transparent local domain850x170, then Text+ topic-text. Geist650 at136px, line height142.8px, tracking-2px, white, left aligned; row y549/691/833 and settled x116. Full-string850px box is constant. Calibrate Text+ Size/baseline against these pixel values; a Resolve font substitution is not accepted.

Gate and settle independent parents

Rows activate[10,63),[15,66),[20,69). Give each entire parent a held0/1 gate. Do not fade the backdrop or change row positions on release. Animate parent x128→116 over10..16;146→116 over15..22;130→116 over20..29, with left-key smoothstep. These offsets/easing are chosen values, not recovered official settings.

Type only the third row

Rows1/2 start as complete words. For row3 use held StyledText prefixes at20/22/23/24/26/29 with character counts1/2/3/4/5/8, clamped to content length. Do not animate textbox width or use a wipe that reveals half glyphs. Longer allowed words finish their remaining characters at29. This is an explicit content adaptation.

Hold, release, check

Common complete stack29..62. Cut row1 at63, row2 at66, row3 at69; no vertical reflow. V1 continues through75. Compare all checkpoint indices and native CSV values before parent movie review. Do not infer motion quality from this static/source-only inspection.

Coordinate, alpha and spline rules

Complete layer and merge hierarchy

Each row names a local content tree, its parent and its ordered Over connection. guide.json.fusionNodes includes exact tool types, content, alpha, fitting and every static control. Rebuild SVG internals from guide.json.svgConstruction, retaining element IDs; those trees are part of the downloaded guide.

Layer / kind Parent Active [in,out) Foreground → background
canvas-paper / rect canvas [0, 76] Processed_canvas-paper Over Background_Canvas → Merge_canvas-paper
original-context / image canvas [0, 76] Processed_original-context Over Merge_canvas-paper → Merge_original-context
topic-parent-1 / group canvas [10, 63] Processed_topic-parent-1 Over Merge_original-context → Merge_topic-parent-1
topic-text-1 / text topic-parent-1 [10, 63] Processed_topic-text-1 Over Transparent_topic-parent-1 → Merge_topic-text-1
topic-parent-2 / group canvas [15, 66] Processed_topic-parent-2 Over Merge_topic-parent-1 → Merge_topic-parent-2
topic-text-2 / text topic-parent-2 [15, 66] Processed_topic-text-2 Over Transparent_topic-parent-2 → Merge_topic-text-2
topic-parent-3 / group canvas [20, 69] Processed_topic-parent-3 Over Merge_topic-parent-2 → Merge_topic-parent-3
topic-text-3 / text topic-parent-3 [20, 69] Processed_topic-text-3 Over Transparent_topic-parent-3 → Merge_topic-text-3

Final Merge_topic-parent-3 → final viewport Crop → MediaOut1. Activation/reveal are discrete controls listed in the recipe and node tree; the CSV reports every numerical transform/mask sample.

Exact numerical controls

All values below are chosen adaptation controls, not measured OpenAI parameters. Key notation is frame:value easing; the easing belongs to the left key. Values after the final key hold. All times use the same global local frame clock.

Layer Property Constant or native-frame keys
canvas-paper x 0
canvas-paper y 0
canvas-paper width 1920
canvas-paper height 1080
original-context x 0
original-context y 0
original-context width 1920
original-context height 1080
topic-parent-1 x 10:128 smooth; 16:116 hold
topic-parent-1 y 549
topic-parent-1 width 850
topic-parent-1 height 170
topic-text-1 x 0
topic-text-1 y 0
topic-text-1 width 850
topic-text-1 height 170
topic-parent-2 x 15:146 smooth; 22:116 hold
topic-parent-2 y 691
topic-parent-2 width 850
topic-parent-2 height 170
topic-text-2 x 0
topic-text-2 y 0
topic-text-2 width 850
topic-text-2 height 170
topic-parent-3 x 20:130 smooth; 29:116 hold
topic-parent-3 y 833
topic-parent-3 width 850
topic-parent-3 height 170
topic-text-3 x 0
topic-text-3 y 0
topic-text-3 width 850
topic-text-3 height 170

Checkpoints and regression tests

Local / source frame Expected authored state
0 / 419 Original vector context only.
9 / 428 Last clean lead frame.
10 / 429 First whole word appears; parent x128, textbox850.
14 / 433 First word settling; no second row.
15 / 434 Second whole word appears at parent x146.
16 / 435 First parent settled x116.
19 / 438 Third row still absent.
20 / 439 Third row appears with one character; parent x130.
22 / 441 Two third-row characters; second parent settled.
23 / 442 Three third-row characters.
24 / 443 Four third-row characters.
26 / 445 Five third-row characters.
28 / 447 Five-character hold persists.
29 / 448 All content through cap8 visible; third parent settled.
32 / 451 Complete stack, fixed row baselines.
40 / 459 Common reading hold.
48 / 467 All glyphs remain intact; no hidden letter masks.
56 / 475 All rows held; context unchanged.
62 / 481 Last complete stack frame.
63 / 482 Top row absent; lower rows do not reflow.
64 / 483 Only rows2 and3.
65 / 484 Last row2 frame.
66 / 485 Only row3.
68 / 487 Last row3 frame.
69 / 488 All words absent.
75 / 494 Last clean context frame; no extra hold.

handoff.py verify checks pinned recipe/source/assets and native/quarter-frame control agreement. handoff.py frames regenerates the native CSV. Optional test_kit.py checks exact overlay membership, full core file pins, real default/adaptation/custom prepareInput and binding, CLI options, discrete gates, mask ownership, native timing and public download completeness. These are source/preflight checks, not image/motion acceptance.

The loaded-font scalar check uses the actual archived gate and includes full replacement strings even while they are unrevealed. Overlay Text boxes remain850px wide at every frame; parent motion handles settling. The carousel has no text layers, so a no-text font-gate success adds no typography evidence.

Remaining gaps

Parent rendering and a separate source-first/output critique remain necessary. Native Fusion alpha, fonts, masks, blur and timing still require execution in Resolve.