OpenAI Film Fieldnotes

Candidate construction guide · native Resolve not tested

Historical builder snapshot: 2026-09-14. 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-15T00:24:06.540448+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

Projected-vector screen, keyboard excursion and attachment return

Concrete source-bound vector adaptation. Authoring-time mechanical checks only; no source-quality approval. Parent renders and independent review are separate.

Download and run

Requires Python 3.11+ (handoff uses hashlib.file_digest), Node.js22.18+, npm, unzip and cmp. Movie verification additionally needs FFmpeg/ffprobe. Native Resolve/Fusion must be checked in your installed edition; no native application run is claimed.

Run from the extracted kit root. Required files: guide.json, README.md, handoff.py, controls.csv, overlay-manifest.json, core-publication-v08.zip, active-assets.zip. Optional self-contained test: test_kit.py. No private worker, prepared project, generator, inspection image, sidecar or external helper documentation is required.

Install the accepted core first, then the selected active override. Never substitute legacy assets-001.zip; that historical archive can contain raster media. Start with no project/ directory:

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
cmp controls.csv controls-regenerated.csv
cd project
npm ci

npm ci and movie rendering are reader/parent steps. This builder ran neither. The font and license arrive in the core. From project/:

node --experimental-strip-types scripts/catalog.mjs show physical-screen-bridge --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 physical-screen-bridge --variant default --out out/physical-screen-bridge-default.mp4
node --experimental-strip-types scripts/render.mjs --recipe physical-screen-bridge --variant adaptation --out out/physical-screen-bridge-adaptation.mp4
node --experimental-strip-types scripts/verify.mjs out/physical-screen-bridge-default.mp4
node --experimental-strip-types scripts/verify.mjs out/physical-screen-bridge-adaptation.mp4

For custom content, first create the complete editable file from this selected recipe, then edit only its values (including accurate SVG dimensions and rights):

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

Edit project/inputs/physical-screen-bridge-custom.json from the kit root. Keep field caps and fixed geometry; run the actual font gate when rendering. From project/:

node --experimental-strip-types scripts/render.mjs --recipe physical-screen-bridge --content inputs/physical-screen-bridge-custom.json --out out/physical-screen-bridge-custom.mp4
node --experimental-strip-types scripts/verify.mjs out/physical-screen-bridge-custom.mp4

Do not combine --variant with --content. This archive uses --out, not --output; no --fps or --duration override belongs to this treatment. From the kit root, the optional tests need only the extracted project and downloaded handoff:

python3 test_kit.py --project project

Tests are source/preflight checks, not render or native Resolve approval. controls-regenerated.csv is a generated output, not a missing file. Capture handoff stdout as raw bytes; its CSV uses CRLF. Do not normalize line endings: the download test and cmp require byte-for-byte equality, not parsed-field equivalence.

Exact binding

Source and native clock

Official research reference: Introducing Appshots in Codex; source URL https://www.youtube.com/watch?v=QKYbGCvNpFo. Published 2026-05-21. Metadata authority, response hash, retrieval date and inherited master hash are pinned separately in guide.json. Exact half-open source bounds: [48,192); 144 selected frames at 24000/1001. All retained excerpt frames are selected; no trim required. Local f maps to source index start+f. Nominal seconds=(start+f)*denominator/numerator.

Raw integer master PTS/durations were not supplied. Rounded absolute source timestamps are retained separately and cross-checked against every selected rounded relative sample. Nominal frame/rational-FPS seconds are arithmetic labels, not recovered raw master ticks. Do not replace either source sample set with decoded excerpt PTS. Fresh decoded excerpt time base: 1/24000. Every integer PTS and duration, independently retained rounded source-relative time, exact source selection and provenance are in guide.json. Excerpt timing does not prove absolute master PTS.

Every selected native index viewed in a static480x270 cell. Four explicitly listed960x540 stills per piece viewed in detail. Not moving review, a master-resolution pass or an output inspection. No external source window or critic findings supplied these controls. The original source media are research only, never active assets.

Source observations versus choices

Adaptation differences

Editable Remotion construction

Install the selected recipe under project/recipes/. The accepted Treatment framegraph reads groups, text, vector-image slots and native shapes from it. Layer order is back-to-front. Start/end gates use the global local frame, not frame minus layer.start. Edit fields and both embedded content objects; do not alter source bounds or reuse the historical builder timing.

