Skip to content

Preserve aggregate coverage history with compressed source reports - #156

Merged
helly25 merged 1 commit into
mainfrom
feat/coverage-storage
Oct 4, 2026
Merged

helly25 merged 1 commit into
mainfrom
feat/coverage-storage

Conversation

@helly25

@helly25 helly25 commented Oct 4, 2026 •

Copy link
Copy Markdown
Collaborator

Preserve Rust coverage aggregates permanently while compacting repeated LLVM source reports. Old source links keep their report identity, and expired details explain the seven-day policy and link to their permanent summary.

AG;DR

  • Port the storage design from mbo #549, originating in xff #955. Aggregate measurements, original run metadata, and pre/post-merge attribution remain indefinitely; source HTML expires seven days after original completion. Replays do not extend retention.
  • Compress summary JSON and report landing pages losslessly. Recent details use compressed manifests, shared source bases, and single-base edits without report-to-report dependency chains. Old source URLs retain identity and line anchors through the viewer; expired details link to the permanent summary.
  • Compact before committing the retained tree and again after deployment-only artwork. Record complete-site bytes by section, warn at 250 MB (250,000,000 bytes), and keep the emergency 9 GB payload guard. The documented supported Pages site limit remains 1 GB; the emergency guard is not an operating budget.
  • Fetch only the current publication snapshot. Existing publication Git history is not rewritten; Actions artifacts and build caches are separate budgets.
  • Adapt the port to runs/<run>/<attempt>/metadata.json and LLVM HTML. Capture weighted aggregate counters from LCOV before any source deletion, retain original lcov.info bytes as gzip, and make history regeneration prefer the permanent summary. Missing aggregate input aborts compaction before deleting source HTML.
  • Preserve LLVM named line anchors. Packed views render static source, tables, styles, and links in a sandboxed frame; original report scripts and their JavaScript-only navigation controls are removed.
  • Apply storage handling to both release and coverage publication paths; retain the existing attempt-specific Rust coverage eligibility gate.
  • Cover compressed legacy LCOV, aggregate regeneration after detail expiry, repeated compaction, and deployment artwork preservation. Update infrastructure, release-site documentation, and the changelog.
  • Add Python regression coverage for byte preservation, expiry, replay, base collection, accounting, and workflow ordering, plus a pinned Playwright/Chromium suite in the required site CI job for packed summaries, JSON, source navigation, CSS, deep links, expiry, and the no-JavaScript fallback.
  • Validation relies on CI, as requested. All current-head CI checks, including the required done gate, passed for 3d19f4a943fc on 2026-10-04. CI results. No local result is used as final validation.
  • Packed pages require JavaScript and built-in DecompressionStream; raw compressed data and original metadata remain downloadable. Runtime site code has no third-party dependencies.
  • This PR targets main independently and has no dependency or required merge order with the parallel repository rollout PRs. Publication happens through the existing workflows after merge.

Signed-off-by: helly25 <6420169+helly25@users.noreply.github.com>
@helly25
helly25 merged commit df35ff6 into main Oct 4, 2026
11 checks passed
@helly25
helly25 deleted the feat/coverage-storage branch October 4, 2026 10:00

This branch was successfully deployed

1 active deployment
github-pages — 3d19f4a9 Deployed Oct 4, 2026 by helly25 via coverage #152
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