OpenAI Film Fieldnotes

Candidate construction guide · native Resolve not tested

Reverse selection and attached action: Resolve / Remotion guide

Biggest gap: native Fusion mask-to-glyph and cursor registration is untested. A numerically correct CSV does not establish that the range follows the text.

This guide extends the existing illustrated example, not a new mechanism or accepted render. Original/Adaptation are two Remotion outputs of one recipe.

Source and clock

Introducing ChatGPT Atlas, [1325,1500) at 30/1 fps, 1920×1080: 175 native frames, local0–174. Nominal seconds44.166667…–50 and duration 175/30 seconds are arithmetic from retained metadata, not new timing measurements. The full pinned source object and recipe byte hash are in guide.json.

Use evidence/atlas-reverse-selection-action/review02/comparison.json and the movies under renders/atlas-reverse-selection-action/review02/, relative to the library. There are 165 retained native PNGs per variant, not all175. Look up frameHashes[variant] by localFrame and read its archive member; sparse PNG ordinals are not a frame clock. Existing contact sheets and selected native frames were inspected; actual retained movie hashes/streams were checked. No continuous moving-source review is claimed.

All exact geometry, keyframes, masks, sample/character counts and text metrics here are retained implementation values, not newly measured source settings. Use the revised recipe rather than its old entry summary: local0 is an arrow, local2 an I-beam, and the first selected range starts3, not a preselected entry.

Fusion construction

  1. Set a silent1920×1080,30/1 composition spanning0–174. Place the1144×852 editor at[390,114]. Its artwork must leave the body, selection, pointer and capsule regions clear: those are separate editable layers, not duplicated into a plate.
  2. Follow the root merge order in fusionNodes: editor-shadow, editor, alternating selection-state/anchor paths, four body Text+ lines, drag I-beams, entry arrow, growing handle/glyph, attached capsule, later hand/arrow branches, then disclosure. Keep the editor stationary; do not transform the whole document to imitate the body-ink settle.
  3. Use complete paired Content from adapters/selection.ts. Switch the19 selection masks and19 endpoint paths with start-inclusive/end-exclusive gates. Range construction starts on the lower line at3, reaches the third line16, second18, first22 and completes32. Never interpolate the discrete SVG states into a generic rectangle wipe or fill the blank paragraph gap.
  4. Set the four body lines in bundled Geist28px, weight400, lineHeight1.25, tracking0.15/0/0/0.18. Their individual y tracks rise through22; masks stay fixed. Entry text boxes start414/451/490/566 and settle405/443/482/557. A static8px correction would break held alignment.
  5. Preserve entry arrow0–1, the36 generated I-beam states2–72, handle growth34–52 and original glyph from45. The handle is a rounded-quarter path with a flattened attachment, not an ellipse; it reaches40×40 at[373,362]. Use hand73–145, approach arrow146–154 and submit hand155–174 with their actual path viewBoxes.
  6. Parent the capsule at[445,306] with480×92 extent from90. Merge the shell and its shadow outside capsule-reveal-clip; clip only its contents to the rounded480×92 region. Keep parent opacity1, with independent shell, hint and button fades. One parent fade would incorrectly multiply the child reveals.
  7. Replace the hint at108 with11 prompt characters. Apply all twelve prompt/caret states through22 characters at138. Complete caret is on138–152, off153–161, on162–172, off173–174. The shot ends on selection plus prompt, not an invented response or successful rewrite.
  8. For new copy, generate SelectionDesign through the documented factory and use its returned full Content. Do not hand-edit88 path fields, shrink type, change tracking, reflow the four lines or reposition the capsule to the canvas center.
  9. Keep known source discrepancies visible in review: missing local2 anchor dot, displaced/lighter capsule lower edge/shadow, and missing173→174 button/hand contraction. Stop after174; a repair requires a new reviewed recipe, not an undocumented guide change.

Vector, typography, crop and easing

