Candidate construction guide · native Resolve not tested
Archive pages to a constructed outline
Unrendered dual-tool candidate. This worker made no new render, movie encode, deployment or native Resolve run. Completion credit, moving-source blind wins and native Resolve proofs are all 0. Independent source-first critique is pending the parent's source-only freeze and subsequent output inspection. Do not give a source-first critic this builder-informed guide before that freeze.
Source binding and inspection
Source: 10 years., https://www.youtube.com/watch?v=8JXwrVQQ4jw.
Native source interval [648,780),
132 frames at 24000/1001 fps, 5.505500 seconds.
Source-frame/rate arithmetic gives nominal interval
[27.027000,32.532500) seconds;
these values are not independently measured decoder PTS.
Retained excerpt SHA-256: 99a47ac28d5fb0f28e7f6800b94553d75b831691e16b57f6227c80b33714e208.
Source master SHA-256 (inherited, not rehashed): c047b79bf59dcdfd4df793d6724f732dbd89bc43390c5a43dd676e6b25f0f0d1.
Active recipe SHA-256: 9403f714bd1febaa87e9a672e05808644977b22ed2cf877f9372957953b083c1.
The actual retained excerpt was rehashed and all 132 consecutive frames were
decoded and viewed as ordered 240x135 stills. This is static inspection, not
moving viewing. Voice additionally has sixteen 480x270 still inspections listed
in source-inspection.json. The builder read the queue's prior observations;
neither this guide nor its source notes are a blind critic report. No whole-film
inspection is claimed. Historical source paths are provenance, not prerequisites
or editable assets. Source movies are deliberately absent from the kit.
Biggest remaining adaptation gap: Diagrammatic bench movement and monoline paper cannot reproduce filmed activity or the source paper typography. Inherited ORB/ORE macro fits still need moving comparison; native Resolve curve import is untested.
Public kit and installation
Use a fresh directory containing core-publication-v08.zip, active-assets.zip,
guide.json, README.md, handoff.py, controls.csv, overlay-manifest.json,
provenance.json, source-inspection.json, test_guide.py, and
verify_runtime.mjs. validation-results.json records builder tests, not a
runtime prerequisite. The parent supplies the pinned core alongside this kit;
it is not copied into each candidate's source directory.
Python 3.11+, Node 22.18+, npm and unzip suffice for installation and mechanical
checks. Rendering later also needs FFmpeg/FFprobe and an existing supported
Chromium. REMOTION_BROWSER_EXECUTABLE can select that browser. No command below
depends on a private script, source movie, unpublished asset archive, repository
checkout, prewritten missing input file or a restored historical project.
Both ZIPs begin at project/. Extract core first, overlay second at the kit
root, not inside another project/. The overlay replaces the selected recipe
and installs all active SVGs and both input variants. Reversing this order would
restore the legacy video/raster fields in the two inherited recipes.
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'"
python3 -c "import hashlib,pathlib; assert hashlib.sha256(pathlib.Path('active-assets.zip').read_bytes()).hexdigest() == '0badb5e7bda02e5a7293c8647be1b407d1460db1efea338b75de020802a4dfaf', 'Overlay 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
cmp controls.csv controls-regenerated.csv
PYTHONDONTWRITEBYTECODE=1 python3 test_guide.py
node verify_runtime.mjs --project project
(cd project && npm ci)
The core's other recipe definitions and old examples/ files are not this
adapter's active inputs. Use only the selected recipe variants or the new
project/inputs/archive-outline-montage/ files. Do not run full-library asset tests with
only this selected SVG whitelist installed. The builder did not run npm ci;
schema and timing checks use the hash-pinned public core TypeScript without
installing or copying node_modules.
Render later, under the owner's authority
These commands are provided for the parent/recipient. They were not run by this worker. Both examples are silent and use the source cadence without holds.
cd project
npm run render -- --recipe archive-outline-montage --variant default --out out/archive-outline-montage-default.mp4
npm run render -- --recipe archive-outline-montage --variant adaptation --out out/archive-outline-montage-adaptation.mp4
For a custom edit, copy the supplied input file to an unused local filename, edit only declared content fields, then use that file:
cp inputs/archive-outline-montage/adaptation.json inputs/archive-outline-montage/custom.json
npm run render -- --recipe archive-outline-montage --content inputs/archive-outline-montage/custom.json --out out/archive-outline-montage-custom.mp4
Inspect the manifest emitted beside each later render. It must bind the active
recipe, code, complete content and used SVG bytes, with the exact rational fps,
132 frames, 1920x1080 and no audio. A prior video or stale manifest cannot
verify changed inputs. verify_runtime.mjs does not load Chromium or measure
the actual browser font. Remotion's loaded-Geist FontGate must pass before any
render can qualify for visual review. Never silently shrink replacement copy.
This adapter
The SVG adapter retains the inherited outline implementation, including its individual one-frame curve states. Only the old PNG paper/fragment slots and MP4 bench are replaced. All page bodies are real original outlined text. The tool and stroke animation continue across page replacements; their motion is an authored diagram, not a new filmed-process claim.
project/inputs/archive-outline-montage/default.json and adaptation.json are complete
Content objects, not a separate design DSL. They change original copy/art while
keeping event count, gate frames and native duration. guide.json includes the
whole field contract, both inputs, every layer, every parent connection, local
domain, path/viewBox, mask, gate, text reveal and animated control.
Resolve / Fusion construction
This is a native construction specification, not a tested .drp or .setting.
Use the supplied SVG source as editable geometry, not Loader images of flattened
frames. Keep node branches for independently animated objects and Text+ for
runtime copy. fusionNodes provides a complete back-to-front Merge graph with
exact parent IDs and recipe pointers; controls.csv supplies native integer-frame
numeric controls. They are not an automatic Fusion import.
-
Create a silent 1920x1080 Fusion composition spanning local [0,132), at exact 24000/1001. The source is [648,780); 23.976 is a UI label, not a reason to use 24. Disable frame interpolation, optical flow and retiming.
-
Place compact-archive-fragment at (500,435), 920x213, on white for [0,16). Import the supplied fragment SVG as editable paths; its colored bands contain original outlined monoline text. Keep the source image and its lettering out of the node graph.
-
Construct nine independent page branches, each at (290,225), 480x635. Their exact gates are [16,20), [20,24), [24,28), [28,32), [32,36), [36,40), [40,44), [44,48), [48,56). Route them through Merge nodes with stepped Blend, never a dissolve. Source f668 corresponds to local20.
-
Create continuous-vector-workbench at (1040,350), 615x385 with a hard rectangular clip. Its three children are bench-stock, unbroken-drawing-line and drawing-tool, in that order. The bench is original SVG; the other two children remain separate animated nodes.
-
Draw the local 410x240 Bezier in unbroken-drawing-line. Its dashArray is the sampled arc length; dashOffset goes that length to0 over [16,55]. In Fusion use a stroke reveal whose visible arc length matches this offset; a generic Write On ease is not equivalent. Follow the tool x/y/rotation rows on the shared composition clock and tip pivot (3,66.5). Tool positions are arc-length sampled along the same original path. Do not restart either track when a paper changes.
-
At56 disable every pair branch and enable outline-macro-a. Reuse the recipe outline slot (original ORB or ORE) and all six inherited handle branches. Preserve the 1510x500 local domain, group scale and origin exactly. The two macros are different gated groups, not keyframes on one traveling camera.
-
At86 enable outline-macro-b. Each macro-b-contour-N branch lasts [N,N+1), N=86..111, with its corresponding original outlineFrameN slot. Step between authored Bezier states; do not run an optical-flow morph or animate the SVG string as plain text. Keep all six node/compass/tangent layers separate and above the contour.
-
At112 replace the macro with whole-outline-construction. Its whole-original-outline reuses the final outline, then node and tangent pairs have independent hard-off times. Preserve each child gate in fusionNodes; do not disappear all handles together. Dimension-guide-0 starts114 and dimension-guide-1 starts120.
-
Build all nine metric Text+ labels and their duplicates from metric0..metric8 with Geist, declared pixel size and tracking. Metric knockout rectangles remove only their underlying line. Never substitute unreadable skeleton bars or bake the whole outline/metrics into one plate.
-
For adaptation switch every declared input using project/inputs/archive-outline-montage/adaptation.json. ORB changes to ORE together with its 26 contour states, metrics, papers and drafting art. Arbitrary new lettering requires a complete consistent family of path states; changing only outline is unsupported.
-
Check paired boundary frames 15/16,19/20,55/56,85/86,111/112 and node departures114..122 before judging the motion. This kit has no new render or native Resolve proof; source-quality eligibility remains unresolved.
Coordinate, text and compositing calibration
Recipe positions use a top-left, downward-positive parent pixel domain. All
tracks use the same local frame number even inside groups. For box width/height
w,h, origin ox,oy, and sampled properties, use this local mapping:
M = T(x+ox, y+oy) * R_CSS(rotation) * S(scale*scaleX, scale*scaleY) * T(-ox,-oy)
world = M_parent * M_child * ... * localPoint
Fusion point for domain W,H: (worldX/W, 1-worldY/H)
unrotated/unscaled center: ((x+w/2)/W, 1-(y+h/2)/H)
unrotated/unscaled pivot: ((x+ox)/W, 1-(y+oy)/H)
The last two formulas are calibration cases, not replacements for the matrix under a transformed parent. Test a known asymmetric corner to establish Fusion's rotation sign and normalized pivot. Missing width/height inherit the containing domain; missing origin is (0,0). Never assume image center. Preserve overflow until the explicitly declared mask or the final canvas; pad group domains when needed rather than clipping children to their nominal width/height.
Keys use left-key easing: linear by default, smooth=t*t*(3-2*t), hold until
the right key and then take its exact value. Clamp outside keys. Gates are Step
at start and end; Resolve's displayed inclusive end is 131. Do not add
end-frame 132. Sampled one-frame path states and numeric rows must not gain
automatic Bezier smoothing or retiming. These are implementation controls, not
source-time PTS or a recovered physical model.
SVG path viewBoxes stretch independently into the declared path layer width and height; image SVGs preserve their supplied aspect/fit. Import compound paths, gradient stops and outlined monoline glyphs, not just a screenshot of the SVG. CSS shape borders are inside the border box; path strokes are centered on their curves. Match eight-digit color alpha, premultiplication and node alpha once. Parent opacity applies after child compositing. Blur/shadow radii are not numerically portable between CSS and Fusion and require a rendered fit.
Core public/fonts/Geist.ttf and its OFL license supply runtime text. Geist is
a declared substitute, not a recovered source font. Align Text+ to actual glyph
bounds within each prescribed box, including tracking, weight, line height,
right/center alignment and complete-word reveal. A raw Fusion Size parameter
or matching character count does not establish the same baseline or fit.
Native checkpoints
| Local frame | Source frame | Check |
|---|---|---|
| 0 | 648 | Compact multicolor vector editorial fragment. |
| 15 | 663 | Last fragment frame. |
| 16 | 664 | Cut to paired paper and moving vector bench. |
| 19 | 667 | First paper remains. |
| 20 | 668 | Second page replaces only the left slot. |
| 24 | 672 | Page 2. |
| 28 | 676 | Page 3. |
| 32 | 680 | Page 4. |
| 36 | 684 | Page 5. |
| 40 | 688 | Page 6. |
| 44 | 692 | Page 7. |
| 48 | 696 | Page 8; bench continues. |
| 55 | 703 | Final pair frame. |
| 56 | 704 | Hard cut to curved macro with construction handles already present. |
| 85 | 733 | Last first-macro frame. |
| 86 | 734 | Hard cut to rounding junction detail. |
| 111 | 759 | Final one-frame contour pose. |
| 112 | 760 | Hard cut to whole outline; nodes already present. |
| 114 | 762 | First dimension/metric group. |
| 120 | 768 | Second dimension guide. |
| 131 | 779 | Last whole-outline frame; no extra hold. |
Verification and unresolved eligibility
test_guide.py checks hashes, SVG-only closure, exact overlay members, both
inputs, the full node hierarchy, every exported native control, source bounds,
specific gates and rejected invalid inputs. verify_runtime.mjs loads the pinned
v08 validators and sampler to check both variants and every CSV row. These tests
do not render, establish font/blur equivalence, or prove native Resolve behavior.
Fresh critics must inspect the actual future default/adaptation outputs after their source-first freeze, checking motion, holds, layers, typography, density, overlap and boundary frames. Their findings must bind output and recipe hashes. Keep this candidate outside completed counts until those checks resolve its material gaps. Final all-hands production and talking-head synchronization are not authorized by these standalone motion specimens.
Exact project overlay manifest
overlay-manifest.json is the machine-readable byte/size ledger. No runtime
source, dependencies, fonts, source media or unrelated recipe is overlaid.
Active ZIP SHA-256: 0badb5e7bda02e5a7293c8647be1b407d1460db1efea338b75de020802a4dfaf.
project/inputs/archive-outline-montage/adaptation.json—06fcdb1c69c2848fa7728b33d9f16c4d1164e0084a2c4570f56a54c162a083aeproject/inputs/archive-outline-montage/default.json—b69ff341a8baa33705ed0c3f2cdfcd8f7d63df979ac56ef8bf28d46e4a8e4e37project/public/art/archive-outline-montage/adaptation-bench.svg—3f1f054fd132fc43a12af764d4b7b2453148dc9c40378d46d2567b451255a442project/public/art/archive-outline-montage/adaptation-fragment.svg—fbd7125fafe8954c41272d6c2d07c830356562c6c8b1f1c76720fdcae75079a0project/public/art/archive-outline-montage/adaptation-page-0.svg—d2876b6204e7ff4213f951f71778c823cf623d3ff11d84a4d8cb0d1920e71afaproject/public/art/archive-outline-montage/adaptation-page-1.svg—4e91ff2fffbd0d05228770e13cb9190cca7e15ce907a366d73e23283f39adb5bproject/public/art/archive-outline-montage/adaptation-page-2.svg—9765a8421e13cb56efb28ce0a5eb81b97a14a33fd913db1c881091316443796dproject/public/art/archive-outline-montage/adaptation-page-3.svg—ffca5b86758f9590e3265c9b4da6dbeb632decade33e9dba0f9b875e2a5f6f67project/public/art/archive-outline-montage/adaptation-page-4.svg—46de1f88195fb0e4457df7d40784e3da2931ca818877e36555616474a5987a82project/public/art/archive-outline-montage/adaptation-page-5.svg—4c732ae3564f8a5ca3bf2c664750be5f8ce65d6bda897b5d163bd4d6ab8bd9d1project/public/art/archive-outline-montage/adaptation-page-6.svg—131e8c0619d9078a37084d610ba9754be6a7aa7bcef7d39931d3c18041e8bf55project/public/art/archive-outline-montage/adaptation-page-7.svg—d4cbdab8d20d69af70275d4794a14878c40b7df921905d0f89ccf9019beb00e1project/public/art/archive-outline-montage/adaptation-page-8.svg—164f1f77f690fe01a9183100846592340df91b96f3f92ba364db4d2ecd26235eproject/public/art/archive-outline-montage/adaptation-tool.svg—1272fa7ecbd93e0ce00cd0e8d80f11fddb55fac5819eac85e40244e9fced76dcproject/public/art/archive-outline-montage/defaults-bench.svg—23ec37b3088895cc4e5a332d103bab905af86295819a44fc7b0f894682e9039fproject/public/art/archive-outline-montage/defaults-fragment.svg—7cc167690cd90d4a839f3cf92455ccdf5a9967175dd2d7a64639e71f3960ea26project/public/art/archive-outline-montage/defaults-page-0.svg—33b5780fa2a8708bacc089d4f2597682e9eaeef658033933d84388247d0ee6b3project/public/art/archive-outline-montage/defaults-page-1.svg—8a30271ee3d3a42e32e1c7dae0d6cfb803012b539fedcb188695d77ca346a082project/public/art/archive-outline-montage/defaults-page-2.svg—0d930d4908116dc934868f8be43fe0cdc4ae595f5647be11fe9024f394999227project/public/art/archive-outline-montage/defaults-page-3.svg—2924f3040a89a5636ae8db7c55a9854460d334d5aed41749e7e516c03dccba36project/public/art/archive-outline-montage/defaults-page-4.svg—9457d83ca094ec2fae26d3c5a14c3ae5567c05ca0a5645c2460b7e85ec959137project/public/art/archive-outline-montage/defaults-page-5.svg—9d037720d4cff788b3a38f65d718d24ed3a799664100c6b080b84561971ba29aproject/public/art/archive-outline-montage/defaults-page-6.svg—7acd6ed64bc0dd6c77e00cba7969b5cec23ef50135732ef63be9e3912dc4b4b1project/public/art/archive-outline-montage/defaults-page-7.svg—2707737b2101b58956fda7674e3c36e1761a5fb6574c2a4ddab9f54e5733d8daproject/public/art/archive-outline-montage/defaults-page-8.svg—dca77b32d3764ed7b6300c1ab42007a16e79bc46f8071d649949bdf5cac4d23fproject/public/art/archive-outline-montage/defaults-tool.svg—0d7cb50143811418a49c4c9108ffee390d33798194fb29d25d390245a3004d36project/recipes/archive-outline-montage.json—9403f714bd1febaa87e9a672e05808644977b22ed2cf877f9372957953b083c1