Cleats really hold and push their pockets (t42 feedback)

Nothing carries the load on a slope but the ribs: each belt step every
rib moves one face cell and pushes the grains in its way, the layer on
the belt is only dragged by friction that gravity beats on 45 degrees,
and heaped grains roll back. Ribs never pass through grains or into
machines; a run that can't push stalls. The foot of an uphill run
scoops the feed into pockets. Ribs drawn as rubber bars in both looks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-26 20:56:51 -04:00
co-authored by Claude Opus 5.5
parent 3ee85429fd
commit 8cdc47fd33
12 changed files with 276 additions and 52 deletions
+18
View File
@@ -4,6 +4,24 @@ What agents have done, newest first. Add an entry for every piece of work: the d
note or request it was for, what changed, the files touched, the tests run, and anything left
open or not verified. Keep each entry short; the git history has the details.
## 2026-10-26: t42 feedback: cleats that really hold and push their load (Claude Code)
- The owner saw ribs pass through heavy loads and the load climb as before. Rewrote the slope
physics in `src/sim/slope-conveyors.js`: no column carry on slopes; each step every rib moves
one face cell and pushes the rows of grains in its way (`pushRow`, front first, never between
two rib cells or into a machine); a contact-layer friction drag that gravity beats on 45°;
a boot-section scoop at the foot of uphill runs; a run stalls (all its moves undone) if a rib
can't push; grains under a newly placed rib are lifted out. Ribs stop short of built cells.
Slopes now step before flat belts (`machine-tick.js`), so a feeding belt finds the room.
- Drawing: ribs drawn by the smooth wall shader at the simulation phase (rubber bars with a
light cap); pixel ribs lighter with a cap; far wall a little lighter (`render/world.js`,
`slope-belt-shader.js`, `slope-belts.js`).
- Rates: uphill 78.7 (suite) to 86 grains/s (heavy probe), downhill 38, flat 90. Perf: 576
loaded slopes 1.03 ms/tick; 50 slopes in a generated world 2.19 vs 1.83 ms/tick without.
- Tests: `t_slope_belts.js` adds "no grain ever inside a rib under heavy feed", "a grain on the
bare face slides back to a rib, then rides up with it"; downhill rate floor lowered to 30.
`python3 test/run_all.py --browser`: ALL PASSED. Open: downhill rate; t58 (low-end joins).
## 2026-10-26: t42/t43 drawing and performance follow-up (Codex)
- Filled the far sidewall down to the belt, behind grains, with two-tone pixel corrugation