{
  "scan_sha256": "31908727356f3db00af4f18d7c7409be9ed588dc0674f689a7d46fbce7906cf7",
  "followup_plan_sha256": "668f4cc09483070bcdf7ad801a7cca24d51f50486f6d72c337ae9a8df15697bb",
  "master_sha256": "b0b2e13c3cd35512ee5955a2d9a56c22d7410e283d35dd9c90abbaa7b99279eb",
  "counts": {
    "border_motif": 10,
    "text": 6,
    "illustration_fragment": 7
  },
  "text_class_counts": {
    "split_three_plus_one": 2,
    "split_one_plus_three": 1,
    "inline_three_dot": 3
  },
  "candidate_records": [
    {
      "page": 3,
      "source": "20.jpg",
      "color": "black",
      "bbox": [
        244,
        1058,
        268,
        1091
      ],
      "detections": [
        {
          "threshold": 80,
          "bbox": [
            244,
            1058,
            268,
            1091
          ],
          "dots": [
            [
              244,
              1082,
              250,
              1091,
              42
            ],
            [
              246,
              1058,
              252,
              1065,
              30
            ],
            [
              262,
              1069,
              268,
              1076,
              34
            ]
          ]
        },
        {
          "threshold": 100,
          "bbox": [
            244,
            1058,
            268,
            1091
          ],
          "dots": [
            [
              244,
              1082,
              250,
              1091,
              43
            ],
            [
              246,
              1058,
              252,
              1065,
              30
            ],
            [
              262,
              1069,
              268,
              1076,
              34
            ]
          ]
        },
        {
          "threshold": 120,
          "bbox": [
            243,
            1058,
            268,
            1091
          ],
          "dots": [
            [
              243,
              1082,
              250,
              1091,
              48
            ],
            [
              246,
              1058,
              252,
              1065,
              30
            ],
            [
              262,
              1069,
              268,
              1076,
              36
            ]
          ]
        }
      ],
      "id": "three-dot-01",
      "context_bbox": [
        146,
        989,
        366,
        1159
      ],
      "crop": "three_dot_candidate_01.png",
      "source_sha256": "1453ef27ea607c6ea378d6472c908e77c2881caba33c72d1893caddee8dc1117",
      "review_method": "Manual inspection of source crop and surrounding original page; labels encoded in this script.",
      "review_class": "border_motif",
      "reason": "Three small dots adjacent to repeated spiral borders, outside text."
    },
    {
      "page": 3,
      "source": "20.jpg",
      "color": "black",
      "bbox": [
        2132,
        1058,
        2156,
        1091
      ],
      "detections": [
        {
          "threshold": 80,
          "bbox": [
            2132,
            1058,
            2156,
            1091
          ],
          "dots": [
            [
              2132,
              1069,
              2138,
              1076,
              34
            ],
            [
              2148,
              1058,
              2154,
              1065,
              30
            ],
            [
              2150,
              1082,
              2156,
              1091,
              42
            ]
          ]
        },
        {
          "threshold": 100,
          "bbox": [
            2132,
            1058,
            2156,
            1091
          ],
          "dots": [
            [
              2132,
              1069,
              2138,
              1076,
              34
            ],
            [
              2148,
              1058,
              2154,
              1065,
              30
            ],
            [
              2150,
              1082,
              2156,
              1091,
              43
            ]
          ]
        },
        {
          "threshold": 120,
          "bbox": [
            2132,
            1058,
            2157,
            1091
          ],
          "dots": [
            [
              2132,
              1069,
              2138,
              1076,
              36
            ],
            [
              2148,
              1058,
              2154,
              1065,
              30
            ],
            [
              2150,
              1082,
              2157,
              1091,
              48
            ]
          ]
        }
      ],
      "id": "three-dot-02",
      "context_bbox": [
        2034,
        989,
        2254,
        1159
      ],
      "crop": "three_dot_candidate_02.png",
      "source_sha256": "1453ef27ea607c6ea378d6472c908e77c2881caba33c72d1893caddee8dc1117",
      "review_method": "Manual inspection of source crop and surrounding original page; labels encoded in this script.",
      "review_class": "border_motif",
      "reason": "Three small dots adjacent to repeated spiral borders, outside text."
    },
    {
      "page": 4,
      "source": "21.jpg",
      "color": "black",
      "bbox": [
        244,
        1058,
        268,
        1091
      ],
      "detections": [
        {
          "threshold": 80,
          "bbox": [
            244,
            1058,
            268,
            1091
          ],
          "dots": [
            [
              244,
              1083,
              250,
              1091,
              39
            ],
            [
              246,
              1058,
              252,
              1065,
              30
            ],
            [
              262,
              1070,
              268,
              1076,
              32
            ]
          ]
        },
        {
          "threshold": 100,
          "bbox": [
            244,
            1058,
            268,
            1091
          ],
          "dots": [
            [
              244,
              1083,
              250,
              1091,
              40
            ],
            [
              246,
              1058,
              252,
              1065,
              30
            ],
            [
              262,
              1070,
              268,
              1076,
              32
            ]
          ]
        },
        {
          "threshold": 120,
          "bbox": [
            243,
            1058,
            268,
            1091
          ],
          "dots": [
            [
              243,
              1083,
              250,
              1091,
              45
            ],
            [
              246,
              1058,
              252,
              1065,
              30
            ],
            [
              262,
              1070,
              268,
              1076,
              33
            ]
          ]
        }
      ],
      "id": "three-dot-03",
      "context_bbox": [
        146,
        989,
        366,
        1159
      ],
      "crop": "three_dot_candidate_03.png",
      "source_sha256": "72bea2bfcd4f1b8e2095f882811d0f294e329d4b1bfe68f8ed5ec726d0a1e9d6",
      "review_method": "Manual inspection of source crop and surrounding original page; labels encoded in this script.",
      "review_class": "border_motif",
      "reason": "Three small dots adjacent to repeated spiral borders, outside text."
    },
    {
      "page": 4,
      "source": "21.jpg",
      "color": "black",
      "bbox": [
        2132,
        1058,
        2156,
        1091
      ],
      "detections": [
        {
          "threshold": 80,
          "bbox": [
            2132,
            1058,
            2156,
            1091
          ],
          "dots": [
            [
              2132,
              1070,
              2138,
              1076,
              32
            ],
            [
              2148,
              1058,
              2154,
              1065,
              30
            ],
            [
              2150,
              1083,
              2156,
              1091,
              39
            ]
          ]
        },
        {
          "threshold": 100,
          "bbox": [
            2132,
            1058,
            2156,
            1091
          ],
          "dots": [
            [
              2132,
              1070,
              2138,
              1076,
              32
            ],
            [
              2148,
              1058,
              2154,
              1065,
              30
            ],
            [
              2150,
              1083,
              2156,
              1091,
              40
            ]
          ]
        },
        {
          "threshold": 120,
          "bbox": [
            2132,
            1058,
            2157,
            1091
          ],
          "dots": [
            [
              2132,
              1070,
              2138,
              1076,
              33
            ],
            [
              2148,
              1058,
              2154,
              1065,
              30
            ],
            [
              2150,
              1083,
              2157,
              1091,
              45
            ]
          ]
        }
      ],
      "id": "three-dot-04",
      "context_bbox": [
        2034,
        989,
        2254,
        1159
      ],
      "crop": "three_dot_candidate_04.png",
      "source_sha256": "72bea2bfcd4f1b8e2095f882811d0f294e329d4b1bfe68f8ed5ec726d0a1e9d6",
      "review_method": "Manual inspection of source crop and surrounding original page; labels encoded in this script.",
      "review_class": "border_motif",
      "reason": "Three small dots adjacent to repeated spiral borders, outside text."
    },
    {
      "page": 5,
      "source": "22.jpg",
      "color": "black",
      "bbox": [
        244,
        1058,
        268,
        1091
      ],
      "detections": [
        {
          "threshold": 80,
          "bbox": [
            244,
            1058,
            268,
            1091
          ],
          "dots": [
            [
              244,
              1083,
              250,
              1091,
              39
            ],
            [
              246,
              1058,
              252,
              1065,
              30
            ],
            [
              262,
              1070,
              268,
              1076,
              32
            ]
          ]
        },
        {
          "threshold": 100,
          "bbox": [
            244,
            1058,
            268,
            1091
          ],
          "dots": [
            [
              244,
              1083,
              250,
              1091,
              40
            ],
            [
              246,
              1058,
              252,
              1065,
              30
            ],
            [
              262,
              1070,
              268,
              1076,
              32
            ]
          ]
        },
        {
          "threshold": 120,
          "bbox": [
            243,
            1058,
            268,
            1091
          ],
          "dots": [
            [
              243,
              1083,
              250,
              1091,
              45
            ],
            [
              246,
              1058,
              252,
              1065,
              30
            ],
            [
              262,
              1070,
              268,
              1076,
              33
            ]
          ]
        }
      ],
      "id": "three-dot-05",
      "context_bbox": [
        146,
        989,
        366,
        1159
      ],
      "crop": "three_dot_candidate_05.png",
      "source_sha256": "bcef0a3b80532b25a013052ec4394ab47ab69ce675b5b3db59cbad044e7adabd",
      "review_method": "Manual inspection of source crop and surrounding original page; labels encoded in this script.",
      "review_class": "border_motif",
      "reason": "Three small dots adjacent to repeated spiral borders, outside text."
    },
    {
      "page": 5,
      "source": "22.jpg",
      "color": "black",
      "bbox": [
        2132,
        1058,
        2156,
        1091
      ],
      "detections": [
        {
          "threshold": 80,
          "bbox": [
            2132,
            1058,
            2156,
            1091
          ],
          "dots": [
            [
              2132,
              1070,
              2138,
              1076,
              32
            ],
            [
              2148,
              1058,
              2154,
              1065,
              30
            ],
            [
              2150,
              1083,
              2156,
              1091,
              39
            ]
          ]
        },
        {
          "threshold": 100,
          "bbox": [
            2132,
            1058,
            2156,
            1091
          ],
          "dots": [
            [
              2132,
              1070,
              2138,
              1076,
              32
            ],
            [
              2148,
              1058,
              2154,
              1065,
              30
            ],
            [
              2150,
              1083,
              2156,
              1091,
              40
            ]
          ]
        },
        {
          "threshold": 120,
          "bbox": [
            2132,
            1058,
            2157,
            1091
          ],
          "dots": [
            [
              2132,
              1070,
              2138,
              1076,
              33
            ],
            [
              2148,
              1058,
              2154,
              1065,
              30
            ],
            [
              2150,
              1083,
              2157,
              1091,
              45
            ]
          ]
        }
      ],
      "id": "three-dot-06",
      "context_bbox": [
        2034,
        989,
        2254,
        1159
      ],
      "crop": "three_dot_candidate_06.png",
      "source_sha256": "bcef0a3b80532b25a013052ec4394ab47ab69ce675b5b3db59cbad044e7adabd",
      "review_method": "Manual inspection of source crop and surrounding original page; labels encoded in this script.",
      "review_class": "border_motif",
      "reason": "Three small dots adjacent to repeated spiral borders, outside text."
    },
    {
      "page": 5,
      "source": "22.jpg",
      "color": "black",
      "bbox": [
        1759,
        1461,
        1785,
        1504
      ],
      "detections": [
        {
          "threshold": 80,
          "bbox": [
            1759,
            1461,
            1785,
            1504
          ],
          "dots": [
            [
              1759,
              1478,
              1769,
              1488,
              100
            ],
            [
              1775,
              1461,
              1785,
              1470,
              90
            ],
            [
              1775,
              1495,
              1785,
              1504,
              90
            ]
          ]
        },
        {
          "threshold": 100,
          "bbox": [
            1759,
            1461,
            1785,
            1504
          ],
          "dots": [
            [
              1759,
              1478,
              1769,
              1488,
              100
            ],
            [
              1775,
              1461,
              1785,
              1470,
              90
            ],
            [
              1775,
              1495,
              1785,
              1504,
              90
            ]
          ]
        },
        {
          "threshold": 120,
          "bbox": [
            1759,
            1461,
            1785,
            1504
          ],
          "dots": [
            [
              1759,
              1478,
              1769,
              1488,
              100
            ],
            [
              1775,
              1461,
              1785,
              1470,
              90
            ],
            [
              1775,
              1495,
              1785,
              1504,
              90
            ]
          ]
        }
      ],
      "id": "three-dot-07",
      "context_bbox": [
        1662,
        1397,
        1882,
        1567
      ],
      "crop": "three_dot_candidate_07.png",
      "source_sha256": "bcef0a3b80532b25a013052ec4394ab47ab69ce675b5b3db59cbad044e7adabd",
      "review_method": "Manual inspection of source crop and surrounding original page; labels encoded in this script.",
      "preceding_cipher_rune": "ᚣ",
      "review_class": "text",
      "line": 5,
      "line_runes_before_mark": 21,
      "page_rune_gap": 110,
      "master_marks_at_gap": ";-",
      "master_line": "ᚳᚢ-ᚣᛠᚾᛏᚷᚳᚪ-ᛉᛡᛇ-ᚦᛄᚣᛄᛚᛟᛖᛚ-ᚣ;-",
      "alignment_status": "Manual line/separator alignment to the master; not a fresh whole-page rune audit.",
      "physical_class": "split_three_plus_one",
      "role_status": "unresolved",
      "triangle_points": "left",
      "paired_fragment": {
        "line": 6,
        "bbox": [
          601,
          1667,
          610,
          1676
        ],
        "checks": [
          {
            "threshold": 80,
            "bbox": [
              601,
              1667,
              610,
              1676
            ],
            "dots": [
              [
                601,
                1667,
                610,
                1676,
                81
              ]
            ]
          },
          {
            "threshold": 100,
            "bbox": [
              601,
              1667,
              610,
              1676
            ],
            "dots": [
              [
                601,
                1667,
                610,
                1676,
                81
              ]
            ]
          },
          {
            "threshold": 120,
            "bbox": [
              601,
              1667,
              610,
              1676
            ],
            "dots": [
              [
                601,
                1667,
                610,
                1676,
                81
              ]
            ]
          }
        ],
        "same_rune_gap": 110,
        "physical_line_order": [
          5,
          6
        ],
        "dot_counts_in_reading_order": [
          3,
          1
        ],
        "interpretation": "Four visible dots across one line break, with no intervening rune. A wrapped four-dot symbol is plausible, but not imposed."
      }
    },
    {
      "page": 6,
      "source": "23.jpg",
      "color": "black",
      "bbox": [
        244,
        1058,
        268,
        1091
      ],
      "detections": [
        {
          "threshold": 80,
          "bbox": [
            244,
            1058,
            268,
            1091
          ],
          "dots": [
            [
              244,
              1083,
              250,
              1091,
              39
            ],
            [
              246,
              1058,
              252,
              1065,
              30
            ],
            [
              262,
              1070,
              268,
              1076,
              32
            ]
          ]
        },
        {
          "threshold": 100,
          "bbox": [
            244,
            1058,
            268,
            1091
          ],
          "dots": [
            [
              244,
              1083,
              250,
              1091,
              40
            ],
            [
              246,
              1058,
              252,
              1065,
              30
            ],
            [
              262,
              1070,
              268,
              1076,
              32
            ]
          ]
        },
        {
          "threshold": 120,
          "bbox": [
            243,
            1058,
            268,
            1091
          ],
          "dots": [
            [
              243,
              1083,
              250,
              1091,
              45
            ],
            [
              246,
              1058,
              252,
              1065,
              30
            ],
            [
              262,
              1070,
              268,
              1076,
              33
            ]
          ]
        }
      ],
      "id": "three-dot-08",
      "context_bbox": [
        146,
        989,
        366,
        1159
      ],
      "crop": "three_dot_candidate_08.png",
      "source_sha256": "4c7dce370242c67a7b785828d75547c042717b221d9d565d7dd097834c7b25d7",
      "review_method": "Manual inspection of source crop and surrounding original page; labels encoded in this script.",
      "review_class": "border_motif",
      "reason": "Three small dots adjacent to repeated spiral borders, outside text."
    },
    {
      "page": 6,
      "source": "23.jpg",
      "color": "black",
      "bbox": [
        2132,
        1058,
        2156,
        1091
      ],
      "detections": [
        {
          "threshold": 80,
          "bbox": [
            2132,
            1058,
            2156,
            1091
          ],
          "dots": [
            [
              2132,
              1070,
              2138,
              1076,
              32
            ],
            [
              2148,
              1058,
              2154,
              1065,
              30
            ],
            [
              2150,
              1083,
              2156,
              1091,
              39
            ]
          ]
        },
        {
          "threshold": 100,
          "bbox": [
            2132,
            1058,
            2156,
            1091
          ],
          "dots": [
            [
              2132,
              1070,
              2138,
              1076,
              32
            ],
            [
              2148,
              1058,
              2154,
              1065,
              30
            ],
            [
              2150,
              1083,
              2156,
              1091,
              40
            ]
          ]
        },
        {
          "threshold": 120,
          "bbox": [
            2132,
            1058,
            2157,
            1091
          ],
          "dots": [
            [
              2132,
              1070,
              2138,
              1076,
              33
            ],
            [
              2148,
              1058,
              2154,
              1065,
              30
            ],
            [
              2150,
              1083,
              2157,
              1091,
              45
            ]
          ]
        }
      ],
      "id": "three-dot-09",
      "context_bbox": [
        2034,
        989,
        2254,
        1159
      ],
      "crop": "three_dot_candidate_09.png",
      "source_sha256": "4c7dce370242c67a7b785828d75547c042717b221d9d565d7dd097834c7b25d7",
      "review_method": "Manual inspection of source crop and surrounding original page; labels encoded in this script.",
      "review_class": "border_motif",
      "reason": "Three small dots adjacent to repeated spiral borders, outside text."
    },
    {
      "page": 7,
      "source": "24.jpg",
      "color": "black",
      "bbox": [
        244,
        1058,
        268,
        1091
      ],
      "detections": [
        {
          "threshold": 80,
          "bbox": [
            244,
            1058,
            268,
            1091
          ],
          "dots": [
            [
              244,
              1083,
              250,
              1091,
              39
            ],
            [
              246,
              1058,
              252,
              1065,
              30
            ],
            [
              262,
              1070,
              268,
              1076,
              32
            ]
          ]
        },
        {
          "threshold": 100,
          "bbox": [
            244,
            1058,
            268,
            1091
          ],
          "dots": [
            [
              244,
              1083,
              250,
              1091,
              40
            ],
            [
              246,
              1058,
              252,
              1065,
              30
            ],
            [
              262,
              1070,
              268,
              1076,
              32
            ]
          ]
        },
        {
          "threshold": 120,
          "bbox": [
            243,
            1058,
            268,
            1091
          ],
          "dots": [
            [
              243,
              1083,
              250,
              1091,
              45
            ],
            [
              246,
              1058,
              252,
              1065,
              30
            ],
            [
              262,
              1070,
              268,
              1076,
              33
            ]
          ]
        }
      ],
      "id": "three-dot-10",
      "context_bbox": [
        146,
        989,
        366,
        1159
      ],
      "crop": "three_dot_candidate_10.png",
      "source_sha256": "91a726a7dd59c6caa4d736b9ce72ceba0a2fa827d6b69a2d4057562b9303636c",
      "review_method": "Manual inspection of source crop and surrounding original page; labels encoded in this script.",
      "review_class": "border_motif",
      "reason": "Three small dots adjacent to repeated spiral borders, outside text."
    },
    {
      "page": 7,
      "source": "24.jpg",
      "color": "black",
      "bbox": [
        2132,
        1058,
        2156,
        1091
      ],
      "detections": [
        {
          "threshold": 80,
          "bbox": [
            2132,
            1058,
            2156,
            1091
          ],
          "dots": [
            [
              2132,
              1070,
              2138,
              1076,
              32
            ],
            [
              2148,
              1058,
              2154,
              1065,
              30
            ],
            [
              2150,
              1083,
              2156,
              1091,
              39
            ]
          ]
        },
        {
          "threshold": 100,
          "bbox": [
            2132,
            1058,
            2156,
            1091
          ],
          "dots": [
            [
              2132,
              1070,
              2138,
              1076,
              32
            ],
            [
              2148,
              1058,
              2154,
              1065,
              30
            ],
            [
              2150,
              1083,
              2156,
              1091,
              40
            ]
          ]
        },
        {
          "threshold": 120,
          "bbox": [
            2132,
            1058,
            2157,
            1091
          ],
          "dots": [
            [
              2132,
              1070,
              2138,
              1076,
              33
            ],
            [
              2148,
              1058,
              2154,
              1065,
              30
            ],
            [
              2150,
              1083,
              2157,
              1091,
              45
            ]
          ]
        }
      ],
      "id": "three-dot-11",
      "context_bbox": [
        2034,
        989,
        2254,
        1159
      ],
      "crop": "three_dot_candidate_11.png",
      "source_sha256": "91a726a7dd59c6caa4d736b9ce72ceba0a2fa827d6b69a2d4057562b9303636c",
      "review_method": "Manual inspection of source crop and surrounding original page; labels encoded in this script.",
      "review_class": "border_motif",
      "reason": "Three small dots adjacent to repeated spiral borders, outside text."
    },
    {
      "page": 8,
      "source": "25.jpg",
      "color": "black",
      "bbox": [
        334,
        1553,
        363,
        1594
      ],
      "detections": [
        {
          "threshold": 100,
          "bbox": [
            334,
            1553,
            363,
            1594
          ],
          "dots": [
            [
              334,
              1583,
              345,
              1594,
              82
            ],
            [
              342,
              1571,
              351,
              1580,
              51
            ],
            [
              351,
              1553,
              363,
              1565,
              47
            ]
          ]
        }
      ],
      "id": "three-dot-12",
      "context_bbox": [
        238,
        1488,
        458,
        1658
      ],
      "crop": "three_dot_candidate_12.png",
      "source_sha256": "6b1026dfdfb447a5a76819883fe576254e8a47fdf1e97ecf1825166833bc6f00",
      "review_method": "Manual inspection of source crop and surrounding original page; labels encoded in this script.",
      "review_class": "illustration_fragment",
      "reason": "Components lie within tree/branch or insect illustrations; no textual separator alignment."
    },
    {
      "page": 11,
      "source": "28.jpg",
      "color": "black",
      "bbox": [
        1767,
        2591,
        1793,
        2634
      ],
      "detections": [
        {
          "threshold": 80,
          "bbox": [
            1767,
            2591,
            1793,
            2634
          ],
          "dots": [
            [
              1767,
              2608,
              1777,
              2617,
              90
            ],
            [
              1783,
              2591,
              1793,
              2600,
              90
            ],
            [
              1783,
              2625,
              1793,
              2634,
              90
            ]
          ]
        },
        {
          "threshold": 100,
          "bbox": [
            1767,
            2591,
            1793,
            2634
          ],
          "dots": [
            [
              1767,
              2608,
              1777,
              2617,
              90
            ],
            [
              1783,
              2591,
              1793,
              2600,
              90
            ],
            [
              1783,
              2625,
              1793,
              2634,
              90
            ]
          ]
        },
        {
          "threshold": 120,
          "bbox": [
            1767,
            2591,
            1793,
            2634
          ],
          "dots": [
            [
              1767,
              2608,
              1777,
              2617,
              90
            ],
            [
              1783,
              2591,
              1793,
              2600,
              90
            ],
            [
              1783,
              2625,
              1793,
              2634,
              90
            ]
          ]
        }
      ],
      "id": "three-dot-13",
      "context_bbox": [
        1670,
        2527,
        1890,
        2697
      ],
      "crop": "three_dot_candidate_13.png",
      "source_sha256": "26f0cb307a23dcb2adf03a70fb9c6da89746258a90fd9be5383b2757ab4aad30",
      "review_method": "Manual inspection of source crop and surrounding original page; labels encoded in this script.",
      "preceding_cipher_rune": "ᛚ",
      "review_class": "text",
      "line": 11,
      "line_runes_before_mark": 22,
      "page_rune_gap": 250,
      "master_marks_at_gap": ";-",
      "master_line": "ᛋᚢᛚᚪᛈᚢᚳᛖᚠᛞᛉ-ᚦᛠᛇᛝᚻ-ᚣᚱᛗ-ᛟᚾᛚ;-",
      "alignment_status": "Manual line/separator alignment to the master; not a fresh whole-page rune audit.",
      "physical_class": "split_three_plus_one",
      "role_status": "unresolved",
      "triangle_points": "left",
      "paired_fragment": {
        "line": 12,
        "bbox": [
          601,
          2797,
          610,
          2806
        ],
        "checks": [
          {
            "threshold": 80,
            "bbox": [
              601,
              2797,
              610,
              2806
            ],
            "dots": [
              [
                601,
                2797,
                610,
                2806,
                81
              ]
            ]
          },
          {
            "threshold": 100,
            "bbox": [
              601,
              2797,
              610,
              2806
            ],
            "dots": [
              [
                601,
                2797,
                610,
                2806,
                81
              ]
            ]
          },
          {
            "threshold": 120,
            "bbox": [
              601,
              2797,
              610,
              2806
            ],
            "dots": [
              [
                601,
                2797,
                610,
                2806,
                81
              ]
            ]
          }
        ],
        "same_rune_gap": 250,
        "physical_line_order": [
          11,
          12
        ],
        "dot_counts_in_reading_order": [
          3,
          1
        ],
        "interpretation": "Four visible dots across one line break, with no intervening rune. A wrapped four-dot symbol is plausible, but not imposed."
      }
    },
    {
      "page": 20,
      "source": "37.jpg",
      "color": "black",
      "bbox": [
        601,
        1838,
        625,
        1881
      ],
      "detections": [
        {
          "threshold": 80,
          "bbox": [
            601,
            1838,
            625,
            1881
          ],
          "dots": [
            [
              601,
              1838,
              610,
              1847,
              81
            ],
            [
              601,
              1872,
              610,
              1881,
              81
            ],
            [
              615,
              1855,
              625,
              1864,
              90
            ]
          ]
        },
        {
          "threshold": 100,
          "bbox": [
            601,
            1838,
            625,
            1881
          ],
          "dots": [
            [
              601,
              1838,
              610,
              1847,
              81
            ],
            [
              601,
              1872,
              610,
              1881,
              81
            ],
            [
              615,
              1855,
              625,
              1864,
              90
            ]
          ]
        },
        {
          "threshold": 120,
          "bbox": [
            601,
            1838,
            625,
            1881
          ],
          "dots": [
            [
              601,
              1838,
              610,
              1847,
              81
            ],
            [
              601,
              1872,
              610,
              1881,
              81
            ],
            [
              615,
              1855,
              625,
              1864,
              90
            ]
          ]
        }
      ],
      "id": "three-dot-14",
      "context_bbox": [
        503,
        1774,
        723,
        1944
      ],
      "crop": "three_dot_candidate_14.png",
      "source_sha256": "1ceef52570621785a021febff39003538f810179e5767ef5279a59c0c05c9985",
      "review_method": "Manual inspection of source crop and surrounding original page; labels encoded in this script.",
      "preceding_cipher_rune": "ᛗ",
      "review_class": "text",
      "line": 7,
      "line_runes_before_mark": 0,
      "page_rune_gap": 134,
      "master_marks_at_gap": "-;",
      "master_line": ";ᚪᛁ-ᚷᛄᛒᛡᛗ-ᛞᛈᚪᚳᛠᚷᛋ-ᛏᛈ-ᚩᛋᛏᛗᚱᚣ",
      "alignment_status": "Manual line/separator alignment to the master; not a fresh whole-page rune audit.",
      "physical_class": "split_one_plus_three",
      "role_status": "unresolved",
      "triangle_points": "right",
      "paired_fragment": {
        "line": 6,
        "bbox": [
          1782,
          1667,
          1791,
          1676
        ],
        "checks": [
          {
            "threshold": 80,
            "bbox": [
              1782,
              1667,
              1791,
              1676
            ],
            "dots": [
              [
                1782,
                1667,
                1791,
                1676,
                81
              ]
            ]
          },
          {
            "threshold": 100,
            "bbox": [
              1782,
              1667,
              1791,
              1676
            ],
            "dots": [
              [
                1782,
                1667,
                1791,
                1676,
                81
              ]
            ]
          },
          {
            "threshold": 120,
            "bbox": [
              1782,
              1667,
              1791,
              1676
            ],
            "dots": [
              [
                1782,
                1667,
                1791,
                1676,
                81
              ]
            ]
          }
        ],
        "same_rune_gap": 134,
        "physical_line_order": [
          6,
          7
        ],
        "dot_counts_in_reading_order": [
          1,
          3
        ],
        "interpretation": "Four visible dots across one line break, with no intervening rune. A wrapped four-dot symbol is plausible, but not imposed."
      }
    },
    {
      "page": 38,
      "source": "55.jpg",
      "color": "black",
      "bbox": [
        881,
        896,
        905,
        939
      ],
      "detections": [
        {
          "threshold": 80,
          "bbox": [
            881,
            896,
            905,
            939
          ],
          "dots": [
            [
              881,
              896,
              890,
              905,
              81
            ],
            [
              881,
              930,
              890,
              939,
              81
            ],
            [
              896,
              913,
              905,
              923,
              90
            ]
          ]
        },
        {
          "threshold": 100,
          "bbox": [
            881,
            896,
            905,
            939
          ],
          "dots": [
            [
              881,
              896,
              890,
              905,
              81
            ],
            [
              881,
              930,
              890,
              939,
              81
            ],
            [
              896,
              913,
              905,
              923,
              90
            ]
          ]
        },
        {
          "threshold": 120,
          "bbox": [
            881,
            896,
            905,
            939
          ],
          "dots": [
            [
              881,
              896,
              890,
              905,
              81
            ],
            [
              881,
              930,
              890,
              939,
              81
            ],
            [
              896,
              913,
              905,
              923,
              90
            ]
          ]
        }
      ],
      "id": "three-dot-15",
      "context_bbox": [
        783,
        832,
        1003,
        1002
      ],
      "crop": "three_dot_candidate_15.png",
      "source_sha256": "aec1898f599f57265d6422f3082a481db94a27f62230affbadee595d05077f8c",
      "review_method": "Manual inspection of source crop and surrounding original page; labels encoded in this script.",
      "preceding_cipher_rune": "ᚪ",
      "review_class": "text",
      "line": 2,
      "line_runes_before_mark": 5,
      "page_rune_gap": 28,
      "master_marks_at_gap": "-",
      "master_line": "ᚫᚢᛠᚢᚪ-ᚾᛝᚳ-ᛖᛈᚹᛉ-ᚢᛉᚫ-ᚾᛈᚳᚻᚱᚣ",
      "alignment_status": "Manual line/separator alignment to the master; not a fresh whole-page rune audit.",
      "physical_class": "inline_three_dot",
      "role_status": "unresolved",
      "triangle_points": "right",
      "expected_fourth_slot": {
        "bbox": [
          866,
          913,
          875,
          923
        ],
        "method": "Reflect middle square through the upper/lower square centerline. Assumes standard diamond geometry.",
        "checks": [
          {
            "threshold": 80,
            "ink": 29,
            "white": 61,
            "total": 90
          },
          {
            "threshold": 100,
            "ink": 29,
            "white": 61,
            "total": 90
          },
          {
            "threshold": 120,
            "ink": 29,
            "white": 61,
            "total": 90
          }
        ],
        "conclusion": "A filled fourth square is absent at this predicted position."
      }
    },
    {
      "page": 46,
      "source": "63.jpg",
      "color": "black",
      "bbox": [
        1098,
        1461,
        1122,
        1504
      ],
      "detections": [
        {
          "threshold": 80,
          "bbox": [
            1098,
            1461,
            1122,
            1504
          ],
          "dots": [
            [
              1098,
              1461,
              1107,
              1470,
              81
            ],
            [
              1098,
              1495,
              1107,
              1504,
              81
            ],
            [
              1112,
              1478,
              1122,
              1488,
              100
            ]
          ]
        },
        {
          "threshold": 100,
          "bbox": [
            1098,
            1461,
            1122,
            1504
          ],
          "dots": [
            [
              1098,
              1461,
              1107,
              1470,
              81
            ],
            [
              1098,
              1495,
              1107,
              1504,
              81
            ],
            [
              1112,
              1478,
              1122,
              1488,
              100
            ]
          ]
        },
        {
          "threshold": 120,
          "bbox": [
            1098,
            1461,
            1122,
            1504
          ],
          "dots": [
            [
              1098,
              1461,
              1107,
              1470,
              81
            ],
            [
              1098,
              1495,
              1107,
              1504,
              81
            ],
            [
              1112,
              1478,
              1122,
              1488,
              100
            ]
          ]
        }
      ],
      "id": "three-dot-16",
      "context_bbox": [
        1000,
        1397,
        1220,
        1567
      ],
      "crop": "three_dot_candidate_16.png",
      "source_sha256": "05538b8ebf9ed2a5716d94284a753dd26582a0227f139cc4a27dc3f07b15d301",
      "review_method": "Manual inspection of source crop and surrounding original page; labels encoded in this script.",
      "preceding_cipher_rune": "ᚪ",
      "review_class": "text",
      "line": 5,
      "line_runes_before_mark": 10,
      "page_rune_gap": 96,
      "master_marks_at_gap": "-",
      "master_line": "ᚩᚳᛞᛒ-ᛟᚩᛠᚾᚠᚪ-ᛚᛗᛖᛁᚦᚫᚪᛡᛄᛁᚪᚱ-ᚦᚱᛖ",
      "alignment_status": "Manual line/separator alignment to the master; not a fresh whole-page rune audit.",
      "physical_class": "inline_three_dot",
      "role_status": "unresolved",
      "triangle_points": "right",
      "expected_fourth_slot": {
        "bbox": [
          1083,
          1478,
          1093,
          1488
        ],
        "method": "Reflect middle square through the upper/lower square centerline. Assumes standard diamond geometry.",
        "checks": [
          {
            "threshold": 80,
            "ink": 29,
            "white": 71,
            "total": 100
          },
          {
            "threshold": 100,
            "ink": 29,
            "white": 71,
            "total": 100
          },
          {
            "threshold": 120,
            "ink": 29,
            "white": 71,
            "total": 100
          }
        ],
        "conclusion": "A filled fourth square is absent at this predicted position."
      }
    },
    {
      "page": 53,
      "source": "70.jpg",
      "color": "black",
      "bbox": [
        1250,
        2859,
        1283,
        2871
      ],
      "detections": [
        {
          "threshold": 120,
          "bbox": [
            1250,
            2859,
            1283,
            2871
          ],
          "dots": [
            [
              1250,
              2859,
              1256,
              2868,
              36
            ],
            [
              1263,
              2859,
              1270,
              2868,
              51
            ],
            [
              1277,
              2864,
              1283,
              2871,
              31
            ]
          ]
        }
      ],
      "id": "three-dot-17",
      "context_bbox": [
        1156,
        2780,
        1376,
        2950
      ],
      "crop": "three_dot_candidate_17.png",
      "source_sha256": "4ec7293ba72bd52384787646d204c8a68fefaf2d22673c40d27f23812d424548",
      "review_method": "Manual inspection of source crop and surrounding original page; labels encoded in this script.",
      "review_class": "illustration_fragment",
      "reason": "Components lie within tree/branch or insect illustrations; no textual separator alignment."
    },
    {
      "page": 53,
      "source": "70.jpg",
      "color": "black",
      "bbox": [
        1177,
        2948,
        1199,
        2995
      ],
      "detections": [
        {
          "threshold": 120,
          "bbox": [
            1177,
            2948,
            1199,
            2995
          ],
          "dots": [
            [
              1177,
              2989,
              1186,
              2995,
              45
            ],
            [
              1187,
              2948,
              1199,
              2961,
              103
            ],
            [
              1187,
              2964,
              1199,
              2970,
              42
            ]
          ]
        }
      ],
      "id": "three-dot-18",
      "context_bbox": [
        1078,
        2886,
        1298,
        3056
      ],
      "crop": "three_dot_candidate_18.png",
      "source_sha256": "4ec7293ba72bd52384787646d204c8a68fefaf2d22673c40d27f23812d424548",
      "review_method": "Manual inspection of source crop and surrounding original page; labels encoded in this script.",
      "review_class": "illustration_fragment",
      "reason": "Components lie within tree/branch or insect illustrations; no textual separator alignment."
    },
    {
      "page": 55,
      "source": "72.jpg",
      "color": "black",
      "bbox": [
        1316,
        2926,
        1349,
        2938
      ],
      "detections": [
        {
          "threshold": 120,
          "bbox": [
            1316,
            2926,
            1349,
            2938
          ],
          "dots": [
            [
              1316,
              2926,
              1322,
              2935,
              36
            ],
            [
              1329,
              2926,
              1336,
              2935,
              51
            ],
            [
              1343,
              2931,
              1349,
              2938,
              30
            ]
          ]
        }
      ],
      "id": "three-dot-19",
      "context_bbox": [
        1222,
        2847,
        1442,
        3017
      ],
      "crop": "three_dot_candidate_19.png",
      "source_sha256": "a80191592add93a86ed3868f9e4e6ba3944ec20c9ffccc7d3e221b461344beba",
      "review_method": "Manual inspection of source crop and surrounding original page; labels encoded in this script.",
      "review_class": "illustration_fragment",
      "reason": "Components lie within tree/branch or insect illustrations; no textual separator alignment."
    },
    {
      "page": 55,
      "source": "72.jpg",
      "color": "black",
      "bbox": [
        1243,
        3015,
        1265,
        3062
      ],
      "detections": [
        {
          "threshold": 120,
          "bbox": [
            1243,
            3015,
            1265,
            3062
          ],
          "dots": [
            [
              1243,
              3056,
              1252,
              3062,
              45
            ],
            [
              1253,
              3015,
              1265,
              3028,
              103
            ],
            [
              1253,
              3031,
              1265,
              3037,
              42
            ]
          ]
        }
      ],
      "id": "three-dot-20",
      "context_bbox": [
        1144,
        2953,
        1364,
        3123
      ],
      "crop": "three_dot_candidate_20.png",
      "source_sha256": "a80191592add93a86ed3868f9e4e6ba3944ec20c9ffccc7d3e221b461344beba",
      "review_method": "Manual inspection of source crop and surrounding original page; labels encoded in this script.",
      "review_class": "illustration_fragment",
      "reason": "Components lie within tree/branch or insect illustrations; no textual separator alignment."
    },
    {
      "page": 56,
      "source": "73.jpg",
      "color": "black",
      "bbox": [
        1668,
        708,
        1692,
        751
      ],
      "detections": [
        {
          "threshold": 80,
          "bbox": [
            1668,
            708,
            1692,
            751
          ],
          "dots": [
            [
              1668,
              708,
              1678,
              717,
              90
            ],
            [
              1668,
              742,
              1678,
              751,
              90
            ],
            [
              1683,
              725,
              1692,
              735,
              90
            ]
          ]
        },
        {
          "threshold": 100,
          "bbox": [
            1668,
            708,
            1692,
            751
          ],
          "dots": [
            [
              1668,
              708,
              1678,
              717,
              90
            ],
            [
              1668,
              742,
              1678,
              751,
              90
            ],
            [
              1683,
              725,
              1692,
              735,
              90
            ]
          ]
        },
        {
          "threshold": 120,
          "bbox": [
            1668,
            708,
            1692,
            751
          ],
          "dots": [
            [
              1668,
              708,
              1678,
              717,
              90
            ],
            [
              1668,
              742,
              1678,
              751,
              90
            ],
            [
              1683,
              725,
              1692,
              735,
              90
            ]
          ]
        }
      ],
      "id": "three-dot-21",
      "context_bbox": [
        1570,
        644,
        1790,
        814
      ],
      "crop": "three_dot_candidate_21.png",
      "source_sha256": "a4c1c9ae1246c3197fc1d7bd0155cbc97f60d4bba84a104d45f180feab1814dc",
      "review_method": "Manual inspection of source crop and surrounding original page; labels encoded in this script.",
      "preceding_cipher_rune": "ᚫ",
      "review_class": "text",
      "line": 1,
      "line_runes_before_mark": 19,
      "page_rune_gap": 19,
      "master_marks_at_gap": ";",
      "master_line": "ᚫᛄ-ᛟᛋᚱ.ᛗᚣᛚᚩᚻ-ᚩᚫ-ᚳᚦᚷᚹ-ᚹᛚᚫ;ᛉ",
      "alignment_status": "Manual line/separator alignment to the master; not a fresh whole-page rune audit.",
      "physical_class": "inline_three_dot",
      "role_status": "unresolved",
      "triangle_points": "right",
      "expected_fourth_slot": {
        "bbox": [
          1654,
          725,
          1663,
          735
        ],
        "method": "Reflect middle square through the upper/lower square centerline. Assumes standard diamond geometry.",
        "checks": [
          {
            "threshold": 80,
            "ink": 11,
            "white": 79,
            "total": 90
          },
          {
            "threshold": 100,
            "ink": 11,
            "white": 79,
            "total": 90
          },
          {
            "threshold": 120,
            "ink": 11,
            "white": 79,
            "total": 90
          }
        ],
        "conclusion": "A filled fourth square is absent at this predicted position."
      }
    },
    {
      "page": 57,
      "source": "74.jpg",
      "color": "black",
      "bbox": [
        1233,
        2446,
        1275,
        2492
      ],
      "detections": [
        {
          "threshold": 80,
          "bbox": [
            1233,
            2446,
            1275,
            2492
          ],
          "dots": [
            [
              1233,
              2446,
              1242,
              2454,
              52
            ],
            [
              1262,
              2471,
              1271,
              2479,
              52
            ],
            [
              1267,
              2483,
              1275,
              2492,
              72
            ]
          ]
        },
        {
          "threshold": 100,
          "bbox": [
            1233,
            2446,
            1275,
            2492
          ],
          "dots": [
            [
              1233,
              2446,
              1242,
              2454,
              52
            ],
            [
              1262,
              2471,
              1271,
              2479,
              52
            ],
            [
              1267,
              2483,
              1275,
              2492,
              72
            ]
          ]
        },
        {
          "threshold": 120,
          "bbox": [
            1233,
            2446,
            1275,
            2492
          ],
          "dots": [
            [
              1233,
              2446,
              1242,
              2454,
              52
            ],
            [
              1262,
              2471,
              1271,
              2479,
              52
            ],
            [
              1267,
              2483,
              1275,
              2492,
              72
            ]
          ]
        }
      ],
      "id": "three-dot-22",
      "context_bbox": [
        1144,
        2384,
        1364,
        2554
      ],
      "crop": "three_dot_candidate_22.png",
      "source_sha256": "1dabc100ddbf1fc49715219636984eb6ad96a2bd8035e196c12e66db77a1077b",
      "review_method": "Manual inspection of source crop and surrounding original page; labels encoded in this script.",
      "review_class": "illustration_fragment",
      "reason": "Components lie within tree/branch or insect illustrations; no textual separator alignment."
    },
    {
      "page": 57,
      "source": "74.jpg",
      "color": "black",
      "bbox": [
        1167,
        2833,
        1192,
        2879
      ],
      "detections": [
        {
          "threshold": 80,
          "bbox": [
            1167,
            2833,
            1192,
            2879
          ],
          "dots": [
            [
              1167,
              2867,
              1179,
              2879,
              96
            ],
            [
              1175,
              2858,
              1187,
              2871,
              84
            ],
            [
              1179,
              2833,
              1192,
              2842,
              101
            ]
          ]
        },
        {
          "threshold": 100,
          "bbox": [
            1167,
            2833,
            1192,
            2879
          ],
          "dots": [
            [
              1167,
              2867,
              1179,
              2879,
              96
            ],
            [
              1175,
              2858,
              1187,
              2871,
              84
            ],
            [
              1179,
              2833,
              1192,
              2842,
              101
            ]
          ]
        },
        {
          "threshold": 120,
          "bbox": [
            1167,
            2833,
            1192,
            2879
          ],
          "dots": [
            [
              1167,
              2867,
              1179,
              2879,
              96
            ],
            [
              1175,
              2858,
              1187,
              2871,
              84
            ],
            [
              1179,
              2833,
              1192,
              2842,
              101
            ]
          ]
        }
      ],
      "id": "three-dot-23",
      "context_bbox": [
        1069,
        2771,
        1289,
        2941
      ],
      "crop": "three_dot_candidate_23.png",
      "source_sha256": "1dabc100ddbf1fc49715219636984eb6ad96a2bd8035e196c12e66db77a1077b",
      "review_method": "Manual inspection of source crop and surrounding original page; labels encoded in this script.",
      "review_class": "illustration_fragment",
      "reason": "Components lie within tree/branch or insect illustrations; no textual separator alignment."
    }
  ],
  "known_solution_control": {
    "page": 56,
    "source": "73.jpg",
    "runes": 85,
    "gap": 19,
    "full_known_plaintext_record_matches": true,
    "retained_plaintext_source_sha256": "d4d7bcbbf0188b2ab4f0e6668b61b16c8217767c202519ccc2a4c5ded21f158a",
    "formula": "plaintext = (cipher - (prime[index] - 1)) mod29. Rune56 is an unenciphered F and does not consume a key position. Zero-based indices.",
    "unenciphered_F_offset": 56,
    "window": [
      19,
      29
    ],
    "continuous_indices": [
      19,
      20,
      21,
      22,
      23,
      24,
      25,
      26,
      27,
      28
    ],
    "reset_indices": [
      0,
      1,
      2,
      3,
      4,
      5,
      6,
      7,
      8,
      9
    ],
    "known_continuation": "THEREEXISTS",
    "reset_continuation": "PULWNJWEOPH",
    "changed_rune_positions": [
      19,
      20,
      21,
      22,
      23,
      24,
      25,
      26,
      27,
      28
    ],
    "conclusion": "The known method continues its prime sequence across this three-dot mark. Resetting to index0 here fails this ten-rune known continuation. This supplies no new plaintext or universal rule for unsolved sections."
  },
  "limitations": [
    "Fixed-size isolated-component screen is not an exhaustive inventory of merged or differently sized marks.",
    "Manual candidate review and alignment are not independent full-page transcription.",
    "Repeated decorative copies and threshold reruns are not independent evidence.",
    "Master remains unchanged; this ledger carries the physical classification."
  ]
}
