{
  "schemaVersion": 1,
  "experiment": "parquet-statistics-pruning",
  "title": "Parquet footer statistics and query-pruning observations",
  "evidenceType": "measured-api-behavior",
  "synthetic": true,
  "generatedAt": "2026-10-17T21:46:50.969826+00:00",
  "method": "Generate 128 synthetic rows; structurally change first-group measurement minimum in plaintext footer from 100000 to 100032; keep all page bytes unchanged. Compare CRC-enabled scans and filtered reads, missing/wide-statistics controls, independent page CRCs and an altered-page control.",
  "limits": "One implementation and host; deliberately selected, structurally valid but semantically invalid metadata. Not a spontaneous bit-error model, prevalence estimate, security exploit, benchmark or test of encrypted, compressed, nested or dictionary files. Repetitions are not independent reliability trials.",
  "environment": {
    "python": "3.12.3",
    "packages": {
      "pyarrow": "21.0.0",
      "thriftpy2": "0.5.3",
      "ply": "3.11",
      "six": "1.17.0"
    },
    "arrowCpp": "21.0.0",
    "system": "Linux",
    "kernel": "6.8.0-146-generic",
    "machine": "x86_64"
  },
  "rowCount": 21,
  "columns": [
    {
      "name": "repetition",
      "description": "Fresh deterministic fixture repeat, not an independent reliability trial."
    },
    {
      "name": "case",
      "description": "Read or control case; details in the harness and raw evidence."
    },
    {
      "name": "rows",
      "description": "Returned rows; empty if CRC error prevents a result."
    },
    {
      "name": "expectedRows",
      "description": "Expected rows from the generated input and requested operation."
    },
    {
      "name": "matchesOracle",
      "description": "Whether returned values equal the expected input-derived table; false also for the deliberate CRC-error control."
    },
    {
      "name": "checksumVerification",
      "description": "Reader page checksum verification is enabled in every case."
    }
  ],
  "codePath": "/research/parquet-statistics.py",
  "rawPath": "/research/parquet-statistics.json",
  "csvPath": "/research/parquet-statistics.csv",
  "requirementsPath": "/research/parquet-statistics-requirements.txt",
  "metadataPath": "/research/parquet-statistics-metadata.json",
  "generatorPath": "/scripts/build-parquet-statistics.mjs",
  "schemaUrl": "https://raw.githubusercontent.com/apache/parquet-format/apache-parquet-format-2.10.0/src/main/thrift/parquet.thrift",
  "schemaSha256": "f3152ab8a2574c96f4b0ea3df7694f9170e6a6c18eb9888505115f9acd5e54ce",
  "license": "CC0-1.0 for Hesela's original code and observations; dependencies and downloaded Apache schema retain their own licenses.",
  "hashes": {
    "sourceSha256": "35714c7cdab27c23116e5b965a468e5eddf305e1ff407b1801da2862fbb4469e",
    "requirementsSha256": "24e25a8ab3f0e5677014e1e1f56bce17ba692b891626fcef975b776e31a63300",
    "rawSha256": "5034e039f8479c3c31a2c435c4f45f3821548a0581cdf7e0338b57da5138f4bc",
    "csvSha256": "c22e4242932b8a3146feba97d4e094b2c33743fceec441b6d26a5408cc4ea501"
  }
}
