HardYards/web/world/js/tests
m3ultra 47d4f3d3af lawn: the biggest surface in the game gets grain, and dispose() stops leaking maps
The ground plane is 25-50% of frame and was one flat colour, which is
also why the sail's shadow read as a blob rather than a shape. New
build_lawn_texture(): a 512 seamless luminance multiplier (blade grain,
thatch mottle, anti-repeat blotches, 4 cycles of mower stripe, yellow-
shifted dry patches) that modulates COLORS.grass instead of replacing
it. Seam asserted against the interior-max control (14x margin) and
byte-identical across two runs.

world.dispose() freed geometry and material but not material.map — the
exact leak main.js:705 documents for the sail weave, harmless until the
lawn got a map, and a seven-night week rebuilds the world per site.
Closed.

a.test pins the wiring end to end: map present, lawn_grass, sRGB,
RepeatWrapping, and repeat DERIVED from the yard's size (a literal would
pass on any yard). Mutation-checked: hide the PNG and it reds with 'the
grass texture is an orphan again'. 524/0/0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 21:42:29 +10:00
..
a.test.js lawn: the biggest surface in the game gets grain, and dispose() stops leaking maps 2026-07-28 21:42:29 +10:00
b.test.js Lane B S14 gate 2.3: pin the editor's scored wind to the game's played wind 2026-07-18 16:16:29 +10:00
balance.test.js Lane B S13: kill the marked fake — garden model comes from A's garden.js everywhere 2026-07-18 13:50:15 +10:00
c.test.js Lane C S17 gate 1 (cont.): the OFFER BAND and the PAIRING law — night 7 stops lying 2026-07-21 03:07:02 +10:00
d.test.js Lane D S17 gate 3.2: THE POOL YARD — authored cold, in the game only by being chosen 2026-07-21 03:53:20 +10:00
e.test.js factory: palette hexes reach the screen — sRGB->linear in hex_to_rgba, pinned 2026-07-28 21:26:26 +10:00
run-node.mjs Add wind field, storm timelines and weather selftest 2026-07-16 21:38:12 +10:00
weather.selftest.js Lane C S16: gate 3 lands — the fabric bet pinned, forecast argues it, storm in the lists; selftest 438/0/0 2026-07-20 20:33:10 +10:00