# Turn matched comparisons into a sentence read across signs

**Draft manual construction guide. Moving-source fidelity and native Resolve
execution remain unverified.** Two original content variants form one example.

## Source and composition

Official film `6SIDwCQZkU8`, selected native interval
[540,690),
30/1 fps. Use a silent 1920×1080 square-pixel
composition containing local frames 0–149. Exact duration:
150/30 seconds
(5.000000 s).
Source ordinal = 540 + local frame. No frame-rate rounding,
extra opening pause, closing hold or narration belongs to this study.

The comparison is a retained, hash-bound 960×540 research excerpt. Preserved
native metadata and PTS ledgers bind its clock; the historical full master is
absent, so this is not a fresh full-master decode. Samples informed the build.
Intermediate paths and measured-looking coordinates below are authored
reconstruction controls, not official product timing, latency or design tokens.

## Setup and common coordinate rules

Verify the unmodified kit with `python3 verify_package.py`, then follow
`project/README.md`. Choose either input JSON content set. Install the bundled
licensed Geist font for Text+, and calibrate pixels, weight, tracking and
baselines against the supplied MP4; a font name alone does not guarantee parity.

Regenerate `docs/controls.csv` with
`node --experimental-strip-types scripts/controls.mjs`. Each row includes the
local frame, source ordinal and exact sampled controls. Fusion global frame =
composition start + CSV frame. Coordinates here use pixels from top-left, Y
down. For a point in normalized Fusion image coordinates, X=pixelX/1920 and
Y=1−pixelY/1080; convert top-left rectangles through their centers. Check the
installed tool's coordinate direction instead of assuming CSS and Fusion match.
Parent transforms apply after local transforms. A uniform pivoted transform is
pivot + scale×(point−pivot), followed by the stated translation. Convert angles
to your tool's convention. CSS rotations are clockwise in this Y-down space.

Continuous controls use the CSV per-frame values, not an unspecified default
spline. Held gates, text prefixes, colors and row indexes use stepped keys.
Smoothstep is t²(3−2t), with t clamped to [0,1]; linear progress is clamped t.
Rectangle masks need pixel-correct width and height; normalized X/Y values are
not interchangeable on a non-square raster. Match opacity, clipping and layer
order before attempting a moving comparison.

## Matched comparison cuts become a sentence across signs

Use a white 1920×1080 canvas. Center a clipped 1200×600 image aperture for
local 0–42. Inside, build five original illustrated cartons on a shelf with
the supplied paper-bird SVG printed on each. The carton geometry, colors and
shadows are in `src/Scene.tsx`; reconstruct them as separate editable shapes.

1. Begin with internal packageScale=1.14 around aperture-local (600,300).
   At local 4, hard-reset it to 1. The white outer aperture does not change.
2. Use packageWords[0] until 12, [1] over 13–22, [2] over 23–32 and [3] over
   33–42. Change only the label in the retained layout. This keeps the same
   comparison focus through short reading holds of 9–10 frames after reset.
3. At 43, hard-change the centered aperture to 1440×720 and switch to the
   first illustrated physical sign. Use the six signWords in order with
   half-open intervals [43,66), [66,88), [88,104), [104,120), [120,135),
   [135,150). Those holds contain 23,22,16,16,15,15 sampled frames. The source
   excerpt ends in the last shot; this is not proof that the whole shot ends.
4. Keep each sign word as live Text+. The scene bodies use a wall plaque,
   rail letterboard, octagonal street sign, storefront fascia, lit billboard
   and forest notice. Their changing setting carries the sentence across
   cuts. Use no dissolves or per-word transitions. The whole comparison-to-
   sentence sequence is one example, not ten language/sign examples.

All following coordinates are aperture-local pixels. Center each word in
its rectangle; use weight 600 and the bundled font, then calibrate Text+
baselines. The CSS word is lower-case on plates 0 and 3, upper-case otherwise.

| Sign | Text rectangle x,y,w,h | Type size | Width budget |
| --- | --- | --- | --- |
| 0 | 370,224,700,272 | 136 | 650 |
| 1 | 385,186,680,298 | 112 | 630 |
| 2 | 407,91,626,550 | 134 | 560 |
| 3 | 230,160,980,200 | 116 | 880 |
| 4 | 250,160,940,320 | 130 | 780 |
| 5 | 250,193,940,297 | 112 | 820 |

Place the same 112×70 original paper bird at (1040,169), (355,132), (914,45),
(1110,349), (1115,102), (290,129), respectively; mirror it horizontally on
odd indexes. It is not the source animal. The editable SVG sign silhouettes,
posts, shelf, windows and trees are original schematic illustrations. Static
illustrations do not reconstruct the source's internal photo/motif motion.

Default package labels are TEA/THÉ/TEE/TÉ; the adaptation uses
SOUP/SOUPE/SUPPE/SOPA. These Latin-script fixtures test retained-layout reuse,
not Arabic directionality, Japanese shaping or translation quality. Do not
claim multilingual layout parity. Font, photography, animal performance,
texture, aperture details and internal movement remain source differences.


## Verification boundary

Inspect both actual exports at their native cadence, including entry/exit,
hard gates, layering, width, masks and holds. Shipped code checks font loading
and selected text-width budgets before rendering; it rejects oversized copy
instead of silently shrinking it. This is not arbitrary-input readability
approval or a guarantee that an independent Text+ rebuild fits.

The kit contains editable original geometry, fixtures, controls and tests;
source screenshots/movies are not renderer inputs. Native .drp execution,
tested Resolve import, independent moving-source review and source-quality
approval are not included. Existing matching pinned dependencies were used,
not a clean dependency install. A modified input needs a new render and review.
