Chess pilot

September 17, 2026 · View on GitHub

OpenJev now includes a trained 182,289-parameter recurrent circuit, a legal-move arena, and recorded games against ChessFly, ChessLFM, Qwen and GPT-6 Astra through Codex. This is a development experiment, not an Elo rating or a demonstrated architecture advantage.

Play the first scheduled game · Our trained models · Research plan · Paper draft

First scheduled OpenJev circuit versus ChessFly game

The replay is game-01, selected before gameplay. It includes every accepted move; playback timing is illustrative. No engine chooses either player's game moves.

Public puzzle panel

We fixed the first eight valid Lichess puzzles in each of three rating bands: at most 1200, 1201-1800 and above 1800. The opponent setup move is applied before the solver chooses. The reported score is the first solver move matching the published solution, not a full puzzle solve. This 24-position convenience sample may overlap published models' training data.

Puzzle matches and route latency

PolicyFirst-move matchesImmediate-mate alternative includedFailed callsMedian wall ms
ChessFly direct7/248/240307.01
ChessLFM direct14/2415/240205.83
GPT-6 Astra via Codex17/2418/2406205.26
Greedy material5/245/2400.23
OpenJev GRU1/241/2400.40
OpenJev Qwen direct2/242/240255.24
OpenJev circuit2/242/2400.34
OpenJev rewired2/242/2400.24
Stockfish 1000 nodes22/2423/2405.36
Uniform random1/241/2400.03

Recorded games

Both colors are played from the standard starting position. Each side has 300 seconds with no increment. A game reaching 120 plies remains unfinished; it is not scored as a draw. Timeouts and model errors remain visible. These are individual exhibitions, not independent repeated samples.

GameWhiteBlackResultTerminationPlies
game-01OpenJev circuitChessFly direct1/2-1/2fivefold_repetition58
game-02ChessFly directOpenJev circuit1-0checkmate35
game-03OpenJev circuitChessLFM direct0-1checkmate38
game-04ChessLFM directOpenJev circuit1-0checkmate31
game-05OpenJev circuitGPT-6 Astra via Codex0-1checkmate48
game-06GPT-6 Astra via CodexOpenJev circuit1-0checkmate45
game-07ChessFly directChessLFM direct0-1checkmate58
game-08ChessLFM directChessFly direct1/2-1/2stalemate101
game-09ChessFly directGPT-6 Astra via Codex1-0timeout103
game-10GPT-6 Astra via CodexChessFly direct1-0checkmate33
game-11ChessLFM directGPT-6 Astra via Codex0-1checkmate82
game-12GPT-6 Astra via CodexChessLFM direct0-1checkmate64
game-13OpenJev circuitOpenJev Qwen direct1/2-1/2fivefold_repetition94
game-14OpenJev Qwen directOpenJev circuit1/2-1/2fivefold_repetition103
game-15OpenJev circuitOpenJev GRU1/2-1/2fivefold_repetition79
game-16OpenJev GRUOpenJev circuit1/2-1/2fivefold_repetition92
game-17OpenJev circuitOpenJev rewired1/2-1/2fivefold_repetition43
game-18OpenJev rewiredOpenJev circuit1/2-1/2fivefold_repetition97

18 games reached a scored outcome; 0 were unfinished and 0 failed.

What each policy uses

  • Our circuit, rewired control and GRU: exactly the first predeclared fit, seed 17. All use the same 4,096 engine-labeled training positions and three epochs. Hidden state resets at every board; four recurrent updates refine the current board. This is not cross-move memory or a world model.
  • ChessFly: independently implemented CPU adapter for the pinned public weights and FlyWire graph. Five recurrent updates from zero per board. The browser demo's depth-three search is excluded.
  • ChessLFM: pinned public hybrid convolution/attention model, two forward passes, all legal moves scored. Its demo search is excluded. This does not reproduce the author's search-assisted rating.
  • OpenJev Qwen: one forward pass scores single-token candidate labels for every legal move; no text generation or search.
  • Astra: an explicitly dispatched gpt-6-astra Codex agent receives FEN, board, recent moves and legal candidates. It is instructed to use no engine, browsing or workspace data beyond the board helper. One persistent agent serves the panel, so its conversation also contains earlier packets; this is not an independently reset API call per move. The packets do not supply remaining game clocks. This is instruction-limited isolation, not a technical sandbox or provider-attested Responses API benchmark. No probabilities are invented for Astra.
  • Stockfish: puzzle reference with 1,000 nodes per position, one thread and cleared hash. It is not consulted by any game player. Greedy material and seeded uniform random are additional puzzle controls.

Timing and claim limits

Timing is the complete policy-call wall time. Initial loading and two declared local warmups are excluded and recorded separately. Astra includes Codex reasoning, scheduling and helper calls. Qwen runs on MLX; ChessFly, ChessLFM and students use CPU PyTorch with two threads. The LFM convolution uses the reference implementation. The timings are route measurements, not equal-hardware model speed or equal-compute architecture comparisons. Background local work can affect timing. A policy call is adjudicated after return; the Astra transport has a separate 120-second per-request timeout.

Astra and Qwen receive SAN check/checkmate markers in their legal candidate descriptions. Three of the 24 puzzle positions contain an immediate mate revealed by this notation; numerical policies receive legal masks without SAN. This is another representation confound, so the panel does not measure unaided chess reasoning. Move probabilities are conditional on the legal candidates and are uncalibrated. Neither confidence nor checkmate strength follows from a large candidate probability. External models have different pretraining data and scale. The controlled architectural comparison is our nine-fit student study, whose circuit continuation gate failed.

Reproduction and evidence

Frozen plan · Pre-results schedule · Raw attempts and game traces · Summary · Publication receipt

Install the project's language/research dependencies and research/requirements-chess.txt. Download the pinned external assets according to their model cards. For a new run, copy the config, set local artifact paths and a fresh Astra bridge directory, then prepare a new plan. Do not overwrite this frozen run or substitute checkpoints under its identity.

python scripts/chess_study.py prepare --config YOUR_CONFIG.json --puzzles YOUR_LICHESS.csv --out NEW_PLAN.json
python scripts/chess_study.py run --plan NEW_PLAN.json --out NEW_EXECUTION

The Astra policy requires a separately dispatched Codex worker. Without one, remove it from the new schedule before preparation; the runner will never substitute a different model.

Sources and licenses

Lichess puzzles are CC0. Stockfish is the local GPL engine teacher/reference; its binary is not redistributed. ChessFly uses externally licensed FlyWire assets with noncommercial terms. ChessLFM has its own model license. External model weights, graph assets and Space code are not redistributed here. Our independently written adapters and original student weights use the project MIT license.