SPRINT14 gate 3.1. The editor is about to offer these GLBs to an author by name, which turns every silent field in them into a trap for whoever places one. Audited the placeable set, fixed the gaps in the factory (nothing hand-edited), and added the two props D needs to author a yard worth playing. THE AUDIT, and what it found: - Four `*_anchor` nodes carried no rating_hint at all — door_anchor, pickup_anchor, grip_anchor, window_light_anchor. adoptAnchor does `rating_hint ?? 1`, so silence there does not mean "unrated", it means RATED PERFECT: a shed door skin outranking a concreted post, conjured out of a missing field. They now deny it explicitly (`tie_off: false`). - The carport's price resolved only by coincidence: collateralFor() matches a STRUCTURE whose site id equals the anchors' collateral string, and site_02 happens to name its structure "carport". The editor will generate "carport_2" for the second one, and the trap would have gone free — the gutter bug reborn in the sprint meant to bury it. The GLB now carries `collateral_key`, like the house does for "gutter". Lane A: the runtime half is yours (collateralFor could fall back to it). - The trampoline is unpriced, and now says so rather than omitting it. Three new rules make the audit permanent, and each is proven able to fail: no silent anchors, no collateral string nobody prices, no baked anchor_type outside the checked ANCHOR_TYPE enum. Rule 2 found the carport gap on its first run — an unfaked negative control. THE PROPS: - swing_set_01 (+ wrecked) — the palette's honest middle. It had a ceiling (gum fork 1.0) and a trap (carport beam 0.22) and nothing in between. Two apex anchors at 0.45, typed `swing_frame` (NOT `post`: the type string is what the player reads before committing, and "post" promises concrete), and a crossbar that is the most anchor-looking object in the game and is not one. Priced at $140 — proposal, reasoning baked beside it, A rules the number: gnome 25 < gutter 90 < swing 140 < carport 180. - tree_jacaranda_01 — a second species whose LADDER is the feature. Gum: 1.00/0.88/0.76, climb freely, pay 24%. Jacaranda: 0.95/0.52/0.40, climb at all, pay 58%. That makes tree choice a real decision instead of "is there a tree". Unpriced by ruling, same as the bike: no limb-failure event exists to see. Both wreck/orientation claims are measured in browser coords, not reasoned — `wreck_falls_toward: "+Z"` is baked AND asserted against the mesh. Selftest 376/0/0. Two consecutive full factory runs: 44 files byte-identical.
556 lines
9.3 KiB
JSON
556 lines
9.3 KiB
JSON
{
|
|
"blender": "5.1.2",
|
|
"assets": [
|
|
{
|
|
"name": "ref_capsule",
|
|
"dims": [
|
|
0.4,
|
|
0.4,
|
|
1.7
|
|
],
|
|
"tris": 220,
|
|
"nodes": [
|
|
"head_height",
|
|
"ref_capsule",
|
|
"ref_capsule_mesh"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "tree_gum_01",
|
|
"dims": [
|
|
4.5522,
|
|
4.956,
|
|
7.9702
|
|
],
|
|
"tris": 492,
|
|
"nodes": [
|
|
"branch_anchor_01",
|
|
"branch_anchor_02",
|
|
"branch_anchor_03",
|
|
"canopy",
|
|
"canopy_01",
|
|
"canopy_02",
|
|
"canopy_03",
|
|
"tree_gum_01",
|
|
"trunk"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "tree_gum_02",
|
|
"dims": [
|
|
3.8871,
|
|
2.7787,
|
|
5.4972
|
|
],
|
|
"tris": 352,
|
|
"nodes": [
|
|
"branch_anchor_01",
|
|
"branch_anchor_02",
|
|
"canopy",
|
|
"canopy_01",
|
|
"canopy_02",
|
|
"tree_gum_02",
|
|
"trunk"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "tree_jacaranda_01",
|
|
"dims": [
|
|
7.4789,
|
|
6.5035,
|
|
6.0535
|
|
],
|
|
"tris": 632,
|
|
"nodes": [
|
|
"branch_anchor_01",
|
|
"branch_anchor_02",
|
|
"branch_anchor_03",
|
|
"canopy",
|
|
"canopy_01",
|
|
"canopy_02",
|
|
"canopy_03",
|
|
"canopy_04",
|
|
"tree_jacaranda_01",
|
|
"trunk"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "fence_post",
|
|
"dims": [
|
|
0.13,
|
|
0.13,
|
|
2.03
|
|
],
|
|
"tris": 24,
|
|
"nodes": [
|
|
"fence_post",
|
|
"post"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "fence_panel",
|
|
"dims": [
|
|
2.4,
|
|
0.054,
|
|
1.8194
|
|
],
|
|
"tris": 324,
|
|
"nodes": [
|
|
"fence_panel",
|
|
"palings",
|
|
"rails"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "gate",
|
|
"dims": [
|
|
1.045,
|
|
0.0615,
|
|
1.75
|
|
],
|
|
"tris": 220,
|
|
"nodes": [
|
|
"gate",
|
|
"gate_frame",
|
|
"gate_palings",
|
|
"hinge_axis",
|
|
"hinges"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "house_yardside",
|
|
"dims": [
|
|
9.2,
|
|
1.0547,
|
|
2.9
|
|
],
|
|
"tris": 212,
|
|
"nodes": [
|
|
"door",
|
|
"fascia",
|
|
"fascia_anchor_01",
|
|
"fascia_anchor_02",
|
|
"fascia_anchor_03",
|
|
"gutter",
|
|
"house_yardside",
|
|
"roof",
|
|
"wall",
|
|
"window",
|
|
"window_glow",
|
|
"window_light_anchor"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "house_yardside_wrecked",
|
|
"dims": [
|
|
9.4552,
|
|
2.1021,
|
|
2.9172
|
|
],
|
|
"tris": 340,
|
|
"nodes": [
|
|
"debris_fascia",
|
|
"door",
|
|
"downpipe_loose",
|
|
"fascia_torn",
|
|
"gutter_down",
|
|
"gutter_torn",
|
|
"house_yardside_wrecked",
|
|
"roof",
|
|
"wall",
|
|
"window",
|
|
"window_glow",
|
|
"window_light_anchor"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "carport_01",
|
|
"dims": [
|
|
3.24,
|
|
5.5959,
|
|
2.6945
|
|
],
|
|
"tris": 172,
|
|
"nodes": [
|
|
"beam_anchor_01",
|
|
"beam_anchor_02",
|
|
"beams",
|
|
"carport_01",
|
|
"footings",
|
|
"post_anchor_01",
|
|
"post_anchor_02",
|
|
"posts",
|
|
"roof"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "carport_01_wrecked",
|
|
"dims": [
|
|
6.2819,
|
|
5.5704,
|
|
2.1983
|
|
],
|
|
"tris": 144,
|
|
"nodes": [
|
|
"beams",
|
|
"carport_01_wrecked",
|
|
"footings",
|
|
"posts",
|
|
"roof_down"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "swing_set_01",
|
|
"dims": [
|
|
2.3416,
|
|
0.9469,
|
|
2.0741
|
|
],
|
|
"tris": 220,
|
|
"nodes": [
|
|
"crossbar",
|
|
"frame",
|
|
"frame_anchor_01",
|
|
"frame_anchor_02",
|
|
"swing_set_01",
|
|
"swings"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "swing_set_01_wrecked",
|
|
"dims": [
|
|
2.3416,
|
|
2.4842,
|
|
0.9325
|
|
],
|
|
"tris": 220,
|
|
"nodes": [
|
|
"crossbar",
|
|
"frame",
|
|
"swing_set_01_wrecked",
|
|
"swings"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "shed_01",
|
|
"dims": [
|
|
2.58,
|
|
1.9708,
|
|
2.2224
|
|
],
|
|
"tris": 96,
|
|
"nodes": [
|
|
"door_anchor",
|
|
"doors",
|
|
"roof",
|
|
"shed_01",
|
|
"shell"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "shed_table",
|
|
"dims": [
|
|
1.6,
|
|
0.6,
|
|
0.9
|
|
],
|
|
"tris": 72,
|
|
"nodes": [
|
|
"pickup_anchor",
|
|
"shed_table",
|
|
"table_frame",
|
|
"table_top"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "garden_bed",
|
|
"dims": [
|
|
3.0,
|
|
1.2,
|
|
0.8609
|
|
],
|
|
"tris": 2580,
|
|
"nodes": [
|
|
"bed",
|
|
"garden_bed",
|
|
"plants_dead",
|
|
"plants_full",
|
|
"plants_tattered",
|
|
"soil"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "sail_post",
|
|
"dims": [
|
|
0.507,
|
|
0.52,
|
|
4.0327
|
|
],
|
|
"tris": 528,
|
|
"nodes": [
|
|
"footing",
|
|
"pad_eye",
|
|
"post",
|
|
"rake_pivot",
|
|
"sail_post",
|
|
"top_anchor"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "ladder_01",
|
|
"dims": [
|
|
0.455,
|
|
0.075,
|
|
3.0
|
|
],
|
|
"tris": 276,
|
|
"nodes": [
|
|
"ladder",
|
|
"ladder_01",
|
|
"ladder_base",
|
|
"ladder_top"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "shackle",
|
|
"dims": [
|
|
0.0569,
|
|
0.019,
|
|
0.0744
|
|
],
|
|
"tris": 560,
|
|
"nodes": [
|
|
"bow",
|
|
"pin",
|
|
"shackle"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "carabiner",
|
|
"dims": [
|
|
0.049,
|
|
0.009,
|
|
0.1027
|
|
],
|
|
"tris": 476,
|
|
"nodes": [
|
|
"body",
|
|
"carabiner",
|
|
"gate"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "turnbuckle",
|
|
"dims": [
|
|
0.0292,
|
|
0.0341,
|
|
0.1955
|
|
],
|
|
"tris": 728,
|
|
"nodes": [
|
|
"body",
|
|
"eye_a",
|
|
"eye_b",
|
|
"turnbuckle"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "tramp_01",
|
|
"dims": [
|
|
2.9555,
|
|
2.9555,
|
|
0.78
|
|
],
|
|
"tris": 976,
|
|
"nodes": [
|
|
"legs",
|
|
"mat",
|
|
"pad",
|
|
"rim",
|
|
"tramp_01"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "wheelie_bin_01",
|
|
"dims": [
|
|
0.58,
|
|
0.6808,
|
|
1.1188
|
|
],
|
|
"tris": 120,
|
|
"nodes": [
|
|
"bin_body",
|
|
"lid",
|
|
"lid_plate",
|
|
"wheelie_bin_01",
|
|
"wheels"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "washing_line_01",
|
|
"dims": [
|
|
2.8441,
|
|
2.8441,
|
|
2.2777
|
|
],
|
|
"tris": 336,
|
|
"nodes": [
|
|
"arms",
|
|
"head",
|
|
"mast",
|
|
"washing_line_01"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "garden_gnome_01",
|
|
"dims": [
|
|
0.1427,
|
|
0.15,
|
|
0.365
|
|
],
|
|
"tris": 236,
|
|
"nodes": [
|
|
"garden_gnome_01",
|
|
"gnome"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "bike_kid_01",
|
|
"dims": [
|
|
1.148,
|
|
0.328,
|
|
0.7269
|
|
],
|
|
"tris": 700,
|
|
"nodes": [
|
|
"bars",
|
|
"bike_kid_01",
|
|
"frame",
|
|
"wheel_front",
|
|
"wheel_rear"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "garden_gnome_01_broken",
|
|
"dims": [
|
|
0.3947,
|
|
0.3519,
|
|
0.106
|
|
],
|
|
"tris": 344,
|
|
"nodes": [
|
|
"garden_gnome_01_broken",
|
|
"hat",
|
|
"head",
|
|
"shards",
|
|
"stump"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "hail_stone_01",
|
|
"dims": [
|
|
0.0198,
|
|
0.0176,
|
|
0.0197
|
|
],
|
|
"tris": 20,
|
|
"nodes": [
|
|
"hail_stone_01",
|
|
"stone"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "broom_01",
|
|
"dims": [
|
|
0.3891,
|
|
0.055,
|
|
1.4213
|
|
],
|
|
"tris": 200,
|
|
"nodes": [
|
|
"bristles",
|
|
"broom_01",
|
|
"grip_anchor",
|
|
"handle",
|
|
"head",
|
|
"poke_tip"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
},
|
|
{
|
|
"name": "fence_panel_snapped",
|
|
"dims": [
|
|
2.4125,
|
|
1.0144,
|
|
1.8181
|
|
],
|
|
"tris": 312,
|
|
"nodes": [
|
|
"debris_palings",
|
|
"fence_panel_snapped",
|
|
"palings",
|
|
"rails"
|
|
],
|
|
"status": "PASS",
|
|
"problems": []
|
|
}
|
|
],
|
|
"debris": []
|
|
} |