Back Office · office.temerarii.xyz
VIDEO-CHECKLIST.md

← all docs

VIDEO-CHECKLIST — the source of truth for every video asset

The bar: no asset ships until every row below is green. This doc is the human copy of the bar;

engine/sim is the machine copy that enforces it (so a regression can't pass silently). Each row names the

rule, where it's enforced (the engine/sim flag or the gate that fails on it), and the current W23 state.

  • Run the checklist: python -m engine.sim run --weeks <N> (static, instant, no GPU) ·

python -m engine.sim run --weeks <N> --full (adds AUDIO + VISUAL on the rendered finals).

  • Per-asset record: brands/temerarii-media/content/_generated/comp-id-review.json — per asset → per scene

{n, beat, comp_id|"shared field", tier, flags[]} + a pass/flag tally. The office reads this for the

per-card badge + the per-asset checklist panel.

  • Legend: ✅ green now (W23) · ⚠ partial · ⬜ post-render (needs --full on finals) or not-yet-wired.

The bar has THREE layers (this is the "parity" — same bar for all, AND each asset bespoke)

  • Layer A · Universal rules — every asset clears the same bar (§1–§6 below). One-size structure/text/color/audio/visual.
  • Layer B · Per-asset-TYPE — the bar adapts to the asset's kind: hero/cell · thread · long-form · topic · holiday each have their own duration band, scene count, VO-coverage expectation, aspect + channel set. verify_scene_pacing already scales by duration; long-form VO coverage is a known type-exception (see §4.3).
  • Layer C · Per-asset CUSTOM correctness — the asset's bespoke identity must be right, not just present: pillar → lead character → hero shape → power, the unique template sequence, on-topic curation, color-by-day. (§1b below.) Verified by engine/sim against characters.EIGHT + content-index.

Coverage: the bar covers all 522 assets — run python -m engine.sim run --weeks 0-52 (topics are week 0). The per-asset record (comp-id-review.json) holds a row for every one of the 522 (clean flag + flag list), and the office reads it for the per-card badge + the per-asset checklist panel.


1 · STRUCTURE (composition / one-focal-element)

#RequirementEnforced byW23
1.1One focal 3D element / no stacked Signal Field (the double-3D bug)sim double_3d✅ 0 (was 32)
1.2Tier-by-beat: signature beats (open·hook·resolve·coalescence·futurist) = field-only; others mount one non-A 2D panelsim tier_mismatch✅ 0 (was 33)
1.3Every mounted comp is registered + resolvessim comp_unregistered + comp-resolve
1.4Scene pacing — ≥5s/scene, count in band for the durationverify_scene_pacing
1.5Unique template sequence — no repeat-in-asset, no dup ordered-tuple/set across 522sim template_repeat_in_asset · dup_sequence_across_assets · dup_set_across_assets
1.6Non-signature scene mounts a comp; signature scene is field-only (correct, not a gap)sim no_template

1b · CUSTOM / BESPOKE CORRECTNESS (Layer C — this asset's identity is right)

#RequirementEnforced byW23 / 522
1b.1Lead character matches the pillar (cast.lead == characters.lead_for(pillar))sim cast_mismatch✅ 0 / 0
1b.2Hero shape matches the pillar's character (cast.lead_shape == EIGHT[pillar].shape)sim shape_mismatch✅ 0 / 0
1b.3Signature (field-only) scenes show that hero shapesim hero_shape_wrong✅ 0 / 0
1b.4Per-scene functional labels curated, on-topic (not bare defaults)sim curate_missing✅ W23 / ⚠ 15 calendar-wide
1b.5Unique template sequence + set across all 522 (no two assets identical)sim dup_sequence_across_assets · dup_set_across_assets✅ W23 / ⚠ 114 (long-forms share chapter sequences)
1b.6Colorway = the asset's color-by-day (internal consistency)sim mixed_colorway (+ verify_variety day-cycle)

2 · TEXT (caption-only, one-track, on-voice)

#RequirementEnforced byW23
2.1Caption-only, one track: caption === vo === script per scene (no competing in-asset prose)sim one_track_broken
2.20 banned wordssim banned_word✅ 0
2.30 placeholders / 0 angle-seedsim placeholder_in_script
2.40 fabricated numbers (functional labels only)sim fabricated_number
2.5Logo-only on asset (icon bug, never the wordmark)verify_no_written_name + sim logo_not_icon1,655 scenes carry a lockup format (old 24-format rotation) vs the icon-only lock → reconcile (logo.format→icon)
2.6Caption fits the band · no-orphan · left-aligned · clears the corner logocaption auto-fit (CaptionTrack.tsx) · sim caption_fit (static)✅ code / ⬜ pixel-confirm on finals
2.7No generic wording — no procedural-label / bank-reused (>2 assets) / <6-word spoken linesim generic_scene1,580 scenes (long-forms + topics — un-authored)
2.8COPY uniqueness — each asset's ordered script tuple is unique across all 522 (no two videos say the same thing)sim copy_dup_across_assets179 assets duplicate copy (overlaps the generic/un-authored set)

3 · COLOR & CAST

#RequirementEnforced byW23
3.1ONE colorway per asset (color-by-day black→red→white)sim mixed_colorway
3.2Ground valid (black/red/white)sim ground_invalid
3.3Cast bound — pillar lead + astronaut + one Summonersim cast_missing
3.4Astronaut actually present in the render (bottom-left, clears caption)VISUAL tier--full
3.5Red < 8% of frameVISUAL tier--full

4 · AUDIO / VO

#RequirementEnforced byW23
4.1VO present per scenesim vo_s_missing
4.2VO fits the scene (no spill past dur_s)sim vo_spill_risk
4.3VO coverage ≥ 80% of durationsim low_vo_coverage344 assets under (long-forms ~17%, topics)
4.4VO === caption, verbatimone-track rule (2.1)✅ 0 broken
4.5Music bed assigned + ducked −16 LUFS · no >1s VO-holeAUDIO tier (engine/sim/audio.py)--full
4.6No DEAD AIR — scene tail silence ≤ a strategic pause (≤0.7s) that lands on a music phrase + a scene-transition cut; otherwise VO is talkingsim dead_air2,141 scenes / 474 assets (the #1 problem — kills via A+B content-driven timing)

5 · VISUAL (rendered finals / stills)

#RequirementEnforced byW23
5.1No black / blank frameVISUAL tier blackdetect--full
5.2No empty / hollow comp panelsim empty_content (variance-based)✅ fixed + verified (hero s1)
5.3Exactly one 3D hero, no dupe (eyeball)sim_sweep still review✅ hero s1 / ⬜ all-asset on finals
5.4Caption-band WCAG contrastVISUAL tier--full
5.5Per-ground sharpness parity (white as crisp as black/red)VISUAL tier--full

6 · RENDER & DELIVERY

#RequirementEnforced byW23
6.1Rendered duration ≥ the asset's minimumverify_rendered_duration⬜ RED (stale masters; clears on re-render)
6.23 aspects rendered (9:16 · 1:1 · 16:9)render pour⬜ Phase 2
6.3Faststart (moov first) + CDN q_auto transformmux_audio.py + upload_media.py⬜ Phase 2

7 · CHROME (the brand furniture must be ON SCREEN, frame-walked — operator-caught 2026-06-10)

The 2026-06-10 lesson: the chrome was correct in code + storyboards but VANISHED in finals (the CornerMark

<Loop> faded to 0 + re-formed the treatment each 150-frame cycle; captions waited up to 1.5s of vo_lead

before typing). Spot-sampling missed it because test frames landed between cycle resets. **Rule: no sampling —

the certification tier dense-walks EVERY final (fps=2; fps=1 for longforms) and measures the chrome per frame.**

#RequirementEnforced byW23
7.1Corner logo present ≥99% of frames (bottom-right zone ≥450px non-ground; persistent 0.45-opacity settled-mark underlay beneath the animated loop in CornerMark.tsx; first 0.5s exempt)certify chrome_logo (engine/sim/certify.py)
7.2Caption visible ≥95% of scene interiors (bottom band ≥250px; display lead capped 0.35s in CaptionTrack.tsx — audio lead untouched; GIF assets EXEMPT, silent by design)certify chrome_caption
7.3Astronaut present ≥70% of scene midpoints (bottom-left zone ≥350px; calibrated on the operator-approved golden hero so the loved pop-in/out never false-positives)certify chrome_astronaut
7.4Audio true-peak ≤ −0.1dBFS (loudnorm → alimiter=0.84 → 60ms onset fade in mux_audio.py; AAC rings ABOVE the limiter on a square onset edge — the fade kills it)certify audio_ok

8 · CERTIFICATION — the permanent SHIP gate (locked 2026-06-10; operator mandate: "DON'T SAMPLE")

  • Command: python -m engine.sim certify --weeks <N>content/_generated/certify-w<N>.json

an asset × dimension matrix over EVERY asset, not just video: video + GIF + email + SMS + blog (60 for W23).

  • Dims per video/GIF: static_clean · rendered · chrome_logo · chrome_caption · chrome_astronaut ·

black_frames · frozen_frames · ocr_clean (URL-form wordmark exempt) · audio_ok (GIF exempt).

Email: produced · lockup_img (inline SVG counts) · hero_gif · blocks · banned · fabricated.

SMS: ≤160 chars · banned · MMS gif master. Blog: live 200 · BlogPosting JSON-LD · canonical · banned/fabricated.

  • The loop: certify → fix every ✗ → re-certify --only the failures → repeat → exit only on a FULL pass

(--only runs overwrite the file and can never green-light a ship — completeness is enforced by the gate).

  • The gate: engine/sim/ready.week_certified(week, ids)upload_media.py REFUSES to upload any week

whose certify file is missing, PARTIAL, or carries a FAIL. Override only via --skip-certify /

TM_SKIP_CERTIFY=1 (prints loudly). W24-52 inherit automatically — WS-8 renders behind this gate.


Calendar-wide audit snapshot (522 assets · --weeks 0-52) — HONEST, post-smell-test (2026-06-07)

The earlier "119 clean / W23 green" was an artifact of a lenient checklist that never measured dead-air, generic

wording, or copy-uniqueness. Under the corrected bar, the real state is:

  • W23 (the launch week): NOT green — 15/15 assets fail the strict bar (hero = 78% coverage + 5 dead-air scenes; all 7 long-forms dead-air + generic; threads 70–78%). One-track + colorway + cast-identity ARE clean; the gap is VO fullness + crispness.
  • What's CLEAN calendar-wide: one_track_broken 0 · mixed_colorway 0 · ground_invalid 0 (black 215 · red 154 · white 153, even thirds) · cast_mismatch/shape_mismatch 0 · template_repeat_in_asset 0 · dup_set_across_assets 0 · fabricated_number 0.
  • The backlog (drive to 0), worst-first: dead_air 2,141 scenes / 474 assets → A+B content-driven timing · generic_scene 1,580 scenes + copy_dup_across_assets 179 assets → de-generic full-VO authoring (W23 → long-forms → topics → threads) · low_vo_coverage 344 (same authoring) · logo_not_icon 1,655 scenes → normalize logo.format→icon · dup_sequence_across_assets 114 (long-form chapter seqs) · curate_missing 15 · banned_word 5.
  • UNIQUENESS — both axes now enforced: VISUAL (template sequence + set, dup_*) AND COPY (script tuple, copy_dup_across_assets). STYLE-LOCK (colorway · logo-icon · tier-by-beat · one-track · banned · no-fabrication · cast identity) all gated. PIXEL placement (caption contrast/clears-logo, astronaut visible, red<8%, no overlap) + audio (duck/loudness/no-hole) are the AUDIO+VISUAL tiers on the rendered finals (--full, Phase 2).

EVERY rule the audit enforces — the complete register (2026-06-07, all nuances)

The static gate verify_smell_test (run python engine/gates/verify_smell_test.py [week]) measures all of:

  • Content crispness: dead_air (no silence beyond a ≤0.7s strategic pause on the cut) · generic_scene (no procedural/bank/<6-word lines) · low_vo_coverage (≥80% spoken) · too_complex (plain language — Flesch–Kincaid ≤ grade 7, an 11-year-old understands it).
  • Uniqueness (visual + copy): template_repeat_in_asset · dup_sequence_across_assets · dup_set_across_assets (visual) · copy_dup_across_assets (no two assets share a script).
  • Style-lock: logo_not_icon (icon-only) · mixed_colorway + ground_invalid (one valid B/R/W ground/asset — color-by-day) · one_track_broken (caption===vo===script) · banned_word · placeholder_in_script · fabricated_number.
  • Cast + citations: cast_missing/cast_mismatch/shape_mismatch/hero_shape_wrong (pillar→character→shape) · astronaut_missing · citation_missing (every scene carries its §§ brand-rule citations).
  • Supplemental social captions: social_caption_missing (every asset needs per-channel captions at the comp_id level, shown on the storyboard).
  • Music + colorway (data, surfaced on the storyboard): one song per day (unique per day, library-bounded) · color-by-day ground.
  • Pixel tier (OCR on rendered stills, engine.sim run --full): nan_or_zero_number · wordmark_on_screen (logo-only leak) · ocr_banned · ocr_placeholder — catches what the spec can't see.
  • Audio/visual finals (--full): loudness/duck/no-VO-hole · caption WCAG contrast · astronaut visible · red<8% · no bottom-band overlap · black/empty frame.

How to read a "perfect" video

A W23 asset is review-ready (approve-before-render) when §1–§3 are ✅ in comp-id-review.json and its

per-scene stills (remotion/out/simstills/<id>-s<n>.png) show one focal element/scene, the astronaut, the

caption, and the icon logo. It is ship-ready when, additionally, --full clears §4.5 + §5 + §6 on the

rendered finals. Phase 1 delivers the review surface (static + stills); Phase 2 delivers ship-ready

(re-render → --full → host).