Skip to content

fix(release): sweep intra-workspace path-dep pins 0.6.0 → 0.7.0 - #143

Merged
avrabe merged 1 commit into
mainfrom
release/v0.7.0-pin-sweep
May 25, 2026
Merged

avrabe merged 1 commit into
mainfrom
release/v0.7.0-pin-sweep

Conversation

@avrabe

@avrabe avrabe commented May 25, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Sweeps 23 intra-workspace version = "0.6.0" pins → "0.7.0" across 8 crate manifests
  • Bumps MODULE.bazel module(version = ...) to 0.7.0
  • Unblocks release.yml + publish-to-crates-io.yml on the (next) v0.7.0 tag

Root cause

PR #142 bumped the [workspace.package] version to 0.7.0 but did not sweep the per-crate path-dep pins introduced in #136 (e.g. synth-cli/Cargo.toml: synth-backend = { path = "../synth-backend", version = "0.6.0" }). With workspace at 0.7.0 and pins requesting ^0.6.0, cargo refuses to resolve — every release-y workflow on the v0.7.0 tag died at the very first cargo build / cargo publish --dry-run. The original v0.7.0 tag was deleted from origin (no GitHub Release was created; Create GitHub Release was skipped after the build matrix failed) and will be re-pushed against this commit's merge once green.

Local validation

  • cargo metadata --no-deps --format-version 1 resolves cleanly at 0.7.0
  • cargo build --release -p synth-cli green in 53s

Follow-up

Tracked as a docs/CI gap: docs/release-process.md (or scripts/publish.rs) should gain an explicit "sweep intra-workspace pins" step — ideally a CI gate that fails when workspace version diverges from any path-dep version = pin. Will file an issue separately so v0.8.0 doesn't repeat the trap.

Test plan

  • Workspace CI green on this PR
  • After merge: re-tag v0.7.0 against the merge commit
  • release.yml + publish-to-crates-io.yml both green on the re-tagged push

The Cargo.toml workspace-package version was bumped to 0.7.0 in
PR #142, but the per-crate `version = "0.6.0"` pins on path
dependencies (introduced in #136 to give `cargo publish` real
crates.io coordinates to rewrite to) were not swept. Cargo
refuses to resolve `synth-backend = "^0.6.0"` against the local
0.7.0 path-dep, breaking both release.yml and
publish-to-crates-io.yml on the v0.7.0 tag.

This commit sweeps all 23 intra-workspace `version = "0.6.0"`
pins (across 8 crate manifests) to `"0.7.0"`, and bumps the
MODULE.bazel `module(version = ...)` declaration to match. The
v0.7.0 tag was deleted from origin (no GitHub Release was
produced — release.yml's build matrix failed before the
'Create GitHub Release' job, which was skipped) and will be
re-pushed against this commit.

Local validation:
  cargo metadata --no-deps  # resolves at 0.7.0
  cargo build --release -p synth-cli  # green

Follow-up tracked separately: docs/release-process.md should
gain an explicit 'sweep intra-workspace pins' step (or a CI
gate that fails when workspace version diverges from path-dep
pins) so v0.8.0 doesn't repeat this.
@avrabe
avrabe merged commit 70f5fd2 into main May 25, 2026
9 of 11 checks passed
@avrabe
avrabe deleted the release/v0.7.0-pin-sweep branch May 25, 2026 05:26
@codecov

codecov Bot commented May 25, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

avrabe added a commit that referenced this pull request May 31, 2026
#201)

* ci(release): gate intra-workspace version-pin desync at PR time (#145)

v0.7.0's tag broke release.yml + publish-to-crates-io.yml because
[workspace.package].version was bumped while every crates/*/Cargo.toml
path-dep pin + MODULE.bazel still carried the old version — cargo refused
to resolve (recovered by the 23-pin sweep in #143). The pin sweep was a
manual, forgettable step.

Add scripts/check_version_pins.py + a `Version Pin Sweep` CI job that
fails at PR-merge time if [workspace.package].version drifts from any
intra-workspace `{ path = "../x", version = "Y" }` pin or MODULE.bazel's
module(version=...). Makes the v0.7.0-class desync structurally
uncatchable-too-late rather than caught at tag-push.

The script doubles as a local pre-tag check (run from repo root, exits
non-zero listing every offending pin). Verified: passes at the current
0.11.11; catches an injected 0.11.10 path-dep desync with a file:line
message.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* docs(rivet): mark static-linking reqs implemented + add SYS.4 verification

The gale cross-language-LTO arc (synth v0.11.1–v0.11.11) shipped the
static-linking capability: ET_REL emission with R_ARM_THM_CALL relocations
against import field names (#173) and func_N internal symbols (#167),
relocatable fp-relative memory + caller-saved preservation (#197), the
.meld_import_table / FLASH / RAM linker-script sections, and the
--link cross-linker invocation. gale confirmed the z_impl object links
with 5 real kernel relocations.

Flip SL-001..SL-007 (system-reqs) and SL-TR-001..003 (sw-reqs) from
draft/planned to implemented, and add SL-IV-001 (sys-integration-
verification) verifying SL-001..007 with the on-target evidence +
regression tests (test_compile_internal_call_produces_relocation_167,
test_compile_relocatable_import_uses_direct_func_symbol_197,
relocatable_pointer_deref_uses_fp_base_197).

rivet validate: error count UNCHANGED at 35 (all pre-existing broken
cross-repo links to gale:/kiln:/sigil: externals that have no rivet.yaml
to sync against — orthogonal to status). Info-level coverage gaps drop
as SL-IV-001 closes the SL-00x verification backlinks.

Note: SL-TR-* sw-reqs retain info-level coverage gaps — neither
unit-verification (-> sw-detail-design) nor sw-integration-verification
(-> sw-arch-component/sw-detail-design) can target a sw-req directly,
so closing them needs the full ASPICE chain. Tracked in rivet#350.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
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