[
  {
    "version": "1",
    "caseId": "name-apostrophe",
    "input": "O'Brien",
    "context": "full-name-v1",
    "expected": "accept",
    "expectedValue": "O'Brien",
    "note": "Preserve the apostrophe in storage and output."
  },
  {
    "version": "1",
    "caseId": "name-hyphens",
    "input": "Anne-Marie Smith-Jones",
    "context": "full-name-v1",
    "expected": "accept",
    "expectedValue": "Anne-Marie Smith-Jones",
    "note": "Do not strip hyphens."
  },
  {
    "version": "1",
    "caseId": "name-family-spaces",
    "input": "Ana De la Cruz",
    "context": "full-name-v1",
    "expected": "accept",
    "expectedValue": "Ana De la Cruz",
    "note": "Spaces do not identify surname boundaries."
  },
  {
    "version": "1",
    "caseId": "name-one-letter",
    "input": "O",
    "context": "full-name-v1",
    "expected": "accept",
    "expectedValue": "O",
    "note": "No two-character minimum."
  },
  {
    "version": "1",
    "caseId": "name-cjk",
    "input": "李",
    "context": "full-name-v1",
    "expected": "accept",
    "expectedValue": "李",
    "note": "One Unicode code point; three UTF-8 bytes."
  },
  {
    "version": "1",
    "caseId": "name-rtl",
    "input": "محمد",
    "context": "full-name-v1",
    "expected": "accept",
    "expectedValue": "محمد",
    "note": "Check layout and round-trip storage for right-to-left text."
  },
  {
    "version": "1",
    "caseId": "name-mononym",
    "input": "Sukarno",
    "context": "full-name-v1",
    "expected": "accept",
    "expectedValue": "Sukarno",
    "note": "Do not require a separate family-name field."
  },
  {
    "version": "1",
    "caseId": "name-nfc",
    "input": "José",
    "context": "full-name-v1",
    "expected": "accept",
    "expectedValue": "José",
    "note": "Precomposed accented character."
  },
  {
    "version": "1",
    "caseId": "name-nfd",
    "input": "José",
    "context": "full-name-v1",
    "expected": "normalize",
    "expectedValue": "José",
    "note": "Decomposed input should normalize to the same NFC value."
  },
  {
    "version": "1",
    "caseId": "name-trim",
    "input": " Ana ",
    "context": "full-name-v1",
    "expected": "normalize",
    "expectedValue": "Ana",
    "note": "Trim outer spaces without changing the name."
  },
  {
    "version": "1",
    "caseId": "name-inner-spaces",
    "input": "Ana  Maria",
    "context": "full-name-v1",
    "expected": "accept",
    "expectedValue": "Ana  Maria",
    "note": "Do not collapse internal spaces under this policy."
  },
  {
    "version": "1",
    "caseId": "name-empty",
    "input": "",
    "context": "full-name-v1",
    "expected": "reject",
    "expectedValue": "",
    "note": "Required field."
  },
  {
    "version": "1",
    "caseId": "name-newline",
    "input": "Ana\nMaria",
    "context": "full-name-v1",
    "expected": "reject",
    "expectedValue": "",
    "note": "Single-line field; do not silently delete the newline."
  },
  {
    "version": "1",
    "caseId": "name-limit",
    "input": "李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李",
    "context": "full-name-v1",
    "expected": "accept",
    "expectedValue": "李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李",
    "note": "At the declared code-point boundary; not a plausible personal name."
  },
  {
    "version": "1",
    "caseId": "name-over-limit",
    "input": "李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李李",
    "context": "full-name-v1",
    "expected": "reject",
    "expectedValue": "",
    "note": "Over the application limit; report it without truncation."
  },
  {
    "version": "1",
    "caseId": "name-sql-text",
    "input": "Robert'); DROP TABLE Students;--",
    "context": "full-name-v1",
    "expected": "accept",
    "expectedValue": "Robert'); DROP TABLE Students;--",
    "note": "Regression payload: assert literal storage with parameterized queries; never execute input."
  }
]