Use SVG/path import only after testing registration in the installed Resolve version; otherwise rebuild editable Bezier/Background branches from the original geometry. No verified automatic SVG-to-Fusion importer or exact node API is provided. Text+ must match the actual bundled-font advances and fixed line boxes; its font size field is not assumed to use CSS pixels directly.

The factory supports full-body backward selection only: anchor after line4, focus before line1. Body character limits are78–79 /84–85 /22 /66–67; width gates are1039–1050 /1050–1066 /264–269 /872–890px. Placeholder is14 characters; prompt is22 characters and260–312px. These are adaptation constraints, not source copy. Alternate wrapping, arbitrary Unicode/RTL, partial ranges and changed fonts are unsupported. The factory pairs glyph-prefix advances with all88 paths but does not prove real OS selection behavior, editor-copy agreement or color contrast.

All coordinates are parent-local top-left pixels. Capsule children must inherit its[445,306] placement once, not twice. If using full-frame branches, compose local transforms before converting points to your Fusion branch's normalized coordinate basis. Keep shell shadow outside the content crop. Match SVG aspect and path viewBox fitting before applying width/height tracks; do not stretch a growing square path in a way that changes its attachment shape.

The left key controls interpolation: hold until the exact next key, linear, or the retained smoothstep function. Selection path changes and cursor mode gates are cuts, not spline morphs. Child clocks do not restart at capsule onset90. There is no camera or general motion-blur treatment here; do not use blur to hide alignment errors. CSS shadow/antialiasing are optical comparison targets, not exact Fusion parameter values.

Checkpoints

Executable references

svgAssets pins each image-layer SVG referenced by defaults or adaptation from the hash-checked accepted asset ZIP; per-SVG verification must compare the whole referenced-asset map against these pins, not merely report current file hashes.

From the shared dual-toolkit root, set FIELDNOTES_PROJECT to a prepared project with these original SVGs, not a recipe-only projection:

python3 handoff.py verify --guide guides/interface/atlas-reverse-selection-action/guide.json --project "$FIELDNOTES_PROJECT"
python3 handoff.py frames --guide guides/interface/atlas-reverse-selection-action/guide.json --project "$FIELDNOTES_PROJECT" > atlas-reverse-selection-action-controls.csv

This exports local numeric controls with ancestor activity, not selection paths, world coordinates, shaped text, decoded PTS or a native Resolve render. Read the ordered nodes and content-slot/JSON-pointer mappings alongside discreteEvents.

In an already provisioned writable toolkit project, these are the archived factory/render forms for later authorized use. Parent directories must exist; all outputs must be new. Print the design, edit high-level fields, then generate:

npm --silent run catalog -- show atlas-reverse-selection-action --contract
mkdir -p inputs/selection-example
node --experimental-strip-types adapters/selection.ts --print-example default > inputs/selection-example/design.json
node --experimental-strip-types adapters/selection.ts --input inputs/selection-example/design.json --out inputs/selection-example/content.json
npm run render -- --recipe atlas-reverse-selection-action --content inputs/selection-example/content.json --out out/selection-custom-v01.mp4
npm run verify -- --out out/selection-custom-v01.mp4

The option is --input, not --design. The high-level design is not renderer Content. Keep content.builder.json as well as the separate output manifest. For retained examples use --variant default or --variant adaptation instead of --content; these modes are exclusive. guide.json contains both commands.

The factory requires Node22.18+, installed pinned dependencies, bundled Geist and local Chromium. Render also requires FFmpeg/FFprobe. Actual archived parser, HELP and documentation were read; render/catalog/verify help ran. Factory help failed on missing @remotion/renderer in the source-only projection, before execution; no dependencies were installed/copied and no generation/render ran. Original editor SVGs remain in the asset archive; the projection itself lacks public assets. This is not a tested portable installation or accepted render.

Source versus adaptation and remaining limits