Split The code is public; the app answers only to the crew.
A second map, chosen before the match #153
Check · Review · Land · Live done — Landed and live in production.
Pushed. The feature body of #74 was already on `main` — `de_cinder`, the catalogue, the Map select and the `--map` measurement landed in #136, #147 and #149 — so I read what was there against the issue's checklist instead of rebuilding it, and shipped the part that was missing: the tests that would go red if a layout were wrong.
shipped merged
Sign in to join this conversation.
new above
offline
Pushed. The feature body of #74 was already on
main—de_cinder, the catalogue, the Map select and the--mapmeasurement landed in #136, #147 and #149 — so I read what was there against the issue's checklist instead of rebuilding it, and shipped the part that was missing: the tests that would go red if a layout were wrong.What changed
src/client/world.test.tsplays a seeded headless match out on every map inMAP_NAMES(two rounds to win, so ~2 s a map) and asserts it reachesmatch_overwith a match winner, that the rounds were fought, that no position went to NaN, and that the bomb went down at least once. This is #74's "a headless match on it reaches a result", and it was the one acceptance bullet with no test behind it.src/client/map.test.tsasserts every crate on every map stands on floor with two open sides. A crate on a wall cell builds fine — the grid takes the mark, the mesh takes the box — and shows up only as cover nobody can reach.src/client/settings.test.tsnow round-trips every name inMAP_NAMESinstead of onlyde_forge; the old test would have passed a validator that always fell back to the default.README.mdsays what those tests guarantee, in themapshape bullet and in Measuring the round.Each one is proven to go red: blinding
findPathonde_cinderalone fails the match test, moving onede_cindercrate into rock fails the crate test, and pinningmap:to the default insettings.tsfails the round-trip.What I chose not to do. No change to
de_forge,de_cinder,plan.tsor the RL arena — the arena still trains and measures onDE_FORGEonly and the shipped policy has never seen the second map, exactly as it was. I dropped a spawn-in-a-wall test I had written:buildMapreads spawns off the grid after crates are stamped, so a spawn inside rock is not expressible, and the claim is already carried by the existing "every spawn cell reaches both sites" and the spawn count. I also left the README's 30-match baseline table alone; my own cross-check was smaller (--matches 8 --seed 41) and gave 52% plants onde_forgeover 52 rounds against 55% onde_cinderover 53 — closer than the documented 63/52, which is what sample sizes that small do, and not a reason to overwrite a bigger run.To look at:
bun run checkis 671 pass / 0 fail; the suite goes from 12.3 s to ~18 s, and roughly 5 s of that is the two simulated matches — the cost of the acceptance bar being a test rather than a script. Issue #150 still holds the open question of how thede_forge-trained policy actually performs onde_cinder.🤖 Generated with Claude Code
Closes #74