{
  "schema_version": "1.0",
  "generator": {
    "name": "PlayChessOnline Position Review Generator",
    "version": "1.0.0",
    "generated_at_utc": "2026-08-21T14:12:17.920682+00:00",
    "runtime_seconds": 2.38956,
    "python_version": "3.12.1",
    "platform": "Windows-10-10.0.19045-SP0"
  },
  "review": {
    "slug": "carlsen-karjakin-ecu-structured-thinking",
    "title": "Carlsen vs Karjakin - forcing checks for a busy classroom",
    "source": {
      "label": "ECU Academic Training Course and ECU101 Structured Thinking contribution",
      "url": "https://edu.europechess.org/academic-training-course/"
    }
  },
  "methodology": {
    "model_task": "scalar position evaluation",
    "candidate_set": "every legal move in each supplied FEN",
    "hybrid_formula": "material_cp + (network_cp - material_cp) * positional_weight",
    "hybrid_positional_weight": 0.3,
    "stockfish_verification": "Engine best line plus every distinct model top move and the played move, each analysed independently with a cleared hash.",
    "stockfish_nodes_per_line": 250000,
    "stockfish_threads": 2,
    "stockfish_hash_mb": 256,
    "mate_comparison_value_cp": 100000
  },
  "runtime": {
    "device": {
      "requested": "cuda",
      "selected": "cuda",
      "torch_version": "2.11.0.dev20260111+cu128",
      "cuda_available": true,
      "cuda_device_index": 0,
      "cuda_device_name": "NVIDIA GeForce RTX 5080",
      "cuda_compute_capability": [
        12,
        0
      ],
      "torch_cuda_version": "12.8"
    },
    "engine": {
      "name": "Stockfish 18",
      "author": "the Stockfish developers (see AUTHORS file)",
      "sha256": "9bde420202717ce083412027fbfb8c5c935b537591d712be8a8a8bae92f6e8d6",
      "binary_file": "stockfish-windows-x86-64.exe"
    }
  },
  "model_artifacts": [
    {
      "key": "v6_active",
      "label": "V6 Active",
      "intended_profile": "active, initiative-seeking",
      "checkpoint_file": "nnue_human_phase_v6_best.pt",
      "checkpoint_sha256": "2201211d6e619a2d4a9bc2a305459b6450a32e3ebe34f0ee06414577d553a79c",
      "checkpoint_bytes": 923169,
      "checkpoint_epoch": 3,
      "checkpoint_version": "human_phase_v6",
      "hidden_size": 256,
      "eval_scale": 1.0
    },
    {
      "key": "v8_sharp",
      "label": "V8 Sharp",
      "intended_profile": "sharp club-player profile on curated data",
      "checkpoint_file": "nnue_human_phase_v8_best.pt",
      "checkpoint_sha256": "0e90c920cd218f36a2b068cfb220c343de7f2cf3d686b8700189bd79a1528e49",
      "checkpoint_bytes": 923169,
      "checkpoint_epoch": 4,
      "checkpoint_version": "human_phase_v8",
      "hidden_size": 256,
      "eval_scale": 1.0
    },
    {
      "key": "v9_positional",
      "label": "V9 Positional",
      "intended_profile": "calm positional pressure",
      "checkpoint_file": "nnue_human_magnus_phase_v9_best.pt",
      "checkpoint_sha256": "43bff3bc7aa1fd8dda903213a068381351cd610efb5da8bcd89c394508876037",
      "checkpoint_bytes": 923253,
      "checkpoint_epoch": 5,
      "checkpoint_version": "human_magnus_phase_v9",
      "hidden_size": 256,
      "eval_scale": 1.0
    },
    {
      "key": "v15_endgame",
      "label": "V15 Endgame",
      "intended_profile": "endgame-focused distilled evaluator",
      "checkpoint_file": "nnue_human_endgame_phase_v15_best.pt",
      "checkpoint_sha256": "76f6eaea23ef5283395efced8c7613b861e7ab95bd687afa29889b256ea403d5",
      "checkpoint_bytes": 669517,
      "checkpoint_epoch": 4,
      "checkpoint_version": "human_endgame_phase_v15",
      "hidden_size": 192,
      "eval_scale": 1.0
    },
    {
      "key": "v17_file_pressure",
      "label": "V17 File Pressure",
      "intended_profile": "open-file and rook-pressure weighting",
      "checkpoint_file": "nnue_human_file_pressure_v17_best.pt",
      "checkpoint_sha256": "9ee2c8bc2a8a700bcf63ea898eca75a4e2e77075030aaef8cadbbf0848169a04",
      "checkpoint_bytes": 923169,
      "checkpoint_epoch": 6,
      "checkpoint_version": "human_phase_v6",
      "hidden_size": 256,
      "eval_scale": 1.0
    },
    {
      "key": "v18_defensive",
      "label": "V18 Defensive",
      "intended_profile": "defensive tension and counterpunch weighting",
      "checkpoint_file": "nnue_human_super_defensive_v18_best.pt",
      "checkpoint_sha256": "16fa75f1ecc5a181446d1cc2cfac82465a7dcb61874d463a1ca8116beaf85839",
      "checkpoint_bytes": 923365,
      "checkpoint_epoch": 5,
      "checkpoint_version": "human_super_defensive_v18",
      "hidden_size": 256,
      "eval_scale": 1.0
    }
  ],
  "positions": [
    {
      "id": "forcing-check-48",
      "label": "White to move on move 48",
      "fen": "6k1/4bpp1/1p1p4/5R1P/4PQ1q/5P2/r5KP/2R5 w - - 1 48",
      "side_to_move": "white",
      "legal_move_count": 5,
      "played_move": {
        "uci": "g2h1",
        "san": "Kh1"
      },
      "model_consensus": {
        "distinct_top_moves": 3,
        "most_selected_move": {
          "uci": "g2g1",
          "san": "Kg1"
        },
        "most_selected_count": 4
      },
      "public_choice_gate": {
        "required_distinct_safe_model_moves": 3,
        "safety_threshold_cp": 100,
        "observed_distinct_model_moves": 3,
        "safe_distinct_model_moves": 1,
        "passes": false
      },
      "models": [
        {
          "key": "v6_active",
          "label": "V6 Active",
          "intended_profile": "active, initiative-seeking",
          "top_move": {
            "uci": "g2g1",
            "san": "Kg1",
            "hybrid_score_cp": 119.394933
          },
          "top_three": [
            {
              "uci": "g2g1",
              "san": "Kg1",
              "hybrid_score_cp": 119.394933
            },
            {
              "uci": "f4d2",
              "san": "Qd2",
              "hybrid_score_cp": 119.33276
            },
            {
              "uci": "c1c2",
              "san": "Rc2",
              "hybrid_score_cp": 119.036232
            }
          ]
        },
        {
          "key": "v8_sharp",
          "label": "V8 Sharp",
          "intended_profile": "sharp club-player profile on curated data",
          "top_move": {
            "uci": "g2g1",
            "san": "Kg1",
            "hybrid_score_cp": 122.026161
          },
          "top_three": [
            {
              "uci": "g2g1",
              "san": "Kg1",
              "hybrid_score_cp": 122.026161
            },
            {
              "uci": "f4d2",
              "san": "Qd2",
              "hybrid_score_cp": 121.913151
            },
            {
              "uci": "c1c2",
              "san": "Rc2",
              "hybrid_score_cp": 121.833154
            }
          ]
        },
        {
          "key": "v9_positional",
          "label": "V9 Positional",
          "intended_profile": "calm positional pressure",
          "top_move": {
            "uci": "g2g1",
            "san": "Kg1",
            "hybrid_score_cp": 121.583701
          },
          "top_three": [
            {
              "uci": "g2g1",
              "san": "Kg1",
              "hybrid_score_cp": 121.583701
            },
            {
              "uci": "f4d2",
              "san": "Qd2",
              "hybrid_score_cp": 121.380234
            },
            {
              "uci": "g2h1",
              "san": "Kh1",
              "hybrid_score_cp": 121.341294
            }
          ]
        },
        {
          "key": "v15_endgame",
          "label": "V15 Endgame",
          "intended_profile": "endgame-focused distilled evaluator",
          "top_move": {
            "uci": "g2g1",
            "san": "Kg1",
            "hybrid_score_cp": 121.647112
          },
          "top_three": [
            {
              "uci": "g2g1",
              "san": "Kg1",
              "hybrid_score_cp": 121.647112
            },
            {
              "uci": "g2h1",
              "san": "Kh1",
              "hybrid_score_cp": 121.636243
            },
            {
              "uci": "c1c2",
              "san": "Rc2",
              "hybrid_score_cp": 121.603602
            }
          ]
        },
        {
          "key": "v17_file_pressure",
          "label": "V17 File Pressure",
          "intended_profile": "open-file and rook-pressure weighting",
          "top_move": {
            "uci": "g2h1",
            "san": "Kh1",
            "hybrid_score_cp": 122.079224
          },
          "top_three": [
            {
              "uci": "g2h1",
              "san": "Kh1",
              "hybrid_score_cp": 122.079224
            },
            {
              "uci": "c1c2",
              "san": "Rc2",
              "hybrid_score_cp": 122.039896
            },
            {
              "uci": "g2g1",
              "san": "Kg1",
              "hybrid_score_cp": 121.901219
            }
          ]
        },
        {
          "key": "v18_defensive",
          "label": "V18 Defensive",
          "intended_profile": "defensive tension and counterpunch weighting",
          "top_move": {
            "uci": "f4d2",
            "san": "Qd2",
            "hybrid_score_cp": 119.931801
          },
          "top_three": [
            {
              "uci": "f4d2",
              "san": "Qd2",
              "hybrid_score_cp": 119.931801
            },
            {
              "uci": "c1c2",
              "san": "Rc2",
              "hybrid_score_cp": 119.714988
            },
            {
              "uci": "g2h1",
              "san": "Kh1",
              "hybrid_score_cp": 119.68156
            }
          ]
        }
      ],
      "stockfish": {
        "best_move": {
          "uci": "g2h1",
          "san": "Kh1"
        },
        "best_score": {
          "centipawns": 291,
          "is_mate": false,
          "mate_in": null,
          "comparison_cp": 291
        },
        "best_pv": {
          "uci": [
            "g2h1",
            "h4f4",
            "f5f4",
            "e7f6",
            "f4f5",
            "a2f2",
            "c1c8",
            "g8h7",
            "c8f8",
            "f6e5",
            "f5f7",
            "f2h2",
            "h1g1",
            "h2h5",
            "f3f4",
            "e5c3",
            "f7d7",
            "h5c5",
            "d7d6",
            "b6b5",
            "g1g2",
            "b5b4",
            "d6b6"
          ],
          "san": "48. Kh1 Qxf4 49. Rxf4 Bf6 50. Rf5 Rf2 51. Rc8+ Kh7 52. Rf8 Be5 53. R5xf7 Rxh2+ 54. Kg1 Rxh5 55. f4 Bc3 56. Rd7 Rc5 57. Rxd6 b5 58. Kg2 b4 59. Rb6"
        },
        "nodes": 250207,
        "depth": 18,
        "seldepth": 32,
        "verified_choices": [
          {
            "move": {
              "uci": "f4d2",
              "san": "Qd2"
            },
            "is_played_move": false,
            "is_engine_best_move": false,
            "selected_by_models": [
              "V18 Defensive"
            ],
            "score": {
              "centipawns": null,
              "is_mate": true,
              "mate_in": -3,
              "comparison_cp": -99997
            },
            "loss_cp": 100288,
            "within_100cp": false,
            "within_200cp": false,
            "pv": {
              "uci": [
                "f4d2",
                "a2d2",
                "g2g1",
                "h4f2",
                "g1h1",
                "f2h2"
              ],
              "san": "48. Qd2 Rxd2+ 49. Kg1 Qf2+ 50. Kh1 Qxh2#"
            },
            "nodes": 250181,
            "depth": 181,
            "seldepth": 7
          },
          {
            "move": {
              "uci": "g2g1",
              "san": "Kg1"
            },
            "is_played_move": false,
            "is_engine_best_move": false,
            "selected_by_models": [
              "V15 Endgame",
              "V6 Active",
              "V8 Sharp",
              "V9 Positional"
            ],
            "score": {
              "centipawns": null,
              "is_mate": true,
              "mate_in": -2,
              "comparison_cp": -99998
            },
            "loss_cp": 100289,
            "within_100cp": false,
            "within_200cp": false,
            "pv": {
              "uci": [
                "g2g1",
                "h4f2",
                "g1h1",
                "f2g2"
              ],
              "san": "48. Kg1 Qf2+ 49. Kh1 Qg2#"
            },
            "nodes": 22810,
            "depth": 245,
            "seldepth": 5
          },
          {
            "move": {
              "uci": "g2h1",
              "san": "Kh1"
            },
            "is_played_move": true,
            "is_engine_best_move": true,
            "selected_by_models": [
              "V17 File Pressure"
            ],
            "score": {
              "centipawns": 286,
              "is_mate": false,
              "mate_in": null,
              "comparison_cp": 286
            },
            "loss_cp": 0,
            "within_100cp": true,
            "within_200cp": true,
            "pv": {
              "uci": [
                "g2h1",
                "h4f4",
                "c1c8",
                "g8h7",
                "f5f4",
                "e7f6",
                "f4f5",
                "a2b2",
                "c8b8",
                "b2e2",
                "b8f8",
                "f6e5",
                "f8f7",
                "e2e1",
                "h1g2",
                "e1e2",
                "g2f1",
                "e2h2"
              ],
              "san": "48. Kh1 Qxf4 49. Rc8+ Kh7 50. Rxf4 Bf6 51. Rf5 Rb2 52. Rb8 Re2 53. Rf8 Be5 54. R8xf7 Re1+ 55. Kg2 Re2+ 56. Kf1 Rxh2"
            },
            "nodes": 250071,
            "depth": 16,
            "seldepth": 30
          }
        ]
      }
    },
    {
      "id": "ecu101-best-check",
      "label": "White to move on move 50",
      "fen": "2R5/4bppk/1p1p4/5R1P/4PQ2/5P2/r4q1P/7K w - - 5 50",
      "side_to_move": "white",
      "legal_move_count": 36,
      "played_move": {
        "uci": "f4h6",
        "san": "Qh6+"
      },
      "model_consensus": {
        "distinct_top_moves": 2,
        "most_selected_move": {
          "uci": "f4d6",
          "san": "Qxd6"
        },
        "most_selected_count": 5
      },
      "public_choice_gate": {
        "required_distinct_safe_model_moves": 3,
        "safety_threshold_cp": 100,
        "observed_distinct_model_moves": 2,
        "safe_distinct_model_moves": 0,
        "passes": false
      },
      "models": [
        {
          "key": "v6_active",
          "label": "V6 Active",
          "intended_profile": "active, initiative-seeking",
          "top_move": {
            "uci": "f4d6",
            "san": "Qxd6",
            "hybrid_score_cp": 184.699452
          },
          "top_three": [
            {
              "uci": "f4d6",
              "san": "Qxd6",
              "hybrid_score_cp": 184.699452
            },
            {
              "uci": "f5f7",
              "san": "Rxf7",
              "hybrid_score_cp": 184.312914
            },
            {
              "uci": "f4g3",
              "san": "Qg3",
              "hybrid_score_cp": 118.917497
            }
          ]
        },
        {
          "key": "v8_sharp",
          "label": "V8 Sharp",
          "intended_profile": "sharp club-player profile on curated data",
          "top_move": {
            "uci": "f4d6",
            "san": "Qxd6",
            "hybrid_score_cp": 188.345961
          },
          "top_three": [
            {
              "uci": "f4d6",
              "san": "Qxd6",
              "hybrid_score_cp": 188.345961
            },
            {
              "uci": "f5f7",
              "san": "Rxf7",
              "hybrid_score_cp": 188.172409
            },
            {
              "uci": "c8e8",
              "san": "Re8",
              "hybrid_score_cp": 122.157535
            }
          ]
        },
        {
          "key": "v9_positional",
          "label": "V9 Positional",
          "intended_profile": "calm positional pressure",
          "top_move": {
            "uci": "f4d6",
            "san": "Qxd6",
            "hybrid_score_cp": 187.832323
          },
          "top_three": [
            {
              "uci": "f4d6",
              "san": "Qxd6",
              "hybrid_score_cp": 187.832323
            },
            {
              "uci": "f5f7",
              "san": "Rxf7",
              "hybrid_score_cp": 187.551141
            },
            {
              "uci": "f5a5",
              "san": "Ra5",
              "hybrid_score_cp": 121.295634
            }
          ]
        },
        {
          "key": "v15_endgame",
          "label": "V15 Endgame",
          "intended_profile": "endgame-focused distilled evaluator",
          "top_move": {
            "uci": "f4d6",
            "san": "Qxd6",
            "hybrid_score_cp": 192.721431
          },
          "top_three": [
            {
              "uci": "f4d6",
              "san": "Qxd6",
              "hybrid_score_cp": 192.721431
            },
            {
              "uci": "f5f7",
              "san": "Rxf7",
              "hybrid_score_cp": 192.62842
            },
            {
              "uci": "c8c4",
              "san": "Rc4",
              "hybrid_score_cp": 121.687137
            }
          ]
        },
        {
          "key": "v17_file_pressure",
          "label": "V17 File Pressure",
          "intended_profile": "open-file and rook-pressure weighting",
          "top_move": {
            "uci": "f5f7",
            "san": "Rxf7",
            "hybrid_score_cp": 188.846935
          },
          "top_three": [
            {
              "uci": "f5f7",
              "san": "Rxf7",
              "hybrid_score_cp": 188.846935
            },
            {
              "uci": "f4d6",
              "san": "Qxd6",
              "hybrid_score_cp": 188.572769
            },
            {
              "uci": "f5e5",
              "san": "Re5",
              "hybrid_score_cp": 122.640609
            }
          ]
        },
        {
          "key": "v18_defensive",
          "label": "V18 Defensive",
          "intended_profile": "defensive tension and counterpunch weighting",
          "top_move": {
            "uci": "f4d6",
            "san": "Qxd6",
            "hybrid_score_cp": 185.281377
          },
          "top_three": [
            {
              "uci": "f4d6",
              "san": "Qxd6",
              "hybrid_score_cp": 185.281377
            },
            {
              "uci": "f5f7",
              "san": "Rxf7",
              "hybrid_score_cp": 185.078627
            },
            {
              "uci": "f4g3",
              "san": "Qg3",
              "hybrid_score_cp": 120.210915
            }
          ]
        }
      ],
      "stockfish": {
        "best_move": {
          "uci": "f4h6",
          "san": "Qh6+"
        },
        "best_score": {
          "centipawns": null,
          "is_mate": true,
          "mate_in": 2,
          "comparison_cp": 99998
        },
        "best_pv": {
          "uci": [
            "f4h6",
            "h7h6",
            "c8h8"
          ],
          "san": "50. Qh6+ Kxh6 51. Rh8#"
        },
        "nodes": 27479,
        "depth": 245,
        "seldepth": 4,
        "verified_choices": [
          {
            "move": {
              "uci": "f4d6",
              "san": "Qxd6"
            },
            "is_played_move": false,
            "is_engine_best_move": false,
            "selected_by_models": [
              "V15 Endgame",
              "V18 Defensive",
              "V6 Active",
              "V8 Sharp",
              "V9 Positional"
            ],
            "score": {
              "centipawns": null,
              "is_mate": true,
              "mate_in": -1,
              "comparison_cp": -99999
            },
            "loss_cp": 199997,
            "within_100cp": false,
            "within_200cp": false,
            "pv": {
              "uci": [
                "f4d6",
                "f2e1"
              ],
              "san": "50. Qxd6 Qe1#"
            },
            "nodes": 1231,
            "depth": 245,
            "seldepth": 3
          },
          {
            "move": {
              "uci": "f4h6",
              "san": "Qh6+"
            },
            "is_played_move": true,
            "is_engine_best_move": true,
            "selected_by_models": [],
            "score": {
              "centipawns": null,
              "is_mate": true,
              "mate_in": 2,
              "comparison_cp": 99998
            },
            "loss_cp": 0,
            "within_100cp": true,
            "within_200cp": true,
            "pv": {
              "uci": [
                "f4h6",
                "h7h6",
                "c8h8"
              ],
              "san": "50. Qh6+ Kxh6 51. Rh8#"
            },
            "nodes": 2213,
            "depth": 245,
            "seldepth": 4
          },
          {
            "move": {
              "uci": "f5f7",
              "san": "Rxf7"
            },
            "is_played_move": false,
            "is_engine_best_move": false,
            "selected_by_models": [
              "V17 File Pressure"
            ],
            "score": {
              "centipawns": null,
              "is_mate": true,
              "mate_in": -1,
              "comparison_cp": -99999
            },
            "loss_cp": 199997,
            "within_100cp": false,
            "within_200cp": false,
            "pv": {
              "uci": [
                "f5f7",
                "f2e1"
              ],
              "san": "50. Rxf7 Qe1#"
            },
            "nodes": 990,
            "depth": 245,
            "seldepth": 3
          }
        ]
      }
    }
  ],
  "limitations": [
    "The six neural checkpoints are scalar evaluators, not move-policy models or explanation models.",
    "Their 768 inputs encode piece placement only; side to move is applied after inference, while castling rights, en-passant state, repetition, move history, and clocks are not model inputs.",
    "Profile labels describe intended training or runtime behavior and do not prove human-like personality or internal understanding.",
    "Stockfish results use a fixed node budget and configuration and are a verification snapshot, not a claim of perfect play.",
    "Stockfish was required to use two search threads. Parallel search can produce small score, depth, node-count, or PV differences on a fresh rerun even when the configured node limit is unchanged.",
    "Centipawn loss uses a 100,000 cp comparison value for forced-mate scores; mate status and mate distance are also reported separately.",
    "The analysis does not measure Elo, playing strength, or clean unseen test accuracy.",
    "Any reader-facing move explanation must describe observable chess features; it must not be presented as the model's internal reasoning."
  ]
}
