{"data":{"kind":"file","path":"README.md","version_id":"qs1midw01ijyl8kd9wjjanwv","entry":{"name":"README.md","path":"README.md","is_directory":false,"size":2077,"modified_at":"2026-11-03T14:54:57.962000","content_hash":"6dacb9b0dbbb44d6184129fd2933465821236a7492daad5d2035c3b682effef4"},"entries":[],"content":"# kimi-grid-breakout\n\nA closed-loop **grid Breakout** environment for LLM agents, built with verifiers v1.\nThe solver plays a full episode turn-by-turn: every turn the env sends the current\n10x10 frame as ASCII, the model replies with one action word (`noop`, `up`, `down`,\n`left`, `right`), and the deterministic physics engine — the verifier — advances the\ngame. Reward is the normalized game return; bricks broken, steps survived, parse\nfailures and clear rate are recorded as metrics on every trace.\n\nThe physics is the reconstruction from\n[weight-space-breakout](https://app.primeintellect.ai/dashboard/environments/harleycooper/weight-space-breakout)\n(same author, MIT), inferred from the weights of a PPO-trained policy network\n([HarleyCooper/grid-policy-mlp](https://huggingface.co/HarleyCooper/grid-policy-mlp)):\na 3-cell paddle on row 8, one diagonal ball, 24 bricks on rows 1–3, +1 per brick,\n−1 on a miss.\n\n## Task\n\n- **Observation (per turn):** step counter, bricks left, score, the last action and\n  its reward, then the 10x10 grid (`#` wall, `B` brick, `o` ball, `=` paddle, `.` empty).\n- **Action (per reply):** exactly one word — `left`/`right` slide the paddle,\n  `noop`/`up`/`down` hold it still. Unparseable replies count as `noop` and are\n  counted in the `parse_failures` metric.\n- **Episode end:** ball past the paddle (−1), all 24 bricks cleared, or the tick\n  budget (`max_steps`, default 100).\n- **Reward:** `(return + 1) / 25` clipped to [0, 1] — 0 for an immediate miss,\n  1 for a cleared board.\n\n## Run\n\n```bash\nuv pip install -e .\nuv run vf-eval kimi-grid-breakout -m <model> -n 3\n```\n\nKnobs (CLI): `--env.taskset.num-tasks 16`, `--env.taskset.base-seed 1000`,\n`--env.taskset.max-steps 200`, `--env.solver.max-turns 210`.\n\n## Layout\n\n- `kimi_grid_breakout/game.py` — deterministic Breakout physics (vendored, MIT).\n- `kimi_grid_breakout/env.py` — the closed-loop `Env`: frame rendering, action\n  parsing, turn loop, trace bookkeeping.\n- `kimi_grid_breakout/taskset.py` — task prompts, reward and metrics, seed-based\n  taskset.\n","encoding":"utf-8","truncated":false,"total_bytes":2077},"status":null}