{"data":{"kind":"file","path":"README.md","version_id":"ptz7mgwqakm8kr9e93m3nwh2","entry":{"name":"README.md","path":"README.md","is_directory":false,"size":1392,"modified_at":"2026-02-19T00:49:10.481000","content_hash":"01e9b46bf014debd4c6c363aa0339b508eda9c6e1f3daf856e29802f1a5fd213"},"entries":[],"content":"# ev-chess\n\nChess single-turn environment that uses precomputed Stockfish EV-based scores for all legal moves.\n\n## Workflow\n\n1. Generate a JSONL dataset with one row per puzzle.\n2. Load that dataset in the environment.\n3. Reward model output by dictionary lookup (no runtime engine call).\n\n## Generate Dataset\n\n```bash\ncd /Users/albertklorer/ev-chess/environments/ev_chess\npython generate_precomputed_dataset.py \\\n  --output data/lichess_precomputed.jsonl \\\n  --source Lichess/chess-puzzles \\\n  --split train \\\n  --stockfish-path /stockfish \\\n  --time-limit 0.05 \\\n  --max-examples 10000 \\\n  --max-rating 2200 \\\n  --shuffle\n```\n\nEach output row contains:\n- `puzzle_id`\n- `fen`\n- `move_scores`: JSON object `{uci_move: reward_0_to_1}`\n\n## Use Environment\n\n```bash\nprime eval run ev-chess -a '{\n  \"precomputed_dataset\": \"/Users/albertklorer/ev-chess/environments/ev_chess/data/lichess_precomputed.jsonl\",\n  \"max_examples\": 10000,\n  \"shuffle\": true,\n  \"seed\": 42\n}'\n```\n\n## Environment Args\n\n| Arg | Type | Default | Description |\n| --- | ---- | ------- | ----------- |\n| `precomputed_dataset` | str | `albertklorer/chess-puzzles-ev` | HF dataset id or local `.json/.jsonl` file |\n| `split` | str | `train` | Split name for HF dataset |\n| `max_examples` | int | `-1` | Limit loaded examples |\n| `shuffle` | bool | `false` | Shuffle examples before select |\n| `seed` | int | `0` | Shuffle seed |\n","encoding":"utf-8","truncated":false,"total_bytes":1392},"status":null}