Candidate construction guide · native Resolve not tested
A resolving card strip travels and contracts: same-ID repair candidate
Existing ID work-observed-resolving-carousel. Assessment: changes required after independent static review.
No new unique example, source-quality approval, moving-comparison result or
native Resolve execution is claimed. Both current silent exports are separately available in the comparison players; the editable ZIP contains no source or output movies.
Portable installation
The normal kit contract contains guide.json, README.md, handoff.py,
controls.csv, overlay-manifest.json, core-publication-v08.zip and
active-assets.zip. Optional executable checks are test_kit.py and
verify_public_kit.py. Authoring copies recipe.json and assets/ are not
required after the overlay is installed. The core is supplied by the existing
kit distributor or via the verifier's --core argument, not replaced here.
Core SHA-256: 307fb6b927e35e6d73779652873d994f5c3e36cb7deba65f22fa64748057a0de.
Active overlay SHA-256: 7cbc13b3d914d1c5fef668da7c6d755038ebf6444f328e6026082eba74a662dd.
Frozen recipe SHA-256: bcbddb831af849d0d83848bb505a290caa53f617b3ca55d78893cd5168534d83.
In a new kit directory, install the actual accepted core first:
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
python3 test_kit.py --project project
A standalone no-install check, with Python3 and Node22.18+ available:
python3 verify_public_kit.py --core core-publication-v08.zip --scratch verify-scratch
This hashes the complete actual core ZIP, installs its unchanged required runtime,
font and licenses into a fresh bounded scratch project, applies the exact nine-file
overlay and runs the literal portable tests. Unrelated original recipes/manifests
are not extracted for this selected-recipe preflight. This optimization is not a
replacement core archive. The normal full-unzip commands above remain supported.
Both variants and a custom content file exercise real prepareInput/createBinding.
No npm install, browser, decoder or encoder is required. The font bytes remain a
required core dependency even though this recipe has no live Text layers.
What changes
Both third/fourth card bases use their own image, never a neighboring image.
Their traveling inset rectangles become uniform full-image opacity at the same
84–106 and122–144 phase endpoints. Rounded card alpha, original blur tracks,
all layer lifetimes, shared strip travel, terminal contraction, source clock,
both content records and all eight original SVGs remain unchanged.
Legacy stale-art and new-mask IDs are retained labels, not current mechanisms.
Third blur still reaches zero at92; fourth still has no blur track. A same-image blend does not create a new sharpness progression. These inherited limitations need actual output review; technical test results do not establish visual quality.
Source and clocks
Inherited source interval: [2733,2878),145 frames at60/1. Retained full excerpt:
300frames, target[93,238). Recipe-local84–104 maps to retained177–197.
Source-only retained160–199 contact cells, full172–175 and236–237 distinguish
intact rounded images and white gutters from misleading sheet-cell adjacency.
The last included retained237 is the gallery; the workspace cut at238 is excluded.
Keep the exact inherited sourceClock ledger; excerpt PTS are not master PTS.
Source media is research provenance only, never an active asset or kit payload.
Resolve hand construction
-
Select the target, not the context. Create1920x1080 square-pixel composition at60/1,145frames indexed0..144. Source frame2733+f. The retained source research excerpt is300frames covering[2640,2940); selected target is excerpt[93,238). Do not prepend the prompt or append the workspace. Parent-only native-index trim instructions and PTS binding are in sourceClock/contextSelection, not a runtime media dependency.
-
Create the unclipped strip domain. Build canvas-paper asV1. InV2/Fusion, make a transparent4180x1080 strip domain. Four local776x776 card groups sit at x572/1516/2460/3404 and y152. Preserve all offscreen cards before translation: a1920-wide intermediate raster or Crop here would discard cards3/4 before they enter. Gap is168px; pitch944px.
-
Rebuild local vector cards. Each card merges SVG vector elements in XML order on a776-square domain. Use exact paths, gradients and alpha from svgConstruction. Default is four desk organizers; adaptation four planters. Local rounded alpha mask radius68px intersects the merged card after image blur/veil. Rebuild rounded corners as Bezier geometry if the native radius knob differs. Do not round the strip itself.
-
Resolve the first two images independently. First card active[1,145), second[34,145). Put each image through its own blur before a white veil Over merge; then apply rounded-card alpha. First blur82→65→35→12→.25→0 at1/7/22/42/62/72, veil.985→.76→.35→.10→0 at1/7/22/42/62. Second blur80→32→0 at34/52/77; veil.99/.90/.60/.25/0 at34/42/52/62/77. All these segments linear; do not replace them with a whole-strip dissolve. Fusion blur units require application calibration, not a claim that slider82 equals CSS82px.
-
Keep both entering images intact. Third base uses cardThird from80 with inherited blur18 at80 to0 at92. Its same-image sharp branch starts84 with uniform opacity0, increases linearly to1 at106, then holds. Fourth base uses cardFourth from121 with no added blur. Its same-image branch starts122 with uniform opacity0 to1 at144, linear. Remove both advancing inset rectangles and both stale-neighbor substitutions. Legacy IDs third-stale-art/fourth-stale-art and third-new-mask/fourth-new-mask remain names only; they do not imply an internal replacement mask. Retain the rounded parent-card clips and all existing transforms. These opacity controls preserve authored phase endpoints; they are not measured source blur curves.
-
Translate the strip, then scale its parent. Apply carousel-strip.x keys to the complete4180px strip. Apply carousel-camera.scale about canvas pixel(960,540), not about the strip center. For each card-local point, X=960+s(rowX+cardX+localX-960), Y=540+s(152+localY-540). Keep offscreen data through these transforms and Crop only the final result to1920x1080 with top-left(0,0). Do not use AutoCrop/resize-to-content on moving parents.
-
Preserve the last contraction and external cut. Camera grows.60→.81→.945→1 at1/7/22/45, holds to110, contracts to.98 at125 and.82 at144. Bake the CSV if smoothstep cannot be expressed. At145 the recipe ends; source excerpt238 begins a different workspace shot, not an included transition. There is no added terminal hold.
-
Native compositing and review limits. Use premultiplied RGBA Over merges, not Screen. Transparent rounded corners must reveal canvas-paper with no black backing or fringe. Explicit white veils are visible content, not alpha loss. Test default/adaptation/custom with the accepted core; manual Fusion hierarchy remains unexecuted and must be checked in Resolve. Source stills and numerical agreement do not validate photographic materiality or moving similarity.
fusionNodes preserves the full ordered hierarchy. svgConstruction retains
every original vector path, gradient and element order for all eight SVGs.
Rebuild native vector subgroups from that data; do not rasterize source footage.
controls.csv is the implementation frame table, not recovered film animation
or a Resolve import file. Uniform group opacity is Merge Blend after composing
the same-image branch; no third/fourth traveling mask remains. Keep fixed rounded
card alpha and preserve the4180-wide strip until final viewport cropping.
Fusion blur units and vector rasterization still need native application checks.
| Layer | Parent | Active local frames | Kind |
|---|---|---|---|
canvas-paper |
canvas |
[0,145) | rect |
carousel-camera |
canvas |
[1,145) | group |
carousel-strip |
carousel-camera |
[1,145) | group |
card-1 |
carousel-strip |
[1,145) | group |
first-resolving-art |
card-1 |
[1,145) | image |
first-white-veil |
card-1 |
[1,145) | rect |
card-2 |
carousel-strip |
[34,145) | group |
second-resolving-art |
card-2 |
[34,145) | image |
second-white-veil |
card-2 |
[34,145) | rect |
card-3 |
carousel-strip |
[80,145) | group |
third-stale-art |
card-3 |
[80,145) | image |
third-new-mask |
card-3 |
[84,145) | group |
third-new-art |
third-new-mask |
[84,145) | image |
card-4 |
carousel-strip |
[121,145) | group |
fourth-stale-art |
card-4 |
[121,145) | image |
fourth-new-mask |
card-4 |
[122,145) | group |
fourth-new-art |
fourth-new-mask |
[122,145) | image |
Content and rendering commands
Use embedded defaults/adaptation unchanged, or the documented complete custom
content constructor in downloadContract.customContent.createCommand.
Use the pinned dependency lock, not an upgrade:
cd project
npm ci
npm run typecheck
node --experimental-strip-types scripts/catalog.mjs show work-observed-resolving-carousel --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 work-observed-resolving-carousel --variant default --out out/work-observed-resolving-carousel-default.mp4
node --experimental-strip-types scripts/render.mjs --recipe work-observed-resolving-carousel --variant adaptation --out out/work-observed-resolving-carousel-adaptation.mp4
node --experimental-strip-types scripts/verify.mjs out/work-observed-resolving-carousel-default.mp4
node --experimental-strip-types scripts/verify.mjs out/work-observed-resolving-carousel-adaptation.mp4
node --experimental-strip-types scripts/render.mjs --recipe work-observed-resolving-carousel --content inputs/work-observed-resolving-carousel-custom.json --out out/work-observed-resolving-carousel-custom.mp4
The current default and adaptation were rendered with the unchanged shared runtime.
Their hashes, manifests and145-frame clocks are bound in render-verification.json.
Custom content has a passing mechanical preflight, not a newly rendered movie.
No source footage or narration belongs in the reconstruction. Preserve145 frames
at60/1 with no added holds or retiming. Exact native Resolve execution is unverified.
Current review
Both repaired contents remove the mixed-image joins visible in the prior exports at local92. A source-first anonymous-label static comparison moderately prefers each repair within its content pair. The largest remaining gap is simplified repetitive illustration rather than distinct materially detailed scenes. No overall or moving-quality winner, source-quality completion or native Resolve validation is established.
Read CRITIC.md for exact source and output anchors and inspection coverage.
guide.json.repairAssessment binds that report and both actual exports.
Earlier inspection and font receipts remain historical, not newly run checks.
The frozen recipe retains historical source-inspection wording byte-for-byte;
it is not the current anonymous comparison record or a quality approval.
The source observations referenced by CRITIC.md are included as
PUBLIC_SOURCE_OBSERVATIONS.md. Both are frozen pre-publication review
records: their zero publication credit describes the reviewer's scope,
not the current delivery status. See the separate publication receipt
for deployment status; no review conclusion changes during packaging.