All numeric tracks below are chosen implementation values. Held string prefixes live in the node controls; they do not resize their text boxes. The original SVGs have separate vector elements and local gradients; no image element or linked media is allowed.

Resolve / Fusion manual build

Create1920x1080 at 24000/1001 fps, V1 Fusion composition[0,144), timeline timecode01:00:00:00. No audio. There is no supplied or validated native .setting macro.

Recipe coordinates are top-left pixels, local to parent. For a local domain W,H and pivot ox,oy, place the transform pivot at(ox/W,1-oy/H). Translate by(x/W,-y/H) in that parent domain after local scaling/rotation; use the explicit affine mapping below rather than assuming canvas dimensions for every nested group.

p_parent = (x,y) + origin + R_clockwise(rotation) * diag(scalescaleX,scalescaleY) * (p_local-origin). Merge children before applying this once per group. Convert final top-left pixels to Fusion normalized(x/W,1-y/H). Fusion angle convention must be calibrated against positive clockwise recipe rotation.

For each flattened projected plane, first subtract origin(ox,oy), then apply diag(scalescaleX,scalescaleY,1), clockwise Rz(rotation), Ry(rotationY), Rx(rotationX), in that order. With CSS right/down axes and positive z toward the viewer: Rx maps(y,z) to(cos(a)y-sin(a)z,sin(a)y+cos(a)z); Ry maps(x,z) to(cos(b)x+sin(b)z,-sin(b)x+cos(b)z). Project to(parent x,parent y)=(x+ox+X/(1-Z/d), y+oy+Y/(1-Z/d)), d=perspective pixels. Map all four local corners and use a projective Corner Positioner, not an affine Transform. Convert output points to Fusion normalized(u/W,1-v/H). Nodes without perspective use the ordinary affine rule. Each plane has its own projection; this is not a shared3D camera/scene. The accepted engine flattens children before parent projection.

Left-key smooth=uu(3-2*u), linear=u, hold until next key. Never Auto. All tracks sampled on global recipe-local time.

Normal Over with transparent outside shape; group opacity after child composition; local clip and SVG clipPath before local transform. No image/video Loader or black/Screen workaround.

  1. Create one1920x1080 Fusion composition on V1, starting at local0. Set the exact rational native rate and out-exclusive frame from source/resolveSetup. No audio tracks, transitions, retime or extra handles. Timeline origin01:00:00:00 is a display convention; add composition offsets explicitly.
  2. Start with Background_Canvas. For each group make a transparent RGBA domain of that group width/height; compose children in the listed mergeIndex order with Normal Over. Follow every backgroundInput and output name in fusionNodes. The last ROOT Merge goes to MediaOut1.
  3. All keyframe indices are on the SAME recipe-local clock, including late-starting children. Do not subtract a child start. For every half-open[start,end), gate at start and remove at end; last visible frame=end-1. Sample inactive rows in controls.csv only to inspect values, not visibility.
  4. Set numeric keys from tracks; left-key interpolation controls the interval: hold until next key, linear u, smooth uu(3-2*u). Use expressions or the complete sampled controls.csv; never Fusion Auto splines. Keys after the last selected frame define an unfinished slope, not permission to lengthen the comp.
  5. Rebuild each image slot as native vector geometry from svgConstruction: Background nodes with Rectangle/Ellipse/Polygon masks, matching path control points, fill, stroke width/caps/joins, gradients and opacity. Keep viewBox scale; do not substitute a raster Loader. Asset entries include exact default AND adaptation hashes and XML trees.
  6. Build live labels with bundled Geist in Text+. Use explicit pixel fontSize, weight, lineHeight, fixed width/height and native left/top coordinates. Text+ normalized Size and baseline need installed-font calibration; do not shrink a text box or type size to reveal a prefix. For reveals, key exact StyledText substrings with held interpolation. String limits do not guarantee glyph width.
  7. Keep alpha zero outside each shape. Combine local clipPath/inset/rounded masks before the node transform; apply group opacity only after merging children. An explicit inset is independent of overflow; rounded clipping of descendants needs overflow:hidden. No Screen blend, black key or fake opaque backdrop.
  8. Apply local transforms once per group using the given pivot and parent-domain coordinates. For a domain W,H convert top-left pixel positions to Fusion(x/W,1-y/H); calibrate positive-clockwise rotation against a known corner. An explicit box does not itself clip children when overflow is visible.
  9. Keep the title field on[0,30): original gradient folds shift x=-12→-44 over0..29 at scale1.05 around(960,540). Two separate white Text+ lines hold throughout. Dim with a root fill at22..29, then cut all title layers at30. Vector gradients substitute for photographed soft material; do not label them a material reconstruction.
  10. From30 build THREE independent root planes in merge order: room-plane, keyboard-plane, screen-plane. The room is a2D original SVG; screen and keyboard are independently projected flattened domains. There is no shared parent camera or genuine depth mesh. Screen is1280x800, pivot(640,400), perspective2400; keyboard1360x540, pivot(680,0), perspective2200. Use every literal x/y/scale/rotationX/rotationY key from the tables.
  11. For each flattened projected plane, first subtract origin(ox,oy), then apply diag(scalescaleX,scalescaleY,1), clockwise Rz(rotation), Ry(rotationY), Rx(rotationX), in that order. With CSS right/down axes and positive z toward the viewer: Rx maps(y,z) to(cos(a)y-sin(a)z,sin(a)y+cos(a)z); Ry maps(x,z) to(cos(b)x+sin(b)z,-sin(b)x+cos(b)z). Project to(parent x,parent y)=(x+ox+X/(1-Z/d), y+oy+Y/(1-Z/d)), d=perspective pixels. Map all four local corners and use a projective Corner Positioner, not an affine Transform. Convert output points to Fusion normalized(u/W,1-v/H). Nodes without perspective use the ordinary affine rule. Each plane has its own projection; this is not a shared3D camera/scene. The accepted engine flattens children before parent projection.
  12. For Fusion projected subcomps use sourceDomainPixels: screen[0,0,1280,800], keyboard[-64,-64,1488,920]. Draw children at their logical positions minus domain left/top; the extended keyboard domain retains hands outside the logical540px-high box. Do not crop to the recipe box: overflow is visible. Resize the entire merged domain to1920x1080 with aspect unlocked, then Corner Positioner in that same1920x1080 domain using guide.projectionControls.frames TL,TR,BR,BL destinations. The preparatory stretch is canceled by the projective corner mapping. Preserve all original live Text boxes.
  13. The corner table reproduces the tested Chromium CSS parser binary32 rounding of scale() arguments; numerical tracks themselves retain full precision. DOMMatrix comparison stays within1e-7px, not a visual-quality tolerance. These are authored coordinates, not recovered source camera parameters. Native Resize/Corner Positioner filtering and alpha still require an actual Resolve run. Do not use the2D affine formula for these planes.
  14. Screen-plane: black rounded bezel, camera-dot, then display-mask at(42,50),1196x700 with9px rounded clipping. Inside, left window occupies582x700; right begins x606. Original poster at(111,164),360x420; title and caption remain editable text. Child corners are composed before perspective, so all screen content follows exactly one projection.
  15. Keyboard-plane:1360x540 original SVG keys/trackpad, three translucent key rectangles, then two original hand silhouettes. Hand gates[68,97); left at x295 and right x765, pivots(150,250), rotations-7/+8deg. Enter toward y115/110, small press translations at74/81/85, withdraw by96. Native key gates[72,76),[79,83),[85,89). These are symbolic gestures, not real human articulation.
  16. The screen moves upward off-canvas and keyboard moves toward center58..74. Hold keyboard focus74..88, then return both planes88..100. Room tracks move independently. Source travel blur, parallax and hinge accuracy are NOT recreated; do not add a generic planar zoom and claim the literal camera bridge.
  17. At101..102 place capture-flash over ONLY the left window, white alpha.9. Cut flash at103. attachment-flight reuses the SAME poster slot above both windows: local(x,y,scale)=(111,164,.95) at103 smooth to(656,460,.26) at107. Hold there to144; no branded screenshot, file or raster input.
  18. Start unfinished-input120 in a fixed488x38 text box at(655,597),25px. Character counts120:1,122:2,123:3,126:4,128:5,130:7,132:9,135:10,138:11,141:12,143:13. Full content remains longer than the revealed prefix. Do not complete the last word, add a caret animation, press Send or invent a result.
  19. Screen/keyboard final approach begins120 with transform endpoints148 outside the selected window. Stop at143 while position/scale/tilt still change. Source ends mid-action. No extra fiveframes, retime, optical flow, exposure averaging or hidden tail hold.
  20. Check every checkpoint and its adjacent native indices. Run actual core content/typography preflights and handoff controls. Parent output review and a native Resolve run remain required for visual or application-equivalence claims; this guide has neither.

Complete node hierarchy and track ownership

Each row is one authored layer, with its native subgroup tools. Follow the sibling Merge order and parent IDs; guide.json contains full literal controls, local box, effective gates, mask order, text values and SVG construction trees. Child groups are transparent until their active children contribute alpha. A dormant child never makes a parent visible.

Layer Parent Kind Local gate Native tools
paper ROOT rect [0, 144] Background with Rectangle/Ellipse mask, Inside-border ring if stroke is present, Blur if present, Local Transform, Over Merge
title-material ROOT image [0, 30] Native vector subgroup reconstructed from svgConstruction, Fit Transform, Local Transform, Over Merge
title-first ROOT text [0, 30] Text+ in bundled Geist, Set explicit newline layout, Stepped StyledText or Write On gate when present, Local Transform, Over Merge
title-second ROOT text [0, 30] Text+ in bundled Geist, Set explicit newline layout, Stepped StyledText or Write On gate when present, Local Transform, Over Merge
title-dimming ROOT rect [22, 30] Background with Rectangle/Ellipse mask, Inside-border ring if stroke is present, Blur if present, Local Transform, Over Merge
room-plane ROOT image [30, 144] Native vector subgroup reconstructed from svgConstruction, Fit Transform, Local Transform, Over Merge
keyboard-plane ROOT group [30, 144] Extended native-vector domain from projectionControls.sourceDomainPixels, Ordered child Merges and local alpha, Resize full domain to1920x1080 with aspect unlocked, Projective Corner Positioner from projectionControls, Whole-plane opacity, Over Merge
keyboard-geometry keyboard-plane image [30, 144] Native vector subgroup reconstructed from svgConstruction, Fit Transform, Local Transform, Over Merge
key-press-one keyboard-plane rect [72, 76] Background with Rectangle/Ellipse mask, Inside-border ring if stroke is present, Blur if present, Local Transform, Over Merge
key-press-two keyboard-plane rect [79, 83] Background with Rectangle/Ellipse mask, Inside-border ring if stroke is present, Blur if present, Local Transform, Over Merge
key-press-three keyboard-plane rect [85, 89] Background with Rectangle/Ellipse mask, Inside-border ring if stroke is present, Blur if present, Local Transform, Over Merge
typing-left-hand keyboard-plane image [68, 97] Native vector subgroup reconstructed from svgConstruction, Fit Transform, Local Transform, Over Merge
typing-right-hand keyboard-plane image [68, 97] Native vector subgroup reconstructed from svgConstruction, Fit Transform, Local Transform, Over Merge
screen-plane ROOT group [30, 144] Extended native-vector domain from projectionControls.sourceDomainPixels, Ordered child Merges and local alpha, Resize full domain to1920x1080 with aspect unlocked, Projective Corner Positioner from projectionControls, Whole-plane opacity, Over Merge
screen-bezel screen-plane rect [30, 144] Background with Rectangle/Ellipse mask, Inside-border ring if stroke is present, Blur if present, Local Transform, Over Merge
camera-dot screen-plane ellipse [30, 144] Background with Rectangle/Ellipse mask, Inside-border ring if stroke is present, Blur if present, Local Transform, Over Merge
display-mask screen-plane group [30, 144] Transparent RGBA working domain, Ordered child Merges, Rounded Rectangle/Polygon alpha intersection if required, Transform, Group opacity, Over Merge
screen-paper display-mask rect [30, 144] Background with Rectangle/Ellipse mask, Inside-border ring if stroke is present, Blur if present, Local Transform, Over Merge
left-window display-mask rect [30, 144] Background with Rectangle/Ellipse mask, Inside-border ring if stroke is present, Blur if present, Local Transform, Over Merge
bulletin-title display-mask text [30, 144] Text+ in bundled Geist, Set explicit newline layout, Stepped StyledText or Write On gate when present, Local Transform, Over Merge
poster-heading display-mask text [30, 144] Text+ in bundled Geist, Set explicit newline layout, Stepped StyledText or Write On gate when present, Local Transform, Over Merge
reference-poster display-mask image [30, 144] Native vector subgroup reconstructed from svgConstruction, Fit Transform, Local Transform, Over Merge
poster-footer display-mask text [30, 144] Text+ in bundled Geist, Set explicit newline layout, Stepped StyledText or Write On gate when present, Local Transform, Over Merge
right-window display-mask rect [30, 144] Background with Rectangle/Ellipse mask, Inside-border ring if stroke is present, Blur if present, Local Transform, Over Merge
task-heading display-mask text [30, 144] Text+ in bundled Geist, Set explicit newline layout, Stepped StyledText or Write On gate when present, Local Transform, Over Merge
task-composer display-mask rect [30, 144] Background with Rectangle/Ellipse mask, Inside-border ring if stroke is present, Blur if present, Local Transform, Over Merge
task-hint display-mask text [30, 103] Text+ in bundled Geist, Set explicit newline layout, Stepped StyledText or Write On gate when present, Local Transform, Over Merge
unfinished-input display-mask text [120, 144] Text+ in bundled Geist, Set explicit newline layout, Stepped StyledText or Write On gate when present, Local Transform, Over Merge
capture-flash display-mask rect [101, 103] Background with Rectangle/Ellipse mask, Inside-border ring if stroke is present, Blur if present, Local Transform, Over Merge
attachment-flight display-mask group [103, 144] Transparent RGBA working domain, Ordered child Merges, Rounded Rectangle/Polygon alpha intersection if required, Transform, Group opacity, Over Merge
attached-poster attachment-flight image [103, 144] Native vector subgroup reconstructed from svgConstruction, Fit Transform, Local Transform, Over Merge

Exact numerical controls

For any perspective plane, use guide.json projectionControls: every native-frame TL/TR/BR/BL destination is enumerated in pixels and Fusion normalized coordinates. Perspective is a constant node control, not an omitted animation track. All2D and rotationX/Y tracks remain in controls.csv. Coordinates are local pixels. Keys are frame:value easing; constant values remain held. Whole-group origin and nonnumeric controls are in the adjacent node contract in guide.json. controls.csv enumerates every native value, including inactive rows (see active column).

Layer Property Value / keys
paper x 0
paper y 0
paper width 1920
paper height 1080
title-material x 0:-12 linear; 29:-44 hold
title-material y 0
title-material width 1920
title-material height 1080
title-material scale 1.05
title-first x 175
title-first y 342
title-first width 1650
title-first height 128
title-second x 175
title-second y 478
title-second width 1650
title-second height 140
title-dimming x 0
title-dimming y 0
title-dimming width 1920
title-dimming height 1080
title-dimming opacity 22:0 smooth; 29:0.24 hold
room-plane x 30:-38 smooth; 48:0 hold; 58:0 smooth; 74:-55 hold; 88:-55 smooth; 100:0 hold; 120:0 smooth; 148:-32 hold
room-plane y 30:-5 smooth; 48:0 hold; 58:0 smooth; 74:-55 hold; 88:-55 smooth; 100:0 hold; 120:0 smooth; 148:-15 hold
room-plane width 1920
room-plane height 1080
room-plane scale 30:1.07 smooth; 48:1 hold; 58:1 smooth; 74:1.15 hold; 88:1.15 smooth; 100:1 hold; 120:1 smooth; 148:1.06 hold
keyboard-plane x 30:90 smooth; 48:275 hold; 58:275 smooth; 74:220 hold; 88:220 smooth; 100:275 hold; 120:275 smooth; 148:65 hold
keyboard-plane y 30:1335 smooth; 48:732 hold; 58:732 smooth; 74:212 hold; 88:212 smooth; 100:732 hold; 120:732 smooth; 148:1220 hold
keyboard-plane width 1360
keyboard-plane height 540
keyboard-plane scale 30:1.68 smooth; 48:0.89 hold; 58:0.89 smooth; 74:1.29 hold; 88:1.29 smooth; 100:0.89 hold; 120:0.89 smooth; 148:1.62 hold
keyboard-plane rotationX 30:62 smooth; 48:58 hold; 58:58 smooth; 74:18 hold; 88:18 smooth; 100:58 hold; 120:58 smooth; 148:64 hold
keyboard-plane rotationY 30:-4 smooth; 48:-7 hold; 58:-7 smooth; 74:-2 hold; 88:-2 smooth; 100:-7 hold
keyboard-geometry x 0
keyboard-geometry y 0
keyboard-geometry width 1360
keyboard-geometry height 540
key-press-one x 502
key-press-one y 152
key-press-one width 64
key-press-one height 44
key-press-one opacity 0.62
key-press-one radius 7
key-press-two x 769
key-press-two y 152
key-press-two width 64
key-press-two height 44
key-press-two opacity 0.62
key-press-two radius 7
key-press-three x 592
key-press-three y 211
key-press-three width 64
key-press-three height 44
key-press-three opacity 0.62
key-press-three radius 7
typing-left-hand x 295
typing-left-hand y 68:390 smooth; 72:115 linear; 74:127 linear; 76:114 hold; 83:114 linear; 85:126 linear; 88:115 smooth; 96:360 hold
typing-left-hand width 300
typing-left-hand height 320
typing-left-hand rotation -7
typing-right-hand x 765
typing-right-hand y 68:395 smooth; 73:110 hold; 79:110 linear; 81:124 linear; 83:109 smooth; 89:118 smooth; 96:355 hold
typing-right-hand width 300
typing-right-hand height 320
typing-right-hand rotation 8
screen-plane x 30:242 smooth; 48:280 hold; 58:280 smooth; 74:278 hold; 88:278 smooth; 100:280 hold; 120:280 smooth; 148:160 hold
screen-plane y 30:122 smooth; 48:15 hold; 58:15 smooth; 74:-922 hold; 88:-922 smooth; 100:15 hold; 120:15 smooth; 148:155 hold
screen-plane width 1280
screen-plane height 800
screen-plane scale 30:1.67 smooth; 48:0.89 hold; 58:0.89 smooth; 74:1.29 hold; 88:1.29 smooth; 100:0.89 hold; 120:0.89 smooth; 148:1.62 hold
screen-plane rotationX 30:-2 smooth; 48:-8 hold; 58:-8 smooth; 74:-15 hold; 88:-15 smooth; 100:-8 hold; 120:-8 smooth; 148:-1 hold
screen-plane rotationY 30:-2 smooth; 48:-7 hold; 58:-7 smooth; 74:-2 hold; 88:-2 smooth; 100:-7 hold; 120:-7 smooth; 148:-1 hold
screen-bezel x 0
screen-bezel y 0
screen-bezel width 1280
screen-bezel height 800
screen-bezel radius 34
camera-dot x 635
camera-dot y 18
camera-dot width 10
camera-dot height 10
display-mask x 42
display-mask y 50
display-mask width 1196
display-mask height 700
display-mask radius 9
screen-paper x 0
screen-paper y 0
screen-paper width 1196
screen-paper height 700
left-window x 0
left-window y 0
left-window width 582
left-window height 700
bulletin-title x 26
bulletin-title y 24
bulletin-title width 520
bulletin-title height 45
poster-heading x 65
poster-heading y 106
poster-heading width 490
poster-heading height 40
reference-poster x 111
reference-poster y 164
reference-poster width 360
reference-poster height 420
poster-footer x 40
poster-footer y 620
poster-footer width 510
poster-footer height 38
right-window x 606
right-window y 0
right-window width 590
right-window height 700
task-heading x 632
task-heading y 28
task-heading width 520
task-heading height 44
task-composer x 634
task-composer y 439
task-composer width 532
task-composer height 218
task-composer radius 20
task-hint x 655
task-hint y 579
task-hint width 487
task-hint height 38
unfinished-input x 655
unfinished-input y 597
unfinished-input width 488
unfinished-input height 38
capture-flash x 0
capture-flash y 0
capture-flash width 582
capture-flash height 700
capture-flash opacity 0.9
attachment-flight x 103:111 smooth; 107:656 hold
attachment-flight y 103:164 smooth; 107:460 hold
attachment-flight width 360
attachment-flight height 420
attachment-flight scale 103:0.95 smooth; 107:0.26 hold
attached-poster x 0
attached-poster y 0
attached-poster width 360
attached-poster height 420

