# Compokit paired scanner interaction — raw local recording

These are **actual, continuous, silent Chromium recordings** of the current
Compokit `/design-systems` browser flow, captured separately in the app's light
and dark themes on 2026-09-25. In each run, the user interface opens its scan
form, fills a fictional Svelte directory, sends a scan through the real local
API, then repeats for a fictional Vue directory and displays both result cards.
The local API returned one component and two CSS tokens per library, with the
component names and props recorded in each provenance JSON file. No model
prompt, code generation, production project or hosted product was exercised.

The source worktree was Compokit `14ed412`; behavior was unchanged from the
source-backed prior still capture at `1894b3b`. The API used an in-memory test
store and bound only `127.0.0.1:3001`; Vite bound only `127.0.0.1:5520`.
`/var/tmp/cpk-release` pointed to the same disposable fixture preserved in
`../fixture/`. The API process was restarted between themes so each recording
began with an empty store. The API, Vite and Chromium processes were stopped
after capture. An initial local attempt with a `127.0.0.1` browser origin was
discarded because the API CORS allowlist expects `localhost:5520`; the retained
recordings used that allowed origin; their provenance records two HTTP 201
scan responses each. Those HTTP statuses are not visible in the video pixels.

`light-raw.webm` and `dark-raw.webm` are unedited 1280×800 VP8, 25 fps,
7.76-second WebMs with **no audio stream**. The paired form/result PNGs are
actual same-session Playwright screenshots, not video edits. `capture.mjs` is
the exact interaction script, including browser actions and local API checks.
Each `*-provenance.json` records source, fixture, loopback, action timing and
SHA-256 of its video and screenshots. Its event times are relative to script
start, not exact video timestamps; each `*-frame-times.csv` lists the encoded
frame PTS values. The stills/posters in the parent folder were captured in an
earlier compatible source run and are not frames from these new videos.

This is a raw, silent diagnostic recording. It is not a narrated Cartesia film,
a final Remotion edit, an accessibility or code-quality benchmark, or evidence
that the public static overview hosts the scanner. Independent media/truth review passed at `34f20e7`: hashes, frame times,
source/API readback and start/mid/end playback were checked. The opening
loading skeleton and lack of an on-video synthetic/local label still need
player-quality treatment before a central changelog film link. Media-main
publication and exact public hashes remain separate gates. Timed captions, release
annotations and an exceptional final cover remain open.

## Edited silent player candidate

`light-study.mp4` and `dark-study.mp4` trim the first 0.8 seconds of the raw
recordings and end at raw 7.0 seconds. The dark raw recording develops
text corruption after about 7.2 seconds; the matched edit avoids that tail. They preserve the actual browser pixels
and timing; FFmpeg adds warm-stone framing plus large, persistent
**SYNTHETIC LOCAL** and **ACTUAL UI - SILENT - NO MODEL RUN** labels outside
the product crop. Both 1600×1000 H.264 clips are 6.2 seconds, 25 fps, 155
frames and contain no audio stream. The paired 384×240 thumbnails are
inspection artifacts showing that the essential qualifiers remain legible at
card size. `edit-study.py` and `edited-provenance.json` record the exact edit,
source/output hashes and codec. The raw WebMs remain unedited provenance and should not be linked as polished
public footage because of the dark tail artifact. These trimmed, framed clips
are silent study candidates, not final
Cartesia/Remotion release films or quality proof; independent player/truth
review, media-main publication and public byte readback remain open.

The repository-wide pair script recognizes `*-light`/`*-dark` suffixes and does
not count this capture's `light-*`/`dark-*` prefix files. The explicit five
pairs in `manifest.json` are checked instead by `verify-motion-pairs.py`: it
validates all asset hashes, paired PNG dimensions, and paired video dimensions,
duration, frame count, frame rate and absence of audio.
