Repository navigation
Releases: chalkstreamdev/bgdb-opening-book
Release list
Opening book v1.0 — gnubg 1.08.003
Opening book v1.0 — gnubg 1.08.003
A score-aware opening book for backgammon: precomputed 3-ply GNU Backgammon evaluations for the first rolls of the game, across every match score up to 25 points plus money play. Every decision stores its top 8 candidate moves with equities and win/gammon/backgammon distributions; every cube decision stores the full double/take verdict.
This release contains 4,230,443 evaluated positions across 351 score contexts. Every entry was computed with gnubg 1.08.003 and is reproducible with the generator in this repository.
What it covers
Depth follows the away-score, not the match length:
- Both players 9-away or closer (every score of a ≤9-point match, and the endgame of every longer one, plus Crawford and post-Crawford): the first three rolls — the 15 opening rolls, every legal reply, and pruned third rolls (see below). Cube decisions are evaluated before every roll and positions with good double/takes are also followed.
- 10- to 15-away: the opening, the first cube decision and every legal reply. Good double/takes are followed into the second roll.
- 16- to 25-away: the 15 opening rolls.
- Money, with and without Jacoby, at full depth.
Pruning: Rolls 1–2 are exhaustive over all legal plays. At roll 3, the tree is followed for correct and "good" moves, defined as within 0.04 equity of the best move. At most the top 4 candidate moves are followed for each position.
Followed cubes:
- The centered (no-double) line is followed unconditionally. A position reached by not doubling is in the book even where not doubling was a blunder. A play after a missed double is fully answered.
- The doubled line is followed where the double-take was best or good — doubling within 0.04 of correct and taking within 0.04 of passing. A clearly bad double leaves the book at once (as does a double whose correct answer is a clear pass — the game ends, so there is nothing to serve).
- Redoubles were evaluated and stored but all 6,537 read no-double, and none is close — the nearest live redouble would cost 0.58.
The full tree rules are in book-format.md.
Validation
- Structural gate: 351/351 files clean — 0 duplicate keys, complete 21-roll taken-cube fans with verified parents, 0 move-notation violations over 30,830,604 stored plays.
- Reproducibility, live-agreement, and seat-symmetry spot checks green across the book (
spot_check.py, gnubg 1.08.003). - Opening plays match the published consensus; validated against the rollout equities in eXtreme Gammon's public opening-book download (86.2% agreement on comparable money decisions, mean deviation 0.0007; 38 accepted divergences documented with reasons in
corpus/xg-accepted.json).
Files
book-gnubg-1.08.003-depth{1,2,3}-<context>.jsonl.gz— one gzipped JSONL checkpoint per score context (the format isbook-format.md).manifest.json— per-context grind provenance;build_book.pyverifies reassembly against it.book-gnubg-1.08.003.sqlite.gz— the assembled serving SQLite (1.72 GB raw), buildable from the JSONL withbuild_book.py.SHA256SUMS— checksums for every asset above.
License and attribution
The book data is CC-BY-4.0: BackgammonDB opening book, ground with GNU Backgammon (gnubg.org) — https://backgammondb.com. The generator code in this repository is GPL-3.0.
Per-context inventory
| context | depth | entries | band | cap | ground | file |
|---|---|---|---|---|---|---|
| 10a10a | 2 | 3,865 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-10a10a.jsonl.gz |
| 10a1a | 2 | 10,208 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-10a1a.jsonl.gz |
| 10a1ac | 2 | 7,380 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-10a1ac.jsonl.gz |
| 10a2a | 2 | 8,906 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-10a2a.jsonl.gz |
| 10a3a | 2 | 10,061 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-10a3a.jsonl.gz |
| 10a4a | 2 | 7,982 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-10a4a.jsonl.gz |
| 10a5a | 2 | 8,108 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-10a5a.jsonl.gz |
| 10a6a | 2 | 7,835 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-10a6a.jsonl.gz |
| 10a7a | 2 | 7,751 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-10a7a.jsonl.gz |
| 10a8a | 2 | 7,730 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-10a8a.jsonl.gz |
| 10a9a | 2 | 7,730 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-10a9a.jsonl.gz |
| 11a10a | 2 | 7,730 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-11a10a.jsonl.gz |
| 11a11a | 2 | 3,865 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-11a11a.jsonl.gz |
| 11a1a | 2 | 8,906 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-11a1a.jsonl.gz |
| 11a1ac | 2 | 7,380 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-11a1ac.jsonl.gz |
| 11a2a | 2 | 8,549 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-11a2a.jsonl.gz |
| 11a3a | 2 | 11,237 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-11a3a.jsonl.gz |
| 11a4a | 2 | 8,087 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-11a4a.jsonl.gz |
| 11a5a | 2 | 8,276 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-11a5a.jsonl.gz |
| 11a6a | 2 | 7,856 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-11a6a.jsonl.gz |
| 11a7a | 2 | 7,835 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-11a7a.jsonl.gz |
| 11a8a | 2 | 7,730 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-11a8a.jsonl.gz |
| 11a9a | 2 | 7,730 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-11a9a.jsonl.gz |
| 12a10a | 2 | 7,730 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-12a10a.jsonl.gz |
| 12a11a | 2 | 7,730 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-12a11a.jsonl.gz |
| 12a12a | 2 | 3,865 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-12a12a.jsonl.gz |
| 12a1a | 2 | 10,418 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-12a1a.jsonl.gz |
| 12a1ac | 2 | 7,380 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-12a1ac.jsonl.gz |
| 12a2a | 2 | 9,074 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-12a2a.jsonl.gz |
| 12a3a | 2 | 11,132 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-12a3a.jsonl.gz |
| 12a4a | 2 | 8,171 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-12a4a.jsonl.gz |
| 12a5a | 2 | 8,507 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-12a5a.jsonl.gz |
| 12a6a | 2 | 7,982 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-12a6a.jsonl.gz |
| 12a7a | 2 | 7,919 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-12a7a.jsonl.gz |
| 12a8a | 2 | 7,730 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-12a8a.jsonl.gz |
| 12a9a | 2 | 7,730 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-12a9a.jsonl.gz |
| 13a10a | 2 | 7,730 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-13a10a.jsonl.gz |
| 13a11a | 2 | 7,730 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-13a11a.jsonl.gz |
| 13a12a | 2 | 7,730 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-13a12a.jsonl.gz |
| 13a13a | 2 | 3,865 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-13a13a.jsonl.gz |
| 13a1a | 2 | 9,032 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-13a1a.jsonl.gz |
| 13a1ac | 2 | 7,380 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-13a1ac.jsonl.gz |
| 13a2a | 2 | 8,843 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-13a2a.jsonl.gz |
| 13a3a | 2 | 11,342 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-13a3a.jsonl.gz |
| 13a4a | 2 | 8,213 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-13a4a.jsonl.gz |
| 13a5a | 2 | 8,948 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-13a5a.jsonl.gz |
| 13a6a | 2 | 8,003 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-13a6a.jsonl.gz |
| 13a7a | 2 | 7,982 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-13a7a.jsonl.gz |
| 13a8a | 2 | 7,772 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-13a8a.jsonl.gz |
| 13a9a | 2 | 7,751 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-13a9a.jsonl.gz |
| 14a10a | 2 | 7,730 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-14a10a.jsonl.gz |
| 14a11a | 2 | 7,730 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-14a11a.jsonl.gz |
| 14a12a | 2 | 7,730 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-14a12a.jsonl.gz |
| 14a13a | 2 | 7,730 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-14a13a.jsonl.gz |
| 14a14a | 2 | 3,865 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-14a14a.jsonl.gz |
| 14a1a | 2 | 10,628 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-14a1a.jsonl.gz |
| 14a1ac | 2 | 7,380 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-14a1ac.jsonl.gz |
| 14a2a | 2 | 9,368 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-14a2a.jsonl.gz |
| 14a3a | 2 | 11,342 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-14a3a.jsonl.gz |
| 14a4a | 2 | 8,528 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-14a4a.jsonl.gz |
| 14a5a | 2 | 9,284 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-14a5a.jsonl.gz |
| 14a6a | 2 | 8,108 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-14a6a.jsonl.gz |
| 14a7a | 2 | 8,087 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-14a7a.jsonl.gz |
| 14a8a | 2 | 7,856 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-14a8a.jsonl.gz |
| 14a9a | 2 | 7,835 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-14a9a.jsonl.gz |
| 15a10a | 2 | 7,751 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-15a10a.jsonl.gz |
| 15a11a | 2 | 7,730 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-15a11a.jsonl.gz |
| 15a12a | 2 | 7,730 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-15a12a.jsonl.gz |
| 15a13a | 2 | 7,730 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-15a13a.jsonl.gz |
| 15a14a | 2 | 7,730 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-15a14a.jsonl.gz |
| 15a15a | 2 | 3,865 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-15a15a.jsonl.gz |
| 15a1a | 2 | 9,242 | — | — | 2026-08-06 | book-gnubg-1.08.003-depth2-15a1a.jsonl.gz |
| 15a1ac | 2 | 7,380 | — | — | 20... |