{
  "version": "2026-10-03.1",
  "cases": [
    {
      "id": "clean",
      "file": "control-clean.png",
      "expected": "MEET AT NOON",
      "kind": "synthetic control",
      "fix": "No adjustment needed; check every letter gap.",
      "sha256": "e26aa113f89cd9b56882e9194d8e53a46ff336e0821b10b714eb9b4f0eee6456",
      "width": 744,
      "height": 64,
      "default": {
        "morse": "-- . . - / .- - / -. --- --- -.",
        "text": "MEET AT NOON",
        "marks": 18,
        "lines": 1,
        "check": 1
      }
    },
    {
      "id": "rotated",
      "file": "control-rotated.png",
      "expected": "MEET AT NOON",
      "kind": "synthetic 90° rotation",
      "fix": "Rotate left 90°, then compare the text.",
      "sha256": "59f133d47d49bb1d52e7dd76f2609ca4a32d0d0a37a14400ff43c9ca1903c92f",
      "width": 64,
      "height": 744,
      "default": {
        "morse": ". / . / . / . / . / . / . / . / . / .",
        "text": "E E E E E E E E E E",
        "marks": 10,
        "lines": 10,
        "check": 0.82
      },
      "after_preprocessing": {
        "morse": "-- . . - / .- - / -. --- --- -.",
        "text": "MEET AT NOON",
        "marks": 18,
        "lines": 1,
        "check": 1
      }
    },
    {
      "id": "inverted",
      "file": "control-inverted.png",
      "expected": "MEET AT NOON",
      "kind": "synthetic inversion",
      "fix": "Automatic polarity handles this input; check Invert if needed.",
      "sha256": "baf240fad8828534391db093060610672ab9677193972628d40c68c1549fd536",
      "width": 744,
      "height": 64,
      "default": {
        "morse": "-- . . - / .- - / -. --- --- -.",
        "text": "MEET AT NOON",
        "marks": 18,
        "lines": 1,
        "check": 1
      }
    },
    {
      "id": "low-contrast",
      "file": "control-low-contrast.png",
      "expected": "MEET AT NOON",
      "kind": "synthetic low contrast",
      "fix": "Start with Auto threshold; move the slider only if mark cores disappear.",
      "sha256": "ce8a15adbf86d0f8a976ea53aa6683bef4d1d79d667f0cf4c905468733d9b8f0",
      "width": 744,
      "height": 64,
      "default": {
        "morse": "-- . . - / .- - / -. --- --- -.",
        "text": "MEET AT NOON",
        "marks": 18,
        "lines": 1,
        "check": 1
      }
    },
    {
      "id": "border",
      "file": "control-border.png",
      "expected": "MEET AT NOON",
      "kind": "synthetic screenshot with caption and border",
      "fix": "Crop left 3.73%, top 38.89%, right 96.27%, bottom 74.44%. Keep only the strip.",
      "sha256": "3b99dff7c569f200d8205052dd1fafc981a7cee2962ec5ae57acce7bf0e3f1b6",
      "width": 804,
      "height": 180,
      "default": {
        "morse": "- / ......... .............. / . / . ..... ... .......... . / -",
        "text": "T ▉▉ E E5S▉E T",
        "marks": 46,
        "lines": 4,
        "check": 0.82
      },
      "recovery_crop": {
        "left": 30,
        "top": 70,
        "width": 744,
        "height": 64
      },
      "after_preprocessing": {
        "morse": "-- . . - / .- - / -. --- --- -.",
        "text": "MEET AT NOON",
        "marks": 18,
        "lines": 1,
        "check": 1
      }
    },
    {
      "id": "commons-sos",
      "file": "commons-sos.png",
      "expected": "SOS prosign (...---...)",
      "kind": "independent public-domain diagram",
      "source": "https://commons.wikimedia.org/wiki/File:SOS_morse_code.png",
      "credit": "Bonzo; spacing revision by Verdy p. Public domain.",
      "fix": "It is a continuous SOS prosign, not three spaced letters. Review the SOS candidate or insert spaces as ... --- ... for the letter translator.",
      "sha256": "de35ec99cbe04a8b175eae26140e0fa4ea658cc1b46cb8f62c2548e82df4161a",
      "width": 252,
      "height": 22,
      "default": {
        "morse": ".-....---...",
        "text": "▉",
        "marks": 12,
        "lines": 1,
        "check": 0.4
      }
    },
    {
      "id": "commons-sos-inverted",
      "file": "commons-sos-inverted.png",
      "expected": "SOS prosign (...---...)",
      "kind": "inverted derivative of independent diagram",
      "source": "https://commons.wikimedia.org/wiki/File:SOS_morse_code.png",
      "credit": "Bonzo / Verdy p. Public domain. Colours inverted by this site.",
      "fix": "Invert separates the marks. The missing letter gaps still need the SOS prosign interpretation.",
      "sha256": "62ab7d14b56a17ebd8dc2eb84990a46d9afc8636ff7c3cc1939b2dea3122e5bc",
      "width": 252,
      "height": 22,
      "default": {
        "morse": ".-....---...",
        "text": "▉",
        "marks": 12,
        "lines": 1,
        "check": 0.4
      }
    },
    {
      "id": "commons-metadata",
      "file": "commons-metadata.png",
      "expected": "METADATA",
      "kind": "independent stylised diagram",
      "source": "https://commons.wikimedia.org/wiki/File:The_word_Metadata_in_Wikidata_Morse_code.svg",
      "credit": "Daniel Mietchen, CC0 1.0. SVG rasterised on white.",
      "fix": "This Wikidata-style layout is not a horizontal short/long strip. Compare it manually with the source; automatic width detection may fail.",
      "sha256": "645de85fbcfeccfaff599cff8b2560c1ce873789fa3c6dc9481ec6490970cfe7",
      "width": 512,
      "height": 202,
      "default": {
        "morse": ". .. .. . .... . ..",
        "text": "EIIEHEI",
        "marks": 13,
        "lines": 1,
        "check": 0.82
      }
    },
    {
      "id": "commons-v-photo",
      "file": "commons-v-photo.jpg",
      "expected": "V (...-)",
      "kind": "independent outdoor photograph",
      "source": "https://commons.wikimedia.org/wiki/File:Three_dots_and_a_dash_(Morse_Code)_-_geograph.org.uk_-_668618.jpg",
      "credit": "Sebastian Ballard / Geograph, CC BY-SA 2.0. Original unchanged.",
      "license": "https://creativecommons.org/licenses/by-sa/2.0/",
      "fix": "The outdoor shapes are not a clean printed row. Read three dots and a dash manually as V; do not rely on automatic output.",
      "sha256": "0522409ed15d19e387cc3dd5955323e7844bdc7f15c278832f84787ecae30a8e",
      "width": 640,
      "height": 480,
      "default": {
        "morse": "-..-....",
        "text": "▉",
        "marks": 8,
        "lines": 1,
        "check": 0.4
      }
    }
  ],
  "measured_at": "2026-10-03T02:14:08.321Z",
  "method": "Default automatic threshold and polarity; native pixels, no manual correction. Separate recovered outputs use only the stated rotation or crop. No accuracy ranking or representative-photo claim."
}
