Gap audit 2026-07-29 - lane items-economy (12 findings)
Verbatim from workflow wf_d0ca605f-891. Each finding carries either its own register entry id or
the cross-lane merge that absorbed it. This file is the evidence of record the compact register
entries cite.
items-economy#1 [CRITICAL] merged into GAP-138 - The wearable/consumable BILL OF MATERIALS is one row — no item count is set anywhere
Vision rules. T1_Combat_System_Spec [ACTIVE v1.0] §13 (L532) names the imprint target list verbatim — "weapons, armour, off-hand items, grenades and bombs, potions and poisons" — and §13 (L536) ratifies the RN_0018 slot scheme (1/2/3/4 slots at Common/Rare/Epic/Legendary + MYTHIC above). §5 (L63) makes Alchemy potions one of only THREE health-restoration channels ("Health does not passively self-regenerate… restored only through vril-healing at the Heart-seat, Alchemy potions from Trade 5, and recharge and rest sites"), so consumables are load-bearing on the ruled resource model. docs/original_predclaude/ELEMENTS_MATRIX_RECOVERED.md §3 authors the seven element-slot wearables (Feet/Leggings/Belt/Chest/Necklace/Diadem/Helmet) and INGEST_GDD L144 recovers "16 equipment slots (7 enhanceable element slots + 9 stat slots)".
What exists (verified). registries/T0_Equipment_Registry [DRAFT v0.1]/Sheet1.csv = 1 row × 26 cols — EQ_0001 Mother's Amulet only (measured; the row's own notes call it "never rolled or crafted… never an imprint base", i.e. the one row is explicitly NOT an item-economy row). By contrast T0_Weapon_Registry = 72 rows. POSITIVE CONTROL on the zero: the same directory read returns 72 weapon rows, 150 creature rows, 281 boss rows, so the reader works; equipment is genuinely 1. No item count exists in canon: CVD §17.12 numerical canon carries 72 weapons / 185 abilities / 33 species / 22 familiars / 10 trades / 12 questlines and NO item number; PRE_5090_BUILD_PLAN §12 item 9 ("row counts + columns are authorial… Josh sets content scope") enumerates monster breeding, vehicle/mount trees, base building, minigame framework — equipment is not in that list.
Delta. The schema home landed (rank 14 mint, docs/pipeline_review/MINT_DESIGN_B_ITEM_ALLY_2026-07-27.md §1.4) but nothing sizes or schedules the CONTENT: no per-slot × per-rarity × per-region item schedule, no per-chapter item budget, and no Josh brief asking for the count the way 72 weapons was asked. FR-009's ruled imprint roll has nothing to roll onto.
Blocking. The first real loot drop and the Ch 2-13 gear ladder — i.e. rank 26's RNG_Drop_Table rows have no payload_ref targets (payload_kind enum includes equipment, MINT_DESIGN_B §1.3 L409-410), and W-LW2's σ-drop wire lands on an empty catalog. Hits the moment any slice chapter needs a reward that is not a weapon.
Proposed home. A Josh-facing sizing brief (the 72-weapons precedent) + a per-slot/per-rarity schedule authored into T0_Equipment_Registry, with the per-chapter budget expressed as a factory-contract rider.
items-economy#2 [CRITICAL] merged into GAP-138 - The RULED per-region exchange economy has no column, no table, and no rank
Vision rules. Ruled twice. (1) PRE_5090_BUILD_PLAN_VOL2.md §DECISIONS REGISTER, D-ECONOMY-MEDIUM (L1641-1660): Josh ruled Opt B verbatim, "historically real mixed exchange per region," with the landing named — "a medium_of_exchange token on Region_Index, vendor mechanics as a P2.6 inventory consumer." (2) Re-ruled and sharpened at docs/spine/DECISIONS_PENDING_JOSH.md fourteenth sitting item 7 (L401-405): "(b) — fully diegetic regional exchange media in-world + ONE presentation-only trade-value lens in the ledger UI (displayed, never stored, never spendable; the world only accepts goods)." T1_Trades_Master §9.2 grounds it: "Scarcity is real because materials are specific to geographic regions… Tier A Solo Base players engage trade interdependence through NPC trader networks."
What exists (verified). medium_of_exchange occurs in exactly TWO files repo-wide — docs/PRE_5090_BUILD_PLAN_VOL2.md and docs/pipeline_review/MINT_DESIGN_B_ITEM_ALLY_2026-07-27.md — and in ZERO registries. POSITIVE CONTROL: that same grep returned those 2 hits, so the pattern matches real text; the registry zero is real. registries/T0_Region_Index [ACTIVE v1.2] header = 26 columns (region_id … generation_tier), none economic (read in full). trade-value lens occurs in exactly 3 lines across 2 files — the ruling record and docs/OPEN_BRIEFS_2026-07-28.md L140 — and nowhere in any schema, plan, or harness. T0_Worldstate_Variables [ACTIVE v0.1] = 46 rows read in full: no currency, no exchange, no vendor variable (WS_046 item_instance_ledger explicitly scopes itself to "rolled/equippable objects" and hands materials to UHumanityGatherLedger).
Delta. A ruled world rule with a named landing target has no data home five days after the ruling, and VOL2's own item row still reads the pre-ruling state — L1069: "EC-medium — the medium_of_exchange region token + value abstraction (Opt-1). BRIEF→CA on ruling, gated on Josh." The 2026-07-28 refinement (never stored, never spendable, display-only) is a DIFFERENT shape from Opt-B's "vendors price in the local medium" and nothing has absorbed it. Disclosed honestly: EC-medium/EC-vendor sit in the VOL2 W7 wave, so a lane exists — what does not exist is the column, the value model, or a ranked owner.
Blocking. Any vendor interaction or reward-value read in the slice; and the Region_Index column add should ride the same pass as rank 30's Region_Index environment rail rather than becoming a second schema touch on a 76-row ACTIVE registry.
Proposed home. medium_of_exchange + an ordinal trade_value_basis on T0_Region_Index (added with rank 30's rail), the value lens specced as presentation-only in the rank-20 UI spec, and VOL2's H7/EC rows refreshed to the ruled state.
items-economy#3 [CRITICAL] merged into GAP-138 - The material spine still covers only the four pre-rescope Ch 2-5 regions
Vision rules. T1_Trades_Master §9.2: "Scarcity is real because materials are specific to geographic regions and require physical presence to obtain. Regional specialization across the 77 regions creates genuine trade dependencies." The slice is RULED Prologue→Ch 13 (PRE_5090_BUILD_PLAN.md §SLICE RESCOPE L146-152: 14 nodes / 15 region-legs / 13 region rows), and T1_Region_Page_Template Section 9 ("Minerals Resources and Trade Goods") is a required page section for every one of them.
What exists (verified). Measured by grouping the live CSVs: T0_Mineral_Registry = 19 rows, region_source ∈ {flores_island, bali, sumatra_java, angkor_khmer} only; T0_Flora_Registry = 25 rows, region_native the same four; T0_Gather_Node_Registry = 24 rows, region_id ∈ {flores_island 11, bali 4, sumatra_java 5, angkor_khmer 4}. Nine of the thirteen slice regions have ZERO material/gather rows. POSITIVE CONTROL: the grouping returned real region tokens for all three registries, so the reader resolves the column; the absence of sri_lanka/south_india/swahili_coast/ethiopia/rift_valley/central_africa_congo/west_africa/south_africa is a true zero — and those eight pages EXIST on disk (PRE_5090_BUILD_PLAN.md rank 10 rescope rider L82-87 measures 20/20 template sections + Zone Catalog each).
Delta. VOL2's FL-2 and MN-2 are scoped "the 4 regions" by their own text (L987, L993); rank 10's LIVE work is declared to be the §7.5 typing pass + Quest_Seed rows, not materials; no rank or wave extends the material spine to Ch 6-13. The gather→craft→trade loop therefore silently stops at Ch 5 while the build order runs Ch 2-13 first.
Blocking. The Ch 6-13 region legs — the eight pages are authored and staging (DR-6 gather-node placement) reads flora/mineral stable ids that do not exist for them. First contact is the next Ch 6+ build leg.
Proposed home. Extend T0_Mineral/Flora/Gather_Node to the nine remaining slice regions from each page's Section 2/9/14 prose, as an explicit rank riding rank 10's region queue.
items-economy#4 [CRITICAL] merged into GAP-138 - No vendor/shop data home — 15 merchant NPCs exist with no stock, no accepted goods, no market
Vision rules. T1_Trades_Master §9.2: solo-tier players "engage trade interdependence through NPC trader networks." The fourteenth-sitting ruling (DECISIONS_PENDING_JOSH L457-461) makes vendors goods-only: "the world only accepts goods." T1_Region_Page_Template Section 9 requires "Trade goods, routes, currency, markets" per region, and the built pages deliver it in prose — _source/02_Tier_2_Region_Pages/flores_island.md L843-848: "the region's trade face is the ikat and songket cloth, the gongs… Merchant Siti and Trade-Envoy Tuan Yosef carry the economic-web edges."
What exists (verified). T0_Character_Index [ACTIVE v1.1] carries 15 merchant/trader/market/broker rows (measured: CHAR_0015 Merchant Siti, CHAR_0019 Trade-Envoy Tuan Yosef, CHAR_0028 Market Merchant Ni Luh Dayu, CHAR_0035 Silk Road Information Broker Chelvan Kanakkan, CHAR_0046 Chetti Ponnan, CHAR_0055/0056/0057/0060/0061/0062 the Kilwa set, CHAR_0068 Hagos the Gold Merchant, CHAR_0127 Tunde, CHAR_0017 Ana, CHAR_0161 Rawiri) — so the vendor CAST is countable. Its 33 columns are role/faction/loyalty/mesh/decay only; nothing economic. POSITIVE CONTROL on the missing table: a recipe|vendor|price|pricing|barter grep over registries/ returned 14 files, every hit a prose note (e.g. "black-powder recipe" in T0_Mineral_Registry), so the search matches; there is no vendor, shop, market, or stock registry in the tree. T0_Dwelling_Registry = 2 anchor rows (DW_0001 trade-home, DW_0002 dwelling-home) and models the player's homes, not settlement commerce.
Delta. The named cast exists; the vendor SIDE of every transaction does not — no stock list, no accepted-goods set, no per-settlement vendor count or density, no restock model. EC-vendor's stated plan (VOL2 L1070) is "folds onto N8.2 persona runtime," which supplies dialogue, not inventory.
Blocking. The first buy/sell/barter beat in the slice, and the sink question the register already owns (LENS_animal-crossing AC-7, owner spec-doc / wave W10 economy) cannot be answered against zero vendor rows.
Proposed home. A T0_Vendor_Registry (vendor_id → character_ref, region_ref, accepted_goods[], stock rows, restock class), FK-enrolled and keyed to the 15 existing merchant characters.
items-economy#5 [MAJOR] GAP-167 - The density instrument is BLIND to the item economy — a chapter can pass QT-19 with zero items
Vision rules. PRE_5090_BUILD_PLAN_VOL2.md §11.5.5 makes per-chapter density measurable and gate-watched: QT-19 "gates SHAPES/RELATIONS/FLOORS" over the QT-17 content-budget vector, implementing the CANON_AUDIT §7 density ruling ("every chapter a dense woven experience… combat/exploration/discovery/puzzle/mystery/lore/trade/gathering/side-quest/folklore all woven") plus Josh's 2026-07-24 rising curve. Note that the ruling's own woven list names TRADE and GATHERING.
What exists (verified). VOL2 §11.5.5 L1424 enumerates the QT-17 vector in full: sites (DT_Site 376), beats-by-type (DT_Beat 891), encounters + sub-bosses, forks + options, minigames, weave-links (184), significance-lenses (33), personas (163), threads-woven (664/22), reputation surfaces, §16 citations. POSITIVE CONTROL: ten axes are named with live counts, so the spec is real and complete as written — and it contains NO item, loot, drop, gear, material, gather-node, or vendor axis. The QT-19 rescope blocker (L1427-1435) is about missing BANDS past Ch 5, not about missing axes, so nothing queued repairs the vector.
Delta. The one instrument that answers "is this chapter dense enough?" cannot see the item economy at all. Two of the density ruling's own woven categories — trade and gathering — have no measured axis, which is exactly why gap 4 (materials stopping at Ch 5) could go unnoticed while the gates stayed green.
Blocking. check_slice_scorecard.py, which does not exist yet and is the named precondition for arming QT-19 past Ch 5 — the vector should gain its item axes BEFORE that tool is written, or every Ch 6-13 node is scored blind to its economy.
Proposed home. Extend the QT-17 vector in VOL2 §11.5.5 with item/reward/material/gather-node/vendor axes before check_slice_scorecard.py is authored.
items-economy#6 [MAJOR] GAP-168 - Cultural dress is care-load-bearing prose with no data home and no producing pipeline
Vision rules. CVD [ACTIVE v1.4] L270: "Every region's texture — ritual, language, cosmology, foodways, dress, architecture, folklore, mythology — comes from primary source material." T1_Region_Page_Template Section 4 requires "appearance for NPC design, dress" per region (L164). Tailoring is Trade 6 with a full 12-tier gate roster (T1_Trades_Master §3.6, §5.6) and §9.1 names its cross-trade capability "encoded garment patterns" (T6+T9 at Adeptus Minor). ELEMENTS_MATRIX_RECOVERED §3 authors the worn pieces by name: Feet, Leggings, Belt, Chest, Necklace/Choker, Diadem, Helmet.
What exists (verified). Prose only. _source/02_Tier_2_Region_Pages/flores_island.md L837 ("cotton — the ikat/songket weaving fiber, the Trade-6 Tailoring substrate") and L837, with L346-348 explicitly recording dress as UNATTESTED substrate. Structurally: zero garment rows anywhere; T0_Equipment_Registry's item_class enum is wearable · offhand · grenade · bomb · potion · poison with no garment/clothing member, and its equip_slot enum abstracts the authored piece names into seat_1..seat_7 + six named stat slots + three unassigned_stat_slot placeholders (MINT_DESIGN_B §1.4 L480) — so the authored wearable identities are not addressable. Asset side: docs/translation/T99_Translation_AssetGen.md L82 routes NPCs MetaHuman-first with "carried gear/props route through Weapons" and names no clothing lane; T1_Region_Page_Template L122-123 records the asset_category/asset_routing enum as NOT YET RATIFIED. POSITIVE CONTROL: an armor|armour|clothing|dress|apparel|garment|costume grep over docs/ hit 315 files, so the vocabulary is searchable — the structured zero is real.
Delta. This is the exact analogue of the concept-art finding ("not everyone has the same house"): every NPC, companion and player wears something region-specific, the CVD makes dress a primary-source obligation, and there is no row, no enum member, no asset class, and no pipeline that produces it. Nothing distinguishes a Manggarai weaver's ikat from a Kilwa merchant's dress in any structured form.
Blocking. Rank 5 (asset_concept/morphology/asset_category/mesh_tags across the slice) — it decides the asset routing for slice entities and would freeze without a clothing class; and any MetaHuman NPC pass on the 13 slice regions.
Proposed home. A per-region dress/textile lane on the region page's machine block feeding a garment item_class + named body slots on T0_Equipment_Registry, with a clothing asset_category declared in rank 5's enum ratification.
items-economy#7 [MAJOR] merged into GAP-134 - The factory contract has no per-chapter item, material, or vendor rider
Vision rules. docs/FACTORY_CONTRACT.md is the rank-2.5 per-chapter obligation register — "it answers 'for Ch NN, what must be true?'" (PRE_5090_BUILD_PLAN.md L62-67) — and gate 30 (harness/check_factory_contract.py) keeps the doc and docs/factory_contract.json in sync while surfacing consumption gaps. Every chapter build from here on reads it.
What exists (verified). 70 FR rider rows (measured: ^\| FR- = 70). The item-adjacent ones are FR-009 (gear imprints → T0_Imprint_Affix#rarity_token_min, gate rarity_firewall, plan:rank14), FR-010 (loadout sanctums → T0_Loadout_Set_Definition), FR-005 (healing/cure loop → T0_Status_Table#cure_material_refs). A vendor|currenc|gather|trade good|merchant|potion|consumable|clothing|garment|dress grep over the file returns exactly ONE rider hit — FR-032, and there "dress" means terrain dressing ("landscape import… dress, stage"). POSITIVE CONTROL: that single match proves the pattern fires on real rider text; the other nine terms are true zeros.
Delta. A chapter can be declared factory-complete with no wearables, no consumables, no materials, no gather nodes, no vendor, and no declared exchange medium — gate 30 has nothing to check. The riders that do exist cover the ROLL mechanics (imprints, loadouts) and skip the items being rolled.
Blocking. The next chapter build to run the contract (the checklist emitter runs per chapter) — and the freeze constraint that rank 2.5 lands BEFORE ranks 13-17 means item riders added later are retrofits, which is precisely what the contract exists to avoid.
Proposed home. Four new FR riders (chapter item bill · chapter material/gather bill · chapter vendor + accepted-goods · chapter exchange medium declared) in FACTORY_CONTRACT.md + factory_contract.json in one commit, per the gate-30 sync rule.
items-economy#8 [MAJOR] GAP-169 - The ten trades have no product catalog — §9.1's six named cross-trade capabilities have no home
Vision rules. T1_Trades_Master §9 (L266): "Engineering requires materials from Mining. Alchemy requires Herbalism inputs. Blacksmithing requires Mining." §9.1 names six specific unlockable capabilities with thresholds (runic weapon alterations T3+T9; elemental infusion preparations T5+T4; vril-adjacent food preparation T7+T4; encoded garment patterns T6+T9; Vimana precursor T8+T2; ocean-creature coordination T1+T10) and rules the split: "Consumable combat items are crafted by Engineering (Trade 8, bombs) and Alchemy (Trade 5, potions and poisons, fed by Herbalism Trade 4 botanical inputs via the Apothecary)… Spellcraft and consumables are two separate economies." ELEMENTS_MATRIX_RECOVERED §4 authors the real recipe chains (Default→Steel→…→Graphene-Nickel with iron/charcoal/chromium/rutile/graphene; Black Powder with saltpeter/sulphur/charcoal).
What exists (verified). T0_Trade_Registry [DRAFT v0.1] = 10 rows × 12 cols — trade_id, name, homes, pillar_9 concept, the 120 gate placeholder strings, compound_membership, upgrade ceiling, grammar ref, ceremony refs. There is no inputs, outputs, product, or recipe column. T0_Equipment_Registry carries a recipe_ref column whose own spec says "recipe key (recipe rows are a later lane)" (MINT_DESIGN_B §1.4 L485). No recipe registry exists (positive control as in gap 4: the registries-wide recipe grep hits only prose notes). Disclosed: VOL2 FL-6 (L1025) owns "mint recipe struct + craft subsystem + recipe rows" for the herbalism loop at wave W-LW3, and MN-5 (L996) owns the ore→material→craft chain table — so the Herbalism/Mining legs have wave owners.
Delta. What has no owner is the cross-trade capability catalog itself: six named §9.1 unlocks and eight of the ten trades have no product rows, no output class, and no threshold data — so "what does mastering Trade 6 let me make?" is unanswerable in structured form, and the 120 trade gates (rank 23) will mint quests whose rewards point at nothing.
Blocking. Rank 23 (mint the 120 trade-gate quest rows + the Book-of-Trades data home) — gate quests need their unlocked product to exist as a row, or the roster lands with 120 dangling rewards.
Proposed home. Product/output columns on T0_Trade_Registry plus a recipe table generalized from FL-6's struct so all ten trades and the six §9.1 cross-trade unlocks share one home.
items-economy#9 [MAJOR] merged into GAP-136 - Eight item/gear registries minted 2026-07-27 have no engine consumer — no struct, no DataTable, no import rank
Vision rules. The wiring doctrine binds: "an artifact with no consumer row is an orphan by definition" (docs/DOC_MAP.md L9-10). The deterministic path is proven and named — VOL2 FL-12: "Generate FloraRegistryRow.h + DT_Flora via gen_row_struct.py… the diff IS the review." MINT_DESIGN_B §1.4 L502 declares the Equipment consumers as "the imprint foundry · loadout sets · the crafting lane · P2 AssetGen · the sweeps."
What exists (verified). Game repo C:/dev/Humanity/Humanity: 48 row structs in Source/Humanity/Public/Data/ and 45 DataTables in Content/Data/Registries/ (both listed in full). NOT PRESENT for T0_Equipment_Registry, T0_Rarity_Grade, T0_Imprint_Affix, T0_Bonus_Option_Registry, T0_Bonus_Pool_Registry, T0_Loadout_Set_Definition, T0_Status_Table, T0_Element_Effectiveness. POSITIVE CONTROL twice over: (a) RngDropTableRow.h AND DT_RngDropTable.uasset both exist for a 0-row registry, so a table with no rows still gets a struct — the absence is not "empty means skipped"; (b) a DT_Equipment|DT_Rarity|DT_Imprint|DT_LoadoutSet|DT_BonusOption|DT_Status grep over the canon repo returns exactly ONE line — PRE_5090_BUILD_PLAN.md rank 25's DT_StatusTable — while DT_Flora/DT_Mineral/DT_Weapon do appear in plan text, proving DT_ names are plannable and these five simply are not planned.
Delta. The rank-14 §§7-12 mint is CSV-only. Rank 2 covers regenerating the 13 DRIFTED structs, not generating missing ones; rank 25 covers DT_StatusTable alone. Seven registries carrying the ruled gear/bonus/loadout canon are unreachable from the engine.
Blocking. P2.6 (inventory/equipment/loadout, BUILD-NOW per PRE_5090_BUILD_PLAN L2830) and FR-009/FR-010 — both read tables that do not exist in the engine; the first equip action in the slice hits this.
Proposed home. Add the seven registries to the gen_row_struct + DataTable import list in the same pass as rank 2's struct regeneration (zero-token, deterministic).
items-economy#10 [MAJOR] GAP-170 - No T1 domain-authority doc owns items, equipment, or the economy
Vision rules. CLAUDE.md authority hierarchy: T1 docs hold domain authority and "T0 registries — structured row-level canon, subordinate to the T1 doc owning that domain." CVD L1005 delegates explicitly: "Resource-bar count, HUD placement, recharge rates, and the rune and consumable lanes are owned by T1_Combat_System_Spec." PRE_5090_BUILD_PLAN §12 item 26 lists as missing specs: "inventory/equipment/loadout rules, economy/currency/vendor loop, … crafting/gathering runtime… None exist as specs today."
What exists (verified). 20 T1 docs on disk (listed). T1_(Item|Items|Economy|Equipment|Loot|Crafting) returns ZERO occurrences anywhere in the repo. POSITIVE CONTROL: the identically-shaped T1_(UI_UX_Spec|Trades_Master) returns hits in the same plan file (L101, L945, L1695, L3025), so the pattern form matches real doc names — the items/economy zero is real and no plan even names such a doc. Rank 20 authors only T1_UI_UX_Spec + T1_Audio_Spec; rank 24 authors T1_Personal_Dimension_Spec. T1_Combat_System_Spec does carry the imprint lane (§13) and the resource model (§5) but no consumable catalog and no economy — its own §1 (L27) scope statement never claims items or economy beyond the imprint/loadout lanes.
Delta. Authority for this lane is scattered across T1_Combat §13, T1_Trades §9, WS_045/WS_046 worldstate rows and the MINT_DESIGN pipeline-review doc, with no owning T1 doc — so every item registry is subordinate to nothing, and item-26's economy/inventory/crafting half has no ranked owner while its UI/audio half does.
Blocking. Ranks 13-17 freeze schemas; a registry whose domain has no authority doc freezes its enums (item_class, equip_slot) with no doc to arbitrate later contradictions — the exact drift class CLAUDE.md's hierarchy exists to prevent.
Proposed home. Mint T1_Items_and_Economy_Spec as a ranked sibling of rank 20, absorbing item-26's inventory/equipment/economy/crafting half and taking authority over the eight item registries.
items-economy#11 [MAJOR] GAP-171 - The affix pool is five unnamed placeholders and the rarity ladder has no presentation
Vision rules. Josh RULED the gear-imprint lane in the Borderlands/Diablo register (docs/COMBAT_PROGRAM_ADDENDUM.md §8, 2026-07-26; memory node combat addendum). T1_Combat_System_Spec §13 L536: "An imprint carries a rolled bonus rather than a fixed one. Roll quality scales with the rarity of the source… Slot counts follow the ratified RN_0018 scheme — one, two, three, and four slots for the Common, Rare, Epic, and Legendary item grades respectively, with the questline-earned MYTHIC grade sitting above." A rolled-affix economy is definitionally a POOL — MINT_DESIGN_B §1.2 makes the sweep tooth "a never-picked pool option = a balance defect."
What exists (verified). registries/T0_Imprint_Affix [DRAFT v0.1] = 5 rows × 26 cols, and all five are IMP_0001-0005 with affix_name_text EMPTY, string_status placeholder, rune_anchor_ref all RN_0018 (read directly). fk_spec.json L672-677 confirms: "BLANK on all five seed affixes — the design supplies no per-seed minimum grade." registries/T0_Rarity_Grade [DRAFT v0.1] = 13 rows (8 at axis=item_grade: none/common/uncommon/rare/epic/legendary/mythic/signature) with display_name_text, colour_ref, pickup_sfx_id_ref, beam_vfx_ref and card_layout_ref ALL blank on every row. POSITIVE CONTROL: the ordinal and axis columns ARE populated on the same rows, so the reader resolves the file; the presentation blanks are real.
Delta. The ruled roll economy has a five-slot placeholder pool — there is no affix roster to roll from and no build-space to sweep. Separately the loot-feel channels (rarity colour, pickup sound, drop beam, card layout) are unpopulated; card_layout_ref's declared consumer is "rank-20 UI" so presentation is partly routed, but the affix ROSTER itself has no rank.
Blocking. gate rarity_firewall + check_build_space are armed against these tables now, and FR-009 asserts per-chapter imprint rolls — the first slice drop that should roll an affix has a five-element placeholder pool.
Proposed home. Author the affix roster onto T0_Imprint_Affix (slot_axis × applies_to_tags partitions harvested from GDD §12.1's authored good/evil-per-weapon-type axis, per MINT_DESIGN_B L354-357), and fill the rarity presentation columns with rank 20.
items-economy#12 [MINOR] GAP-172 - Culinary Arts has no product class — item_class freezes without food
Vision rules. Trade 7 Culinary Arts is one of the ten canonical trades with a full 12-tier gate roster (T1_Trades_Master §3.7 "Culinary Arts as nourishment consciousness", §5.7), and §9.1 rules a specific cross-trade product: "Trade 7 Culinary Arts plus Trade 4 Herbalism unlock vril-adjacent food preparation canonical at the Adeptus Minor threshold for both trades." CVD L270 names foodways among the region textures that must come from primary source material.
What exists (verified). T0_Equipment_Registry's item_class enum is exactly wearable · offhand · grenade · bomb · potion · poison (MINT_DESIGN_B §1.4 L481) — no food, meal, dish, or provision member. Zero food rows exist. The nearest structure is T0_Flora_Registry's gatherable_parts (25 rows, four regions) which is an INPUT, not a prepared item. POSITIVE CONTROL: the enum is quoted from the mint spec that produced the live 26-column header, and the live header confirms the column exists — so the missing member is a real gap in a real enum, not an unread file.
Delta. A canonical trade's entire output class is inexpressible in the only item registry. Because item_class is an enum on a registry heading into the ranks 13-17 schema freeze, adding the member later is a schema change rather than a row add.
Blocking. Not slice-critical (Trade 7's home is Ch 42), but the enum decision is — it must land before the rank 13-17 freeze or become a post-freeze schema edit; the factory-contract freeze rule (rank 2.5 before 13-17) applies equally here.
Proposed home. Add a food/provision member to T0_Equipment_Registry.item_class before the schema freeze, with the vril-adjacent preparation threshold carried as a craft_trade_ref pair.
Generated by harness/site/structure_site.py — the URL path is the repo path. review root