ART_PIPELINE_SUFFICIENCY_PROGRAM.md

pipelines/ART_PIPELINE_SUFFICIENCY_PROGRAM.md

THE ART PIPELINE SUFFICIENCY PROGRAM — from pick-boards to a build-grade lane

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).

Why this exists (Josh, 2026-08-03, verbatim)

"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.

Phase A — the hardwire (landing 2026-08-03, the four-lane code fan-out)

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).

Phase B — the build-grade artifact classes (queue items WQ_0031-0034)

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.

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.

The sequencing law

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.

Generated by harness/site/structure_site.py — the URL path is the repo path. review root