# DaVinci Resolve: exact frame/layer candidate specification

**No native Resolve session, project import, render or export was run.**
This is a vector/node reconstruction specification with all 3,360 evaluated
layer rows, not a ready-to-import `.drp` or `.comp`. SVG controls and Chrome
renders are not application-generated Resolve evidence. This guide does not
substitute PNG plates, a source video, or a flattened candidate movie for the
editable treatment.

Documentation checked: *DaVinci Resolve 21 Reference Manual*, retained PDF
SHA-256 `7bfdcf0296bd1e48aeca58a3d66026821cf9dec5f1f0e5fe7a4b936dbe34e799`.
Printed pages 1392–1393 concern **Fusion Studio** media/SVG-spline import;
1801–1802 cover editable Stroke/Polyline; 2540–2542 cover Rectangle mask;
2788–2790 and2816–2818 cover shape and transform controls. Do not generalize
Fusion Studio's `File > Import` menu to Resolve's Fusion page without checking
the installed application. Native importer compatibility is still open.

## 1. Establish the timeline before construction

Use a disposable project. Record installed Resolve version/edition, OS, GPU,
driver and available H.264 encoder. Set timeline and playback rates to **60**,
not59.94, raster **1920×1080**, square pixels, progressive, no optical flow,
no interpolation and non-drop-frame timecode. Start at **01:00:00:00**.

Create a blank Fusion Composition on V1 with **120 frames**. Its included
local frames are0–119; the final included timecode is **01:00:01:59** and
the exclusive end is **01:00:02:00**. Confirm the Fusion composition's actual
start frame; if it is not0, add that origin to every local keyframe below.
There must be no audio clips. No reference movie is used as a source layer.

For a comparison baseline use unmanaged DaVinci YRGB / Rec.709 Gamma2.4,
without LUTs, grades, automatic color effects or adjustment clips. These are
proposed production settings, not source-film settings or a verified native
color match to Chrome. Keep the white field at full opacity throughout.

## 2. Build this hierarchy, not a scaling capsule

Names below are the exact `layer` identifiers in the CSV. For index0/1/2 the
three arm subtrees have identical topology. Each SVG's literal paths, colors
and strokes are the control drawing for native spline/shape construction.
Where the installed application supports importing SVG splines, verify that
its resulting nodes retain these controls; otherwise rebuild the simple
native polygons/curves from those supplied coordinates. Text is a separate
Text+ branch; its native typography match remains unverified.

| Layer(s), in paint order | Parent | Native construction target | Active local frames |
| --- | --- | --- | --- |
| White field | Canvas | White Background, 1920×1080 | 0–119 |
| `capsule` | Canvas | Translation-only grouping, x track; y435; variable width, height210 | 0–119 |
| `changing-seed` | capsule | Group at its x/y tracks, rotation about(60,60); no global scaling | 0–119 |
| `seed-arm-0/1/2` | changing-seed | Three groups rotated0/120/240° about(60,60) | 0–119 |
| `seed-tail-0/1/2` | matching arm | Track y/scale/rotation, pivot(60,20) | 0–119 |
| `seed-curve-0/1/2` | matching tail | Editable cubic from `CONTENT_CONTRACT.md`, stroke9, exact dash-offset track | 0–119 |
| `seed-tail-cap-0/1/2` | matching tail | Filled9×9 ellipse, individual x/y/opacity | 0–119 |
| `seed-node-0/1/2` | matching arm, not tail | White-centered32×32 ring, border9, x44, y track | 0–119 |
| `inner-label-mask` | capsule | Independent Rectangle mask, x195/y63/H110, width and group-alpha tracks | 0–38 |
| `retiring-label` | inner-label-mask | Text+ target:83px regular Geist, −0.8px tracking, baseline71px | 0–38 |
| `trailing-edge-window` | inner-label-mask | x track, y0, W80/H110, scaleX track about(0,0) | 0–38 |
| `trailing-edge` | trailing-edge-window | Original left-transparent/right-white gradient SVG, 80×110 | 0–38 |
| `new-category-0` | capsule | `icon0-VARIANT.svg`, 100×100, x/y tracks | 71–119 |
| `new-category-1` | capsule | `icon1-VARIANT.svg`, 114×100, x/y tracks | 73–119 |
| `new-category-2` | capsule | `icon2-VARIANT.svg`, 112×100, x/y tracks | 75–119 |
| `new-category-3` | capsule | `icon3-VARIANT.svg`, 100×110, x/y tracks | 78–119 |
| `new-category-4` | capsule | `icon4-VARIANT.svg`, 112×100, x/y tracks | 85–119 |
| `capsule-border` | capsule, painted after contents | Transparent rounded rectangle, matching width, H210, outer radius105, inside border4 | 0–119 |
| `departing-pointer` | Canvas, above capsule | Original hand SVG50×54, independent x/y tracks | 0–33 |

Compositing order: merge the seed, clipped label branch and sequential icons;
paint the border above them; then paint the independent pointer. The white
fade belongs inside the label branch. It must never erase the outline.
The border has no filled panel, drop shadow or global fade in the selected
core. All five added icons have abrupt alpha0→1 onsets, with no fly-in,
scale-pop or crossfade. Their x/y positions continue to settle with the shell.

## 3. Apply exact frame controls

Use **`generated-controls/resolve-frame-layers.csv`**, not interpolation between
the summary rows here. There are28 rows for each frame0–119, in hierarchical
paint order. `native-layer-controls.json` also preserves the original sparse
tracks, pivots, paths and easing declarations. Both variants share this motion.

