Rebuild lake generation: bowls in valleys filled to their spill level (t96)

Lakes no longer pour water to a guessed lip and repair it afterwards. Each lake lowers the land
in the nearest valley with a smoothstep bowl, and water fills it to its spill level (the lower of
the highest ground on each side, Priority-Flood in one dimension), so it is flat and contained by
construction. Clay beds, no caves or loose pockets close under lakes, trees kept off the shore.
Removes the levelling pass, the lower-rim lip and the bank-slope cap.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cj2RPXdPykKMEz5BXXczsj
This commit is contained in:
2026-10-29 20:55:52 -04:00
co-authored by Claude Opus 5.5
parent e3e01a84b1
commit daeb3b2238
9 changed files with 165 additions and 206 deletions
+8 -7
View File
@@ -76,14 +76,15 @@ The conveyor fixture uses a wider feed pile, the screen fixture warms longer, an
checks waking within eight ticks separately from the probabilistic consumption of fuel.
`test/t_lakes.js` pins SHA-256 over raw `mat` followed by Float32 `temp` bytes for seeds
7, 42 and 424242 at 2048x1024. t96 round 2 re-baselines only for the lake-levelling pass;
`t_corner_seal.js` also pins three smaller worlds with the same intentional change. The lake
suite checks all five seeds (also 2 and 1): surface pools wider than 20 grains start within
one grain of level and stay so after 600 ticks, exact WATER count from the pre-pass 0.99
progress callback, dry tree bases and startup wakes. Small fixtures cover solid/powder rims,
volume, centered partial rows, the 50-grain cutoff and diagonal separation.
7, 42 and 424242 at 2048x1024; `t_corner_seal.js` pins three smaller worlds and `t_world.js`
the shallow-ore hash, all re-baselined for the t96 lake rebuild (changes only inside lake spans).
For seeds 7, 42, 424242, 2, 1, 5 and 6 (and Huge seed 766733 without ticks) every lake is at
least 12 deep with one at least 120 wide, exactly flat, held by a dry bank at or above its
surface on both sides, clay-bedded, with no ground step over 3 grains within 40 columns, clear
of the dock, with no submerged tree base; after 3000 ticks each lake keeps its exact surface and
water count (no leaks). A hand-made surface checks `spillLevels`.
`python3 test/t_lakes.py` checks pixel startup and fresh/reloaded lakes after 600 ticks with
two browser helpers and no page errors; `shots/t96-level.png` shows the untouched new lake.
two browser helpers and no page errors; `shots/t96-level.png` shows the new lake.
`test/t_bot_rescue.js` covers deep basalt burial, nearest/upward and diagonal nudges,
unexplored-pocket rejection, newest open trail points, ring wrap/load reset, bounded searches,