Skip to content

fix(mcpb): keep vendor/ paths in the bundle - the release workflow's first 0.4.1 run caught it - #16

Merged
GLouv merged 1 commit into
mainfrom
fix/mcpb-vendor-sti
Nov 14, 2026
Merged

GLouv merged 1 commit into
mainfrom
fix/mcpb-vendor-sti

Conversation

@GLouv

@GLouv GLouv commented Nov 14, 2026

Copy link
Copy Markdown
Member

What was wrong

The release workflow had never run in its current form. The only run before tonight was v0.2.0 on 20 Sep, before the MCPB steps were added. Before tagging 0.4.1 we started it once by hand with an empty tag input, which builds main without uploading anything. Run 43636302168 failed in its own proof step:

OK   serveren i pakken starter og svarer - 0.4.1
OK   pakken tilbyder samme antal vaerktoejer som kilden - 32 / 32
DUMP hjaelperen er med i pakken

Since 5a1b835 (6 Nov), mcp-server/package.json lists the two proven artifacts as vendor/cmcp-helper and vendor/ComputerMCPStatus.app. scripts/build-mcpb.sh copied each entry with cp -R "$f" "$SRV/", which drops the directory part. The helper and the status app therefore ended up next to index.js, while the server looks for them under vendor/.

The 0.4.1 notes (CHANGELOG.md, 0.4.1 section) say the GitHub release carries the binary and the .mcpb bundle built by CI from the tag. Without this fix, the tag run would have failed before uploading either of them.

The fix

  • scripts/build-mcpb.sh keeps each entry's path (mkdir -p + cp -R to the same relative path). This is the layout npm itself ships.
  • test/mcpb-start.mjs also checks the status app, which had the same fault and no check.

Measured

  • The workflow on this branch: run 43638055082 is success on 4d95c52, including "Byg og bevis MCPB-pakken". Upload is skipped, because this was a manual run.
  • The copy loop, old against new: measured in a scratch tree. The old loop gives ./cmcp-helper and ./ComputerMCPStatus.app/…, the new one ./vendor/cmcp-helper and ./vendor/ComputerMCPStatus.app/….
  • The npm package is unchanged: only scripts/ and test/ change, and npm packs mcp-server/. The integrity was computed with the release script's own procedure (git archive, the attested binaries, PUBLICERET=0.4.1, sync-tal.py, npm pack). Both on 8784542 (control) and on 4d95c52 it is the reviewed sha512-5vnxkav…, 19 files.

🤖 Generated with Claude Code

…undle

The release workflow's first run on 0.4.1 (dispatch 43636302168, measured
2026-11-14) failed its own proof step: `test/mcpb-start.mjs` reported
"hjaelperen er med i pakken" as DUMP.

Cause: since 5a1b835 (6 Nov) `mcp-server/package.json` lists the two proven
artifacts as `vendor/cmcp-helper` and `vendor/ComputerMCPStatus.app`, but
`scripts/build-mcpb.sh` copied every entry with `cp -R "$f" "$SRV/"`, which
drops the directory part. The helper landed in `server/cmcp-helper`, while the
server looks for it under `server/vendor/`. Measured both ways in a scratch
tree: the old loop flattens, the new one keeps the path - the same layout npm
itself ships.

The status app had the same fault and no guard, so the proof step now checks
it too.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@GLouv
GLouv merged commit 12a997f into main Nov 14, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant