B-4. The gate used to run on my own stub wind — uniform, horizontal, tuned by nobody — so it proved the cloth was self-consistent, not that the game works. It now loads the shipped storm JSON and drives the cloth through weather.core.js (pure and import-free, so the same path runs in node and in selftest.html; weather.js's own loadStorm can't help because its STORM_DIR is a file:// URL that node's fetch won't open). All three halves of §7 now run on real storm_02 and the real yard: a flat drum-tight carabiner rig cascades 4/4; a well-twisted mixed rig holds all four; and a twisted rig with one dodgy corner blows it and finishes 4/4 intact after a single repair — the DoD scenario, in an assert. Perf: Lane C added an `out` param to wind.sample specifically so sail.js wouldn't allocate, and I wasn't passing it — 162 faces at 60 Hz is ~9.7k throwaway Vector3s a second. Now passing a scratch vector. Stub winds that ignore `out` still work; we read the return value. Two tests skip rather than pass vacuously while Lane C's downdraft is unmerged: a "nothing broke" repair scenario would go green forever and check nothing. Both light up by themselves on merge, and the repair one hard-fails if a downdraft IS present and still can't threaten the rig. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .claude | ||
| prototype | ||
| tools | ||
| web/world | ||
| .gitignore | ||
| DESIGN.md | ||
| LANE_PROMPTS.md | ||
| PLAN3D.md | ||
| server.py | ||
| SPRINT2.md | ||
| THREADS.md | ||