Go to file
m3ultra d222a1e0dd site_audit: refuse dress-source site JSON instead of false-unwinnable
A's committed site schema (SPRINT10 world.js loadSite/createWorld) is
dress-source, and my loadSite assumed resolved positions. Run head-on against
A's real data/sites/backyard_01.json the tool reported:

    ✗ FAIL — no quad in the band shades the bed at all. The site cannot be rigged.

That is a lie, and the dangerous kind: the site is fine; the TOOL couldn't read
it. It is the SPRINT6 unwinnable-site trap in reverse — a false negative that,
in a "every site runs the audit before it ships" workflow, condemns a good site.

Two things make the schema unreadable headless, both real:
  · posts are pre-rake. JSON carries {id,x,z,h}; world.js:361 leans each post 8°
    off centre. p4's spec (-3.2,-1.2) dresses to (-3.72,-1.40) — the exact 0.56 m
    error this tool's own snapshot shipped in SPRINT9. Reading x/z raw re-makes it.
  · house/tree anchors have no coordinates — only `node`, a GLB empty's name.
    Their position exists only after dress() reads matrixWorld, and dress() needs
    GLTFLoader + fetch, neither of which runs in node. Branch anchors are exactly
    where the dangerous quads live (t2b at 10 kN), so dropping them silently is
    the worst possible failure.

The correct source of dressed positions is createWorld(site).anchors, which is
browser-only. That path lands once A's data-driven createWorld is in main; until
then loadSite REFUSES dress-source JSON with the reason and the plan, and exits 2
(distinct from the winnability FAIL's exit 1). The built-in DRESSED snapshot and
a resolved { anchors:[{id,type,pos}] } export both still audit. Raised to A in
THREADS: audit in-browser off createWorld(site).anchors, or export resolved anchors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 15:55:11 +10:00
.claude Merge Sprint 8; the week is live; balance harness stabilized 2026-07-17 14:02:53 +10:00
docs Add hail juice, plant shred, and a way to screenshot the game 2026-07-17 03:03:54 +10:00
prototype Add side-systems to design doc + playable sail-storm prototype 2026-07-16 20:55:31 +10:00
tools site_audit: refuse dress-source site JSON instead of false-unwinnable 2026-07-17 15:55:11 +10:00
web/world Prove the porosity->gardenHailExposure leak end-to-end (answer C's seam) 2026-07-17 15:55:11 +10:00
.gitignore Add deterministic Blender yard-asset factory 2026-07-16 21:39:52 +10:00
DESIGN.md Add side-systems to design doc + playable sail-storm prototype 2026-07-16 20:55:31 +10:00
LANE_PROMPTS.md Add Sprint 10 plan and lane prompts: sites are data 2026-07-17 15:12:55 +10:00
PLAN3D.md Correct PLAN3D asset inventory; log M0 contract additions 2026-07-16 21:33:42 +10:00
server.py Vendor three.js r175, add stdlib dev server and launch config 2026-07-16 21:33:42 +10:00
SPRINT2.md Add Sprint 2 assembly instructions: wire proven modules into one playable storm 2026-07-16 22:24:35 +10:00
SPRINT3.md Add Sprint 3 plan and lane prompts: close the game loop 2026-07-17 01:11:16 +10:00
SPRINT4.md Add Sprint 4 plan and lane prompts: face and water 2026-07-17 02:03:47 +10:00
SPRINT5.md Add Sprint 5 plan and lane prompts: hail and the broom 2026-07-17 02:44:30 +10:00
SPRINT6.md Add Sprint 6 plan and lane prompts: winnable, then a week of nights 2026-07-17 08:54:02 +10:00
SPRINT7.md Add Sprint 7 plan and lane prompts: one truth, then the week 2026-07-17 09:48:23 +10:00
SPRINT8.md Add Sprint 8 plan and lane prompts: ship the week 2026-07-17 11:57:51 +10:00
SPRINT9.md Add Sprint 9 plan and lane prompts: pyrrhic call, $80 win, second site 2026-07-17 14:03:45 +10:00
SPRINT10.md Add Sprint 10 plan and lane prompts: sites are data 2026-07-17 15:12:55 +10:00
THREADS.md Merge Sprint 9: clean $80 win asserted; guard redesigned; pyrrhic wired 2026-07-17 15:12:07 +10:00