Repository navigation
CI: run the whole suite once at Node 22.12.0, and check install and start at 22.0.0 and 24 - #19
Merged
Conversation
added 2 commits
October 28, 2026 16:49
…0.0 and 24
The workflow ran npm test on Linux at whatever Node 22 release setup-node
picked. It now runs:
- the typecheck and the whole suite once, on Linux at Node 22.8.0 exactly:
npm test's --experimental-test-isolation flag needs 22.8, and 22.0.0
refuses it ("bad option").
- an install and start check at Node 22.0.0, engines' floor, and at the
newest Node 24: npm ci, the build, and scripts/ci-start-check.mjs. The
matrix doesn't fail fast, so each Node gets its own verdict.
The start check runs the built server with --stdio under a throwaway
configuration (a generated App key, one example repository, polling off,
no webhook), so it needs no credentials and reaches nothing. It sends one
MCPL initialize and requires a JSON-RPC 2.0 result carrying the mcpl
capability, then closes stdin and requires exit 0. Anything else fails it
by name within 30 s and 10 s, with the server's stderr: no answer, a line
that isn't a JSON object, an answer without that result, an exit before
answering, an exit other than 0 after it, or no exit. Every ending kills
the server if it still runs and removes the key's temporary directory.
A write to a server that has already exited fails with EPIPE; the check
ignores that error, since the exit itself is what it reports.
README's development section said Node 22; npm test needs 22.8 or newer
since the test files began to share one process.
The workflow's first run had the whole-suite job at Node 22.8.0, the first release that takes npm test's --experimental-test-isolation=none. Node took the flag, but all 18 test files failed to load with 'TypeError: Unknown file extension ".ts"', so no test ran. The job moves to Node 22.12.0, where the whole suite has run in one process with the same verdicts as on Node 24. The install and start legs stay at 22.0.0, engines' floor, and 24. README's development line said npm test needs 22.8 or newer; it now says it runs on 22.12 or newer.
nissa-seru
pushed a commit
to nissa-seru/github-mcpl
that referenced
this pull request
Oct 28, 2026
main now runs CI the testing setup's way (anima-research#19, anima-research#20): the whole suite once at a pinned Node, and an install and start check on engines' floor, Node 24 and the newest Node release. With engines at >=22.12.0 here, the resolution keeps that shape at this branch's floor: - The suite job runs at Node 22.12.0, engines' floor, in place of this branch's Node 22 and 24 matrix of whole suites. - The install and start check runs on Node 24 and on the newest release. main's 22.0.0 leg checked the old floor; the floor is now 22.12.0, where the suite job runs. - README's development line keeps this branch's "Node 22.12 or newer", which covers npm test as well as the server.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This changes github-mcpl's CI to run the typecheck and the whole suite once, on Linux at Node 22.12.0, and adds a check that the server installs, builds and starts at Node 22.0.0, the floor
enginesdeclares, and at Node 24. CI at this head passed all three jobs. Nothing a user, operator or host of the server meets changes.Problem
At
main(7eaea03):node-version: 22(.github/workflows/ci.yml:14,:26), which takes a 22.x release:main's last CI run used v22.23.3, from the runner's cache. No job runs on another Node version.package.json'senginesdeclares (>=22.0.0), andnpm testcan't run there. Its--experimental-test-isolation=noneflag (package.json:13) is refused with "bad option" and exit 9 by every Node 22 release from 22.0.0 to 22.7.0, and taken by Node 22.8.0.Changes
npm ci,npm run typecheck,npm test), on Linux at Node 22.12.0 exactly.npm ci,npm run buildandnode scripts/ci-start-check.mjs, on Linux. Node 24 is given as24, which takes a 24.x release, from the runner's cache when it has one, as22did. The matrix doesn't fail fast, so each Node version gets its own verdict. Each job has a 10-minute timeout.scripts/ci-start-check.mjs(new): it runs the built server,dist/src/index.js --stdio, with a throwaway configuration: an RSA key it generates in a new temporary directory, one example repository, polling off and no webhook port. It sends one MCPLinitialize, and passes only on a JSON-RPC 2.0 result whosecapabilities.experimental.mcplis an object, followed by exit 0 once it closes the server's stdin. It fails by name, with the server's stderr, on no answer within 30 s, a line that isn't a JSON object, an answer without that result, an exit before answering, an exit other than 0 after it, or no exit within 10 s of stdin closing. Every ending after the server starts kills the server if it's still running and removes the temporary directory.README.md: the development section's "Node 22" now saysnpm testruns on 22.12 or newer.b899b4b, this head, moved the suite job from Node 22.8.0 to 22.12.0, and changed the README's "needs 22.8 or newer" to "runs on 22.12 or newer". This pull request's first CI run, at57820ab, had the suite job at 22.8.0, where none of the 18 test files loaded (Tests, below).Tests
On Linux, after
npm cifrom the lockfile:# tests 617,# pass 599,# fail 0and# skipped 18on Node v22.12.0. Both start legs passed, on Node v22.0.0 and v24.22.1.57820ab(run 40769830290): both start legs passed. The suite job, then at Node 22.8.0, failed:# tests 18,# fail 18, each test filenot okwith aTypeError,Unknown file extension ".ts" forthat file. Node 22.8.0 took the flag, but no test file loaded.npm ciand the build under that Node. No other Node 24 release ran. These runs were at57820ab, whosescripts/ci-start-check.mjsis this head's.mcplcapability, a line that isn't JSON, an exit 3 after answering, a JSONnullline, an answer without"jsonrpc": "2.0","mcpl": true, a result with an error beside it, and a 500-character line, shown cut at 200 characters. Withdist/src/server.jsdeleted, it failed with the server'sERR_MODULE_NOT_FOUNDstderr. No temporary directory was left after any of these runs.main,npm testexited 9 on Node 22.0.0 with "node: bad option: --experimental-test-isolation=none". On a one-test file,node --test --experimental-test-isolation=noneexited 9 with "bad option" on each of the ten Node releases from 22.0.0 to 22.7.0, and passed on 22.8.0.Not verified
package-lock.json, the only entries that setosorcpuarefseventsand 26@esbuild/*packages, all development dependencies.With other open pull requests
By
git merge-treeagainstmain7eaea03and each open pull request's head:mainand conflicts with this change in.github/workflows/ci.yml(the job's name andnode-version, where Use @animalabs/mcpl-core 0.4.0, which needs Node 22.12.0 or later #16 has a Node 22 and 24 matrix) and inREADME.md's development line.#11merge cleanly with both.#4and#6already conflict withmain, and this change adds no file in which they conflict.No changelog fragment: this changes CI and one README line.
Ogden-2688 made this change, and Agnes-984 made the calls on it. Crispin-2406 read it. Fiona-2757 wrote this description.