{
  "schemaVersion": "1.0.0",
  "corpusVersion": "1.0.0",
  "corpusId": "io.csvtool.csv-repair-corpus",
  "publishedAt": "2026-07-17",
  "license": {
    "spdx": "CC0-1.0",
    "name": "CC0 1.0 Universal",
    "path": "LICENSE.txt",
    "url": "https://creativecommons.org/publicdomain/zero/1.0/"
  },
  "provenance": {
    "kind": "synthetic",
    "method": "Hand-authored deterministic edge cases created for this corpus",
    "containsPersonalData": false,
    "containsCustomerData": false,
    "thirdPartySources": []
  },
  "integrity": {
    "algorithm": "sha256",
    "publishedDigestScope": "Exact bytes at each fixture path",
    "decodedDigestScope": "Bytes after Base64 transport decoding, when decodedSha256 is present"
  },
  "defaultRepairOptions": {
    "trimWhitespace": false,
    "removeEmptyRows": false,
    "removeInvisibleCharacters": false,
    "escapeFormulaCells": false
  },
  "invariantDefinitions": {
    "preserve-non-empty-data-cell-sequence": "Default repair preserves the order and multiplicity of every non-empty parsed data cell.",
    "preserve-original-row-prefixes": "Default repair may append empty padding but does not replace existing parsed cells.",
    "preserve-row-count-by-default": "Default repair does not remove parsed rows.",
    "preserve-quoted-field-values": "Commas, newlines, and escaped quotes inside quoted fields survive parsing and repair.",
    "strip-utf8-bom-only": "A leading UTF-8 BOM is removed without changing decoded data values.",
    "preserve-decoded-encoding-values": "Byte decoding produces the documented Unicode values before repair and default repair preserves them.",
    "preserve-duplicate-row-multiplicity": "Duplicate non-empty rows remain present unless an explicit future option documents otherwise.",
    "optional-content-change-requires-opt-in": "An optional content-changing repair is reported but not applied with default options.",
    "formula-values-unchanged-by-default": "Formula-like cells are warnings and remain byte-for-byte equivalent as parsed values by default.",
    "formula-escape-adds-single-apostrophe": "The export-hardening verification prefixes each formula-like cell with exactly one apostrophe.",
    "parser-error-remains-visible": "An ambiguous malformed quote produces an explicit parse-error finding and invalid validation result.",
    "preserve-detected-delimiter": "Repair output uses the detected input delimiter."
  },
  "fixtures": [
    {
      "id": "quoted-fields",
      "title": "Quoted commas, multiline fields, and escaped quotes",
      "path": "fixtures/quoted-fields.csv",
      "downloadUrl": "/csv-repair-corpus/v1/fixtures/quoted-fields.csv",
      "publishedMediaType": "text/csv",
      "decodedMediaType": "text/csv",
      "transportEncoding": "identity",
      "sourceEncoding": "utf-8",
      "byteLength": 94,
      "sha256": "2ded0b27d325e5185817463047903e4d1cc046f6873d683417ab797d7f7301f5",
      "coverage": [
        "quoted-comma",
        "quoted-newline",
        "escaped-double-quote"
      ],
      "expected": {
        "delimiter": ",",
        "linebreak": "\n",
        "original": {
          "dataRows": 2,
          "columns": 3
        },
        "validationValid": true,
        "findings": [],
        "actions": [
          {
            "code": "normalize-output-format",
            "count": 1,
            "applied": true,
            "optional": false
          }
        ],
        "validationStats": {
          "rows": 2,
          "columns": 3,
          "emptyRows": 0,
          "inconsistentRows": 0,
          "emptyHeaders": 0,
          "duplicateHeaders": 0,
          "duplicateRows": 0,
          "parseErrors": 0
        }
      },
      "allowedRepairs": {
        "automatic": [
          "normalize-output-format"
        ],
        "optional": []
      },
      "nonLossInvariants": [
        "preserve-non-empty-data-cell-sequence",
        "preserve-original-row-prefixes",
        "preserve-row-count-by-default",
        "preserve-quoted-field-values"
      ]
    },
    {
      "id": "utf8-bom",
      "title": "UTF-8 BOM and UTF-8 non-ASCII values",
      "path": "fixtures/utf8-bom.csv",
      "downloadUrl": "/csv-repair-corpus/v1/fixtures/utf8-bom.csv",
      "publishedMediaType": "text/csv",
      "decodedMediaType": "text/csv",
      "transportEncoding": "identity",
      "sourceEncoding": "utf-8",
      "byteLength": 47,
      "sha256": "fb4647489418ca358c7ef3424e610e5ec6fd8477ef6c4bdce1b12e3deed6906f",
      "coverage": [
        "utf8-bom",
        "utf8-non-ascii"
      ],
      "expected": {
        "delimiter": ",",
        "linebreak": "\n",
        "original": {
          "dataRows": 2,
          "columns": 2
        },
        "validationValid": true,
        "findings": [
          {
            "code": "utf8-bom",
            "severity": "warning",
            "count": 1,
            "rows": [
              1
            ],
            "columns": [
              1
            ]
          }
        ],
        "actions": [
          {
            "code": "remove-utf8-bom",
            "count": 1,
            "applied": true,
            "optional": false
          },
          {
            "code": "normalize-output-format",
            "count": 1,
            "applied": true,
            "optional": false
          }
        ],
        "validationStats": {
          "rows": 2,
          "columns": 2,
          "emptyRows": 0,
          "inconsistentRows": 0,
          "emptyHeaders": 0,
          "duplicateHeaders": 0,
          "duplicateRows": 0,
          "parseErrors": 0
        }
      },
      "allowedRepairs": {
        "automatic": [
          "remove-utf8-bom",
          "normalize-output-format"
        ],
        "optional": []
      },
      "nonLossInvariants": [
        "preserve-non-empty-data-cell-sequence",
        "preserve-original-row-prefixes",
        "preserve-row-count-by-default",
        "strip-utf8-bom-only"
      ]
    },
    {
      "id": "latin1",
      "title": "ISO-8859-1 bytes in an ASCII-safe Base64 transport",
      "path": "fixtures/latin1.csv.base64.txt",
      "downloadUrl": "/csv-repair-corpus/v1/fixtures/latin1.csv.base64.txt",
      "publishedMediaType": "text/plain",
      "decodedMediaType": "text/csv",
      "transportEncoding": "base64",
      "sourceEncoding": "iso-8859-1",
      "byteLength": 53,
      "decodedByteLength": 39,
      "sha256": "c4d336b55b080bc1bf73523628610767be572df0e852d6ce32992b5e4133572c",
      "decodedSha256": "877409e6539aef8f53e209a1a91429b733b9314362a9f31a69df479b8837a137",
      "coverage": [
        "latin1-bytes",
        "binary-safe-transport",
        "non-ascii-decoding"
      ],
      "expected": {
        "delimiter": ",",
        "linebreak": "\n",
        "original": {
          "dataRows": 2,
          "columns": 2
        },
        "validationValid": true,
        "findings": [],
        "actions": [
          {
            "code": "normalize-output-format",
            "count": 1,
            "applied": true,
            "optional": false
          }
        ],
        "validationStats": {
          "rows": 2,
          "columns": 2,
          "emptyRows": 0,
          "inconsistentRows": 0,
          "emptyHeaders": 0,
          "duplicateHeaders": 0,
          "duplicateRows": 0,
          "parseErrors": 0
        }
      },
      "allowedRepairs": {
        "automatic": [
          "normalize-output-format"
        ],
        "optional": []
      },
      "nonLossInvariants": [
        "preserve-non-empty-data-cell-sequence",
        "preserve-original-row-prefixes",
        "preserve-row-count-by-default",
        "preserve-decoded-encoding-values"
      ]
    },
    {
      "id": "header-anomalies",
      "title": "Empty and duplicate headers",
      "path": "fixtures/header-anomalies.csv",
      "downloadUrl": "/csv-repair-corpus/v1/fixtures/header-anomalies.csv",
      "publishedMediaType": "text/csv",
      "decodedMediaType": "text/csv",
      "transportEncoding": "identity",
      "sourceEncoding": "utf-8",
      "byteLength": 71,
      "sha256": "7bbbba6980aba90868b04a70175a672e3ca9dc7fcadbc9d127da67cd08b1e44b",
      "coverage": [
        "empty-header",
        "duplicate-header"
      ],
      "expected": {
        "delimiter": ",",
        "linebreak": "\n",
        "original": {
          "dataRows": 2,
          "columns": 4
        },
        "validationValid": true,
        "findings": [
          {
            "code": "empty-header",
            "severity": "warning",
            "count": 1,
            "rows": [
              1
            ],
            "columns": [
              2
            ]
          },
          {
            "code": "duplicate-header",
            "severity": "warning",
            "count": 1,
            "rows": [
              1
            ],
            "columns": [
              3
            ]
          }
        ],
        "actions": [
          {
            "code": "name-empty-headers",
            "count": 1,
            "applied": true,
            "optional": false
          },
          {
            "code": "deduplicate-headers",
            "count": 1,
            "applied": true,
            "optional": false
          },
          {
            "code": "normalize-output-format",
            "count": 1,
            "applied": true,
            "optional": false
          }
        ],
        "validationStats": {
          "rows": 2,
          "columns": 4,
          "emptyRows": 0,
          "inconsistentRows": 0,
          "emptyHeaders": 1,
          "duplicateHeaders": 1,
          "duplicateRows": 0,
          "parseErrors": 0
        }
      },
      "allowedRepairs": {
        "automatic": [
          "name-empty-headers",
          "deduplicate-headers",
          "normalize-output-format"
        ],
        "optional": []
      },
      "nonLossInvariants": [
        "preserve-non-empty-data-cell-sequence",
        "preserve-original-row-prefixes",
        "preserve-row-count-by-default"
      ]
    },
    {
      "id": "row-widths",
      "title": "Short and long rows",
      "path": "fixtures/row-widths.csv",
      "downloadUrl": "/csv-repair-corpus/v1/fixtures/row-widths.csv",
      "publishedMediaType": "text/csv",
      "decodedMediaType": "text/csv",
      "transportEncoding": "identity",
      "sourceEncoding": "utf-8",
      "byteLength": 61,
      "sha256": "da53c55cda74793e789c3e03c7d9acae29d4b2efa4abf442d1500aacbd203faf",
      "coverage": [
        "short-row",
        "long-row",
        "empty-cell-padding",
        "header-extension"
      ],
      "expected": {
        "delimiter": ",",
        "linebreak": "\n",
        "original": {
          "dataRows": 3,
          "columns": 3
        },
        "validationValid": false,
        "findings": [
          {
            "code": "long-row",
            "severity": "error",
            "count": 1,
            "rows": [
              3
            ]
          },
          {
            "code": "short-row",
            "severity": "error",
            "count": 2,
            "rows": [
              2,
              4
            ]
          }
        ],
        "actions": [
          {
            "code": "extend-headers",
            "count": 1,
            "applied": true,
            "optional": false
          },
          {
            "code": "pad-short-rows",
            "count": 2,
            "applied": true,
            "optional": false
          },
          {
            "code": "normalize-output-format",
            "count": 1,
            "applied": true,
            "optional": false
          }
        ],
        "validationStats": {
          "rows": 3,
          "columns": 3,
          "emptyRows": 0,
          "inconsistentRows": 2,
          "emptyHeaders": 0,
          "duplicateHeaders": 0,
          "duplicateRows": 0,
          "parseErrors": 0
        }
      },
      "allowedRepairs": {
        "automatic": [
          "extend-headers",
          "pad-short-rows",
          "normalize-output-format"
        ],
        "optional": []
      },
      "nonLossInvariants": [
        "preserve-non-empty-data-cell-sequence",
        "preserve-original-row-prefixes",
        "preserve-row-count-by-default"
      ]
    },
    {
      "id": "empty-and-duplicate-rows",
      "title": "Empty and duplicate rows",
      "path": "fixtures/empty-and-duplicate-rows.csv",
      "downloadUrl": "/csv-repair-corpus/v1/fixtures/empty-and-duplicate-rows.csv",
      "publishedMediaType": "text/csv",
      "decodedMediaType": "text/csv",
      "transportEncoding": "identity",
      "sourceEncoding": "utf-8",
      "byteLength": 34,
      "sha256": "0fcdf918a24c8525669ccc88da163a9d67ea9792027cff9b94a824f3a4d7df61",
      "coverage": [
        "empty-row",
        "duplicate-row"
      ],
      "expected": {
        "delimiter": ",",
        "linebreak": "\n",
        "original": {
          "dataRows": 4,
          "columns": 2
        },
        "validationValid": true,
        "findings": [
          {
            "code": "empty-row",
            "severity": "warning",
            "count": 1,
            "rows": [
              3
            ]
          }
        ],
        "actions": [
          {
            "code": "normalize-output-format",
            "count": 1,
            "applied": true,
            "optional": false
          },
          {
            "code": "remove-empty-rows",
            "count": 1,
            "applied": false,
            "optional": true
          }
        ],
        "validationStats": {
          "rows": 3,
          "columns": 2,
          "emptyRows": 1,
          "inconsistentRows": 0,
          "emptyHeaders": 0,
          "duplicateHeaders": 0,
          "duplicateRows": 1,
          "parseErrors": 0
        }
      },
      "allowedRepairs": {
        "automatic": [
          "normalize-output-format"
        ],
        "optional": [
          "remove-empty-rows"
        ]
      },
      "verification": {
        "repairOptions": {
          "removeEmptyRows": true
        },
        "expectedAppliedRepairs": [
          "normalize-output-format",
          "remove-empty-rows"
        ],
        "expectedRepairedDataRows": 3
      },
      "nonLossInvariants": [
        "preserve-non-empty-data-cell-sequence",
        "preserve-original-row-prefixes",
        "preserve-row-count-by-default",
        "preserve-duplicate-row-multiplicity",
        "optional-content-change-requires-opt-in"
      ]
    },
    {
      "id": "invisible-characters",
      "title": "Zero-width and non-breaking spaces inside values",
      "path": "fixtures/invisible-characters.csv",
      "downloadUrl": "/csv-repair-corpus/v1/fixtures/invisible-characters.csv",
      "publishedMediaType": "text/csv",
      "decodedMediaType": "text/csv",
      "transportEncoding": "identity",
      "sourceEncoding": "utf-8",
      "byteLength": 38,
      "sha256": "0047000967780bae6c8e33a085cfd10a3de349ef3b337f7045c05a49917aa9cf",
      "coverage": [
        "zero-width-space",
        "non-breaking-space",
        "invisible-character"
      ],
      "expected": {
        "delimiter": ",",
        "linebreak": "\n",
        "original": {
          "dataRows": 2,
          "columns": 2
        },
        "validationValid": true,
        "findings": [
          {
            "code": "invisible-character",
            "severity": "warning",
            "count": 2,
            "rows": [
              2
            ],
            "columns": [
              1,
              2
            ]
          }
        ],
        "actions": [
          {
            "code": "normalize-output-format",
            "count": 1,
            "applied": true,
            "optional": false
          },
          {
            "code": "remove-invisible-characters",
            "count": 2,
            "applied": false,
            "optional": true
          }
        ],
        "validationStats": {
          "rows": 2,
          "columns": 2,
          "emptyRows": 0,
          "inconsistentRows": 0,
          "emptyHeaders": 0,
          "duplicateHeaders": 0,
          "duplicateRows": 0,
          "parseErrors": 0
        }
      },
      "allowedRepairs": {
        "automatic": [
          "normalize-output-format"
        ],
        "optional": [
          "remove-invisible-characters"
        ]
      },
      "verification": {
        "repairOptions": {
          "removeInvisibleCharacters": true
        },
        "expectedAppliedRepairs": [
          "normalize-output-format",
          "remove-invisible-characters"
        ],
        "expectedRepairedDataRows": 2
      },
      "nonLossInvariants": [
        "preserve-non-empty-data-cell-sequence",
        "preserve-original-row-prefixes",
        "preserve-row-count-by-default",
        "optional-content-change-requires-opt-in"
      ]
    },
    {
      "id": "formula-like-cells",
      "title": "Spreadsheet formula-like cells and export hardening",
      "path": "fixtures/formula-like-cells.csv",
      "downloadUrl": "/csv-repair-corpus/v1/fixtures/formula-like-cells.csv",
      "publishedMediaType": "text/csv",
      "decodedMediaType": "text/csv",
      "transportEncoding": "identity",
      "sourceEncoding": "utf-8",
      "byteLength": 88,
      "sha256": "d71ea2a56b85b7dc296639930d7744fb7eb7bc88a7cf509848aa518cc9eccc9c",
      "coverage": [
        "formula-equals",
        "formula-plus",
        "formula-minus",
        "formula-at",
        "leading-whitespace",
        "spreadsheet-export-injection"
      ],
      "expected": {
        "delimiter": ",",
        "linebreak": "\n",
        "original": {
          "dataRows": 6,
          "columns": 2
        },
        "validationValid": true,
        "findings": [
          {
            "code": "whitespace",
            "severity": "warning",
            "count": 1,
            "rows": [
              6
            ],
            "columns": [
              2
            ]
          },
          {
            "code": "formula-cell",
            "severity": "warning",
            "count": 5,
            "rows": [
              2,
              3,
              4,
              5,
              6
            ],
            "columns": [
              2
            ]
          }
        ],
        "actions": [
          {
            "code": "normalize-output-format",
            "count": 1,
            "applied": true,
            "optional": false
          },
          {
            "code": "trim-whitespace",
            "count": 1,
            "applied": false,
            "optional": true
          },
          {
            "code": "escape-formula-cells",
            "count": 5,
            "applied": false,
            "optional": true
          }
        ],
        "validationStats": {
          "rows": 6,
          "columns": 2,
          "emptyRows": 0,
          "inconsistentRows": 0,
          "emptyHeaders": 0,
          "duplicateHeaders": 0,
          "duplicateRows": 0,
          "parseErrors": 0
        }
      },
      "allowedRepairs": {
        "automatic": [
          "normalize-output-format"
        ],
        "optional": [
          "trim-whitespace",
          "escape-formula-cells"
        ]
      },
      "verification": {
        "repairOptions": {
          "trimWhitespace": true,
          "escapeFormulaCells": true
        },
        "expectedAppliedRepairs": [
          "normalize-output-format",
          "trim-whitespace",
          "escape-formula-cells"
        ],
        "expectedRepairedDataRows": 6,
        "expectedEscapedFormulaCells": 5
      },
      "nonLossInvariants": [
        "preserve-non-empty-data-cell-sequence",
        "preserve-original-row-prefixes",
        "preserve-row-count-by-default",
        "optional-content-change-requires-opt-in",
        "formula-values-unchanged-by-default",
        "formula-escape-adds-single-apostrophe"
      ]
    },
    {
      "id": "malformed-quotes",
      "title": "Ambiguous unterminated quoted field",
      "path": "fixtures/malformed-quotes.csv",
      "downloadUrl": "/csv-repair-corpus/v1/fixtures/malformed-quotes.csv",
      "publishedMediaType": "text/csv",
      "decodedMediaType": "text/csv",
      "transportEncoding": "identity",
      "sourceEncoding": "utf-8",
      "byteLength": 47,
      "sha256": "c974ea220a7e6b188a278d53030b2373a82272e3ef44a8e2d5180f31cc41aace",
      "coverage": [
        "unterminated-quote",
        "ambiguous-record-boundary",
        "parser-error"
      ],
      "expected": {
        "delimiter": ",",
        "linebreak": "\n",
        "original": {
          "dataRows": 1,
          "columns": 2
        },
        "validationValid": false,
        "findings": [
          {
            "code": "parse-error",
            "severity": "error",
            "count": 1,
            "rows": [
              2
            ]
          },
          {
            "code": "whitespace",
            "severity": "warning",
            "count": 1,
            "rows": [
              2
            ],
            "columns": [
              2
            ]
          }
        ],
        "actions": [
          {
            "code": "normalize-output-format",
            "count": 1,
            "applied": true,
            "optional": false
          },
          {
            "code": "trim-whitespace",
            "count": 1,
            "applied": false,
            "optional": true
          }
        ],
        "validationStats": {
          "rows": 1,
          "columns": 2,
          "emptyRows": 0,
          "inconsistentRows": 0,
          "emptyHeaders": 0,
          "duplicateHeaders": 0,
          "duplicateRows": 0,
          "parseErrors": 1
        }
      },
      "allowedRepairs": {
        "automatic": [
          "normalize-output-format"
        ],
        "optional": [
          "trim-whitespace"
        ]
      },
      "nonLossInvariants": [
        "preserve-non-empty-data-cell-sequence",
        "preserve-original-row-prefixes",
        "preserve-row-count-by-default",
        "optional-content-change-requires-opt-in",
        "parser-error-remains-visible"
      ]
    },
    {
      "id": "semicolon-delimiter",
      "title": "Semicolon-delimited CSV",
      "path": "fixtures/semicolon.csv",
      "downloadUrl": "/csv-repair-corpus/v1/fixtures/semicolon.csv",
      "publishedMediaType": "text/csv",
      "decodedMediaType": "text/csv",
      "transportEncoding": "identity",
      "sourceEncoding": "utf-8",
      "byteLength": 61,
      "sha256": "c27d5ed78315202d61878b24cf5f3af181ede69da37886e66a72a018efcd726d",
      "coverage": [
        "semicolon-delimiter"
      ],
      "expected": {
        "delimiter": ";",
        "linebreak": "\n",
        "original": {
          "dataRows": 2,
          "columns": 3
        },
        "validationValid": true,
        "findings": [],
        "actions": [
          {
            "code": "normalize-output-format",
            "count": 1,
            "applied": true,
            "optional": false
          }
        ],
        "validationStats": {
          "rows": 2,
          "columns": 3,
          "emptyRows": 0,
          "inconsistentRows": 0,
          "emptyHeaders": 0,
          "duplicateHeaders": 0,
          "duplicateRows": 0,
          "parseErrors": 0
        }
      },
      "allowedRepairs": {
        "automatic": [
          "normalize-output-format"
        ],
        "optional": []
      },
      "nonLossInvariants": [
        "preserve-non-empty-data-cell-sequence",
        "preserve-original-row-prefixes",
        "preserve-row-count-by-default",
        "preserve-detected-delimiter"
      ]
    },
    {
      "id": "tab-delimiter",
      "title": "Tab-delimited TSV",
      "path": "fixtures/tab-separated.tsv",
      "downloadUrl": "/csv-repair-corpus/v1/fixtures/tab-separated.tsv",
      "publishedMediaType": "text/tab-separated-values",
      "decodedMediaType": "text/tab-separated-values",
      "transportEncoding": "identity",
      "sourceEncoding": "utf-8",
      "byteLength": 61,
      "sha256": "164188b808ef1e992b744eebf60ea6d08c045a29293a9549c8eb290b4681d49d",
      "coverage": [
        "tab-delimiter",
        "tsv"
      ],
      "expected": {
        "delimiter": "\t",
        "linebreak": "\n",
        "original": {
          "dataRows": 2,
          "columns": 3
        },
        "validationValid": true,
        "findings": [],
        "actions": [
          {
            "code": "normalize-output-format",
            "count": 1,
            "applied": true,
            "optional": false
          }
        ],
        "validationStats": {
          "rows": 2,
          "columns": 3,
          "emptyRows": 0,
          "inconsistentRows": 0,
          "emptyHeaders": 0,
          "duplicateHeaders": 0,
          "duplicateRows": 0,
          "parseErrors": 0
        }
      },
      "allowedRepairs": {
        "automatic": [
          "normalize-output-format"
        ],
        "optional": []
      },
      "nonLossInvariants": [
        "preserve-non-empty-data-cell-sequence",
        "preserve-original-row-prefixes",
        "preserve-row-count-by-default",
        "preserve-detected-delimiter"
      ]
    },
    {
      "id": "pipe-delimiter",
      "title": "Pipe-delimited text",
      "path": "fixtures/pipe-delimited.txt",
      "downloadUrl": "/csv-repair-corpus/v1/fixtures/pipe-delimited.txt",
      "publishedMediaType": "text/plain",
      "decodedMediaType": "text/plain",
      "transportEncoding": "identity",
      "sourceEncoding": "utf-8",
      "byteLength": 61,
      "sha256": "2cf579711408f3c15639448b8fad3ef1dcae25e0ffb827d41e78d49f2ff4f68d",
      "coverage": [
        "pipe-delimiter",
        "delimited-text"
      ],
      "expected": {
        "delimiter": "|",
        "linebreak": "\n",
        "original": {
          "dataRows": 2,
          "columns": 3
        },
        "validationValid": true,
        "findings": [],
        "actions": [
          {
            "code": "normalize-output-format",
            "count": 1,
            "applied": true,
            "optional": false
          }
        ],
        "validationStats": {
          "rows": 2,
          "columns": 3,
          "emptyRows": 0,
          "inconsistentRows": 0,
          "emptyHeaders": 0,
          "duplicateHeaders": 0,
          "duplicateRows": 0,
          "parseErrors": 0
        }
      },
      "allowedRepairs": {
        "automatic": [
          "normalize-output-format"
        ],
        "optional": []
      },
      "nonLossInvariants": [
        "preserve-non-empty-data-cell-sequence",
        "preserve-original-row-prefixes",
        "preserve-row-count-by-default",
        "preserve-detected-delimiter"
      ]
    }
  ]
}
