assets/CONCEPT_ART_PROGRAM.md
CANON SUBORDINATION — this document is PROPOSAL-TIER: it serves canon and never outranks it.
The canon: the CVD · the T1 foundation docs · the T0 registries (registries/) · the spine
(docs/spine/CH_*.md) · the region pages (_source/02_Tier_2_Region_Pages/). Authority order:docs/DOC_MAP.md§ 0.
Canon served (HAND-WIDENED, then scanned from this document's own citations — widen it by hand where it is thin):
docs/spine/CH_NN.md§ Asset anchors — per node (e.g.docs/spine/CH_02.mdL226, the Flores board's contents, already typed and id'd) ·CVD §12·CVD §17·T1_Architecture_and_State·T1_Build_Pipeline_Contracts·T1_Combat_System_Spec· (+4 more tier) ·T0_Ability_Tree_Registry·T0_Antagonist_Network_Registry·T0_Asset·T0_Boss_Attack_Rail· (+47 more t0) ·_source/02_Tier_2_Region_Pages/angkor_khmer.md·_source/02_Tier_2_Region_Pages/bali.md·_source/02_Tier_2_Region_Pages/central_africa_congo.md· (+9 more region)
READ THAT CANON FIRST — open it and derive from it before you build anything from this document.
If this document disagrees with canon, CANON WINS and this document is the defect — fix the
document, never the canon. Nothing here is applied until it is ratified into canon.
Status: PROPOSAL-TIER (LANE-CANON). v1.1 — THE DENSITY MODEL, 2026-07-29.
v1.0 answered Josh verbatim: *"you'll need concept art for every region, layouts, architecture,
fauna, herbs and art, npcs, bosses, foliage, rifts, magic, weapons, monsters, etc. Not sure if
you've done a deep dive on this to really structure out what's needed so we're prepared for the
build with the box."* The box arrives ~2026-07-30.
v1.1 exists because Josh read v1.0's derived totals and ruled them THE START, verbatim:
*"how many npcs per village, how many in adventuring or neighboring villages and cities, how many
enemies, how many herbs and foliage and trees? How many building and landmarks? Etc. what about
your companions, different armor and outfits and weapons (our 72 weapon types are just types and
they have an entire tiered system with cultural namings and legendaries and abilities) and rarities
for each region? What about all the trades and side quests and supernatural and mythological
creatures and all of the art pieces?"* — then, mid-build: *"Not everyone has the same house. Where
are the trades? City monuments and art?"* and *"Make sure everything you're doing can be consumed
autonomously by the pipelines."*
What v1.1 adds: §6 THE DENSITY MODEL — a unit-economics formula per class (D1), the revised
floor/target totals (D2), the missing-input register (D3), and the variant-axis multipliers with an
explicit cheap-versus-expensive verdict (D4). §7's totals become FLOOR→TARGET bands. §9 proposes
the BOARD MANIFEST schema so approvals flow back into the pipelines with no human transcription
step, and the model ships asdensity_model.csv+density_model.jsonbeside this file.
THE LAW OF THIS DOCUMENT, restated for v1.1: every class gets a formula grounded in a RULED
canon source. Where canon rules no number yet, the model NAMES THE MISSING INPUT and its future
home — it never guesses. Derived-not-guessed applies to every multiplier, including every one that
would have been convenient to assume. Two classes come out of this pass with NO FORMULA AT ALL, and
that is the honest answer rather than a padded one.
This is the ARC-WIDE program: the taxonomy of every concept-art class the build needs, the derived
size of each, the board format Josh reviews, the sequencing against the ruled build order, and the
generator routing from the already-ruled stack.
It does not re-rule the realm program. docs/proposals/REALM_DESIGN_PROGRAM.md (1702 lines,
PROPOSAL, DOC_MAP line 330) already rules the choice-board format for the ELEVEN realms, and
docs/pipeline_review/REALM_ANALYSIS_ART_PIPELINE_2026-07-27.md (643 lines) is the analysis it was
synthesized from. This program generalizes that ruled board to the other twenty-three art classes
and sizes the whole. Where the charter has ruled, this document cites and obeys. Where it proposes
beyond the charter, the text says PROPOSED and names the alternative.
Three governing laws bind every section:
count is estimated. Where a class has no countable home, the row says NO COUNTABLE HOME and names
the future source. Section 7 records the method and the positive controls.
implement (docs/proposals/MUSIC_COMPOSITION_DOCTRINE.md §4.0) and the visual application of the
natural-voice doctrine (docs/NATURAL_VOICE_DOCTRINE.md §2). Section 2.4 makes the art board's
citation line the exact sibling of the register card's source-per-row requirement.
contract (docs/ASSET_DROPIN_CONTRACT.md) and becomes the thing the generators are bound to.
| Question | Derived answer |
|---|---|
| Slice denominator | 14 narrative nodes over 15 chapter×region build legs — RULED, twenty-fourth sitting 2026-07-29. Josh's own hypothesis (*"one chapter is multiple regions?"*) confirmed against the live registry: CH_05 carries sumatra_java + angkor_khmer. The v1.0 arithmetic flag at §5.1 is CLOSED. |
| Slice density surface | 12 region pages · 84 zone-catalog rows · 20 settlement-class zones · 88 spine site rows |
| Distinct art classes the build needs | 43 density classes (v1.0's 24 taxonomy classes, decomposed to the unit-economics grain Josh's questions require) |
| Josh-facing decision boards, slice | 30 |
| Josh-facing decision boards, full game | 161 |
| Total concept-art plates, slice | ~2,525 FLOOR → ~3,470 TARGET (v1.0 said ~1,990) |
| Total concept-art plates, full game | ~12,800 FLOOR → ~17,880 TARGET (v1.0 said ~8,170) — the decimal place moved; §7.3 states why, honestly |
| Of the full-game figure, how much is COUNTED | 8,882 → 12,615 from countable homes (34 classes); 3,917 → 5,261 from labelled ratio projections (7 classes); 0 from guesses |
| Classes with NO FORMULA POSSIBLE today | 2 — non-boss enemy classes (D1-12) and per-region cultural weapon skins (D1-24) |
| Missing inputs named | 30 classes carry one; 2 are genuinely Josh's (§8.3) |
| Board medium | PRIVATE WEB PAGES, reused as marketing material after selection — RULED, twenty-fourth sitting. Carries a licence rider: §4.2a |
| Review cadence | ONE board at a time until ~90% first-pass approval, then all remaining at once — RULED, twenty-fourth sitting. §2.6 amended |
| Care-gated slice sites that may never take a raw-generated Panel A | 47 of 88 site rows (53%); the zone catalogs agree independently — 46 of 84 zone rows protected true, and 51 of 84 care_tier elevated |
---
Twenty-four classes. Josh named twelve; the twelve additions are marked ADDED and each carries its
reason. Per class: what one UNIT is, the derived slice count, the derived full-game count, and the
priority tier.
The charter's structure (REALM_DESIGN_PROGRAM.md §3.2-§3.5). Boards are the only artifact that
reaches Josh; PIPE_ART §5 already rules *"Josh sees only the board's pick line."*
vocabulary (own_capture / museum_open_access / public_domain / licensed / generated_local
/ previz_only; PIPE_ART_2026-07-29.md line 138).
(silhouette, three-quarter orthographic, phase-transform, signature-attack pose with human scale).
A creature sheet is three (silhouette, detail, behaviour pose). An NPC sheet is two (portrait,
costume full-length).
threshold, ornament, ground treatment) drawn as one sheet.
law, the rarity ladder, the Hollow's surface grammar. One pick sets a law that then applies
hundreds of times without another board.
v1.1 note. This table is the TAXONOMY and it stands. §6's density model DECOMPOSES it to the
unit-economics grain Josh's questions require — 43 density classes, because "NPCs" is really
named-persona plus ambient-bucket plus operative, "weapons" is really silhouette plus grade plus
regional plus legendary, and "architecture" is really kit plus dwelling-variation plus trade-footprint
plus civic-art. The 24 classes are how the work is ORGANIZED; the 43 rows are how it is COUNTED.
Three of the 43 are new classes Josh added mid-build (dwelling variation, trade physical presence,
civic monuments and public art) and they are load-bearing, not embellishment — §6.1.2.
Tier P0 = must exist before the Ch 2 build starts. P1 = rides its chapter leg. P2 = slice-end or
post-slice. P3 = full-game only.
| # | Class | Unit | Slice (derived) | Full game (derived) | Tier |
|---|---|---|---|---|---|
| 1 | Region key art (establishing) | BOARD | 12 earthly region rows + 1 fairy = 13 | 66 boards over 76 region rows (9 revisit rows inherit) | P1 |
| 2 | Mood / lighting / weather / time-of-day sets ADDED | SHEET (4 plates) | 14 nodes keyed on emotional_register (14/14 populated); weather still thin — weather_cycle_profile 4 of 13 region rows | 79 nodes (79/79 populated); weather 4 of 76 | P1 |
| 3 | Layouts — zone and site plans | PLAN | 88 site rows (85 distinct ids) | 380 rows (375 distinct) | P1 |
| 4 | Dungeon and rift interiors + entrance mouths ADDED | PLAN + BOARD | 5 dungeon classes; Class A cardinality exactly 20 arc-wide, NOT slice-scoped | same 20 + open Class B/C/D/E rosters | P2 |
| 5 | Architecture kits per culture | KIT | 14/14 nodes carry the anchor; ~134 named forms (prose upper bound) | 79/79 nodes; ~875 named forms | P0 |
| 6 | NPCs — named persona | SHEET (2 plates) | 100 rows | 164 rows | P1 |
| 7 | NPCs — antagonist operatives ADDED | SHEET (2 plates) | 11 rows | 64 rows | P1 |
| 8 | NPCs — crowd / ambient tiers ADDED | SHEET (2 plates) | NO COUNTABLE HOME | NO COUNTABLE HOME | P1 |
| 9 | Bosses | SHEET (4 plates); main bosses also BOARD | 50 rows = 14 main + 36 sub | 281 rows = 79 main + 201 sub + 1 environmental | P1 |
| 10 | Creatures and monsters (real fauna) | SHEET (3 plates) | 115 rows | 150 minted → 420+ RULED (see the note under this table) | P1 |
| 11 | Folklore and mythological beings ADDED | SHEET (3 plates) | 58 named entity tokens | column populated 79/79; 12 folklore rows in the creature roster | P1 |
| 12 | Fauna — ambient | SHEET (3 plates) | 26 AMBIENT + 19 ORDINARY_FAUNA inside class 10's 115 | subsets of the same 150 | P1 |
| 13 | Flora and herb identification plates | PLATE (2: habit + gatherable part) | 25 rows | NOT SIZED — registry covers only the 4 built regions | P1 |
| 14 | Foliage and biome dressing sets | SHEET | NO COUNTABLE HOME (terrain_feature_class_ids 4/13) | NO COUNTABLE HOME (4/76) | P1 |
| 15 | Minerals and materials + gather-node plates ADDED | PLATE | 19 minerals, 24 gather nodes | NOT SIZED — same 4 regions | P1 |
| 16 | Weapons | SHEET (3 plates) | 2 mapped of the 72 roster (62 rows blank) | 72 rows, 11 subclasses | P1 |
| 17 | Equipment and carried objects | SHEET | 1 row (EQ_0001 Mother's Amulet) | 1 row — effectively NO COUNTABLE HOME | P0 |
| 18 | Magic and VFX visual language | LANGUAGE BOARD + variant set | 6 elements live, 9 distinct element×tier pairs; 18 of 185 abilities mapped | 31 elements (10 base + 21 hybrid); 248 live variant keys, 372 at the 12-tier clamp | P0 |
| 19 | Rifts and Hollow surfaces | LANGUAGE BOARD | 1 codex row (HW_0001) + 5 dungeon classes | same | P0 |
| 20 | Familiars | SHEET (3 plates) | 10 rows | 22 rows | P1 |
| 21 | Realms — the grandest displays | 3-panel BOARD (fairy = 4-panel) | 1 (fairy realm, at slice-end) | 10 realms + earth baseline; ×2 decay = 20 condition sets | P2 |
| 22 | Vehicles and mounts | SHEET (3 plates) | 1 (VH_002 Coastal Skiff, CH_08) | 3 rows | P1 |
| 23 | UI and iconography ADDED | Icon set (LANGUAGE BOARD) | 13 rarity rows; 4 art-hook columns at 0/13 | 13 rows | P0 |
| 24 | Cinematic key frames | Key frame (4 plates) | 1 scene spec (SCENE_PROLOGUE_OPENING) | 16 rows | P2 |
THE CREATURE-SCALE CONFIRMATION (RULED, twenty-fourth sitting 2026-07-29). Josh read class 10's
150 and pushed back, verbatim: *"Only 150 creatures? I thought we were going to have lots like over
400 since we're covering so many regions and then even allow them to breed and get rates and shinies
and hollows?"* He is right and the canon agrees with him: T3_Creatures_Tameable [ACTIVE v1.0]
§1.1 states *"The Beastiary catalogs 420-plus total entries per the tameable-roster scope locked at
T1_Architecture_and_State + T1_Threads"* — the 22 named familiars plus 400-plus non-familiar species.
So 150 is the MINTED-SO-FAR population, never the ceiling, and the ~270-species remainder is
region-driven population work that lands as the cascade and the region pages mature. v1.0 was right
to mark full-game creatures as sized-on-live-rows and to refuse to extrapolate; v1.1 now has a RULED
ceiling to size against instead, so D1-15 carries 450 FLOOR → 1,260 TARGET plates.
The three variant axes Josh named in the same breath — breeding, rates, shinies, hollows — are all
ruled canon and are all art MULTIPLIERS on the species base, not new species. §6.4 (D4) rules on
each: breeding is a runtime parametric blend costing zero plates, the "shiny" axis is the ruled
six-morph rare-variant framework costing a recolour pass, spawn rate costs nothing visual, and the
Hollow axis is a surface-grammar pass already governed by the P0 Hollow language board. This is the
single most important cheap/expensive finding in the program: 420 species is expensive, and 420
species × four variant axes is *almost the same price*.
Five further classes are real work but subordinate to the above, so they are sized here and folded
into their parent rather than given their own board:
| Class | Slice | Full game | Folds into |
|---|---|---|---|
| Inscription and script glyph plates ADDED | 21 scripts / 16 spine rows | 87 scripts / 98 spine rows | class 5 (architecture) + class 23 (UI) |
| Festival and ceremony sets ADDED | 16 rows (4 regions) | NOT SIZED | class 1 (region) |
| Trade and craft stations ADDED | 10 trades arc-wide; 2 dwelling classes; 264 housing seeds | 10 trades | class 5 (architecture) |
| Minigame surfaces ADDED | 2 rows (MG_0001 Caci CH_03, MG_0002 Senet) | 2 rows today | class 3 (layouts) |
| Motif imagery ADDED | 1 row (MOT_0001 the mother's ward) | 1 row | class 17 (equipment) |
| Vril sites | 2 rows | 42 rows | class 3 (layouts) |
| Schools | 0 — schools begin Ch 15 | 13 rows | class 5 + class 18 |
| Runes | 0 mapped (19 rows, chapter blank) | 19 rows | class 23 (UI) |
registries/T0_Region_Index [ACTIVE v1.2]/T0_Region_Index DRAFT v1.1.csv — 76 rows. Slice = the 13 rows whose chapters field covers Prologue-Ch 13: fairy_realm, flores_island,
bali, sumatra_java, angkor_khmer, sri_lanka, south_india, swahili_coast, ethiopia,
rift_valley, central_africa_congo, west_africa, south_africa. CH_05 carries two
(sumatra_java + angkor_khmer); every other slice node carries one. node_kind distribution
arc-wide: base 50, revisit 9, mythic_realm 9, atlantic_waypoint 6, story_anchor 1, bookend 1 — the
66-board figure is base + mythic_realm + waypoint + story_anchor, with the 9 revisit rows inheriting
their base row's ratified grammar under a decay-stage delta rather than a fresh board.
T0_Chapter_Index.region_secondary, populated 79/79. The slice's 14 rows yield94 semicolon tokens, of which about four are parenthetical split artifacts
(Great Zimbabwe (Great Enclosure / Zimbabwe Bird soapstone)), so roughly 90 are genuine
named sub-locations. This is the axis the music register cards key on
(MUSIC_COMPOSITION_DOCTRINE.md line 1427: register cards key on region_secondary
sub-locations, not on chapter_id) and the art boards inherit that keying.
docs/spine/CH_NN.md, section ## Key sites and spatial layout — typed v3.1 site rows, one top-level bullet each. Slice 88 rows / 85 distinct ids (three ids repeat: flowering_plain
and sovereign_hall across Prologue+Ch 1, liang_bua_cave across Ch 2+Ch 3). Arc-wide 380 rows /
375 distinct across all 79 nodes.
climactic_affordance non-none = 42 of 88 slice, 221 of 380 arc-wide (vocabulary observed:
vista, threshold, sacred, climactic_geometry, weather_dramatic); protected true =
47 of 88 slice, 196 of 380 arc-wide.
docs/spine/CH_NN.md, section ## Asset anchors, bullet architecture_set_dressing — present on 79/79 nodes and 14/14 slice nodes. Six keys recur
on every single node: creatures_and_fauna, architecture_set_dressing,
material_palette and style_register, music_mood, voice_and_crowd, sfx_substrate. The
~134 slice / ~875 arc-wide form counts are a comma-and-conjunction split of that prose and are an
UPPER BOUND with conjunction noise, not a row count — turning them into rows is exactly rank 5's
asset_category / morphology job.
T0_Boss_Encounter_Registry chapter_id, 281 rows, zero blank. Slice per node — Prologue 1,Ch 1 1, Ch 2 3, Ch 3 4, Ch 4 4, Ch 5 5, Ch 6 4, Ch 7 4, Ch 8 3, Ch 9 4, Ch 10 4, Ch 11 4, Ch 12 5,
Ch 13 4 = 50, and exactly one main per node.
T0_Creature_Roster.chapter_first_encounter, 150 rows (**note: 150, not the 132 the brief carried**). Slice 115. species_class: mammal 82, bird 22, reptile 13, folklore 12, fish 9,
insect 6, mollusc 2, amphibian/insect 1, arachnid 1, mixed 1, amphibian 1.
T0_Chapter_Index.folklore_entities_in_chapter. Slice semicolon-token total 58.Ch 11 is authored as prose rather than a token list (the Congo Basin's benevolent-forest cosmology
is a deliberate absence of malevolent beings, per Turnbull), and Prologue + Ch 1 carry
[POPULATE→T0_Creature_Roster (species_class=folklore)] placeholders. So 58 is the tokenized
count and the honest range is 58-62.
T0_Ability_Tree_Registry, 185 rows × 36 columns. element has 31 distinctvalues (10 base: Air, Earth, Ether-Crown, Ether-ThirdEye, Ether-Throat, Fire, Lightning, Poison,
Vegetation, Water; 21 hybrids). tier_numerical has 8 live values (1.0-8.0). 31 × 8 = 248,
31 × 12 = 372 — the ruled sizing, matching ASSET_DROPIN_CONTRACT.md lines 296-297 verbatim.
Only 18 rows carry a slice unlock_chapter_ref (153 rows blank), yielding 9 distinct
element×tier pairs live in the slice.
T0_Weapon_Registry, 72 rows, canonical_chapter_acquisition blank on 62, so only 2map into the slice. 11 subclasses: RANGE 13, SHORT BLADES 10, BLUNT 9, LONG RANGE 7, BLADES 7,
FIST 5, LONG BLADES 5, THROWN 5, OFF-HAND 5, MAGIC 3, SOUND 3. Class split BRUTE 36 / TRICKERY 36.
T0_Realm_Ruleset_Registry, 11 rows (RLM_0000 earth baseline + ten realms). The ×2 comes from DR-2 item 6-D clause D5 — decay_stage freezes at exactly two values (the realm at its height,
the realm's authored present), and decay_law_binding is populated 11/11.
---
The realm charter's board is the format. This section states it once for all classes, adds the
generalizations the other classes need, and fixes the review cadence.
Per REALM_DESIGN_PROGRAM.md §3.2-§3.5, three options per panel, *"genuinely distinct readings
rather than three renderings of one idea."*
like."* Each of the three options is a plate sheet, not a single image: silhouette-and-architecture,
palette-and-light, and one signature detail — 9 plates. Each option carries four things and no
fifth: a one-line rationale naming the tradition-specific reading; a CITATION LINE to substrate
rows (an empty citation line means the option is not an accurate depiction but a guess with good
lighting); a RIGHTS value; and two badges, care_tier and generation_class. The bar is
AUTHENTICITY, NOT REVERENCE, and it binds in both directions.
floor** — every enhanced option is a strict superset of an accurate option, amplifying scale, light,
density, motion, verticality or legibility and contradicting nothing on Panel A. Two mandatory
labels, WHAT WAS AMPLIFIED and WHAT STAYED TRUE, plus a PLAYABILITY CLAIM (an amplification with no
play claim is decoration) and the ALTERED LAW in one clause.
asked for exactly five kinds of thing: STORY SUPPORT, SIDE QUESTS (minting into the existing
quest-seed queue), EASTER EGGS (never progression-gating), EXPLORATION/ADVENTURE/ACTION HOOKS,
NEARBY IMPORTANT ZONES. Each card carries a provisional id so the pick is an APPLY, not a
re-authoring pass.
amendment lane (*"A2, but the light comes from under the water"*), and a comma list of card ids for
C. A fourth lane, MORE LIKE THIS, regenerates rather than picks.
panel, or an unmarked one; and no previz_only image on Panel A, ever.
PROPOSED, because the charter leaves it unstated: Panel B's plate count per option. Panel A is
fixed at 3 plates per option by the charter's own wording; Panel B has no stated count. Recommend
2 plates per option — one hero view, one the-amplified-law-in-action view — giving 6 Panel-B
plates and a 15-plate board. The alternative (matching Panel A at 3, for 9 and an 18-plate board)
costs a third more generation and review time for a panel whose job is to show a delta, not to
establish a grammar. The charter's own benchmark question 4 already speaks of holding *"a nine-plate
board series"* together, which reads as Panel A being the plate-heavy panel.
Not every class needs three panels. The generalization:
The fairy realm is a four-panel board, the fourth panel generating from the Prologue-height
palette (the F-9 rider).
zoology says), Panel B enhanced. Panel C is dropped for individual beings and runs ONCE per region
instead, on the region board, because surrounding recommendations are a property of a place.
subclass or a whole equipment tier, three options for the family's visual language rather than
three options per object.
Panel B the three candidate visual laws, Panel C replaced by a CONSEQUENCE TABLE showing the law
applied to five sample cases so Josh can see what he is signing for the other 243 keys. One pick
here sets hundreds of downstream assets without another board — this is the highest-leverage board
class in the program and the reason classes 18, 19 and 23 are P0.
The four charter items, plus three this program adds so the pick can land on the DR-2 contract
without a translation step:
| Field | Source | Why |
|---|---|---|
| Rationale line | authored | names the tradition-specific reading |
| Citation line | substrate rows / T0_Source_Material_Registry (1,914 rows) | an empty line disqualifies the option from Panel A |
| Rights value | the ruled six-value vocabulary | previz_only is barred from Panel A |
care_tier badge | the owning registry row | ratified as-is; this program does not widen it |
generation_class badge | T0_Realm_Ruleset_Registry (10/11 populated) | four values invented / historical / living / unsettled; unsettled treated as living by the gate |
ADDED generation_licence_ref | C-12, THE LICENCE SCHEMA COMMIT | a model's licence demotion must fire regeneration_required automatically |
ADDED generation_tier | DR-2 item 6.1, closed enum background / region_standard / region_hero / realm / apex | the fidelity/budget class the pick commits to |
ADDED decay_stage | DR-2 item 6-D clause D3, exactly two values | which authored condition of the place this plate depicts |
The music doctrine's register card is the proven pattern and the art board must be its twin. One
music register card carries: chapter_id and sub-region; the era window read from live
T0_Chapter_Index; tuning_system and cents_table_ref; the timeline or cycle with its indexing
convention; ensemble and palette, period-checked; the FREE grammar; the NAMED SACRED EXCLUSION; a
source citation per row; generation_eligible (NONE / PARTIAL / FULL); the hummability substitution
set; and register_reviewer plus register_review_date. Fourteen cards cover the ruled slice.
Its load-bearing invention is the grammar-and-repertoire split: every card states the FREE
grammar and the EXCLUDED repertoire as two separate lines that do not cancel each other, because
*"a card that names a palette and then excludes that same palette four lines later gives a composer
nothing to act on, and the likely reading — do not touch this culture's music at all — is omission
dressed as care."*
The art board inherits that split exactly. Every region board carries a VISUAL REGISTER BLOCK
with the same two-line structure:
record supports, stated positively and specifically, with a citation per line.
music cards name theirs. The realm registry already proves the pattern works at this granularity:
RLM_0002 carries may_not/sami_markers/no_sami_markers_of_any_kind_on_any_plate_no_noaidi_drum_no_joik_no_gakti.
That is the register of exclusion this program adopts — a named marker, never a shrunk lane.
generation_eligible NONE / PARTIAL / FULL, the direct analogue of the music field, which is whatroutes the subject to Lane R, Lane P or Lane G in §4.
Two further music-card laws transfer without change. The deep-time strata rule — no living people's
idiom may score a deep-time stratum, recorded as CULTURE-NONE — applies with force to the slice,
because Ch 10 (Rift Valley, Paleolithic 1.8mya through the African Humid Period) and Ch 13 (South
Africa, pre-civilizational ǀXam through apartheid) both span deep time and a living present in one
node. And the human check: the ship-tier bar is a named tradition-bearer or specialist reading the
register block, with objections recorded VERBATIM including the overruled ones.
RULED, twenty-fourth sitting 2026-07-29 — THE BOARD MEDIUM IS PRIVATE WEB PAGES. Josh, verbatim:
*"Web page boards, and I'd like to keep those private and eventually after everything's been selected
even use it for marketing material."* This closes v1.0's open item 2 and overturns v1.0's own
in-repo-markdown recommendation, correctly: a 15-plate board reads far better as a rendered page than
as a markdown diff, and v1.0's own strongest objection said so. Three consequences bind:
public until every pick is made. The realm charter's §6.3 no-published-form rule is honored by
privacy rather than by locality.
is still versioned in-repo per the steps below. A pick that lives only on a web page is not canon.
§9's BOARD MANIFEST is the mechanism that makes the page's approval a repo row without a human
retyping it.
1. The pick line is recorded in the board's own markdown under docs/art_boards/<subject>/, and
mirrors into docs/art_boards/MANIFEST.csv per §9.
2. The ratified reading is written to the art bible at docs/art_bibles/<subject>.md (eleven
named PLACE fields, per the art-pipeline analysis §2; a BEING subject takes the twelve-field
docs/art_bibles/_TEMPLATE_BEING.md form instead, WQ_0031 leg 3). Neither directory exists yet — creating them is the program's first commit.
3. The five art-hook columns on the owning registry row are populated. For realms these already
exist and are the exact columns the boards were designed to fill: palette_law, silhouette_law,
impossible_architecture_budget, signature_phenomenon, concept_choice_slots — **0/11
populated today**, with every row's own named_blanks cell reading *"all five art hooks empty."*
4. The rank-5 columns land per entity: asset_concept (the picked visual concept),
morphology and asset_category, folded into mesh_tags as sub-fields `{morphology, region,
style, material, era}`.
5. generation_status advances on the five-state machine — pending → in_progress (prompt hash
set) → complete (asset path + timestamp), with rejected and regeneration_required as
off-tracks. A care-gated id cannot cross in_progress → complete until the capture-rights and
authenticity audit signs off (DR-2 ratified item 4). "Reviewed" is complete plus human sign-off
with director_in_loop_required; "live" is never a stored claim.
6. generation_prompt_hash must include the licence-class token, model id, weights revision,
style-LoRA hash, generation_tier, decay_stage and presentation_tier_ref — so any one of them
changing fires regeneration_required without a human noticing first.
PROPOSED — a concept-art manifest, not a new registry. The natural instinct is to mint
T0_Concept_Art_Registry. Recommend against it. A repo-wide search for T0_Asset_* and
T0_Concept_* returns nothing, and the ruled architecture is deliberate: concept art is *"upstream
reference substrate… not canonical content itself"* (T1_Build_Pipeline_Contracts §2.5, lines
283-295), and PIPE_ART rules *"Nothing binary enters the canon repo; promoted plates enter as
manifest rows + hashes only."* So the home is a manifest, docs/art_boards/MANIFEST.csv, one row
per plate carrying board id, panel, option, subject canon id, rights value,
generation_licence_ref, prompt hash, and pick state. The concept_art_ref column is DECLARED in
T0_Schema_Dictionary (§1.13, a project-relative path) on five registries and is IMPLEMENTED on ZERO of
the 62 live registry headers, so it is the intended FK from the entity row into the manifest
and it cannot be written today — the column has to be added to the live headers first, via the
registry_extensions plus fidelity_baseline mechanism, before any writeback can land. MEASURED at
landing 2026-07-29, and recorded with its own trap: the dictionary escapes every underscore, so a
plain-underscore grep for concept_art_ref returns ZERO against a file that declares it five times
(positive control: mesh_pipeline_type reads 4 escaped and 0 plain in the same file). A search
that cannot match reports zero — the claim is not false, it is unimplemented, and reading it either
way without the escape-aware check gets it wrong. The
one thing a manifest cannot do that a registry can is enforce FK coverage in the gate suite — which
is why the manifest ships with harness/read_boards.py (§4.5), the deterministic PRESENCE-and-SHAPE
tooth the art-pipeline analysis already proposed and which does not exist yet.
RULED, twenty-fourth sitting 2026-07-29 — the cadence is SERIAL-UNTIL-CALIBRATED, THEN BULK.
Josh, verbatim: *"Batch cadence - 1 board at a time until we have 90% guest time approval rates then
do all remaining boards at once since they're web boards I can just check them when convenient."*
This supersedes v1.0's proposed two-boards-per-sitting figure, and it is a better shape than the one
proposed: the calibration phase is where the pipeline learns his taste, and a serial phase makes each
correction land before the next board is generated rather than after twenty are already wrong.
The cadence therefore has two phases, and the phase boundary is a measured rate, not a date:
landed before the next board is generated. The metric is the first-pass approval rate: the
fraction of boards whose Panel A and Panel B picks are taken without a MORE LIKE THIS regeneration.
The phase ends when that rate reaches ~90% on a trailing window. Because boards are web pages
reviewed at Josh's convenience, the serial phase costs calendar time, not sitting time — the
pipeline blocks on the review, Josh does not block on the pipeline.
parallel against the ratified grammar and are published as a set. This is where the 5090's
night-window throughput actually pays off, and it is the phase the §3.5 scheduling constraint was
designed for.
computed, not felt. §9's BOARD MANIFEST carries approval_state and regeneration_count per board
precisely so first_pass_rate = boards_with_zero_regenerations / boards_reviewed is a query rather
than a recollection. Without the manifest, the 90% gate is unmeasurable and the ruling cannot be
executed as stated — which is the strongest single argument for §9.
is noise. Recommend a trailing window of ten reviewed boards, so the gate needs nine of the last
ten taken first-pass. This is execution sizing inside a ruled law, applied rather than flagged.
12 main-boss boards (Ch 2-13; the Prologue and Ch 1 main bosses ride the fairy-realm board), the 5
P0 boards of §3.2, and the fairy realm's 4-panel board at slice-end. Full game: 161 boards —
which under the old two-per-sitting cadence was ~80 sittings, and is exactly why the bulk phase
matters. The tiering below still applies in both phases.
The tiering that makes the layout work reviewable. 42 climactic slice sites cannot each carry a
board. The rule: a site gets its own board only if its climactic_affordance is non-none AND it is a
main-boss arena, a dungeon mouth, or a vril site. Everything else inherits the region board's
ratified grammar and is DIRECTOR-PICKED from a contact sheet, with Josh seeing the applied result on
the next region board rather than a fresh decision. This is the charter's own logic — *"one
establishing board per realm rules the whole visual grammar; zone boards run only after"* —
generalized to earthly regions.
Before Josh ever sees a board, four adversarial critics run and a NO-GO regenerates it:
cultural-authenticity (calibrated both ways), physics-coherence, AAAAA de-slop (the
unlabeled-relabel test), and reveal-discipline. Critics at the opus tier. Josh never sees a board
that failed a floor.
---
docs/PRE_5090_BUILD_PLAN.md lines 146-158, SLICE RESCOPE, Josh RULED 2026-07-27 (fifth and seventh
sittings): *"BUILD ORDER — Ch 2-13 first (the earthly arc, 11 chapters), THEN Prologue + Ch 1. The
fairy realm designs and builds ONCE, at slice-end, after 11 earthly chapters have matured the
concept-art pipeline, the presentation ladder, the W-SPACE grammar and the QA belt. Every rank that
touches the fairy realm therefore sequences LAST inside its own rank, never first."*
Rank 5 — the art-and-asset data leg — carries its own ordering: *"Ch 2-5 first (the built surface),
Ch 6-13 as their region legs land, Pro+Ch 1 at slice-end."* And art is a DROP-IN, not a gate:
FACTORY_CONTRACT.md FR-040 makes the asset passes drop-ins over the asset-path contract, so art
trails its leg rather than blocking it.
Two board pilots are already named and have not run: Atlantis (Ch 66), then the Duat (Ch 69).
Four language boards and one architecture kit. These are P0 because each one, unpicked, forces either
a stall or a guess that hundreds of later assets inherit.
1. The per-element visual law board (class 18). This is the single highest-leverage board in the
program. It is also a NAMED GAP, not merely unbuilt: DESIGN_GAP_REGISTER.md entry 4 amendment
(adjudication 20) records that *"the 31 elements will be generated against no VISUAL law"* and
specifies the fix as a per-BASE-element presentation row carrying dominant hue band, silhouette
primitive, motion signature and sound register, plus a declared hybrid-inheritance rule. Ten base
elements are boarded; the 21 hybrids inherit by the declared rule. Consequence table shows five of
the 248 keys resolved so Josh sees what the law buys.
2. The rarity and UI iconography board (class 23). T0_Rarity_Grade carries 13 rows and four art
hooks — shape_token, colour_ref, beam_vfx_ref, card_layout_ref — all 0/13 populated,
and display_name_text is empty too. Every drop, beam, card and pickup in the game reads off
these. One board, 13 rows populated.
3. The Hollow and rift surface board (class 19). T0_Hollow_Codex has one row, HW_0001, and
the Hollow is a ruled content pillar across six axes. The visibility law and the affliction
register are visual by nature. One board sets the negative-vril surface grammar for every rift,
pop-up and instability zone.
4. The Manggarai architecture kit (class 5, Ch 2-3). Already authored in prose on both nodes'
## Asset anchors: the mbaru niang cone-houses, the lingko spider-web fields, the Ngada
megalithic ngadhu and bhaga platforms — all marked protected. This kit is the pipeline's first
real cultural-register test and it must clear before Ch 2 stages.
5. The equipment board for EQ_0001, the Mother's Amulet. Not deferrable. Ch 2's asset anchor
specifies an object that *"needs a signature the eye can recognize much later without a line of
explanation now — a shape, a material, a way it takes the light in the cold ground and again in
the outside light,"* recovered at CH02_B11, worn unbroken to the Ch-13 departure where it is given
away, and constrained by HL_0095 to carry no legible fairy-realm script at all. It is the slice's
longest-running visual promise and its board is the first object board.
Per leg, in this order:
1. The region establishing board (Panel A cites the region's substrate rows; Panel C mints quest-seed
cards into the existing queue).
2. The architecture kit, derived from that node's architecture_set_dressing anchor.
3. The main-boss board, plus director sheets for that node's 2-4 sub-bosses.
4. Creature sheets for that node's first-encounter rows (Ch 5 is the spike at 23, Ch 10 at 17, Ch 2
and Ch 11 at 11 each).
5. Folklore-being sheets for that node's named entities (Ch 5 spikes at 8, Ch 12 at 7).
6. Layout plans for the node's site rows, tiered per §2.6.
7. Flora, mineral and gather-node plates where the node's region has rows.
8. Ability VFX variant sets for that node's unlocks (Ch 2: 4, Ch 3: 2, Ch 4: 5, Ch 6: 4, Ch 7: 2,
Ch 10: 1 — the other eight slice nodes unlock nothing mapped, which §5.4 flags).
Four steps added in v1.1, and they run against the leg's ZONE CATALOG rather than its spine node —
the per-settlement layer keys on place, not chapter (§6.0):
9. Foliage and ground-treatment sets for the region's distinct terrain and footfall_surface
classes — 3 to 6 per region, 54 across the slice (D1-19). These come EARLY in the leg, not late:
every other place plate in the leg sits inside one of them, so a kit or layout composed before the
biome set exists gets recomposed.
10. Dwelling variation sets for the leg's settlement zones — the culture's kit spread across the
three status bands and the two ruled decay stages, plus a trade-mark on the homes of practitioners
(D1-06). The kit from step 2 is the input, not the output.
11. Trade footprint sets for the trades the region's Section 14 actually names — 2 to 10 per region,
53 across the slice — carrying the workshop, the stall, the work-in-progress scene, and signage cut
in the region's own script class (D1-07).
12. The civic layer — the settlement's own monuments and public art, drawn from that node's
## Civilizational marks bullets (5 per node at the slice median) for city-tier settlements and a
shrine or marker for the rest (D1-08).
Ambient crowd buckets (D1-10) ride step 10, six per settlement zone, because a bucket's costume is
a function of the settlement's status bands and trades — authoring the crowd before the dwellings is
what produces villagers who look like they live nowhere.
The fairy realm's four-panel board, the Prologue and Ch 1 layouts, the Prologue cinematic key frame
(SCENE_PROLOGUE_OPENING, the slice's only scene spec), and the dungeon and rift interiors once the
Class-A twenty has a slice-scoped subset. The fairy realm runs last by ruling, on the matured
pipeline, and its board is delivered as local files rather than any published form.
The setup runbook is a DAY-ONE document (Stages 0-8, attended times 75-120 / 90-140 / 60-80 / 60-90 /
45-75 / 90-150 / 60-120 / 20-30 / 45 / 90 minutes, with Stage 7's soak running overnight and Stage 8
closing the next morning against the soak report). There is no enumerated day-1-to-day-7 plan in
the repo — searched Day [2-7] across docs/ with Day 1 as the positive control, which returns
exactly one hit that refers to the pre-arrival authoring window, not the box. What is ruled: setup on
box-day 1, Stage 8 close on box-day 2, then Continuo's up-front window at roughly one full box-day,
then Humanity's first box work — kill tests and benchmark day — which is remote-drivable.
PROPOSED art-lane shape for the first week, inside those ruled windows:
downloads during the attended stages; the full ART roster is ~95-105 GB.
matters most to this program is question 3: the de-slop critic's unlabeled-relabel test used as a
MODEL SELECTOR across HiDream-O1 vs Qwen-Image-2512 vs Z-Image-Turbo, where *"Whichever model's
plates are least interchangeable wins."* Also settle question 4 (per-realm style LoRA versus
multi-reference personalization — the loser is dropped, not kept), question 6 (does the paintover
lane measurably inherit structure, tested by depth-map IoU between the Lane-R underlay and the
Lane-P output), and question 5's GPU-free licence re-read including the unresolved Gemma-4
discrepancy that the whole HiDream text-encoder chain depends on.
FLAGGED as a proposed amendment, not a silent change: question 3 is written to run on *"one
realm brief."* Recommend running it on two briefs — the ruled Atlantis pilot AND a Ch-2 Flores
brief — because the first twelve legs are earthly and a model selected purely on realm plates may
be the wrong pick for ethnographic accuracy. The cost is one extra afternoon on a decision that
binds every plate in the program.
boards, the four language boards, the Manggarai kit, the amulet board. That is 9 boards, about
135 plates.
The scheduling constraint that shapes all of it, and which the art lane must respect rather than
discover: three heavy GPU jobs per night in the windows 00:00-04:00, 05:00-08:00 and 20:00-00:00,
with 04:00-05:00 reserved for the soak and non-negotiable, and 08:00-20:00 the UE window admitting
exactly one tenant at 8 GB or under. Board generation is therefore a NIGHT job — Qwen-Image-2512 at
26-28 GB is single-tenant by itself and 29 GB of 32 is the tight fit the whole hardware decision
turns on. Daytime, the only art tenant that fits is SeedVR2-3B at NVFP4, 3-4 GB, so days are for
upscale and refinement passes over the night's output. Style-LoRA training is an
unattended-overnight job at 20-24 GB. The heavy lanes run sequentially, never concurrently, and the
lane fully unloads before any 3D-gen run or UE cook.
---
No new tools. Everything below is from the ruled stack, and the licence tier is *"a rule keyed on a
licence document, not a judgement call."* The governing law, ART_PIPELINE §2.3: any image model whose
weights carry a MAU cap, territory exclusion, revenue ceiling or non-commercial clause is
disqualified from producing anything that reaches an art bible; such tools are previz_only, *"usable
at will internally, never load-bearing."*
Lane R = REFERENCE (ungated). Lane P = PAINTOVER (5090-gated for volume). Lane G =
GENERATED (5090-gated). *"Panel A is Lane R for every realm whose source tradition is living."* This
program's derived consequence for the slice: 47 of 88 site rows are protected true, so a
majority of the slice's layout art routes Lane R on Panel A and may never take a raw generation
there. Per-chapter protected counts: Prologue 0, Ch 1 1, Ch 2 2, Ch 3 4, Ch 4 6, Ch 5 5, Ch 6 4,
Ch 7 2, Ch 8 2, Ch 9 5, Ch 10 3, Ch 11 3, Ch 12 5, Ch 13 5.
| Class group | Primary | Fallback / role | Licence |
|---|---|---|---|
| Places, region key art, layouts, realms (classes 1-4, 21) | HiDream-O1-Image-Dev (8B, 28 steps, up to 2048², multi-reference personalization, skeleton/layout conditioning) | Qwen-Image-2512 where realism or text-in-image dominates | MIT / Apache-2.0 |
| Beings, NPCs, bosses, creatures, familiars (classes 6-12, 20) | Qwen-Image-2512 (20B MMDiT, realism) | HiDream-O1 for stylized folklore beings | Apache-2.0 |
| Objects — weapons, equipment, vehicles (classes 16, 17, 22) | HiDream-O1 | Z-Image-Turbo for fast iteration sweeps | MIT / Apache-2.0 |
| Fast iteration and variant sweeps on any class | Z-Image-Turbo (6B, 8 NFE, sub-second, fits 16 GB) | — | Apache-2.0 |
| Paintover, the human-in-loop canvas (Lane P, all classes) | HiDream-O1 edit mode via HiDreamO1ReferenceImages inside Krita AI Diffusion | Qwen-Image-Edit-2511 for multi-reference identity | MIT / Apache-2.0; Krita GPL-3.0, tool only, no output taint |
| Structure control on every class | Qwen-Image-ControlNet-Union and Z-Image-Turbo-Fun-Controlnet-Union (canny, softedge, HED, depth, pose, MLSD) over Depth-Anything-3 depth extracted from Lane-R plates | — | Apache-2.0; pin the Apache variants of Depth-Anything-3 by filename, the Giant and Nested variants are CC BY-NC 4.0 |
| Upscale and finish, all classes | SeedVR2 3B at NVFP4 (Blackwell-native, 3-4 GB) | Real-ESRGAN (BSD-3-Clause) | Apache-2.0 |
| Materials and PBR derivation | Material Maker | Materialize | MIT / GPL-3.0 |
| Speed on the primaries | Nunchaku / SVDQuant v1.2.0 at NVFP4, ~3× over BF16 and a 3.6× memory cut | — | Apache-2.0 |
Style consistency across a class's plates is native in 2026, not IP-Adapter: HiDream-O1
multi-reference personalization, Qwen-Edit-2511 multi-image identity, and a per-subject style LoRA
(the charter's per-realm LoRA, generalized here to per-region), with ControlNet-Union holding
structure. IP-Adapter is EXCLUDED from the shipped path — Apache-2.0 but SD1.5/SDXL-only, 22M params,
last substantive release January 2024: *"The brief's 'IP-Adapter consistency tooling' is a 2024
answer."* Which of the LoRA or the multi-reference path actually holds a nine-plate series together
is benchmark question 4, and the loser is dropped rather than kept.
Josh's board-medium ruling ends *"eventually after everything's been selected even use it for
marketing material."* That single clause changes the licence posture of the whole program, because a
plate that was internal-only becomes a commercially distributed marketing asset. The rider:
previz_only plate can NEVER enter the marketing set. This is not a preference, it is thelicence text: FLUX.2-dev and FLUX.2-klein-9B carry the FLUX Non-Commercial License, and Krea-2
carries a sub-one-million-dollar revenue ceiling. Marketing distribution is precisely the commercial
use those terms exclude. The existing fence — no previz_only image on Panel A, ever — now extends:
no previz_only image on any panel of a board destined for marketing reuse.
selected, the safe reading is that every board is marketing-destined from birth. The practical
consequence is the simplest possible rule and the one the pipeline should enforce: **FLUX and Krea
are barred from boards entirely.** They remain usable for private composition exploration that never
reaches a board — which is a genuinely narrower lane than v1.0 assumed, and the narrowing is the
licence's, not ours.
generation_licence_ref (C-12) folds the licence-class token into generation_prompt_hash, so a demotion fires regeneration_required automatically. v1.1
adds one field to the manifest: marketing_eligible, computed from the licence class rather than
asserted, so the marketing set is a QUERY over the manifest and never a hand-assembled folder.
own_capture and museum_open_access values become more valuable, not less. Josh's ownreference photography is the cleanest rights value in the vocabulary and is the only one with zero
marketing ambiguity. This is a reason to prioritize it, recorded here rather than left implicit.
true` and route Lane R on Panel A. A Lane-R reference plate is often licensed or museum-sourced, and
a museum's open-access grant is not automatically a marketing grant. So the marketing set will
skew toward Panel B (the enhanced, generated-from-clean-weights side) and toward own_capture —
which is a sound outcome for a marketing page anyway, but it must be a declared routing fact rather
than a discovery made during a store-page build.
Non-Commercial License, and the licence text itself returned HTTP 401 to anonymous fetch:
*"An output-carve-out inside a non-commercial weights licence is precisely the ambiguity §2.3
refuses in the shipped path."* Only FLUX.2-klein-4B (4B, ~13 GB, Apache-2.0) is shippable.
Practical rule for this program: FLUX may be used freely for internal composition exploration, and
no FLUX-derived plate may appear on Panel A or enter an art bible.
one million United States dollars… trailing twelve-month basis"* — §2.3's named disqualifier,
verbatim.
DEFAULT, so it *"would silently taint every plate it touched."* The ruled fence: the lane pins an
upscale-weights allowlist and models/upscale_models/ is never trusted by default. This applies to
every class, on every plate, and is the single easiest way for the program to poison itself.
commercially-clean AI PBR-estimation gap is STILL OPEN. Classes 5, 13, 15 and 16 — the ones that
want material derivation — route through Material Maker (MIT) as the ruled answer, which benchmark
question 7 asks be recorded as a decision rather than left as a hope.
§5.c blocks output distribution outside the Territory, so no Hunyuan meshes ship, and the concept
art this program produces hands to a TRELLIS-class 3D lane whose concurrency ceiling is 24 GB.
weights are NVIDIA Open Model License, commercial-permitted. *"Hand them to the animation lane, not
here."* This program's only ARDY-adjacent surface is class 18's presentation-ladder animation
variants, which are DR-2 ordinal 12 (Animation / montage, keyed ability_id +
presentation_tier_ref) and belong to the animation lane, not the concept-art lane.
apache-2.0but links a Google-hosted Gemma 4 license page. HiDream-O1 is the primary for the place classes and
its text-encoder chain depends on this. Resolve at pre-flight, before the first GPU hour.
generation_licence_ref (C-12), and the licence-class token folds into generation_prompt_hash so a demotion fires regeneration_required automatically. This is the
mechanism that makes the previz-only fence enforceable rather than aspirational — PIPE_ART notes
the §2.3 constraint is one *"which nothing currently enforces"* today.
training, tiling-texture sets. All output is previz-tagged. **No promotion ever happens
unattended.**
subject, the first run of any new model, and the Krita paintover loop.
slice, *"but a board is a decision surface, not a playtest, so boards are the one visual artifact
that legitimately reaches him early."*
order is a query over registry rows for generation_tier, care_tier, decay_bearing and
decay_stage, and **rows whose care_tier is in the living-tradition set can never dispatch to
Lane G** — the composer refuses and emits a Lane-R plate request instead.
FLUX.2-dev LICENSE.md and the Krea org returned HTTP 401 to anonymous fetch); the commercial
image-licence decision, where the standing recommendation is *"buy neither"*; and own_capture
reference photography, which is his to create and the cleanest rights value in the vocabulary.
SUPERSEDED IN PLACE 2026-08-03: the subject-and-board output path this section originally ruled
(E:\art\boards\<subject>\<board_id>\) is replaced by the class-keyed content-addressed form
<class_id>/<canon_id>/<plate_role>__<hash12>.<ext>, because harness/check_art_pointers.py
(GATE 43) enforces that form and two ruled path forms in one repo is a hallucination waiting for the
next agent.
harness/read_boards.py — deterministic, PRESENCE and SHAPE only, never content, with --self-test
must-fire and must-not-fire fixtures and exit-3. It is LANDED (GATE 37 boards; this section's
"it does not exist yet" was true when written on 2026-07-29 and is corrected here rather than left
to rot), and it is joined by GATE 43 art_pointers, which resolves the path and byte-verifies the
sha256 the board rows carry. A tooth without a failing fixture is not armed.
Formats, ruled: 16-bit PNG for plates and albedo, EXR for lighting studies, PNG or TGA for texture
import via idempotent replace_existing=True, and no JPEG in the promotable path.
The output path, ruled and gate-enforced:
$HUMANITY_ART_ROOT (default E:/art/boards) at <class_id>/<canon_id>/<plate_role>__<hash12>.<ext> — the density_model.csv class, then a LIVE
primary key in that class's key_registry, then the role and the first twelve characters of
generation_prompt_hash. The full law, the three sentinels, the multi-id dispositions and the
canon_ref token grammar are docs/CONCEPT_ART_PRODUCTION_PROGRAM.md §3.2, which is the HOW half
and is never re-derived here.
<subject>/<board_id>/ survives as the BOARD PAGE path in the repo (docs/art_boards/<subject>/<board_id>/), which is what it was always good for. It is a review
surface, not an asset address.
E:/pipe_archive/ and are *"kept, never deleted — a rejected asset is theQA gate's evidence."* Under the content-addressed form that is a property of the filesystem rather
than a habit: a regeneration cannot overwrite its predecessor, because its hash differs.
ComfyUI runs as two instances (C-1): the WSL2 Puget container on port 8188 as the primary generation
host, and Windows-native ComfyUI on port 8189 as the ART fast-iteration lane, sharing one models/
tree. No lane's service runs before its port is in the firewall table.
---
CLOSED. Josh, verbatim: *"Yeah 14 nodes but I think 15th comes because one chapter is multiple
regions?"* — his hypothesis, confirmed against the live registry. **The slice is 14 narrative nodes
over 15 chapter×region build legs.** CH_05 carries two region rows (sumatra_java +
angkor_khmer);flores_islandspans Ch 2-3 in the other direction, which is why the region-row
count is 13 rather than 15. Both numbers in the repo were describing something real, and neither was
wrong — the binding plan's "15" was counting build legs while this program was counting nodes. The
rescope block, the EA-boundary line and the store-page honesty rule are corrected in place; the
remaining mechanical "15-node" mentions sweep with this program's landing. **The slice CONTENT is
unchanged, so every derived count in this document stands as derived.** The v1.1 density model sizes
per-node work on 14 and per-region work on 15 legs / 12 built region pages, and says which it is
using in every formula.
The original v1.0 flag text is retained below as the provenance of the ruling.
PRE_5090_BUILD_PLAN.md line 147 states *"The vertical slice is PROLOGUE→CH 13, 15 nodes,"* and the
15-node figure has propagated into PRE_5090_BUILD_PLAN_VOL2.md (§ target, soak scope, QT-13),
ROADMAP_POST_5090_TO_SHIP.md (five places, including the EA boundary ruling and the P3 exit
criterion), MARKETING_WEB_PROGRAM.md (*"the first 15 nodes, complete"* as the store-page honesty
rule), and ranks 5 and 11 of the binding queue.
Prologue plus Ch 1 through Ch 13 is 14 nodes. T0_Chapter_Index returns exactly 14 rows for that
span. docs/spine/ holds exactly 14 files for it. And MUSIC_COMPOSITION_DOCTRINE.md §4.0.2
independently derived the same figure: *"The ruled slice is PROLOGUE through CH 13 — fourteen
nodes,"* with §58 adding *"fourteen nodes, not eight."*
So the repo carries both numbers, and the binding plan carries the wrong one. This program sizes on
14 throughout. Node counts are locked structural canon under the cardinal rule, so the correction is
Josh's to ratify, not the loop's to apply silently — and it touches a marketing-honesty
commitment, which raises the stakes beyond arithmetic.
v1.1 status: THREE OF THESE ARE NOW COUNTABLE, and one got worse. Reading the region pages' zone
catalogs supplied the place-grain denominator v1.0 lacked, so NPC crowd/ambient tiers (→ D1-10,
240 slice plates off the ruled 6-buckets-per-crowd), foliage and biome dressing (→ D1-19, 54
region×terrain sets) and housing (→ D1-06, 20 settlement zones) all have formulas now. The one
that got worse is enemies, which v1.0 did not list at all and which v1.1 establishes as the
program's largest hole (D1-12). The table below stands as the v1.0 record; §6.3's D3 register is the
current one.
| Class | Why uncountable today | Named future source |
|---|---|---|
| Architecture kits (5) | 79/79 nodes carry the prose anchor; T0_Dwelling_Registry has 2 CLASS rows, T0_Environment_Grammar_Registry 2 rows (EG_0001 Lava Vent, EG_0002 Sieidi Stone) | Rank 5 — asset_category / morphology / mesh_tags turn the prose into rows. Rank 7 authors EG_ rows for every slice combat and traversal surface |
| NPC crowd and ambient tiers (8) | T0_Character_Index covers 164 NAMED entities only; no census of the ambient population exists | Rank 11 — mint T0_Persona_Index, one row per entity, carrying the persona tier flagship / supporting / ambient-bucket. That tier field IS the crowd-versus-named art census |
| Housing and dwellings | 2 class rows, no instances | Rank 10 — the §7.5 housing-ledger typing pass, 264 seeds on the built regions, growing with the slice |
| Foliage and biome dressing (14) | T0_Region_Index.terrain_feature_class_ids populated 4/76 | Rank 30 — the Region_Index environment rail |
| Mood, lighting, weather sets (2) | HALF-SOLVED. The MOOD axis is now countable: T0_Chapter_Index.emotional_register is populated 79/79 (single-word values — wonder, tenderness, grief), joined by emotional_valence_arc and cost_ledger, all 79/79, and music_mood_tags + environmental_params are 79/79 too. The WEATHER and TERRAIN axis is still thin: weather_cycle_profile, ambient_elemental_affinity, movement_modifier, terrain_permanence_default, terrain_integrity_skin, protected_terrain_ref and env_density_band_default are each 4/76; env_emitter_site_ids and env_drain_site_ids are 0/76 | Mood: key the lighting board on emotional_register NOW. Weather: rank 30, the Region_Index environment rail |
| Flora, minerals, gather nodes, festivals (13, 15) | 25 / 19 / 24 / 16 rows exist but cover only flores_island, bali, sumatra_java, angkor_khmer — 4 of 76 regions. The slice figure is complete; the full-game figure is NOT SIZED and must not be extrapolated | Each region leg extends its own registry as it lands |
| Equipment (17) | 1 row total | The reward-taxonomy class-table brief minted by the fourteenth sitting |
| Dungeon and rift instances (4) | Class A cardinality is *"exactly 20 (10 vril + 10 health capacity pieces)"* ARC-WIDE, with no slice subset; Classes B/C/D/E are open-cardinality; T-RIFT-5 declares itself UNARMED because the living-or-occupied predicate site_occupancy_class is a queued mint | The site_occupancy_class mint, then the per-instance registry rows |
| Per-element visual law (18) | DESIGN_GAP_REGISTER.md entry 4 amendment names it: *"the 31 elements will be generated against no VISUAL law"*; no hue, silhouette or motion column exists on any registry | The per-base-element presentation row that the same amendment specifies |
palette_law, silhouette_law, impossible_architecture_budget, signature_phenomenon, concept_choice_slots. Every row's
named_blanks cell says so. concept_choice_slots is precisely the column these boards fill.
display_name_text at 0/13.presentation_tier_ref landed as a real column on T0_Ability_Tree_Registry (column 36) and T0_Weapon_Registry (column 22) and is 0/185 and 0/72 populated. The rail exists; the populate
leg is open.
mesh_tags exists on 8 registries and is 0-populated on all of them — 0/281 bosses, 0/150creatures, 0/164 characters, 0/72 weapons, 0/22 familiars, 0/64 antagonists, 0/42 vril sites,
0/1 equipment. generation_status and generation_tier are likewise 0 across all eight.
asset_concept, asset_category and morphology exist as columns on zero registries — rank 5is a column-add as well as a populate.
generation_licence_ref exists on zero registries; C-12 queued it as THE LICENCE SCHEMA COMMIT. Note the naming conflict to avoid: PIPE_ANIMATION asks for the same column as asset_licence_ref;
the ruled name is generation_licence_ref.
docs/art_boards/ nor docs/art_bibles/ exists. Neither does harness/read_boards.py. canonical_chapter_acquisition, and 12 of 14 slice nodes carry an unpopulated
[POPULATE→T0_Weapon_Registry chapter-availability mapping] placeholder in
weapons_available_in_chapter. Only three weapons are named across the whole slice. A leg that
reaches its weapon board will find nothing to board. Rank 13 and the weapon-availability mapping
own this.
unlock_chapter_ref, so eight ofthe fourteen slice nodes unlock nothing mapped. The class-18 language board is unaffected — it
boards a LAW, not instances — but the per-node variant sets in §3.3 step 8 have no target on those
eight nodes.
T0_Scene_Spec_Registry has 1 slice row and 0 for CH_01 through CH_13. The other 15 rows sitat Ch 55, 58, 76, 77 and the Epilogue. Cinematic key frames for the earthly arc have no rows to
key on.
All three closed at the twenty-fourth sitting, 2026-07-29. (1) The slice count = 14 nodes / 15
region legs, §5.1. (2) The board medium = private web pages with marketing reuse, §2.5 + §4.2a.
(3) The cadence = one board at a time until ~90% first-pass approval, then all remaining at once,
§2.6. **v1.1's open Josh set is a different and much shorter list — §8.3, and it is TWO items, both
weapon-naming canon.** The v1.0 text is retained below as provenance.
1. The slice node count, §5.1. 14 versus 15. Locked structural canon, propagated into a
marketing-honesty commitment. Recommendation: ratify 14 and correct the five documents in one
pass. Strongest objection: if "15 nodes" was deliberate and counts something this program has not
found, the correction would itself be the error — which is exactly why it is not being applied
silently.
2. Board delivery medium. Already an open Josh item (PIPE_ART §5 item 5, §8 item 1), and the
charter §6.3 ruled it for realms as versioned in-repo markdown under docs/art_boards/, nothing
published. The question this program adds: do the 29 slice boards take that same in-repo form,
or does he want a published page for the earthly regions with local files reserved for the fairy
realm? Recommendation: in-repo for all of them, because he reviews at the machine and the pick line
needs to land in a commit anyway. Choose the published form only if he wants to review away from
the desk. Strongest objection: a 30-plate board reads considerably better in a rendered page than
in a markdown diff, and review quality is the whole point.
3. The review cadence, §2.6. Two boards and roughly 30 plates per sitting, 30-45 minutes, one
sitting per region leg. He has said he will spend the time; this asks him to confirm the BATCH
SIZE so the factory can schedule board delivery against leg completion rather than guessing.
Recommendation: accept, with a standing right to say "send four" once the pipeline matures.
The per-tier variant sizing is ruled at FULL strength and this program plans for it, not around it.
Josh OVERRULED the band-collapse recommendation at the fourteenth sitting: *"OPTION (A) — FULL
PER-TIER VARIANTS… no band collapse, no hybrid inheritance,"* sizing the contract for **248 live
variant keys and 372 at the 12-tier clamp**, with *"parametric interpolation only INSIDE an authored
tier's polish pass, never instead of one."* The engine doctrine's rule D10 makes the corollary a
canon defect rather than a scalability choice: serving the tier-1 effect for a tier-12 ability is
wrong at every spec class; only its cost scales. Class 18 is therefore the largest single line in the
full-game totals table, and that is the ruled answer, not an overrun.
---
This is v1.1's reason for existing. Josh read v1.0's class counts and asked the only question that
matters for a build: not *what kinds of art* but *how much of each, per place*. A count of 88 site rows
says nothing about how many houses stand in a village, how many people walk its street, how many of
them visibly work, or what the village's own history put in its square. Those are the numbers the
factory needs, and they are the numbers this section derives.
The law. Every class below carries a FORMULA whose every input is either (a) a live count, (b) a
RULED number, or (c) a NAMED MISSING INPUT with its future home. No multiplier is assumed. Where the
honest answer is *no formula is possible yet*, the row says so — two rows do, and they are the two
most important findings in this section.
Why v1.0 could not do this and v1.1 can. v1.0 sized off the spine and the registries, which key on
CHAPTER. Per-settlement density keys on PLACE, and the place-grain layer is the region pages' ZONE
CATALOGS — which v1.0 never read. Reading them supplies four new denominators:
| Denominator | Derived value | Source |
|---|---|---|
| Region pages with a zone catalog | 12 — every slice earthly region; fairy_realm has none by design (it builds last) | _source/02_Tier_2_Region_Pages/*.md |
| Zone rows across them | 84 — flores 11, congo 8, rift_valley 8, south_africa 8, bali 7, ethiopia 7, south_india 7, sri_lanka 7, west_africa 7, angkor 5, swahili 5, sumatra_java 4 | the ## Zone Catalog tables |
| Settlement-class zones | 20 of 84 — the per-settlement denominator for every one of Josh's three amendments | terrain ∈ {agricultural, urban} OR a settlement token in zone_id |
| Settlement TIERS | 9 city-tier (7 urban + 2 sacred-city), 9 village-tier, 2 port-tier | the same rows, read on terrain + id |
The catalogs also carry columns v1.0 had no visibility into, and each becomes a formula input below:
terrain (12 classes: sacred_site 20, water_body 11, mountain 10, coastal 9, forest 9,
agricultural 8, urban 7, wilderness 5, wetland 2, cave_system 1, desert 1, ruins 1),
footfall_surface (84/84 populated, 5 classes: stone 29, earth 27, water_edge 14, forest_litter 10,
mixed 4), ambient_threat (low 41, moderate 38, high 5 — v1.0 never saw the high band),
protected (46 true / 38 false, independently corroborating the spine's 47-of-88),
care_tier (elevated 51 / standard 33), and build_priority (P1 61 / P2 23).
One column is a silent zero worth recording: worldcover_biome is 0/84 on the zone catalogs,
which is a second instance of the same hole §5.2 already named at the region level
(terrain_feature_class_ids 4/76). The biome rail is empty at BOTH grains, so D1-19 keys foliage on
terrain + footfall_surface — the two columns that are actually populated — rather than on the
column the schema intended for it.
The ruled density band this section obeys. PRE_5090_BUILD_PLAN_VOL2.md §A.1 records Josh's
2026-07-24 ruling that density is a CURVE, not a uniform bar — ≈100-200h main / 1-2k h side+weave /
8-10k h 100%, with Ch 2-5 deliberately lighter and seed-rich. §11.5.5's QT-17 scorecard makes it
measurable and states the early-game floor as read directly off CH_03: **7 sites / 12 beats / 1 main +
3 sub bosses / 1 fork × 4 options, with 2-4 gather nodes per region** and *"ambient personas: Ch2
names 7; floor, not ceiling."* Two things follow, and both bind this section:
ruled curve. So every D1 row states a FLOOR (the early-game seed-rich end, which is what Ch 2-5
actually needs) and a TARGET (the mid-game end the same class reaches by Ch 13 and beyond).
RESCOPE BLOCKER on QT-19 states it plainly: the family *"may NOT be armed past Ch 5 until the bands
extend and the off-curve nodes carry declared sentinels,"* the Prologue is a ceiling TUTORIAL
(presentation, not content budget) and Ch 1 is declared out of corpus scope. VOL2 refuses to
write band values because inventing them *"would cross the tuning firewall."* **This program adopts
the same refusal.** D1's floors are derived from live rows; its targets are derived from ruled
ceilings; neither invents a per-node band. The band/sentinel pass — landing with
check_slice_scorecard.py, which does not exist — is the named missing input D3-14, and it is the
precondition for validating any per-node art target past Ch 5.
Full machine-readable form: density_model.csv (43 rows, 15 columns) and density_model.json
beside this file. The tables below are the human read of the same data; the CSV is what the pipeline
consumes (§9). Every row's ruled_source column carries the citation summarized here.
The single most valuable derived fact in this whole section: the crowd-to-art-unit ratio is already
RULED, and it is 40 to 6. docs/RUNTIME_GENERATIVE_LAYER.md §A.1 line 83: *"A crowd of 40 sharing 6
persona buckets and one worldstate bucket is 6 cache entries, not 40 live calls."*
ENTITY_PERSONA_SYSTEM.md §2.3 states the art-side twin — ambient personas are *"thin, pooled, and
largely templated… they get a persona bucket, not an individual bible"* — and §5 adds that ambient
buckets *"live as shared templates, not per-entity docs."*
So Josh's question has a real, derived, ruled answer: **a forty-person village costs six NPC art units,
not forty.** The bodies are free; the buckets are the plates. Nobody has to guess a crowd size.
| id | Class | Formula | Slice floor→target | Full game floor→target |
|---|---|---|---|---|
| D1-09 | NPCs — named persona | named registry rows × 2-plate sheet | 200 → 358 | 328 → 2,000 |
| D1-10 | NPCs — ambient crowd buckets | settlement zones × 6 buckets × 2 plates | 240 → 240 | 1,086 → 1,086 (projected) |
| D1-11 | NPCs — antagonist operatives | operative rows × 2 | 22 → 22 | 128 → 128 |
| D1-12 | Enemies — non-boss classes | NO FORMULA POSSIBLE | 0 | 0 |
| D1-30 | Companions — base look | staged companions × 2 | 6 → 6 | 36 → 36 |
| D1-31 | Companions — outfit accretion | companions × accretion states × 2 | 2 → 6 | 36 → 216 |
T0_Character_Index rows keyed into the slice. Thetarget adds a population v1.0 never counted: the region pages' **Section 12 "All Characters Full
Entries" blocks carry 79 named-figure entries** across the 12 pages (bali 15, sumatra_java 12,
west_africa 11, south_india 7, sri_lanka 6, and 5 or fewer elsewhere; rift_valley carries 0,
which is itself a finding — a deep-time node with no named-figure roster). These are page-authored
figures like *the mosalaki*, *the 'ata madi*, *the tu'a teno* — real social roles with real art
requirements. **Their overlap with the 164 registry rows is UNMEASURED and this document does not
guess it**, so the target is stated as the un-deduplicated sum and labelled as such. Full-game target
= the ruled-illustrative *"roughly a thousand-plus named entities once every chapter's roster is
expanded"* (ENTITY_PERSONA_SYSTEM.md §4.2), which is Josh's own scale target rather than a
projection of ours.
ruled buckets × 2 plates (portrait + costume) = 240. Full-game applies the slice's settlement
fraction (20/84 = 23.8%) to the 380 arc-wide site rows → ~90 settlements → 1,086, labelled
PROJECTED because 64 of 76 regions have no zone catalog yet (D3-15). **Floor equals target here on
purpose:** how many distinct LOOKS one bucket needs is unruled (D3-1), so the model refuses to
multiply. If a bucket turns out to need three looks to read as forty bodies, this line triples — and
that is a decision to be made, not a number to be assumed.
enemies"*. The honest answer: **the ordinary enemy has no row, no id prefix, no schema, and no rank
in the ranked queue.** Every countable combat population in canon today is either a named individual
(281 boss rows, 64 antagonist operatives, 164 characters) or an animal (150 creature rows). There is
no bandit, no soldier, no patrol, no hollowed mob. Verified exhaustively: all 62 registry
directories scanned by os.listdir with every CSV header regexed for
enemy|mob|faction|hostile|patrol|archetype|combatant|spawn|minion — 10 registries matched a column,
not one is an enemy table; T0_RNG_Drop_Table and T0_Boss_Attack_Rail are header-only with
0 data rows; no Faction registry exists (WS7_WIRING_BUILD_PLAN.md line 190 says so verbatim);
T0_Reputation_Ladder_Registry holds 2 exemplar rows; T1_Combat_System_Spec §9 names *"opponent
class"* as a variety axis and never enumerates it, setting density as prose only (*"in the dozens
of designed encounters"*). spawn_rate is blank on 150/150 creature rows. The zone catalogs'
ambient_threat is a 3-value scalar and nothing converts it into classes. The authority on this
is DESIGN_GAP_REGISTER.md line 33 — gap #1, the top-ranked gap in the register, class MISSING,
owner W-SPACE — and it is NOT in the 30-rank window plan, while rank 17 (*"per-enemy
weaknesses"*) presupposes the table that does not exist. That dangling dependency is flagged loudly
at §8.4. The art consequence: the program cannot size enemies, and any figure it published would
be invention. What it CAN do is name the unit for when the spec lands — the art unit is the enemy
CLASS silhouette, not the instance, exactly as D1-10's unit is the bucket and not the body.
*"different armor and outfits"*. What is ruled: gear PARITY and return-on-departure
(COMBAT_PROGRAM_ADDENDUM.md §9: *"a departing companion GIVES BACK the gear and investment"*),
landed as data in T0_Loadout_Set_Definition (applies_to_allies TRUE, departs_with_companion
FALSE on all 3 rows) — which rules gear stats and ownership, and says nothing about appearance.
What is ruled about appearance, for exactly one character: T3_Core_Characters [ACTIVE v1.0] §3.2 on
Ntala — *"Clothing evolves with each region visited; by late game it is a textile patchwork of every
culture encountered."* No equivalent line exists for any other companion, and
T0_Character_Index carries exactly ONE mesh_id_ref, so the schema structurally cannot express a
second outfit. This is a MISSING INPUT (D3-12) and it is EXECUTION, not Josh's — it is a schema
and sizing call inside a law he already authored. **Recommendation, applied: generalize Ntala's ruled
patchwork law to the companion class as an ACCRETION LADDER, not a per-region wardrobe.** A companion
who visits 40 regions does not need 40 outfits; she needs a look that visibly accumulates. Band the
ladder at 6 states (execution sizing) and the full-game line is 216 plates rather than the ~2,700
a literal per-region read would demand. The strongest objection: the accretion read is
characterization for a specific person (Ntala travels the whole arc from Ch 13), and a guest
companion aboard for four chapters may correctly need one look and no ladder at all — which the
formula handles, because staged-companion count and ladder depth are separate inputs.
Josh's amendments, verbatim: *"Not everyone has the same house. Where are the trades? City monuments
and art?"* Each is a first-class class below. Together they are the immersive-sim bar: a settlement
where every house matches and nobody visibly works is exactly the generic-slop failure the AAAAA
mandate bans, and v1.0's single "architecture kit per culture" row would have produced precisely that.
| id | Class | Formula | Slice floor→target | Full game floor→target |
|---|---|---|---|---|
| D1-05 | Architecture kits per culture | nodes with anchor × 7 building types | 98 → 134 | 553 → 875 |
| D1-06 | Dwelling variation within a settlement | settlements × status bands(3) × decay(2) [+ trade-marks] | 120 → 226 | 540 (projected) |
| D1-07 | Trade physical presence | region×trade pairs × 5 footprint units | 106 → 265 | 668 → 1,670 (projected) |
| D1-08 | Civic monuments and public art | city-tier × node marks + lesser × 1 | 20 → 67 | 79 → 380 |
| D1-03 | Layouts — climactic sites | sites with affordance × 3 | 126 → 126 | 663 |
| D1-04 | Layouts — ordinary sites | remaining site rows × 1 | 46 → 46 | 159 |
culture" and gave a prose form-count. The type roster below is read off the zone catalogs' own
vocabulary, and every one of the seven types is grounded in a named live zone row rather than
chosen from a generic list: dwelling (manggarai_village_edge, wae_rebo_village,
village_edura_ward), sacred (the 20 sacred_site zones), market (golconda_deccan_trade_node,
palembang_port, kilwa_kisiwani), forge (wootz_forge_and_herbalists_room,
ile_ife_bronze_city — TRADE_03), authority-hall (abomey_royal_court, todo_royal_village,
sovereign_hall), knowledge (aksum_scriptorium — TRADE_09), workings/extraction
(witwatersrand_kimberley_workings — TRADE_02). 14 slice nodes × 7 types = 98 kit-form sheets
as the floor; v1.0's ~134 prose-derived named forms becomes the TARGET, which is the right relation
between the two figures — the floor is what the roster demands, the target is what the prose already
describes.
supporting canon is the persona doctrine: web_position carries *"kin, teachers, faction ties,
rivalries"* per person (ENTITY_PERSONA_SYSTEM.md §2.2), and the regions-are-relational-webs
doctrine makes a settlement a web of differentiated positions rather than a set of interchangeable
huts. A fisher's house, the healer's, and the headman's are three different social positions with
three different homes, and the doctrine already says so — it had simply never been read as an art
requirement. Three variation axes, and only one of them needed a new number:
T0_Dwelling_Registry holds 2 rows and both are PLAYER homes (DW_0001 trade-home from CH_05,
DW_0002 world-home from CH_39) — there is no NPC dwelling class table at all. But the region
pages' own rank vocabulary consistently names three layers: an AUTHORITY layer (the *mosalaki*
customary leader, the *tu'a teno* ritual authority, the *tuka timba mata dasi* balance-judge), a
PRACTITIONER/specialist layer (the *'ata madi* oath-reciter, the counter-practitioner, the trade
masters), and the implicit COMMONER residual. Recommend 3 bands because the pages already speak
in three; recording it as a missing input because the pages are prose and the number is not yet
schema.
the region×trade practice matrix below (D1-07), reused rather than re-derived.
decay_stage is ruled atexactly two values (DR-2 item 6-D clause D3: the place at its height, the place's authored
present). The dwelling model reuses that axis rather than minting a wear ladder, which keeps the
multiplier ruled and the plate count honest.
→ 20 settlements × 3 bands × 2 decay = 120 plates FLOOR; adding the 53 trade-marked variants
gives 113 distinct looks × 2 = 226 TARGET.
DESIGN_GAP_REGISTER.md line 214 lists *"Enterable interior density"* under GTA V / RDR2 as
DIVERGENT-BY-DESIGN, and the register defines that term precisely: *"we deliberately differ (a
design choice, not an oversight)."* So the divergence from GTA-density interiors IS ruled; **what
our interior density actually is, is not.** Recommendation, applied: interiors for
STORY-BEARING homes only, derived from the spine's own site rows (a home that hosts a beat gets
an interior; a silhouette on the hillside does not) — which respects the declared divergence
instead of quietly reversing it.
*"Where are the trades?"* is a density question, and it now has a matrix behind it. Counting
T0_Trade_Registry's 10 trades against each region page's **Section 14 (Trade Skills, Detailed
Content): bali 10, sumatra_java 10**, congo 5, sri_lanka 4, swahili 4, west_africa 4, flores 3,
angkor 3, rift_valley 3, south_africa 3, ethiopia 2, south_india 2 = 53 pairs. Per-trade spread:
TRADE_04 Herbalism 11 of 12 regions, TRADE_08 Engineering 8, TRADE_09 Inscription 6, then Mining /
Blacksmithing / Tailoring / Fishing 5 each, Animal Communication 4, Alchemy and Culinary 2 each. The
footprint unit is five things, and each is a real art requirement rather than a category: the
workshop exterior, the workshop interior, the market stall, the work-in-progress scene
(the thing that makes a settlement read as inhabited rather than staged), and **signage in the
region's own script — which has a live substrate: T0_Language_Script_Registry carries 87
scripts, 21 reading into the slice**, typed by inscription_application_class (STONE_CUT 56,
PERFORMATIVE 7, DOCUMENTARY_PAPER 7, METALLIC_CAST 5, ORAL 4, GEOGLYPHIC 3…), so a forge's sign can
be cut in the correct medium and not merely lettered. FLOOR = 53 × 2 (exterior + WIP scene, the two
no ruling makes optional) = 106; TARGET = 53 × 5 = 265. Missing input: the trade-home compound
visual rail is 2/10 populated on home_base_upgrade_ceiling, compound_membership and
shared_build_grammar_ref (D3-10), and workshop enterability inherits D3-3.
monuments and art?"* lands on the civilizational_marks lane — the ruled L2 builders-of-knowledge
field (DEEP_BOOK_PROCESSING_CONTRACT.md §2.5b, schema at EXR_RECORD_SCHEMA_v0.2.md §7, consumed
by harness/enrich.py's civ_marks_hints() and printed as pack section *"0d. CIVILIZATIONAL MARKS
(MANDATORY L2 field)"*). It is live at 380 mark bullets across 79 nodes (min 3, max 10 at CH_15,
median 5), with 70 in the slice and a further 79 queued in docs/proposals/civ_marks_queue/.
Its relevance ticket is significance lens E2 — "Visual art, iconography and aesthetic canon"
(SIGNIFICANCE_LENSES.md line 71). The monumental half also has live rows:
T0_Vril_Site_Registry's 42 sites include megalith 5, obelisk 2, geoglyph/earthwork 2. So the
formula is: **city-tier settlements carry civic art drawn from their own node's marks; lesser
settlements carry a shrine or marker. 9 city-tier × 5 marks + 11 lesser × 2 = 67 TARGET**, floor
20 (one civic piece per settlement zone, the no-settlement-is-bare floor). Arc-wide the honest
target is 380 — one physical realization per mark bullet — with floor 79 (one per node). Missing
input D3-9: not every mark is an object (a mark can be a mathematical technique or a
stoneworking method), so the lane needs a mark_physicality flag before the 380 is a work order.
The portable-artwork half — statues, masks, textiles, relics as carried items — has **no registry at
all**; the shape-correct empty stub is T0_Equipment_Registry (1 row, already carries item_class +
region_native), and that is D3-8.
| id | Class | Formula | Slice floor→target | Full game floor→target |
|---|---|---|---|---|
| D1-15 | Creatures — species base | species × 3 | 345 → 345 | 450 → 1,260 |
| D1-16 | Folklore and mythological beings | entity tokens × 3 | 174 → 186 | 350 |
| D1-17 | Legendary species | 33 ruled × 4 | 0 → 0 | 132 |
| D1-18 | Flora and herb plates | flora rows × 2 | 50 → 50 | 175 (projected) |
| D1-19 | Foliage and biome dressing sets | distinct (region × terrain) pairs | 54 → 108 | 342 → 684 (projected) |
| D1-20 | Minerals and gather nodes | minerals + gather nodes per region | 43 → 67 | 498 (projected) |
| D1-21 | Festivals and ceremony sets | festival rows × 2 | 32 → 32 | 608 (projected) |
| D1-29 | Familiars | familiar rows × 3 | 30 → 30 | 66 |
asked about herbs, foliage and trees as if they were three counts; they are two, and one of them is
not a per-plant count at all. **A forest is not authored plant by plant — it is authored as a
per-biome dressing set** (canopy, understory, ground cover, deadfall, the region's signature
silhouette). So the unit is the SET, and the denominator is the number of distinct biome contexts.
Derived from the zone catalogs: 54 distinct (region × terrain) pairs across the 12 slice regions
— flores 6, south_africa 6, sri_lanka 6, west_africa 6, ethiopia 5, bali 4, rift_valley 4,
south_india 4, swahili 4, angkor 3, congo 3, sumatra_java 3. That is the slice's foliage-set FLOOR:
54 set sheets. The TARGET doubles it by re-reading the same pairs on footfall_surface (populated
84/84, five classes) for the ground-treatment set — a floor the eye reads constantly and which no
other class covers. Full game projects at 4.5 sets per region over 76 rows = 342, labelled
PROJECTED. The per-PLANT count stays separate and small: T0_Flora_Registry holds **25 rows
across 11 regions** (a v1.0 correction — v1.0 said the flora registry covered only 4 regions; it
covers 11), and those are identification plates for gatherable species, which is a different art job
from dressing a hillside.
gather nodes per region. So slice floor = the 19 minerals + 24 live gather rows = 43**; target =
19 + (12 regions × 4) = 67. This is the one class where a ruled band exists at exactly the grain
the art program needs, and it is used verbatim.
420+ ruling (§1.2's note). Folklore beings stay at the slice's 58 tokenized entities with the
honest 58-62 range. **Legendary species enters the model for the first time at its RULED count: 33
(21 mortal + 12 elven), CVD §17.12 cardinal numerical canon** — 132 plates arc-wide at a 4-plate
hero sheet, 0 in the slice because the fairy realm builds last. Note the composition with the
twenty-second sitting: only one of the twelve elven species is ever a player-linked familiar (the
childhood bond of Ch 1); the other eleven are world-facing art and still need sheets, which is why
they are sized here rather than folded into D1-29.
THE WEAPON LATTICE, derived honestly. Josh's framing was exact: *"our 72 weapon types are just
types and they have an entire tiered system with cultural namings and legendaries and abilities."* Four
axes, and they cost radically different amounts. The naive product explodes; the ART-UNIT product does
not, because two of the four axes parameterize.
| Axis | Ruled count | Is the art unit a new plate? | Cost |
|---|---|---|---|
| TYPE silhouette | 72 rows, 11 subclasses, BRUTE 36 / TRICKERY 36 | YES — one 3-plate sheet per type | 216 plates |
| GRADE variant | 6 art-bearing of T0_Rarity_Grade's 8 item_grade tokens | NO — a material/trim/emissive pass | 432 variants, 11 boards |
| REGIONAL cultural skin | UNRULED | YES, and expensive | NOT SIZEABLE |
| LEGENDARY bespoke | 72 ruled as a count; 1 rostered | YES — a 4-plate hero sheet | 288 plates |
T0_Rarity_Grade has no weapon axis — weapons inherit item_grade, whose 8 tokens are none / common / uncommon / rare / epic / legendary / mythic / signature. none is the slotless
floor and bears no art; 5 are rollable (common…legendary); mythic is obtainable_by_roll=FALSE,
gate_kind=questline — THE MYTHIC TOOTH, ruled at the seventeenth sitting as a post-endgame
achievement grade; signature is unique_per_type=TRUE. So 6 grades bear art, matching Josh's
own "5 rarity grades + mythic" read with signature as the seventh, unique case. **72 × 6 = 432
grade variants — and they cost 11 boards, not 432**, because §2.2 already batches object boards by
subclass: one grade-ladder language board per subclass sets the family's whole ladder. This is D4's
cheapest large win.
T0_Weapon_Registry's 22 columns includeno rarity or grade column at all (D3-7), so the item_grade axis has nothing to join to. Also
corrected from v1.0: canonical_chapter_acquisition is now populated on 10 of 72 rows, not 2 —
the mapping is improving but 62 remain blank (rank 13).
(CVD §12.5 / Pillar 10, *"weapon-of-origin bonuses"*, regional combat identity) and a full 72-row
proposal exists with a *Cultural instance / home* column on every row
(docs/proposals/WEAPON_SYSTEM_PROPOSAL.md §5.1-5.2, e.g. Scimitar → *shamshir / saif / kilij /
nimcha*). But nothing landed: the registry has no cultural-name column, Pillar 10's named
artifact — the Regional Combat Modifier table — *"has no registry"* and Pillar 10 is
*"data-unfalsifiable"* (FOUNDATION_ENHANCEMENT_ROADMAP.md lines 304-309), and the proposal itself
carries [DECISION NEEDED - JOSH] flags at lines 232 and 234, the latter explicitly *"Touches weapon
naming/identity."* Naming is cardinal canon and this program does not touch it. Until it is
ruled, the regional multiplier is unknown and D1-24 is sized at zero rather than at a convenient
guess — the one place in this document where a zero is the honest number and not a gap in the search.
*"72 legendary weapon quest triggers"* (T1_Build_Pipeline_Contracts line 63; echoed in
COMBAT_PROGRAM_ADDENDUM.md and T0_Rune_Registry RN_0016). Exactly one is rostered —
LEG_WPN_036 in T0_Questline_Index, gating WPN_036 the macuahuitl — and that row's own note is the
finding: *"the full 72-instance legendary roster + its id/name convention are unrostered in the
corpus."* COMBAT_ENCOUNTER_SYSTEM.md line 446 agrees: *"No legendary-quest boss is authored."* The
art is sizeable (72 × 4 = 288) because the count is ruled; the 71 NAMES are not ours to mint.
| id | Class | Formula | Slice floor→target | Full game floor→target |
|---|---|---|---|---|
| D1-22 | Weapons — type silhouette | types × 3 | 30 → 195 | 216 |
| D1-23 | Weapons — grade variants | types × 6 art-bearing grades | 0 → 165 | 432 |
| D1-24 | Weapons — regional skins | UNRULED multiplier | 0 | 0 |
| D1-25 | Weapons — legendary bespoke | 72 ruled × 4 | 0 → 0 | 288 |
| D1-26 | Equipment and carried objects | rows × board | 15 → 15 | 15 |
| D1-27 | Ability VFX — mastery-tier variants | element×tier keys × 3 | 69 → 69 | 744 → 1,116 |
| D1-34 | UI iconography and rarity language | board + rarity rows × 4 icons | 67 → 67 | 67 |
| D1-35 | Per-region exchange media | regions × 1 | 0 → 12 | 0 → 76 |
splitting the question.** Two different things were bundled: *rarity* and *regional economy*. The
ruled per-region fact is the mixed-exchange economy — no universal coin (ship rulings,
2026-07-24), which is a CURRENCY art class: 12 slice regions × one exchange-medium plate (the cowrie,
the weight, the bar, the token). **Rarity is the opposite case, and the recommendation is to keep it
GLOBAL.** Per-region rarity variance is not ruled anywhere, and it should not be invented: a rarity
ladder whose colours and beams change per region destroys the exact instant-read the ladder exists to
provide. Recorded as a decided-not-to (D3-13), applied rather than flagged, with the strongest
objection stated — a globally uniform rarity language is one of the few surfaces where this game
looks like every other loot game, and if that ever reads as slop the answer is a richer global
ladder, not a regional one.
12-tier clamp**, ruled at FULL per-tier strength at the fourteenth sitting (*"OPTION (A) — FULL
PER-TIER VARIANTS… no band collapse, no hybrid inheritance"*), with *"parametric interpolation only
INSIDE an authored tier's polish pass, never instead of one."* This is the one variant axis that D4
classes as EXPENSIVE because a ruling says it may not be cheapened — the engine doctrine's D10
makes serving a tier-1 effect for a tier-12 ability a canon defect, not a scalability choice. 1,116
plates at the clamp is the ruled answer, not an overrun.
Full per-class arithmetic is §7. The bands, and the honest reading:
| v1.0 | v1.1 FLOOR | v1.1 TARGET | |
|---|---|---|---|
| Slice (14 nodes / 15 legs) | ~1,990 | ~2,525 | ~3,470 |
| Full game (79 nodes / 76 region rows) | ~8,170 (~8,540 at clamp) | ~12,800 | ~17,880 |
Composition of the full-game band, so nobody has to trust a single number:
| Basis | Classes | Floor | Target |
|---|---|---|---|
| COUNTED — a live row count or a ruled ceiling | 34 | 8,882 | 12,615 |
| PROJECTED — a labelled ratio over an unbuilt surface | 7 | 3,917 | 5,261 |
| NO COUNTABLE HOME — sized at zero, honestly | 2 | 0 | 0 |
| GUESSED | 0 | 0 | 0 |
The decimal place moved, and here is exactly why. The full-game target is 2.2× v1.0's figure.
None of the growth is inflation; all of it is one of five specific things, each traceable to a row:
1. Two ruled ceilings replaced two live-row counts. Creatures 150 → 420 (T3, confirmed by Josh
at the twenty-fourth sitting) and named entities 164 → 1,000+ (ENTITY_PERSONA_SYSTEM §4.2, which
is Josh's own scale target). Those two changes alone add ~2,900 plates.
2. Three of v1.0's "NO COUNTABLE HOME" rows became countable once the zone catalogs were read:
ambient crowd buckets (1,086), foliage sets (342), and the dwelling/trade/civic settlement layer.
3. Josh's three amendments added three genuinely new classes — dwellings, trade footprints, civic
art — worth ~2,590 at target and about 30% of the growth. They are not embellishments; without them
the settlements are interchangeable and unpopulated, which is the failure mode the mandate names.
4. Five classes that v1.0 correctly marked NOT SIZED are now PROJECTED with their method labelled
(flora, minerals/gather, festivals, dwellings, trades). Each carries a per-region ratio from the
built regions and each is flagged so nobody mistakes the projection for a count. If the unbuilt
regions populate more thinly than the four built ones, these fall — and they should be re-derived
per leg rather than trusted.
5. The weapon lattice was decomposed from one 216-plate row into four axes totalling 936 —
silhouette + grade + legendary — with the regional axis still at zero pending Josh.
What would make the target WRONG in the other direction. Three of the four cheap axes (D4) are
cheap *because a ruling makes them parameterizable*. If the per-bucket variant depth (D3-1) turns out
to need three looks, D1-10 triples to ~3,300. If interiors (D3-3) land at anything above story-bearing
homes, D1-06 and D1-07 both grow. And the whole per-settlement layer rests on **20 settlement zones
across 12 of 76 regions** — the arc-wide figure is a projection over a surface that does not exist yet
(D3-15), and it is the single largest source of error in the band.
Thirty classes carry a missing input. Each has a future home and a ruler. Two are genuinely Josh's
— both weapon-naming canon. The rest are execution: schema adds, populate legs, and sizing calls
inside laws already ruled, which under the cardinal rule are generated and applied with the path
shown, not flagged.
| # | Missing input | Future home | Ruler |
|---|---|---|---|
| D3-1 | Ambient-bucket variant depth — how many looks one of the 6 buckets needs to read as 40 bodies | rank 11's T0_Persona_Index mint + a bucket_variant_count column | execution |
| D3-2 | NPC dwelling status-band count — recommended 3, grounded in the region pages' own rank vocabulary | T0_Dwelling_Registry widened from its 2 player-home rows to an NPC dwelling class table | execution |
| D3-3 | Enterable-interior density — the divergence from GTA-density IS ruled; our floor is not | the W-SPACE interior spec; recommendation applied = story-bearing homes only | execution |
| D3-4 | Non-boss enemy classes — no row, no prefix, no schema | *"a solo-scoped engagement spec under T1_Combat"* (DESIGN_GAP_REGISTER.md lines 63-66) + VOL2 §E TG-9 construct class + TG-12's Creature_Roster aggro columns | execution — but UNQUEUED; see §8.4 |
| D3-5 | Per-region cultural weapon naming | WEAPON_SYSTEM_PROPOSAL.md §5.1-5.2 → a T0_Weapon_Registry cultural-name column | JOSH — cardinal naming canon; the proposal already flags it at lines 232/234 |
| D3-6 | The 71 unrostered legendary weapons — names and id convention | the legendary-weapon questline roster; T0_Questline_Index states the absence | JOSH — naming canon against a ruled count of 72 |
| D3-7 | Weapon grade→registry join — no rarity column exists on the weapon registry | rank 5 / the reward-taxonomy class-table brief | execution |
| D3-8 | Portable relic / artwork-object registry — statues, masks, textiles, relics as carried items | T0_Equipment_Registry (1 row; already carries item_class + region_native) | execution |
| D3-9 | mark_physicality flag — which civilizational marks are objects rather than techniques | the civ_marks_queue + EXR_RECORD_SCHEMA_v0.2.md §7 | execution |
| D3-10 | Trade-home compound visual rail — 2/10 on three columns | T0_Trade_Registry populate | execution |
| D3-11 | Zone-level biome class — worldcover_biome 0/84, terrain_feature_class_ids 4/76 | rank 30, the Region_Index environment rail | execution |
| D3-12 | Companion costume slot — one mesh_id_ref per character; the schema cannot hold a second outfit | rank 5 mesh_tags + a costume_set_ref column; generalize Ntala's ruled patchwork law | execution |
| D3-13 | Per-region rarity variance — not ruled; recommendation is to keep the ladder GLOBAL | recorded here as a decided-not-to | execution (decided) |
| D3-14 | Ch 6-13 density bands + Prologue/Ch-1 sentinels — the ruled blocker the art model inherits | the band/sentinel pass, landing with check_slice_scorecard.py (does not exist) | execution — precondition for validating any per-node target past Ch 5 |
| D3-15 | Arc-wide zone catalogs — 12 of 76 regions have one; every full-game per-settlement figure is a ratio | the per-region page build, one per leg | execution |
| D3-16 | Slice weapon mapping — 62 of 72 blank canonical_chapter_acquisition | rank 13 | execution |
| D3-17 | Creature variant population — spawn_rate 0/150, rare_variant 10/150, dex_completion_class 1/150 | the region-leg creature populate + the ~270-species remaining mint | execution |
| D3-18 | Festival / flora / mineral / gather arc coverage — registries cover 4-11 of 76 regions | each region leg extends its own registry as it lands | execution |
| D3-19 | Region-page-to-registry NPC overlap — the 79 Section-12 figures vs the 164 registry rows | a dedup pass at rank 11's persona mint | execution |
| D3-20 | Realm and rarity art hooks — 0/11 and 0/13 | the boards themselves fill them (§2.5) | execution |
Josh named four creature variant axes and four weapon axes in one breath, which reads like a
combinatorial explosion. It is not, and the distinction is the most useful thing this section
produces: an axis either MULTIPLIES PLATES or it PARAMETERIZES them. A shiny is a recolour pass,
not a new board. Getting this wrong in either direction is expensive — treating a cheap axis as
expensive wastes the 5090's nights, and treating an expensive axis as cheap ships slop.
CHEAP — parameterize; no new board, often no new plate. 15 of 43 classes.
| Axis | Why it is cheap | Ruled basis |
|---|---|---|
| Creature rare-variant "shinies" | The morph taxonomy is a RULED six-member set — leucism, melanism, xanthism, piebaldism, chimerism, cultural-sacred-variant. Every one is a hue/mask operation on the base sheet. ONE morph-law language board covers all 420 species. | T3_Creatures_Tameable §2 rare-variant framework; CVD §17.13 sigma bound |
| Creature breeding | Offspring are a parametric blend of parent sheets — no plate at all. The art cost is zero; the cost is a blend rule. | T3_Familiars_Named §1.7 Familiar Garden + breeding firewall |
| Spawn rates | No visual surface whatsoever. | — |
| Hollow variants | A surface-grammar pass governed by the class-19 Hollow language board, which is already P0. One pick, applied to every creature and rift. | T0_Hollow_Codex; the hollow-expansion axes (TWO TIERS ruled) |
| Weapon grades | 72 × 6 = 432 variants delivered by 11 subclass boards as material/trim/emissive passes over an existing silhouette. | T0_Rarity_Grade item_grade; §2.2 object-board batching |
| NPC crowd bodies | 40 bodies per 6 buckets, RULED. The 34 extra bodies are free. | RUNTIME_GENERATIVE_LAYER.md §A.1 line 83 |
decay_stage | Ruled at exactly two values, so it doubles only the decay_bearing subjects — a bounded condition pass, not an open ladder. | DR-2 item 6-D clause D3 |
| Dwelling wear/age | Reuses decay_stage rather than minting a wear axis. | the same clause |
| Foliage and ground sets | The unit is the SET; a hillside is dressed by instancing, not by authoring plants. | Zone Catalog terrain + footfall_surface |
EXPENSIVE — a real new plate or board per instance. Each of these is a per-instance authoring cost
and none can be parameterized away.
| Axis | Why it is expensive |
|---|---|
| Creature SPECIES base | The only creature axis that costs a sheet. 420 ruled species × 3 = 1,260 plates. |
| Weapon TYPE silhouette (72) and LEGENDARY bespoke (72) | A legendary is a story object with a questline; it cannot inherit a family's grammar. |
| Weapon REGIONAL skin | Expensive AND unruled — the worst combination, and the reason D3-5 is Josh's. |
| NPC ambient BUCKET (6/crowd) | The bucket IS the plate. Cheap per body, expensive per bucket. |
| Named NPC persona sheet | Each is a specific person in a specific web position. |
| Architecture kit; dwelling status band; CIVIC MONUMENT | A civic monument reflects its own settlement's history — it is the one class that structurally cannot be shared between settlements, because sharing it would erase the differentiation that is its entire purpose. |
| Companion outfit accretion state | Banded at 6 by recommendation precisely because the literal per-region read is unaffordable. |
| Mastery-tier ability VFX (248 live / 372 clamp) | Expensive BY RULING. The fourteenth sitting overruled the band collapse; D10 makes serving a tier-1 effect for a tier-12 ability a canon defect. This is the one axis where "make it cheap" is the wrong answer and the ruling says so. |
The headline for the factory: of the eight axes Josh named, five are cheap (breeding, shinies,
rates, hollows, grades) and the two that are not — species bases and legendary weapons — are exactly
the two whose counts are already ruled. The per-tier VFX axis is expensive on purpose. So the density
model's growth is concentrated in a small number of classes, and every one of them is either a ruled
ceiling or one of Josh's three amendments.
---
Plate arithmetic uses the unit definitions in §1.1 and the 15-plate board of §2.1. v1.1 change:
every line is a FLOOR→TARGET band per §6.0's ruled density curve, and classes with no countable home
are shown at zero with the reason rather than omitted. **The zone catalogs' 84 rows are NOT a separate
plate line** — they are the page-side mirror of the spine's 88 site rows and are used as the
settlement/biome denominator, so counting both would double-count the same ground.
| id | Class | Subjects | Unit | FLOOR | TARGET | Josh boards |
|---|---|---|---|---|---|---|
| D1-01 | Region key art | 12 earthly (fairy counts once, on D1-32) | board | 180 | 180 | 12 |
| D1-02 | Mood / light / weather | 13 → 14 nodes | 4-plate sheet | 52 | 56 | 0 |
| D1-03 | Layouts — climactic sites | 42 of 88 | 3-plate plan | 126 | 126 | 0 (tiered) |
| D1-04 | Layouts — ordinary sites | 46 | 1-plate plan | 46 | 46 | 0 |
| D1-05 | Architecture kits | 14 nodes × 7 building types → ~134 forms | kit sheet | 98 | 134 | 1 (P0 exemplar) |
| D1-06 | Dwelling variation | 20 settlements × 3 bands × 2 decay (+53 trade-marks) | plate | 120 | 226 | 0 |
| D1-07 | Trade physical presence | 53 region×trade pairs × footprint | sheet | 106 | 265 | 0 |
| D1-08 | Civic monuments and public art | 9 city-tier + 11 lesser settlements | plate | 20 | 67 | 0 |
| D1-09 | NPCs named | 100 registry rows (+79 page figures, overlap unmeasured) | 2-plate sheet | 200 | 358 | 0 |
| D1-10 | NPCs — ambient crowd buckets | 20 settlements × 6 ruled buckets | 2-plate sheet | 240 | 240 | 0 |
| D1-11 | Antagonist operatives | 11 | 2-plate sheet | 22 | 22 | 0 |
| D1-12 | Enemies — non-boss classes | NO COUNTABLE HOME (gap #1) | — | 0 | 0 | 0 |
| D1-13 | Bosses — main | 14 (12 boarded) | board | 180 | 180 | 12 |
| D1-14 | Bosses — sub | 36 | 4-plate sheet | 144 | 144 | 0 |
| D1-15 | Creatures and fauna | 115 of 150 minted | 3-plate sheet | 345 | 345 | 0 |
| D1-16 | Folklore beings | 58 tokenized (58-62 honest) | 3-plate sheet | 174 | 186 | 0 |
| D1-17 | Legendary species | 0 — fairy realm builds last | 4-plate sheet | 0 | 0 | 0 |
| D1-18 | Flora and herb plates | 25 rows across 11 regions | 2-plate | 50 | 50 | 0 |
| D1-19 | Foliage and biome sets | 54 (region × terrain) pairs | set sheet | 54 | 108 | 0 |
| D1-20 | Minerals + gather nodes | 19 + 24 live → A.1 band 2-4/region | 1-plate | 43 | 67 | 0 |
| D1-21 | Festivals | 16 rows (4 regions) | 2-plate | 32 | 32 | 0 |
| D1-22 | Weapons — type silhouette | 10 mapped of 72 (was 2 in v1.0) | 3-plate sheet | 30 | 195 | 0 |
| D1-23 | Weapons — grade variants | 11 subclass grade boards | language board | 0 | 165 | (in D1-34) |
| D1-24 | Weapons — regional skins | UNRULED multiplier — Josh's | — | 0 | 0 | 0 |
| D1-25 | Weapons — legendary bespoke | 0 in slice | 4-plate sheet | 0 | 0 | 0 |
| D1-26 | Equipment | 1 (EQ_0001) | board | 15 | 15 | 1 |
| D1-27 | Magic and VFX | 9 element×tier pairs, 18 abilities | language board + variant set | 69 | 69 | 1 |
| D1-28 | Rifts and Hollow | 1 codex + 5 classes | language board | 15 | 15 | 1 |
| D1-29 | Familiars | 10 | 3-plate sheet | 30 | 30 | 0 |
| D1-30 | Companions — base look | 3 staged (Ch 2-7 SOLO by ruling) | 2-plate sheet | 6 | 6 | 0 |
| D1-31 | Companions — outfit accretion | Ntala's ruled law, generalized | variant | 2 | 6 | 0 |
| D1-32 | Realms | 1 (fairy, 4-panel, slice-end) | board | 20 | 20 | 1 |
| D1-33 | Vehicles | 1 (VH_002 CH_08) | 3-plate sheet | 3 | 3 | 0 |
| D1-34 | UI and rarity iconography | 13 rarity rows | language board | 67 | 67 | 1 |
| D1-35 | Per-region exchange media | 12 regions, mixed-exchange ruled | plate | 0 | 12 | 0 |
| D1-36 | Cinematic key frames | 1 (SCENE_PROLOGUE_OPENING) | 4-plate | 4 | 4 | 0 |
| D1-37 | Inscriptions and scripts | 21 of 87 | 1-plate | 21 | 21 | 0 |
| D1-38 | Schools | 0 — schools begin Ch 15 | — | 0 | 0 | 0 |
| D1-39 | Runes | 0 mapped of 19 | 2-plate | 0 | 0 | 0 |
| D1-40 | Vril sites | 2 | 3-plate | 6 | 6 | 0 |
| D1-41 | Dungeons and rift interiors | no slice subset of the arc-wide 20 | — | 0 | 0 | 0 |
| D1-42 | Minigames | 2 (MG_0001 Caci, MG_0002 Senet) | 2-plate | 4 | 4 | 0 |
| D1-43 | Motifs | 1 (MOT_0001) | 1-plate | 1 | 1 | 0 |
| SLICE TOTAL | ~2,525 | ~3,471 | 30 |
Of the slice total, ~450 plates are Panel A/B on Josh-facing boards (unchanged from v1.0 — the
board count did not grow, the plate density behind it did). 1,880 → 2,483 of the total is COUNTED;
645 → 988 is PROJECTED and labelled per row in density_model.csv.
Four v1.0 slice lines changed, and each for a stated reason: architecture kits gained a derived
7-type roster (floor 98 under the old 134); weapons went from 2 mapped to 10 (a live registry
improvement, not a re-read); three "NOT SIZED" rows became real numbers (crowd buckets 240, foliage
sets 54, and the dwelling/trade/civic layer at 246→558); and the housing line was corrected —
QUEST_SEED_HOUSING_LEDGER holds 400 rows of which 264 are UNROUTED across 13 shelves, not
"264 seeds on the 4 built regions" (§8.2). Those 264 are side-content surfaces that route to other
classes rather than a plate line of their own: 85 encounter, 43 mini_arc_situation, 36
minigame_class, 31 festival_or_daily_immersion, 26 side_questline_candidate, 22
trade_expression, 18 region_page_section, 3 vehicle_or_mount.
B column: C = counted (a live row count or a ruled ceiling) · P = projected by a labelled
ratio over an unbuilt surface · X = no countable home, sized at zero.
| id | Class | Subjects | B | FLOOR | TARGET | Josh boards |
|---|---|---|---|---|---|---|
| D1-01 | Region key art | 66 boards over 76 rows | C | 990 | 990 | 66 |
| D1-02 | Mood / light / weather | 79 nodes | C | 316 | 316 | 0 |
| D1-03 | Layouts — climactic | 221 of 380 | C | 663 | 663 | 0 |
| D1-04 | Layouts — ordinary | 159 | C | 159 | 159 | 0 |
| D1-05 | Architecture kits | 79 × 7 types → ~875 prose forms | C | 553 | 875 | 0 |
| D1-06 | Dwelling variation | ~90 settlements × 3 bands × 2 decay | P | 540 | 540 | 0 |
| D1-07 | Trade physical presence | ~334 region×trade pairs × footprint | P | 668 | 1,670 | 0 |
| D1-08 | Civic monuments and public art | 380 civilizational-mark bullets | C | 79 | 380 | 0 |
| D1-09 | NPCs named | 164 rows → 1,000+ ruled named entities | C | 328 | 2,000 | 0 |
| D1-10 | NPCs — ambient crowd buckets | ~90 settlements × 6 ruled buckets | P | 1,086 | 1,086 | 0 |
| D1-11 | Antagonist operatives | 64 | C | 128 | 128 | 0 |
| D1-12 | Enemies — non-boss classes | NO COUNTABLE HOME (gap #1, unqueued) | X | 0 | 0 | 0 |
| D1-13 | Bosses — main | 79 | C | 1,185 | 1,185 | 79 |
| D1-14 | Bosses — sub + environmental | 202 | C | 808 | 808 | 0 |
| D1-15 | Creatures and fauna | 150 minted → 420+ RULED | C | 450 | 1,260 | 0 |
| D1-16 | Folklore beings | scaled from the slice's 58-per-14 | C | 350 | 350 | 0 |
| D1-17 | Legendary species | 33 RULED (21 mortal + 12 elven) | C | 132 | 132 | 0 |
| D1-18 | Flora and herb plates | ~2.3 per region over 76 | P | 175 | 175 | 0 |
| D1-19 | Foliage and biome sets | ~4.5 sets per region over 76 | P | 342 | 684 | 0 |
| D1-20 | Minerals + gather nodes | A.1 band 2-4 per region | P | 498 | 498 | 0 |
| D1-21 | Festivals | ~4 per region over 76 | P | 608 | 608 | 0 |
| D1-22 | Weapons — type silhouette | 72 | C | 216 | 216 | 0 |
| D1-23 | Weapons — grade variants | 72 × 6 art-bearing grades, 11 boards | C | 432 | 432 | (11 boards) |
| D1-24 | Weapons — regional skins | UNRULED multiplier — Josh's (D3-5) | X | 0 | 0 | 0 |
| D1-25 | Weapons — legendary bespoke | 72 ruled, 1 rostered | C | 288 | 288 | 0 |
| D1-26 | Equipment | 1 row | C | 15 | 15 | 1 |
| D1-27 | Magic and VFX | 248 live / 372 at clamp | C | 744 | 1,116 | (in D1-34) |
| D1-28 | Rifts and Hollow | 1 codex + 5 classes | C | 15 | 15 | 1 |
| D1-29 | Familiars | 22 (HELD until the fairy-realm wave) | C | 66 | 66 | 0 |
| D1-30 | Companions — base look | 12-18 ratified bond-bearing | C | 36 | 36 | 0 |
| D1-31 | Companions — outfit accretion | 18 × 6 recommended accretion states | C | 36 | 216 | 0 |
| D1-32 | Realms | 10 × 2 decay conditions | C | 300 | 300 | 10 |
| D1-33 | Vehicles | 3 | C | 9 | 9 | 0 |
| D1-34 | UI and rarity iconography | 13 rows | C | 67 | 67 | 1 |
| D1-35 | Per-region exchange media | 76 region rows | C | 0 | 76 | 0 |
| D1-36 | Cinematic key frames | 16 | C | 64 | 64 | 0 |
| D1-37 | Inscriptions and scripts | 87 scripts / 98 spine rows | C | 185 | 185 | 0 |
| D1-38 | Schools | 13 | C | 39 | 39 | 1 |
| D1-39 | Runes | 19 | C | 38 | 38 | 0 |
| D1-40 | Vril sites | 42 | C | 126 | 126 | 0 |
| D1-41 | Dungeons — Class A | 20 (bounded); B/C/D/E open cardinality | C | 60 | 60 | 0 |
| D1-42 | Minigames | 2 live rows (36 seeds UNROUTED) | C | 4 | 4 | 0 |
| D1-43 | Motifs | 1 | C | 1 | 1 | 0 |
| FULL-GAME TOTAL | ~12,799 | ~17,876 | 161 |
The decimal place moved and the document says so rather than smoothing it. v1.0 published a single
~8,170 figure; v1.1 publishes ~12,800 FLOOR → ~17,880 TARGET, and the target is 2.2× v1.0. Five
traceable causes, itemized at §6.2, with no sixth: two ruled ceilings replaced two live-row counts
(creatures 150→420, named entities 164→1,000+), three of v1.0's NOT-SIZED rows became countable off the
zone catalogs, Josh's three amendments added three real classes worth ~2,590 at target, five NOT-SIZED
rows became labelled projections, and the weapon lattice decomposed into four axes.
What is still NOT SIZED, honestly. Two classes sit at zero because no formula is possible:
non-boss enemies (D1-12 — the top-ranked gap in the register, and unqueued) and **regional weapon
skins** (D1-24 — Josh's naming call). Dungeon Classes B/C/D/E remain open-cardinality and only Class A's
ruled 20 is counted. And seven classes are PROJECTED, contributing 3,917 → 5,261 — about 30% of the
band — every one of them extrapolated from the 4-to-12 built regions onto 76. If the unbuilt regions
populate more thinly, those seven fall. They should be re-derived per region leg as each page lands,
not trusted; derive6.py re-runs them from live rows in one command, which is the point of shipping it.
The five largest single lines, all either a ruled ceiling or a Josh amendment: named NPCs (2,000, on
his own scale target), trade physical presence (1,670, his amendment), creatures (1,260, the ruling he
himself corrected), bosses main (1,185), and the per-tier magic variants (1,116 at clamp, ruled at full
strength at the fourteenth sitting). Not one of the top five is a number this program invented.
---
Every count above was produced by script against the live tree at 2026-07-29 and is reproducible.
Working scripts sit beside this file: derive.py (registry headers and slice distributions),
derive2.py (region rail population, spine site rows, boss and creature per-node splits, art-hook
population), derive3.py (sub-locations, folklore entities, chapter art axes), derive4.py (ability
key space, weapon mapping health, assetgen population), derive5.py (climactic and protected site
selectors), and **derive6.py (new in v1.1 — the density derivations: zone catalogs and settlement
tiers, region-page named figures, the region×trade practice matrix, civilizational-mark bullets, the
weapon lattice axes, the housing ledger, creature variant-axis population, scripts, and the per-region
registries)**. derive6.py is repo-root-relative and re-runnable under harness/ conventions per §9.2;
emit_density_model.py turns density_model.csv into the JSON the pipeline reads and re-computes every
total in §7 so no figure in this document is hand-summed.
The tree carried uncommitted work from another lane while this document was being derived (an
emotional-curve gate: new harness/check_emotional_curve.py plus scorecard, and edits to
docs/DOC_MAP.md, docs/PRE_5090_BUILD_PLAN.md, docs/fidelity_baseline.json,
docs/registry_extensions.json, harness/gates_config.json and the T0_Chapter_Index CSV). This
program wrote nothing to the repo.
The T0_Chapter_Index change rewrote all 160 lines, which matters because several counts here derive
from it, so it was diffed against HEAD rather than assumed. The change is purely ADDITIVE — three new
columns, emotional_register, emotional_valence_arc and cost_ledger, with no column removed and
79 rows before and after. Every figure taken from that registry is identical across the two versions:
slice nodes 14, region_secondary tokens 94, folklore tokens 58. The line citations to
PRE_5090_BUILD_PLAN.md (rank 5 at line 70, rank 10 at 81, rank 11 at 88, SLICE RESCOPE at 146-158)
were re-verified against the modified file and all still resolve. The one substantive gain is
emotional_register at 79/79, which §5.2 now adopts as class 2's mood key.
From the v1.0 brief:
T0_Creature_Roster holds 150 rows, not 132 — and per the twenty-fourth sitting, 150 is theminted-so-far population against a RULED ceiling of 420+.
T0_Cross_Cultural_Link_Graph holds 184 rows, not 145.T0_Region_Index holds 76 rows, of which 13 map to the slice, not one per node — CH_05 carriestwo. This is the fact behind Josh's 14-nodes-but-15-legs ruling.
T0_Equipment_Registry "equipment" class is 1 row, not a populated roster.New in v1.1:
seeds on the 4 built regions" as the v1.1 brief carried. The 264 is the UNROUTED count
(disposition is exactly two-valued: UNROUTED 264, weave_only 136), and the shelf spread is
flores-indonesia 106, sumatra-batak 67, fairy-literary 64, bali 55, esoteric 24, rome-italy 17,
vietnam 17, malay-world 15, sumatra_java 12, angkor-khmer 10, early_modern_italy 7, cross-cutting 5.
Also: proposed_quest_type is blank on 400/400, so the ledger's own quest-type field is
unpopulated — worth naming because a gate asserts it must be a §6.5 member or the literal none.
T0_Flora_Registry spans 11 regions, not 4. v1.0's §5.2 grouped flora with the 4-built-regionregistries; flora is materially better covered than its neighbours (minerals 19 rows, gather nodes 4
regions, festivals 4 regions). Corrected in D1-18.
T0_Weapon_Registry.canonical_chapter_acquisition is populated on 10 of 72, not 2. v1.0's"2 mapped of 72" is superseded by a live registry improvement between the two passes.
asked "72 legendaries?" — the answer is: the count is ruled canon in three places, exactly one
instance (LEG_WPN_036, the macuahuitl) is rostered, and T0_Questline_Index's own note says the
full roster and its id/name convention are unrostered.
T0_Rarity_Grade has no weapon axis. Its three axes are item_grade (8 tokens), pool_option (4) and creature_spawn (1). Weapons inherit item_grade; the brief's "5 rarity grades + mythic"
maps to the 5 rollable tokens plus mythic, with signature as a seventh unique-per-type case.
T0_Dwelling_Registry's 2 rows are PLAYER homes, not NPC dwellings. DW_0001 is the per-trade-hubtrade-home (from CH_05), DW_0002 the open-world dwelling-home (from CH_39). Josh's "not everyone has
the same house" therefore has no schema home at all today, which is why D3-2 exists.
T0_Trade_Registry's build-facing columns are 2/10 (home_base_upgrade_ceiling, compound_membership, shared_build_grammar_ref) while its design-facing columns are 10/10
(pillar_9_substrate_concept, twelve_tier_quest_gates, ceremony_quest_refs). The trades are
designed and not yet built-out — exactly the split Josh's "where are the trades?" points at.
Recorded because each would have written a false zero into this document, and the repo's own law says
a search that cannot match reports zero.
1. Glob brackets. Registry directory names contain [DRAFT v0.1], and Python's glob reads
[...] as a character class, so glob.glob('.../T0_Boss_Encounter_Registry [DRAFT v0.1]/*.csv')
returned zero files silently while the directory plainly existed. Every derivation here uses
os.listdir. Positive control: the same prefix match against os.listdir returned the directory
immediately.
2. Heading suffix. An exact-match regex on ^## Key sites and spatial layout$ found the section
in 76 of 79 spine nodes and reported CH_55, CH_68 and CH_69 as having no site section at all. They
do — their heading carries a (§3b typed site rows) suffix. The corrected loose match raised the
arc-wide site total from 372 to 380 and the distinct-id count from 367 to 375. A
grep of each file's ## headings was the positive control that caught it.
3. Boolean field value. A protected check written as "not starting with no" counted every
protected false row as protected. The field's literal values are true and false; the
corrected check yields 47 of 88 slice and 196 of 380 arc-wide.
Two more caught in the v1.1 pass, recorded to the same standard:
4. The enemy-registry zero is REAL, and it was positive-controlled twice. A name search for
T0_Enemy_Registry|T0_Mob_Registry|T0_Faction_Registry|T0_Enemy_Archetype|T0_Threat_Table returns
1 occurrence repo-wide, and that occurrence is itself a statement of absence
(WS7_WIRING_BUILD_PLAN.md line 190: *"No FACTION registry exists yet"*). Control: the same search
for T0_Creature_Roster returns 986 occurrences across 232 files. Second control: every CSV
header across all 62 registry directories was regexed for
enemy|mob|faction|hostile|patrol|archetype|combatant|spawn|minion and the regex DID match real
columns (faction_affiliations, enemy_usable, spawn_rate, spawn_locus_type) — so the
machinery can match, and the absence of an enemy TABLE is a fact rather than a failed search. This
matters because a false zero here would have written "enemies are unsized" into the program when the
truth might have been "the author could not find the registry."
5. The ## Civilizational marks heading match was controlled against the file count. The block
parser reports 79 of 80 CH_*.md files carrying the block, totalling 380 bullets; the
positive control prints the file count seen (80) alongside the dictionary size (80), so a heading
variant that hid a whole node would show as a gap between the two numbers rather than as a quiet
undercount. This is the same defect class as trap 2 above, pre-empted rather than discovered.
All three of v1.0's questions were ruled at the twenty-fourth sitting (§5.5). v1.1's open set is
shorter and narrower, and both items are the same kind of thing: a NAME, against a count that is
already ruled. Neither is a scope question and neither blocks the slice.
1. D3-5 — per-region cultural weapon naming. The intent is ruled (CVD §12.5 / Pillar 10,
weapon-of-origin bonuses, regional combat identity) and a complete 72-row proposal exists with a
*Cultural instance / home* column on every row. Nothing has landed at the data layer: no cultural-name
column, and Pillar 10's named artifact (the Regional Combat Modifier table) *"has no registry"* so
Pillar 10 is *"data-unfalsifiable"*. Recommendation: ratify the proposal's §5.1-5.2 cultural
placements as a batch, which converts one review into 72 rows and unblocks the D1-24 multiplier.
Strongest objection: the proposal was drafted before the naming-register correction of the
twenty-third sitting (otherworld NAME register, no phrase-names, coinages legal), and a batch
ratification would carry any register drift in it into 72 rows at once — so the batch should be
re-read against the naming doctrine first, and that re-read is ours to run before the board reaches
him.
2. D3-6 — the 71 unrostered legendary weapons. The count of 72 is ruled canon in three independent
places; exactly one instance is rostered. Recommendation: roster them in weapon-registry order
as the region legs land, one legendary per weapon as its cultural placement is ruled, so items 1 and
2 resolve as one stream rather than two. Strongest objection: legendary NAMES are the highest-
visibility strings in the game and a 71-name batch is a lot of taste to spend in one sitting;
splitting them per leg costs 71 small decisions instead of one large one, which may be worse for
him and is the reason this is presented as a recommendation rather than applied.
A third item is Josh-ADJACENT and is being applied rather than flagged, recorded here so the
judgement is visible: enterable-interior density (D3-3). The divergence from GTA/RDR2 interior
density is already ruled DIVERGENT-BY-DESIGN, so the frame is his; the floor inside that frame is
execution, and the applied answer is story-bearing homes only. If a playthrough reads the settlements
as facades, that is exactly the backstop case the care doctrine reserves for him.
**DESIGN_GAP_REGISTER.md gap #1 — the non-boss engagement/aggro spec — is the top-ranked gap in the
register, is classed MISSING with owner W-SPACE, and is NOT in the 30-rank window plan.** A search of
PRE_5090_BUILD_PLAN.md for aggro|engagement spec|threat table|leash returns one unrelated hit
("unleash"), and the ranked queue has no enemy-population item. Meanwhile **rank 17 is
"per-enemy weaknesses"** — an item that presupposes the enemy table gap #1 says does not exist. That is
a dangling dependency in the binding plan, and it is not the art program's to fix: it belongs to
whoever owns the ranked queue. Recorded here because the art program is the lane that discovered it, and
because D1-12 cannot be sized until it is resolved — every ordinary fight in the game currently has no
art denominator at all.
Rulings: docs/PRE_5090_BUILD_PLAN.md (the ranked 30, SLICE RESCOPE lines 146-158, rank 5 line 70,
rank 11 line 88, rank 10 line 81) · docs/proposals/REALM_DESIGN_PROGRAM.md §0.1, §2.1, §2.2, §3.2,
§3.3, §3.5, §4.1, §6.3 · docs/pipeline_review/REALM_ANALYSIS_ART_PIPELINE_2026-07-27.md §1.1-1.6,
§2, §3.3 · docs/pipeline_review/tech_research/PIPE_ART_2026-07-29.md §1, §2, §5, §6 ·
docs/pipeline_review/tech_research/STACK_CONFLICT_ADJUDICATIONS_2026-07-29.md C-1, C-5, C-7, C-10,
C-12, C-13, C-14 · docs/pipeline_review/tech_research/PIPELINE_STACK_SYNTHESIS_2026-07-29.md §3.2,
§4 · docs/ASSET_DROPIN_CONTRACT.md §1, §2, §3, §7, items 6, 6-D, 7 ·
docs/COMBAT_PROGRAM_ADDENDUM.md §5, §7 · docs/spine/DECISIONS_PENDING_JOSH.md fourteenth sitting
lines 333-351 · docs/OPEN_BRIEFS_2026-07-28.md §1 · docs/DESIGN_GAP_REGISTER.md entry 4
amendment (adjudication 20), entries 94, 95, 97 · docs/ENGINE_OPTIMIZATION_DOCTRINE.md §5.4, D10 ·
docs/FACTORY_CONTRACT.md §3, §4, FR-040, FR-044 · docs/proposals/MUSIC_COMPOSITION_DOCTRINE.md
§4.0, §4.0.1, §4.0.2, §4.0.3, line 1427 · docs/NATURAL_VOICE_DOCTRINE.md §2, §4, §5 ·
docs/proposals/ENTITY_PERSONA_SYSTEM.md line 218 · docs/5090_SETUP_RUNBOOK.md stage map lines 120,
460-472, lanes R/P/G lines 1103-1120 · `_source/01_Tier_1_Foundation/T1_Build_Pipeline_Contracts
[ACTIVE v1.0].md` §2.5, §2.6, lines 283-295, 398, 402, 522 ·
_source/00_Tier_0_Master_Indices/T0_Schema_Dictionary [ACTIVE v1.3].md §1.13.
Registries read: T0_Region_Index, T0_Chapter_Index, T0_Boss_Encounter_Registry,
T0_Creature_Roster, T0_Character_Index, T0_Antagonist_Network_Registry, T0_Weapon_Registry,
T0_Familiar_Registry, T0_Ability_Tree_Registry, T0_Element_Effectiveness, T0_Flora_Registry,
T0_Mineral_Registry, T0_Gather_Node_Registry, T0_Festival_Registry, T0_Vehicle_Registry,
T0_Equipment_Registry, T0_Hollow_Codex, T0_Dungeon_Class_Reference, T0_Realm_Ruleset_Registry,
T0_Rarity_Grade, T0_Rune_Registry, T0_School_Registry, T0_Language_Script_Registry,
T0_Inscription_Spine, T0_Scene_Spec_Registry, T0_Vril_Site_Registry, T0_Dwelling_Registry,
T0_Environment_Grammar_Registry, T0_Motif_Registry, T0_Minigame_Registry, T0_Trade_Registry,
T0_Questline_Index, T0_Theme_Registry, T0_Voice_Registry, T0_SFX_Registry,
T0_Composure_Routing. Spine: all 79 docs/spine/CH_*.md nodes, sections
## Key sites and spatial layout, ## Asset anchors and ## Civilizational marks.
Added for v1.1's density model: docs/spine/DECISIONS_PENDING_JOSH.md twenty-fourth sitting (the
four rulings this version folds) · docs/PRE_5090_BUILD_PLAN_VOL2.md §A.1 (the ruled density curve +
the Ch 2-5 band + the RESCOPE BLOCKER) and §11.5.5 (QT-17/18/19) and §E (TG-9 / TG-12) ·
_source/02_Tier_2_Region_Pages/*.md — all 12 pages, sections ## Zone Catalog, ### Section 12,
### Section 14 · _source/03_Tier_3_Characters/T3_Creatures_Tameable [ACTIVE v1.0] §0.1, §1.1 (the
420-plus ruling) · _source/03_Tier_3_Characters/T3_Core_Characters [ACTIVE v1.0] §3.2 (Ntala's
clothing law) · docs/RUNTIME_GENERATIVE_LAYER.md §A.1 (the 40:6 crowd-bucket ratio) ·
docs/proposals/ENTITY_PERSONA_SYSTEM.md §2.2, §2.3, §4.2, §5 · docs/DESIGN_GAP_REGISTER.md gap #1
(lines 33, 51-66), line 214 (enterable interior density, DIVERGENT-BY-DESIGN), gap #13 ·
docs/proposals/DEEP_BOOK_PROCESSING_CONTRACT.md §2.5b + docs/proposals/EXR_RECORD_SCHEMA_v0.2.md
§7 + harness/enrich.py civ_marks_hints() (the civilizational_marks lane) ·
docs/proposals/SIGNIFICANCE_LENSES.md lens E2 · docs/proposals/WEAPON_SYSTEM_PROPOSAL.md §5.1-5.2 ·
docs/FOUNDATION_ENHANCEMENT_ROADMAP.md lines 304-309 (Pillar 10 data-unfalsifiable) ·
docs/COMBAT_ENCOUNTER_SYSTEM.md lines 68, 85, 446, 448 · docs/spine/COMPANION_CAST_BRIEF.md (the
ratified roster) + docs/spine/companion_cast_designs/COMPANION_MECHANICS_CONTRACT.md ·
docs/proposals/QUEST_SEED_HOUSING_LEDGER.md · docs/proposals/systems/WS7_WIRING_BUILD_PLAN.md
lines 167, 190 · T1_Combat_System_Spec [ACTIVE v1.0] §9 (encounter categories, no enemy classes).
Add a docs/DOC_MAP.md row — an artifact is not done until it is listed there — and name its
consumer, which is the factory's per-leg art step, the rank-5 schema pass, and (new in v1.1) the
board-generation pipeline that reads density_model.csv. Its first commit creates docs/art_boards/
and docs/art_bibles/, neither of which exists today, plus docs/art_boards/MANIFEST.csv per §9.
---
Josh, verbatim and standing: *"Make sure everything you're doing can be consumed autonomously by the
pipelines."* A density model that lives only in prose is a document the factory cannot act on, and an
approval that lives only on a web page is a decision a human has to retype. Three deliverables answer
that, and the third is a PROPOSAL rather than a mint.
docs/concept_art/density_model.csv — 43 rows × 14 columns (measured on the live header at
landing; the 15 this line carried was a miscount, the column list below is the correct fourteen),
and the artifact the board-generation pipeline reads rather than parsing §6:
`class_id · class_name · art_unit · formula · formula_inputs · ruled_source · slice_floor ·
slice_target · fullgame_floor · fullgame_target · fullgame_basis · missing_inputs ·
cheap_or_expensive · tier`
harness/concept_art/emit_density_model.py derives density_model.json from it (adding the ruled
slice denominator and the recomputed totals) and carries a --check mode that exits 3 if any row is missing a required
field or carries a non-integer count — the gate SHAPE the rest of the harness uses, so this artifact can
join run_gates.py without a new pattern. **Every total in §6.2 and §7 is emitted by that script, not
typed**, which is the only way a 43-row table stays arithmetically honest across edits.
Two fields exist specifically so the pipeline can route without reading prose: fullgame_basis
(counted / projected … / no countable home / unruled multiplier) lets a scheduler refuse to
budget against a projection, and cheap_or_expensive lets it route the 15 cheap classes to
parametric variant sweeps and the 28 expensive ones to authored boards. missing_inputs carries the
literal token JOSH on exactly the two rows that are his, so the brief queue is a query.
derive6.py resolves the repo by walking up from its own location for registries/ +
CLAUDE.md, then falling back to $HUMANITY_REPO, then the cwd, with --repo as an explicit
override. No scratchpad path appears in any logic, so dropping the file into harness/ makes the
walk-up win and nothing else is consulted. It is read-only against the repo and writes only to an
explicit --emit-dir. It also carries the repo's own hard-won discipline in code rather than in a
comment: registry loading is os.listdir-only with an asserting prefix match (glob reads the
[DRAFT v0.1] in directory names as a character class and returns zero silently), and the
civilizational-marks parser prints its file count beside its result count as a standing positive
control.
RESOLVED at landing (2026-07-29), as this section recommended: derive.py through derive5.py
(v1.0's scripts) hardcoded C:\dev\humanity-forgotten\registries as a module constant — correct and
reproducible but NOT harness-portable. All eight scripts now resolve the tree through one shared
harness/concept_art/_repo.py, including derive6.py, whose inline copy of the rule was replaced
so the rule has exactly one home. The landing ran all eight before and after the move and asserted
their output identical, which is the verification this paragraph asked for. Bringing them up to the §9.2 convention is a
mechanical edit and is deliberately not done in this pass, because touching five working derivation
scripts in the same pass that re-publishes their outputs would make an arithmetic regression
indistinguishable from a path change. Recommended as its own commit, verified by re-running all six
scripts and diffing the counts against §7.
This is a proposal, not a mint. §2.5 already rules the home: a manifest, not a
T0_Concept_Art_Registry, because concept art is *"upstream reference substrate… not canonical content
itself"* and PIPE_ART rules *"Nothing binary enters the canon repo; promoted plates enter as manifest
rows + hashes only."* v1.1 adds the schema, because Josh's board-medium ruling makes it load-bearing in
a way it was not before: **approvals now happen on a web page, and they must land in the repo without a
human transcription step.**
Two tables, because a board and a plate are different grains and conflating them is what makes an
asset manifest rot.
docs/art_boards/MANIFEST.csv — one row per BOARD.
| column | type | why | ||
|---|---|---|---|---|
board_id | BRD_#### | stable id; the web page's URL slug derives from it | ||
density_class_id | FK → density_model.csv:class_id | the join that makes the density model executable — a board knows which class it is discharging | ||
subject_canon_id | FK → the owning registry row | the region, boss, weapon subclass or law being boarded | ||
board_shape | enum place_3panel / being_2panel / object_2panel / language / frame_1panel / realm_4panel | §2.2's class-specific shapes as data | ||
panel_count, options_per_panel | int | 3 options per panel per the charter; recorded so a malformed board fails a shape check | ||
care_tier, generation_class, generation_tier, decay_stage | enums | the §2.3 badges, carried at board grain | ||
citation_refs | multi-value FK → T0_Source_Material_Registry | an empty value disqualifies the board from Panel A; this is the field that makes cited-or-cut mechanical | ||
critic_verdicts | multi-value `<critic>:<GO\ | GO_WITH_FIXES\ | NO_GO>` | the four §2.6 adversarial critics; a NO_GO cannot publish |
published_url, is_private | string, bool | the private-web-page ruling as data; is_private starts TRUE and only the marketing pass may flip it | ||
marketing_eligible | bool, COMPUTED | derived from the licence classes of the board's plates, never hand-asserted — §4.2a. AMENDED at landing (2026-08-02): v1.1 declared this COMPUTED but specified no computation and no check, so the cell was in fact typed by hand and read_boards.py only read it through truthy(). The cell stays on the row — the marketing set has to remain a query over one table — but it is a CACHE of a derivation, and T-MARKETING-COMPUTED fails any disagreement between the cell and the value computed from the board's plate rows. A board computes TRUE only if EVERY plate carries a rights value that clears marketing reuse (own_capture, public_domain, generated_local); museum_open_access is excluded by §4.2a's own "a museum's open-access grant is not automatically a marketing grant", and licensed clears only within its terms | ||
approval_state | enum draft / critics_running / published / awaiting_pick / picked / regenerating / superseded | the review state machine | ||
regeneration_count | int | the ruled 90% cadence gate is unmeasurable without this — §2.6 | ||
pick_panel_a, pick_panel_b, pick_cards_c | option ids | the pick line, structured | ||
pick_amendment_a, pick_amendment_b | free text | the *"A2, but the light comes from under the water"* lane, preserved verbatim | ||
picked_at, picked_by | timestamp, string | provenance; picked_by is Josh or the director under the §2.6 tiering | ||
art_bible_ref | path | where the ratified reading landed (docs/art_bibles/<subject>.md) | ||
writeback_status | enum pending / applied / failed | whether the pick reached the owning registry row's art hooks — the field that makes a dropped apply visible instead of silent |
docs/art_boards/PLATES.csv — one row per PLATE. plate_id · board_id FK · panel (A/B) ·
option_index · plate_role (silhouette / palette / detail / hero / law-in-action) · rights_value
(the ruled six-value vocabulary) · image_use_class · generation_licence_ref (C-12) ·
generation_prompt_hash · model_id · weights_revision · style_lora_hash · asset_path (on
E:\art\boards\…, never in the repo) · sha256 · generation_status (the ruled five-state machine).
image_use_class — ADDED at landing (2026-08-02), and it closes a hole this schema shipped with.
REALM_DESIGN_PROGRAM §3.4 rules the licensed rights value as *"licensed (with the licence
identified)"*, and the row above gave it nowhere to be identified: generation_licence_ref is the
C-12 model licence and reads n_a_lane_r on every Lane-R plate, because no model ran. The first
board shipped two Panel A plates routed licensed with no licence anywhere — one of them citing an
owned magazine run as though ownership were a licence — and every tooth on the board passed them.
image_use_class is the IMAGE-side permission, built as the image-lane analog of the book-substrate
lane's use_class field that §3.4 names as *"the precedent to copy rather than invent"*: a per-row
closed enum of uppercase tokens recording what may legally be done, checked by a gate. Grammar is
TOKEN or TOKEN:<identifier> (the shape critic_verdicts already uses). Vocabulary: OWN-CAPTURE
· PUBLIC-DOMAIN · OPEN-ACCESS:<institution> · LICENSED:<licence> · REFERENCE (carried over
verbatim from the book lane — held for reference, never reproduced) · GENERATED-CLEAN-WEIGHTS ·
PREVIZ-ONLY. Gated by T-IMAGE-LICENCE.
How approval flows back with no human in the loop. The web board's pick action writes
pick_panel_a / pick_panel_b / pick_cards_c / picked_at and flips approval_state to picked.
A deterministic applier then reads the row, resolves density_class_id and subject_canon_id, and
populates the owning registry's art hooks — the five realm hooks (palette_law, silhouette_law,
impossible_architecture_budget, signature_phenomenon, concept_choice_slots), the four rarity hooks,
or the rank-5 asset_concept / morphology / mesh_tags fields — then sets writeback_status. Josh
touches the pick line and nothing else, which is what §4.4 already ruled; the difference is that his
pick now becomes registry data by machine rather than by memory.
Its gate is the one §4.5 already names. harness/read_boards.py — deterministic, PRESENCE and
SHAPE only, never content, with must-fire and must-not-fire fixtures and exit-3. v1.1 adds the specific
teeth the schema makes possible: a picked board with writeback_status: pending older than one commit
FAILS; a board whose citation_refs is empty and whose board_shape includes Panel A FAILS; a plate
whose rights_value is previz_only FAILS on any panel of any board (v1.1 wrote this as
conditional on marketing_eligible: true, which made it inert on every board in the repo — §4.2a rules
the opposite outright, that *every board is marketing-destined from birth*, so the condition was a hole
and is AMENDED at landing 2026-08-02 to unconditional: Panel A by T-PANELA-PREVIZ, every other
panel by T-MARKETING); a published board carrying a NO_GO critic verdict FAILS; a plate routed
licensed whose image_use_class is empty or names a class without naming the grant FAILS
(T-IMAGE-LICENCE); an asserted marketing_eligible that disagrees with the value computed from the
plate rows FAILS (T-MARKETING-COMPUTED). A tooth without a failing fixture is not armed, so each
of those ships with its fixture or does not ship.
Why two tables and not one. A single flat table would carry the board's approval state on every
plate row, so a 15-plate board would hold fifteen copies of one pick — the exact duplicate-header and
short-row defect class the repo has already been bitten by, where a widened CSV passes every gate and
misreads silently in DictReader. Splitting board from plate keeps the approval single-sourced.
The alternative, stated so the proposal is a choice. Approvals could land as commits to the board's
own markdown, with the manifest generated from those commits. That is more git-native and needs no
write-back applier — but it puts a human between the web page and the repo, which is precisely what the
directive says to remove, and it makes the 90% approval-rate gate a log-scrape instead of a query. The
recommendation is the manifest; the markdown remains the human-readable mirror, generated from it.