Candidate construction guide · native Resolve not tested
Traveling image trail: explicit vector-content sidecar
Guide-authoring evidence only: this worker performed mechanical verification, not rendering or moving review. On September 13, 2026, the parent reported all ten outputs rendered. Those outputs have not been independently reverified here. Native Resolve validation and historical source quality remain unresolved; no independent acceptance, win or completion credit.
Binding and inspection
Source: ChatGPT Images, https://www.youtube.com/watch?v=DPBtd57p5Mg; full-master binding 90472999b5af3958b3bfdb05be52223c9a1949f8313d78e6b3237a7a547a3cfd. Source interval [754,906), 152 frames at 30/1 fps, 1920x1080. Full-master bytes were not rehashed here.
Accepted stage-root manifest 35e9bc1d88d480d93914813c0a8a0301444ec6edc177029a722894aea3c997e0. Published member project/recipes/chatgpt-traveling-image-trail.json in downloads/core-publication-v08.zip has SHA-256 382d63c106f7326e67dedeb9f40d365effa523fb18c14b9af3bf7d4fdb524371. Installed active recipe recipes/chatgpt-traveling-image-trail.json has SHA-256 bdfbac6236e6782565fc7b75239fba5e13aad44084085c958ae9c5e467332ccc.
The bound excerpt evidence/chatgpt-traveling-image-trail/review01/source.mp4 has SHA-256 ae2e0900723b620d26808a581b0bdd1b7565fb549bf5152e19ff806e94f5c875. All 152 half-resolution excerpt frames were decoded and viewed as ordered static thumbnails, without frame skipping. 130 selected full-resolution native source members were hash-checked. Native stills actually viewed are enumerated in guide.json; extraction is not viewing. No moving review is claimed.
Largest gap: The source relies on recurring people and a dog across photographic situations. Published orbital JPEGs already miss that continuity; the new architectural vectors preserve only layout and occlusion. At guide authoring no vector render existed. The parent has since reported its renders; source-fidelity acceptance remains unresolved.
Historical report evidence/review-interface-b/retest-review01/chatgpt-traveling-image-trail/review.json is retained with its hash and recipe binding. Its verdict does not approve this guide. Source quality remains unresolved.
Historical evidence paths in this section are provenance records, not files required by the downloadable kit. Source movies, native-frame archives and private diagnostics are not active presentation assets or public run prerequisites.
Download and install
Work in a fresh directory containing the extracted downloadable kit:
guide.json
README.md
handoff.py
controls.csv
core-publication-v08.zip
active-assets.zip
Use Python 3.11+, Node 22.18+, npm and unzip. Rendering also needs FFmpeg/FFprobe and an existing supported Chromium. Set REMOTION_BROWSER_EXECUTABLE to its executable path if it is not discovered automatically; the render command does not download a browser.
Both ZIPs contain paths beginning project/. Unpack the core first, then the assets overlay into the kit root. The overlay deliberately replaces the selected recipe with the hash-pinned active recipe and installs its SVGs. Do not unpack into project/ again, reverse the order, use an existing project, or substitute the older broad asset packs. In the travel kit, reversing the order would restore JPEG defaults.
From the kit root:
set -eu
test ! -e project
python3 -c "import hashlib,pathlib; assert hashlib.sha256(pathlib.Path('core-publication-v08.zip').read_bytes()).hexdigest() == '307fb6b927e35e6d73779652873d994f5c3e36cb7deba65f22fa64748057a0de', 'Core checksum mismatch'"
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
(cd project && npm ci)
handoff.py checks the installed recipe and every active default/adaptation SVG against this guide. Preserve the bundled controls.csv; the new controls-regenerated.csv is a local regeneration for comparison. These rows are local implementation values, not ready-to-import Fusion centers or decoder timestamps.
The asset ZIP supplies all selected recipe media. No private worker, inspection archive, generator, prewritten input JSON, repository checkout or authoring test suite is needed. The archive contains other recipe contracts, but only this selected recipe's active SVG whitelist is included. Do not run the full-library tests as if every other recipe's assets were installed.
Only defaults/adaptation media bindings changed. Original SVG series replaces inadmissible JPEG examples without conversion. Source, fields and all tracks unchanged. Published quality unresolved.
All active image assets are SVG; path/text/shape layers stay code-native. Bundled Geist is a runtime text dependency from the core, not replacement artwork. svgAssets pins every default/adaptation SVG, assetPreparation.variants maps slots, and svgConstruction records internal materials. Historical archive and generator hashes are provenance only. Use the supplied editable SVG paths instead of tracing a preview.
Construction in Remotion and Fusion
Direct Content API, no content builder. The installed recipes/chatgpt-traveling-image-trail.json supplies complete defaults and adaptation objects. The optional custom-content command below creates an input from that installed override; do not use stale core example JSON. Supply the entire Content object, not a partial override. Change only declared fields; retain native recipe tracks and src/Treatment.tsx. TreatmentAtFrame({recipe,content,frame}) uses the local native clock. For integration across clocks, nativeFrame(outputFrame,outputFps,sourceFps) preserves seconds; mixed-cadence editorial use is not native comparison.
- Use 1920x1080, square pixels, 30/1 fps and local frames [0,152), mapped to source [754,906). The 5.066667-second duration is an interval, not the final-frame timestamp. Do not add transitions or retime the 15 arrivals.
- Do not use the core-only recipe defaults: all 34 published default/adaptation image bindings are JPEG. Unpack the download active-assets.zip AFTER the core to install the recipe override and 34 original 1536x1024 SVGs. Source, fields, layers, timings and ID remain structurally identical; only the two Content objects change. This is an explicit non-photographic content departure, not a conversion or fidelity repair.
- Build Background_Canvas white. At local 0 merge entry-underlay at (408,116), 1225x840, then entry-hero at (274,83), 1369x846. Both end exclusively at 1. Their original 3:2 SVGs use centered cover cropping into these different box ratios; do not stretch them.
- At local 1 replace both entry faces with the travelling-occlusion-trail group. Its local domain is 4200x2600, transform origin (0,0), and overflow is visible. Do not set its center to the composition center, add a 3D camera, or crop children to the 1920x1080 field before the parent transform.
- Build output-01 through output-15 as fifteen persistent sibling SVG planes, back-to-front, with image slots photo02 through photo16. Activate them at 1,24,31,39,46,53,61,82,89,96,104,111,118,139,147. Every one ends at 152; earlier cards remain behind later cards.
- Read each child x/y/width/height track and the parent x/y/scale tracks from guide.tracks or handoff frames. For these unrotated origin-zero planes, worldX=parentX+parentScalechildX and worldY=parentY+parentScalechildY; world dimensions multiply by parentScale. Never treat child values as screen coordinates.
- Retain the parent scale jump from 1.196 at local 23 to 1.016 at 24, the later 1.034/1.13 expansions and the 0.846 state at 111. A left key tagged hold changes at the right key exactly; Fusion spline smoothing would erase the cuts.
- At local 118 parent x/y become (0,0), scale becomes 1, and existing children change registration and dimensions on their own tracks. This is an authored coordinate rebase. Applying only the parent reset would cause a visible layout error. Preserve every child rebase, including inactive future planes.
- Keep image alpha opaque inside each SVG face, with rectangular local box masks and no feather, border radius, shadow, rotation or dissolve. Occlusion comes from ordinary ordered over compositing. Internal architectural shapes are editable SVG paths, circles and rectangles, not flattened reference images.
- At 139 parent translation is (-488,81); at 147 it is (-800,-74), scale remains 1. Keep all 15 planes active at the last frame 151. The final five frames [147,152) are a held state; do not delete the tail to create an empty ending.
- Default and adaptation supply ready-to-edit SVGs with different warm/cool architectural palettes and deterministic per-index geometry. Use the files installed by active-assets.zip; no private generator or worker checkout is needed. The generator hash is historical provenance only. The original photographic/recurring-subject semantic contract remains unmet.
- Run the download-root handoff checks, install the pinned runtime in project/ with npm ci, then render both variants with the archived CLI commands below. Inspect every jump at native cadence and review final tail clearance. Historical trail-content remains unaccepted; this repair does not perform a render or moving review.
Local domains, timing and alpha
CSS top-left pixel domains, positive y down. Origin defaults to(0,0), not the center. Size is unscaled. At a 2D layer center: center=(x,y)+origin+Rzdiag(scalescaleX,scalescaleY)((width/2,height/2)-origin). Normalize the resulting center in its parent domain, then invert Y. Compose ancestors; do not apply both a baked world transform and a parent transform.
T(x,y) * T(originX,originY) * Perspective(d) * RotateX * RotateY * RotateZ * ScaleXY * T(-originX,-originY). Apply right-to-left, then homogeneous division. Fusion y-up angle/matrix conversion is an unverified construction target.
Use the left key: linear by default; smooth=uu(3-2*u); hold keeps left value until the exact right key, which returns right value. Clamp before first/after last. Export each native frame; do not use default Bezier smoothing. For frame-zero offset T, place keys at T+localFrame, gates end at T+end-1.
Normal over only unless the SVG explicitly defines a mask. Preserve internal fill/gradient alphas; apply group opacity after local child compositing. Do not preflatten against white. For non-linear color/blur operations unpremultiply only when needed and repremultiply exactly once; verify fringes in-app.
CSS hex and SVG gradient values are implementation RGB values. No recovered film color pipeline or tested Resolve color-management setting. First compare an ungraded sRGB/reference viewer path, then document any transform rather than correcting colors by eye.
Build a Fusion composition with Background_Canvas at the declared dimensions and fps, local0 mapped to its chosen start frame, then the ordered Merge chain and MediaOut1. Each group has a transparent child base. Masks must remain in the correct local domain. A Transform center is not a CSS left/top. For a no-rotation origin-zero box, its scaled center is (x+scaleX*scale*width/2,y+scaleY*scale*height/2) before ancestor transforms. For perspective turns, project the four corners with the declared CSS matrix before mapping to a plane. The coordinate conversion is a construction target, not an application-tested setting.
This is a node-building guide, not an importable .setting or .drp. Do not silently rasterize SVGs if your Resolve installation cannot preserve their masks/filters. Reconstruct their editable local path/material branches and verify them, or report the unsupported conversion.
Full back-to-front hierarchy
| Depth / layer | Kind | Local active interval | Parent | Box / fixed controls |
|---|---|---|---|---|
entry-underlay |
image | [0,1) | canvas |
1225 x 840 |
entry-hero |
image | [0,1) | canvas |
1369 x 846 |
travelling-occlusion-trail |
group | [1,152) | canvas |
4200 x 2600 |
↳ output-01 |
image | [1,152) | travelling-occlusion-trail |
animated x animated |
↳ output-02 |
image | [24,152) | travelling-occlusion-trail |
animated x animated |
↳ output-03 |
image | [31,152) | travelling-occlusion-trail |
animated x animated |
↳ output-04 |
image | [39,152) | travelling-occlusion-trail |
animated x animated |
↳ output-05 |
image | [46,152) | travelling-occlusion-trail |
animated x animated |
↳ output-06 |
image | [53,152) | travelling-occlusion-trail |
animated x animated |
↳ output-07 |
image | [61,152) | travelling-occlusion-trail |
animated x animated |
↳ output-08 |
image | [82,152) | travelling-occlusion-trail |
animated x animated |
↳ output-09 |
image | [89,152) | travelling-occlusion-trail |
animated x animated |
↳ output-10 |
image | [96,152) | travelling-occlusion-trail |
animated x animated |
↳ output-11 |
image | [104,152) | travelling-occlusion-trail |
animated x animated |
↳ output-12 |
image | [111,152) | travelling-occlusion-trail |
animated x animated |
↳ output-13 |
image | [118,152) | travelling-occlusion-trail |
844 x 563 |
↳ output-14 |
image | [139,152) | travelling-occlusion-trail |
938 x 625 |
↳ output-15 |
image | [147,152) | travelling-occlusion-trail |
938 x 625 |
Every node, sibling connection, static control, content slot, ancestor gate and numeric track is in guide.json. tracks[].value is the exact scalar/key list; do not substitute a hand-copied summary table for dense tracks. The shared handoff.py frames CSV is per-frame local implementation data, not ready-to-import Fusion center/angle controls.
Checkpoints
| Local | Source | Check |
|---|---|---|
| 0 | 754 | Only the two inherited entry planes; both remain opaque. |
| 1 | 755 | Entry pair disappears; output-01 becomes the only trail child. |
| 23 | 777 | Last frame before second arrival; parent scale=1.196. |
| 24 | 778 | Second arrival, parent scale=1.016; do not interpolate the cut. |
| 31 | 785 | Third arrival begins while the first two remain active. |
| 61 | 815 | Seventh arrival; maintain the longer 61..81 hold. |
| 82 | 836 | Eighth arrival breaks the hold without removing predecessors. |
| 111 | 865 | Twelfth arrival; parent scale=0.846. |
| 117 | 871 | Last pre-rebase frame. |
| 118 | 872 | Thirteenth arrival and parent/child coordinate rebase together. |
| 138 | 892 | Last frame before the riding-scene position. |
| 139 | 893 | Fourteenth arrival, parent (-488,81). |
| 146 | 900 | Last pre-final arrival state. |
| 147 | 901 | Fifteenth arrival, parent (-800,-74), first final-hold frame. |
| 151 | 905 | All 15 child gates remain on; check visible left/bottom tail and right-side white space. |
Run the downloaded recipe
From the kit root after installation, enter project/ for the archived CLIs. The catalog and help commands were executed against the frozen core during this repair. The render/verify-output commands below are instructions for the downloaded kit, not a claim that new exports were made here.
cd project
node --experimental-strip-types scripts/catalog.mjs show chatgpt-traveling-image-trail --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 chatgpt-traveling-image-trail --variant default --out out/chatgpt-traveling-image-trail-default.mp4
node --experimental-strip-types scripts/render.mjs --recipe chatgpt-traveling-image-trail --variant adaptation --out out/chatgpt-traveling-image-trail-adaptation.mp4
node --experimental-strip-types scripts/verify.mjs out/chatgpt-traveling-image-trail-default.mp4
node --experimental-strip-types scripts/verify.mjs out/chatgpt-traveling-image-trail-adaptation.mp4
cd ..
--variant default and --variant adaptation use the installed recipe's complete Content objects. Dimensions and native cadence come from the recipe; no --fps, --duration, --output or invented Resolve-import flag is needed. Each render refuses an existing output or sibling manifest; use a new output name for a later revision. Preserve each output manifest with its movie. Output verification is a technical/provenance check, not source-fidelity approval.
Optional editable Content
No inputs/ file has to be shipped. From the kit root, create a full custom input from the installed override, not the core's historical examples:
cd project
node --input-type=module -e "import {readFileSync,mkdirSync,writeFileSync} from 'node:fs'; const recipe=JSON.parse(readFileSync('recipes/chatgpt-traveling-image-trail.json','utf8')); mkdirSync('inputs',{recursive:true}); writeFileSync('inputs/chatgpt-traveling-image-trail-custom.json',JSON.stringify(recipe.defaults,null,2)+'\n',{flag:'wx'});"
cd ..
Edit project/inputs/chatgpt-traveling-image-trail-custom.json using the declared field limits. Change recipe.defaults to recipe.adaptation in the creation command to start from variant two. Creation refuses an existing file. Keep media project-contained and preserve the original pinned files; new assets/content are separate reuse inputs, not permission to rebind the baseline guide. Then, from the kit root:
cd project
node --experimental-strip-types scripts/render.mjs --recipe chatgpt-traveling-image-trail --content inputs/chatgpt-traveling-image-trail-custom.json --out out/chatgpt-traveling-image-trail-custom.mp4
node --experimental-strip-types scripts/verify.mjs out/chatgpt-traveling-image-trail-custom.mp4
cd ..
Handoff and historical evidence
The two handoff.py commands in the installation block run from the kit root, not from a repository's guide subdirectory. They need only guide.json, handoff.py and the installed project/. The Resolve construction steps and numerical controls above remain unchanged.
Private authoring tests and source-inspection records are historical evidence only. They are not included in or needed by this downloadable kit. This repair checks the portable command contract, archived CLI parsing and unchanged recipe/SVG pins. The parent assembles the final archive; its extraction, npm ci, new renders and Resolve execution have not been run in this repair. Static sheets remain static inspection, not moving review.
Remaining gates
- The source relies on recurring people and a dog across photographic situations. Published orbital JPEGs already miss that continuity; the new architectural vectors preserve only layout and occlusion. At guide authoring no vector render existed. The parent has since reported its renders; source-fidelity acceptance remains unresolved.
- All historical source quality remains unresolved for this sidecar, including findings marked resolved in older reports. No new review disposition is inherited.
- Every bound 960x540 excerpt frame was statically viewed in320x180 sheets; selected1920x1080 native PNGs were also viewed. Sheets are not moving review. Full source masters were not rehashed or copied.
- Authoring-time scope: this worker performed no Remotion render, encode, Resolve application/import, loaded-browser font fit, deployment, sound assessment, blind comparison or fresh-context review. This does not describe the later parent-rendered outputs; native Resolve remains unvalidated.
- handoff verify binds the recipe/source/SVGs and samples local implementation tracks. It does not validate world-space transforms, optical material response, type shaping, filters, alpha equivalence, pixel fidelity or application support.
- No dependency installation or render was performed during guide authoring or this portability repair. Download users install the pinned runtime with npm ci in project/. This selected-asset kit is not a full-library regression-test environment; unselected recipes can have unavailable assets.
- No automatic aspect/cadence changes, content shrinking, extra holds, counts or production approval. New active footage/raster inputs violate this sidecar contract.
Before accepting either render, check actual motion at native cadence, first/last frames, all listed cut/reveal gates, local masks, alpha over checker/black/white, content fit and comparison to source. Keep original and adaptation separate from attributed source research. Obtain fresh-context critique of the kit and actual Resolve evaluation; no count or quality status changes here.