phase: 03_simulation_movement_and_interaction
**Final verification pass — phase 03 `simulation_movement_and_interaction` (all 5 task files already in `complete/`)** - Verified all phase-03 deliverables exist and work: `sim/` kernel (`step`, `state_build`, `rng`, `movement`, `collision`, `interact`, `carry`, `replay`), replay fixtures + 3 committed goldens, `docs/SIMULATION.md`. - `bash .agents/validate.sh` → **passed**: ruff `All checks passed!`, pyright `0 errors`, `undercooked-levels validate` green, full `pytest` **1033 passed** (coverage **99.71%** ≥ 90% floor), slow sim stage green, repo-hygiene clean. - Perf smoke (4 players, 2 000 ticks): mean **0.049 ms/tick, 20 423 ticks/s** — ≥ 10 000 ticks/s criterion met (test lives in `test_perf_smoke.py`, which the gate's slow stage runs; the overview names it `test_replay.py`). - Completion criteria: import `undercooked.sim.step.step` ✅ · `tests/sim` green incl. determinism + goldens ✅ · perf ✅ · constant-change-fails-by-design ✅ (committed-hash equality + mutation test naming first bad tick/field; goldens never rewritten by tests) · `docs/SIMULATION.md` ✅ (constants, 8-step order, purity/determinism, re-bless) · full suite + coverage ✅ · app launches: `/healthz` 200, `/` 200, `/api/levels` serves content ✅ · replay CLI `check walk_solo.json` exit 0 ✅ · no regression in phases 01/02 (their suites green) ✅. - Documentation: README.md — fixed one stale inconsistency (Status opening listed only 01/02 complete with 03 pending; now lists 01–03 complete, next pending `04_kitchen_pipeline_and_scoring`); all other README claims (CLI flags, config table, shell text, replay CLI exit codes) verified against code. AGENTS.md — verified consistent with the project as it stands, no changes needed. - No deviations. Next pending phase: **`04_kitchen_pipeline_and_scoring`**.
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
# tests/fixtures/levels/_replay/pick_drop_pass.yaml — the fixture kitchen for the
|
||||
# pick_drop_pass replay golden (phase 03 task 05). Not campaign content: it is
|
||||
# loaded by `tests/sim/test_replay.py` through `load_level_file`, and the `_`
|
||||
# prefix keeps the content loader's discovery (and `undercooked-levels validate`)
|
||||
# from reading it. It carries one of every fixture kind the hand rules need —
|
||||
# a spawn shelf, a prep counter, a serve window, a trash can — and nothing a
|
||||
# golden must not depend on (no hazards, no pipeline inputs, nothing a phase-04
|
||||
# rule would reinterpret).
|
||||
# Schema: docs/LEVELS.md
|
||||
|
||||
id: 99_replay_pick_drop_pass
|
||||
name: Replay Kitchen
|
||||
order: 99
|
||||
difficulty: 1
|
||||
time_limit: 300
|
||||
target_score: 1
|
||||
blurb: >-
|
||||
The committed kitchen for the pick_drop_pass replay golden: one shelf, one
|
||||
prep counter, one serve window and one trash can, open floor, two spawns.
|
||||
grid:
|
||||
- "############"
|
||||
- "#T.....P...#"
|
||||
- "#..........#"
|
||||
- "#....X.....#"
|
||||
- "#..........#"
|
||||
- "#..G.......#"
|
||||
- "#..........#"
|
||||
- "############"
|
||||
tiles:
|
||||
"#": {kind: wall}
|
||||
".": {kind: floor}
|
||||
"T": {kind: floor, station: spawn_shelf, item: tomato}
|
||||
"P": {kind: floor, station: prep}
|
||||
"X": {kind: floor, station: serve}
|
||||
"G": {kind: floor, station: trash}
|
||||
spawns: [[2, 6], [9, 6]]
|
||||
orders:
|
||||
pool: [soup]
|
||||
concurrent: 1
|
||||
spawn_interval: [12, 16]
|
||||
deadline: 60
|
||||
hazards: []
|
||||
station_limits: {plates: 99, pots: 99}
|
||||
escalation_notes: >-
|
||||
Not an authored campaign level: the fixture kitchen the pick_drop_pass replay
|
||||
golden (phase 03 task 05) is recorded on, checked by tests/sim/test_replay.py.
|
||||
Reference in New Issue
Block a user