{
  "date": "2026-10-08",
  "runtime": "v24.19.0",
  "app_sha256": "b5b23e8c7028a1ee6ede9b41b459f5213af44661fc42f3d8c07b4a45f99c0644",
  "method": "Synthetic fixtures, not Claude samples. Actual homepage script in minimal DOM. Checkbox state and dash mode recorded in each row. Observations are fixture-specific, not general application tests.",
  "rows": [
    {
      "label": "Encoded marker",
      "stage": "direct string",
      "mode": "keep",
      "enabled": true,
      "input": "https://example.com/#A%E2%80%8BB",
      "output": "https://example.com/#A%E2%80%8BB",
      "input_codepoints": "U+0068 U+0074 U+0074 U+0070 U+0073 U+003A U+002F U+002F U+0065 U+0078 U+0061 U+006D U+0070 U+006C U+0065 U+002E U+0063 U+006F U+006D U+002F U+0023 U+0041 U+0025 U+0045 U+0032 U+0025 U+0038 U+0030 U+0025 U+0038 U+0042 U+0042",
      "output_codepoints": "U+0068 U+0074 U+0074 U+0070 U+0073 U+003A U+002F U+002F U+0065 U+0078 U+0061 U+006D U+0070 U+006C U+0065 U+002E U+0063 U+006F U+006D U+002F U+0023 U+0041 U+0025 U+0045 U+0032 U+0025 U+0038 U+0030 U+0025 U+0038 U+0042 U+0042",
      "status": "No selected invisible characters found",
      "before": {
        "hash": "#A%E2%80%8BB",
        "decoded": "A​B",
        "decodeAccepted": true
      },
      "after": {
        "hash": "#A%E2%80%8BB",
        "decoded": "A​B",
        "decodeAccepted": true
      }
    },
    {
      "label": "Literal marker",
      "stage": "direct string",
      "mode": "keep",
      "enabled": true,
      "input": "https://example.com/#A​B",
      "output": "https://example.com/#AB",
      "input_codepoints": "U+0068 U+0074 U+0074 U+0070 U+0073 U+003A U+002F U+002F U+0065 U+0078 U+0061 U+006D U+0070 U+006C U+0065 U+002E U+0063 U+006F U+006D U+002F U+0023 U+0041 U+200B U+0042",
      "output_codepoints": "U+0068 U+0074 U+0074 U+0070 U+0073 U+003A U+002F U+002F U+0065 U+0078 U+0061 U+006D U+0070 U+006C U+0065 U+002E U+0063 U+006F U+006D U+002F U+0023 U+0041 U+0042",
      "status": "Removed 1 invisible character",
      "before": {
        "hash": "#A%E2%80%8BB",
        "decoded": "A​B",
        "decodeAccepted": true
      },
      "after": {
        "hash": "#AB",
        "decoded": "AB",
        "decodeAccepted": true
      }
    },
    {
      "label": "Encoded space",
      "stage": "direct string",
      "mode": "keep",
      "enabled": true,
      "input": "https://example.com/#A%20B",
      "output": "https://example.com/#A%20B",
      "input_codepoints": "U+0068 U+0074 U+0074 U+0070 U+0073 U+003A U+002F U+002F U+0065 U+0078 U+0061 U+006D U+0070 U+006C U+0065 U+002E U+0063 U+006F U+006D U+002F U+0023 U+0041 U+0025 U+0032 U+0030 U+0042",
      "output_codepoints": "U+0068 U+0074 U+0074 U+0070 U+0073 U+003A U+002F U+002F U+0065 U+0078 U+0061 U+006D U+0070 U+006C U+0065 U+002E U+0063 U+006F U+006D U+002F U+0023 U+0041 U+0025 U+0032 U+0030 U+0042",
      "status": "No selected invisible characters found",
      "before": {
        "hash": "#A%20B",
        "decoded": "A B",
        "decodeAccepted": true
      },
      "after": {
        "hash": "#A%20B",
        "decoded": "A B",
        "decodeAccepted": true
      }
    },
    {
      "label": "Malformed escape",
      "stage": "direct string",
      "mode": "keep",
      "enabled": true,
      "input": "https://example.com/#A%ZZB",
      "output": "https://example.com/#A%ZZB",
      "input_codepoints": "U+0068 U+0074 U+0074 U+0070 U+0073 U+003A U+002F U+002F U+0065 U+0078 U+0061 U+006D U+0070 U+006C U+0065 U+002E U+0063 U+006F U+006D U+002F U+0023 U+0041 U+0025 U+005A U+005A U+0042",
      "output_codepoints": "U+0068 U+0074 U+0074 U+0070 U+0073 U+003A U+002F U+002F U+0065 U+0078 U+0061 U+006D U+0070 U+006C U+0065 U+002E U+0063 U+006F U+006D U+002F U+0023 U+0041 U+0025 U+005A U+005A U+0042",
      "status": "No selected invisible characters found",
      "before": {
        "hash": "#A%ZZB",
        "decodeAccepted": false,
        "errorName": "URIError"
      },
      "after": {
        "hash": "#A%ZZB",
        "decodeAccepted": false,
        "errorName": "URIError"
      }
    }
  ]
}