Skip to content

fix(release): teach bump-version.sh about benchmarks/Cargo.toml's pin#111

Merged
joaoh82 merged 1 commit into
mainfrom
fix/bump-script-bench-pin
May 8, 2026
Merged

fix(release): teach bump-version.sh about benchmarks/Cargo.toml's pin#111
joaoh82 merged 1 commit into
mainfrom
fix/bump-script-bench-pin

Conversation

@joaoh82

@joaoh82 joaoh82 commented May 8, 2026

Copy link
Copy Markdown
Owner

Summary

The v0.9.0 Release PR workflow (Action run 25559263224) failed at the Refresh Cargo.lock step:

error: failed to select a version for the requirement sqlrite-engine = "^0.8.0"
candidate versions found which didn't match: 0.9.0
required by package sqlrite-benchmarks v0.0.0

benchmarks/Cargo.toml was added by SQLR-16 (Phase 9). The bench crate is unpublished (version = "0.0.0" on purpose, internal-only), so it was deliberately left out of TOML_FILES. But its inter-workspace dep pin (sqlrite = { package = "sqlrite-engine", path = "..", version = "0.8.0", ... }) still has to track the workspace bump or cargo build can't resolve.

Fix

Adds a new PIN_ONLY_TOML_FILES array for unpublished workspace members. Files in that list go through only the path-pinned dep sweep (version = "X" on lines that also carry path = "..."version = "<bump>"), not the top-level version = "..." sed — so the bench crate's own 0.0.0 stays put while its sqlrite-engine pin tracks main.

The verification sweep already iterates over TOML_FILES; widened it to also cover PIN_ONLY_TOML_FILES so a future regression is caught at script time, not at workflow time.

Test plan

Smoke-tested locally:

  • bash scripts/bump-version.sh 0.9.0 succeeds with the new file in scope
  • benchmarks/Cargo.toml pin rewritten: version = "0.8.0"version = "0.9.0"
  • benchmarks/Cargo.toml package version unchanged: still version = "0.0.0"
  • cargo build --workspace --exclude sqlrite-{desktop,python,nodejs} resolves cleanly
  • git checkout . reverts the bump (no smuggled artifacts)

After merge, re-firing the Release PR workflow with version=0.9.0 should land the SQLR-23 release.

🤖 Generated with Claude Code

The bench crate (added in SQLR-16) is `version = "0.0.0"` on purpose —
it's an internal-only workspace member that never publishes. But its
`sqlrite-engine` dep still pins a concrete version that has to track
the workspace bump or `cargo build` fails with `failed to select a
version for the requirement sqlrite-engine = "^0.X.Y"`.

This is exactly what tripped the v0.9.0 Release PR workflow today
(GH Action run 25559263224) — bump-version.sh missed the bench
manifest's pin because the file isn't in TOML_FILES.

Adds a new `PIN_ONLY_TOML_FILES` array for unpublished workspace
members. Files in that list go through only the path-pinned dep
sweep (`version = "X" path = "..."` → `version = "<bump>"`), not
the top-level `version = "..."` sed — so the bench crate's own
0.0.0 stays put while its `sqlrite-engine` pin tracks main.

The verification sweep already iterates over `TOML_FILES`; widened
it to also cover `PIN_ONLY_TOML_FILES` so a future regression here
is caught at script time, not at workflow time.

Smoke-tested locally: `bash scripts/bump-version.sh 0.9.0` now
rewrites benchmarks/Cargo.toml's pin correctly while leaving its
package version at 0.0.0; full workspace `cargo build` resolves.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@joaoh82 joaoh82 merged commit 4238e27 into main May 8, 2026
16 checks passed
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