Skip to content

ci: pin rivet-cli to v0.19.0 + version-key its cache (#242 release cadence)#464

Merged
avrabe merged 1 commit into
mainfrom
ci/pin-rivet-cli
Jun 24, 2026
Merged

ci: pin rivet-cli to v0.19.0 + version-key its cache (#242 release cadence)#464
avrabe merged 1 commit into
mainfrom
ci/pin-rivet-cli

Conversation

@avrabe

@avrabe avrabe commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

What

Pin the Rivet Validation job's rivet-cli install, and stop its binary cache from invalidating on every release. CI-only / frozen-safe — zero codegen change, frozen fixtures bit-identical by construction.

Why

Unpinned rivet --branch main has now red-failed a release twice, both on unchanged artifacts:

Both cost diagnosis + re-run time, and the next release (the queued imm-shift-fold flip) would hit the same trap.

Fix (two parts)

  1. Pin the install to release tag v0.19.0 — validated clean on this repo's artifacts (non-xref ERROR 0, coverage exit 0). Upstream bumps become deliberate.
  2. Version-key the ~/.cargo/bin/rivet cache (not Cargo.lock) and skip the build when that exact version is already present. A release's Cargo.lock change no longer forces the HiGHS rebuild.

Self-healing on persistent self-hosted runners: a stale binary fails the version grep → cargo install --force --tag v0.19.0 pins it back.

The PR's own Rivet Validation run is the gate — it must stay green.

🤖 Generated with Claude Code

…lease cadence, #242)

Unpinned `rivet --branch main` in the Rivet Validation job has now red-failed a
release TWICE — both times on unchanged artifacts:
  - #229: rivet 0.15.0 promoted a status-enum check WARN→ERROR (schema drift).
  - v0.14.0: rivet 0.19.0's HiGHS C++ dependency filled a self-hosted runner's
    disk on a full rebuild (No space left on device). The rebuild was triggered
    because the bin cache was keyed on Cargo.lock, which a release version bump
    invalidates.

Two fixes, both frozen-safe (CI-only; zero codegen change → frozen fixtures
bit-identical by construction):

1. PIN the install to release tag v0.19.0 (validated clean on this repo's
   artifacts: non-xref ERROR 0, coverage exit 0). Schema/behaviour bumps become
   deliberate, not surprise gate-rednenings.
2. KEY the rivet-cli binary cache on the pinned version (not Cargo.lock), cache
   only `~/.cargo/bin/rivet`, and skip the build when that exact version is
   already present. A release's Cargo.lock change no longer forces the HiGHS
   rebuild that filled the disk.

Self-healing on persistent self-hosted runners: a stale binary fails the
version grep → `cargo install --force --tag v0.19.0` pins it back.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@avrabe avrabe merged commit 2c01e04 into main Jun 24, 2026
10 checks passed
@avrabe avrabe deleted the ci/pin-rivet-cli branch June 24, 2026 12:40
@codecov

codecov Bot commented Jun 24, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

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