pipelines/ART_PIPELINE_SUFFICIENCY_PROGRAM.md
CANON SUBORDINATION — this document is PROGRAM-TIER: it serves canon and never outranks it.
Authority order: docs/DOC_MAP.md § 0. Evidence base (both fresh-context Opus review fan-outs,
2026-08-03, every claim contract-cited):
docs/pipeline_review/art_pipeline_reviews_2026-08-03/e2e_compat_pass.json (4 lanes, 53
violations — artifact shapes vs the drop-in/lifecycle/keying/board contracts) and
build_sufficiency_review.json (4 lanes, 54 gaps / 80 required additions — whether the lane's
OUTPUT can build the 3D game at all).
"Do a pass to make sure you're creating these where every downstream pipeline will be able to
build our full end to end game." · "Are we region building and asset building properly with
these? Is this giving us what you need to create the 3D world and game end to end?" · "Make sure
that all is hard wired into these pipelines and are building off our canon." · "Make sure you've
done this in a way it can all be linked together since you're building it all into the same
world."
The reviews' verdict, stated plainly: the v1 board run produced pick-grade look development in a
shape no downstream lane could consume (slug-keyed paths, off-vocabulary hash tokens, no licence
records, no canon join), and the pipeline design itself lacked the build-grade artifact classes
(turnarounds, kit sheets, 3D-conditioning object plates, sequence units). Phase A fixes the
shape; Phase B builds the missing classes. Everything lands as ENFORCING artifacts — gates,
closed vocabularies, schema columns — never as session knowledge.
1. Hash value-closure: generation_prompt_hash.py refuses out-of-vocabulary values per key
(the REVIEW/none/structure class can never recur); render_tier and style_lora_hash join
the CLOSED payload key set (ratified, thirty-first-sitting hardwiring mandate).
2. Canon keying: every plate row carries canon_id (a LIVE registry PK — the path's second
segment), canon_registry, canon_ref (pipe-joined prefix-typed tokens:
entity: / zone:@page / beat: / scene: / boss:BE_NNNN.Pn / site: / insc: /
law:), canon_id_refs, subject_slug, density_class_id, care_tier, protected,
stage (draft|review|hero), render_tier, directional_label + the two lifecycle columns.
density_model.csv gains key_registry/key_column so class → registry → PK is mechanical.
3. New teeth (each with must-fire fixtures): art_pointers P8-CLASS-ID / P9-CANON-ID
(resolves, MANIFEST_ONLY-capable) / P10-ROLE; read_boards T-LANE-CARE (the §4.4 refusal as
arithmetic), T-PREVIZ-LABEL, T-CITE-REQUIRED (empty citation on a generated row FAILs),
T-CRITICS-CURRENT, T-RENDER-CURRENT, row-grain T-ONE-REC for leaf boards.
4. Lifecycle enrolment: PLATES.csv enrolls in generation_lifecycle.json (extra_tables);
per-plate licence records under docs/licence_records/ (C-12 law, 12 non-null fields);
generation_licence_ref holds the record PATH, never a class token.
5. Board law: lane-G candidates live on per-class LEAF boards (own MANIFEST rows + canon
scopes, 12-row cap, leaf_candidate_sheet shape); BRD_0001 returns to its 3-panel form;
RECS.csv is the row-grain decision surface (one recommendation per row, machine-checked).
6. Previz lawful (Josh's public-marketing ruling): the bar narrows to promotion-and-bible;
directional_label mandatory on previz rows; marketing_clear computes rights-clear AND
reveal-passed AND (previz ⇒ label). The site is a QUERY over the manifest (never a directory
walk) and is structurally incapable of publishing an unpicked or care-gated plate.
7. The world graph join: concept_plate_refs (reverse join) on enrolled registries, owner
concept-art; plates thereby enter the canon graph (build_canon_graph.py parses registry
rows + declared FKs) — image → canon row → chapter → thread in one walk.
8. Remediation of the 76: re-keyed to canon ids per the compat mapping, re-hashed with legal
payloads, files renamed (superseded copies archived, never deleted), licence records emitted,
citation_refs populated from the packs, leaf boards minted, coverage blocks reconciled,
board.md/html re-rendered, the D1 production ledger emitter minted (counts from PLATES.csv,
never asserted).
The sufficiency review's 80 additions, grouped into four ranked lanes. Each lands with its data
home + gate tooth in the same commit (the anti-orphan law). Full detail with contract citations:
build_sufficiency_review.json.
view consistency; rule the mechanism (multi-view conditioning at the 3D-gen model / img2img /
per-subject LoRA) BEFORE any model-ready claim; being-shaped art bible fields; the
mesh_pipeline_type + mesh_tags population legs (0/713 rows today — the MetaHuman-vs-3Dgen
routing switch and the prompt composer's primary input); scale/anatomy/proportion columns;
expression-sheet class for named cast; telegraph windup poses as the accessibility floor;
identity-lock LoRA scope (subject vs region).
layout plates made spatially binding (join to pads_flores.json-class blockout manifests +
zone_bounds — polygon/floor/entries/slope-ceiling, never Phase-5M numbers); EG rows gain art
fields (palette tokens, reference-plate pointer) so the 112 mechanical rows drive dressing;
palette becomes tokens both the bible and the build tools read; time-of-day/weather data home;
worldcover_biome population (0/84); interior plates + kit refs; vista/HLOD landmark
authority.
object_ref conditioning-image spec (single subject,full visibility, neutral ground, declared view count per the repo's own TRELLIS findings);
scale anchors on object registries; attach-point/functional-part authoring; the D1-23 grade
join (rarity column + geometry ruling); PBR lane input plates; the never-raw-generate care
rule extended from architecture to objects.
is P0 and has no unit that can hold it); the per-base-element visual law predecessor; the
mastery-ladder identity axis; the UI/HUD producer class (a consumer and swap mechanism exist
with no producer); telegraph boards (CF-7, greyscale-critic acceptance); the audio register
field crossing board→bible→registry; the leaf-page ladder render shape.
Phase A gates Phase-B generation the same way RANK 0 gated the boards: **no volume in an
unconsumable shape.** v2/v3 packs regenerate only after the hardwire lands and their rows carry
the Phase-A key set; B1-B4 items each open with their ruling briefs and close with their gate
teeth armed. The one consistency mechanism everything waits on (style/identity LoRA, PIPE_ART §6
Q4) gets ruled inside B1 and applied backward to regions.