Skip to content

release: server.json's version is not bumped by release automation, so every release PR fails server-manifest:check #9874

Description

@JSONbored

Problem

scripts/check-server-manifest.ts requires server.json's version and packages[0].version to equal @loopover/mcp's package.json version, and it runs in test:ci as server-manifest:check.

release-please bumps packages/loopover-mcp/package.json but never touches server.json. So every release PR for the engine-and-dependents group fails CI on:

server.json has 2 problem(s) (#9526):
  version: must equal @loopover/mcp's 3.17.0 (release automation owns it), got 3.15.2
  packages[0].version: must equal @loopover/mcp's 3.17.0, got 3.15.2

Confirmed live on #9780, and fixed there by hand — which is the point: it needs re-fixing by hand on every release, and a machine-generated branch is exactly where a manual step gets forgotten.

Why the existing sync pattern does not apply

scripts/sync-release-manifest.ts (+ its --check) is the repo's idiom for this shape, but it does not help here: release PRs are generated by the bot, so a script a human has to run never fires on the branch that needs it.

The fix

release-please should write server.json itself when it creates the release PR, via extra-files on the packages/loopover-mcp entry in release-please-config.json:

"extra-files": [
  { "type": "json", "path": "server.json", "jsonpath": "$.version" },
  { "type": "json", "path": "server.json", "jsonpath": "$.packages[0].version" }
]

The open question is path resolution. extra-files paths are documented as relative to the package's own directory, which would resolve to packages/loopover-mcp/server.json rather than the repo-root server.json. This needs to be confirmed against the release-please version actually in use (and the root-relative escape, if there is one) before landing — a wrong guess here silently breaks releases rather than failing loudly, which is why #9780 was fixed by hand instead.

Acceptance

A release PR for @loopover/mcp arrives with server.json already carrying the new version, server-manifest:check passes on it unaided, and no human step is required between release-please opening the PR and CI going green. Verify by watching the next generated release PR, not by running anything locally.

Metadata

Metadata

Assignees

Labels

maintainer-onlyOwner-only work — yields no Gittensor points.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions