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.
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
- Active archive SHA-256:
aa6ce30ea8b372fecd0a4db4058722203799e80533ba537bb681f9937cf5b8c8 - Accepted core SHA-256:
307fb6b927e35e6d73779652873d994f5c3e36cb7deba65f22fa64748057a0de - Recipe SHA-256:
452ca91ed7e09ae6e11a367040f876796bf4d4c9fdbab27b5da41d1bbd18203b - Queue unit SHA-256:
25800cad462c2b533e393c811fa6f313ab2667f53329e1c4245e2bd9fbee9467 overlay-manifest.jsonis the complete runtime whitelist with sizes and per-file hashes. Both content variants are embedded in the one selected recipe.
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
- Two-line title holds over a changing blue/lilac soft-material close-up, with darker display-like texture before cut30 to two application windows. This source material is not a flat solid hold. Local indices: 0,21,22,29,30.
- Screen close-up rapidly pulls back through blurred travel to a physical laptop on a wooden table with glass, notebook and plants. Real display texture, material and environmental perspective remain visible; the settled portion still has small movement. Local indices: 30,35,36,42,43,48,57.
- Camera descends toward keyboard; hands enter near68 and type through the close keyboard view. It returns toward screen89..100. This is a continuous physical viewpoint change, not a planar UI zoom. Local indices: 58,68,72,88,89,100.
- Left window briefly whites out101..102, then a small copy of its content travels/shrinks toward the right composer. An attachment tile is settled by107 and held while the camera approaches. Local indices: 101,102,103,105,106,107,119.
- Typing begins under the attachment and is still an incomplete prefix at143, mid-word, during continuing approach. No submission or result occurs in this selected source window. Local indices: 120,132,143.
Adaptation differences
- Enter the original two-line title over shifting vector folds. Cut30 to the screen; independent projected screen/keyboard planes and room transform approximate the physical context only.
- End at143 during the final approach and after13 characters of an incomplete request, without send/result or a completed camera settle. The off-window148 transform endpoint defines the slope only, not extra output frames.
- Default content is a Garden seed-exchange bulletin; adaptation is a Studio small-edition workshop circular. Their original poster geometry follows the left document into the right attachment; both preserve one continuous context.
- The engine uses independent flattened2D children projected with perspective(), rotateX and rotateY. This is NOT a recovered camera, coherent3D mesh, optical motion blur or literal physical-screen bridge. Room/device parallax, hinge alignment, hand anatomy, materiality and reflections remain limited and independently reviewable.
- Hands are original vector silhouettes with small press translations and held key highlights, not filmed or biomechanically solved fingers. Source exposure blur is omitted rather than simulated by an unrelated CSS blur.
- All positions, easing and vector material choices are authored approximations, not official measured controls. Source observations and nominal/source PTS authorities remain separate.
- One treatment with two content variants. No source images, logos, brand data, audio or photographic claims.
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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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/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.
- 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.
- Source quality unresolved. No moving, blind-win, native Resolve execution or application-equivalence claim.
- No renderer, encoder, npm install, dependency copy, source-master download or deployment by this builder. Parent work is separate.
- All native indices were statically inspected; fitted sheets are not moving review. Raw integer master PTS are unavailable; rounded absolute source samples and decoded excerpt clocks are separate.
- Public files work from the kit download. Private inspection/generator files are not run prerequisites.
- Text length caps are not guaranteed glyph-width bounds; actual full-string font gate must pass without shrink.
- One treatment and two original content variants, not multiple examples.