Skip to content

Publish extended production benchmark history continuously - #1153

Open
helly25 wants to merge 6 commits into
mainfrom
benchmark/continuous-extended-history-20261108
Open

helly25 wants to merge 6 commits into
mainfrom
benchmark/continuous-extended-history-20261108

Conversation

@helly25

@helly25 helly25 commented Nov 9, 2026 •

Copy link
Copy Markdown
Collaborator

Run the five extended CLI workloads on Linux and macOS for merged commits and publish them as separate datasets in the existing 3D benchmark viewer. Keep their measurements separate from core benchmark history.

Add a strict importer for the already completed 130-revision campaign, preserving its local origin, fixed reference, raw observations and original production-binary evidence.

AG;DR

Collection and build identity

  • Add independent Linux/macOS jobs to the existing Benchmarks workflow. Core jobs and the other platform do not depend on extended collection succeeding. No additional workflow is introduced.
  • Keep extended-production-v1: file listing, native-case name filtering, metadata/date formatting, content regex and TAR filtering; broad/deep fixtures; workers 1/3; native sizes 100/10k/100k and archive sizes 100/1k/10k. This is 60 measured cells, with one warm-up and nine measured rounds retaining seven.
  • Interleave head, first-parent XFF and the equivalent traditional tool within every cell. Collect another complete 60-cell grid against the identical parent binary as a diagnostic control. A failed control leaves a complete, validated head observation recoverable with an explicit error. An incomplete or invalid head is never publishable.
  • Build exact clean head and first-parent sources using //xff/cli:xff_full --config=clang_release --config=xff_full, without system/home Bazel RC files or workspace overrides. Each build has its own matching configured query and immediate binary copy, before another Bazel invocation. Retain actual ThinLTO link actions, source/tree/configuration identities and executable hashes.
  • Stream native build progress and print each frozen revision, executable hash, size and path. Retain production build diagnostics even when a job fails.
  • Upload the original build artifact, download it again, then measure the retained bytes. Stop the build servers before measurement. Build/report artifacts retain the existing 30-day lifetime.
  • Check runner capacity before builds. CI Linux uses three allowed logical CPUs rather than requiring three distinct topology cores; local historical collection retains its original distinct-core policy. Record allocation policy and logical capacity.
  • Use a newly owned verified tmpfs directory on Linux and a newly attached 2 GiB case-sensitive HFS+ RAM image on macOS. Record and recheck device/image/UUID ownership; refuse cleanup after identity changes. Local Linux validation may borrow a verified tmpfs fixture without deleting it; CI cannot borrow fixtures.
  • Validate every output against the independent multiset oracle. Preserve warm-ups, raw samples, exact commands, locale/timezone, host pressure, CPU allocation, counts/hashes and failed-attempt diagnostics. Recheck fixtures, binaries, tools and native accounting before accepting an observation.

Retention, publication and viewer history

  • Store immutable original observations under benchmarks/extended/observations/. Generate separate traditional-tool and XFF-reference views under extended/views/, then append their catalog entries to the existing browser.
  • Original local history retains its fixed PR Stop main benchmarks once three of four candidates agree #1130 anchor. Continuous CI uses a stable parent participant label, with the actual parent commit exposed per version. Keep origin, recipe, platform, comparison and series separate. No missing sizes or allocations are invented.
  • Validate trusted GitHub workflow/main-push/repository/run/attempt/head metadata and GitHub's actual first parent before retaining CI data. A report's own provenance claims are insufficient. Preserve successful earlier attempts when only failed jobs are retried.
  • Recover complete platform artifacts from completed workflows even when another independent job failed. Core and extended validation failures are isolated, so one cannot discard the other's valid observations.
  • Cache settled artifact inventories for up to 24 hours, keyed by run/attempt/head/update metadata. Recent completions remain uncached for index propagation; retries get a new key; cached expiry is checked before use.
  • Include extended views in the dataset registry while keeping them out of core baseline selection, core overview and merged-PR coverage accounting.
  • Fix recovery selection so differing missing-platform sets do not produce a cross-product that repeats successful configurations. Validate available core reports from failed workflows with the publisher's actual checks. API observation failures propagate instead of being treated as a reason to repeat measurements.

Validation

  • All twelve targeted Bazel suites pass on macOS, including applicable unchanged cached suites. All 70 direct Linux tooling tests pass (54 extended, eight reconciliation, eight recovery). Live repository tooling ownership checks and all commit hooks pass.
  • The importer validated all 130 original revisions, 7,800 cells and 234,000 invocations against their declared commands, sampling, oracle, original executable bytes and production link evidence.
  • Integrated both 130-version views into an isolated copy of the actual published site. All 588 prior catalog entries remain byte-for-byte equivalent as JSON entries. All three chart orders reproduce the actual sampled ratios, with exactly 60 measured and 20 unavailable coordinates per view.
  • Chromium loaded the compacted site, selected oldest/middle/latest revisions in both datasets, displayed the retained binary verification and fixed reference correctly, and reported no page errors. Local preview: http://127.0.0.1:63790/benchmarks/.
  • Linux native collector verification completed 60 head plus 60 control cells and 3,600 output-checked invocations, including the frozen-build retention round trip and final integrity checks. The borrowed tmpfs fixture was preserved. macOS also completed all 120 cells and 3,600 invocations, with final fixture/tool/binary checks and verified release of its newly owned RAM image. Both hosts passed the full collector.

