{
  "measured_on": "2026-10-03",
  "machine": "Apple M4",
  "toolchain": "rustc 1.91.1",
  "profile": "release",
  "function": "vastlint_core::validate",
  "baseline": "vastlint 0.13.13 parse.rs, byte_offset_to_line_col rescans from byte 0 for every element",
  "candidate": "LineCursor in parse.rs, not in a release tag. 0.13.13 shipped the Node ESM import fix only.",
  "finding_check": "Same rule id, path, line, column, and severity. Large-tag rows also match an FNV-1a hash of id, line, column, and severity.",
  "do_not_publish_as_production": [
    "The 1,500x figure is a synthetic 10 MB ad pod, one pass.",
    "The first D1 one-shot (29.6 s corpus, a 5.6 s document) did not repeat. Use the median-of-five table."
  ],
  "fixtures": {
    "xml_files": 150,
    "finding_diff_lines": 0,
    "cargo_test_all": "pass with LineCursor swapped in, then parse.rs restored"
  },
  "synthetic_small": {
    "note": "Constructed documents. p50 of repeated validate calls. Sizes are UTF-8 bytes.",
    "rows": [
      {
        "label": "1 ad",
        "bytes": 651,
        "baseline_p50_ms": 0.02,
        "linecursor_p50_ms": 0.01
      },
      {
        "label": "10-ad pod",
        "bytes": 5907,
        "baseline_p50_ms": 0.28,
        "linecursor_p50_ms": 0.13
      },
      {
        "label": "50-ad pod",
        "bytes": 29307,
        "baseline_p50_ms": 2.56,
        "linecursor_p50_ms": 0.54
      },
      {
        "label": "200-ad pod",
        "bytes": 117157,
        "baseline_p50_ms": 34.79,
        "linecursor_p50_ms": 1.8
      },
      {
        "label": "500 trackers",
        "bytes": 45794,
        "baseline_p50_ms": 3.3,
        "linecursor_p50_ms": 0.42
      },
      {
        "label": "3000 trackers",
        "bytes": 273794,
        "baseline_p50_ms": 109.63,
        "linecursor_p50_ms": 2.38
      }
    ]
  },
  "production_d1": {
    "source": "Cloudflare D1 vastlint-telemetry.vast_samples, all rows on 2026-10-03",
    "docs": 2254,
    "utf8_bytes": 15503173,
    "max_sqlite_length": 63477,
    "issues": 8112,
    "errors": 763,
    "warnings": 4723,
    "finding_diff_lines": 0,
    "method": "Per document, five validate calls, keep the median. Totals are the sum of those medians.",
    "discarded_one_shot": {
      "why": "A few documents spiked into seconds and did not repeat on a seven-run retime.",
      "baseline_total_ms": 29605.4,
      "baseline_max_ms": 5623.489,
      "linecursor_total_ms": 173.2,
      "linecursor_max_ms": 1.053
    },
    "median_of_five": {
      "baseline": {
        "total_ms": 766.7,
        "docs_per_s": 2940,
        "p50_ms": 0.041,
        "p95_ms": 1.552,
        "p99_ms": 3.366,
        "max_ms": 27.678
      },
      "linecursor": {
        "total_ms": 255.1,
        "docs_per_s": 8835,
        "p50_ms": 0.033,
        "p95_ms": 0.463,
        "p99_ms": 0.809,
        "max_ms": 1.337
      }
    },
    "by_size": [
      {
        "label": "under 2 KB",
        "n": 1363,
        "baseline_sum_ms": 50.6,
        "linecursor_sum_ms": 39.1,
        "speedup": 1.3,
        "baseline_max_ms": 1.63,
        "linecursor_max_ms": 0.19
      },
      {
        "label": "2 to 8 KB",
        "n": 297,
        "baseline_sum_ms": 49.5,
        "linecursor_sum_ms": 29.9,
        "speedup": 1.7,
        "baseline_max_ms": 1.53,
        "linecursor_max_ms": 0.905
      },
      {
        "label": "8 to 20 KB",
        "n": 351,
        "baseline_sum_ms": 215.9,
        "linecursor_sum_ms": 75.5,
        "speedup": 2.9,
        "baseline_max_ms": 8.93,
        "linecursor_max_ms": 1.043
      },
      {
        "label": "20 KB and up",
        "n": 243,
        "baseline_sum_ms": 450.6,
        "linecursor_sum_ms": 110.7,
        "speedup": 4.1,
        "baseline_max_ms": 27.68,
        "linecursor_max_ms": 1.337
      }
    ],
    "tail": {
      "baseline_over_1ms": 187,
      "baseline_over_5ms": 12,
      "baseline_over_10ms": 5,
      "linecursor_over_1ms": 7,
      "linecursor_over_5ms": 0,
      "slowest": [
        {
          "bytes": 57720,
          "baseline_ms": 27.68,
          "linecursor_ms": 0.393,
          "speedup": 70.4
        },
        {
          "bytes": 45355,
          "baseline_ms": 18.88,
          "linecursor_ms": 0.38,
          "speedup": 49.7
        },
        {
          "bytes": 63055,
          "baseline_ms": 17.53,
          "linecursor_ms": 1.242,
          "speedup": 14.1
        }
      ]
    },
    "privacy": "Aggregates only. No XML, hosts, or sample ids in this folder."
  },
  "large_synthetic": {
    "shapes": {
      "pod": "Repeated InLine ads until the target size.",
      "trackers": "One ad, Tracking children until the target size.",
      "mixed": "Repeated ads that each carry two Tracking events.",
      "fat": "One ad, one MediaFile, CDATA padded to the target size."
    },
    "logs": [
      "baseline-matrix.log",
      "linecursor-matrix.log",
      "linecursor-corpus.log"
    ],
    "matrix_p50_ms": [
      {
        "shape": "pod",
        "mb": 2,
        "passes": 10,
        "baseline": 23329.7,
        "linecursor": 81.4,
        "issues": 24885,
        "sig": "4fd97589d02ec334"
      },
      {
        "shape": "trackers",
        "mb": 2,
        "passes": 10,
        "baseline": 19007.3,
        "linecursor": 40.0,
        "issues": 4,
        "sig": "bf29ceb5f2b94491"
      },
      {
        "shape": "fat",
        "mb": 2,
        "passes": 10,
        "baseline": 28.5,
        "linecursor": 6.4,
        "issues": 5,
        "sig": "1ed214b90817b074"
      },
      {
        "shape": "mixed",
        "mb": 2,
        "passes": 10,
        "baseline": 26864.2,
        "linecursor": 65.0,
        "issues": 13944,
        "sig": "4f4a9f388025f03d"
      },
      {
        "shape": "fat",
        "mb": 4,
        "passes": 10,
        "baseline": 7.6,
        "linecursor": 11.1,
        "issues": 5,
        "sig": "1ed214b90817b074"
      },
      {
        "shape": "fat",
        "mb": 6,
        "passes": 10,
        "baseline": 11.4,
        "linecursor": 16.4,
        "issues": 5,
        "sig": "1ed214b90817b074"
      },
      {
        "shape": "fat",
        "mb": 8,
        "passes": 10,
        "baseline": 16.9,
        "linecursor": 22.0,
        "issues": 5,
        "sig": "1ed214b90817b074"
      },
      {
        "shape": "fat",
        "mb": 10,
        "passes": 10,
        "baseline": 19.9,
        "linecursor": 25.4,
        "issues": 5,
        "sig": "1ed214b90817b074"
      },
      {
        "shape": "pod",
        "mb": 4,
        "passes": 1,
        "baseline": 73796.3,
        "linecursor": 147.7,
        "issues": 49730,
        "sig": "af2863e635c39e0a"
      },
      {
        "shape": "trackers",
        "mb": 4,
        "passes": 1,
        "baseline": 46508.7,
        "linecursor": 64.8,
        "issues": 4,
        "sig": "6a53153f7d2b3461"
      },
      {
        "shape": "mixed",
        "mb": 4,
        "passes": 1,
        "baseline": 56896.2,
        "linecursor": 119.9,
        "issues": 27856,
        "sig": "221c0c666d8e167f"
      },
      {
        "shape": "pod",
        "mb": 10,
        "passes": 1,
        "baseline": 553642.4,
        "linecursor": 360.9,
        "issues": 123750,
        "sig": "aa75a0ecce8946bd"
      },
      {
        "shape": "trackers",
        "mb": 10,
        "passes": 1,
        "baseline": 226306.9,
        "linecursor": 170.6,
        "issues": 4,
        "sig": "7a04afedebaff785"
      },
      {
        "shape": "mixed",
        "mb": 10,
        "passes": 1,
        "baseline": 385485.7,
        "linecursor": 354.8,
        "issues": 69348,
        "sig": "793818e4d7cf4459"
      }
    ],
    "signature_mismatches": 0,
    "linecursor_corpus_100x10": {
      "docs": 100,
      "passes": 10,
      "size_range": "2 MB to 10 MB, 25 of each shape",
      "wall_s": 160.6,
      "validate_sum_s": 148.0,
      "mean_ms": 148.0,
      "p50_ms": 127.8,
      "p95_ms": 376.8,
      "max_ms": 540.0,
      "baseline_not_run": "Projected about 36 hours from the 2 MB and 10 MB measurements. A 10 MB pod is 9.2 minutes once.",
      "fit_exponent_from_2mb_to_10mb": {
        "pod": 1.97,
        "trackers": 1.54,
        "mixed": 1.66
      }
    }
  },
  "auction_58_to_100kb": {
    "measured_on": "2026-10-04",
    "machine": "Apple M4",
    "toolchain": "rustc 1.97.1 (8bab26f4f 2026-07-14)",
    "kind": "synthetic",
    "documents": 10,
    "byte_range": [
      58000,
      100000
    ],
    "passes_per_build": 21,
    "baseline_batch_median_ms": 168.26225,
    "cursor_batch_median_ms": 11.817167,
    "speedup": 14.238797674603397,
    "five_field_findings_equal": true,
    "details": "auction-58-100kb/results.json",
    "note": "Observed native in-memory serial batch. The 100 ms auction is an illustrative budget, not an observed auction."
  },
  "cli_80k_creatives": {
    "measured_on": "2026-10-04",
    "cli_version": "vastlint 0.14.0",
    "baseline_cli_version": "vastlint 0.13.13",
    "machine": "Apple M4",
    "toolchain": "rustc 1.97.1 (8bab26f4f 2026-07-14)",
    "dataset": {
      "kind": "Generated valid VAST 2.0 inline tags, one creative per XML file",
      "files": 80000,
      "creatives_per_file": 1,
      "total_bytes": 9888000000,
      "mean_bytes": 123600.0,
      "size_profiles_bytes": [
        58000,
        80000,
        120000,
        160000,
        200000
      ],
      "tracking_elements_per_profile": [
        450,
        625,
        950,
        1250,
        1600
      ],
      "files_per_profile": 16000,
      "ordered_dataset_sha256": "340b54e1225f488a2ce470ee53d13d5c37190a2d5ff430a22ab272abac858561",
      "hash_method": "SHA-256 of each filename, NUL byte and XML bytes, in index order",
      "urls": "Unique example.com paths; no network fetches",
      "padding": "Final XML comment brings each file to its exact target size",
      "representativeness": "Preselected larger-tag workload, not observed production samples or a representative size distribution"
    },
    "method": {
      "cli_invocations_per_pass": 80,
      "parallel_cli_workers": 8,
      "files_per_invocation": 1000,
      "complete_passes": 1,
      "warmup_files_per_build": 5,
      "command": "vastlint check --format json --summary --no-config --no-color <1000 local XML paths>",
      "timed": "Complete batch wall time with parallel CLI workers: process launches, file reads, full validation, JSON reports written to pipes, report capture and verification",
      "overlap": "Individual CLI wall times overlap and are not summed for the headline",
      "excluded": "Build, dataset generation, network fetches and wrapper resolution",
      "filesystem_cache": "Warm or uncontrolled; files were generated immediately before the runs. No cold-cache claim.",
      "verification": "Every per-file JSON report matches its filename, reports VAST 2.0 and valid=true with zero issues; every aggregate reports 1000 checked and valid inputs",
      "comparison": "Matched CLI builds from v0.13.13 and v0.14.0; only parse.rs differs in runtime source; same compiler, dependencies and allocator",
      "execution_order": [
        [
          "baseline",
          "candidate"
        ]
      ],
      "paired_report_check": "Complete JSON output SHA-256 matches between builds for all 80 invocations in each paired pass"
    },
    "headline": {
      "creatives_checked": 80000,
      "vast_tags_checked": 80000,
      "median_wall_seconds": 19.64780054199946,
      "min_wall_seconds": 19.64780054199946,
      "max_wall_seconds": 19.64780054199946,
      "checks_per_second": 4071.702571948992,
      "baseline_median_wall_seconds": 303.10794350000015,
      "speedup_x": 15.427067414089006
    },
    "complete_pass_wall_seconds": [
      19.64780054199946
    ],
    "baseline_complete_pass_wall_seconds": [
      303.10794350000015
    ],
    "source_commit": "9fb7c54d671263718d92d7ae487de046b46b2bb0",
    "baseline_source_commit": "27175c1f2fbc43057a5a862b9719c2b68fd0bad0",
    "archive": "cli-80k-58-200kb/results.json",
    "earlier_smaller_workload_archive": "cli-80k/results.json",
    "reproduce": "cli-80k-58-200kb/reproduce.py"
  },
  "cli_80k_small_tags": {
    "measured_on": "2026-10-04",
    "cli_version": "vastlint 0.14.0",
    "baseline_cli_version": "vastlint 0.13.13",
    "machine": "Apple M4",
    "toolchain": "rustc 1.97.1 (8bab26f4f 2026-07-14)",
    "dataset": {
      "kind": "Generated valid VAST 2.0 inline tags, one creative per XML file",
      "files": 80000,
      "creatives_per_file": 1,
      "total_bytes": 550240000,
      "mean_bytes": 6878.0,
      "size_profiles_bytes": [
        2000,
        4000,
        7000,
        10000,
        11390
      ],
      "tracking_elements_per_profile": [
        4,
        16,
        40,
        64,
        76
      ],
      "files_per_profile": 16000,
      "ordered_dataset_sha256": "7727d5255a62a62be2a4a632a16d974a55f35e60f0b2c3ae5880d3a1b8d9f70f",
      "hash_method": "SHA-256 of each filename, NUL byte and XML bytes, in index order",
      "urls": "Unique example.com paths; no network fetches",
      "padding": "Final XML comment brings each file to its exact target size",
      "representativeness": "Matches an earlier stored-tag mean size, not its size distribution or tag structures"
    },
    "method": {
      "serial_cli_invocations_per_pass": 80,
      "files_per_invocation": 1000,
      "complete_passes": 3,
      "warmup_files": 1000,
      "command": "vastlint check --format json --summary --no-config --no-color <1000 local XML paths>",
      "timed": "Complete serial pass: process launches, file reads, full validation, JSON reports written to pipes, report capture and verification",
      "excluded": "Build, dataset generation, network fetches and wrapper resolution",
      "filesystem_cache": "Warm or uncontrolled; files were generated immediately before the runs. No cold-cache claim.",
      "verification": "Every per-file JSON report matches its filename, reports VAST 2.0 and valid=true with zero issues; every aggregate reports 1000 checked and valid inputs",
      "comparison": "Matched CLI builds from v0.13.13 and v0.14.0; only parse.rs differs in runtime source; same compiler, dependencies and allocator",
      "execution_order": [
        [
          "baseline",
          "candidate"
        ],
        [
          "candidate",
          "baseline"
        ],
        [
          "baseline",
          "candidate"
        ]
      ],
      "paired_report_check": "Complete JSON output SHA-256 matches between builds for all 80 invocations in each paired pass"
    },
    "headline": {
      "creatives_checked": 80000,
      "median_wall_seconds": 4.84571729199979,
      "min_wall_seconds": 4.83297762500024,
      "max_wall_seconds": 4.856818416999886,
      "checks_per_second": 16509.423719802817,
      "baseline_median_wall_seconds": 7.7701112499999,
      "speedup_x": 1.6035007372031882
    },
    "complete_pass_wall_seconds": [
      4.856818416999886,
      4.83297762500024,
      4.84571729199979
    ],
    "baseline_complete_pass_wall_seconds": [
      7.730833790999895,
      7.7701112499999,
      8.095596083999226
    ],
    "source_commit": "9fb7c54d671263718d92d7ae487de046b46b2bb0",
    "baseline_source_commit": "27175c1f2fbc43057a5a862b9719c2b68fd0bad0",
    "archive": "cli-80k/results.json",
    "earlier_candidate_only_archive": "cli-80k/candidate-only-results.json",
    "reproduce": "cli-80k/reproduce.py"
  },
  "publication_headline": {
    "text": "VASTlint just got 15\u00d7 faster.",
    "caption": "Measured on 80,000 generated VAST tags from 58 to 200 KB.",
    "headline_speedup_x": 15,
    "exact_speedup_x": 15.427067414089006,
    "scope": "Featured generated 58 to 200 KB CLI workload, eight workers on each build",
    "aggregation": "Baseline complete batch wall time divided by candidate complete batch wall time for the same 80,000 tags",
    "source": "cli-80k-58-200kb/results.json",
    "broader_stored_tag_aggregate_speedup_x": 3.0054880439043514,
    "broader_stored_tag_method": "Sum of per-document median validation times, 766.7 ms divided by 255.1 ms"
  }
}
