@@ -101,11 +101,24 @@ jobs:
101101 # lock file"). Patches it directly on whichever release branch(es) release-please just
102102 # created/updated, using the same branch naming convention its own commits already rely on.
103103 #
104- # The engine branch also needs packages/loopover-miner/expected-engine.version bumped to match
105- # packages/loopover-engine/package.json's new version: release-please's engine component only
106- # ever touches files under packages/loopover-engine/**, so it can never update that cross-package
107- # pin itself -- scripts/check-engine-parity.ts's checkMinerEngineVersionPinSync would otherwise
108- # fail on every single engine release PR (confirmed live on the engine-v3.1.0 release PR, #5807).
104+ # Also needs packages/loopover-miner/expected-engine.version bumped to match
105+ # packages/loopover-engine/package.json's new version whenever a branch bumps engine:
106+ # release-please's engine component only ever touches files under packages/loopover-engine/**,
107+ # so it can never update that cross-package pin itself -- scripts/check-engine-parity.ts's
108+ # checkMinerEngineVersionPinSync would otherwise fail on every release that bumps engine
109+ # (confirmed live on the engine-v3.1.0 release PR, #5807).
110+ #
111+ # Branches to check are content-derived (git ls-remote --heads matching the release-please
112+ # branch prefix), not a hardcoded per-component list: the linked-versions plugin (grouping
113+ # engine with its dependents, release-please-config.json) puts mcp/engine/miner on ONE shared
114+ # `--groups--<groupName>` branch instead of three separate `--components--<name>` branches, so
115+ # a hardcoded `for component in mcp engine miner ui-kit` loop checking only the old
116+ # `--components--` naming would silently never find/sync that branch at all (confirmed live:
117+ # PR #7127's engine-and-dependents group branch left expected-engine.version stale, failing
118+ # engine-parity:drift-check and two engine-version-display tests). Similarly, the
119+ # expected-engine.version sync itself is now driven by comparing the checked-out branch's own
120+ # committed pin against its own package.json (not an `if [ component = engine ]` check), so it
121+ # fires correctly whether engine's bump landed via a solo branch or a shared group branch.
109122 - name : Sync package-lock.json and engine-version pin on any release branch
110123 env :
111124 GH_TOKEN : ${{ secrets.RELEASE_PLEASE_TOKEN }}
@@ -117,14 +130,13 @@ jobs:
117130 cp scripts/sync-release-lockfile-versions.mjs "$trusted_sync_script"
118131 git remote set-url origin "https://github.com/${GITHUB_REPOSITORY}.git"
119132 gh auth setup-git
120- for component in mcp engine miner ui-kit; do
121- branch="release-please--branches--main--components--${component}"
122- if ! git ls-remote --exit-code --heads origin "$branch" >/dev/null 2>&1; then
123- echo "No release branch for $component, skipping."
124- continue
125- fi
133+ branches="$(git ls-remote --heads origin 'release-please--branches--main--*' | awk '{print $2}' | sed 's#refs/heads/##')"
134+ if [ -z "$branches" ]; then
135+ echo "No release-please branches found, skipping."
136+ fi
137+ for branch in $branches; do
126138 git fetch origin "$branch"
127- git checkout -B "sync-check-${component} " "origin/$branch"
139+ git checkout -B "sync-check-$(printf '%s' "$branch" | tr '/' '-') " "origin/$branch"
128140 node "$trusted_sync_script" packages/loopover-mcp packages/loopover-engine packages/loopover-miner packages/loopover-ui-kit
129141 if git diff --quiet package-lock.json; then
130142 echo "package-lock.json already in sync on $branch."
@@ -133,16 +145,14 @@ jobs:
133145 git commit -m "chore(release): sync package-lock.json"
134146 git push origin "HEAD:$branch"
135147 fi
136- if [ "$component" = "engine" ]; then
137- engine_version="$(node -p "require('./packages/loopover-engine/package.json').version")"
138- printf '%s\n' "$engine_version" > packages/loopover-miner/expected-engine.version
139- if git diff --quiet packages/loopover-miner/expected-engine.version; then
140- echo "expected-engine.version already in sync on $branch."
141- else
142- git add packages/loopover-miner/expected-engine.version
143- git commit -m "chore(release): sync miner engine-version pin"
144- git push origin "HEAD:$branch"
145- fi
148+ engine_version="$(node -p "require('./packages/loopover-engine/package.json').version")"
149+ printf '%s\n' "$engine_version" > packages/loopover-miner/expected-engine.version
150+ if git diff --quiet packages/loopover-miner/expected-engine.version; then
151+ echo "expected-engine.version already in sync on $branch."
152+ else
153+ git add packages/loopover-miner/expected-engine.version
154+ git commit -m "chore(release): sync miner engine-version pin"
155+ git push origin "HEAD:$branch"
146156 fi
147157 done
148158
0 commit comments