From 7fa924587d6da0dd5502aecc5412c1317f445f0e Mon Sep 17 00:00:00 2001 From: pvijayakrish Date: Fri, 14 Aug 2026 19:58:41 -0700 Subject: [PATCH 1/2] build: pin dynamo-llm version in backend-common for cargo publish cargo publish rejects a path dependency without a version; this is why dynamo-backend-common has missed every crates.io GA since 1.2.1 (the old publish loop masked the error). workspace = true is not an option because the crate needs default-features = false. Verified with cargo publish --dry-run on release/1.4.0. Signed-off-by: pvijayakrish --- lib/backend-common/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/backend-common/Cargo.toml b/lib/backend-common/Cargo.toml index 5460a4a70ac4..4531f4e15dd1 100644 --- a/lib/backend-common/Cargo.toml +++ b/lib/backend-common/Cargo.toml @@ -23,7 +23,7 @@ integration = ["dynamo-runtime/integration"] [dependencies] dynamo-runtime = { workspace = true } -dynamo-llm = { path = "../llm", default-features = false } +dynamo-llm = { path = "../llm", version = "1.4.0", default-features = false } dynamo-protocols = { workspace = true } anyhow = { workspace = true } From 907976f28c2825c25b5529a049365299e1a4e5c1 Mon Sep 17 00:00:00 2001 From: pvijayakrish Date: Fri, 14 Aug 2026 20:25:56 -0700 Subject: [PATCH 2/2] build: stamp workspace-version pins in member manifests backend-common's dynamo-llm pin lives in an inline dep table, which VERSION_LINE_RE deliberately skips; nightly stamping would leave it at 1.4.0 while the workspace moves to 1.4.0-devN and resolution fails. rewrite_root_cargo now applies its exact-string rewrite to WORKSPACE_PIN_CARGO_TARGETS as well. Verified by stamping a scratch checkout: pin follows the workspace version, cargo resolution passes, re-run is a no-op. Signed-off-by: pvijayakrish --- .github/scripts/apply_dev_version.py | 29 +++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/.github/scripts/apply_dev_version.py b/.github/scripts/apply_dev_version.py index 68a225650e0c..f1ed7f361824 100755 --- a/.github/scripts/apply_dev_version.py +++ b/.github/scripts/apply_dev_version.py @@ -44,6 +44,18 @@ "lib/kvbm-physical/Cargo.toml", ] +# Member manifests that pin the workspace version inside a dependency +# inline table, e.g. backend-common's +# `dynamo-llm = { path = "../llm", version = "1.4.0", default-features = false }` +# (a direct path dep because cargo cannot express `workspace = true` + +# `default-features = false`). VERSION_LINE_RE is line-anchored and +# intentionally skips inline tables, so these files get the same exact-string +# rewrite as the root path-dep pins (the pinned value always equals +# [workspace.package].version). +WORKSPACE_PIN_CARGO_TARGETS = [ + "lib/backend-common/Cargo.toml", +] + # Line-anchored: matches `version = "X.Y.Z"` lines. Skips `version.workspace = true` # (no quotes) and `version = { ... }` (no string). Safe for sub-crate Cargo.tomls # whose only `version = "..."` line is the [package] one; external-crate deps use @@ -140,13 +152,20 @@ def rewrite_root_cargo(root: Path, suffix: str) -> None: return # already stamped -- idempotent no-op new = semver(suffix, base) - text = re.sub( - rf'(\bversion\s*=\s*"){re.escape(base)}(")', - lambda mm: f"{mm.group(1)}{new}{mm.group(2)}", - text, - ) + pin_re = re.compile(rf'(\bversion\s*=\s*"){re.escape(base)}(")') + text = pin_re.sub(lambda mm: f"{mm.group(1)}{new}{mm.group(2)}", text) path.write_text(text) + # Bump the same literal pin where it lives in member manifests (inline + # dep tables that VERSION_LINE_RE deliberately skips). The early + # "already stamped" return above keeps this idempotent. + for rel in WORKSPACE_PIN_CARGO_TARGETS: + p = root / rel + t = p.read_text() + t2 = pin_re.sub(lambda mm: f"{mm.group(1)}{new}{mm.group(2)}", t) + if t2 != t: + p.write_text(t2) + def main() -> int: ap = argparse.ArgumentParser(description=__doc__)