Original SVG whitelist and construction

These are the complete default+adaptation active image dependencies. Each SVG is supplied in active-assets.zip at project/public/. Rebuild its independent shape elements from the exact svgConstruction XML tree; use the per-element attributes, transforms, gradient stops and clipPath alpha. No generated source or private script is required.

Active SVG path SHA-256
art/physical-screen-bridge/hand-left-adaptation.svg ce362b81474bed1b73565a56a067f2c33ed2a6bd343b843a521d33b2bcee31ff
art/physical-screen-bridge/hand-left-default.svg 9540ac6ebcf8612ffd88605a4f6d50c7f000057963ae157995c35e1a363fa4fd
art/physical-screen-bridge/hand-right-adaptation.svg 95a4d16a451ecf265982a01bf0bdc347cbbdb5ea544a6b0109ade27260ee4459
art/physical-screen-bridge/hand-right-default.svg 45c7dc816d246d56b27ab196900e1d62a693e90544e95c5876d44c44ddc306e9
art/physical-screen-bridge/keyboard-adaptation.svg 5692188a0ee2717a805fec8dbdb85e6283ebaf1c9e57fd2d4e6c69b1abfdff17
art/physical-screen-bridge/keyboard-default.svg 6d398b3e7dce69ea6bd980450832e71283a5afda867c9fcf1be1d7875054bf93
art/physical-screen-bridge/poster-adaptation.svg 8b68eb31473a5f28665cd7df360eb343a9f4ac42a7d3e585d135b023c3a49684
art/physical-screen-bridge/poster-default.svg 4613b65cb6d734466941abb749ed6d4779c59016f4265d8c80b0a0712e86871a
art/physical-screen-bridge/room-adaptation.svg 92f41fb9952699b294f022c2dc02dc6ee820beb9fd94fb6615d796ef63f62a63
art/physical-screen-bridge/room-default.svg 4832007a00f27ec8d1fa27901d6948e32830dabdeb72cba16a7a31e00cbf8d15
art/physical-screen-bridge/title-material-adaptation.svg ef56b0a354d60635829983c5fd240e5878a7897d932ee59b84c0020f3e031e20
art/physical-screen-bridge/title-material-default.svg b8c1cc3be25774567643b21a20849fd2ec7662d57c45dab1a366420fb797d4a9

