The learned policy and external mate search are distinct components.
State in. Three move tokens out.
CM-7 retains CM-6’s state-conditioned input and the GPT-2-style decoder backbone. It is a causal next-move policy, with no reasoning trace or learned search tree.
Parameters
86,235,648
Operating input
120–122 slots
Blocks / heads
12 / 12
Allocated IDs
512
Current state
Board occupancy, side, castling, en-passant and halfmove clock; optionally the last 16 genuine plies.
Fixed prefix
120 slots, with absent history padded and masked. Fixed absolute position IDs.
Embeddings
Token + learned position embeddings, width 768. 1,024 allocated position rows; only the operating slots are used.
The controller owns legality and repetition history. The model receives current state and at most 16 recent plies; a standalone FEN does not establish earlier repetitions.
First: bounded external mate proof
The live Rust helper tries iterative 1/3/5/7 plies within 50,000 nodes and 250 ms, using four requested workers. This is external search, not model reasoning.
Proven mate
Use the verified move and record an override. Do not query the model.
No proof
Encode the current 120-slot prefix and rank legal candidates by the sum of three conditional log-probabilities. Reserved classes stay in the raw output; the rules engine determines legal candidates.
Recheck freshness and legality. Fallback decisions are recorded separately and are not credited to the neural model. A helper deadline does not cap whole-turn latency.
A token is one integer ID. The vocabulary size counts allocated embedding/output IDs, including reserved IDs. A context is an ordered sequence of token positions. A chess ply is one player moving; a full move normally contains two plies. Both families generate a ply as three tokens: source square, destination square, promotion.
Through CM-5: full game history
128 allocated IDs; 1,024 position capacity. Square IDs 0–63, promotion IDs 64–68 (64 means none), BOS 69, EOS 70 and PAD 71. IDs 72–127 are reserved: 72 defined IDs, not 128 distinct chess concepts.
Start with BOS and every played move from the standard start.
Encode each ply as three tokens; no silent history cropping.
Train dense causal next-token prediction on valid sequence targets; padding is excluded.
At inference, append source, destination and promotion conditionally.
The 1,024-position allocation is a token capacity, not 1,024 moves. BOS, ending tokens and candidate continuation tokens also need positions. Overflow is handled explicitly by the serving controller.
CM-6 and CM-7: structured state and bounded history
512 allocated IDs; 122 operating input slots. The backbone still allocates 1,024 learned position rows; that does not make the state input 1,024 tokens. The current codec fixes 120 prefix slots, up to 16 genuine recent plies and three move targets.
Build a prefix from current board/state and optional recent moves.
Keep absolute slot positions; left-pad missing history and mask those attention keys.
Feed 120 prefix + the first two target tokens = 122 model input slots.
Supervise only three logits, at zero-based positions 119, 120 and 121.
The logits predict source, destination and promotion respectively. Inference uses 120, then 121, then 122 input positions. There is no prefix-reconstruction loss and no EOS target.
Up to 16 plies × 3 tokens; missing slots are masked PAD.
65 slots
STATE marker + 64 square occupancy tokens, a1 through h8.
5 slots
Side, castling, en-passant, halfmove clock, NEXT marker.
3 targets
Source → destination → promotion. Only the first two are appended to the model input.
2 + 48 + 65 + 5 = 120 prefix slots; 123 serialized slots, 122 shifted input slots, three supervised targets. Fullmove number is metadata, not an input token.
What the 512 IDs mean
CM-6 and CM-7 retain IDs 0–71 (EOS 70 is defined but never emitted by this codec). IDs 72–127 remain reserved. Newly assigned IDs 128–378 cover square occupancy, side, castling masks, en-passant targets, halfmove-clock values and structural markers. IDs 379–511 remain reserved. Thus 323 IDs have assigned meanings, including legacy EOS; not every assigned ID is emitted in every valid position, and the raw decoder still produces 512 logits.
FEN supplies the current board/state, not an incomplete board position. It does not contain the whole move history or establish repetition history. The model can work without full past games; authoritative legality and repetition adjudication stay outside the model. Optional recent history does not reconstruct the complete past.
CM-6 introduced this input format; CM-7 retains it for curriculum and standalone-position training. Its objective and vocabulary differ, so its NLL must not be compared numerically with dense full-history NLL. Its 100-game evaluation also changed precision and helper policy: it is system-level evidence, not an input-only ablation.