Repository navigation
RDC - Give chess voters chess.js facts and label every vote with them - #58
Merged
Merged
Conversation
… them Models misread the ASCII grid and the recent SAN list: one vote argued about a queen captured moves earlier. The prompt now lists every piece by square, marks recent moves as history and puts the facts in columns; describeMove takes the state so the vote panes show what a move does next to the model's prose. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RsVBKyqGXWMTpBTiB8WMws
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RsVBKyqGXWMTpBTiB8WMws
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RsVBKyqGXWMTpBTiB8WMws
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Attackers and defenders are legal captures and recaptures, so a pinned piece counts for nothing and an en passant capturer counts. Material, castling rights, every piece by square, unguarded pieces and the opponent's best capture come from the same module. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RsVBKyqGXWMTpBTiB8WMws
# Conflicts: # src/go/evals/vs-bot.ts
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
One thing
Chess voters get facts from chess.js instead of an ASCII grid to squint at, and every vote is labelled with what the move actually does. This is the fix for the report of a voter claiming it "took its own piece", and for a vote that argued about a Black queen several moves after the queen had been captured: the models were fed the live position, but they misread the grid and the recent SAN list.
What changed
src/chess/facts.ts, one module (absorbsdescribe-move.tsandmaterial.ts): per move, the piece, squares, capture and its value, check or mate, castling, promotion, en passant; then one move ahead: legal attackers and legal recapturers of the landing square, the cheapest attacker, and the opponent's best capture in reply. Position facts: material per side, castling rights, every piece of each side by square, the mover's pieces attacked and undefended, and the opponent's best capture if the mover did nothing. Pinned pieces no longer count as attackers or defenders; en passant capturers do.src/chess/prompt.ts: a POSITION section from those facts (with a PIECES inventory so the board never has to be inferred), fact columns in LEGAL MOVES, recent moves marked as already played, guidance that explains the columns instead of proverbs. FEN and ASCII board kept.describeMovenow takes the state and returns SAN plus the proven facts, so the vote panes and the log show "Nxe5 takes Pawn 1; attacked 1 (Knight 3) / defended 0; reply takes Knight 3 on e5" next to the model's prose.moveKeystays SAN. Dominion and Go labels unchanged.src/chess/jev.tsconsumes the same facts.src/chess/evals/vs-bot.ts(model versus the rules bot through the real API) reporting material margin, hung pieces, pieces lost for free, captures and checkmates; shared plumbing with the Go runner insrc/evals/vs-bot.ts.Measurement, 3 games each as White versus the rules bot, cap 80 plies
Three games is a smoke check, not a study; both models still hang pieces.
Dead code
Removed
describe-move.ts,material.ts,ChessMove.captured(written, never read), a duplicatedisCheckmateand a duplicatedmean. Exports with no production importer in touched files: 0.Evidence
bun run checkgreen.🤖 Generated with Claude Code
https://claude.ai/code/session_01RsVBKyqGXWMTpBTiB8WMws