# Authorized recording input mode · 1.1.0

This is the general media production path, separate from the original fixed two-minute illustration renderer. It takes a local reference video, a supplied approved Spanish UI video, an approved bilingual script/timeline and a rights-documented narration WAV. It cuts the **supplied target video**, removes its audio, adds the approved narration and exports captioned/caption-free MP4, SRT, VTT, WAV, glossary, review report and a hashed delivery ZIP. It does not invent a Spanish screen in place of a real product UI.

Bounds: one output aspect ratio (1920×1080 or 1280×720), 24 fps, 1–10 video segments, total >0 and <=1200 seconds (20 minutes), <=500 subtitle cues and <=50 approved terms. Inputs are local files only; no upload, API or network call. Python 3.10+ and a separately obtained FFmpeg executable/font are required. No binary, model or font is bundled.

## Run the working 36-second acceptance example

```text
python customer_release.py validate --plan authorized-fixture-plan.json
python test_customer_release.py
python customer_release.py build --plan authorized-fixture-plan.json --out fixture-output --ffmpeg /path/to/ffmpeg --font /path/to/licensed-font.ttf
```

This actual fixture uses three 12-second cuts from our own original illustrated video, plus six narration cues. Its media is expressly **not a customer's screen recording**. The same Spanish sample is used for reference and target to test the file/timeline path; it does not demonstrate reconciliation of an actual English customer's interface. `purpose: original_authorized_fixture` and source-kind metadata preserve that distinction. The real production setting is `purpose: customer_delivery`, for which `target_ui_video.kind` must be `approved_screen_recording`.

The output is genuinely 36 seconds, not a renamed 120-second movie. Both MP4s were fully decoded. The file `fixture-output/release-delivery.zip` is the actual nine-file deliverable. Input footage is not included in that recipient ZIP. Its final report keeps **es-ES Spain voice / es-419 text / native review pending** explicit.

## Prepare an actual customer input set

Start with `customer-plan-template.json`; it intentionally fails validation until completed. Keep the directory private and place permitted files in its `inputs/` folder. Source English reference and approved Spanish UI recordings may have different cut offsets, recorded for each segment. Supply a single PCM16 mono/stereo narration WAV already arranged to the complete output timeline; its duration must match within 50 ms. Speech within that track must be reviewed against the approved cues—format checks do not recognize spoken words.

For source video, target UI and narration, enter the SHA-256, named rights approver, actual rights basis, and permission for `local_edit` and `localized_delivery`. Confirm the target UI locale, product/build and clip correspondence with the customer. A source declared approved in JSON is still a customer attestation, not something the software independently proves.

```text
python customer_release.py file-hash --file inputs/source-en.mp4
python customer_release.py file-hash --file inputs/approved-es-ui.mp4
python customer_release.py file-hash --file inputs/approved-es-narration.wav
python customer_release.py script-hash --plan customer-plan.json
```

Record the final script hash in `narration.approved_script_sha256` **after the narration has actually been approved against that script/timeline**. The hash binds the approval record and catches a later script change; copying a digest does not itself establish that approval. Enter `script_approval` and `language_review` separately. If native language review is pending, keep it pending. Narration supplied from a Spain voice needs an explicit documented region exception; it must not be described as native Latin American audio.

```text
python customer_release.py validate --plan customer-plan.json
python customer_release.py build --plan customer-plan.json --out private-release-output --ffmpeg /path/to/ffmpeg --font /path/to/licensed-font.ttf
```

Build verifies source media durations and clip bounds before encoding, rejects overlapping/out-of-scene captions, mismatched hashes and missing permissions, and fully decodes the two results. Cuts are rendered from the approved target video; the original source/reference is retained only as a hashed approval/range reference. A person must still compare the original workflow, product facts and Spanish UI. The tool does not recognize whether a file is really a screen recording merely because the metadata says so.

The burned-caption profile overlays text near the bottom of the frame. Review that area and the source's existing text before handoff; supply footage with a suitable clear caption region. “Caption-free” means this pipeline adds no narration captions, not that it removes subtitles already baked into the input. The report identifies source filenames only, not local machine paths. `build-cache/` is excluded from delivery ZIPs.

## Review and correction

Open each MP4 with sound, compare all labels/actions against the approved current Spanish UI, inspect the source-to-target clip map, check full native language/audio quality, verify file/recipient and sign off separately. Technical decoding cannot replace those checks. For a new script, clip, voice or product build, revise the release version, obtain the relevant approval, update hashes and rebuild. No payment, delivery SLA or native production-quality claim is established by this fixture.
