diff --git a/.github/workflows/mcp-release-please.yml b/.github/workflows/mcp-release-please.yml index 60ed97b42d..dbe0c001c9 100644 --- a/.github/workflows/mcp-release-please.yml +++ b/.github/workflows/mcp-release-please.yml @@ -16,6 +16,23 @@ name: Package Release Please # default, these four packages have genuinely independent release cadences and separate publish # targets/workflows, and bundling them would work against this repo's small-focused-PR convention. # +# node-workspace plugin merge: true (release-please-config.json) -- the exception to the above: +# packages/loopover-mcp and packages/loopover-miner both carry a REAL runtime `dependencies` entry +# on packages/loopover-engine, so they are not actually independent of it. With merge left at its +# prior override (false), the plugin still bumps a dependent's `@loopover/engine` version range the +# moment engine's own version changes, but does so on that dependent's OWN separate branch/PR -- +# meaning the dependent's package.json now requires an engine version that exists NOWHERE (not +# locally on that branch, since engine's bump lives on a different unmerged branch; not on npm +# either, since it hasn't published yet). `npm ci` then fails with ETARGET until a human notices and +# manually walks engine's release through to publish before updating the dependent's branch -- +# confirmed live across several mcp/miner release cycles (#7086/#7087/#7107/#7108). merge: true is +# the plugin's own purpose-built mechanism for exactly this: it combines a package with the +# dependents its OWN dependency-bump logic pulled in as candidates into ONE PR/commit, so engine's +# new version and its dependents' bumped ranges land together atomically -- npm workspaces then +# resolves the dependency from the LOCAL checkout, which always satisfies the range regardless of +# npm registry publish timing or ordering. packages/loopover-ui-kit has no dependency edge to any +# other package here, so it is never pulled into this merge and keeps its fully independent cadence. +# # Runs on every push to main, not just a schedule: release-please is idempotent (it recomputes # purely from conventional-commit history since each component's last release tag), so the extra # runs cost nothing when there's no new commit or merged Release PR to act on. The push trigger is diff --git a/release-please-config.json b/release-please-config.json index 393468d488..4414b6dc88 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -29,7 +29,7 @@ "plugins": [ { "type": "node-workspace", - "merge": false + "merge": true } ], "changelog-sections": [