OpenAI Film Fieldnotes

Candidate construction guide · native Resolve not tested

Historical builder snapshot: 2026-09-15. Earlier README and handoff statements about being unrendered or unpublished describe that authoring stage. The current selected report verifies both content exports at 2026-09-15T01:53:06.347148+00:00; those earlier statements do not describe their current availability. Native Resolve execution and source-quality approval remain unverified.

Current selected render verification · Batch export report

Image Cutout Parade

Original editable reference-study kit. Unrendered, not quality-approved. This is one of four source/novelty-eligible queue-wave04 relationships; this lane supplies two kits. Two content sets are one example. No accepted count, moving-source win, native Resolve result, or live Poe feature is implied.

Files and installation

Required portable files are guide.json, README.md, handoff.py, controls.csv, overlay-manifest.json, core-publication-v08.zip, and active-assets.zip. The independent verifier is test_kit.py. This kit also includes recipe.json, source-packet.json, source-clock.json, inspection.json, allocation-provenance.json, and core-members.json. Editable SVGs are inside active-assets.zip and install under project/public/art/image-cutout-parade/; an authoring-only assets/ directory is optional. There are no private runtime prerequisites. Keep the top-level documents when packaging.

The accepted core is pinned to SHA-256 307fb6b927e35e6d73779652873d994f5c3e36cb7deba65f22fa64748057a0de. Use only that core. Do not restore deleted repository runtime trees. The overlay adds only project/recipes/image-cutout-parade.json and project/public/art/image-cutout-parade/*.svg; every regular member is pinned in overlay-manifest.json.

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 > actual-controls.csv
cmp controls.csv actual-controls.csv
python3 test_kit.py --project project --scratch .

Python 3.11+ and Node 22.18+ are required for those checks. The tests run archived validation/preparation helpers, not rendering. controls.csv is byte-exact UTF-8 ASCII-compatible CRLF, including its final line terminator. Preserve raw subprocess stdout; do not use universal-newline conversion or spreadsheet re-export. Its numeric values and decimal seconds are implementation controls, not source PTS or measured source motion.

Source clock and inspection

Retained source frames are [360, 480), at 30/1, giving 120 local frames and 4 seconds. Local zero maps to source frame 360. Start-inclusive/end-exclusive bounds, the retained average-like study rate, all rounded retained PTS, and their limitations are copied unchanged into source-clock.json and the source-only packet. The source master SHA is inherited, not freshly rehashed. The available excerpt is 960×540; the retained master header says 1920×1080. The original master is unavailable.

inspection.json binds the source-first frozen observations and decode receipt. All 120 excerpt frames were displayed as 320×180 static thumbnails. One native-resolution excerpt still was individually inspected (75). Decoding every excerpt frame is not watching the original at native resolution or continuous speed. No moving playback, audio, full-film review or fresh integer source PTS is credited. Local visibility changes informed the authoring breakpoints; geometry, curves, tile routes and pose handling remain implementation choices.

allocation-provenance.json binds the parent allocation, critic decisions, allocation-time r09 publication and separate r09 delta audit. R10 was published while this builder was working on September 15, 2026; exact r09 archived bytes are used for the unchanged allocation pins, and the observed r10 state is recorded separately. This builder does not extend the r09 delta audit to r10 or grant new eligibility. The frozen queue's old r08 PUBLICATION pin remains failed. The additive receipt does not waive or repair that test. Kit tests passing do not relabel upstream frozen checks as green.

Native-frame choreography

Local interval, half-open Action
0–15 Bounded original illustrated portrait.
15–29 Isolated side pose, with the rectangle absent.
29–44 Second distinct pose joins the cohort.
44–58 Third pose; the cohort shifts left.
58–72 Frontal pose joins; older poses leave the view.
72–87 Selected isolated subject overlaps a second bounded portrait.
87–101 One bounded joint scene replaces the overlap.
101–120 Additional joint-scene variants form a lateral strip. End mid-strip, as bounded by the source window.

Resolve construction

Create one 1920×1080 Fusion composition on V1, at exactly 30 fps, duration 120 frames. Display timeline origin 01:00:00:00 is optional; it is not source time. No audio, retime, dissolve, extra handles, or added final hold. This is a construction guide, not an importable .setting file or a tested native Resolve project.

Each table entry maps to Source_<layerId> → Transform_<layerId> → Merge_<layerId>. A rect uses a colored Background through a Rectangle mask; recreate corner radii numerically. A text layer uses Text+ with the accepted core's public/fonts/Geist.ttf; use its literal slot value, font size, weight and line-height in guide.json. Do not shrink long text. An image uses the editable SVG subtree described next, not a PNG/video Loader. For a group, build and merge its children in listed order, then transform the combined group exactly once. Later siblings are above earlier siblings. Gate each node by both its own and all ancestor half-open ranges. Merge the final canvas stack into MediaOut1.

Layer / node suffix Parent Construction kind Local active interval
paper canvas rect 0–120
bounded-portrait canvas image 0–15
pose-cohort canvas group 15–72
isolated-pose-0 pose-cohort image 15–72
isolated-pose-1 pose-cohort image 29–72
isolated-pose-2 pose-cohort image 44–72
isolated-pose-3 pose-cohort image 58–72
second-bounded-context canvas image 72–87
selected-isolated-subject canvas image 72–87
joined-photo-strip canvas group 87–120
joined-scene-0 joined-photo-strip image 87–120
joined-scene-1 joined-photo-strip image 101–120
joined-scene-2 joined-photo-strip image 116–120

guide.json.resolveNodes carries all source/transform/merge names, child order, origin, paint, text and numeric tracks. tracks gives raw keyframes. controls.csv gives every explicit property on every local frame, including inactive rows. active=0 means skip that layer, not show it at zero opacity by accident. Every track uses the global local frame, not time since that node's start.

For coordinates in a parent of W×H pixels, the recipe rule is p_parent=(x,y)+origin+R_clockwise(rotation)*diag(scale*scaleX,scale*scaleY)*(p_local-origin). Map final parent pixels to Fusion (x/W,1-y/H). Width/height define the local domain and are not extra translation. A nested composition keeps its own domain before its group transform; do not normalize all children directly against 1920×1080. For retained-collection, assemble its 1200×2000 local domain, retain pixels outside it unless clipped by the final canvas, then apply its scale and translation once. For the pose cohort and joined strip, preserve negative/off-domain positions until the final canvas crop. No group in this recipe adds a local clip.

Left-key interpolation is exact: hold keeps the left value until the right key, linear uses u, smooth uses u*u*(3-2*u). Never use Auto or substitute a spring. For unambiguous reproduction, bake implementationValue at every integer frame and use linear interpolation between those baked samples. Calibrate Fusion's rotation sign before using any new rotated content. Group opacity is applied after merging children. Use premultiplied transparent Normal Over. The gallery's small outer device shadow is a soft-mask approximation in Resolve; it requires native calibration and is not claimed pixel-equivalent.

Editable SVG subtrees

guide.json.svgConstruction contains the complete parsed element/attribute hierarchy for every shipped SVG, and svgAssets pins its bytes. Preserve each SVG's viewBox domain. Convert rectangles to rectangle masks over Background nodes, circles to ellipse masks, and paths to closed filled Bezier/Polygon masks (open stroked paths to Paint strokes). Keep SVG node order, per-node opacity, stroke widths, joins and transforms. A path's Q quadratic segment from P0 via Q to P1 converts to cubic controls P0+2/3*(Q-P0) and P1+2/3*(Q-P1); preserve cubic C controls directly. Expand shorthand H/V/T coordinates before entering points. Apply SVG translate/scale groups locally before the outer recipe transform. No opaque prerender or automatic image segmentation is needed. SVG title nodes are metadata, not on-screen type.

Illustrations deliberately stand in for photographic material. Do not pretend a vector mask reconstructs the source's people, skin, lens, lighting or generative process. These native Resolve nodes, text metrics, strokes, alpha and shadow have not been run in Resolve; parent/native review must calibrate them and retain any differences.

Adaptation and custom content

Default depicts an original illustrated researcher in a blue jacket and ochre trousers, with a green-jacket partner in a windowed workshop. Adaptation depicts an original maker in an ochre apron and violet scarf, with a teal-clad partner in a warmer studio. Update all four 300×600 pose assets, the 540×800 initial portrait, the 900×600 partner portrait and all three 900×600 joint scenes together. Keep the same subject recognizable by face, clothing and proportions. Isolated SVGs have transparent backgrounds. Bounded contexts must have an opaque rectangular scene. The partner appears in the second context and the joined scenes. Do not replace these drawings with the source people or portraits; do not claim a segmentation or generated-pose feature.

Create a complete custom content map from installed defaults; a patch object is not accepted. From the extracted project:

cd project
node --input-type=module -e "import {readFileSync,mkdirSync,writeFileSync} from 'node:fs'; const recipe=JSON.parse(readFileSync('recipes/image-cutout-parade.json','utf8')); mkdirSync('inputs',{recursive:true}); writeFileSync('inputs/image-cutout-parade-custom.json',JSON.stringify(recipe.defaults,null,2)+'\n',{flag:'wx'});"

Edit documented slots in that JSON. Set accurate local SVG path, dimensions and rights. Keep its location inside project/inputs/. Missing/extra fields, remote/escaping paths, unsupported aspect ratios, blank rights and non-SVG imagery fail. Built-in default/adaptation change content without changing timing. SVG authorship is declared and structurally inspected, not a legal-rights certification. Custom semantic identity is the editor's responsibility; a mechanical content validator cannot recognize subjects.

Parent rendering and assembly

No render or encode was run in this builder lane. The parent owns the one encoder, combined runtime and any acceptance/publication/count changes. For a combined project, extract the accepted core once and apply both disjoint active-assets overlays. Never overwrite a changed shared engine with an unpinned runtime. Run each kit's own verifier against that combined project before rendering. The parent can install the core's locked dependencies and run its unchanged documented CLI:

cd project
npm ci
node --experimental-strip-types scripts/catalog.mjs show image-cutout-parade --contract
node --experimental-strip-types scripts/render.mjs --recipe image-cutout-parade --variant default --out out/image-cutout-parade-default.mp4
node --experimental-strip-types scripts/render.mjs --recipe image-cutout-parade --variant adaptation --out out/image-cutout-parade-adaptation.mp4
node --experimental-strip-types scripts/render.mjs --recipe image-cutout-parade --content inputs/image-cutout-parade-custom.json --out out/image-cutout-parade-custom.mp4
node --experimental-strip-types scripts/verify.mjs out/image-cutout-parade-default.mp4
node --experimental-strip-types scripts/verify.mjs out/image-cutout-parade-adaptation.mp4
node --experimental-strip-types scripts/verify.mjs out/image-cutout-parade-custom.mp4

Those are parent instructions, not builder-executed commands. Compare native 30/1 outputs with the pinned source excerpt at local zero; preserve silence and each video/manifest pair. Inspect all joins, subject continuity, crop, holds and text at normal speed. Verify the browser's actual full-string FontGate before crediting text fit. Do not infer a quality win from preflight or encoding. Source quality, native Resolve execution and moving comparison remain separate gates.

Biggest remaining gap

Original vector characters preserve the isolation/cohort/joint-scene relationship but do not reproduce photographic people, expressive pose detail, lighting or the source's recombination finish. Hard pose cuts are an authored choice, not an observed segmentation or morph technique. Moving comparison is still required.

No talking-head recording is paired here. These are library reference studies, not an approved presentation or live feature demonstration.