FG33_BUILDING_LENSES_2026-08-05.md

pipelines/FG33_BUILDING_LENSES_2026-08-05.md

FG-33 executed — the two building lenses, run BEFORE the kit and module id space freezes

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.

Why now, in FG-33's own words

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

Method (the standing wave rule, applied)

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.

Lens A — minecraft-sandbox-build

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

FG33-M1 — the take verb shipped without its partner · MISSING · engine · P0 · CH2_NOW

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.

FG33-M2 — the module id space is unminted, and two live pointer columns resolve to nothing · DESIGNED-UNBUILT · canon · P0 (pre-freeze) · SLICE

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.

FG33-M3 — the home states no guarantees, and the first one opens late · WEAKER · canon · P1 · SLICE

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.

FG33-M4 — sixteen recipes, zero outputs · DESIGNED-UNBUILT · canon · P1 · SLICE

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.

FG33-M5 — the row structs are generated and nobody reads them · DESIGNED-UNBUILT · engine · P1 · SLICE

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.

FG33-M6 — the space itself has no engine presence · DESIGNED-UNBUILT · engine · P2 · POST_SLICE

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.

Lens B — dqb2-settlement-community

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

FG33-D1 — creation has no audience, and the join is two rows away · DESIGNED-UNBUILT · canon · P1 · SLICE-adjacent

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.

FG33-D2 — there is no room class, so a built SET can never be recognized · MISSING · canon · P1 · rides FG-29

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.

FG33-D3 — a T0 row whose canonical authority is a proposal · FINDING (integrity, not design) · WS7 wiring lane · P1

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.

FG33-D4 — our settlement loop runs the other way · DIVERGENT-BY-DESIGN · pre-registered · no owner needed

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.

FG33-D5 — the ratified completion promise has no denominator · WEAKER (against our own promise) · canon · P1

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.

FG33-D6 — the slice has the fiction of shelter and no verb for it · DESIGNED-UNBUILT · spine + engine · P1 · CH2_NOW-adjacent

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.

Where this exceeds the teacher (the claim, and its honest state)

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.

Routing

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.

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

Declared limits of this run

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.

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