Skip to content

Commit cf7f50a

Browse files
chore(release): include hyperdb-compile-check in lockfile-sync guard allow-list (#98)
The 'Verify lockfile diff is workspace-only' sentinel in release-please.yml builds its allow-list from `cargo metadata --no-deps` on the ROOT workspace. But hyperdb-compile-check is deliberately NOT a root-workspace member (it declares its own [workspace] so it can build/test standalone), so root metadata omits it — while it IS a path crate in the root lockfile and gets a 0.3.1 -> 0.4.0 bump during the release lock-sync. The guard therefore false-positived and aborted the v0.4.0 release with: Cargo.lock sync touched non-workspace packages: hyperdb-compile-check Fix: union the root workspace members with hyperdb-compile-check's own workspace members (its sub-workspace cargo metadata). Both halves are still derived at runtime, so future workspace additions stay in sync with no hard-coded list. Verified against the real v0.4.0 lock diff: the old allow-list flags hyperdb-compile-check (reproducing the failure); the unioned allow-list accepts all 9 bumped path crates and the guard passes. Also corrects the stale '8 workspace-member version rows' comment to 9, naming hyperdb-compile-check. This is the third place the compile-check non-membership exception needed handling (after the version-pin markers in #97 and the publish ordering).
1 parent 1f07015 commit cf7f50a

1 file changed

Lines changed: 20 additions & 7 deletions

File tree

‎.github/workflows/release-please.yml‎

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -119,13 +119,14 @@ jobs:
119119

120120
# `cargo metadata --format-version=1` forces a lockfile
121121
# reconciliation pass against the current Cargo.tomls. Empirically
122-
# validated on this workspace: it flips exactly the 8 workspace-
123-
# member version rows (hyperdb-api, hyperdb-api-core,
122+
# validated on this workspace: it flips exactly the 9 path-crate
123+
# version rows in the root lockfile (hyperdb-api, hyperdb-api-core,
124124
# hyperdb-api-derive, hyperdb-api-node, hyperdb-api-salesforce,
125-
# hyperdb-bootstrap, hyperdb-mcp, sea-query-hyperdb) and touches
126-
# no external dep rows. The "Verify lockfile diff is workspace-
127-
# only" sentinel below catches it if a future cargo version
128-
# diverges.
125+
# hyperdb-bootstrap, hyperdb-mcp, sea-query-hyperdb, and
126+
# hyperdb-compile-check — the last is its own workspace but is
127+
# still a path dep in the root lock) and touches no external dep
128+
# rows. The "Verify lockfile diff is workspace-only" sentinel below
129+
# catches it if a future cargo version diverges.
129130
#
130131
# Why not `cargo generate-lockfile`: it does a full re-resolve
131132
# and bumps unrelated transitive deps to their latest semver
@@ -182,7 +183,19 @@ jobs:
182183
# Layer 2: enumerate workspace members at runtime, then
183184
# check each name appearing in the diff is in that set.
184185
# `select(.source==null)` filters out registry packages.
185-
WORKSPACE=$(cargo metadata --no-deps --format-version=1 \
186+
#
187+
# hyperdb-compile-check is deliberately NOT a member of the root
188+
# workspace (it declares its own `[workspace]` so it can build/test
189+
# standalone), so root `cargo metadata` omits it — yet it IS a path
190+
# crate in the root lockfile and gets a version bump on release. Union
191+
# in its own workspace's members so the guard doesn't false-positive
192+
# on it. Both sides are runtime-derived, so workspace additions stay
193+
# automatically in sync with no hard-coded list.
194+
WORKSPACE=$( { \
195+
cargo metadata --no-deps --format-version=1; \
196+
cargo metadata --no-deps --format-version=1 \
197+
--manifest-path hyperdb-compile-check/Cargo.toml; \
198+
} \
186199
| jq -r '.packages[] | select(.source==null) | .name' \
187200
| sort -u)
188201
CHANGED=$(git diff -U1 -- Cargo.lock \

0 commit comments

Comments
 (0)