Candidate construction guide · native Resolve not tested
Codex word-tile collage: v08 settling and miniature hierarchy
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: Build and share apps in Codex, https://www.youtube.com/watch?v=5UlRL_ImvQ0; full-master binding 48fdcf37ab3bfa5d990c2bd0b979ae14cf1618e52d73bba14bd1451e4cc43fee. Source interval [140,254), 114 frames at 60/1 fps, 1920x1080. Full-master bytes were not rehashed here.
Accepted stage-root manifest 35e9bc1d88d480d93914813c0a8a0301444ec6edc177029a722894aea3c997e0. Published member project/recipes/codex-word-tiles-collage.json in downloads/core-publication-v08.zip has SHA-256 06fb638accba5b4593d4a59cf14df34512c8c6b781f833efb887b2e664fd55b3. Installed active recipe recipes/codex-word-tiles-collage.json has SHA-256 06fb638accba5b4593d4a59cf14df34512c8c6b781f833efb887b2e664fd55b3.
The bound excerpt evidence/codex-word-tiles-collage/publication-v08/source.mp4 has SHA-256 424d10a56c4ef66151ab1d68935c6b445c71b961a68cc97dfb0627decf70f4ac. All 114 half-resolution excerpt frames were decoded and viewed as ordered static thumbnails, without frame skipping. 114 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 published v08 candidate uses substitute copy, relief geometry and pixel animals. Source-like miniature detail, type metrics and translucent overlap still need fresh moving comparison; a historical no-open-findings report bound to an older recipe cannot accept this kit.
Historical report evidence/review-type-b/retest-review02/codex-word-tiles-collage/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.
No recipe or SVG changes. Codex requires v08 additions; no downgrade to its stale loose recipe.
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/codex-word-tiles-collage.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 the accepted core recipe 06fb638accba5b4593d4a59cf14df34512c8c6b781f833efb887b2e664fd55b3, not the stale loose project recipe 55635995f82b5c0c385d511461643ce1e19bd4a5ac1fa3e86efc952160a69a1d. The download active-assets.zip installs the selected recipe and all ten current SVGs, including the v08 additions. Its historical base/v08 asset-archive references are provenance, not extra download dependencies.
- Create 1920x1080 at 60/1 fps, [0,114), source [140,254). Merge roots exactly: small-background-line, topographic-card, editorial-index, small-original-dial, high-left-word-tile, lower-middle-word-tile, quiet-ring-chart, moving-paper-miniature, right-edge-word-tile.
- Build backing title with Geist 98px, weight600, line-height1.1, center alignment in the 650x123 box at (635,487), active [0,105). It stays stationary even when the lavender tile settles. Use a separate Text+ object, not text baked into a plate.
- Build high-left tile 874x611, [1,92), using its independent x/y/uniform-scale tracks around default origin (0,0). At1 x=111,y=12.69908,scale=0.99886; at91 x=119,y=13.68078,scale=0.97597. Do not turn the sampled settling into a static rectangle or a generic ease.
- Inside purple, build its fill, original-direction-cue and secondary-cue-pulse separately, then first-word. Primary path uses viewBox 0 0 80 135 at (80,403); secondary uses 0 0 98 28 at (183,510), visible only local1 and [33,64). Keep both original path slots editable; do not use the source terminal identity.
- Build lavender tile 668x704 at [31,112) with its own x/y/scale tracks. Its top starts508.5 and settles near492.5; it is not the backing-title y487. Second-word is a 520x285 box at (124,-20), Geist242px/400, line-height1.05. Its stricter advance gate is 432px, not the box width.
- Build blue tile 750x561 at [61,96), starting (1239,372), scale1. It extends beyond the right edge. Third-word sits at (53,-22), 625x285, Geist242px/400, line-height1.05; maximum measured advance600. Keep each word opaque white above its own translucent plate.
- Apply eight-digit fill alpha to the plate only, not to the whole word group. Default alpha is237/255 for purple,217/255 for lavender,230/255 for blue. Parent opacity remains1. Compositing over paper and other plates produces overlap colors; preblending against white removes the visible title/index.
- Build topographic-card [39,114) as a 580x350 domain. poster-stock is behind the separately clipped/panning poster art, then title, menu and six v08 surface annotations. Preserve poster-clip overflow hidden and the authored internal pan; do not bake the complete browser-style illustration into one image or omit the sixth annotation.
- Build the editorial-index [56,114) and the dial [65,114) below all foreground word tiles. Preserve five two-line index rows, vector badges and rotating dial detail. They are original editorial specimens, not evidence of real Poe or Codex product behavior.
- Build quiet-ring-chart [36,114) ABOVE the lavender tile with paper-stock, four arc/value clusters and four 10px callout Text+ labels. Its 900x560 domain begins y790 and remains bottom-clipped by the outer canvas. At113 y797. Do not fit the entire diagram onscreen.
- Build moving-paper-miniature [41,114) ABOVE the chart. Keep 200x150 body and wing SVGs separate. Parent has translation/rotation; wing has origin(95,90), perspective600 and its own rotationX. A flat 2D rotation is not equivalent; use projected-corner/3D-plane construction and verify in Resolve.
- At92 remove only purple, at96 only blue, at105 only backing title, and at112 only lavender. Miniatures continue through113. Copy defaults try/ask/act and adaptation see/use/do from the current recipe, not historical notes that still mention map. map violates the 432px gate; no auto-shrink or silent rewrite.
- Run actual-font fit during rendering. CLI Content preflight is not a font measurement. Compare secondary pulse boundaries1/2/32/33/63/64, late settling91..111 and every miniature at113; report source-style/Resolve gaps without upgrading historical quality.
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 |
|---|---|---|---|---|
small-background-line |
text | [0,105) | canvas |
650 x 123 |
topographic-card |
group | [39,114) | canvas |
580 x 350 |
↳ poster-stock |
rect | [39,114) | topographic-card |
580 x 350 |
↳ poster-clip |
group | [39,114) | topographic-card |
580 x 350 |
↳ ↳ poster-art |
image | [39,114) | poster-clip |
580 x 348 |
↳ poster-label |
text | [39,114) | topographic-card |
95 x 12 |
↳ poster-menu |
text | [39,114) | topographic-card |
240 x 12 |
↳ poster-site-0 |
text | [39,114) | topographic-card |
90 x 28 |
↳ poster-site-1 |
text | [39,114) | topographic-card |
90 x 28 |
↳ poster-site-2 |
text | [39,114) | topographic-card |
90 x 28 |
↳ poster-site-3 |
text | [39,114) | topographic-card |
90 x 28 |
↳ poster-site-4 |
text | [39,114) | topographic-card |
90 x 28 |
↳ poster-site-5-v06 |
text | [39,114) | topographic-card |
80 x 28 |
editorial-index |
group | [56,114) | canvas |
400 x 458 |
↳ index-stock |
rect | [56,114) | editorial-index |
400 x 458 |
↳ index-active-band |
rect | [56,114) | editorial-index |
368 x 66 |
↳ index-pictograms |
image | [56,114) | editorial-index |
400 x 458 |
↳ index-title |
text | [56,114) | editorial-index |
307 x 19 |
↳ index-row-0 |
text | [56,114) | editorial-index |
221 x 25 |
↳ index-detail-0 |
text | [56,114) | editorial-index |
221 x 24 |
↳ index-row-1 |
text | [56,114) | editorial-index |
221 x 25 |
↳ index-detail-1 |
text | [56,114) | editorial-index |
221 x 24 |
↳ index-row-2 |
text | [56,114) | editorial-index |
221 x 25 |
↳ index-detail-2 |
text | [56,114) | editorial-index |
221 x 24 |
↳ index-row-3 |
text | [56,114) | editorial-index |
221 x 25 |
↳ index-detail-3 |
text | [56,114) | editorial-index |
221 x 24 |
↳ index-row-4 |
text | [56,114) | editorial-index |
221 x 25 |
↳ index-detail-4 |
text | [56,114) | editorial-index |
221 x 24 |
small-original-dial |
group | [65,114) | canvas |
116 x 116 |
↳ dial-circle |
ellipse | [65,114) | small-original-dial |
108 x 108 |
↳ dial-hand |
path | [65,114) | small-original-dial |
116 x 116 |
high-left-word-tile |
group | [1,92) | canvas |
874 x 611 |
↳ first-tile-fill |
rect | [1,92) | high-left-word-tile |
874 x 781 |
↳ original-direction-cue |
path | [1,92) | high-left-word-tile |
80 x 135 |
↳ secondary-cue-pulse |
path | [1,92) | high-left-word-tile |
98 x 28 |
↳ first-word |
text | [1,92) | high-left-word-tile |
540 x 285 |
lower-middle-word-tile |
group | [31,112) | canvas |
668 x 704 |
↳ second-tile-fill |
rect | [31,112) | lower-middle-word-tile |
668 x 704 |
↳ second-word |
text | [31,112) | lower-middle-word-tile |
520 x 285 |
quiet-ring-chart |
group | [36,114) | canvas |
900 x 560 |
↳ diagram-paper-stock-v06 |
rect | [36,114) | quiet-ring-chart |
900 x 560 |
↳ line-chart-art |
image | [36,114) | quiet-ring-chart |
900 x 560 |
↳ diagram-value-one |
text | [36,114) | quiet-ring-chart |
160 x 115 |
↳ diagram-value-two |
text | [36,114) | quiet-ring-chart |
110 x 78 |
↳ diagram-value-three |
text | [36,114) | quiet-ring-chart |
76 x 50 |
↳ diagram-callout-1 |
text | [36,114) | quiet-ring-chart |
30 x 14 |
↳ diagram-callout-2 |
text | [36,114) | quiet-ring-chart |
30 x 14 |
↳ diagram-callout-3 |
text | [36,114) | quiet-ring-chart |
30 x 14 |
↳ diagram-callout-4 |
text | [36,114) | quiet-ring-chart |
30 x 14 |
↳ diagram-value-four |
text | [36,114) | quiet-ring-chart |
88 x 65 |
moving-paper-miniature |
group | [41,114) | canvas |
200 x 150 |
↳ paper-body |
image | [41,114) | moving-paper-miniature |
234 x 166 |
↳ paper-wing |
image | [41,114) | moving-paper-miniature |
234 x 166 |
right-edge-word-tile |
group | [61,96) | canvas |
750 x 561 |
↳ third-tile-fill |
rect | [61,96) | right-edge-word-tile |
750 x 561 |
↳ third-word |
text | [61,96) | right-edge-word-tile |
625 x 285 |
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 | 140 | Only backing title; no tile. |
| 1 | 141 | Purple and both cues on. |
| 2 | 142 | Secondary cue off, primary remains. |
| 30 | 170 | Last frame before lavender. |
| 31 | 171 | Lavender enters independently. |
| 32 | 172 | Secondary remains off. |
| 33 | 173 | Secondary pulse begins. |
| 36 | 176 | Four-value diagram enters above lavender. |
| 39 | 179 | Relief card enters behind tiles. |
| 41 | 181 | Body/wing miniature enters above diagram. |
| 56 | 196 | Index enters under blue future footprint. |
| 61 | 201 | Blue enters with x1239,y372; three plates overlap. |
| 63 | 203 | Last secondary-pulse frame. |
| 64 | 204 | Secondary off; do not fade. |
| 65 | 205 | Fifth miniature, the dial, enters. |
| 91 | 231 | Last purple frame and late settling. |
| 92 | 232 | Purple off; backing title stays. |
| 95 | 235 | Last blue frame. |
| 96 | 236 | Blue off, index revealed. |
| 104 | 244 | Last backing-title frame, y487. |
| 105 | 245 | Title off; lavender continues. |
| 111 | 251 | Last lavender frame. |
| 112 | 252 | Lavender off; five miniatures survive. |
| 113 | 253 | Final frame; no extra global freeze. |
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 codex-word-tiles-collage --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 codex-word-tiles-collage --variant default --out out/codex-word-tiles-collage-default.mp4
node --experimental-strip-types scripts/render.mjs --recipe codex-word-tiles-collage --variant adaptation --out out/codex-word-tiles-collage-adaptation.mp4
node --experimental-strip-types scripts/verify.mjs out/codex-word-tiles-collage-default.mp4
node --experimental-strip-types scripts/verify.mjs out/codex-word-tiles-collage-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/codex-word-tiles-collage.json','utf8')); mkdirSync('inputs',{recursive:true}); writeFileSync('inputs/codex-word-tiles-collage-custom.json',JSON.stringify(recipe.defaults,null,2)+'\n',{flag:'wx'});"
cd ..
Edit project/inputs/codex-word-tiles-collage-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 codex-word-tiles-collage --content inputs/codex-word-tiles-collage-custom.json --out out/codex-word-tiles-collage-custom.mp4
node --experimental-strip-types scripts/verify.mjs out/codex-word-tiles-collage-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 published v08 candidate uses substitute copy, relief geometry and pixel animals. Source-like miniature detail, type metrics and translucent overlap still need fresh moving comparison; a historical no-open-findings report bound to an older recipe cannot accept this kit.
- 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.