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.
The carport anchors have said collateral="carport" since Sprint 9, but the root
carried no collateral_value — so main.js, which reads world.gnome.collateralValue
for the gnome, had no number to reach for. A trap with no price is a warning
label. The root now carries it in the same shape and place, pinned above the
gnome's 25, with the proposed 180 and its reasoning as a named constant so Lane A
can argue with the number rather than the asset.
carport_01_wrecked is the payoff, on the intact one's origin for a mesh-for-mesh
swap: the pads stay (they were never the weak part), the frame racks over like a
parallelogram, the roof peels off downwind in one piece.
Two bugs found by measuring rather than reasoning, both now comments where the
numbers are: the beams were rotated when a beam spans the axis the frame racks
in, so it rides level — tilting it made the wreck taller than the carport; and
the roof sheets dipped below ground, which is what inflated the height. Asserts
now pin the wreck shorter than its twin and sitting on the grass.
291/0/0, Lane E 64 asserts, 40/40 output files byte-identical.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
carport_01 is site_02's dressing and its whole design. DESIGN.md wants the
corner block anchor-poor, and the interesting way to build that isn't to give
the yard nothing — an empty yard is just a smaller yard. It's to give it
something that looks like four free anchors and isn't. Light posts on small
pads, a beam sized for one sheet of roofing: tie 25 m2 to it in a southerly and
you take the carport, not the shackle. Ships with the worst ratings in the game
(beam 0.22 vs the fascia's 0.35) and collateral="carport", pinned in e.test.js
below the fascia with the reason attached, so nobody quietly fixes them upward
and turns the site back into a small yard.
The pyrrhic card is the third outcome on the same camera: dawn, bed green, gnome
standing, sail post down across the yard behind him. Warm light on purpose — a
pyrrhic result is a win, and the wreckage is the price, not the verdict. Copy
goes to Lane A in THREADS; cardpreview renders all three.
277/0/0, Lane E 60 asserts, 39/39 output files byte-identical.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>