# 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. - Browser window: (108,9), 1704x1062, rounded 20-pixel clip. Header/chrome ends at y=109; the app body is (108,109), 1704x962. Keep the desktop gradient behind the scene rather than importing the source backdrop. - Sidebar: (108,109), 270x962, with four navigation rows, selected project, three recent rows and ten older rows. Use the supplied original icon SVGs. - Project title: (716,242), 36px Geist weight 650. Folder context is above it. Composer: (696,309), 798x122. Its placeholder never becomes a sent message. - Existing-files card: (696,456), 389x77. Retain the four-file label and three overlapping file icons throughout; the icons represent a stack, not a count. - Instruction card: (1105,456), 389x77. Before saving show Add instructions, contextHint and the edit glyph. At 271 show Instructions and the same instruction value used in the dialog; hide the edit glyph in this specimen. - Summary text uses a 337-pixel one-line box at 12px with a trailing ellipsis. Do not invent a separate shorter summary. Keep the complete string in the content record and truncate only its visual card presentation. `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: - Instructions title at (24,24), 19px weight 650; close glyph near (803,29). - Question at (24,84), 16px weight 600; helper at (24,108), 15px regular. - Textarea at (24,140), 804x252, radius 8. Insets are 14px horizontally and 12px vertically, using 16px text on 24px lines. Use a dark 2px border while focused, changing to a light 1px border at 255. - Cancel at (674,413), 77x40; Save at (768,413), 64x40. Both are rounded. Save is dark before 255 and gray from 255 through 270. The dialog still contains the instruction while it travels outward with the camera. 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). - Scale = 1 + inward × (1−outward). - X translation = (−1790 × inward + 830 × reframe) × (1−outward). - Y translation = (−452 × inward − 132 × reframe) × (1−outward). - Once outward reaches 1, use exactly scale=1 and translation=(0,0). 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.