Skip to content

fix: switch release-please to simple type (workspace inheritance)#6

Merged
McSim85 merged 1 commit into
main-qnfrom
qn/release-please-simple-fix
May 29, 2026
Merged

fix: switch release-please to simple type (workspace inheritance)#6
McSim85 merged 1 commit into
main-qnfrom
qn/release-please-simple-fix

Conversation

@McSim85
Copy link
Copy Markdown

@McSim85 McSim85 commented May 29, 2026

Is this change upstreamable?

  • No — QuickNode-specific release tooling. qn/* branch; no upstream PR.

Summary

The release-please run (after #5 merged) failed:

Error: release-please failed: path not found in object: package.version

Root cause: release-type: rust iterates every workspace member and writes a literal package.version into each (updaters/rust/cargo-toml.js unconditionally does replaceTomlValue(['package','version'], …)). examples/Cargo.toml has a [package] table but no version key, so the path walk throws. And even on success, the rust type (and the cargo-workspace plugin, which requires a literal string version) would clobber version = { workspace = true } in proxy/jito_protos — defeating workspace inheritance and causing recurring conflicts on every master sync.

Fix: use release-type: simple (doesn't touch Cargo files) and drive updates via extra-files:

  • Cargo.toml [workspace.package] version via the generic annotation updater (x-release-please-version) — inheritance preserved, proxy/jito_protos untouched.
  • Cargo.lock entries via two toml updaters keyed by package name. The jsonpath matches @.name.value because release-please's TOML parser wraps scalars as {start,end,value}:
    $.package[?(@.name.value=='jito-shredstream-proxy')].version

Verification (against installed release-please 17.6.1)

  • Confirmed in source: simple's version.txt updater is createIfMissing: falseno version.txt created; extra-files are merged for all strategies (strategies/base.js line 184).
  • Simulated both updaters on the real Cargo.toml + Cargo.lock → all three targets become 0.2.14+qn; inheritance lines untouched; Cargo.lock stays consistent (so cargo build --locked passes).
  • +qn carried through by the default versioning strategy (unchanged from ci: add release-please versioning pipeline #5); the build job's +qn guard still applies.

Test plan

After merge, confirm release-please opens a chore: release 0.2.14+qn PR whose diff bumps only the root [workspace.package] version and the two Cargo.lock entries (not proxy/jito_protos manifests), updates CHANGELOG.md, and creates no version.txt. Merging it should tag v0.2.14+qn.


Note

Low Risk
Config-only change to release automation; no runtime or application code paths.

Overview
Switches release-please from release-type: rust to simple so it no longer walks every workspace crate or overwrite version = { workspace = true } in member manifests.

Version bumps are driven only through extra-files: the root Cargo.toml [workspace.package] version (generic / x-release-please-version annotation) and the jito-shredstream-proxy and jito-protos entries in Cargo.lock (toml updaters with package-name jsonpaths). The per-package component tag field is removed.

Reviewed by Cursor Bugbot for commit 472da2e. Configure here.

…tance

The first release-please run failed:
  Error: release-please failed: path not found in object: package.version

Root cause: release-type `rust` iterates every workspace member and writes a
literal `package.version` into each (updaters/rust/cargo-toml.js unconditionally
calls replaceTomlValue(['package','version'], ...)). examples/Cargo.toml has a
[package] table but no version key, so the path walk throws. Worse, even on
success the rust type (and the cargo-workspace plugin, which requires a literal
string version) would clobber `version = { workspace = true }` in proxy and
jito_protos with literals -- defeating workspace inheritance and creating
recurring conflicts every time we sync upstream master.

Fix: use release-type `simple`, which doesn't touch Cargo files, and drive the
updates via extra-files (verified against release-please 17.6.1):
- Cargo.toml [workspace.package] version via the generic annotation updater
  (x-release-please-version), preserving inheritance -- proxy/jito_protos are
  untouched.
- Cargo.lock entries via two `toml` updaters keyed by package name. Note the
  jsonpath matches @.name.value (release-please's TOML parser wraps each scalar
  as {start,end,value}), e.g.
  $.package[?(@.name.value=='jito-shredstream-proxy')].version

simple's version.txt updater is createIfMissing:false, so no version.txt is
created. extra-files are merged for all strategies (strategies/base.js).
Simulated both updaters on the real Cargo.toml/Cargo.lock -> 0.2.14+qn.

Release-As: 0.2.14+qn
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@McSim85 McSim85 merged commit ac8d276 into main-qn May 29, 2026
3 checks passed
@McSim85 McSim85 deleted the qn/release-please-simple-fix branch May 29, 2026 18:01
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.

2 participants