{
  "date": "2026-10-04",
  "runtime": "v24.19.0",
  "app_sha256": "b5b23e8c7028a1ee6ede9b41b459f5213af44661fc42f3d8c07b4a45f99c0644",
  "method": "Synthetic fixtures, not Claude samples. Actual homepage script in minimal DOM. Invisible checkbox on; dash Keep unless matrix says otherwise. Observations are fixture-specific, not general application tests.",
  "rows": [
    {
      "label": "Hidden header",
      "stage": "direct string",
      "mode": "keep",
      "input": "em​ail,name\r\na@example.com,Ada",
      "output": "email,name\r\na@example.com,Ada",
      "input_codepoints": "U+0065 U+006D U+200B U+0061 U+0069 U+006C U+002C U+006E U+0061 U+006D U+0065 U+000D U+000A U+0061 U+0040 U+0065 U+0078 U+0061 U+006D U+0070 U+006C U+0065 U+002E U+0063 U+006F U+006D U+002C U+0041 U+0064 U+0061",
      "output_codepoints": "U+0065 U+006D U+0061 U+0069 U+006C U+002C U+006E U+0061 U+006D U+0065 U+000D U+000A U+0061 U+0040 U+0065 U+0078 U+0061 U+006D U+0070 U+006C U+0065 U+002E U+0063 U+006F U+006D U+002C U+0041 U+0064 U+0061",
      "status": "Removed 1 invisible character",
      "before": {
        "headers": [
          "em​ail",
          "name"
        ],
        "emailIndex": -1,
        "distinctHeaders": 2,
        "headerCount": 2,
        "recordBreaks": 1
      },
      "after": {
        "headers": [
          "email",
          "name"
        ],
        "emailIndex": 0,
        "distinctHeaders": 2,
        "headerCount": 2,
        "recordBreaks": 1
      }
    },
    {
      "label": "Non-breaking space header",
      "stage": "direct string",
      "mode": "keep",
      "input": "email ,name\r\na@example.com,Ada",
      "output": "email ,name\r\na@example.com,Ada",
      "input_codepoints": "U+0065 U+006D U+0061 U+0069 U+006C U+00A0 U+002C U+006E U+0061 U+006D U+0065 U+000D U+000A U+0061 U+0040 U+0065 U+0078 U+0061 U+006D U+0070 U+006C U+0065 U+002E U+0063 U+006F U+006D U+002C U+0041 U+0064 U+0061",
      "output_codepoints": "U+0065 U+006D U+0061 U+0069 U+006C U+00A0 U+002C U+006E U+0061 U+006D U+0065 U+000D U+000A U+0061 U+0040 U+0065 U+0078 U+0061 U+006D U+0070 U+006C U+0065 U+002E U+0063 U+006F U+006D U+002C U+0041 U+0064 U+0061",
      "status": "No selected invisible characters found",
      "before": {
        "headers": [
          "email ",
          "name"
        ],
        "emailIndex": -1,
        "distinctHeaders": 2,
        "headerCount": 2,
        "recordBreaks": 1
      },
      "after": {
        "headers": [
          "email ",
          "name"
        ],
        "emailIndex": -1,
        "distinctHeaders": 2,
        "headerCount": 2,
        "recordBreaks": 1
      }
    },
    {
      "label": "Two headers become one",
      "stage": "direct string",
      "mode": "keep",
      "input": "email,em​ail\r\na@example.com,b@example.com",
      "output": "email,email\r\na@example.com,b@example.com",
      "input_codepoints": "U+0065 U+006D U+0061 U+0069 U+006C U+002C U+0065 U+006D U+200B U+0061 U+0069 U+006C U+000D U+000A U+0061 U+0040 U+0065 U+0078 U+0061 U+006D U+0070 U+006C U+0065 U+002E U+0063 U+006F U+006D U+002C U+0062 U+0040 U+0065 U+0078 U+0061 U+006D U+0070 U+006C U+0065 U+002E U+0063 U+006F U+006D",
      "output_codepoints": "U+0065 U+006D U+0061 U+0069 U+006C U+002C U+0065 U+006D U+0061 U+0069 U+006C U+000D U+000A U+0061 U+0040 U+0065 U+0078 U+0061 U+006D U+0070 U+006C U+0065 U+002E U+0063 U+006F U+006D U+002C U+0062 U+0040 U+0065 U+0078 U+0061 U+006D U+0070 U+006C U+0065 U+002E U+0063 U+006F U+006D",
      "status": "Removed 1 invisible character",
      "before": {
        "headers": [
          "email",
          "em​ail"
        ],
        "emailIndex": 0,
        "distinctHeaders": 2,
        "headerCount": 2,
        "recordBreaks": 1
      },
      "after": {
        "headers": [
          "email",
          "email"
        ],
        "emailIndex": 0,
        "distinctHeaders": 1,
        "headerCount": 2,
        "recordBreaks": 1
      }
    }
  ]
}