{
  "version": 1,
  "title": "Decision Lab: test the reason, not just the move",
  "intro": "Nine original board investigations examine what ordinary rules leave out: missing information, shared partners, global constraints, optimality, move order and the exact goal. Make a prediction, follow the evidence, then change one condition and test the conclusion again.",
  "methodology": "Each case is a fixed construction or a legally reached game position. Claims about all possibilities are checked by explicit enumeration or a complete finite proof, with the scope stated alongside the result. These are authored learning investigations, not calibrated difficulty ratings or records of human playtesting. Deliberately ambiguous or invalid boards are labelled as such. Related practice links use different positions unless explicitly stated.",
  "cases": [
    {
      "id": "nonogram-many-pictures",
      "game": "nonograms",
      "title": "One clue set, 120 different pictures",
      "summary": "Investigate whether a plausible picture is actually determined by its clues. A complete solution can be valid without being the only solution.",
      "question": "Does this board force its centre square to be filled?",
      "boardSource": "workshop",
      "position": {
        "p": {
          "id": "lab-nonogram-ambiguity",
          "size": 5,
          "rows": [
            [
              1
            ],
            [
              1
            ],
            [
              1
            ],
            [
              1
            ],
            [
              1
            ]
          ],
          "cols": [
            [
              1
            ],
            [
              1
            ],
            [
              1
            ],
            [
              1
            ],
            [
              1
            ]
          ]
        },
        "state": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ]
      },
      "boardCaption": "Every row and every column has clue 1. All 25 squares are initially unknown.",
      "setup": [
        "This is a deliberately ambiguous construction, not a daily puzzle advertised as having a unique answer. Each row must contain exactly one filled square, and each column must also contain exactly one. No other givens are available.",
        "Before drawing a diagonal or guessing a picture, separate two questions: can you complete the board, and do all legal completions agree on a particular square? The first asks for one example. The second asks for evidence about every example."
      ],
      "steps": [
        {
          "title": "Build two witnesses",
          "text": "Fill R1C1, R2C2, R3C3, R4C4 and R5C5. Every clue is satisfied and the centre is filled. Now fill R1C2, R2C3, R3C4, R4C5 and R5C1. Every clue is still satisfied, but the centre is empty. These two complete boards already disprove either forced value for the centre."
        },
        {
          "title": "Count the whole family",
          "text": "Row 1 can choose any of five columns. Row 2 must use one of the four unused columns, then row 3 has three choices, row 4 two and row 5 one. There are 5 × 4 × 3 × 2 × 1 = 120 legal completions. Choosing a column already used would violate that column’s clue."
        },
        {
          "title": "Test an additional given",
          "text": "Suppose R3C3 is supplied as a confirmed filled square. Row 3 and column 3 are now settled, leaving four rows to match with four columns. There are 4 × 3 × 2 × 1 = 24 completions. One given reduces the uncertainty without eliminating it.",
          "position": {
            "p": {
              "id": "lab-nonogram-ambiguity",
              "size": 5,
              "rows": [
                [
                  1
                ],
                [
                  1
                ],
                [
                  1
                ],
                [
                  1
                ],
                [
                  1
                ]
              ],
              "cols": [
                [
                  1
                ],
                [
                  1
                ],
                [
                  1
                ],
                [
                  1
                ],
                [
                  1
                ]
              ]
            },
            "state": [
              0,
              0,
              2,
              0,
              0,
              0,
              0,
              2,
              0,
              0,
              2,
              2,
              1,
              2,
              2,
              0,
              0,
              2,
              0,
              0,
              0,
              0,
              2,
              0,
              0
            ]
          },
          "caption": "Test an additional given"
        },
        {
          "title": "Make the right stopping decision",
          "text": "If your deductions reach this original unmarked board, the lack of a forced square is not a failure to spot overlap. The supplied information permits different answers. A solver should report ambiguity or request a further given, rather than invent a certainty from a symmetrical-looking picture."
        }
      ],
      "wrongTurn": {
        "claim": "The diagonal looks natural, so the centre must be filled.",
        "whyItFails": "The shifted-column completion is an explicit counterexample with exactly the same row and column clues. Picture appearance adds no rule.",
        "correction": "Keep the centre undecided unless a further clue or established mark excludes every centre-empty completion."
      },
      "transfer": {
        "question": "If R1C1, R2C2, R3C3 and R4C4 are confirmed filled, how many completions remain? What if only the first three are confirmed?",
        "answer": "Four confirmed diagonal squares leave only column 5 available for row 5: exactly one completion. Three confirmed diagonal squares leave rows 4–5 and columns 4–5: two completions, because those last two assignments can be swapped."
      },
      "takeaway": "A valid completed picture proves existence. Two disagreeing valid pictures prove that a particular square is not forced.",
      "verification": {
        "method": "Exhaustive permutation enumeration of one filled cell per row, with distinct columns.",
        "checks": [
          "120 unmarked completions",
          "24 completions with centre filled",
          "2 completions with first three diagonal givens",
          "1 completion with first four diagonal givens"
        ],
        "evidence": {
          "expectedCounts": [
            120,
            24,
            2,
            1
          ]
        }
      },
      "choices": [
        {
          "id": "forced",
          "text": "Yes: the diagonal forces it.",
          "correct": false,
          "explanation": "No diagonal rule exists. A shifted assignment satisfies every clue with an empty centre."
        },
        {
          "id": "open",
          "text": "No: valid completions disagree.",
          "correct": true,
          "explanation": "The diagonal and shifted-column constructions are complete counterexamples to either forced value."
        },
        {
          "id": "impossible",
          "text": "The clues cannot be satisfied.",
          "correct": false,
          "explanation": "The main diagonal alone supplies a valid completion."
        }
      ],
      "studyId": "nonograms-01"
    },
    {
      "id": "tents-the-shared-partner",
      "game": "tents",
      "title": "Every tree has a neighbour. Two trees still cannot share it.",
      "summary": "Audit a completed-looking camp using distinct tree–tent partners, then repair it without changing any clue.",
      "question": "The displayed tents match every count and do not touch. Is this a valid finish?",
      "boardSource": "workshop",
      "position": {
        "p": {
          "id": "lab-tents-distinct-partners",
          "size": 5,
          "trees": [
            2,
            8,
            22,
            19
          ],
          "rowCounts": [
            1,
            0,
            1,
            0,
            2
          ],
          "colCounts": [
            0,
            1,
            0,
            2,
            1
          ],
          "solution": [
            3,
            13,
            21,
            24
          ]
        },
        "state": [
          2,
          2,
          0,
          1,
          2,
          2,
          2,
          2,
          0,
          2,
          2,
          2,
          2,
          2,
          1,
          2,
          2,
          2,
          2,
          0,
          2,
          1,
          0,
          1,
          2
        ]
      },
      "boardCaption": "Trees: R1C3, R2C4, R4C5 and R5C3. Tents: R1C4, R3C5, R5C2 and R5C4. Crosses mark grass.",
      "setup": [
        "The row clues are 1, 0, 1, 0, 2 and the column clues are 0, 1, 0, 2, 1. Four tents match those totals. No two tents touch, even diagonally. Each tent is beside a tree, and every tree has at least one neighbouring tent.",
        "One rule still needs a stronger check: the trees and tents must admit a one-to-one pairing through side adjacency. A tent can touch two trees geometrically, but it cannot serve as the assigned tent for both. We need a set of distinct partners, not merely a neighbour for each item."
      ],
      "steps": [
        {
          "title": "Inspect the two top trees together",
          "text": "Tree R1C3 has only the tent at R1C4 as a possible partner. Tree R2C4 also has only the tent at R1C4: R3C4 is grass and its other neighbours hold no tents. Both trees individually pass an adjacency check, but together they need two distinct tents and have only one available."
        },
        {
          "title": "Explain the failure before moving anything",
          "text": "The lower tents cannot rescue the top pair. A matching uses only side-adjacent tree–tent pairs; it cannot transfer a distant tent across the board. This is a complete impossibility proof for the displayed arrangement, despite all row and column totals being correct."
        },
        {
          "title": "Repair two placements while preserving the clues",
          "text": "Move the tent at R3C5 to R3C4 and the tent at R5C4 to R5C5. Each remains in the same row. Column 4 gains one tent and loses one; column 5 loses one and gains one. Therefore every row and column clue stays satisfied. The new tents also remain mutually non-touching.",
          "position": {
            "p": {
              "id": "lab-tents-distinct-partners",
              "size": 5,
              "trees": [
                2,
                8,
                22,
                19
              ],
              "rowCounts": [
                1,
                0,
                1,
                0,
                2
              ],
              "colCounts": [
                0,
                1,
                0,
                2,
                1
              ],
              "solution": [
                3,
                13,
                21,
                24
              ]
            },
            "state": [
              2,
              2,
              0,
              1,
              2,
              2,
              2,
              2,
              0,
              2,
              2,
              2,
              2,
              1,
              2,
              2,
              2,
              2,
              2,
              0,
              2,
              1,
              0,
              2,
              1
            ]
          },
          "caption": "Repair two placements while preserving the clues"
        },
        {
          "title": "Write the distinct pairing",
          "text": "Pair R1C3 with R1C4, R2C4 with R3C4, R5C3 with R5C2 and R4C5 with R5C5. Every pair shares a side and every tent appears once. A complete check of the three non-touching count-valid layouts for these trees and clues finds this is the only layout with a full pairing."
        }
      ],
      "wrongTurn": {
        "claim": "If every tree and every tent has some neighbour, the pairing rule is satisfied.",
        "whyItFails": "Two trees can both point to the same sole tent. Individual adjacency checks do not ensure distinct partners.",
        "correction": "For a small suspicious group of trees, count the different tents the group can use; fewer tents than trees proves a pairing failure."
      },
      "transfer": {
        "question": "Could you repair the arrangement by moving only R3C5 to R3C4?",
        "answer": "That supplies the top pair with distinct tents, but breaks the column counts: column 4 rises from 2 to 3 and column 5 falls from 1 to 0. The second move from R5C4 to R5C5 is needed to preserve both column clues."
      },
      "takeaway": "When objects require distinct partners, checking each object separately can miss a group-level shortage.",
      "verification": {
        "method": "Enumerate four-tent subsets of non-tree squares; enforce counts, non-touching, both-direction adjacency and exhaustive bipartite matching.",
        "checks": [
          "Displayed arrangement passes all local checks but has no full matching",
          "Top two trees have only one possible tent partner",
          "3 non-touching count-valid layouts; 1 full matching layout"
        ],
        "evidence": {
          "size": 5,
          "trees": [
            2,
            8,
            22,
            19
          ],
          "good": [
            3,
            13,
            21,
            24
          ],
          "bad": [
            3,
            14,
            21,
            23
          ],
          "rows": [
            1,
            0,
            1,
            0,
            2
          ],
          "cols": [
            0,
            1,
            0,
            2,
            1
          ],
          "deficiency": {
            "trees": [
              2,
              8
            ],
            "tents": [
              3
            ]
          },
          "totalCountLayouts": 3,
          "validLayouts": 1,
          "explanation": "Local checks all pass, including an adjacent tent for every tree, but R1C3 and R2C4 share only R1C4. Two trees cannot receive distinct tents from a one-tent neighbourhood. The valid alternative changes two tent squares while preserving every clue."
        }
      },
      "choices": [
        {
          "id": "valid",
          "text": "Yes: the counts and spacing all work.",
          "correct": false,
          "explanation": "The two top trees both need the same tent at R1C4."
        },
        {
          "id": "invalid",
          "text": "No: two trees compete for one tent.",
          "correct": true,
          "explanation": "R1C3 and R2C4 have only R1C4 available between them."
        },
        {
          "id": "touch",
          "text": "No: two tents touch diagonally.",
          "correct": false,
          "explanation": "The tents satisfy spacing. The failure is their inability to pair distinctly with all trees."
        }
      ],
      "studyId": "tents-01"
    },
    {
      "id": "bridges-counts-versus-network",
      "game": "bridges",
      "title": "A connected network can still leave three answers",
      "summary": "Enumerate a six-island ladder to separate three different tests: correct counts, one network and a unique solution.",
      "question": "After enforcing both island counts and connectivity, is this ladder uniquely solved?",
      "boardSource": "workshop",
      "position": {
        "p": {
          "id": "lab-bridges-ladder-ambiguity",
          "size": 5,
          "islands": [
            {
              "r": 0,
              "c": 0,
              "n": 2
            },
            {
              "r": 0,
              "c": 2,
              "n": 3
            },
            {
              "r": 0,
              "c": 4,
              "n": 2
            },
            {
              "r": 4,
              "c": 0,
              "n": 2
            },
            {
              "r": 4,
              "c": 2,
              "n": 3
            },
            {
              "r": 4,
              "c": 4,
              "n": 2
            }
          ],
          "candidates": [
            {
              "a": 0,
              "b": 1
            },
            {
              "a": 1,
              "b": 2
            },
            {
              "a": 3,
              "b": 4
            },
            {
              "a": 4,
              "b": 5
            },
            {
              "a": 0,
              "b": 3
            },
            {
              "a": 1,
              "b": 4
            },
            {
              "a": 2,
              "b": 5
            }
          ]
        },
        "state": [
          [
            0,
            1,
            2
          ],
          [
            0,
            1,
            2
          ],
          [
            0,
            1,
            2
          ],
          [
            0,
            1,
            2
          ],
          [
            0,
            1,
            2
          ],
          [
            0,
            1,
            2
          ],
          [
            0,
            1,
            2
          ]
        ]
      },
      "boardCaption": "A, B, C label the top row left to right; D, E, F label the bottom row. The middle islands B and E need 3 bridges; the four corner islands need 2.",
      "setup": [
        "The seven possible routes are A–B, B–C, D–E, E–F, A–D, B–E and C–F. There are no diagonal routes and no route may pass through an intervening island. Each route can carry zero, one or two bridges. All six islands must form one network.",
        "This is an intentionally ambiguous construction. It asks a question that checking the rules alone cannot settle: if a bridge layout is connected and every island total is right, must it be the only valid layout? We will enumerate every possibility on this exact ladder."
      ],
      "steps": [
        {
          "title": "Reduce seven route counts to two choices",
          "text": "Call the top-left route A–B x and the top-right route B–C y. Island A forces A–D = 2 − x, then island D forces D–E = x. Similarly, C–F = 2 − y and E–F = y. The middle islands both require B–E = 3 − x − y. Every route count is therefore determined by x and y."
        },
        {
          "title": "List every arithmetic possibility",
          "text": "Both x and y belong to {0,1,2}. Keeping B–E between zero and two requires 1 ≤ x + y ≤ 3. Exactly seven pairs survive: (0,1), (0,2), (1,0), (1,1), (1,2), (2,0) and (2,1). This is a complete enumeration of the count-valid layouts, not a selection of examples."
        },
        {
          "title": "Reject four disconnected arrangements",
          "text": "If x = 0, A–D is a double bridge and the left pair has no connection to the other four islands. If y = 0, C–F is a double bridge and the right pair is isolated. That removes (0,1), (0,2), (1,0) and (2,0). The remaining three pairs—(1,1), (1,2) and (2,1)—each produce one connected network.",
          "position": {
            "p": {
              "id": "lab-bridges-ladder-ambiguity",
              "size": 5,
              "islands": [
                {
                  "r": 0,
                  "c": 0,
                  "n": 2
                },
                {
                  "r": 0,
                  "c": 2,
                  "n": 3
                },
                {
                  "r": 0,
                  "c": 4,
                  "n": 2
                },
                {
                  "r": 4,
                  "c": 0,
                  "n": 2
                },
                {
                  "r": 4,
                  "c": 2,
                  "n": 3
                },
                {
                  "r": 4,
                  "c": 4,
                  "n": 2
                }
              ],
              "candidates": [
                {
                  "a": 0,
                  "b": 1
                },
                {
                  "a": 1,
                  "b": 2
                },
                {
                  "a": 3,
                  "b": 4
                },
                {
                  "a": 4,
                  "b": 5
                },
                {
                  "a": 0,
                  "b": 3
                },
                {
                  "a": 1,
                  "b": 4
                },
                {
                  "a": 2,
                  "b": 5
                }
              ]
            },
            "state": [
              [
                1
              ],
              [
                1
              ],
              [
                1
              ],
              [
                1
              ],
              [
                1
              ],
              [
                1
              ],
              [
                1
              ]
            ]
          },
          "caption": "One valid solution: x = y = 1, so all seven routes are single bridges."
        },
        {
          "title": "Show why connected does not mean unique",
          "text": "For (x,y) = (1,2), A–B and D–E are single, B–C and E–F are double, A–D is single, and B–E and C–F are absent. All six islands still connect through the left side. The reflected (2,1) layout is also valid. Thus the all-single layout is a solution, but the clues do not force it. Connectivity removes four candidates without choosing between the other three.",
          "position": {
            "p": {
              "id": "lab-bridges-ladder-ambiguity",
              "size": 5,
              "islands": [
                {
                  "r": 0,
                  "c": 0,
                  "n": 2
                },
                {
                  "r": 0,
                  "c": 2,
                  "n": 3
                },
                {
                  "r": 0,
                  "c": 4,
                  "n": 2
                },
                {
                  "r": 4,
                  "c": 0,
                  "n": 2
                },
                {
                  "r": 4,
                  "c": 2,
                  "n": 3
                },
                {
                  "r": 4,
                  "c": 4,
                  "n": 2
                }
              ],
              "candidates": [
                {
                  "a": 0,
                  "b": 1
                },
                {
                  "a": 1,
                  "b": 2
                },
                {
                  "a": 3,
                  "b": 4
                },
                {
                  "a": 4,
                  "b": 5
                },
                {
                  "a": 0,
                  "b": 3
                },
                {
                  "a": 1,
                  "b": 4
                },
                {
                  "a": 2,
                  "b": 5
                }
              ]
            },
            "state": [
              [
                1
              ],
              [
                2
              ],
              [
                1
              ],
              [
                2
              ],
              [
                1
              ],
              [
                0
              ],
              [
                0
              ]
            ]
          },
          "caption": "A second valid solution: x = 1, y = 2. Connection through A–D keeps the whole ladder in one network."
        }
      ],
      "wrongTurn": {
        "claim": "Every island total is right and all islands connect, so the all-single solution must be forced.",
        "whyItFails": "Those checks prove that the displayed layout is valid. They do not exclude the two other connected layouts with the same clues.",
        "correction": "To establish uniqueness, compare every valid layout or prove that each route has the same value in all of them."
      },
      "transfer": {
        "question": "Lower both middle clues B and E from 3 to 2, leaving the four corner clues unchanged. How many connected solutions remain?",
        "answer": "Now B–E = 2 − x − y, so x + y ≤ 2. Six count-valid pairs remain: (0,0), (0,1), (0,2), (1,0), (1,1) and (2,0). Any pair with x = 0 or y = 0 isolates a side pair. Only (1,1) connects all six islands: the six outer routes are single and the middle B–E route is absent. The changed puzzle has exactly one solution.",
        "position": {
          "p": {
            "id": "lab-bridges-ladder-transfer",
            "size": 5,
            "islands": [
              {
                "r": 0,
                "c": 0,
                "n": 2
              },
              {
                "r": 0,
                "c": 2,
                "n": 2
              },
              {
                "r": 0,
                "c": 4,
                "n": 2
              },
              {
                "r": 4,
                "c": 0,
                "n": 2
              },
              {
                "r": 4,
                "c": 2,
                "n": 2
              },
              {
                "r": 4,
                "c": 4,
                "n": 2
              }
            ],
            "candidates": [
              {
                "a": 0,
                "b": 1
              },
              {
                "a": 1,
                "b": 2
              },
              {
                "a": 3,
                "b": 4
              },
              {
                "a": 4,
                "b": 5
              },
              {
                "a": 0,
                "b": 3
              },
              {
                "a": 1,
                "b": 4
              },
              {
                "a": 2,
                "b": 5
              }
            ]
          },
          "state": [
            [
              1
            ],
            [
              1
            ],
            [
              1
            ],
            [
              1
            ],
            [
              1
            ],
            [
              0
            ],
            [
              1
            ]
          ]
        },
        "caption": "Transfer solution: all clues 2; the six outer routes form one cycle."
      },
      "takeaway": "Correct counts and connectivity establish validity. Uniqueness is a separate claim about every other possible layout.",
      "verification": {
        "method": "Enumerate all 3⁷ assignments on the seven routes; filter by all six island totals, then graph connectivity. Repeat with both middle clues lowered to 2.",
        "checks": [
          "7 count-valid layouts for clues 2,3,2 / 2,3,2",
          "3 connected layouts, so the original clues are ambiguous",
          "Changed clues all 2: 6 count-valid layouts, exactly 1 connected"
        ],
        "evidence": {
          "degreeValid": [
            [
              0,
              1,
              0,
              1,
              2,
              2,
              1
            ],
            [
              0,
              2,
              0,
              2,
              2,
              1,
              0
            ],
            [
              1,
              0,
              1,
              0,
              1,
              2,
              2
            ],
            [
              1,
              1,
              1,
              1,
              1,
              1,
              1
            ],
            [
              1,
              2,
              1,
              2,
              1,
              0,
              0
            ],
            [
              2,
              0,
              2,
              0,
              0,
              1,
              2
            ],
            [
              2,
              1,
              2,
              1,
              0,
              0,
              1
            ]
          ],
          "connected": [
            [
              1,
              1,
              1,
              1,
              1,
              1,
              1
            ],
            [
              1,
              2,
              1,
              2,
              1,
              0,
              0
            ],
            [
              2,
              1,
              2,
              1,
              0,
              0,
              1
            ]
          ],
          "transferDegrees": [
            2,
            2,
            2,
            2,
            2,
            2
          ],
          "transferConnected": [
            [
              1,
              1,
              1,
              1,
              1,
              0,
              1
            ]
          ]
        }
      },
      "choices": [
        {
          "id": "unique",
          "text": "Yes: the all-single layout is forced.",
          "correct": false,
          "explanation": "It is valid, but two other connected layouts satisfy exactly the same clues."
        },
        {
          "id": "three",
          "text": "No: three connected solutions remain.",
          "correct": true,
          "explanation": "The connected choices are (x,y) = (1,1), (1,2) and (2,1)."
        },
        {
          "id": "none",
          "text": "No connected solution exists.",
          "correct": false,
          "explanation": "The all-single layout already connects every island and meets each clue."
        }
      ],
      "studyId": "bridges-01"
    },
    {
      "id": "minefield-budget-beyond-frontier",
      "game": "mines",
      "title": "The safest square can be far from the clue",
      "summary": "Use the board’s total mine count to prove distant squares safe without pretending to know which nearby square is mined.",
      "question": "With one mine on the whole board, is R4C4 safe?",
      "boardSource": "workshop",
      "position": {
        "p": {
          "id": "lab-mines-global-total",
          "size": 4,
          "mines": [
            0,
            1,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "numbers": [
            1,
            0,
            1,
            0,
            1,
            1,
            1,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "mineCount": 1,
          "start": [
            1,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ]
        },
        "state": [
          1,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ]
      },
      "boardCaption": "A 4 × 4 constructed board with exactly 1 mine. Only R1C1 is revealed; its clue is 1. All other squares are hidden.",
      "setup": [
        "The total of one mine is part of the problem statement, not a count inferred from player flags. R1C1 is the only revealed square. Its three neighbours are R1C2, R2C1 and R2C2, so those three squares contain exactly one mine between them.",
        "Do not inspect the stored mine location when reasoning. We can decide the distant corner using only that revealed 1 and the whole-board total. The clue’s neighbouring squares remain genuinely unresolved."
      ],
      "steps": [
        {
          "title": "Reserve the entire mine budget",
          "text": "The three neighbours of R1C1 need one mine. The whole board contains one mine. Subtracting the required local mine from the total leaves zero mines for every square outside that three-square group and the revealed clue."
        },
        {
          "title": "Name what is proved and what is not",
          "text": "All 12 other hidden squares are safe, including R4C4. However, any one of R1C2, R2C1 or R2C2 could hold the mine. There are three complete mine placements compatible with the current information. A safe distant square and an unresolved nearby group can coexist."
        },
        {
          "title": "Choose a justified action",
          "text": "Reveal a proved-safe square such as R4C4 rather than placing an unsupported flag beside the 1. New revealed numbers may later distinguish the nearby candidates. A flag records a player’s belief; it does not supply a new mine constraint.",
          "position": {
            "p": {
              "id": "lab-mines-global-total",
              "size": 4,
              "mines": [
                0,
                1,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "numbers": [
                1,
                0,
                1,
                0,
                1,
                1,
                1,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "mineCount": 1,
              "start": [
                1,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ]
            },
            "state": [
              1,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              1
            ]
          },
          "caption": "After the proved-safe R4C4 is revealed. Its new 0 was not needed for the earlier safety proof."
        },
        {
          "title": "Change one fact and repeat the argument",
          "text": "If the board total were two mines, the neighbouring group would still contain exactly one. The second mine would lie in one of the 12 distant squares. There would be 3 × 12 = 36 compatible placements, and R4C4 would no longer be proved safe. The shape of the visible clue has not changed; the global budget has."
        }
      ],
      "wrongTurn": {
        "claim": "Only squares beside a revealed clue can be proved safe.",
        "whyItFails": "The total mine count applies to the entire board. Once the frontier requires the whole budget, every outside square is safe.",
        "correction": "Combine local clue requirements with the declared total, keeping flags separate from proved mines."
      },
      "transfer": {
        "question": "Keep the visible 1 but remove the whole-board mine total from the information supplied. Is the distant corner still guaranteed safe?",
        "answer": "No. A placement with the nearby required mine and an additional mine at R4C4 satisfies the only visible clue. A placement without that distant mine also satisfies it. The total was essential to the safety proof."
      },
      "takeaway": "State the full information used in a deduction. Changing one global constraint can reverse a local-looking conclusion.",
      "verification": {
        "method": "Enumerate all hidden-cell assignments consistent with the revealed clue and stated mine total.",
        "checks": [
          "Total 1: exactly 3 compatible placements",
          "Every distant square safe across all 3",
          "Total 2: 36 compatible placements; each distant square mined in 3"
        ],
        "evidence": {
          "revealed": [
            0
          ],
          "frontier": [
            1,
            4,
            5
          ],
          "totalOneCount": 3,
          "totalTwoCount": 36
        }
      },
      "choices": [
        {
          "id": "safe",
          "text": "Yes: R4C4 is proved safe.",
          "correct": true,
          "explanation": "The only mine must be beside R1C1, leaving no mine for the distant corner."
        },
        {
          "id": "unknown",
          "text": "No conclusion is possible.",
          "correct": false,
          "explanation": "That would be true without the global total. The stated total settles all distant squares."
        },
        {
          "id": "mine",
          "text": "R4C4 must be the mine.",
          "correct": false,
          "explanation": "That would leave no mine beside the revealed 1."
        }
      ],
      "studyId": "mines-01"
    },
    {
      "id": "cross-lights-proving-shortest",
      "game": "lights",
      "title": "A working press plan is not yet a shortest plan",
      "summary": "Exhaust all 32 first-row choices to compare four different solutions to the same diagonal-light board.",
      "question": "What is the fewest number of presses needed?",
      "boardSource": "workshop",
      "position": {
        "p": {
          "id": "lab-lights-shortest",
          "size": 5,
          "start": [
            1,
            0,
            0,
            0,
            0,
            0,
            1,
            0,
            0,
            0,
            0,
            0,
            1,
            0,
            0,
            0,
            0,
            0,
            1,
            0,
            0,
            0,
            0,
            0,
            1
          ]
        },
        "state": [
          1,
          0,
          0,
          0,
          0,
          0,
          1,
          0,
          0,
          0,
          0,
          0,
          1,
          0,
          0,
          0,
          0,
          0,
          1,
          0,
          0,
          0,
          0,
          0,
          1
        ]
      },
      "boardCaption": "Only the five main-diagonal squares are lit. A press toggles itself and its side neighbours; it never toggles diagonals.",
      "setup": [
        "Pressing the five lit diagonal squares clears this particular board. That gives an upper bound of five presses: we know a five-press finish exists. To call it shortest, we must also exclude every shorter possibility.",
        "This investigation uses the ordinary 5 × 5 cross rule and the goal of all lights off. Press order does not alter the final pattern, and pressing a square twice cancels its effect. Therefore a shortest plan presses each chosen square once."
      ],
      "steps": [
        {
          "title": "Verify the five-press candidate",
          "text": "Press R1C1, R2C2, R3C3, R4C4 and R5C5. Each diagonal square is toggled once. Every side-adjacent square between neighbouring diagonal presses is toggled twice, so it returns to off. All other squares are untouched. The whole board is dark.",
          "position": {
            "p": {
              "id": "lab-lights-shortest",
              "size": 5,
              "start": [
                1,
                0,
                0,
                0,
                0,
                0,
                1,
                0,
                0,
                0,
                0,
                0,
                1,
                0,
                0,
                0,
                0,
                0,
                1,
                0,
                0,
                0,
                0,
                0,
                1
              ]
            },
            "state": [
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0
            ]
          },
          "caption": "All five diagonal buttons pressed once: every light is off."
        },
        {
          "title": "Reduce all plans to 32 cases",
          "text": "There are 2⁵ = 32 subsets of buttons in the first row. Once a subset is chosen, each lit square in row 1 forces the press directly below it. Repeat down the board. A completed first row cannot be affected by presses below row 2, so the chase makes every later row of presses compulsory for that first-row choice."
        },
        {
          "title": "Keep only chases that finish",
          "text": "Exactly four first-row subsets yield an all-dark board. They are {C1}, {C3,C5}, {C2,C4,C5} and {C1,C2,C3,C4}. Their complete chase plans contain 5, 13, 13 and 21 presses respectively. The other 28 first-row choices leave at least one light in the final row."
        },
        {
          "title": "Turn enumeration into a minimum proof",
          "text": "Every press set has one of those 32 first rows, and the rest of a successful set is determined by chasing. We have therefore covered every parity-distinct solution, not just a sample of routes. The smallest successful set contains five presses. Repeated presses cannot improve it because deleting a repeated pair leaves the same final board with fewer presses."
        }
      ],
      "wrongTurn": {
        "claim": "The first working chase must be the shortest one.",
        "whyItFails": "A solver that stops at the first solution does not automatically compare lengths. On other boards, a later first-row choice may use fewer presses.",
        "correction": "Count every successful chase when claiming a minimum, and explain why the enumeration covers all press sets."
      },
      "transfer": {
        "question": "In a mathematical toggle experiment, append two presses of R3C3 to the five-press solution. Is the resulting seven-press sequence shortest? (The live game may stop accepting presses when the board is solved.)",
        "answer": "The added pair leaves the final mathematical light pattern unchanged: two identical toggles cancel. Removing the pair gives the original five-press solution, so the seven-press sequence is not shortest. This compares toggle sequences, not controls available after a game has ended."
      },
      "takeaway": "A constructive route proves that a goal is reachable. A complete covering argument is what turns a good route into an optimality proof.",
      "verification": {
        "method": "Enumerate all 32 first-row masks, chase each, and apply every returned press plan independently.",
        "checks": [
          "4 successful masks: 1, 20, 26, 15",
          "Solution lengths: 5, 13, 13, 21",
          "All 4 plans finish dark"
        ],
        "evidence": {
          "plans": [
            {
              "top": 1,
              "cells": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "presses": [
                0,
                6,
                12,
                18,
                24
              ],
              "solved": true
            },
            {
              "top": 20,
              "cells": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "presses": [
                2,
                4,
                5,
                6,
                7,
                9,
                12,
                15,
                17,
                18,
                19,
                20,
                22
              ],
              "solved": true
            },
            {
              "top": 26,
              "cells": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "presses": [
                1,
                3,
                4,
                6,
                10,
                11,
                12,
                13,
                14,
                18,
                20,
                21,
                23
              ],
              "solved": true
            },
            {
              "top": 15,
              "cells": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "presses": [
                0,
                1,
                2,
                3,
                5,
                6,
                7,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                17,
                18,
                19,
                21,
                22,
                23,
                24
              ],
              "solved": true
            }
          ],
          "minimum": 5
        }
      },
      "choices": [
        {
          "id": "three",
          "text": "Three presses.",
          "correct": false,
          "explanation": "The complete first-row enumeration contains no solution with fewer than five presses."
        },
        {
          "id": "five",
          "text": "Five presses.",
          "correct": true,
          "explanation": "The diagonal plan works, and all four possible press sets have lengths 5, 13, 13 or 21."
        },
        {
          "id": "unknown",
          "text": "A working plan cannot ever be proved shortest.",
          "correct": false,
          "explanation": "Finite exhaustive coverage can prove a minimum for this exact board."
        }
      ],
      "studyId": "lights-05"
    },
    {
      "id": "sliding-tiles-equal-scores",
      "game": "slide",
      "title": "Two moves improve the score. Only one stays on the shortest route.",
      "summary": "Compare exact distances with a useful but incomplete tile-distance score.",
      "question": "Both tile 4 and tile 8 reduce the Manhattan total from 6 to 5. Are they equally good first moves?",
      "boardSource": "strategy",
      "position": {
        "state": {
          "family": "slide",
          "variant": "classic",
          "rows": 4,
          "cols": 4,
          "tiles": [
            1,
            2,
            7,
            3,
            5,
            6,
            4,
            0,
            9,
            10,
            11,
            8,
            13,
            14,
            15,
            12
          ],
          "blank": 7,
          "moves": 0,
          "status": "ready"
        }
      },
      "boardCaption": "The blank is R2C4. Tiles 3, 4 and 8 are the three legal neighbours. The goal is 1–15 followed by the blank.",
      "setup": [
        "The Manhattan total adds each numbered tile’s horizontal and vertical distance from its goal square. It ignores the blank. Since one slide moves one numbered tile one square, this total is a lower bound on the number of remaining moves.",
        "In this reachable position the total is six. Tile 4 at R2C3 can move right, and tile 8 at R3C4 can move up. Each appears to improve the same score by one. We will compare what space those moves leave for the next part of the route."
      ],
      "steps": [
        {
          "title": "Follow tile 4’s branch",
          "text": "Slide tiles 4, 7, 3, 4, 8 and 12, in that order. Their source squares are R2C3, R1C3, R1C4, R2C4, R3C4 and R4C4. This six-move route reaches the goal. The lower bound was six, so the route is shortest without needing a broader search.",
          "position": {
            "state": {
              "family": "slide",
              "variant": "classic",
              "rows": 4,
              "cols": 4,
              "tiles": [
                1,
                2,
                7,
                3,
                5,
                6,
                0,
                4,
                9,
                10,
                11,
                8,
                13,
                14,
                15,
                12
              ],
              "blank": 6,
              "moves": 1,
              "status": "playing"
            }
          },
          "caption": "Tile 4 moved right: five moves remain on a shortest finish."
        },
        {
          "title": "Try tile 8 first",
          "text": "Sliding tile 8 up places that tile in its goal square immediately, but leaves the blank at R3C4. The upper-right group containing 7, 3 and 4 still needs to be rearranged. An exhaustive search from the goal finds that this new position is seven moves away. Including the initial slide, this choice needs at least eight moves in total.",
          "position": {
            "state": {
              "family": "slide",
              "variant": "classic",
              "rows": 4,
              "cols": 4,
              "tiles": [
                1,
                2,
                7,
                3,
                5,
                6,
                4,
                8,
                9,
                10,
                11,
                0,
                13,
                14,
                15,
                12
              ],
              "blank": 11,
              "moves": 1,
              "status": "playing"
            }
          },
          "caption": "Tile 8 moved up: the same Manhattan score of 5, but seven moves remain."
        },
        {
          "title": "Compare the quantities honestly",
          "text": "After tile 4: Manhattan total 5, exact remaining distance 5. After tile 8: Manhattan total 5, exact remaining distance 7. The same lower bound can belong to positions with different true distances. The score has not become wrong; it simply does not encode the interactions caused by routing the blank."
        },
        {
          "title": "Keep the useful part of the heuristic",
          "text": "The score is still valuable for ruling out a shorter finish: a position with total 5 cannot be solved in four moves. What fails is the extra assumption that every score-reducing move must begin a shortest route. When choices tie, examine the next required blank positions or use a bounded exact search."
        }
      ],
      "wrongTurn": {
        "claim": "Any move that reduces Manhattan distance is equally efficient.",
        "whyItFails": "Tile 8 reduces the score but leaves a seven-move remainder, while tile 4 leaves a five-move remainder.",
        "correction": "Use Manhattan distance as a lower bound; compare actual routes before treating a tied score as a tied decision."
      },
      "transfer": {
        "question": "What about sliding tile 3 down from R1C4 as the first move?",
        "answer": "Its Manhattan total becomes 7, and the exact remaining distance is 7. That branch also requires at least eight moves including the first move. The tile-4 route is the only shortest first choice on this board."
      },
      "takeaway": "A useful evaluation number can omit the interaction that decides between two moves.",
      "verification": {
        "method": "Breadth-first enumeration from the exact goal through distance 13, checking all neighbours of this distance-6 state.",
        "checks": [
          "31,044 unique states visited through distance 13",
          "Start distance 6 and Manhattan total 6",
          "After tile 4: exact 5; after tile 8: exact 7; after tile 3: exact 7"
        ],
        "evidence": {
          "state": {
            "family": "slide",
            "variant": "classic",
            "rows": 4,
            "cols": 4,
            "tiles": [
              1,
              2,
              7,
              3,
              5,
              6,
              4,
              0,
              9,
              10,
              11,
              8,
              13,
              14,
              15,
              12
            ],
            "blank": 7,
            "moves": 0,
            "status": "ready"
          },
          "d": 6,
          "route": [
            6,
            2,
            3,
            7,
            11,
            15
          ],
          "manhattan": 6,
          "options": [
            {
              "action": 3,
              "tile": 3,
              "manhattan": 7,
              "exact": 7
            },
            {
              "action": 11,
              "tile": 8,
              "manhattan": 5,
              "exact": 7
            },
            {
              "action": 6,
              "tile": 4,
              "manhattan": 5,
              "exact": 5
            }
          ],
          "searchStates": 31044
        }
      },
      "choices": [
        {
          "id": "equal",
          "text": "Yes: both have the same remaining distance.",
          "correct": false,
          "explanation": "They share a lower bound of 5, but their exact remaining distances are 5 and 7."
        },
        {
          "id": "four",
          "text": "No: tile 4 begins the shorter finish.",
          "correct": true,
          "explanation": "Tile 4 permits a six-move total finish; tile 8 requires at least eight moves in total."
        },
        {
          "id": "eight",
          "text": "No: tile 8 is better because it reaches its goal.",
          "correct": false,
          "explanation": "Placing tile 8 immediately costs access to the upper-right rearrangement."
        }
      ],
      "studyId": "slide-03"
    },
    {
      "id": "peg-choose-the-finish",
      "game": "peg",
      "title": "One peg anywhere is possible. One peg in the centre is not.",
      "summary": "Separate the actual winning condition from a familiar extra condition, then enumerate every reachable finishing hole.",
      "question": "Can these seven pegs finish with their only peg at R3C3?",
      "boardSource": "strategy",
      "position": {
        "state": {
          "cells": [
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            1,
            0,
            1,
            1,
            0,
            0,
            0,
            1,
            1,
            1,
            0,
            0,
            0,
            1,
            0,
            0
          ],
          "rows": 5,
          "cols": 5,
          "variant": "classic",
          "status": "playing",
          "moves": 0,
          "family": "peg",
          "target": 12,
          "selected": null
        }
      },
      "boardCaption": "Seven pegs occupy R2C5, R3C2, R3C3, R4C2, R4C3, R4C4 and R5C3 on the full 5 × 5 board.",
      "setup": [
        "Playfield’s classic goal is one peg anywhere on the board. A centre finish is a different, stricter challenge. The centre begins occupied here, but that does not establish that the last peg can remain there.",
        "Every legal orthogonal jump removes exactly one peg. A successful finish from seven pegs therefore takes six jumps. We will use that count to check a route, then distinguish the existence of a successful route from the set of possible finishing locations."
      ],
      "steps": [
        {
          "title": "Play five shared setup jumps",
          "text": "Jump R3C2→R3C4, R4C4→R2C4, R2C5→R2C3, R5C3→R3C3, and R2C3→R4C3. Each jump has an occupied middle square and empty landing square when made. The two remaining pegs are now R4C2 and R4C3.",
          "position": {
            "state": {
              "cells": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                1,
                1,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "rows": 5,
              "cols": 5,
              "variant": "classic",
              "status": "playing",
              "moves": 5,
              "family": "peg",
              "target": 12,
              "selected": null
            }
          },
          "caption": "After five jumps: the remaining pegs at R4C2 and R4C3 allow two final jumps."
        },
        {
          "title": "Choose either legal final jump",
          "text": "From those two pegs, R4C3 can jump left over R4C2 to R4C1. Alternatively, R4C2 can jump right over R4C3 to R4C4. Both are six-jump finishes with one peg. Thus at least two finishing holes are reachable, and neither is the centre.",
          "position": {
            "state": {
              "cells": [
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                1,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "rows": 5,
              "cols": 5,
              "variant": "classic",
              "status": "won",
              "moves": 6,
              "family": "peg",
              "target": 12,
              "selected": null
            }
          },
          "caption": "One valid finish: a single peg at R4C1."
        },
        {
          "title": "Ask the stronger question correctly",
          "text": "The two displayed routes do not by themselves prove that a centre finish is impossible. To make that claim, enumerate every legal continuation from the starting position, merging repeated occupancy states. There are 65 distinct reachable states in total. Their only one-peg states occupy R4C1 or R4C4."
        },
        {
          "title": "Use the actual win condition",
          "text": "The exhaustive result rules out a centre finish on this fixed starting board. It does not make the board unsolvable under the normal one-peg-anywhere rule: the two routes already solve it. When checking a challenge, write its finish condition explicitly instead of importing a stricter goal from another peg-solitaire variant."
        }
      ],
      "wrongTurn": {
        "claim": "The centre starts occupied, so a successful route can be arranged to leave that peg there.",
        "whyItFails": "The current centre peg may be jumped or moved, and its presence is not an invariant. The complete reachable-state search contains no one-peg centre state.",
        "correction": "Choose either reachable finishing hole for the classic goal; treat a centre requirement as a separate challenge that needs its own proof."
      },
      "transfer": {
        "question": "Reflect the entire starting peg position left to right, so column C becomes column 6 − C. Which one-peg finishing holes are now possible? Can the centre become a finish?",
        "answer": "Every legal jump has a reflected legal jump, and reflecting twice restores the original route. The original finishing holes R4C1 and R4C4 therefore map exactly to R4C5 and R4C2. There are no additional finishes: reflecting any supposed extra route back would contradict the original complete result. R3C3 maps to itself, so a centre finish remains impossible."
      },
      "takeaway": "A route proves one destination is reachable. Ruling out a destination requires evidence covering every route; here, exhaustive search supplies it.",
      "verification": {
        "method": "Enumerate every reachable occupancy state and replay both six-jump routes.",
        "checks": [
          "65 distinct reachable states",
          "Only one-peg holes: R4C1 and R4C4",
          "Both supplied routes use exactly 6 legal jumps",
          "Horizontal reflection: only R4C2 and R4C5 finish; centre remains impossible"
        ],
        "evidence": {
          "start": {
            "cells": [
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              1,
              0,
              1,
              1,
              0,
              0,
              0,
              1,
              1,
              1,
              0,
              0,
              0,
              1,
              0,
              0
            ],
            "rows": 5,
            "cols": 5,
            "variant": "classic",
            "status": "playing",
            "moves": 0,
            "family": "peg",
            "target": 12,
            "selected": null
          },
          "finalHoles": [
            15,
            18
          ],
          "routes": {
            "15": [
              {
                "from": 11,
                "to": 13
              },
              {
                "from": 18,
                "to": 8
              },
              {
                "from": 9,
                "to": 7
              },
              {
                "from": 22,
                "to": 12
              },
              {
                "from": 7,
                "to": 17
              },
              {
                "from": 17,
                "to": 15
              }
            ],
            "18": [
              {
                "from": 11,
                "to": 13
              },
              {
                "from": 18,
                "to": 8
              },
              {
                "from": 9,
                "to": 7
              },
              {
                "from": 22,
                "to": 12
              },
              {
                "from": 7,
                "to": 17
              },
              {
                "from": 16,
                "to": 18
              }
            ]
          },
          "states": 65,
          "legal": [
            {
              "from": 11,
              "to": 21
            },
            {
              "from": 11,
              "to": 13
            },
            {
              "from": 12,
              "to": 10
            },
            {
              "from": 16,
              "to": 6
            },
            {
              "from": 17,
              "to": 7
            },
            {
              "from": 17,
              "to": 15
            },
            {
              "from": 17,
              "to": 19
            }
          ],
          "explanation": "Seven pegs require six jumps. Complete enumeration visits 65 distinct reachable occupancy states. Exactly two one-peg finishes exist: R4C1 and R4C4. The initially occupied centre R3C3 cannot be the final peg."
        }
      },
      "choices": [
        {
          "id": "centre",
          "text": "Yes: the centre peg can be preserved.",
          "correct": false,
          "explanation": "No one-peg centre state appears among all 65 reachable states."
        },
        {
          "id": "elsewhere",
          "text": "No, but one-peg finishes elsewhere exist.",
          "correct": true,
          "explanation": "The only finishing holes are R4C1 and R4C4."
        },
        {
          "id": "none",
          "text": "No one-peg finish exists anywhere.",
          "correct": false,
          "explanation": "Both displayed six-jump routes reach one peg."
        }
      ],
      "studyId": "peg-07"
    },
    {
      "id": "four-the-stacked-threat",
      "game": "four",
      "title": "Blocking the next threat builds the one above it",
      "summary": "Investigate a forced loss that has no immediate winning move on the starting board and no two-column fork.",
      "question": "Orange moves next. Can Orange avoid a forced Violet win over the next four plies (one player’s drop is one ply)?",
      "boardSource": "strategy",
      "position": {
        "state": {
          "board": [
            "",
            "R",
            "",
            "",
            "",
            "R",
            "",
            "",
            "R",
            "",
            "",
            "",
            "Y",
            "",
            "",
            "Y",
            "",
            "",
            "",
            "Y",
            "",
            "",
            "R",
            "Y",
            "",
            "Y",
            "Y",
            "",
            "",
            "Y",
            "R",
            "",
            "Y",
            "R",
            "R",
            "",
            "R",
            "Y",
            "",
            "R",
            "R",
            "Y"
          ],
          "current": "R",
          "status": "playing",
          "moves": 20,
          "repetitions": {}
        }
      },
      "boardCaption": "Orange to move after 20 legal drops. Columns 2 and 6 are full; columns 1, 3, 4, 5 and 7 are available. Column 4 is empty.",
      "setup": [
        "Neither player currently has an immediate winning drop. That makes the board look less urgent than a visible three-in-a-row with an available landing square. The threat is hidden in the support cells that a player must fill before a higher square becomes playable.",
        "Rows are numbered from the top, so the bottom square of column 4 is R6C4. Violet already occupies R6C3, R4C5 and R3C6: adding Violet at R5C4 would complete a diagonal. Violet also occupies R4C3, R4C5 and R4C6: adding Violet at R4C4 would complete a horizontal four."
      ],
      "steps": [
        {
          "title": "If Orange plays away from column 4",
          "text": "For any initial Orange drop in column 1, 3, 5 or 7, Violet drops in column 4 at R6C4. This is a supporting move, not the win itself. It makes R5C4 playable on the next turn. Violet now threatens the diagonal R6C3–R5C4–R4C5–R3C6.",
          "position": {
            "state": {
              "board": [
                "",
                "R",
                "",
                "",
                "",
                "R",
                "",
                "",
                "R",
                "",
                "",
                "",
                "Y",
                "",
                "",
                "Y",
                "",
                "",
                "",
                "Y",
                "",
                "",
                "R",
                "Y",
                "",
                "Y",
                "Y",
                "",
                "",
                "Y",
                "R",
                "",
                "Y",
                "R",
                "R",
                "R",
                "R",
                "Y",
                "Y",
                "R",
                "R",
                "Y"
              ],
              "current": "R",
              "status": "playing",
              "moves": 22,
              "repetitions": {
                "Y:.R....R...R....Y...Y....Y...R.Y..Y.Y...Y.R..Y.R.R.R.R.Y..R.R.Y": 1,
                "R:.R....R...R....Y...Y....Y...R.Y..Y.Y...Y.R..Y.R.R.R.R.Y.Y.R.R.Y": 1
              }
            }
          },
          "caption": "Example branch: Orange C1, Violet C4. Orange faces the R5C4 diagonal threat."
        },
        {
          "title": "Watch the forced block support another win",
          "text": "Orange has no immediate winning escape after that supporting move. If Orange plays outside column 4, Violet takes R5C4 and completes the diagonal. If Orange blocks by occupying R5C4, that token makes R4C4 playable. Violet then drops at R4C4 to complete the horizontal line R4C3–R4C4–R4C5–R4C6.",
          "position": {
            "state": {
              "board": [
                "",
                "R",
                "",
                "",
                "",
                "R",
                "",
                "",
                "R",
                "",
                "",
                "",
                "Y",
                "",
                "",
                "Y",
                "",
                "",
                "",
                "Y",
                "",
                "",
                "R",
                "Y",
                "Y",
                "Y",
                "Y",
                "",
                "",
                "Y",
                "R",
                "R",
                "Y",
                "R",
                "R",
                "R",
                "R",
                "Y",
                "Y",
                "R",
                "R",
                "Y"
              ],
              "current": "Y",
              "status": "won",
              "moves": 24,
              "repetitions": {
                "Y:.R....R...R....Y...Y....Y...R.Y..Y.Y...Y.R..Y.R.R.R.R.Y..R.R.Y": 1,
                "R:.R....R...R....Y...Y....Y...R.Y..Y.Y...Y.R..Y.R.R.R.R.Y.Y.R.R.Y": 1,
                "Y:.R....R...R....Y...Y....Y...R.Y..Y.Y...Y.R.R.Y.R.R.R.R.Y.Y.R.R.Y": 1
              },
              "winner": "Y"
            }
          },
          "caption": "Orange blocked in C4, supporting Violet’s winning R4C4 drop."
        },
        {
          "title": "Check Orange’s remaining first move",
          "text": "Suppose Orange initially plays column 4, occupying R6C4 itself. Violet can wait by dropping in column 1. The same diagonal threat at R5C4 now demands Orange’s block. Playing elsewhere allows the diagonal; blocking R5C4 supports the horizontal win at R4C4. Starting in the critical column therefore does not escape the ladder.",
          "position": {
            "state": {
              "board": [
                "",
                "R",
                "",
                "",
                "",
                "R",
                "",
                "",
                "R",
                "",
                "",
                "",
                "Y",
                "",
                "",
                "Y",
                "",
                "",
                "",
                "Y",
                "",
                "",
                "R",
                "Y",
                "",
                "Y",
                "Y",
                "",
                "",
                "Y",
                "R",
                "",
                "Y",
                "R",
                "R",
                "Y",
                "R",
                "Y",
                "R",
                "R",
                "R",
                "Y"
              ],
              "current": "R",
              "status": "playing",
              "moves": 22,
              "repetitions": {
                "Y:.R....R...R....Y...Y....Y...R.Y..Y.Y...Y.R..Y.R.R..R.Y.R.R.R.Y": 1,
                "R:.R....R...R....Y...Y....Y...R.Y..Y.Y...Y.R..Y.R.R.Y.R.Y.R.R.R.Y": 1
              }
            }
          },
          "caption": "Alternative start: Orange C4, Violet C1. Orange still faces the same stacked threats."
        },
        {
          "title": "Account for every defensive branch",
          "text": "The proof covers all five legal Orange first moves. After the selected Violet reply, all five legal Orange continuations were checked. Each of those 25 branches has a winning Violet drop, giving a forced win by the fourth ply from the start. This is a bounded tactical proof of this position, not a general claim that every pair of stacked threats wins."
        }
      ],
      "wrongTurn": {
        "claim": "With no immediate opposing win, Orange can safely improve another part of the board.",
        "whyItFails": "Violet can create a threat whose required defensive token supports a second winning square directly above it. An immediate-win scan does not see the complete sequence.",
        "correction": "Inspect the landing heights of future threats. Blocking a lower square can make a higher winning square playable for the opponent."
      },
      "transfer": {
        "question": "In a constructed variation, change the bottom-row token R6C3 from Violet to Orange and keep Orange to move. Does the original four-ply loss still apply?",
        "answer": "No. Orange can drop in column 4 at R6C4 and immediately connect Orange tokens across R6C2–R6C6. That wins the game before Violet can build the support ladder. The original proof checked that Orange had no immediate winning escape; the changed token invalidates that condition. This is a supplied counterfactual board for reasoning, not a claim that the recorded opening history reaches it.",
        "position": {
          "state": {
            "board": [
              "",
              "R",
              "",
              "",
              "",
              "R",
              "",
              "",
              "R",
              "",
              "",
              "",
              "Y",
              "",
              "",
              "Y",
              "",
              "",
              "",
              "Y",
              "",
              "",
              "R",
              "Y",
              "",
              "Y",
              "Y",
              "",
              "",
              "Y",
              "R",
              "",
              "Y",
              "R",
              "R",
              "",
              "R",
              "R",
              "",
              "R",
              "R",
              "Y"
            ],
            "current": "R",
            "status": "playing",
            "moves": 20,
            "repetitions": {}
          }
        },
        "caption": "Constructed variation: R6C3 is now Orange. Orange has an immediate winning drop in column 4."
      },
      "takeaway": "Count the support beneath a threat as part of the tactic. Two threats in one column can work sequentially even when they cannot be played at the same height.",
      "verification": {
        "method": "Replay the supplied 20-drop history; check no initial immediate wins; validate a complete four-ply winning certificate against every Orange reply.",
        "checks": [
          "5 legal Orange first moves",
          "No initial immediate winning drop for either side",
          "25 defensive branches end with a Violet winning drop",
          "Constructed R6C3→Orange variation: only immediate Orange win is column 4"
        ],
        "evidence": {
          "start": {
            "board": [
              "",
              "R",
              "",
              "",
              "",
              "R",
              "",
              "",
              "R",
              "",
              "",
              "",
              "Y",
              "",
              "",
              "Y",
              "",
              "",
              "",
              "Y",
              "",
              "",
              "R",
              "Y",
              "",
              "Y",
              "Y",
              "",
              "",
              "Y",
              "R",
              "",
              "Y",
              "R",
              "R",
              "",
              "R",
              "Y",
              "",
              "R",
              "R",
              "Y"
            ],
            "current": "R",
            "status": "playing",
            "moves": 20,
            "repetitions": {}
          },
          "history": [
            1,
            6,
            6,
            1,
            5,
            2,
            5,
            5,
            2,
            5,
            1,
            2,
            4,
            1,
            1,
            5,
            5,
            4,
            1,
            4
          ],
          "depth": 4,
          "proof": {
            "player": "R",
            "branches": [
              {
                "col": 1,
                "next": {
                  "player": "Y",
                  "branches": [
                    {
                      "col": 4,
                      "next": {
                        "player": "R",
                        "branches": [
                          {
                            "col": 1,
                            "next": {
                              "player": "Y",
                              "branches": [
                                {
                                  "col": 4,
                                  "next": {
                                    "winner": "Y"
                                  }
                                }
                              ]
                            }
                          },
                          {
                            "col": 3,
                            "next": {
                              "player": "Y",
                              "branches": [
                                {
                                  "col": 4,
                                  "next": {
                                    "winner": "Y"
                                  }
                                }
                              ]
                            }
                          },
                          {
                            "col": 4,
                            "next": {
                              "player": "Y",
                              "branches": [
                                {
                                  "col": 4,
                                  "next": {
                                    "winner": "Y"
                                  }
                                }
                              ]
                            }
                          },
                          {
                            "col": 5,
                            "next": {
                              "player": "Y",
                              "branches": [
                                {
                                  "col": 4,
                                  "next": {
                                    "winner": "Y"
                                  }
                                }
                              ]
                            }
                          },
                          {
                            "col": 7,
                            "next": {
                              "player": "Y",
                              "branches": [
                                {
                                  "col": 4,
                                  "next": {
                                    "winner": "Y"
                                  }
                                }
                              ]
                            }
                          }
                        ]
                      }
                    }
                  ]
                }
              },
              {
                "col": 3,
                "next": {
                  "player": "Y",
                  "branches": [
                    {
                      "col": 4,
                      "next": {
                        "player": "R",
                        "branches": [
                          {
                            "col": 1,
                            "next": {
                              "player": "Y",
                              "branches": [
                                {
                                  "col": 4,
                                  "next": {
                                    "winner": "Y"
                                  }
                                }
                              ]
                            }
                          },
                          {
                            "col": 3,
                            "next": {
                              "player": "Y",
                              "branches": [
                                {
                                  "col": 4,
                                  "next": {
                                    "winner": "Y"
                                  }
                                }
                              ]
                            }
                          },
                          {
                            "col": 4,
                            "next": {
                              "player": "Y",
                              "branches": [
                                {
                                  "col": 4,
                                  "next": {
                                    "winner": "Y"
                                  }
                                }
                              ]
                            }
                          },
                          {
                            "col": 5,
                            "next": {
                              "player": "Y",
                              "branches": [
                                {
                                  "col": 4,
                                  "next": {
                                    "winner": "Y"
                                  }
                                }
                              ]
                            }
                          },
                          {
                            "col": 7,
                            "next": {
                              "player": "Y",
                              "branches": [
                                {
                                  "col": 4,
                                  "next": {
                                    "winner": "Y"
                                  }
                                }
                              ]
                            }
                          }
                        ]
                      }
                    }
                  ]
                }
              },
              {
                "col": 4,
                "next": {
                  "player": "Y",
                  "branches": [
                    {
                      "col": 1,
                      "next": {
                        "player": "R",
                        "branches": [
                          {
                            "col": 1,
                            "next": {
                              "player": "Y",
                              "branches": [
                                {
                                  "col": 4,
                                  "next": {
                                    "winner": "Y"
                                  }
                                }
                              ]
                            }
                          },
                          {
                            "col": 3,
                            "next": {
                              "player": "Y",
                              "branches": [
                                {
                                  "col": 4,
                                  "next": {
                                    "winner": "Y"
                                  }
                                }
                              ]
                            }
                          },
                          {
                            "col": 4,
                            "next": {
                              "player": "Y",
                              "branches": [
                                {
                                  "col": 4,
                                  "next": {
                                    "winner": "Y"
                                  }
                                }
                              ]
                            }
                          },
                          {
                            "col": 5,
                            "next": {
                              "player": "Y",
                              "branches": [
                                {
                                  "col": 4,
                                  "next": {
                                    "winner": "Y"
                                  }
                                }
                              ]
                            }
                          },
                          {
                            "col": 7,
                            "next": {
                              "player": "Y",
                              "branches": [
                                {
                                  "col": 4,
                                  "next": {
                                    "winner": "Y"
                                  }
                                }
                              ]
                            }
                          }
                        ]
                      }
                    }
                  ]
                }
              },
              {
                "col": 5,
                "next": {
                  "player": "Y",
                  "branches": [
                    {
                      "col": 4,
                      "next": {
                        "player": "R",
                        "branches": [
                          {
                            "col": 1,
                            "next": {
                              "player": "Y",
                              "branches": [
                                {
                                  "col": 4,
                                  "next": {
                                    "winner": "Y"
                                  }
                                }
                              ]
                            }
                          },
                          {
                            "col": 3,
                            "next": {
                              "player": "Y",
                              "branches": [
                                {
                                  "col": 4,
                                  "next": {
                                    "winner": "Y"
                                  }
                                }
                              ]
                            }
                          },
                          {
                            "col": 4,
                            "next": {
                              "player": "Y",
                              "branches": [
                                {
                                  "col": 4,
                                  "next": {
                                    "winner": "Y"
                                  }
                                }
                              ]
                            }
                          },
                          {
                            "col": 5,
                            "next": {
                              "player": "Y",
                              "branches": [
                                {
                                  "col": 4,
                                  "next": {
                                    "winner": "Y"
                                  }
                                }
                              ]
                            }
                          },
                          {
                            "col": 7,
                            "next": {
                              "player": "Y",
                              "branches": [
                                {
                                  "col": 4,
                                  "next": {
                                    "winner": "Y"
                                  }
                                }
                              ]
                            }
                          }
                        ]
                      }
                    }
                  ]
                }
              },
              {
                "col": 7,
                "next": {
                  "player": "Y",
                  "branches": [
                    {
                      "col": 4,
                      "next": {
                        "player": "R",
                        "branches": [
                          {
                            "col": 1,
                            "next": {
                              "player": "Y",
                              "branches": [
                                {
                                  "col": 4,
                                  "next": {
                                    "winner": "Y"
                                  }
                                }
                              ]
                            }
                          },
                          {
                            "col": 3,
                            "next": {
                              "player": "Y",
                              "branches": [
                                {
                                  "col": 4,
                                  "next": {
                                    "winner": "Y"
                                  }
                                }
                              ]
                            }
                          },
                          {
                            "col": 4,
                            "next": {
                              "player": "Y",
                              "branches": [
                                {
                                  "col": 4,
                                  "next": {
                                    "winner": "Y"
                                  }
                                }
                              ]
                            }
                          },
                          {
                            "col": 5,
                            "next": {
                              "player": "Y",
                              "branches": [
                                {
                                  "col": 4,
                                  "next": {
                                    "winner": "Y"
                                  }
                                }
                              ]
                            }
                          },
                          {
                            "col": 7,
                            "next": {
                              "player": "Y",
                              "branches": [
                                {
                                  "col": 4,
                                  "next": {
                                    "winner": "Y"
                                  }
                                }
                              ]
                            }
                          }
                        ]
                      }
                    }
                  ]
                }
              }
            ]
          },
          "explanation": "Column 4 is empty but dangerous at successive heights. After Orange chooses 1,3,5 or7, Violet plays 4. Orange must block Violet’s next landing in 4, but that block supports Violet’s winning row-four drop in the same column. If Orange starts in 4, Violet can play 1 as a waiting move; the identical ladder now forces Orange’s block and Violet’s win. The complete certificate covers all five legal first moves and all five Orange continuations after each selected Violet reply, 25 terminal branches, with no Orange winning escape.",
          "transfer": {
            "changedCell": 37,
            "fromPlayer": "Y",
            "toPlayer": "R",
            "current": "R",
            "winningColumns": [
              4
            ]
          }
        }
      },
      "choices": [
        {
          "id": "safe",
          "text": "Yes: there is no immediate Violet win.",
          "correct": false,
          "explanation": "Violet’s support move creates a diagonal threat whose block supplies the horizontal win above it."
        },
        {
          "id": "loss",
          "text": "No: Violet has a forced four-ply win.",
          "correct": true,
          "explanation": "Every Orange first move and every later Orange reply is covered by the support-ladder proof."
        },
        {
          "id": "four",
          "text": "Yes: Orange can secure column 4 first.",
          "correct": false,
          "explanation": "Violet waits in column 1; Orange still has to block R5C4 and thereby supports R4C4."
        }
      ],
      "studyId": "four-07"
    },
    {
      "id": "reversi-corner-versus-tempo",
      "game": "reversi",
      "title": "The corner loses. The quiet move wins.",
      "summary": "Read a complete two-empty-square ending in which move order outweighs both the corner rule and the immediate disc count.",
      "question": "Violet can take corner R6C1 or play R1C5. Which move wins with correct continuation?",
      "boardSource": "strategy",
      "position": {
        "state": {
          "kind": "reversi",
          "board": [
            "W",
            "W",
            "W",
            "B",
            "",
            "W",
            "W",
            "W",
            "W",
            "W",
            "W",
            "W",
            "W",
            "W",
            "W",
            "B",
            "B",
            "B",
            "W",
            "W",
            "W",
            "B",
            "B",
            "B",
            "W",
            "W",
            "B",
            "B",
            "W",
            "B",
            "",
            "B",
            "B",
            "B",
            "B",
            "B"
          ],
          "current": "B",
          "status": "playing",
          "winner": null,
          "moves": 30,
          "passed": null
        }
      },
      "boardCaption": "Violet (B) to move. Only R1C5 and R6C1 are empty. Violet has 15 discs; Cream has 19.",
      "setup": [
        "Corners are stable: once occupied, that corner disc cannot be flipped. That is a true local fact. It does not establish that taking an available corner wins the whole game. With only two empty squares left, we can inspect both complete endings instead of relying on a heuristic.",
        "The diagram is a reachable 6 × 6 position, reconstructed by the recorded legal opening history in the verification data. Automatic passes follow the same rules as the playable game. The winner is decided by the final number of discs."
      ],
      "steps": [
        {
          "title": "Take the attractive corner first",
          "text": "Violet at R6C1 brackets the diagonal through R5C2 and R4C3, flipping two discs. The count becomes Violet 18, Cream 17. However, Cream now has a legal move at R1C5. The apparent lead is not the final score.",
          "position": {
            "state": {
              "kind": "reversi",
              "board": [
                "W",
                "W",
                "W",
                "B",
                "",
                "W",
                "W",
                "W",
                "W",
                "W",
                "W",
                "W",
                "W",
                "W",
                "W",
                "B",
                "B",
                "B",
                "W",
                "W",
                "B",
                "B",
                "B",
                "B",
                "W",
                "B",
                "B",
                "B",
                "W",
                "B",
                "B",
                "B",
                "B",
                "B",
                "B",
                "B"
              ],
              "current": "W",
              "status": "playing",
              "winner": null,
              "moves": 31,
              "passed": null
            }
          },
          "caption": "After Violet takes R6C1: Cream to move, Violet 18–17."
        },
        {
          "title": "Finish the corner-first branch",
          "text": "Cream at R1C5 flips the Violet disc at R1C4, bracketed by Cream at R1C3. The board is full. Cream finishes with 19 discs and Violet with 17. The corner itself stayed Violet throughout; its stability did not protect the rest of the score.",
          "position": {
            "state": {
              "kind": "reversi",
              "board": [
                "W",
                "W",
                "W",
                "W",
                "W",
                "W",
                "W",
                "W",
                "W",
                "W",
                "W",
                "W",
                "W",
                "W",
                "W",
                "B",
                "B",
                "B",
                "W",
                "W",
                "B",
                "B",
                "B",
                "B",
                "W",
                "B",
                "B",
                "B",
                "W",
                "B",
                "B",
                "B",
                "B",
                "B",
                "B",
                "B"
              ],
              "current": "W",
              "status": "won",
              "winner": "W",
              "moves": 32,
              "passed": "B"
            }
          },
          "caption": "Corner-first ending: Cream wins 19–17."
        },
        {
          "title": "Play R1C5 first instead",
          "text": "Violet at R1C5 flips just R2C5, giving Violet 17 and Cream 18. Cream has no legal move at the sole empty square R6C1, so Cream must pass. Violet keeps the move and takes R6C1, flipping R5C2 and R4C3.",
          "position": {
            "state": {
              "kind": "reversi",
              "board": [
                "W",
                "W",
                "W",
                "B",
                "B",
                "W",
                "W",
                "W",
                "W",
                "W",
                "B",
                "W",
                "W",
                "W",
                "W",
                "B",
                "B",
                "B",
                "W",
                "W",
                "W",
                "B",
                "B",
                "B",
                "W",
                "W",
                "B",
                "B",
                "W",
                "B",
                "",
                "B",
                "B",
                "B",
                "B",
                "B"
              ],
              "current": "B",
              "status": "playing",
              "winner": null,
              "moves": 31,
              "passed": "W"
            }
          },
          "caption": "After Violet plays R1C5: Cream has passed, and Violet moves again."
        },
        {
          "title": "Count the completed alternative",
          "text": "After the forced pass and corner capture, the board is full with Violet 20 and Cream 16. The smaller initial capture wins because it changes who gets to play the remaining square. Both legal first moves and every continuation have now been exhausted; this is an exact ending, not a prediction from a mobility score.",
          "position": {
            "state": {
              "kind": "reversi",
              "board": [
                "W",
                "W",
                "W",
                "B",
                "B",
                "W",
                "W",
                "W",
                "W",
                "W",
                "B",
                "W",
                "W",
                "W",
                "W",
                "B",
                "B",
                "B",
                "W",
                "W",
                "B",
                "B",
                "B",
                "B",
                "W",
                "B",
                "B",
                "B",
                "W",
                "B",
                "B",
                "B",
                "B",
                "B",
                "B",
                "B"
              ],
              "current": "B",
              "status": "won",
              "winner": "B",
              "moves": 32,
              "passed": "W"
            }
          },
          "caption": "Quiet-first ending: Violet wins 20–16."
        }
      ],
      "wrongTurn": {
        "claim": "A stable corner and a one-disc lead make R6C1 the winning move.",
        "whyItFails": "Cream’s final move overturns that temporary lead. Stability applies to the corner disc, not to the match result.",
        "correction": "When the ending is short enough, calculate to termination and include forced passes before comparing final disc totals."
      },
      "transfer": {
        "question": "In a constructed variation, change R1C6 from Cream to Violet while keeping Violet to move. Do the same two move orders still give the same outcomes?",
        "answer": "The legal moves, captures and forced-pass pattern are unchanged. However, the starting disc balance changes by two: Violet gains one disc and Cream loses one. Corner R6C1 first, followed by Cream at R1C5, now ends 18–18: a draw. R1C5 first still forces Cream to pass; Violet then takes R6C1 and wins 21–15. The quiet move remains better, but the claim that corner-first loses no longer holds. This is a supplied counterfactual board, not a position attributed to the recorded opening history.",
        "position": {
          "state": {
            "kind": "reversi",
            "board": [
              "W",
              "W",
              "W",
              "B",
              "",
              "B",
              "W",
              "W",
              "W",
              "W",
              "W",
              "W",
              "W",
              "W",
              "W",
              "B",
              "B",
              "B",
              "W",
              "W",
              "W",
              "B",
              "B",
              "B",
              "W",
              "W",
              "B",
              "B",
              "W",
              "B",
              "",
              "B",
              "B",
              "B",
              "B",
              "B"
            ],
            "current": "B",
            "status": "playing",
            "winner": null,
            "moves": 30,
            "passed": null
          }
        },
        "caption": "Constructed variation: top-right R1C6 is Violet instead of Cream; Violet still moves first."
      },
      "takeaway": "Check the scope of a strategic rule. A stable corner is a local guarantee; the final score depends on the entire remaining sequence.",
      "verification": {
        "method": "Replay 30 recorded legal moves from the 6 × 6 opening, then exhaust both two-square endings.",
        "checks": [
          "R6C1 first: Cream wins 19–17",
          "R1C5 first: forced Cream pass, Violet wins 20–16",
          "All legal first moves: R1C5 and R6C1",
          "Constructed R1C6→Violet variation: corner-first draws 18–18; quiet-first wins 21–15"
        ],
        "evidence": {
          "state": {
            "kind": "reversi",
            "board": [
              "W",
              "W",
              "W",
              "B",
              "",
              "W",
              "W",
              "W",
              "W",
              "W",
              "W",
              "W",
              "W",
              "W",
              "W",
              "B",
              "B",
              "B",
              "W",
              "W",
              "W",
              "B",
              "B",
              "B",
              "W",
              "W",
              "B",
              "B",
              "W",
              "B",
              "",
              "B",
              "B",
              "B",
              "B",
              "B"
            ],
            "current": "B",
            "status": "playing",
            "winner": null,
            "moves": 30,
            "passed": null
          },
          "history": [
            13,
            19,
            26,
            33,
            18,
            8,
            27,
            24,
            1,
            16,
            32,
            12,
            6,
            0,
            22,
            2,
            3,
            7,
            10,
            34,
            35,
            5,
            17,
            25,
            31,
            29,
            23,
            28,
            9,
            11
          ],
          "options": [
            {
              "action": 4,
              "flips": [
                10
              ],
              "replies": [],
              "corners": [],
              "ownMoves": [
                30
              ],
              "passed": true,
              "terminal": false,
              "winner": null,
              "score": {
                "B": 17,
                "W": 18
              },
              "value": 4
            },
            {
              "action": 30,
              "flips": [
                25,
                20
              ],
              "replies": [
                4
              ],
              "corners": [],
              "ownMoves": [
                4
              ],
              "passed": false,
              "terminal": false,
              "winner": null,
              "score": {
                "B": 18,
                "W": 17
              },
              "value": -2
            }
          ],
          "nodes": 2249,
          "transfer": {
            "changedCell": 5,
            "fromPlayer": "W",
            "toPlayer": "B",
            "current": "B",
            "cornerFirst": [
              18,
              18
            ],
            "quietFirst": [
              21,
              15
            ]
          }
        }
      },
      "choices": [
        {
          "id": "corner",
          "text": "R6C1: take the stable corner.",
          "correct": false,
          "explanation": "Cream then plays R1C5 and wins 19–17."
        },
        {
          "id": "quiet",
          "text": "R1C5: force a pass, then take the corner.",
          "correct": true,
          "explanation": "Cream has no legal move; Violet plays both remaining squares and wins 20–16."
        },
        {
          "id": "tie",
          "text": "Both moves draw.",
          "correct": false,
          "explanation": "Both complete endings have unequal final disc counts."
        }
      ],
      "studyId": "reversi-07"
    }
  ]
}
