{
  "schema_version": 1,
  "purpose": "架空の点番号練習例。日本語点訳や触読の正しさは示さない。",
  "practice": [
    {
      "id": "top-pair-match",
      "pattern_id": "top-pair",
      "input": "1 4",
      "selected_dots": [1, 4],
      "expected_dots": [1, 4],
      "expected_status": "graded",
      "expected_match": true
    },
    {
      "id": "top-pair-mismatch",
      "pattern_id": "top-pair",
      "input": "1 5",
      "selected_dots": [1, 5],
      "expected_dots": [1, 4],
      "expected_status": "graded",
      "expected_match": false
    }
  ],
  "orientation": {
    "grid_order_top_left_to_bottom_right": {
      "read": [1, 4, 2, 5, 3, 6],
      "write": [4, 1, 5, 2, 6, 3]
    },
    "dot_positions": [
      {"dot": 1, "read": "左上", "write": "右上"},
      {"dot": 2, "read": "左中", "write": "右中"},
      {"dot": 3, "read": "左下", "write": "右下"},
      {"dot": 4, "read": "右上", "write": "左上"},
      {"dot": 5, "read": "右中", "write": "左中"},
      {"dot": 6, "read": "右下", "write": "左下"}
    ]
  },
  "input_validation": [
    {"input": "1, 4", "expected_ok": true, "expected_dots": [1, 4]},
    {"input": "1、4", "expected_ok": true, "expected_dots": [1, 4]},
    {"input": "1・4", "expected_ok": true, "expected_dots": [1, 4]},
    {"input": "1 1", "expected_ok": false, "expected_error": "duplicate"},
    {"input": "7", "expected_ok": false, "expected_error": "invalid"},
    {"input": "１ ４", "expected_ok": false, "expected_error": "invalid"},
    {"input": "", "expected_ok": false, "expected_error": "empty"}
  ],
  "history_limit": 20
}