All x/y/width/height values are **parent-local pixel coordinates**, origin at
top left, clockwise-positive rotation. For a pixel point on a full-frame
Fusion image, normalized coordinates are `(x/1920, 1-y/1080)`. For a Shape
node's offset controls the manual uses **frame width for both axes**:
`(deltaX/1920, -deltaY/1920)`. These are different conventions; do not divide a
Shape node's Y offset by1080. Use the documented node type's convention.

The evaluated canvas transform is supplied as `matrixA`…`matrixF`, meaning
`X=A*x+C*y+E`, `Y=B*x+D*y+F`. This removes ambiguity when translating nested
pivots into a native graph. Either preserve the hierarchy or use its final
canvas matrix—not both. `opacityLocal` belongs on the individual branch;
`opacityEffective` is the already-multiplied audit value, not another fade.

The precise local transform is
`Translate(x,y) Translate(pivot) Rotate(clockwise) Scale(scaleX,scaleY) Translate(-pivot)`.
Preserve that order. Keep the sampled values on every integer frame; do not
auto-smooth the shape, retime it or replace the sparse tracks with a new ease.
Set visibility with held/step changes at the specified frame, not a ramp.

| Local/source frame | Timeline timecode | Capsule left / width | Seed rotation | Label alpha | Added icons |
| --- | --- | --- | --- | --- | --- |
| 0 / 240 | 01:00:00:00 | 459 / 1006 | 0.097° | 1 | 0 |
| 12 / 252 | 01:00:00:12 | 486 / 968 | 0.240° | 1 | 0 |
| 35 / 275 | 01:00:00:35 | 803 / 336 | 51.473° | 1 | 0 |
| 36 / 276 | 01:00:00:36 | 815 / 308 | 57.593° | 0.61 | 0 |
| 37 / 277 | 01:00:00:37 | 825 / 284 | 64.353° | 0.34 | 0 |
| 38 / 278 | 01:00:00:38 | 833 / 265 | 71.373° | 0.16 | 0 |
| 39 / 279 | 01:00:00:39 | 839 / 251 | 78.483° | Absent | 0 |
| 43 / 283 | 01:00:00:43 | 849 / 228 | 106.049° | Absent | 0 |
| 70 / 310 | 01:00:01:10 | 700 / 522 | 204.072° | Absent | 0 |
| 71 / 311 | 01:00:01:11 | 646 / 623 | 206.027° | Absent | 1 |
| 73 / 313 | 01:00:01:13 | 581 / 756 | 209.497° | Absent | 2 |
| 75 / 315 | 01:00:01:15 | 551 / 819 | 212.734° | Absent | 3 |
| 78 / 318 | 01:00:01:18 | 525 / 873 | 217.054° | Absent | 4 |
| 85 / 325 | 01:00:01:25 | 495 / 935 | 225.103° | Absent | 5 |
| 90 / 330 | 01:00:01:30 | 485 / 956 | 229.899° | Absent | 5 |
| 119 / 359 | 01:00:01:59 | 477 / 972 | 264.071° | Absent | 5 |

The minimum fitted width is228 at43. Do not replace the measured left/width
pair with a mathematically centered width expression. At frame0, its midpoint
is962, not960. The initial pointer is(929,590); at33 it is(1030,1017), and
it is removed at34. These coordinates are in the full canvas, not the capsule.

## 4. Native conversion checks that remain open

- **Text:** Text+ font size/tracking units and glyph rasterization are not
  assumed equal to CSS pixels. Match the supplied original SVG text controls,
  measured baseline71 and widths707.4735/625.8845 before evaluating withdrawal.
  Do not force a guessed Text+ number and claim exact typography.
- **Dash reveal:** preserve the cubic, animated dash offset and separate end
  cap. A native Write On conversion must match the supplied SVG at the selected
  frame; its normalized curve-length mapping has not been validated here.
- **Border:** the exact target is4px inside a210px box, outer radius105, CSS
  Gaussian sigma1.1. Do not type1.1 into a native Soft Edge/Blur slider and
  claim equivalence. Native filter units and edge behavior need measurement.
- **SVG import:** gradients, fills, strokes, type, clips and nested transforms
  must survive or be explicitly reconstructed as native nodes. The supplied
  SVG player is not proof that a Resolve importer supports them.

These are explicit limits of the native candidate, not reasons to flatten the
animation into PNGs and call the result editable. If a native feature cannot
be matched, report that gap. No prebuilt native project or native success
certificate is supplied.

## 5. Export and independently verify

Export each variant separately, no audio, 1920×1080, progressive60fps,
H.264 MP4 if available. Render In0 through Out119 **inclusive** (120 frames).
Do not add the exclusive-end frame120. Preserve the native project, version,
Inspector/keyframe screenshots and actual output files. Record color/data
level choices and any encoder limitation rather than silently changing format.

Run the README's actual-output verifier on the two native exports with
`--native` and a fresh output directory. It must still decode120 frames per
movie, check all rational timestamps, silence, onset pixels and label-tail
pixels. A failure stays a failure. Only an actual native run and inspection
can close the native-execution gate; this table cannot do so.

The research source is **[240,360)** at60/1fps. Native source positions
243–249,255–262,282,321,333,339–343 and349–353 are missing from the retained
PNG archive. The complete 540p excerpt is not a full-resolution substitute.
