# Visit the cited source, then return to the preserved answer

**Draft manual Resolve/Fusion construction guide.** This is one original-asset
treatment with two content variants, not two examples. Native Resolve execution
and moving-source fidelity remain unverified. No imported or tested `.drp` is
included. The browser, answer and deck are editable illustrations, not a real
product demonstration.

## Source and native clock

Official reference: `8bAtx3WuRZw`, *Connect internal knowledge from Google Drive*,
published May 8, 2025. The selected fresh complete rendition is 1920×1080 at
24000/1001 fps, with time base 1/24000 and 1001 ticks per frame. Selection:
**[2058,2469)**, 411 frames, duration **411411/24000 = 17.142125 seconds**.
Local zero is source frame 2058 at absolute PTS 2060058; the exclusive end is
2471469 ticks. `docs/source-timing.json` records every actual integer PTS and
the rebased excerpt PTS. The separate 960×540 silent research excerpt preserves
all 411 frame positions. Its re-encoding and downsampling are not original-source
pixel identity. Fresh rendition hashes do not identify an absent historical
master or establish original-upload resolution.

The parent inspected source contact samples, not the whole moving film. Source
boundary observations are distinct from authored metrics. The controls below
are a reconstruction: pointer routes, camera scale, easing, opacity, optical
blur, typography and geometry are not recovered product measurements or latency.

## Editable content contract

Choose `inputs/default.json` (workshop) or `inputs/adaptation.json` (garden).
Both change the answer, source records and all three deck slides. Keep these
relationships: sourceTitles[0] labels the first citation, external tab and deck;
three slideTitles pair with successive groups of three slideLines; the same
answer and rail content returns after the external visit. The variants do not
change timing or count as additional choreography.

Required scalars: brand (12 characters), answerTitle and sectionTitle (30 each),
composer (44), and accent/warm/ink as six-digit hex colors. Lists are exact:
answerLines 3×56, quoteLines 3×56, closingLines 2×56, sourceTitles 4×30,
sourceSnippets 4×48, slideTitles 3×32 and slideLines 9×62. Unknown fields,
control characters, markup, missing items and malformed colors are rejected.

The bundled licensed Geist font is loaded before capture. Actual width budgets
are checked at the authored size and weight: brand 21/600 within 155 px; answer
headings 30/600 within 790; answer/quote/closing lines 22/400 within 790; composer
20/400 within 730; source titles 18/600 within 305; source snippets 14/400 within
315; slide titles 34/600 within 1000; slide lines 23/400 within 1000. These are
layout constraints, not arbitrary-copy readability approval. Oversize copy is
rejected rather than shrunk. Recheck Text+ metrics in Resolve independently.

## Composition and coordinates

Create a silent 1920×1080 square-pixel composition at **24000/1001**, local
frames 0–410. Do not round to 24, add a lead-in, append a hold or dissolve to
black. The next source camera move begins outside this selection. Keep all
source footage outside the editable build; use it only for comparison.

All coordinates below are pixels from top-left with Y down. For normalized
Fusion coordinates use X=pixelX/1920 and Y=1−pixelY/1080; rectangles convert
through their centers. Confirm the installed node's coordinate convention.
World point after camera = (cameraScale×X+cameraX, cameraScale×Y+cameraY).
The camera origin is (0,0); do not substitute a default center-pivot transform.
Set Fusion global frame = composition start + CSV local frame.

Rebuild with Background, Rectangle masks, Text+, Merge and Transform nodes.
Import `public/art/document.svg` as editable permitted artwork, or rebuild its
simple folded-page path. A pointer is an original vector path in Scene.tsx.
All other chrome, text, deck slides and thumbnails are code-built geometry.
Use the supplied MP4 as a visual target for the manual rebuild, not as a
flattened replacement for editable layers.

## Layer graph

1. Put the original teal/sand or green/clay gradient on the canvas. A browser
   group occupies (100,55), 1720×970, with a 10 px rounded clip and shadow. The
   shadow is behind the browser, not an overlay on the answer. Browser tabs and
   address strip remain above either application body.
2. Build the first tab and address strip at the browser top. At local 194 add
   a second tab and make it active. At 345 activate the first tab; keep the
   second tab visible. Do not dissolve both applications together.
3. The answer group starts at browser-local (answerX,120), width 810. Its title
   is followed by three bullet lines, a section heading at Y=250, a three-line
   quoted block at Y=315, two closing lines at Y=485, Sources at Y=557, then
   the action row at Y=604. The quote has its own left rule. These offsets
   belong to the answer group, not to separate screen-fixed text layers.
4. The composer shares answerX and sits 30 px above the browser bottom. It is
   810×96 with a rounded outline. Its placeholder, source chip and send symbol
   remain empty of new typing throughout this treatment.
