{
  "testedAt": "2026-10-11T13:48:03.121Z",
  "environment": "Node v24.19.0; actual comparison module and worker handler; synthetic files only",
  "moduleSha256": "650ff525fa67150a00e3e2057c4e856dbe9bf3b890fa7d5d242a2d2581ff6482",
  "workerSha256": "91e9105e59ec45278632ca59384504029223b0c371469a23fd65edd62f2789de",
  "checks": [
    "Exact leading-zero, long-ID, and date changes",
    "Reordered rows and columns with different quoting are unchanged",
    "Added, removed, changed, and unchanged rows",
    "Schema changes preserve added/removed empty values distinctly from absence",
    "Whitespace, empty fields, multiline text, Unicode, and quote literals",
    "Duplicate and blank keys block comparison; missing key is rejected",
    "Keys are exact and safe for object-property names",
    "Bad syntax, empty input, blank/duplicate headers, and inconsistent widths block",
    "UTF-8 strict decoding and BOM; unknown encoding blocks",
    "Equivalent semicolon input, single-column input, and header-only inputs",
    "Formula-looking strings and HTML stay literal in JSON",
    "Explicit row, column, byte, cell, and difference limits; no partial result",
    "Actual worker inspection, comparison, failure, and stale-state rejection"
  ],
  "samples": {
    "values": {
      "version": 1,
      "keyColumn": "record_id",
      "comparison": "Exact text by unique key and exact header name; row/column order ignored; no type conversion or trimming of values. Column changes are reported separately from changed cells in shared columns.",
      "original": {
        "name": "export-reference.csv",
        "headers": [
          "record_id",
          "postal_code",
          "long_id",
          "date_text",
          "label",
          "notes"
        ],
        "rows": 3,
        "delimiter": ","
      },
      "updated": {
        "name": "export-changed-example.csv",
        "headers": [
          "record_id",
          "postal_code",
          "long_id",
          "date_text",
          "label",
          "notes"
        ],
        "rows": 3,
        "delimiter": ","
      },
      "summary": {
        "addedRows": 0,
        "removedRows": 0,
        "changedRows": 1,
        "unchangedRows": 2,
        "changedCells": 3,
        "addedColumns": [],
        "removedColumns": []
      },
      "differences": [
        {
          "type": "cell-changed",
          "key": "case-001",
          "column": "postal_code",
          "before": "00123",
          "after": "123",
          "originalRecord": 2,
          "updatedRecord": 2
        },
        {
          "type": "cell-changed",
          "key": "case-001",
          "column": "long_id",
          "before": "12345678901234567890",
          "after": "12345678901234500000",
          "originalRecord": 2,
          "updatedRecord": 2
        },
        {
          "type": "cell-changed",
          "key": "case-001",
          "column": "date_text",
          "before": "03/04/2026",
          "after": "2026-04-03",
          "originalRecord": 2,
          "updatedRecord": 2
        }
      ]
    },
    "rows": {
      "version": 1,
      "keyColumn": "record_id",
      "comparison": "Exact text by unique key and exact header name; row/column order ignored; no type conversion or trimming of values. Column changes are reported separately from changed cells in shared columns.",
      "original": {
        "name": "export-reference.csv",
        "headers": [
          "record_id",
          "postal_code",
          "long_id",
          "date_text",
          "label",
          "notes"
        ],
        "rows": 3,
        "delimiter": ","
      },
      "updated": {
        "name": "updated.csv",
        "headers": [
          "long_id",
          "record_id",
          "label",
          "postal_code",
          "notes",
          "date_text"
        ],
        "rows": 3,
        "delimiter": ","
      },
      "summary": {
        "addedRows": 1,
        "removedRows": 1,
        "changedRows": 1,
        "unchangedRows": 1,
        "changedCells": 3,
        "addedColumns": [],
        "removedColumns": []
      },
      "differences": [
        {
          "type": "cell-changed",
          "key": "case-001",
          "column": "postal_code",
          "before": "00123",
          "after": "123",
          "originalRecord": 2,
          "updatedRecord": 4
        },
        {
          "type": "cell-changed",
          "key": "case-001",
          "column": "long_id",
          "before": "12345678901234567890",
          "after": "12345678901234500000",
          "originalRecord": 2,
          "updatedRecord": 4
        },
        {
          "type": "cell-changed",
          "key": "case-001",
          "column": "date_text",
          "before": "03/04/2026",
          "after": "2026-04-03",
          "originalRecord": 2,
          "updatedRecord": 4
        },
        {
          "type": "row-removed",
          "key": "case-003",
          "column": "",
          "before": [
            "case-003",
            "01000",
            "98765432109876543210",
            "1-2",
            "plain",
            " "
          ],
          "after": null,
          "originalRecord": 4,
          "updatedRecord": null
        },
        {
          "type": "row-added",
          "key": "case-004",
          "column": "",
          "before": null,
          "after": [
            "00000000000000000999",
            "case-004",
            "Added row",
            "00999",
            "new item",
            "2026-10-11"
          ],
          "originalRecord": null,
          "updatedRecord": 2
        }
      ]
    }
  },
  "fixtures": {
    "/lab/export-values/export-reference.csv": {
      "sha256": "f84efed16c4e4a7f5be3c0652ece942bc6bf678dc42532304f514176db082a51",
      "bytes": 263
    },
    "/lab/export-values/export-changed-example.csv": {
      "sha256": "069eced1f1a43caa1aa3010e04b387eca9cb36dd4e878a41cf5329c6da271089",
      "bytes": 261
    },
    "/lab/compare/original.csv": {
      "sha256": "f84efed16c4e4a7f5be3c0652ece942bc6bf678dc42532304f514176db082a51",
      "bytes": 263
    },
    "/lab/compare/updated.csv": {
      "sha256": "3ad1fdc76632f776eb9ea3d1e2823aca4fff88f1ac9597dd54a260ca8651dff3",
      "bytes": 277
    }
  },
  "clientTest": {
    "environment": "Node VM DOM event/state harness with actual client script and actual worker handler; no browser rendering",
    "checks": [
      "File inspection, explicit key selection, actual comparison, and JSON download",
      "Changing key clears the result, rendered data, and previous download URL",
      "Duplicate key blocks download; changing to a unique key recovers",
      "Clear releases files/results and rejects an old worker response",
      "Late sample loading cannot replace subsequently selected local files",
      "Public row-change sample runs through the same real worker",
      "Formula-looking text and HTML are rendered as literal text",
      "Preview limit of 200 does not truncate the complete downloadable report",
      "Leaving the page clears working files, rendered values, and report URLs"
    ],
    "scriptSha256": "14f880ea70cd404a536af25dc43c4802ed5a921b020c190206cf0b0be8a7bbf8"
  }
}