Scope and remaining validation

This PR contains the collector, validator, importer, publisher, workflow wiring and tests. The original historical observations are prepared separately for the publication branch; they are not added to the source tree. Their two compacted views plus retained observations occupy approximately 44 MB.

The full configured release-site build and its 32 regression tests pass. The macOS raw evidence, frozen binaries, source snapshots and ownership receipts are retained on drogon at /home/marcus/Documents/xff-per-entry-followup-20261108/xff-extended-native-validation-macos-20261109.tar.gz, independently verified SHA-256 ba2e83b4a612f7da9ff98ad5040311ea3f99ab9f93e61333489b1d95f07b14bf. The source-tree qualification summary is docs/benchmarks/extended-history-continuous-qualification-20261109.json.

The new GitHub collection jobs still need their first post-merge run. Local pipeline validation is labeled local and does not claim CI provenance or an optimization: the two source revisions produce byte-identical production executables on each host. Performance changes and their existing qualification remain separate in #1151.

Changing workload semantics, sampling or accounting requires a separately identified measurement contract rather than relabeling older results. Future representative workloads must be qualified before addition.

Current-main synchronization and coverage inventory (2026-11-09)

The branch now includes main through 94e785f02f6d4546484e6e224351eba814deb979 (#1155), using ordinary merge commits. The campaign-document conflict preserves every nonempty line from both parents in order; all parent release-site page and asset mappings remain. Runtime C++ and root production build configuration match main. The tools BUILD additions remain byte-identical to the previously tested PR head; no new C++ experiment is included.

The updated docs/benchmark-merged-pr-coverage.md records the November 9 09:37 UTC snapshot: 240 direct main merges, 171 published on both platforms, 69 missing. PR #1154 has both validated reports awaiting publication. Of the other 68 gaps, #881-884 already have active campaign 42589939294 and must not be dispatched again. PRs #877-880 were actually selected in both live viewer datasets at 09:35, loading all eight expected commits and chart payloads without page errors. Their earlier missing observation remains retained. Later merges, including #1155, are explicitly outside that dated inventory.

All three retained main-run response pages were independently hash-checked during document generation; the 94-response audit index and original snapshots remain on drogon. Historical main-run conclusions are recorded as observations, not invented root causes. Successful reports and live campaigns remain protected.

Before the update, the original #1153 workflow 42541613444 was directly confirmed completed successfully at 01:49 UTC; no branch workflow was running. This update therefore interrupts no active measurement or CI job. Fresh integration CI must pass on the new head. The earlier 130-version native/import/browser qualification remains evidence for its exact frozen source; it is not relabeled as new-head CI. Actual post-merge extended collection and live publication/import remain required final checks.

@github-actions

github-actions Bot commented Nov 9, 2026 •

Copy link
Copy Markdown

Benchmark preview

Advisory: changes over 15% are warnings, not merge failures. Positive reference-adjusted change means slower; negative means faster.

linux

Performance overview

No compatible comparison exceeds the 15% slowdown threshold. Advisory only.

Merged baseline: ad3be8a; run 42583205104, attempt 2; mean of fastest 7/9 runs.

Compatible comparisons: 360/360; unavailable: 0.

Population Comparisons Typical change Faster Within threshold Slower
All matched cases 360 +0.5% 0 360 0

Largest regressions:

Task Tree Workers Files Reference Change
content-absent_marker deep 3 100 rg +13.3%
fuzzy-discovery-zzzz deep 3 50 find+fzf +11.2%
fuzzy-discovery-hdn deep 3 200 find+fzf +10.8%
fuzzy-discovery-zzzz deep 3 500 find+fzf +10.0%
files deep 3 5,000 rg +9.6%

Typical change is an equal-weight geometric mean of reference-adjusted XFF/main factors. Negative is faster; positive is slower. These correlated cases are not a significance test.

Interactive preview | CI run

Tested merge 093a7f3323; PR #1153 head a1579a797c.

macos

Performance overview

No compatible merged baseline comparisons are available; regression status is unknown. Advisory only.

Merged baseline: unavailable.

Compatible comparisons: 0/360; unavailable: 360.

Population Comparisons Typical change Faster Within threshold Slower
All matched cases 0 n/a 0 0 0

Typical change is an equal-weight geometric mean of reference-adjusted XFF/main factors. Negative is faster; positive is slower. These correlated cases are not a significance test.

Interactive preview | CI run

Tested merge 093a7f3323; PR #1153 head a1579a797c.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant