pipelines/FG33_BUILDING_LENSES_2026-08-05.md
Status: PROPOSAL-TIER lens findings · 2026-08-05 · the FG-33 item of the fun-gap wave-1 synthesis
(task w64s46vrh), discharged. Lenses: minecraft-sandbox-build and dqb2-settlement-community,
both pulled out of WAVE P2 of docs/proposals/COMPARATOR_LENS_PROGRAM.md and run as a P1-class pair.
Targets: _source/01_Tier_1_Foundation/T1_Personal_Dimension_Spec [ACTIVE v1.1] (authored
2026-08-04, flipped ACTIVE the same day) plus the LIVE T0_Dwelling_Registry, T0_Recipe,
T0_Vehicle_Registry and T0_Gather_Node_Registry rows and the game repo's Source tree, all read
READ-ONLY. This document sets no canon, ratifies nothing, and edits no registry row.
"Pull minecraft-sandbox-build and dqb2-settlement-community out of WAVE P2 and run them as a
P1-class pair against the now-authored Personal Dimension spec plus live Dwelling/Vehicle/Recipe
state BEFORE the kit-and-module id space freezes — by the program's own freeze-gate rule the
current order guarantees both land as fix-forward tickets on a frozen schema, and the one
building lens that DID run returned the authored-skin-vs-authored-object collision nobody else
had noticed."
The teacher line FG-33 carries is the program's own freeze gate: *a lens is only worth its tokens
before the thing it critiques hardens.*
**THE FREEZE GATE HELD, and this is the first time it has been honoured on a P2 lens pulled
forward.** Measured at run time: of 75 live T0_* registries, ZERO are named for a module or a kit
(positive control on the same probe — Dwelling, Recipe, Vehicle and Minigame all HIT). The
id space these lenses critique does not exist yet, so every finding below is a PRE-FREEZE
recommendation rather than a fix-forward ticket against a hardened schema. That was the whole point
of pulling them forward, and it is now a fact rather than a hope.
and the Personal Dimension spec §10 goes further — it classes its own module-grammar silence as a
RATIFICATION silence, not an authoring vacuum, because the proposal-tier grammar already exists.
That distinction is honoured in every verdict below.
owner, wave and priority.
any fix shape.
completion condition and the §17 floor. Where a finding brushes one it says so and stops.
minecraft-sandbox-buildTeacher mechanisms carried verbatim from the wave-1 synthesis: *"one click takes, one click places,
and it is permanent"* (FG-13) · *"the module table with its per-entry rules IS the build system"*
(FG-29) · *"a home is defined by the guarantees it gives, and every one is available in the first
hour"* (FG-30) · *"build taught as survival under pressure, never as a menu"* (FG-14).
Current state, cited. Source/Humanity/Public/Interaction/HumanityInteractableComponent.h
declares EHumanityInteractKind with exactly four members, and the header's own comments name them:
Talk (opens a conversation), Trade (opens the trade surface), Gather ("Harvests / picks up"),
Generic ("Anything else — OnInteract only"). There is no verb that PLACES anything. Positive
control: the enum symbol resolves in 3 source files, so a genuine absence and a broken search are
distinguishable here; the bare token Place hits 17 files, none of them an interact verb (they are
Placement/Placed/GameplayCue strings — the search that DID match was read, per the P1 method
rule).
The teacher. Minecraft's loop is one click takes and one click places, and what is placed is
permanent. We built the take half and stopped.
Fix shape. One enum member plus its authoring obligation — a Place verb resolving a module id,
with the gather ledger's existing consume path as the cost sink. **This is the same enum edit
W3-01 already asks for** (Play + Examine, wave-3 rank 1) and the same one FG-13 needs: three
worklist items, one edit. Sequence them together or the enum is touched three times.
Current state, cited. 75 T0_* registries; zero named for a module or kit (control above).
T0_Dwelling_Registry.build_grammar_ref is blank on 2 of 2 rows, while the WS7 wiring plan seeds
that same column with shared_trade_module_grammar. T1_Personal_Dimension_Spec §5.3 states it
plainly: canon states that ONE grammar is shared and that the register is free building, and "does
not state the module list, the placement rules, the plot or build grid, the snapping model, or any
budget." §10 then classes that silence as a RATIFICATION silence and names where the design already
lives (docs/proposals/systems/base-building.md §4.3 — module classes of walls, roofs, floors,
stations, defences and decor; free-form placement; era-and-culture-authentic palettes; function
tiers), with the instruction that a later build wave should start from that proposal rather than
re-derive one.
The teacher. In Minecraft and DQB2 the module table WITH ITS PER-ENTRY RULES *is* the build
system. Everything downstream — recognition, budgets, snapping, palettes — is a column on that
table.
Fix shape. Mint the module id space as ONE referent both circular columns resolve to, riding the
architecture-kit id space WQ_0032 is already ranked to mint so one grid/storey/joint/piece set
serves both world buildings and player modules. This is FG-29 unchanged; what this lens adds is the
DATE — it must land before the kit id space freezes, and today it still can.
Current state, cited. T0_Dwelling_Registry has 2 rows. Five function columns are blank on both
— siting_rule 0/2, build_grammar_ref 0/2, creature_capacity_band 0/2, fast_travel_node 0/2,
hearthway_access_rule 0/2 — while home_id, home_class, integrity_visible and
chapter_available_from are filled 2/2. That contrast IS the positive control: the reader works,
the cells are empty. DW_0001 (trade-home) reads chapter_available_from = CH_05; DW_0002
(dwelling-home, noted "No-Mans-Sky/Minecraft class") reads CH_39.
The teacher. A home is defined by the guarantees it gives — rest, storage, a return node — and
in both teachers every one of them is available in the first hour.
Fix shape. Fill the function columns with the genre-standard defaults the standing law says to
assume rather than board. Collision declared: FG-30 already owns this row and additionally
recommends correcting chapter_available_from CH_05 → CH_07 against the spine. This lens did NOT
re-derive that correction and does not assert it — it belongs to FG-30's lane, and the two must not
both edit the row.
Current state, cited. T0_Recipe carries 16 rows. output_item_ref is blank 16/16 and
recipe_name_text is blank 16/16, while required_trade_ref is filled 16/16 and
required_station_class 16/16 (the positive control), and inputs is filled on 6 of 16. Every row
declares its own honesty in an authoring_state cell (ladder_rung_authored_inputs_unauthored,
inputs_cited_tier_unauthored, ladder_rung_partial_inputs, …) and cites the Josh-recovered
Blacksmithing metal-alloy ladder as its source.
The teacher. The Minecraft loop only closes because what you take becomes a thing you can place
or use. A recipe that names no output cannot close it.
Fix shape. Populate output_item_ref against real targets in the item matrix. This is FG-13's
canon half, and the rows' own authoring_state cells are already the worklist — the schema does not
need to change to fix this, only the content, which is why it is P1 rather than pre-freeze.
Current state, cited. FDwellingRegistryRow appears in exactly ONE file across the game repo's
Source tree — its own generated header, Public/Data/DwellingRegistryRow.h. DT_Dwelling.uasset
exists in Content/ and is read by nothing. RecipeRegistryRow.h does not exist at all (0 files)
even though T0_Recipe carries 16 rows. Positive control on the same walker:
HumanityInteractableComponent resolves in 8 files, so the probe sees real consumers when they
exist.
The teacher. This is not a teacher gap — it is the DESIGNED-UNBUILT pattern the wave-1 synthesis
named ("the canon exists; the canon→engine JOINS don't"), confirmed inside the building domain.
Fix shape. No new design. The row struct for T0_Recipe is a generator run away, and the
Dwelling struct needs a consumer, not a rewrite. Both ride whichever engine wave takes FG33-M1's
Place verb, because the verb is what would first need to read a module row.
Current state, cited. PersonalDimension resolves in ZERO source files and ZERO Content assets,
against the same 8-file control. Canon calls the space "a streamed sub-space, contractually"
(T1_Personal_Dimension_Spec §3.3).
Not a defect, and the priority says why. The Domains build wave is sequenced post-79 by its own
Josh ruling (§11 Consumers). The space being unbuilt is ON PLAN. What is NOT on plan is that the
id space it shares with the slice-era world buildings (FG33-M2) is a decision the slice makes
first — which is exactly why FG-33 asked for these lenses now and why M2 is P0 while M6 is P2.
dqb2-settlement-communityTeacher mechanisms carried verbatim: *"the game NAMES the room, a villager moves in and says a line
about it; creation has an audience"* (FG-35) · *"a collection you can stand INSIDE is a collection
worth completing"* (FG-32) · *"a vehicle that is a walkable HOME with a heading turns travel time
into ownership"* (FG-31).
Current state, cited. The words audience, room and evaluator occur ZERO times in
T1_Personal_Dimension_Spec — positive control on the same file: DQB2 6 occurrences, Minecraft
6, extent 6, so the probe could match and did not. On the worldstate side both halves of the join
FG-35 designs already exist as rows and neither points at the other: `WS_019
community_state_per_region is RATIFIED, carries canonical_authority
T1_Integrity_Paths_Worldstates_Master §8.3, is the ratified mark_write` home, and lists three real
consumers (region_page_section_19_dispatcher, Ch59_65_revisit_renderer,
NPC_dialogue_dispatcher); WS_031 dwelling_home_ledger is DRAFT with consumers = base-building
— itself.
The teacher. DQB2's entire payoff is that the game NAMES what you built and someone moves in and
reacts to it. Today the only audience for a built home in our design is a shader picking an
integrity colour.
Fix shape. FG-35's three joins, unchanged and now measured: WS_031 writes into WS_019
(built-and-maintained raises a region's recovery reading, abandonment lowers it); a room-recognition
rule; a residency flag on the existing persona relationship ledger. No new system — but see
FG33-D2, which is the piece FG-35 assumed.
Current state, cited. Of 75 T0_* registries, zero are named Room, Settlement or
Community (same control as FG33-M2: four sibling tokens HIT). FG-35's own fix shape says "a
room-recognition rule maps a placed module SET to a room_class" — and room_class has no data
home anywhere in the corpus.
Why this is the load-bearing one. Every DQB2 mechanic in this domain is downstream of
recognition: the naming, the villager reaction, the residency, the completion read. A room class is
a small closed vocabulary on the module table FG33-M2 is about to mint. Minted with it, it costs one
column; minted after the freeze, it is a schema migration.
Fix shape. A room_class vocabulary as a column family on the module id space, plus the
set→class rule stated as a rule and not as code. Shapes only; no counts.
Current state, cited. WS_031 dwelling_home_ledger carries `canonical_authority =
docs/proposals/systems/base-building.md. Under the authority order (docs/DOC_MAP.md` §0, and the
subordination header every proposal now carries) a proposal is SUBORDINATE to the T0 layer, so a T0
row citing a proposal as its authority is inverted. Positive control on the same column: WS_019
cites T1_Integrity_Paths_Worldstates_Master §8.3 and WS_001 cites §2.1 — the column carries real
T1 authority elsewhere, so this is a specific row and not a column-wide convention.
Stated, not fixed. The row is DRAFT and explicitly labelled "WS7 systems-wiring anchor (DRAFT)",
so this may be a deliberate placeholder. Either way it is a finding for the owning lane, not an edit
for this one: changing a registry row shifts the fidelity baseline, and this lens does not touch
canon.
Current state, cited. T1_Personal_Dimension_Spec §5.1: the ten trade home-bases are "the fixed
workshops, locked at HL_0033 and untouched." The regions the player builds into are real cultures
with authored personas and relational webs.
The divergence. DQB2's loop is *build the town and the townspeople arrive*. Ours inverts it: the
town already exists, its people are real and already have lives, and the player builds INTO it. That
is not a gap and it must never be reported as one. **Pre-registered here so no later lens
re-litigates it**, per the standing wave rule's declared-divergence discipline.
Current state, cited. The CVD's cardinal numerical canon names an L2 completion condition: "max
upgrades on every craft (the Vehicle/Mount and base Domains buildables) and top score on every
minigame" (§17.12, quoted in T1_Personal_Dimension_Spec §5.2). Live: T0_Vehicle_Registry has 4
rows with upgrade_stage_chain filled 2/4 and transform_configs 0/4; T0_Dwelling_Registry has 2
rows with build_grammar_ref 0/2; T0_Minigame_Registry has 2 rows with score_model_object 0/2.
So neither "every craft", nor "base Domains buildables", nor "every minigame" is enumerable today.
Fix shape. No new promise — the promise is ratified. What is needed is that each of the three
denominators becomes computable, which is the same shape the minigame side already carries as W3-12.
The promise_ledger gate is the right home for the tooth once the denominators exist.
Current state, cited. shelter occurs in 15 of 80 live spine nodes, CH_02 among them.
Personal Dimension / Personal-Dimension occurs in 2 of 80 (CH_01, CH_EPILOGUE), and the spec
itself measures both of those as connective-ring bookkeeping rather than staged content (§6.5,
§8.5). Control: build occurs in all 80 nodes, so the low counts are real and not a broken probe.
The teacher. DQB2 and Minecraft both teach building in the first hour, under pressure, never as
a menu.
Fix shape. FG-14 unchanged — promote the shelter already written in CH_02's own facet prose to a
beat next to the fire-making puzzle, costed out of the gather ledger, using FG33-M1's place verb.
What this lens adds is the count: the slice already SAYS shelter fifteen times and cannot DO it once.
and DQB2's rooms mean one thing each; our module grammar is trade-crafted with era-and-culture
palettes, so provenance is expressible in the data model neither teacher has. Rows today: zero.
thing plus a band-keyed runtime override reading WS_001 integrity_score — so a built world
REPAINTS ITSELF as the player's character drifts, and can un-repaint. Neither teacher has a
building space that responds to who you have become. Architecturally answered, entirely unbuilt.
(§6.1-§6.2, from T3_Familiars_Named §5.11). DQB2's islands reset.
All three are design-side EXCEEDS and build-side zero. That is the honest reading, and it is the
reading the comparator rubric's building domain will return until a wave changes it.
docs/proposals/COMPARATOR_LENS_PROGRAM.md — minecraft-sandbox-build and dqb2-settlement-community move from WAVE P2 (queued) to RUN, with this file as the record,
and cell 14b / cell 22 of the 24-cell board gain a claiming run. Landed in the same sitting.
harness/qa/comparator_rubrics/building.json — checks BLD-C1 through BLD-C7 are the standingform of FG33-M1/M2/M3, D1 and M6; a wave in this domain now answers them at its verify leg.
FG-14, FG-29, FG-30, FG-31, FG-32, FG-35, FG-36 (wave 1) · W3-01, W3-12 (wave 3) · WQ_0032 (the
architecture-kit id space). Nothing here is a new program; two items are new (FG33-D2 room_class
and FG33-D3 the authority inversion) and both are named as such.
docs/proposals/systems/base-building.md §4.3 and the WS7 wiring plan are cited as the EXISTING proposal-tier design, exactly as T1_Personal_Dimension_Spec §10 frames them. Nothing here
ratifies either, and the spec's own instruction — a later build wave starts from that proposal
rather than re-deriving one — is carried forward, not overridden.
and left with its owner.
a lens wave is refutation-gated; this pair was run inline as FG-33's discharge. **The refutation
pass is therefore an open debt on this record**, stated rather than quietly skipped, and the
findings above should be read as cited-and-controlled but not yet adversarially attacked.