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
Digging basins to the lower rim left a 9-18 grain vertical cliff on each lake's high side
(owner screenshots, seed 766733). From each edge inward the ground now falls at most 0.7 grains
a column and is never raised above the natural surface. New no-cliff check in t_lakes.js;
world hashes re-baselined (shallow ore: 2 cells changed, on a lake bank).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The lake lip was Math.min(surfY), the highest ground (y grows downward), so water was poured
above the lower rim and, once levelled, ran up to the trade dock on 4 of 12 seeds. The lip is
now the lower rim edge minus one, and each lake stays 80 grains from spawn. Seed hashes and
the shallow-ore hash re-baselined (changes only under lake basins); golden fixtures also
freeze surfY/dirtY/AMB from the previous generator.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Volume-preserving levelling pass for water bodies of 50+ cells; the dock foundation is placed
first so it cannot erase levelled water. Seed hashes re-baselined (water and air only).
Started by Codex, finished and reviewed by Claude after Codex hit its usage limit.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Powder, liquid and gas no longer step diagonally between two solid
cells; flyers and diagonal tube intakes obey the same corner. World
generation settles with the rule off, so seeds make the same worlds.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- One helper each for wall and mold refunds, tube edges and lanes, pipe text, piece dimensions,
font lookup, reach circles and surface averaging.
- previews, smooth, notebook, materials, worldgen and selection split into topic files
(preview-drill, preview-selection, smooth-shaders, notebook-market, notebook-blueprints,
material-tables, worldgen-helpers, selection-pickers, selection-panels).
- Every suite's output identical apart from timings; seeds make the same worlds.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- SORTP 0.003 -> 0.06: ore sinks through 8 rows of ash in about 7 s near the bot.
- wakeBotPowder(): every 8 ticks, areas with loose grains within 100 grains of the bot get a
sorting chance; far away, resting piles still sleep.
- Sinking through burning fuel stays at 0.003, so buried burning piles still char and furnace
beds behave as tuned. World generation settles at the old rate: seeds are unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Liquids step up to 8 cells a tick toward a drop (fewer the thicker they are), and a top-layer
grain looks 4 times as far for one, so pools empty and thin film drains. A 100-wide pool
empties in about 50 s; the old code left 24-650 grains stranded on wide ledges.
- Only a top-layer grain stepping sideways wakes the row ahead, so settled lakes still sleep.
- World generation settles at the old speed: seeds make the same worlds as before.
- Cooled steam under a roof no longer stays steam for ever (its heat area slept).
- Raining clouds keep drifting at half pace and rain over a band either side, so a waterfall into
a hot shaft no longer rains straight back on its own lake.
- New test/t_water.js; t_weather rain-location checks; t_conveyors counts steam in flight;
t_molds seeds the random burning-bed check.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The game as of artifact version 24, ready for local development with
coding agents.
- Source split from three large files into 52 small ones under src/sim,
src/render and src/ui, joined in the order in src/manifest.json by
build.py. The joined code is unchanged apart from comments; every
headless suite gives the same output, and screenshots in both looks
are pixel-identical to before.
- Light tidying with no change in behaviour: one movement scan loop,
shared hazard-stripe and belt shader helpers, unused code removed, a
shared check helper for the test suites.
- World files can be exported as an ordinary download outside claude.ai.
- Tests: broken old scripts removed, experiments moved to tools/,
test/run_all.py added. Tools: shot.py (repeatable screenshots),
where.py, map.py.
- Docs: AGENTS.md, CLAUDE.md, NOTES.md (the owner's to-do inbox),
docs/PROJECT_MAP.md, DESIGN.md, TESTING.md, systems notes, the
owner's requests and an agent log.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K9kLmYADKSEjuwUN3rFxDA