# Turn report gates into an owned channel plan **Manual DaVinci Resolve/Fusion construction — draft.** This is an editable layer recipe with native-frame controls, not a tested `.drp`, `.comp`, macro or importable spline. No native Resolve execution, moving-source approval or pixel-equivalent Text+ rendering is claimed. ## Source and timeline The official reference is `Ljm3nHQQiSk`, *Reconcile quarter-end financials with ChatGPT Work*, published August 13, 2026. Its freshly indexed 1920×1080 rendition has60fps, a1/15360 time base and256 ticks per frame. Select **[3780,4638)**: **858 frames /14.3 seconds**, source time63.0 through77.3 seconds exclusive. Absolute PTS starts967680 and ends1187328 ticks exclusive. The separately attributed 960×540 silent research excerpt rebases these positions; it is not an editable input. `source-timing.json` binds all858 source and excerpt PTS. The fresh rendition is not proof of an absent historical master's identity. Create a1920×1080 progressive, square-pixel,60fps timeline with exactly858 frames, local0 through857. Explicitly map local zero to the Fusion clip's global start. Do not add handles, audio, a final dissolve, repeated frames or the next title. Source4638 is the first dark frame after the post and is excluded. ## Whole contract Start with a split conversation/report view. Four gate keys and owners in the read-only report must recur in the derived channel post. A submitted request and working explanation precede the foreground fade. The new window holds at the wider scale before the shared camera pushes into the post. The report remains behind it, but its conversation updates to a confirmation; do not freeze the entire background application. Do not replace this with a file drag, chooser, table morph, share dialog or source-tab roundtrip. Use either complete JSON fixture. Both are original nonfinancial planning examples. This is not evidence that OpenAI, Slack or Poe performs those actions. The source's edited working-time jumps are not product latency. The source post shows all four headings/owners at the wider scale, with later fourth-section details outside the studied viewport. The supplied build intentionally displays only the fourth heading/owner and never pans down to invented details. ## Coordinates and graph `Scene.tsx` uses top-left pixels, Y down, in a1920×1080 full-frame domain. Build branches at that same domain size to avoid accidental crop/rescale during Merge. For a rectangle `(x,y,w,h)`, normalized center is `((x+w/2)/1920, 1-(y+h/2)/1080)`, width`w/1920`, height`h/1080`. For points use`(x/1920,1-y/1080)`. Confirm the installed node convention. Merge order: 1. `ConstellationField`: full1920×1080 original vector field. 2. `ReportWindow`: shadow, rounded white body, toolbar, conversation and report. 3. `ChannelWindow`: shadow, rounded body, rails, headers, post and composer; apply `channelOpacity` once to this assembled branch. 4. `Pointer`: original stroked polygon, independently gated by `cursorOpacity`. 5. `SharedCamera`: transform the entire assembled field, both windows and pointer with `cameraScale`, `cameraX`, `cameraY`, then apply the authored camera blur. 6. Crop to the1920×1080 output and connect to MediaOut. A dark full-frame field beneath the transformed branch prevents transparent output edges. The camera affine mapping is `screen = scale × world + translation`. For a full-frame Transform with center-pivot scaling, use `Center.X = scale/2 + cameraX/1920` and `Center.Y = 1-scale/2-cameraY/1080`, with Size=`scale` and no rotation. This compensation reproduces a top-left origin; simply setting Center to the pixel translation does not. CSS blur pixels do not directly certify a Fusion Blur size. Calibrate that optical effect against actual renders; keep it zero at held endpoints and retain the unverified optical difference until checked. ## Construct the original branches ### Field and avatar Reconstruct `public/art/constellation.svg` with Background, gradient and masks. It has a radial dark field, a227×173 repeating four-dot cell, two thin constellation polylines at14% opacity and eight larger dots. Preserve the SVG's actual positions, radii, stops and opacity. Do not use a screenshot of the film's galaxy desktop. Repeat the cell across the full canvas before the shared camera. The64×64 avatar has a14px rounded field, a head circle at(32,24) radius14, an original shirt/hair silhouette and three short face strokes. Use the SVG's path coordinates as filled/stroked Polygon/Bezier shapes. Reuse this original avatar in the rail and author row. Source photography is not included. ### Report window Place the window at world(210,118), size1500×844, radius17. Use a soft shadow behind it, clip all children to its rounded boundary, and place a38px toolbar at the top. Toolbar circles are10px diameter with8px gaps and18px left padding; the brand/report label follows them. This is original chrome, not a copied logo. The conversation is window-local(0,38),340×806, with a right divider. Before `submitted`, use the prior request bubble at(55,22),255×125, with12–14px inner padding; show the review label at(22,217), action label at(22,250), four summary lines at(22,288) and the read-only note at(22,416). After submission, replace that history with the read-only note at(20,24), submitted request bubble at (54,60),257×105, status at(22,213) and working/confirmation text at(22,248). Those positions are conversation-local. `workingOpacity` affects the latter paragraph; `confirmation` selects the confirmation array. The composer remains conversation-local(18,666),304×120, radius18. Text starts (14,12) inside it; use explicit20px line spacing. A vector plus is at(14,88), the mode label at(47,91), and a29px action circle at(263,82). `requestVisible` selects request lines versus placeholder. A submitted request remains briefly in this composer while the history bubble has appeared; do not clear both in the same frame. `sendEnabled` or `submitted` selects the dark circle, and `submitted` changes the arrow to a square. These are schematic original icons. The report branch is window-local(340,38),1160×806, clipped independently. Report title is at(30,18); its read-only/status line is(82,87). Heading is (82,196), two intro lines start(82,240), section label(82,326) and table headers (82,377). The six column widths are55,130,165,130,185,230px. Four table rows start at(82,420+93×row), each1010×76 with a top rule and17px top padding. Map order, key, owner, priority, status and dependency from the same gate records used by the post. Source-notes text at(82,790) is partly clipped by this viewport. The report table stays fixed within its window through delivery. ### Channel window and post Place the foreground at report-window-local(42,0),1330×826, radius15, with a2px border and its own shadow. It does not replace or allocate space inside the report. Keep the complete branch behind one opacity gate so the source report can be seen through the whole window during entry. Toolbar height is38. The vertical icon rail is(0,38),62×788; draw icons with stroked vector masks. The channel sidebar is(62,38),260×788. Its workspace label is(17,16), navigation lines start(17,70) at34px spacing, channel heading at (17,242), and seven channel rows start(9,277+35×row),242×30. Highlight row5, whose label is the fixture channel. Do not create a second independent channel name that could diverge from the request's intended destination. Main header is(322,38),1008×61. The post viewport is(338,109),956×587 and clips before the foreground composer at Y696. Inside this viewport, avatar is(0,0), 31×31; author starts(44,0), post title(44,23) and two summary lines(44,52). Gate content has an additional(44,108) origin. Gate sections begin at relative Y0,155,291,443, with15px type and18px line spacing. Each of the first three sections contains key/title, owner, due date, its action lines and evidence. Section3 also has a dependency line between due date and actions. Action counts are3,2,3. The fourth contains only its key/title and owner. Its lower edge meets the viewport boundary; do not shrink all text to expose more. Owner mentions use an original pale-blue background. The foreground composer is(338,696),958×112 with a9px rounded border, formatting row, placeholder and vector plus. It overlays no visible text above its own viewport boundary. ## Text and color Use the supplied Geist font and explicit line arrays. Report heading is22px weight600; table headers14px; table cells15px; report intro16px/24px. Conversation summary16px/25px, working text15px/24px, composer15px/20px and submitted bubble 14px/22px. Post text is15px/18px, title and labels weight600; summary15px/21px. Workspace label is19px/600. Do not assume a Text+ Size value equals CSS pixels: calibrate the native font metrics at1920×1080 and check the named text boxes. The selected JSON supplies accent, ink, paper and sidebar colors. The SVG field, avatar and several neutral chrome colors are fixed original art. Palette reuse is therefore partial. Actual Chromium width checks run before rendering; they are not proof of Resolve shaping. No auto-shrink, clipping repair or font swap is supported. If text exceeds its box, shorten the input within the contract. ## Frame controls `controls.csv` has858 data rows. Regenerate it from `scripts/controls.mjs` and compare bytes before transferring values. Use one key per integer local frame, linear interpolation between sampled continuous values and stepped gates for the integer state flags. Do not apply an additional easing curve to the CSV. Source PTS and authored control values are separate evidence. | Local frame | Source frame | Required state | | ---: | ---: | --- | | 0 | 3780 | Full report already open; four gates/owners visible | | 28–59 | 3808–3839 | Authored camera approach to composer/report | | 150 /151 | 3930 /3931 | Empty composer /single-step request arrival | | 240 /241 | 4020 /4021 | No submitted history /history appears with request still in composer | | 260 | 4040 | Authored composer clear, within observed duplication-to-clear interval | | 276 | 4056 | Camera returned to wide context | | 374 /375 | 4154 /4155 | Faint /legible working explanation | | 454 /455 | 4234 /4235 | No foreground /first transparent foreground | | 482 | 4262 | Authored fade endpoint, before the observed opaque4272 sample | | 492 | 4272 | Opaque post; same four owners; background confirmation | | 610–660 | 4390–4440 | Authored shared camera push after the wide hold | | 857 | 4637 | Held closer post; do not include the next dark frame | The source establishes those content/ordering boundaries and bracketing samples, not the recovered pointer physics, exact camera coefficients or fade curve. The candidate uses smoothstep interpolation and disclosed original geometry. Pointer world coordinates come from the CSV and disappear at local278; apply the shared camera after positioning the polygon. ## Acceptance still required Check both content variants at the frame boundaries, wide post and final crop. Confirm matching keys/owners, a translucent whole-window entry, retained report edge, no table-to-message morph, no extra fourth-section reveal and no clipped intended labels. Compare a native Resolve render to the Remotion outputs and the moving research source before asserting native equivalence or quality. Current delivery provides sampled output checks and executable verification, not a completed moving or native-Resolve review.