Skip to content

feat: release-to-release delta in export + CI snapshot workflow#97

Merged
avrabe merged 3 commits intomainfrom
feat/export-delta
Apr 1, 2026
Merged

feat: release-to-release delta in export + CI snapshot workflow#97
avrabe merged 3 commits intomainfrom
feat/export-delta

Conversation

@avrabe
Copy link
Copy Markdown
Contributor

@avrabe avrabe commented Apr 1, 2026

Summary

Closes the delta loop: snapshots captured on release → delta columns in the next release's HTML export.

Export auto-delta

  • rivet export --format html auto-detects the most recent snapshot in snapshots/
  • Stats page: summary cards show +N/-N badges for artifacts, errors, warnings
  • Stats page: by-type table gains a Δ column with per-type changes
  • Coverage page: overall coverage shows Δ percentage
  • Coverage page: per-rule table gains a Δ column with trend
  • Zero config — just have a snapshot file from a previous release

CI snapshot workflow

  • Release workflow (release.yml) gains a capture-snapshot job
  • On v* tag push: runs rivet snapshot capture --name $TAG
  • Commits snapshot JSON to main for future delta comparison
  • Passes snapshot to compliance report job via artifact
  • Compliance report auto-includes delta columns vs previous release

Flow

v0.3.0 tag → snapshot captured → committed to main
development continues...
v0.4.0 tag → snapshot captured → export detects v0.3.0 snapshot → Δ columns rendered

Refs #92.

Test plan

  • cargo test --workspace — all tests pass
  • cargo clippy --all-targets -- -D warnings — clean
  • cargo fmt --all -- --check — clean
  • CI

🤖 Generated with Claude Code

avrabe added 2 commits April 1, 2026 18:37
Export auto-detects the most recent snapshot in snapshots/ and renders
Δ columns in stats and coverage views:
- Summary cards show +N/-N badges for artifacts, errors, warnings
- By-type table gains a Δ column with per-type changes
- Coverage summary shows Δ percentage
- Coverage-by-rule table gains a Δ column with per-rule trend

Zero config — just have a snapshot file from a previous release and
the delta appears automatically in the next export.
Adds a capture-snapshot job to the release workflow that:
1. Runs rivet snapshot capture --name $TAG on every v* tag push
2. Commits the snapshot JSON to main for future delta comparison
3. Passes the snapshot to the compliance report job via artifact

The compliance report (rivet export --format html) will auto-detect
the previous snapshot and render delta columns in stats/coverage.
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 1, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'Rivet Criterion Benchmarks'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.

Benchmark suite Current: 8edfda2 Previous: c5ff64c Ratio
traceability_matrix/100 5237 ns/iter (± 41) 4268 ns/iter (± 66) 1.23
traceability_matrix/1000 59144 ns/iter (± 356) 44737 ns/iter (± 301) 1.32
query/10000 112534 ns/iter (± 772) 91411 ns/iter (± 463) 1.23

This comment was automatically generated by workflow using github-action-benchmark.

The compliance report should compare against the PREVIOUS release
snapshot (already committed to main), not the one just captured
for this release. This correctly shows 'what changed since last
release' in the exported HTML delta columns.

The capture-snapshot job runs in parallel and commits the new
snapshot to main for future release comparisons.
@avrabe avrabe merged commit 0661926 into main Apr 1, 2026
17 of 18 checks passed
@avrabe avrabe deleted the feat/export-delta branch April 1, 2026 22:55
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