Training, Anki and duel
Anki Panel
The Anki panel (CTRL-K) allows studying positions with spaced repetition using the FSRS algorithm. Users can create decks from collections or search results.
Creating decks: Click + New deck to create a deck from a collection or the current search results. Search-based decks sync automatically when the Anki tab is activated.
A deck of score sheets. The third source, Score sheets, asks for nothing but a name: blunderDB fills the deck with the 36 unordered scores from 2 to 9 away, and the card of a score is the sheet the Scores exercise displays — take points and gammon values, both faces. That deck exists only if you create it: 36 cards due on the first day are a review debt, and it is contracted on purpose. The sync button regenerates it.
The two places do not do the same work. The Scores exercise makes you retrieve those numbers against the clock and measures the speed; the deck makes them last over time and measures none of it. The two histories stay apart: the Training journal ignores Anki reviews, and Anki’s statistics ignore Training sessions.
A selected deck takes over the panel header: its name, the number of its positions, which a click opens, and the number of due cards; on the right, the settings (⚙), the reset (↻), Cram and Study. ← returns to the deck list.
Export to Anki: the ⤓ button of a row of the list writes the deck as an .apkg file, which the Anki application imports on a computer or a phone (AnkiDroid, AnkiMobile). Each position becomes a two-sided card: on the front the board, the score as seen by the player on roll (placed at the bottom), the cube and the dice; on the back the best move or right cube decision, its equity and the played move’s error. The labels follow the interface language. The deck is exported as it stands, without a sync, and the export writes nothing to the database. Re-importing a later export into Anki updates the cards instead of duplicating them. On the command line: blunderdb anki export, which also exports a collection (see Command Line Interface (CLI)).
Reviewing: Select a deck then click Study (or double-click a deck) to start reviewing due cards. A position card shows the position on the board; a score card announces the score and leaves the board as it is. Rate your recall with keys 1 (Again), 2 (Hard), 3 (Good), or 4 (Easy). Press Esc to stop and return to the deck list.
Undoing a rating. The Undo button, under the rating buttons, or the u key, takes back the session’s last rating: the card gets back exactly the state it had before (due date, interval, stability, difficulty, number of reviews and lapses), the rating leaves the review log, and the card returns to the screen to be rated again. Repeated, it works back through the session rating by rating. When the session ends, Undo stays in the deck strip until the next session: the last rating can be taken back too, and the review resumes on that card. A review recorded before schema version 2.42.0 cannot be undone: the earlier state was not kept. On the command line: blunderdb anki card --action undo (see Command Line Interface (CLI)).
Two counts carry distinct names: the Past due column of the list counts every card whose due date has passed, suspended or buried cards included; the due count in the header counts only those available now, and can therefore be smaller.
Anki counts are links: a click on the due, new, learning or review cards of the strip, or on a value in the Cards, New and Past due columns of the list, loads the matching positions. Likewise, in an open tournament, the number of positions opens exactly those positions.
Cube decisions make two cards, chained. A cube decision is two questions — “double?”, then “take?” — and blunderDB has always stored them as two positions. A deck that selects only one half gets the other: the decision is completed, not enlarged. And when both are due, the second comes immediately after the first.
Each keeps its own grade and its own schedule: these are not two stages of one card, they are two cards. Chaining advances no due date — it orders the cards already due, nothing more. Both being born together, they are due together the first time, and that is where it serves.
Showing the answer: The card asks a question — which move to play, or which cube action. Think, then press SPACE (or click the masked area) to reveal the answer: the recorded analysis of the position, as the Analysis tab presents it. It appears below the rating buttons, which stay in place and within reach. Clicking a move in the list shows it on the board.
Nothing forces you to reveal the answer in order to rate: if you are sure of yourself, the 1 to 4 keys stay active. The answer is masked again on the next card, but not if you simply switch tabs — go and consult the Eval panel or the position’s comment, it will be waiting for you when you return.
A position without a recorded analysis says so directly, with no masked area.
Answering on the board. By default you grade yourself. In the Settings of a position deck, tick Answer on the board: for a checker card you then play the move on the board, as in the Decision exercise (a click on a checker plays it with the first unplayed die, a click on the dice swaps the remaining dice, a right click takes the steps back), then the complete move is validated by a click on the dice or with ENTER. The engine judges the move against the stored analysis, reveals the answer and proposes a grade: Easy for a quick correct answer, Good for a slower correct one, Hard for an error under the blunder threshold, Again for a blunder or an illegal move. The proposed grade is highlighted; you stay in control and grade what you want with 1 to 4. A legal move the analysis does not rank proposes nothing. Cube cards, score cards and decks of score sheets stay self-graded. Revealing the answer without playing gives up the move.
Limiting the session. By default a review session runs through every card that is due. You can cap it at a number of cards, per deck, in the Settings: tick Limit session and give how many cards a session should serve. When the limit is reached the session stops and says so — the message tells “limit reached, so many cards still due” apart from a queue that is genuinely empty. To carry on anyway, free drill is there: it serves other positions without changing anything in the schedule.
A limit of 0 serves no card at all: it is a state in its own right, useful to freeze a deck while preparing for a tournament, and it is not the same thing as “no limit”. The Study button is then disabled.
The limit applies to the session, not to the day. A blunderDB deck is built on a collection or on a search: it is a finite corpus, introduced over a few sessions, whose daily volume is already bounded by its size. A daily cap would never bite, or else would build a backlog on a deck that fitted in a single session.
Free drill (cram): The Cram button, next to Study, starts a free-drill session: random positions from the deck are shown to you regardless of the FSRS schedule. This mode never alters the spaced-repetition plan — ideal for warming up before a tournament or intensively reviewing a themed deck without disturbing its ordering. A Free badge replaces the card state and a Next button (keys 1 to 4) cycles through the positions. Esc returns to the list without saving an interrupted session.
Setting a card aside, without grading it. During a review, a right-click on the card’s header offers three gestures that take it out of the session without telling the scheduler anything:
Suspend — the card keeps its schedule and never comes up again while suspended. It is how a card that is wrong, or not useful yet, is set aside without losing the history attached to it.
Bury — the card disappears until the next day. Unlike suspending, this says nothing about its worth: it is for the one you have just seen elsewhere, or would rather not meet twice in an evening.
Remove — the card leaves the deck, after confirmation. The position itself stays in the database: a deck is a study list over the library, never a copy of it.
None of these three records a grade: a card set aside is not a card answered, and it does not count towards the session’s total.
Review log. In a deck’s Settings, the Review log button shows what the scheduler was told — date, position, grade, state, granted interval — as opposed to what it plans. It is the only place a grade entered by mistake can be seen. It cannot be corrected there: the schedule stays out of reach, and that rule is precisely what makes the log useful — the past cannot be rewritten, but it can be known.
Pause/Resume: You can interrupt a review session at any time with Esc. The button changes to Resume and shows your progress. Click it to pick up where you left off.
Deck management: Use the action buttons to rename, synchronise, reset or delete decks (a confirmation is asked for the last two). The FSRS parameters (target retention, maximum interval, fuzz) can be set per deck in the Settings (gear icon).
Retention: the target and the measurement. The target retention is your own choice on the trade-off between workload and quality of recall: the higher it is, the shorter the intervals and the more you review. Alongside it, the Settings show the measured retention over your own reviews — information, never a control loop: blunderDB does not change your target to chase your success rate. Below some twenty reviews the measurement is not shown: it would read as a fact when it is only noise.
Changing the retention is not retroactive: each card takes up the new pace at its next review, and the due dates already set do not move. The effect is therefore gradual, and invisible on the day itself.
The maximum interval bounds the spacing. A recently created deck starts at one year: a position the algorithm would push back by several years has left the deck without you deciding so, and your own game changes faster than that. Older decks keep the value they had.
Training Panel
The Anki panel reviews what is retained; the Training panel drills what is calculated, against the clock. It opens with CTRL-J, with the toolbar button placed right after « Position aléatoire », or with the train command. The score sheet belongs to both: it is calculated here and retained in a deck of score sheets.
At rest, the panel shows the launcher and the summary of past sessions.
The launcher
Three settings, one per line; “Start” is at the end of the header band:
the exercise — Scores, Pip count, Bearoff, Evaluation, Decision or Opening;
the source of the question, when the exercise has several — Vivier (canonical shapes of the exercise), Plateau (the position as it stands) or Base (a position of the browsed list);
for Opening, instead of the source, the roll to play — 1st roll (the opening move) or 2nd roll (the reply); 1st roll by default;
for Opening again, the mode, exclusive: XG categories (the default) draws among the ticked categories — Money, DMP, Gammon save (the opener 1-away Crawford, the replier 2-away) and Gammon go (the reverse), ticked by default; Match to 5 draws one score, with equal weight, among those the book holds where each player is 1 to 5 away, with no choice of score. A category, or the Match to 5 mode, that the book does not hold is greyed out;
the limit per question — none, 15, 30 or 60 seconds.
The chosen source, or roll, is remembered for each exercise, from one session to the next.
The browsed list can come from the recurring errors of the Stats panel: a click on “Quiz this group” replaces it with the group’s positions and starts the Decision exercise.
train scores, train pips, train bearoff, train evaluation, train decision and train opening open the panel and start straight away; train tp and train takepoint are synonyms of train scores, train epc of train bearoff, train quiz of train decision, train ouverture and train book of train opening.
The six exercises
Scores draws one of the 36 unordered scores from 2 to 9 away and shows a score card: two columns — Vous (you) and L’adversaire (the opponent) — and seven rows — the take point at cube 2 then at cube 4, each for a long race and for the last roll, then the gammon value at cubes 1, 2 and 4.
The tooltip of “Reveal” recalls the gesture — work each number out in your head, then Reveal, then click the ones you missed — and the board shows the score drawn on an empty table.
Each column carries only the cells the reference tables — those of the Reference data panel — define for its face: three numbers at 2a-2a, fourteen at most, and a single column at a level score. A row neither face defines does not appear on the card — so there is no “n/a” cell to guess. Both faces are there because a cube decision at a score needs both: the corrected take point combines both players’ gammon values, and it is the opponent’s take point that says whether your double passes.
Pip count asks for the pip count of both sides. The board’s pip count is hidden while the question is open; “Reveal” shows it — even if you had hidden the pip count with p, since the answer would otherwise stay invisible and the exercise unverifiable. It is a mask and not a setting: your own choice is not changed, and it takes over again at the next question. The Board source asks one question about the position shown, and only one; the Database source draws a new position for every question and brings it onto the board.
Bearoff asks for the EPC of both sides — the effective pip count, the one that adds to the pip count the wastage of the chequers that come off with pips to spare. It is the domain where the engine is exact, and the one where the EPC really differs from the pip count.
Every question is generated: the engine starts from a seed and plays a few rolls, and it is the snapshot that is put to you. A random placement would not have the gaps, the low stacks and the asymmetries of a real bear-off. The seed comes from the Vivier (a completed bear-in, then zero to ten plies), from the Plateau (the position on screen, then one to four plies — never zero, since you have just seen it) or from the Base (a position of the browsed list, as it is: it is already real).
The exercise’s domain: both sides entirely in their home board, 4 to 15 chequers a side and the rest borne off, cube centred, money play. A seed that does not fit is refused by name, and nothing starts — no silent adaptation: playing on until contact breaks would hand you a position you did not choose. An empty board is the exception: the question then comes from the pool, and the panel says why.
The exercise needs the one-sided bear-off table; while it is still being generated in the background (see Configuration), it says so rather than asking a question with no answer.
Évaluation asks what a position is worth: the win chance of the player on roll, as a percentage, and the cube action — Pas de double, Double, prend or Double, passe. These are the two numbers the Eval panel shows, asked before they are shown. The domain is any position: a race as well as a contact position, in money play.
As for Bearoff, the question is generated: the seed comes from the Vivier (a position where contact has just broken, then zero to ten plies played by the engine), from the Plateau (the position displayed, then one to four plies; the question is asked in money play with the cube centred, whatever the seed’s score) or from the Base (a position of the browsed list, as it is). A library position qualifies only if it is a money-play cube decision — no dice, the cube centred or held by the player on roll —; otherwise the draw moves on to the next one, and when none qualifies, the exercise says so. A board that is not a game position — not fifteen chequers a side, or a finished game — is refused with a sentence that says so; an empty board makes the question come from the pool.
The truth is the engine’s: the two-sided bear-off database when the position is in it, gammonNet at its canonical depth everywhere else, and the panel says which one answered. Nothing is estimated: a position the engine does not evaluate is not asked.
Décision asks a decision that is already analysed: a position of the browsed list — its only source — with the decision it carries, a checker play or a cube action, and the stored analysis is the judge. A position without an analysis asks no question, and a position once asked does not come back in the session; when the list is exhausted, the panel says so. With no database open, or with no analysed position in the list, the exercise refuses and says why, and nothing starts.
Opening sets one of the first two rolls of a game at a score, according to the roll chosen in the launcher: with 1st roll, the opening of the player on roll; with 2nd roll, the opponent’s reply in the position left by an opening move tied with the best at that score, drawn from those the book follows and already played on the board. The move is judged against the opening book embedded in blunderDB, computed by its own rollouts: for every score of its grid — from 2 to 7 points on each side, at most one point apart, and the Crawford game at 1-away against 2- or 4-away, both ways — the fifteen opening rolls, then the replies after the opening moves tied with the best at that score. The book is the exercise’s only source.
Scores are drawn by category (Money, DMP, Gammon save, Gammon go), because from 4-away to 7-away the best plays barely change from one score to the next, whereas these four situations play differently. The prompt names the category next to the score.
While an Évaluation, Décision or Ouverture question awaits its answer, the Analysis panel is masked: it carries the answer.
Answering
The answer mode is a property of the exercise, never a setting: what is counted or recalled is declared, what is estimated is entered — because there, the size of the error is the lesson.
Scores and Pip count are declared: you work it out in your head, you click “Reveal”, and the truth appears. Every number is then right by default — you click the one you got wrong to mark it a fault (Tab then Space does the same from the keyboard), and a second click clears the mark. Nothing is typed: a pip count or a table cell is right or wrong, and writing it teaches nothing that reading it does not.
Bearoff is entered: you write the two EPCs, « Valider » grades them to within half a pip — the granularity at which the EPC changes a race decision — and the truth appears next to what you wrote. The application judges, there is nothing to tick. The deviation is recorded with its sign: overestimating is not underestimating, and it is the summary that makes an average of it.
Évaluation mixes both gestures in a single question. The win chance is entered and graded to within five points, signed deviation included; the cube action is chosen — the click keeps the button without grading anything, and « Valider » grades both at once. The cube has no tolerance: only the button the engine’s verdict makes right is right, and a position too good to double is answered Pas de double. Enter in the field leads to the cube action while it is not chosen, then validates. After the answer, the panel shows the truth — the verdict in four outcomes —, its source, and the EPC of both sides when the position has an exact one; the EPC is never asked here, it has its own exercise. The journal counts the two numbers apart: one can estimate a position well and misread its cube.
Décision is chosen. On a checker decision, play the move on the board: a click on a checker plays it with the first die not yet played (the left die, then the right one), or with the next if the first cannot move it; if no die can, nothing moves. You can also drag the checker. A click on the dice swaps the dice still to play, and has the move graded once it is complete. A right click on the board takes back the steps played. In the panel, « Annuler le pas » goes back one die and « Recommencer » restores the position as the question poses it. The notation field also accepts the move typed (13/7 8/7, the transcription notation): the steps are placed on the board on each keystroke, a field turned red says a step cannot be played, and ENTER validates the complete move. With the panel focused, BACKSPACE undoes a step and ESC restarts the move; ENTER validates the complete move wherever the focus is, except on a button. On a cube decision, click No double, Double, take or Double, pass: the click is the answer.
The correction keeps three outcomes apart, and collapsing them would lie. An illegal move is not a badly chosen move — it is a rules mistake. A legal move the engine never ranked is not an error of judgement: it simply has no price, and costs nothing. A ranked move costs what the analysis says it costs, in millipoints. Only a ranked move with no cost is right; the best move is shown in every case.
Opening is also chosen, the move played on the board as in Decision — same gestures, same notation field. The panel states the roll to play and the score, you first. A move is right when it is tied with the best: there is not a single good move, but a leading group the book cannot tell apart (see Opening book: gap, 95 % CI and tie). Once the move is played, the panel marks it Right or Wrong and shows the table of the book’s candidates: the gap of each to the best, the 95 % CI of that gap and the mention tied, your move highlighted — added at the bottom, without a gap, when the book does not rank it. The number of games and the rollout setting that produced these figures are in the table’s tooltip. With 2nd roll, the prompt names the opening move already played. The log counts the opening and the reply apart: one can know one’s openings and reply badly.
The clock starts when the question appears and stops at « Révéler », at « Valider », at the click of a Décision cube action or at the move played in Ouverture; the next question is prepared while you answer, so it is never timed with yours. Ticking faults is not timed either. With a limit, a question still unanswered at the deadline reveals itself and counts out of time: every one of its numbers is wrong, and its time does not enter the median — one does not measure an answer that was not given. A decision out of time shows the best move, and does not enter the session’s PR.
“Next” records the question and asks another; ENTER, outside a field or a button, does the same once the answer is shown, or “Finish” if there is no next question. The session has no fixed length: it runs until “Finish”, which writes it to the journal, or “Leave”, which discards it. Every button is in the panel’s header band, with the exercise, the question number and the timer: “Leave”, “Finish”, then, always at the end, the question’s action (“Reveal”, “Check” or “Next”). The board shows the question and its answer; it carries no control.
While a question is set on the board, revealed or not, the keys that browse the list do not scroll it: the question keeps the board until « Suivante », « Terminer » or « Quitter ».
The journal and the summary
Finished sessions are kept in the database itself — so they travel with the file — and without any cap. At rest, the panel shows one line per exercise: the number of sessions, the fault rate, the median time and, from ten sessions on, the trend, that is the gap between the fault rate of the last ten sessions and that of all of them — negative, you are improving.
For Décision, the line also gives the PR of the last session, computed by the formula the statistics apply to real play — 500 × mean error in normalised equity, over the graded decisions. A training PR of 6 and a match PR of 6 measure the same thing on the same scale.
Clicking the exercise’s name unfolds the detail by number type: « Point de prise 4 · dernier lancer, 6 / 9 ». That detail is what makes the journal worth keeping, and it counts by type and not by face: the same cell of the same table, seen from either side, is one single weakness.
A Decision question keeps in the log its position, the answer given and its cost in millipoints. The Decision detail therefore carries three buttons that act on all the missed positions, each once, most recently missed first — a question that timed out counts as missed:
Retake my misses — the missed positions become the list browsed and a Decision session restarts on them;
Anki deck of misses — an Anki deck of these positions;
Collection of misses — a collection of these positions.
The deck and the collection are named “Decision misses” followed by today’s date. On the command line, training missed returns the same list and makes a deck (--deck) or a collection (--collection) of it, and training sessions reads the log back (see training — The training log).
Duel panel
The Duel panel plays a whole match against the Bot, with blunderDB as Arbiter: it rolls the dice, enforces the rules, and keeps the score and the clocks. It opens with CTRL-H, with the “Play” button of the toolbar, or with the duel command. A database must be open: the Duel is written to it after each decision.
With no Duel open, the panel shows the form, remembered from one Duel to the next, and, if there are any, the list of suspended Duels. The header band carries the Start, the choices the starting position calls for, the time control, and “Play” at its end:
Start: the initial position, or the position on the board. Starting from the board, it is edited as in the Eval panel (same scratch board, same gestures): the checkers, the cube and its owner, the dice — placed on a player’s side, they give that player the turn — and the score.
Dice (start from a board carrying dice): “Board dice”, the default, plays the roll as set; “Reroll” has the Referee draw it again.
Cube decision (start from a board with no dice to play, when the player on roll can double or a double is offered on the board): “Before the cube”, the default, begins with that decision — the player on roll doubles or rolls, or the opponent answers the offered double; “After the cube” goes straight to the roll, an offered double then being taken.
Time control: none, Standard (2 min per point + 12 s), Speed (0.4 min per point, i.e. 2 min for a 5-point match, + 10 s), or a saved time control.
The form, one setting per line:
Match of 1 to 25 points, or money session (Jacoby optional).
Score: what each player still needs, by default the match length (start of a match); “1 (Crawford)” is the Crawford game, “1 (post-Crawford)” a game that follows it. Starting from the board, these fields and the board’s score are one and the same: changing one changes the other, and a money board makes a money session. Single game stops the Duel at the end of its first game, to practise a score: the Match written counts only that game.
Time control (a time control chosen): minutes per point and delay in seconds. Each player has minutes per point × match length (less, from a starting score: the average length left to play); on each turn, the delay runs down first, then the reserve. An exhausted reserve stays at zero, and the elapsed time keeps being noted, or loses the match. A name and “Save” keep the two numbers as a time control of the menu, in the user’s settings; “Delete” removes the saved time control chosen. A money session is played without a time control.
Side played (player 1 or 2) and Bot level (
instant,normal,thorough, those of the analysis). The selector states each level’s depth, for example “instant (0-ply)” or “normal (2-ply, pruned)”; deeper plays stronger and slower.Your name and Record the match: when unchecked, the finished Duel is discarded instead of becoming a Match.
Pipcount: unchecked, the pipcount stays hidden during the Duel, even through the toolbar button or
P; it returns when the Duel ends.
“Resume” reopens a suspended Duel at the same point, with the same upcoming dice; its clocks were stopped.
A suspended Duel does not leave its database: exporting the database does not take it along, because its upcoming dice must leave by no route before the end. A finished Duel travels like any Match.
The Duel is played on the board. The panel shows the match sheet in two columns, like the Transcription, and the clocks when a time control is running; its header band names the players, says what is expected, and carries on the right “Forfeit match”, “Pause match”, “Cancel match”. A match in points is recorded only whole: no stop keeps an unfinished match. The score and the cube are those of the board; the score and the clocks stay in the status bar when the tab is collapsed. The SHA-256 fingerprint of the dice seed, published by the Referee at creation, can be read in the tooltip of the header band’s prompt, then with the seed in the origin of the finished Match. The board switches to DUEL mode: the library can no longer be browsed, editing, the Eval panel and the other tabs do not open, except the Reference data panel, and the engine falls silent — no evaluation, no candidate. Only the Pile (B), the pipcount (P, unless it is hidden for the Duel) and help remain.
Before the roll, a click on the board, on the dice or on a checker rolls them; only a click on the cube offers to double, and the board asks “Double” or “Cancel”. When the cube is not available, the roll is automatic.
Facing a double from the Bot, the board asks “Take” or “Pass”.
A click on a checker plays it at once with the left die that is still free, or with the other one when the left die cannot play it; a checker on the bar enters, a double is played in four clicks. A checker can also be dragged to its destination. Only the steps of a legal move go through.
A die greys out when it is played; on a double, each die stands for two steps and is half veiled after the first. A complete move greys out every die, including those the rules do not allow to be played.
As long as the move is not complete, a click on the dice swaps the dice still to be played. A right-click on the board takes back all the checkers played (
BACKSPACEtoo); with no checker played, it opens the Duel menu.The complete move is validated by a click on the dice, by “Validate” on the board, or by
ENTERorSPACE. Nothing can be taken back afterwards.The Bot answers immediately; its moves are replayed on the board, slowly.
A right-click outside the board, or on the board outside its move or with no checker played, opens the Duel menu: put the position on the Pile or take it off, resign the game for a single game, a gammon or a backgammon (on one’s turn, after confirmation), forfeit the match, pause it, cancel it. This menu offers neither evaluation nor editing.
“Forfeit match” gives the whole match up, at any moment and after confirmation: the game in progress goes to the opponent for the points that bring them to the length, and the Match is written as won by them. In money play, the game in progress is lost as a single game at the cube’s value (Jacoby rule or not) and the session ends. Under a time control that loses the match, a reserve that runs out counts as that player forfeiting the match.
“Pause match” puts the Duel on hold, clocks stopped; it resumes where it stopped. “Cancel match” discards it, after confirmation: nothing of it is written.
A double-click outside the board puts the position on the Pile, or takes it off, like
B; only the bookmark in the corner of the board shows it.
Each decision carries its duration, with or without a time control. A resignation has no duration recorded in the Match.
At the end, the Match is written, its analysis starts and the Matches tab opens on it. On the command line, blunderdb duel drives the same Duel (see duel — Play a Duel).