Drill pulses pass through rubble and fluidise it; per-grain damping (t92)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-28 18:09:42 -04:00
co-authored by Claude Opus 5.5
parent 90f2d3f974
commit 729378770a
4 changed files with 172 additions and 27 deletions
+38
View File
@@ -4,6 +4,44 @@ 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-28: t92 drill pulses pass through rubble and fluidise it (Codex)
- Converted every pulse loss to a per-grain factor, applied with `factor ** step` outside
the ray sampling loop. Powder keeps 0.97 per grain; liquid, built, hard and tuned paths
preserve their former squared half-grain factors. Tree damping and shake now scale with
distance too. Rock damping retuned to 0.76/0.69/0.6084 per grain for narrow/medium/wide.
- Replaced the botward nudge with random sideways/upward one-cell hops through open cells,
using `rnd`, `move`, stamps, occupancy, part/cleat rules and sealed corners. At most three
moves per ray/tick. Up to four shake debris events/tick reuse the existing particles;
no new rendering or UI code, dependencies, save fields or design decisions.
- Added drill regressions: 35-grain shield failed before (0 basalt opened), now opens 78
basalt cells with the real steel medium reach; 115 grains opens none. Only the latter
fixture extends range beyond the bit's reach, isolating attenuation from range.
Exact 3% loss crosses the cutoff near 117 grains; an additional 118-grain check
confirms extinction before any basalt damage. Fixed
powder transmission is 0.4821/1.4 = 34.44%; quarter/half/whole-grain attenuation agrees
for rubble, sand, ore, coal, liquids, rock, tuned skips/hits and built material.
Seeded heap height drops 25 -> 20 in eight seconds versus control 25 -> 25, conserving
625 grains; repeatability, movement protection, three-move/ray and four-event caps pass.
- Before/after two-second copper-bit stone-wall fixture, depth/opened cells: narrow
22/181 -> 24/195 (+9.1%/+7.7%), medium 13/186 -> 13/197 (0%/+5.9%), wide
6/134 -> 6/134. Existing follow-face, width, tuning, shielding and tree checks retained.
Fixed powder-ray microbenchmark median: 21.48 -> 21.28 ms per 20,000 calls (five warm
samples); this is an isolated pulse cost check, not a whole-game performance measurement.
- Files: `src/sim/drill.js`, `test/t_drill.js`, generated `docs/PROJECT_MAP.md`, t92 task
tracking and this log. No commit. Verification: focused drill suite passes all 61 checks;
initial full run passed all 32 headless suites but seven browser suites failed under the
sandbox's unavailable WebGPU adapter. Host-GPU `python3 test/run_all.py --browser` exited
0, ALL PASSED (all 32 headless suites; gameplay 361, smooth 28, console 18, caps 7,
GPU 14, goldens 28, light 71 and Firefox 2). The additional 118-grain extinction check
was then verified in the focused 61-check suite. Logs: `/tmp/t92-drill-before.log`,
`/tmp/t92-drill-red.log`, `/tmp/t92-drill-after.log`, `/tmp/t92-all-tests-host.log`.
Inspected `shots/t92-pile-before-pixel.png`, `t92-pile-after-pixel.png` and
`t92-pile-after-smooth.png`: the drilled side is lower and flatter, with small dust puffs
close to the surface. Setup scripts retained in `/tmp/t92-scene-before.js` and
`/tmp/t92-scene-after.js`; capture with `tools/shot.py --setup FILE --zoom 10 --no-light
--freeze` (add `--look smooth` for smooth). Task moved to Review; owner playtesting remains.
## 2026-10-28: t91 sky renders as mismatched blocks (Codex)
- Reproduced the owner's cloud rectangles and stepped distant hills on NVIDIA Blackwell: