{
  "createdAt": "2026-10-31T15:50:26.055Z",
  "classification": "20 constructed boundary cases, not random files or real users",
  "cases": [
    {
      "id": "C01",
      "family": "container",
      "feature": "LF baseline",
      "input": "1\n00:00:01,125 --> 00:00:03,875\nOne clear source.\n\n2\n00:00:04,000 --> 00:00:06,250\nKeep the observation time.\n",
      "expected": [
        {
          "start": 1125,
          "end": 3875,
          "text": "One clear source."
        },
        {
          "start": 4000,
          "end": 6250,
          "text": "Keep the observation time."
        }
      ]
    },
    {
      "id": "C02",
      "family": "container",
      "feature": "CRLF equivalent",
      "input": "1\r\n00:00:01,125 --> 00:00:03,875\r\nOne clear source.\r\n\r\n2\r\n00:00:04,000 --> 00:00:06,250\r\nKeep the observation time.\r\n",
      "expected": [
        {
          "start": 1125,
          "end": 3875,
          "text": "One clear source."
        },
        {
          "start": 4000,
          "end": 6250,
          "text": "Keep the observation time."
        }
      ]
    },
    {
      "id": "C03",
      "family": "container",
      "feature": "UTF-8 BOM",
      "input": "﻿1\n00:00:01,125 --> 00:00:03,875\nOne clear source.\n\n2\n00:00:04,000 --> 00:00:06,250\nKeep the observation time.\n",
      "expected": [
        {
          "start": 1125,
          "end": 3875,
          "text": "One clear source."
        },
        {
          "start": 4000,
          "end": 6250,
          "text": "Keep the observation time."
        }
      ]
    },
    {
      "id": "C04",
      "family": "container",
      "feature": "CR-only equivalent",
      "input": "1\r00:00:01,125 --> 00:00:03,875\rOne clear source.\r\r2\r00:00:04,000 --> 00:00:06,250\rKeep the observation time.\r",
      "expected": [
        {
          "start": 1125,
          "end": 3875,
          "text": "One clear source."
        },
        {
          "start": 4000,
          "end": 6250,
          "text": "Keep the observation time."
        }
      ]
    },
    {
      "id": "C05",
      "family": "payload",
      "feature": "German Unicode",
      "input": "1\n00:00:01,000 --> 00:00:04,000\nGrüße: größer, Straße, „klar“.\n",
      "expected": [
        {
          "start": 1000,
          "end": 4000,
          "text": "Grüße: größer, Straße, „klar“."
        }
      ]
    },
    {
      "id": "C06",
      "family": "payload",
      "feature": "Emoji and combining marks",
      "input": "1\n00:00:01,000 --> 00:00:04,000\n👩🏽‍💻 erklärt: é ≠ e.\n",
      "expected": [
        {
          "start": 1000,
          "end": 4000,
          "text": "👩🏽‍💻 erklärt: é ≠ e."
        }
      ]
    },
    {
      "id": "C07",
      "family": "payload",
      "feature": "Two lines with speaker label",
      "input": "1\n00:00:01,000 --> 00:00:04,000\nA: Welche Quelle?\nB: Eigene Analytics.\n",
      "expected": [
        {
          "start": 1000,
          "end": 4000,
          "text": "A: Welche Quelle?\nB: Eigene Analytics."
        }
      ]
    },
    {
      "id": "C08",
      "family": "payload",
      "feature": "Trailing spaces",
      "input": "1\n00:00:01,000 --> 00:00:04,000\nKeep two spaces here.  \n",
      "expected": [
        {
          "start": 1000,
          "end": 4000,
          "text": "Keep two spaces here.  "
        }
      ]
    },
    {
      "id": "C09",
      "family": "payload",
      "feature": "Leading spaces",
      "input": "1\n00:00:01,000 --> 00:00:04,000\n  Keep two spaces first.\n",
      "expected": [
        {
          "start": 1000,
          "end": 4000,
          "text": "  Keep two spaces first."
        }
      ]
    },
    {
      "id": "C10",
      "family": "container",
      "feature": "Whitespace-only separator",
      "input": "1\n00:00:01,125 --> 00:00:03,875\nOne clear source.\n \t\n2\n00:00:04,000 --> 00:00:06,250\nKeep the observation time.\n",
      "expected": [
        {
          "start": 1125,
          "end": 3875,
          "text": "One clear source."
        },
        {
          "start": 4000,
          "end": 6250,
          "text": "Keep the observation time."
        }
      ]
    },
    {
      "id": "C11",
      "family": "container",
      "feature": "Nonconsecutive identifiers",
      "input": "10\n00:00:01,125 --> 00:00:03,875\nOne clear source.\n\n20\n00:00:04,000 --> 00:00:06,250\nKeep the observation time.\n",
      "expected": [
        {
          "start": 1125,
          "end": 3875,
          "text": "One clear source."
        },
        {
          "start": 4000,
          "end": 6250,
          "text": "Keep the observation time."
        }
      ]
    },
    {
      "id": "C12",
      "family": "boundary",
      "feature": "Italic markup",
      "input": "1\n00:00:01,000 --> 00:00:04,000\n<i>Keep the source.</i>\n",
      "expected": [
        {
          "start": 1000,
          "end": 4000,
          "text": "<i>Keep the source.</i>"
        }
      ]
    },
    {
      "id": "C13",
      "family": "boundary",
      "feature": "Literal angle brackets",
      "input": "1\n00:00:01,000 --> 00:00:04,000\nA < B and C > D.\n",
      "expected": [
        {
          "start": 1000,
          "end": 4000,
          "text": "A < B and C > D."
        }
      ]
    },
    {
      "id": "C14",
      "family": "boundary",
      "feature": "Overlapping cues",
      "input": "1\n00:00:01,000 --> 00:00:04,000\nSpeaker A.\n\n2\n00:00:03,000 --> 00:00:05,000\nSpeaker B.\n",
      "expected": [
        {
          "start": 1000,
          "end": 4000,
          "text": "Speaker A."
        },
        {
          "start": 3000,
          "end": 5000,
          "text": "Speaker B."
        }
      ]
    },
    {
      "id": "C15",
      "family": "boundary",
      "feature": "End before start",
      "input": "1\n00:00:04,000 --> 00:00:03,000\nReversed interval.\n",
      "expected": [
        {
          "start": 4000,
          "end": 3000,
          "text": "Reversed interval."
        }
      ]
    },
    {
      "id": "C16",
      "family": "boundary",
      "feature": "Empty first cue",
      "input": "1\n00:00:01,000 --> 00:00:02,000\n\n\n2\n00:00:03,000 --> 00:00:05,000\nSecond cue survives?\n",
      "expected": [
        {
          "start": 1000,
          "end": 2000,
          "text": ""
        },
        {
          "start": 3000,
          "end": 5000,
          "text": "Second cue survives?"
        }
      ]
    },
    {
      "id": "C17",
      "family": "boundary",
      "feature": "Dot timestamp variation",
      "input": "1\n00:00:01.125 --> 00:00:03.875\nOne clear source.\n\n2\n00:00:04.000 --> 00:00:06.250\nKeep the observation time.\n",
      "expected": [
        {
          "start": 1125,
          "end": 3875,
          "text": "One clear source."
        },
        {
          "start": 4000,
          "end": 6250,
          "text": "Keep the observation time."
        }
      ]
    },
    {
      "id": "C18",
      "family": "payload",
      "feature": "Three lines",
      "input": "1\n00:00:01,000 --> 00:00:04,000\nFirst line.\nSecond line.\nThird line.\n",
      "expected": [
        {
          "start": 1000,
          "end": 4000,
          "text": "First line.\nSecond line.\nThird line."
        }
      ]
    },
    {
      "id": "C19",
      "family": "unicode-pair",
      "feature": "20 NFC accented letters",
      "input": "1\n00:00:01,000 --> 00:00:02,000\néééééééééééééééééééé\n",
      "expected": [
        {
          "start": 1000,
          "end": 2000,
          "text": "éééééééééééééééééééé"
        }
      ]
    },
    {
      "id": "C20",
      "family": "unicode-pair",
      "feature": "20 NFD accented letters",
      "input": "1\n00:00:01,000 --> 00:00:02,000\néééééééééééééééééééé\n",
      "expected": [
        {
          "start": 1000,
          "end": 2000,
          "text": "éééééééééééééééééééé"
        }
      ]
    }
  ]
}
