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.
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).
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.
--full on finals) or not-yet-wired.verify_scene_pacing already scales by duration; long-form VO coverage is a known type-exception (see §4.3).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.
| # | Requirement | Enforced by | W23 |
|---|---|---|---|
| 1.1 | One focal 3D element / no stacked Signal Field (the double-3D bug) | sim double_3d | ✅ 0 (was 32) |
| 1.2 | Tier-by-beat: signature beats (open·hook·resolve·coalescence·futurist) = field-only; others mount one non-A 2D panel | sim tier_mismatch | ✅ 0 (was 33) |
| 1.3 | Every mounted comp is registered + resolves | sim comp_unregistered + comp-resolve | ✅ |
| 1.4 | Scene pacing — ≥5s/scene, count in band for the duration | verify_scene_pacing | ✅ |
| 1.5 | Unique template sequence — no repeat-in-asset, no dup ordered-tuple/set across 522 | sim template_repeat_in_asset · dup_sequence_across_assets · dup_set_across_assets | ✅ |
| 1.6 | Non-signature scene mounts a comp; signature scene is field-only (correct, not a gap) | sim no_template | ✅ |
| # | Requirement | Enforced by | W23 / 522 |
|---|---|---|---|
| 1b.1 | Lead character matches the pillar (cast.lead == characters.lead_for(pillar)) | sim cast_mismatch | ✅ 0 / 0 |
| 1b.2 | Hero shape matches the pillar's character (cast.lead_shape == EIGHT[pillar].shape) | sim shape_mismatch | ✅ 0 / 0 |
| 1b.3 | Signature (field-only) scenes show that hero shape | sim hero_shape_wrong | ✅ 0 / 0 |
| 1b.4 | Per-scene functional labels curated, on-topic (not bare defaults) | sim curate_missing | ✅ W23 / ⚠ 15 calendar-wide |
| 1b.5 | Unique 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.6 | Colorway = the asset's color-by-day (internal consistency) | sim mixed_colorway (+ verify_variety day-cycle) | ✅ |
| # | Requirement | Enforced by | W23 |
|---|---|---|---|
| 2.1 | Caption-only, one track: caption === vo === script per scene (no competing in-asset prose) | sim one_track_broken | ✅ |
| 2.2 | 0 banned words | sim banned_word | ✅ 0 |
| 2.3 | 0 placeholders / 0 angle-seed | sim placeholder_in_script | ✅ |
| 2.4 | 0 fabricated numbers (functional labels only) | sim fabricated_number | ✅ |
| 2.5 | Logo-only on asset (icon bug, never the wordmark) | verify_no_written_name + sim logo_not_icon | ⚠ 1,655 scenes carry a lockup format (old 24-format rotation) vs the icon-only lock → reconcile (logo.format→icon) |
| 2.6 | Caption fits the band · no-orphan · left-aligned · clears the corner logo | caption auto-fit (CaptionTrack.tsx) · sim caption_fit (static) | ✅ code / ⬜ pixel-confirm on finals |
| 2.7 | No generic wording — no procedural-label / bank-reused (>2 assets) / <6-word spoken line | sim generic_scene | ⚠ 1,580 scenes (long-forms + topics — un-authored) |
| 2.8 | COPY uniqueness — each asset's ordered script tuple is unique across all 522 (no two videos say the same thing) | sim copy_dup_across_assets | ⚠ 179 assets duplicate copy (overlaps the generic/un-authored set) |
| # | Requirement | Enforced by | W23 |
|---|---|---|---|
| 3.1 | ONE colorway per asset (color-by-day black→red→white) | sim mixed_colorway | ✅ |
| 3.2 | Ground valid (black/red/white) | sim ground_invalid | ✅ |
| 3.3 | Cast bound — pillar lead + astronaut + one Summoner | sim cast_missing | ✅ |
| 3.4 | Astronaut actually present in the render (bottom-left, clears caption) | VISUAL tier | ⬜ --full |
| 3.5 | Red < 8% of frame | VISUAL tier | ⬜ --full |
| # | Requirement | Enforced by | W23 |
|---|---|---|---|
| 4.1 | VO present per scene | sim vo_s_missing | ⚠ |
| 4.2 | VO fits the scene (no spill past dur_s) | sim vo_spill_risk | ✅ |
| 4.3 | VO coverage ≥ 80% of duration | sim low_vo_coverage | ⚠ 344 assets under (long-forms ~17%, topics) |
| 4.4 | VO === caption, verbatim | one-track rule (2.1) | ✅ 0 broken |
| 4.5 | Music bed assigned + ducked −16 LUFS · no >1s VO-hole | AUDIO tier (engine/sim/audio.py) | ⬜ --full |
| 4.6 | No DEAD AIR — scene tail silence ≤ a strategic pause (≤0.7s) that lands on a music phrase + a scene-transition cut; otherwise VO is talking | sim dead_air | ⚠ 2,141 scenes / 474 assets (the #1 problem — kills via A+B content-driven timing) |
| # | Requirement | Enforced by | W23 |
|---|---|---|---|
| 5.1 | No black / blank frame | VISUAL tier blackdetect | ⬜ --full |
| 5.2 | No empty / hollow comp panel | sim empty_content (variance-based) | ✅ fixed + verified (hero s1) |
| 5.3 | Exactly one 3D hero, no dupe (eyeball) | sim_sweep still review | ✅ hero s1 / ⬜ all-asset on finals |
| 5.4 | Caption-band WCAG contrast | VISUAL tier | ⬜ --full |
| 5.5 | Per-ground sharpness parity (white as crisp as black/red) | VISUAL tier | ⬜ --full |
| # | Requirement | Enforced by | W23 |
|---|---|---|---|
| 6.1 | Rendered duration ≥ the asset's minimum | verify_rendered_duration | ⬜ RED (stale masters; clears on re-render) |
| 6.2 | 3 aspects rendered (9:16 · 1:1 · 16:9) | render pour | ⬜ Phase 2 |
| 6.3 | Faststart (moov first) + CDN q_auto transform | mux_audio.py + upload_media.py | ⬜ Phase 2 |
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.**
| # | Requirement | Enforced by | W23 |
|---|---|---|---|
| 7.1 | Corner 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.2 | Caption 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.3 | Astronaut 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.4 | Audio 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 | ✅ |
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).
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.
--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).
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.
--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:
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.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.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).The static gate verify_smell_test (run python engine/gates/verify_smell_test.py [week]) measures all of:
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).template_repeat_in_asset · dup_sequence_across_assets · dup_set_across_assets (visual) · copy_dup_across_assets (no two assets share a script).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_missing/cast_mismatch/shape_mismatch/hero_shape_wrong (pillar→character→shape) · astronaut_missing · citation_missing (every scene carries its §§ brand-rule citations).social_caption_missing (every asset needs per-channel captions at the comp_id level, shown on the storyboard).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.--full): loudness/duck/no-VO-hole · caption WCAG contrast · astronaut visible · red<8% · no bottom-band overlap · black/empty frame.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).