Checkpoints and regression limits

Local Source Required condition
0 48 Original two-line title and vector folds, not source material.
21 69 Title still held while field shifts.
22 70 Dimming begins.
29 77 Last title frame.
30 78 Hard cut to projected two-window screen close-up.
48 96 Projected screen and keyboard have pulled back; vector room visible.
58 106 Keyboard excursion begins after the context hold.
68 116 Symbolic hands start entering.
72 120 First symbolic press highlight; independently projected keyboard prominent.
74 122 Keyboard-focused plane transforms reached.
79 127 Second press gate begins.
85 133 Third press gate begins.
88 136 Last keyboard-focused hold before return.
96 144 Hands are nearly withdrawn.
97 145 Hands absent.
100 148 Screen context return reached.
101 149 Left window whites over.
102 150 Second flash frame; no attachment yet.
103 151 Flash ends; original poster copy begins travel/shrink toward right composer.
106 154 Attachment still traveling.
107 155 Attachment lands and remains; input absent.
119 167 Last attachment-only hold.
120 168 Final approach starts with first typed character.
132 180 Nine characters visible.
143 191 Thirteen-character partial request; approach still incomplete. No send/result.

The tests verify installed core/recipe/artifact pins, exact flat ZIP whitelist, active SVG closure, node ownership, every numerical control and CSV row, real archived CLI options and default/adaptation/custom prepareInput bindings. The frozen font receipt checks actual full-text widths; parent renders still need their normal font gate. No passing scalar test establishes visual fidelity.

Largest remaining gap: Literal source camera motion, perspective/parallax, optical blur, reflective display, soft material, laptop surfaces and human typing are not recovered. This kit uses independent projected SVG planes and symbolic vector hands; it is an explicitly limited 2.5D editorial substitute, not the source camera bridge.