# tests/fixtures/levels_round/01_first_kitchen.yaml โ€” the shipped campaign # level 1, verbatim in layout and content, with two numbers tuned for the # phase-06 two-client round suite (tests/integration/test_ws_round_two_clients.py). # # `target_score` is 20 (the shipped 45): one served soup scores 44-66 # (`round(40 x 1.0 x 1.1 x (1 + 0.5 x fraction))` โ€” sim/scoring.py), so the # first serve always crosses the target and the round ends `WON` on that # substep, whatever the wall-clock jitter of a live 20 Hz tick. The shipped # 150 s / 45 target would make a live-suite win depend on choreography timing # (a second serve within the 60 s order deadline); the wire contract the # suite locks (the round's events, payload and lobby return) is the same. # # `time_limit` is 60 s (the shipped 150): a safety margin around the ~25 s # scripted soup. If the choreography ever stalls, the round ends `LOST` at the # buzzer instead of running a two-and-a-half-minute test. # # Schema: docs/LEVELS.md โ€” validated by the server's content gate at boot and # by `undercooked-levels validate` on a copy. id: 01_first_kitchen name: First Kitchen order: 1 difficulty: 1 time_limit: 60 target_score: 20 blurb: >- Your first shift: grab a tomato and an onion from the shelves, chop them, cook the soup, plate it, and run it to the serve window before the clock runs out. One dish, one of everything, nowhere to bump into each other. grid: - "############" - "#T..C...S..#" - "#..........#" - "#.P......X.#" - "#..........#" - "#..K....O..#" - "#..........#" - "#..........#" - "############" tiles: "#": {kind: wall} ".": {kind: floor} "T": {kind: floor, station: spawn_shelf, item: tomato} "O": {kind: floor, station: spawn_shelf, item: onion} "C": {kind: floor, station: chop_board} "S": {kind: floor, station: stove} "P": {kind: floor, station: prep} "X": {kind: floor, station: serve} "K": {kind: floor, station: sink} spawns: [[2, 7], [9, 7]] orders: pool: [soup] concurrent: 1 spawn_interval: [16, 20] deadline: 60 hazards: [] escalation_notes: >- Integration-suite copy of the tutorial baseline (PLAN ยง8 campaign plan): one recipe, one order at a time, open floor, no hazards.