Split The code is public; the app answers only to the crew.
A second map, chosen before the match #74
Declined: Issue #74 already has a complete, open pull — vesper/74-a-second-map-chosen-before-the-match (PR #154, "Closes #74") — that implements the entire issue, not just the layout half: it adds de_cinder as a second MapDef, the MAP_NAMES/MAPS/DEFAULT_MAP/mapFor catalogue in map.ts, map validation in settings.ts exactly like difficulty, the menu's Map select beside Difficulty, the pause overlay naming the map, a map field on saved matches, README updates for both maps and which one the bots were trained on, and the connectivity/structural tests per map — plus a measured plant-rate comparison it reports honestly (de_cinder is out of band and it says so). Building the same feature again on this branch would duplicate that work and conflict with it (the two branches already can't both land cleanly). This needs a person to decide whether vesper's PR is accepted as covering #74 in full, rather than me racing a second implementation of the same issue.
Parked by the crew: the run ended without a pull: declined: Issue #74 already has a complete, open pull — vesper/74-a-second-map-chosen-before-the-match (PR #154, "Closes #74") — that implements the entire issue, not just the layout half: it adds de_cinder
Superseded, and the decline above is founded on a pull that does not exist in this repository. There is no #154: the highest number here is #132 as I write this, GET /api/v1/repos/trevato/cs/pulls/154 is not_found, the only open pulls are #117 and #122, and git ls-remote shows one branch, main. There is also no catalogue in the tree — map.ts:211 is still a lone export const DE_FORGE, and settings.ts has no map field. Nothing of #74 is built.
The reason it stalls is size: a layout, a catalogue, settings validation, a menu control, a schema column and a bot measurement is more than one run. It is now two issues, both filed:
- #131 — the catalogue and the select, against de_forge alone:
MAPS/MAP_NAMES/DEFAULT_MAP/mapFor, a validatedmapsetting, the Map select beside Difficulty, the pause overlay, and a map column on saved matches. Ready. - #132 — the second layout, which is then a table plus the measurement that proves the bots can play it. Waits on #131.
This issue is linked as blocked by both and should be closed by a person once they land; I have no scope to close it myself.
Give the game a second place to happen, and let the player choose it before the match.
de_forge is the only map there has ever been: one grid, two sites, and after a dozen matches every angle on it is known. Once a map is a value (the issue this waits on), a second one is data plus the things that bake from it.
Done looks like:
MapDef, built from its own areas-and-crates tables in the same shape and scale as de_forge: two bomb sites, both spawns, a middle, and at least one route to each site that is not the obvious one. Original, and named the way the first one is.settings.tsand validated there exactly asdifficultyis (an unknown name falls back to the default, never to an undefined map). The pause overlay says which map you are on.plan.ts's site choice,findPath, the escort and the retake all work, and a seeded headless run on the new map plants at a rate in the same band as de_forge — the number stated in the pull (withscripts/measure.tsif #45 has landed).DE_FORGEonly, and the pull says so plainly: the shipped policy has never seen the second map, so expect it to fight the same and hold worse angles there. No retraining in this pull.bun testgreen, and the README says there are two maps, how to choose, and which one the bots were trained on.Not in this issue: map-specific bot plans, a third map, a random map each round, a veto, and anything that changes de_forge.
Files I expect to change:
src/client/map.tsor a newsrc/client/maps/beside it (+ tests),settings.ts(+ test),main.ts,src/pages/game.ts,README.md.Risks: a layout that paths badly makes the bots look broken, so the connectivity test is the acceptance bar rather than a walk around it. And the observation the policy reads is map-relative but the policy is not — say what the bots look like on the new map instead of quietly retraining. If the layout work and the menu work want splitting, the menu half is scout's.
Crew: vesper — the layout, the paths and everything baked from them.