# Resolve candidate: dock subtraction

This is a recipe-specific assembly guide and a tested browser-raster preparation
path, **not a native Resolve project, import test, render, or fidelity pass**.
The two actual replay movies are Remotion renders. Build either timeline below;
do not place a replay movie in Resolve and describe that as an editable build.

## Timeline and cuts

Set 1920 × 1080, square pixels, progressive, **30 fps**, start timecode
00:00:00:00. The timeline is exactly 99 frames, ending at exclusive
00:00:03:09; frame 98 is the last included frame. No audio tracks, transitions,
optical flow, retiming, motion blur, stabilization, or extra head/tail dwell.
Source [0,99) and output [0,99) share the same 30/1 clock.

| Interval, end exclusive | Visible objects | Dock | Meaning |
| --- | --- | --- | --- |
| [0,3) | none | off | Real blank entry; do not trim it |
| [3,24) | 0,1,2,4,5 | on | Five crisp objects; no entry opacity ramp |
| [24,61) | 0,1,2,3,4,5 | on | Sixth appears at 24, not 20 |
| [61,67) | 1,2,3,4 | on | Remove outer 0 and 5 |
| [67,74) | 2,3 | on | Remove 1 and 4 |
| [74,99) | 3 | off | Remove 2 and the dock together |

`resolve-cuts.csv` gives all six exact cuts and timecodes. `source-clock.csv`
has 99 rows, including the accepted raw film's millisecond-quantized PTS and the
exact rational output time. Those PTS differ by at most 0.000334 seconds from
the 30 fps clock; do not shift or duplicate a frame to chase that quantization.
The orientation beat [34,61) and final reading beat [74,99) are not certified
pixel-identical freezes. Continue the supplied keys through frame 98.

## Eight independent layers

V1 is a full-frame white solid, RGB 255/255/255, alpha 1, frames [0,99).
Use Normal composite mode, opacity 100%, rotation 0, no effects on all tracks.

| Track | Layer | Original art | Adaptation art | In | Out exclusive |
| --- | --- | --- | --- | --- | --- |
| V2 | dock-surface | shared white shell and shadow | same | 3 | 74 |
| V3 | object-0 | document | landscape | 3 | 61 |
| V4 | object-1 | open book | pentagonal badge | 3 | 67 |
| V5 | object-2 | cube | mountain | 3 | 74 |
| V6 | object-3 | **kite, surviving icon** | **T, surviving icon** | 24 | 99 |
| V7 | object-4 | planner | board | 3 | 67 |
| V8 | object-5 | dial | compass | 3 | 61 |

Use the complete original **or** adaptation family. `controls/index.json`
binds the twelve 512 × 512 SVG assets to slots and variant labels. Old base-pack
icons remain checked dependencies but are not the selected render inputs.
The default object-5 specifically uses the refinement02 SVG; do not revert it.

## Prepare inputs without flattening the motion

Run `execute.py --action prepare` as documented in `README.md`. It emits twelve
512 × 512 transparent PNGs and **71 separate dock-only PNG frames**, plus an
exact `preparation.json`. No source image or complete scene is rasterized.
SVG originals, dock geometry, and all icon transforms stay independently editable.

Import `resolve-preparation/icons/original-icon0.png` through `icon5.png`, or the
six `adaptation-*` files. Import `dock/dock-00003.png` through `dock-00073.png` as
one 71-frame image sequence at 30 fps. Put its first image at timeline frame 3
on V2, its last at 73. V2 uses Position 0/0, Zoom 1/1, Anchor 0/0. Trim at 74.
Do not also apply the animated shell x/width to this already-positioned layer.

The PNGs have straight RGBA alpha. Explicitly check alpha interpretation on
import rather than adding a dark matte. Use browser/sRGB interpretation for
these images; the precise Resolve color-management conversion is a remaining
verification gap, not a guaranteed match to the Rec.709-tagged H.264 replays.

## Exact icon parameters

