---
name: status-aperture
description: Compose an editable presenter film whose moving focus plate resolves three decisions one at a time.
version: 1.0.1
---
# Status Aperture

Create a three-decision editorial film from a JSON brief and an authorized continuous human video. This is a parameterized composition tool, not a general scene-writing service. It produces eight seconds of 1920 × 1080 video at 30 fps through HTML, SVG, GSAP and HyperFrames.

Install with `npm ci`. Node.js 22 or newer, npm, FFmpeg and ffprobe are required. The first installation needs network access and disk space for HyperFrames and its browser runtime. Dependencies are pinned by package-lock.json; their upstream licenses remain in installed modules. No model account is required.

Run `node compose.mjs /absolute/brief.json /absolute/take.mp4 /absolute/project`.
Then run `./node_modules/.bin/hyperframes render /absolute/project --fps 30 --quality high --strict --workers 1 --output /absolute/film.mp4`.

The JSON contains `context` (up to 54 characters), `tint` (lagoon, plum, clay or slate), `personSide` (left or right), `cropX` (0–100 horizontal object position), `visit` (a permutation of 0, 1, 2), and `entries` (three objects). Each entry has `caption` (1–46 characters) and `state` (ready, pending or declined). Optional `footer` provides a short contextual note. Use a substantially different subject for each film, rather than relabeling the same narrative.

Keep each caption concise. Longer captions wrap and need a visual check, particularly for narrow glyphs, CJK and mixed scripts. Chinese automatically uses Noto Sans SC; other text uses Manrope. Labels remain stationary. One shared plate travels to the selected rows; a marker appears only after each arrival and remains visible thereafter. A reading interval follows the final decision. Edit the project HTML for custom staging, then rerun checks.

The footage must run continuously for at least eight seconds. Use a person crop with a visible face, natural movement, and adequate headroom. Do not loop, freeze, use a static portrait, substitute a drawn figure or reuse someone else's branded film. This layout places content beside the person; it provides no alpha masking or foreground occlusion. HyperFrames manages video timing through timeline attributes. Do not add imperative video seeking to the composition script.

Output is intentionally silent. The supplied video's speech is not a narration track and is not represented as saying the brief. Music and speech editing are outside this package's scope. Disclose stock footage and avoid implied endorsement.

Before delivery: inspect encoded transition and final frames, check text bounds, fonts and MIME responses, compare forward/backward timeline seeks including zero, decode the entire MP4 and watch once at normal speed while retaining dropped-frame counts. A successful render does not certify audiovisual acceptance. Keep the two briefs, reports and media separate from the reusable package.