5. The citations rail is browser-local right=18, top=128, width=350. Use four
   source rows followed by related records. The first record labels the deck.
   The rail fades in while answerX moves from 510 to 310. Rail text must not
   push beyond the browser clip. The rail remains logically open during the
   external visit, though that application body is not visible.
6. Replace the answer body with blank white for local 194–206 while retaining
   browser chrome and the pointer. At 207 replace that blank body with the
   editor. This thirteen-frame loading interval is intentional, not a missing
   render or a dissolve. Do not shorten it to an instantaneous document cut.
7. The deck editor has a title/menu row, a toolbar, a seven-thumbnail column
   at local (24,178), a 1160×646 slide canvas at (344,225), and a notes strip.
   The toolbar occupies local Y=143–169 using a 26 px border-box height; the
   thumbnail column starts at Y=178, leaving a 9 px gap. Thumbnail rectangles
   are 149×75, separated by 17 px. Their contents remain
   empty until local 226, then gain original schematic line marks. Main slide
   content is already visible before those thumbnails populate.
8. Main slides use one title and three lines each. Change both the selected
   thumbnail outline and the main slide atomically at 259 and 281. Do not
   animate individual bullet entrances or add an unobserved slide transition.
9. At 345 restore the exact authored answer and open-rail records. This is a
   hard application/tab switch, not a camera move. The reconstruction reuses
   its same content records; it is not evidence of backend state persistence
   or exact source scroll-position equality.
10. Place the pointer above application bodies but inside the common camera
    group. Arrow and hand shapes are original vectors. The click-target path
    is authored: Sources around (710,741), first citation around (1530,268),
    deck thumbnail 2 around (200,331), thumbnail 3 around (200,425), first tab
    around (242,81). Match these to the rebuilt hit regions, not source pixels.

## Frame controls

`node --experimental-strip-types scripts/controls.mjs` regenerates
`docs/controls.csv`. Each row gives local/source frame, camera scale/X/Y/blur,
rail opacity, answerX, tab/loading gates, thumbnail readiness, slide index and
pointer X/Y/shape. Use the CSV values for every native frame; a generic default
Fusion spline is not equivalent. Continuous ramps use clamped smoothstep
t²(3−2t). Discrete states use stepped keys, never interpolation.

| Local frames | Source frames | Authored state and observed boundary |
| --- | --- | --- |
| 0–11 | 2058–2069 | Wide settled answer footer. |
| 12–21 | 2070–2079 | Footer push: scale 1→2.3, translation (0,0)→(−500,−1030). |
| 21–66 | 2079–2124 | Close Sources reading/hover hold. |
| 67–80 | 2125–2138 | Pull back to scale 1 and zero translation. |
| 80–88 | 2138–2146 | Rail opacity 0→1; answerX 510→310. First faint rail observed at 2139. |
| 88–163 | 2146–2221 | Wide answer plus rail; pointer travels to the first source. |
| 164–182 | 2222–2240 | Citation push: scale 1→1.95, translation (0,0)→(−1735,−120). |
| 182–193 | 2240–2251 | Close first-citation hold. |
| 194–206 | 2252–2264 | Second tab active; white loading body, same camera. |
| 207 | 2265 | Main deck editor first appears. |
| 208–226 | 2266–2284 | Return wide; thumbnail placeholders populate at 226. |
| 226–258 | 2284–2316 | First slide. |
| 259–280 | 2317–2338 | Second slide. |
| 281–344 | 2339–2402 | Third slide; pointer travels to the first browser tab. |
| 345–410 | 2403–2468 | Hard return to answer plus still-open rail; no follow-up typing. |

Camera blur is an authored 0→3→0 CSS blur lobe over each camera move, using
3×sin(π×clamped linear progress). It approximates attention during the source
movement, not the source's directional optical motion blur. A Resolve Gaussian
Blur is only a manual approximation; calibrate it visually. Source intermediate
motion and these chosen easing curves have not received a fidelity pass.

## Checks and limitations

Verify the unmodified kit first with `python3 verify_package.py`; then follow
the project README. The tests check exact interval, every numeric control row,
strict content schema, loading span, camera holds, slide gates, returned answer
layout, and media/manifest tampering. Existing matching pinned dependencies
were used; no fresh dependency installation is claimed.

Inspect both actual MP4s at native cadence, including entry, all hard switches,
text width, target alignment, blank loading interval and returned layout. Static
samples and successful decoding are not perceived moving review. The principal
remaining differences are schematic browser/editor detail, original typography
and data, estimated framing and pointer paths, simplified thumbnail imagery,
and CSS blur rather than calibrated source motion blur. There is no native
Resolve validation, tested Text+ parity, independent review, moving-source
approval or finished all-hands production in this package.