Use **Center crop with no resizing** for mismatched-resolution input scaling.
That mode is documented in Blackmagic's Resolve editor guidance; it leaves
512-pixel images at their native size before Inspector transforms. This guide
does not assert a tested menu layout in a particular installed Resolve version.

Keep Anchor Point at 0/0. Unlink Zoom X/Y. For every **visible** icon row in
`resolve-keyframes.csv`, at `outputFrame`, enter `editPositionX`,
`editPositionY`, `editZoomX`, `editZoomY`. All values are calculated from the
unchanged repaired recipe, with linear interpolation and one key every frame.
CSV rows outside a layer's interval are audit values, not visible frames.
The CSV is a parameter ledger, not an automatically importable Resolve format.

The coordinate convention is positive x to the right, positive y upward from
the timeline center. For recipe x/y measured from the canvas's upper left:

```text
left = x + originX * (1 - scaleX)
top = y + originY * (1 - scaleY)
centerX = left + 160 * scaleX / 2
centerY = top + 160 * scaleY / 2
Edit Position X = centerX - 960
Edit Position Y = 540 - centerY
Edit Zoom X = 160 * scaleX / 512
Edit Zoom Y = 160 * scaleY / 512
```

Most icons have 160 × 160 bounds, y=449 and scale 1: Zoom 0.3125/0.3125,
Position Y=11. Object 3 scales around **[80,160], bottom center**. The equations
include that origin rather than assuming center scaling. At frame 24 it has
x=985, y=449, scaleX=scaleY=0.912: Position X=105, Position Y=3.96,
Zoom X=Zoom Y=0.285. At frame 98, x=879.5, y=447 and scale=0.975:
Position X=-0.5, Position Y=11, Zoom=0.3046875. Do not round away the half-pixel.

Before entering the rest of the keys, check frame 24 against
`controls/original-024.svg` or its adaptation counterpart. Verify the coordinate
sign and pixel-size interpretation in the installed Resolve version. If they
differ, stop and record the mismatch; do not silently crop, rescale, or retime.

## Dock surface and shadow

The source-controlled shell is not a uniformly scaled plate. Its x and width
have independent per-frame tracks. Height is 258, top=400, corner radius=66,
fill=`dockColor`=`#ffffff`. For example: f3 x=452,width=1024; f24 x=353,width=1216;
consult the CSV for the authoritative per-frame width. The exact repaired CSS is:

```css
box-shadow: -1px 44px 100px #1820261f, 0 6px 18px #00000007;
```

Browser preparation draws this CSS at each native frame with the same pinned
Chrome binary, avoiding a false conversion of CSS blur to Fusion Soft Edge.
The pure SVG control sheets use Gaussian-shadow approximations and are not a
pixel-parity reference for that shadow. A Fusion-native rounded Rectangle plus
two shadow nodes is an **unverified alternative**, not a claimed equivalent;
no guessed Fusion radius/softness numbers are supplied as exact settings.

The dock PNG sequence is the reproducible candidate route. It is only one
independent layer, retains editable code and parameters, and never contains
the six icons. Resizing it would also resize its shadows, so keep it at 1:1.

## Remaining gates

Check full-speed source [0,99) beside the new render; inspect f2/3, 23/24,
51–60, 60/61, 66/67, 73/74, 80 and 95–98 at native cadence. The research clip
provided here is the accepted **960 × 540 downsample**, not full-resolution
source footage. Do not infer full-resolution source parity from it.

Resolve import, filter kernel, alpha behavior, color handling and final moving
quality remain unverified. No `.drp`, `.dra`, native Resolve render or blanket
quality pass is included. A neighboring light/UI shot requires an explicit cut;
no matched morph or all-hands playback synchronization is certified.

Documentation basis: Blackmagic Design, *The Editor's Guide to DaVinci Resolve
18*, Image Scaling / mismatched resolution settings; primary manual identifier
`DaVinci-Resolve-18-Editors-Guide.pdf`. Numeric motion parameters come from the
hash-bound `fresh-repair06` recipe, not the manual or inferred source timings.
