{
    "schema": "moo-assets/1",
    "summary": {
        "faked": 0,
        "requested": 0,
        "building": 0,
        "delivered": 25,
        "consumed": 17
    },
    "total": 42,
    "slots": [
        {
            "slot_key": "builds.plank_house",
            "label": "Wood-plank house tier",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/builds.js"
            },
            "prop": "plank-house",
            "state": "roofed",
            "category": "structure",
            "target": {
                "x": 4.7,
                "y": 3.356,
                "z": 4.039
            },
            "pivot_required": "base-center",
            "wishlist_ref": "ASSETS.md",
            "priority": 0,
            "status": "delivered",
            "prop_registered": true,
            "ready_assets": 6,
            "notes": "DELIVERED 2026-07-30. Three cumulative states (frame / walled / roofed) x 2 variants, mirroring buildPlan.js planCabin() so the mesh lands on the plot builds.js already stakes. Target corrected from the doc-transcribed 3.00x2.60x3.00 to the placeholder's real span - see this migration's header. The window opening planCabin() leaves in the +x wall (1.35 x 0.785 m) is filled by the separate `plank-window` prop, which derives its size from that opening rather than restating it. No plank-door yet: planCabin() draws a bare opening with jambs and a header, so there is no door leaf to replace."
        },
        {
            "slot_key": "heldTool.axe",
            "label": "Axe",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/heldTool.js"
            },
            "prop": "axe",
            "state": "default",
            "category": "tool",
            "target": {
                "x": 0.1,
                "y": 0.8,
                "z": 0.3
            },
            "pivot_required": "grip",
            "wishlist_ref": "ASSETS.md",
            "priority": 0,
            "status": "delivered",
            "prop_registered": true,
            "ready_assets": 3,
            "notes": "P0. Exists as makeAxe() primitives, both first-person and in-world. GRIP pivot - the sixth pivot mode."
        },
        {
            "slot_key": "heldTool.shovel",
            "label": "Shovel",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/heldTool.js"
            },
            "prop": "shovel",
            "state": "default",
            "category": "tool",
            "target": {
                "x": 0.15,
                "y": 1.1,
                "z": 0.2
            },
            "pivot_required": "grip",
            "wishlist_ref": "ASSETS.md",
            "priority": 0,
            "status": "delivered",
            "prop_registered": true,
            "ready_assets": 3,
            "notes": "Already has world + first-person primitives. The dig verb depends on it."
        },
        {
            "slot_key": "material.wood_plank",
            "label": "Wood plank (material item)",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/recipes.js"
            },
            "prop": "wood-plank",
            "state": "default",
            "category": "material",
            "target": {
                "x": 1.2,
                "y": 0.04,
                "z": 0.2
            },
            "pivot_required": "base-center",
            "wishlist_ref": "ASSETS.md",
            "priority": 0,
            "status": "delivered",
            "prop_registered": true,
            "ready_assets": 2,
            "notes": "P0 material. Feeds the plank-house tier and the COMPOUND-MATERIALS-PLAN recipe registry."
        },
        {
            "slot_key": "introTown.pilha",
            "label": "Brick heap - the stage-zero town",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/introTownPlan.js"
            },
            "prop": "pilha",
            "state": "default",
            "category": "furniture",
            "target": {
                "x": 2.6,
                "y": 1.1,
                "z": 2.2
            },
            "pivot_required": "base-center",
            "wishlist_ref": "intro",
            "priority": 0,
            "status": "delivered",
            "prop_registered": true,
            "ready_assets": 3,
            "notes": "DELIVERED 2026-08-24. One state, three variants, and all three measure 2.600 x 1.100 x 2.200 to the millimetre - the stacking pattern is what varies (courses square / herringbone / half-collapsed with a spill), which is the shape the one-bounding-box rule bites hardest on. Built out of the SAME two modules the wall becomes: brick-full 0.80x0.40x0.40 and brick-slab 0.80x0.40x0.20, so a heap is literally the masonry before anybody laid it. Painted greyscale through brick_common, no hue anywhere, so it takes the fired-brick tier colour off the same per-instance setColor the wall will. surface: true, A/B-d rather than assumed: without the bevel and the baked AO the forty blocks share their edges in one plane and render as a white bunker. CONSUMER DOES NOT EXIST - the introduction town module is unwritten, and this prop is what unblocks its first rung."
        },
        {
            "slot_key": "props.hammer",
            "label": "Hammer / mallet",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/props.js"
            },
            "prop": "hammer",
            "state": "default",
            "category": "tool",
            "target": {
                "x": 0.1,
                "y": 0.4,
                "z": 0.15
            },
            "pivot_required": "grip",
            "wishlist_ref": "ASSETS.md",
            "priority": 1,
            "status": "delivered",
            "prop_registered": true,
            "ready_assets": 3,
            "notes": null
        },
        {
            "slot_key": "props.pickaxe",
            "label": "Pickaxe",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/props.js"
            },
            "prop": "pickaxe",
            "state": "default",
            "category": "tool",
            "target": {
                "x": 0.1,
                "y": 0.7,
                "z": 0.4
            },
            "pivot_required": "grip",
            "wishlist_ref": "ASSETS.md",
            "priority": 1,
            "status": "delivered",
            "prop_registered": true,
            "ready_assets": 3,
            "notes": null
        },
        {
            "slot_key": "market.stall",
            "label": "Real market stall",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/market.js"
            },
            "prop": "market-stall",
            "state": "default",
            "category": "structure",
            "target": {
                "x": 2.5,
                "y": 2.4,
                "z": 2
            },
            "pivot_required": "base-center",
            "wishlist_ref": "b3",
            "priority": 1,
            "status": "delivered",
            "prop_registered": true,
            "ready_assets": 2,
            "notes": "Today the market is a procedural tent. VILLAGERS-PLAN wants three roles: game keeper, shop keeper, builder. Good candidate for the AUTHORED channel - a hero piece, not a parametric family."
        },
        {
            "slot_key": "ring2.oven",
            "label": "Communal bread oven",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/market.js"
            },
            "prop": "oven",
            "state": "default",
            "category": "structure",
            "target": {
                "x": 1.6,
                "y": 1.5,
                "z": 1.6
            },
            "pivot_required": "base-center",
            "wishlist_ref": "b3",
            "priority": 1,
            "status": "delivered",
            "prop_registered": true,
            "ready_assets": 2,
            "notes": "Procedural brick dome today. Grounded in LORE: the oven letter (Feed it a fire sometime) and Marlas bread."
        },
        {
            "slot_key": "ring2.well",
            "label": "Village well",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/market.js"
            },
            "prop": "well",
            "state": "default",
            "category": "structure",
            "target": {
                "x": 1.8,
                "y": 2.2,
                "z": 1.8
            },
            "pivot_required": "base-center",
            "wishlist_ref": "b3",
            "priority": 1,
            "status": "delivered",
            "prop_registered": true,
            "ready_assets": 6,
            "notes": "RING2-PLAN authored set piece: ring + posts + beam, village V0 at (0, 860)."
        },
        {
            "slot_key": "introRing.passo",
            "label": "Wayside chapel - the road beat and the skyline",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/introTownPlan.js"
            },
            "prop": "passo",
            "state": "roofed",
            "category": "structure",
            "target": {
                "x": 4.885,
                "y": 5.672,
                "z": 5.464
            },
            "pivot_required": "base-center",
            "wishlist_ref": "intro",
            "priority": 1,
            "status": "delivered",
            "prop_registered": true,
            "ready_assets": 12,
            "notes": "DELIVERED 2026-08-24. Four states x 3 variants. Measured, not as asked - see this migration's header. broken 4.565x1.953x5.363, frame 5.376x2.758x6.175 (the scaffold is what makes that state the widest), walled 4.605x4.652x5.465, roofed as declared. The four things that make it a passo and not a small casa are all in: one door and NO windows, a scrolled empena with a stone coping following it, a niche over the door punched through the wall and closed at the back with the figure standing IN the aperture, and a cross at roofed only. No tower and no bell - igreja stays the tallest thing in the world at 11.74 m. The variant is the six real chapels: what differs is the gable profile, not the seed. CONSUMER DOES NOT EXIST."
        },
        {
            "slot_key": "bricks.BRICK_GEO.full",
            "label": "Brick - full",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/bricks.js"
            },
            "prop": "brick-full",
            "state": "default",
            "category": "material",
            "target": {
                "x": 0.8,
                "y": 0.4,
                "z": 0.4
            },
            "pivot_required": "box-center",
            "wishlist_ref": "b1",
            "priority": 2,
            "status": "consumed",
            "prop_registered": true,
            "ready_assets": 1,
            "notes": "Wall workhorse. White albedo mandatory: instancePool.setColor carries the whole material-tier palette. v1 ships tiers as per-instance TINT, so real geometry is a fidelity upgrade."
        },
        {
            "slot_key": "scatterField.plinth",
            "label": "Plaza plinth + assembled statue",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/scatterField.js"
            },
            "prop": "plinth",
            "state": "default",
            "category": "artifact",
            "target": {
                "x": 1.1,
                "y": 0.5,
                "z": 1.1
            },
            "pivot_required": "base-center",
            "wishlist_ref": "b2",
            "priority": 2,
            "status": "consumed",
            "prop_registered": true,
            "ready_assets": 1,
            "notes": "Currently 4 stacked primitives at ys [0.61, 1.03, 1.28, 1.48] on a 1.1 x 0.5 x 1.1 base at PLINTH = (-30, 380). A real assembled statue replaces all four with visibility-staged parts. The one artifact players will stare at."
        },
        {
            "slot_key": "scatterField.shapeDefs.bottle",
            "label": "Letter bottle",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/scatterField.js"
            },
            "prop": "letter-bottle",
            "state": "default",
            "category": "artifact",
            "target": {
                "x": 0.176,
                "y": 0.4,
                "z": 0.176
            },
            "pivot_required": "contact-point",
            "wishlist_ref": "b2",
            "priority": 2,
            "status": "consumed",
            "prop_registered": true,
            "ready_assets": 2,
            "notes": "Placeholder is a lathe-profile corked bottle STANDING (0.176 dia x 0.40 tall). The ported phyto builder makes it LYING ON ITS SIDE (0.30 long x 0.10 high). Resolve in milestone 1: either re-pose the builder or accept the lying pose and update the slot. Reading practice is the reward - highest-fiction item in b2."
        },
        {
            "slot_key": "scatterField.shapeDefs.statue",
            "label": "Statue piece",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/scatterField.js"
            },
            "prop": "statue",
            "state": "piece-1",
            "category": "artifact",
            "target": {
                "x": 0.4,
                "y": 0.4,
                "z": 0.4
            },
            "pivot_required": "base-center",
            "wishlist_ref": "b2",
            "priority": 2,
            "status": "consumed",
            "prop_registered": true,
            "ready_assets": 5,
            "notes": "THE collection meta-goal. Fixed set of 4 at far-flung deterministic spots; reassembles piece-by-piece at the market plaza plinth. statue_common.py (17.8 KB) exists in phytoengine but has NO grow_statue.py entry point - that still needs writing."
        },
        {
            "slot_key": "scatterField.shapeDefs.stone",
            "label": "Ruin stone",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/scatterField.js"
            },
            "prop": "ruin-stone",
            "state": "default",
            "category": "artifact",
            "target": {
                "x": 0.3,
                "y": 0.19,
                "z": 0.24
            },
            "pivot_required": "base-center",
            "wishlist_ref": "b2",
            "priority": 2,
            "status": "consumed",
            "prop_registered": true,
            "ready_assets": 6,
            "notes": "Masonry chunk plus a 0.17 m mate. Ties to the brick/restoration fiction - natural sibling of the b1 material tiers."
        },
        {
            "slot_key": "market.kiln",
            "label": "Kiln (restorable)",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/market.js"
            },
            "prop": "kiln",
            "state": "default",
            "category": "structure",
            "target": {
                "x": 1.6,
                "y": 1.8,
                "z": 1.6
            },
            "pivot_required": "base-center",
            "wishlist_ref": "b3",
            "priority": 2,
            "status": "delivered",
            "prop_registered": true,
            "ready_assets": 10,
            "notes": "Restoring it unlocks the fired-brick tier - see BRICK-PLACEMENT-PLAN section 7. Needs a broken and a restored state on the state axis."
        },
        {
            "slot_key": "water.buildFish.pool-koi",
            "label": "Pool koi",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/water.js"
            },
            "prop": "pool-koi",
            "state": "default",
            "category": "fauna",
            "target": {
                "x": 0.5,
                "y": 0.15,
                "z": 0.12
            },
            "pivot_required": "head-forward-x",
            "wishlist_ref": "b5",
            "priority": 2,
            "status": "consumed",
            "prop_registered": true,
            "ready_assets": 3,
            "notes": "Warm orange with white patches. Jungle-falls plunge pool, 4 fish, non-schooling. Head +X: the shader does tw = clamp(0.4 - p.x/scale, 0, 1.3), so -X MUST be the tail. Normative axis is x (length)."
        },
        {
            "slot_key": "water.buildFish.river-minnow",
            "label": "River minnow",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/water.js"
            },
            "prop": "river-minnow",
            "state": "default",
            "category": "fauna",
            "target": {
                "x": 0.25,
                "y": 0.08,
                "z": 0.06
            },
            "pivot_required": "head-forward-x",
            "wishlist_ref": "b5",
            "priority": 2,
            "status": "delivered",
            "prop_registered": true,
            "ready_assets": 3,
            "notes": "Silver-olive, for the stream. Head +X."
        },
        {
            "slot_key": "water.buildFish.sea-fish",
            "label": "Sea fish",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/water.js"
            },
            "prop": "sea-fish",
            "state": "default",
            "category": "fauna",
            "target": {
                "x": 0.7,
                "y": 0.2,
                "z": 0.15
            },
            "pivot_required": "head-forward-x",
            "wishlist_ref": "b5",
            "priority": 2,
            "status": "consumed",
            "prop_registered": true,
            "ready_assets": 4,
            "notes": "Teal, schooling - 7 fish off THE beach at (0, 2100). CLIENT WORK REQUIRED alongside: buildFish bakes per-fish vertices into ONE merged buffer with aOrbit/aMisc attributes rather than instancing, so a real mesh needs a per-vertex bake pass. Trivial for under 20 fish but must be scheduled with the asset."
        },
        {
            "slot_key": "introTown.sobrado_esquina",
            "label": "Corner townhouse - so a terrace can turn",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/introTownPlan.js"
            },
            "prop": "sobrado-esquina",
            "state": "roofed",
            "category": "structure",
            "target": {
                "x": 7.705,
                "y": 8.967,
                "z": 9.049
            },
            "pivot_required": "base-center",
            "wishlist_ref": "intro",
            "priority": 2,
            "status": "delivered",
            "prop_registered": true,
            "ready_assets": 8,
            "notes": "DELIVERED 2026-08-24. Four states x 2 variants. broken 7.354x3.352x8.556, frame 7.576x6.689x8.776, walled 7.532x6.643x8.734, roofed as declared. ONE CONVENTION THE GAME HAS TO KNOW AND CANNOT MEASURE: unrotated puts the CHAMFER AT SOUTH-EAST, so rot steps of 90 degrees walk it round the four corners of a block. It is stated in pipeline/registry.js and in the builder's header as well as here. The chamfer is 0.90 m across and carries a window and quoins up both its arrises and nothing else does; the sacada wraps both street faces AND the chamfer as one continuous run of deck, corbels and rail; two ground-floor doors, the side one narrower because it is the goods door. The footprint is a PENTAGON, which colonial_common.walls could not build - hence wall_run, which lays one straight wall between two points in plan with the openings really cut. CONSUMER DOES NOT EXIST."
        },
        {
            "slot_key": "bricks.BRICK_GEO.cap",
            "label": "Brick - cap",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/bricks.js"
            },
            "prop": "brick-cap",
            "state": "default",
            "category": "material",
            "target": {
                "x": 0.4,
                "y": 0.2,
                "z": 0.4
            },
            "pivot_required": "box-center",
            "wishlist_ref": "b1",
            "priority": 3,
            "status": "consumed",
            "prop_registered": true,
            "ready_assets": 1,
            "notes": null
        },
        {
            "slot_key": "bricks.BRICK_GEO.half",
            "label": "Brick - half",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/bricks.js"
            },
            "prop": "brick-half",
            "state": "default",
            "category": "material",
            "target": {
                "x": 0.4,
                "y": 0.4,
                "z": 0.4
            },
            "pivot_required": "box-center",
            "wishlist_ref": "b1",
            "priority": 3,
            "status": "consumed",
            "prop_registered": true,
            "ready_assets": 1,
            "notes": null
        },
        {
            "slot_key": "bricks.BRICK_GEO.lintel",
            "label": "Brick - lintel",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/bricks.js"
            },
            "prop": "brick-lintel",
            "state": "default",
            "category": "material",
            "target": {
                "x": 1.2,
                "y": 0.25,
                "z": 0.4
            },
            "pivot_required": "box-center",
            "wishlist_ref": "b1",
            "priority": 3,
            "status": "consumed",
            "prop_registered": true,
            "ready_assets": 1,
            "notes": null
        },
        {
            "slot_key": "bricks.BRICK_GEO.slab",
            "label": "Brick - slab",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/bricks.js"
            },
            "prop": "brick-slab",
            "state": "default",
            "category": "material",
            "target": {
                "x": 0.8,
                "y": 0.2,
                "z": 0.4
            },
            "pivot_required": "box-center",
            "wishlist_ref": "b1",
            "priority": 3,
            "status": "consumed",
            "prop_registered": true,
            "ready_assets": 1,
            "notes": null
        },
        {
            "slot_key": "scatter.BURIED.button",
            "label": "Buried - button",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/scatter.js"
            },
            "prop": "buried-button",
            "state": "buried",
            "category": "artifact",
            "target": {
                "x": 0.03,
                "y": 0.006,
                "z": 0.03
            },
            "pivot_required": "contact-point",
            "wishlist_ref": "b2",
            "priority": 3,
            "status": "delivered",
            "prop_registered": true,
            "ready_assets": 3,
            "notes": "No mesh today - toast only."
        },
        {
            "slot_key": "scatter.BURIED.horseshoe",
            "label": "Buried - horseshoe",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/scatter.js"
            },
            "prop": "buried-horseshoe",
            "state": "buried",
            "category": "artifact",
            "target": {
                "x": 0.14,
                "y": 0.02,
                "z": 0.12
            },
            "pivot_required": "contact-point",
            "wishlist_ref": "b2",
            "priority": 3,
            "status": "delivered",
            "prop_registered": true,
            "ready_assets": 3,
            "notes": "No mesh today - toast only."
        },
        {
            "slot_key": "scatter.BURIED.key",
            "label": "Buried - key",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/scatter.js"
            },
            "prop": "buried-key",
            "state": "buried",
            "category": "artifact",
            "target": {
                "x": 0.09,
                "y": 0.01,
                "z": 0.03
            },
            "pivot_required": "contact-point",
            "wishlist_ref": "b2",
            "priority": 3,
            "status": "delivered",
            "prop_registered": true,
            "ready_assets": 3,
            "notes": "No mesh today - toast only."
        },
        {
            "slot_key": "scatter.BURIED.marble",
            "label": "Buried - marble",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/scatter.js"
            },
            "prop": "buried-marble",
            "state": "buried",
            "category": "artifact",
            "target": {
                "x": 0.02,
                "y": 0.02,
                "z": 0.02
            },
            "pivot_required": "contact-point",
            "wishlist_ref": "b2",
            "priority": 3,
            "status": "delivered",
            "prop_registered": true,
            "ready_assets": 1,
            "notes": "No mesh today - toast only."
        },
        {
            "slot_key": "scatter.BURIED.spoon",
            "label": "Buried - spoon",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/scatter.js"
            },
            "prop": "buried-spoon",
            "state": "buried",
            "category": "artifact",
            "target": {
                "x": 0.16,
                "y": 0.02,
                "z": 0.04
            },
            "pivot_required": "contact-point",
            "wishlist_ref": "b2",
            "priority": 3,
            "status": "delivered",
            "prop_registered": true,
            "ready_assets": 3,
            "notes": "No mesh today - toast only."
        },
        {
            "slot_key": "scatterField.shapeDefs.figurine",
            "label": "Carved figurine",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/scatterField.js"
            },
            "prop": "carved-figurine",
            "state": "default",
            "category": "artifact",
            "target": {
                "x": 0.12,
                "y": 0.24,
                "z": 0.12
            },
            "pivot_required": "base-center",
            "wishlist_ref": "b2",
            "priority": 3,
            "status": "consumed",
            "prop_registered": true,
            "ready_assets": 3,
            "notes": "Sitting carved fox. Uncommon, mid trade value."
        },
        {
            "slot_key": "scatterField.shapeDefs.fstone",
            "label": "Carved standing stone",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/scatterField.js"
            },
            "prop": "fstone",
            "state": "default",
            "category": "artifact",
            "target": {
                "x": 0.5,
                "y": 0.9,
                "z": 0.3
            },
            "pivot_required": "base-center",
            "wishlist_ref": "b2",
            "priority": 3,
            "status": "consumed",
            "prop_registered": true,
            "ready_assets": 4,
            "notes": "Folklore fragment as a carved stone. Rests at y 0.45."
        },
        {
            "slot_key": "scatterField.shapeDefs.mound",
            "label": "Dirt mound (covered find)",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/scatterField.js"
            },
            "prop": "dirt-mound",
            "state": "default",
            "category": "artifact",
            "target": {
                "x": 0.6,
                "y": 0.27,
                "z": 0.6
            },
            "pivot_required": "base-center",
            "wishlist_ref": "b2",
            "priority": 3,
            "status": "delivered",
            "prop_registered": true,
            "ready_assets": 3,
            "notes": "Marks a buried find before digging. Sphere r 0.3 scaled (1, 0.45, 1)."
        },
        {
            "slot_key": "scatterField.shapeDefs.note",
            "label": "Nailed notice board",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/scatterField.js"
            },
            "prop": "note",
            "state": "default",
            "category": "artifact",
            "target": {
                "x": 0.36,
                "y": 0.46,
                "z": 0.05
            },
            "pivot_required": "base-center",
            "wishlist_ref": "b2",
            "priority": 3,
            "status": "consumed",
            "prop_registered": true,
            "ready_assets": 3,
            "notes": "Folklore fragment / Queens notice. Rests at y 0.75 (nailed to a post), so it needs a post or a wall-mount pivot."
        },
        {
            "slot_key": "scatterField.shapeDefs.page",
            "label": "Torn storybook page",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/scatterField.js"
            },
            "prop": "page",
            "state": "default",
            "category": "artifact",
            "target": {
                "x": 0.3,
                "y": 0.02,
                "z": 0.4
            },
            "pivot_required": "contact-point",
            "wishlist_ref": "b2",
            "priority": 3,
            "status": "consumed",
            "prop_registered": true,
            "ready_assets": 4,
            "notes": "Lies on the ground at y 0.03. Thin - a candidate for a two-tri card rather than a mesh."
        },
        {
            "slot_key": "scatterField.shapeDefs.shard",
            "label": "Pot shard",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/scatterField.js"
            },
            "prop": "pot-shard",
            "state": "default",
            "category": "artifact",
            "target": {
                "x": 0.32,
                "y": 0.15,
                "z": 0.32
            },
            "pivot_required": "contact-point",
            "wishlist_ref": "b2",
            "priority": 3,
            "status": "consumed",
            "prop_registered": true,
            "ready_assets": 6,
            "notes": "Broken pot-wall arc, rests tilted on its rim. Some spawn COVERED (shovel-gated)."
        },
        {
            "slot_key": "scatterField.shapeDefs.token",
            "label": "Old token",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/scatterField.js"
            },
            "prop": "old-token",
            "state": "default",
            "category": "artifact",
            "target": {
                "x": 0.17,
                "y": 0.022,
                "z": 0.17
            },
            "pivot_required": "contact-point",
            "wishlist_ref": "b2",
            "priority": 3,
            "status": "consumed",
            "prop_registered": true,
            "ready_assets": 3,
            "notes": "Coin-like but NOT currency (coins-never-found canon). Lies FLAT: normative axis is diameter (x), not height. This is the row that proves DECIMAL(7,4) was necessary - DECIMAL(5,2) would store the built 0.0100 m height as 0.01."
        },
        {
            "slot_key": "builds.background_house",
            "label": "Background house (village fill)",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/builds.js"
            },
            "prop": "building-town-hall",
            "state": "default",
            "category": "structure",
            "target": {
                "x": 4,
                "y": 3.5,
                "z": 4
            },
            "pivot_required": "base-center",
            "wishlist_ref": "b3",
            "priority": 3,
            "status": "delivered",
            "prop_registered": true,
            "ready_assets": 8,
            "notes": "Non-interactive village fill for adaptive villages 1-5. SEVEN Villiagers building GLBs are staged and cover this category wholesale."
        },
        {
            "slot_key": "market.barrel",
            "label": "Market barrel",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/market.js"
            },
            "prop": "barrel",
            "state": "default",
            "category": "furniture",
            "target": {
                "x": 0.6,
                "y": 0.9,
                "z": 0.6
            },
            "pivot_required": "base-center",
            "wishlist_ref": "b3",
            "priority": 3,
            "status": "delivered",
            "prop_registered": true,
            "ready_assets": 1,
            "notes": "Villiagers GLB staged."
        },
        {
            "slot_key": "market.crate",
            "label": "Market crate",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/market.js"
            },
            "prop": "crate",
            "state": "default",
            "category": "furniture",
            "target": {
                "x": 0.6,
                "y": 0.55,
                "z": 0.6
            },
            "pivot_required": "base-center",
            "wishlist_ref": "b3",
            "priority": 3,
            "status": "delivered",
            "prop_registered": true,
            "ready_assets": 1,
            "notes": "Lambert primitive today. Villiagers GLB staged in pipeline/raw/manual/ - external channel, needs weld+decimate+rescale+repivot."
        },
        {
            "slot_key": "market.log_pile",
            "label": "Log pile",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/market.js"
            },
            "prop": "log-pile",
            "state": "default",
            "category": "furniture",
            "target": {
                "x": 1.6,
                "y": 0.7,
                "z": 1.1
            },
            "pivot_required": "base-center",
            "wishlist_ref": "b3",
            "priority": 3,
            "status": "delivered",
            "prop_registered": true,
            "ready_assets": 1,
            "notes": "Villiagers GLB staged."
        },
        {
            "slot_key": "market.sack",
            "label": "Grain sack",
            "consumer": {
                "repo": "vocabi_new",
                "file": "src/world/engine/market.js"
            },
            "prop": "sack",
            "state": "default",
            "category": "furniture",
            "target": {
                "x": 0.5,
                "y": 0.6,
                "z": 0.4
            },
            "pivot_required": "base-center",
            "wishlist_ref": "b3",
            "priority": 3,
            "status": "delivered",
            "prop_registered": true,
            "ready_assets": 1,
            "notes": "Villiagers GLB staged."
        }
    ]
}