OpenAI Film Fieldnotes

Download complete editable project · Read review limits

Save an instruction and restore its project context

One draft treatment with two original content variants. Remotion exports are real renders; these Resolve/Fusion steps are a manual construction guide, not an imported or executed project. Native Resolve execution and source-quality approval remain unverified. Use the supplied original content and vector art.

Native clock and states

The official film is Creating a contextual workspace in ChatGPT, -ctJEx1n15g, published April 8, 2025. Selection [940,1260) contains 320 frames at exactly 24/1 fps. Local 0 maps to source 940; local 319 maps to source 1259. The end is an editorial hold cutoff, not a source cut.

Set the timeline and Fusion composition to 1920x1080, exactly 24 fps and 320 frames. Do not use 23.976 or 25 fps. The source and silent 960x540 research excerpt use time base 1/12288 with 512 ticks/frame. Our rendered MP4s use 1/15360 with 640 ticks/frame at the same 24 fps. A different integer tick scale does not change cadence. docs/source-timing.json describes the actual source clock; each output manifest/probe describes that movie's clock.

Local frames Visible state
0–30 Project home, four existing files and empty instruction summary
31–50 Authored camera push toward the instruction card
51–61 Close instruction-card hold
62–64 Second reframe begins, still without a dialog
65–86 Dialog and scrim appear while the camera finishes reframing
87–140 Focused empty dialog with two placeholder lines
141–254 Whole instruction appears at once and holds; next-line caret blinks
255–270 Save dims and field loses focus; camera pulls back with dialog present
271–284 Dialog and scrim leave; saved summary appears while camera settles
285–319 Wide saved project; empty composer is focused from authored frame 305

Ranges in the table are inclusive. Keep the dialog through 270 and remove it at 271. Do not animate character typing: native source 1080 has placeholder copy and 1081 has the whole instruction. This visible substitution does not prove whether the user pasted, typed or used another input mechanism.

Build the original workspace

Create one editable 1920x1080 scene plane. All coordinates below are top-left pixels in that plane, before camera transforms. The source's browser/app branding and data are replaced with the fictional Orchard or Northline desk.

inputs/default.json and inputs/adaptation.json provide the original copy. The file and library icons and abstract identity mark are generated from scripts/build-art.py. Three constructions have two palettes: six inventory bindings, not six examples. The rest of the interface is editable text, geometry, masks and code-built glyphs, not a flattened screenshot.

Dialog, focus and save

At local 65 add a scrim over the app body only. It does not dim browser chrome or the desktop. Place the dialog at (534,344), 852x480, radius 15. Parent it to the same scene/camera as the workspace. The scrim and dialog share the exact [65,271) visibility interval; no independent exit fade is added.

Within the dialog, use these child-local positions:

Keep two explicit placeholder lines through 140, then replace them with the complete instruction at 141. Add the next-line caret only after that commit. Its authored blink is visible for the first 14 of each 24 frames after 141, ending before 255. No progressive response, busy spinner or generated output belongs in this treatment. Composer focus from 305 is an authored estimate, not an exact recovered source gate.

Camera and pointer controls

The camera uses a shared local clock, not time since each layer appears. For each smooth track define E(frame,a,b)=1−(1−clamp((frame−a)/(b−a),0,1))³. Let inward=E(frame,31,50), reframe=E(frame,62,86), outward=E(frame,255,284).

This maps a scene point (x,y) to (scale×x+X, scale×y+Y). Apply the transform to workspace, scrim, dialog and pointer together. A convenient Fusion setup uses the full-scene center: (scale×960+X, scale×540+Y), converted to normalized center coordinates, with the same uniform scale. Do not translate in already scaled child coordinates or apply the zoom twice.

For any rectangle (x,y,w,h) in the 1920x1080 plane, its normalized center is ((x+w/2)/1920, 1−(y+h/2)/1080), with normalized size (w/1920,h/1080). Keep child positions relative to their parent before this conversion.

The shipped Gaussian blur is an authored approximation of source exposure, not measured directional motion blur. It is the lesser of 3.6 and (absolute change in X + absolute change in Y + 500×absolute change in scale) divided by 65, comparing each frame with its predecessor. Apply this to the transformed scene; do not claim the blur kernel matches the source film.

Pointer anchors are in pre-camera scene coordinates. Read every interpolated position from docs/controls.csv; the endpoints are (frame,x,y): (0,1350,365), (18,1350,365), (31,1464,518), (80,1464,518), (218,450,770), (229,1334,777), (270,1334,777), (284,1148,432), (304,1184,340), (319,1184,340). Use the same easing function between anchors. Hide it from 80 through 217. Use a hand at 28–79 and 228–270, otherwise an arrow until an I-beam at 305. Pointer path, blink, blur and continuous camera curves remain authored values.

Content contract and verification

Keep the declared string fields and array lengths: four navigation labels, three recent rows, ten older rows and two placeholder lines. One instruction string supplies both dialog and saved summary. Unknown fields and overwide loaded-font text are rejected rather than silently reduced in size.

The main title budget is 780px at 36px; sidebar project title is 214px at 14px; dialog instruction and placeholder lines have 776px at 16px. The instruction must be long enough to exceed the 337px summary at 12px, so its ellipsis remains visible. The complete instruction must still fit one dialog line. Preserve these constraints manually in Resolve instead of changing the scene timing.

Before claiming a Resolve result, open the actual application, check its 24fps timeline and inspect 64/65,140/141,254/255,270/271 and319. Export a silent 320-frame 1920x1080 H.264 MP4, then reprobe frame count, cadence and every PTS. Match the movie to its exact content variant. No native Resolve execution has been performed for this package.

The visible saved card establishes only that displayed state. It does not prove later response behavior, server persistence or current OpenAI/Poe features. Typography, original copy/icons, chrome, sidebar density, camera, blur and cursor differ or remain approximate. Static samples and encoded checks do not constitute independent moving or source-fidelity approval.