Skip to content

MP-B: require Node 22.18 and parse Node 24 test summaries - #2

Merged
aurablacklight merged 4 commits into
mainfrom
mp/MP-B-baseline
Oct 4, 2026
Merged

aurablacklight merged 4 commits into
mainfrom
mp/MP-B-baseline

Conversation

@aurablacklight

@aurablacklight aurablacklight commented Oct 3, 2026 •

Copy link
Copy Markdown

Wave 0 packet MP-B of the multiplayer campaign (docs/multiplayer/work-packets.md).

  • foreman/package.json, tools/package.json: engines.node is now >=22.18 (audit A-04/A-05).
  • tools/launch.ps1, tools/mac.mjs: fail early with "Node 22.18 or newer is required (you have X)".
  • README.md, tools/README.md: prerequisites say Node 22.18+.
  • docs/multiplayer/worknotes/MP-B.md: root cause, commands, results, review fixes.

Changes outside the packet's matrix row (coordinator-authorized)

On Node 24.18 the Foreman suite was 481/482, and not for the reason the audit describes. parseTestOutput in foreman/src/repos.ts only understood TAP output; Node 24's default node --test reporter prints ℹ pass 10 summary lines and ✖ name (1.234ms) failure lines under a ✖ failing tests: header. The change, all inside that one pure function:

  • accept ℹ as well as # on the summary lines;
  • strip the duration suffix from failing-test names and skip the section header, so a failing run reports the same names as TAP.

Fixture tests for both formats live in their own describe('parseTestOutput'). repos.ts is one of the files CLAUDE.md lists for the agent-sandbox-guardian review; that review found that pass/fail comes from the process exit code and that only director.ts reads failures, so agent-controlled test output cannot influence a merge through these fields. Two prerequisite lines in tools/README.md were also authorized.

Review

Three independent reviewers (sandbox guardian, tests, launchers): no blocker or major findings. Fixed in the second commit: the failing-name parsing above; launch.ps1 no longer casts the Node version to [version] (that threw on prerelease builds) and now resolves -SummaryJson before the first possible Fail. Accepted and recorded in the worknote: engines and guards accept Node 23.0 to 23.5, an end-of-life line without default type stripping. package-lock.json engine fields were deliberately left untouched (npm ci does not read them).

Verification

Re-run by the coordinator outside the worker's sandbox, macOS, Node 24.18.0:

  • foreman: npm run check is 485/485 (22 files), typecheck and protocol-doc freshness pass.
  • tools: npm test is 10/10.
  • The new launch.ps1 guard logic, run on its own under pwsh 7: accepts v22.18.0, v22.18.0-rc.1, v23.0.0, v24.18.0 and a v25 nightly; rejects v21.9.0, v22.17.9, non-version output and empty output with the required message.

Not verified: Windows PowerShell 5.1 and a real Windows launch.

🤖 Generated with Claude Code

https://claude.ai/code/session_01UTWx6KTPBs4koTLg8uZMHX

aurablacklight and others added 2 commits October 3, 2026 18:44
Review follow-ups on the Node baseline packet:

- parseTestOutput: under Node's spec reporter, strip the "(N.NNNms)"
  suffix from failing-test names and skip the "failing tests:" section
  header, so a failing run reports the same names as TAP. Fixture tests
  for both formats, in their own describe (suite is now 485).
- launch.ps1: compare Node major/minor instead of casting to [version],
  which threw on prerelease builds; fail closed on unparsable output;
  resolve -SummaryJson before the first possible Fail.
- tools/README.md: both launcher prerequisites say Node 22.18+.
- Worknote: review fixes, accepted Node 23.0-23.5 gap, verification.

Written by the packet's Codex worker in a strict sandbox; verified outside
the sandbox and committed by the coordinator (Foreman 485/485, tools 10/10).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UTWx6KTPBs4koTLg8uZMHX
The verification table names the Gradle wrapper used on the machine that
ran the checks. Add one sentence saying what it is.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017nnFLfHG1rVtWmS9c6mAQP
main gained the CI workflow (.github/workflows/ci.yml). Nothing else changes
on this branch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017nnFLfHG1rVtWmS9c6mAQP
@aurablacklight

Copy link
Copy Markdown
Author

CI note, for the merge order.

foreman (node 24) is red on main itself (the run for the merge of #3) and on #1, #4 and #5. It is green on this PR. Every other job is green on all four PRs.

The failing test is test/repos.test.ts > RepoManager > runs the repo test command and reports failures (.toMatch() expects to receive a string, but got undefined). On Node 24 the demo repo's node --test prints its counters as ℹ tests 10, not as TAP # tests 10, so parseTestOutput returns no summary. This PR makes parseTestOutput read both forms and adds tests for it (worknote, "MP-B-1" to "MP-B-4"). That is why your ci/verify-wave0 run, which included this branch, passed.

So merging this one first turns main green. I will then update #1, #4 and #5 from main so their runs pick the fix up.

🤖 Generated with Claude Code

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟢 Approval recommended

The runtime guards, documentation, parser behavior, and regression coverage are consistent and no unresolved defects were found.

Review effort: Balanced
Findings: None

What changed in this PR

Updates AgentCraft’s Node baseline and supports Node 24 test output.

Changes:

  • Requires Node 22.18+ across launchers, manifests, and documentation.
  • Parses TAP and Node spec-reporter summaries and failures.
  • Adds parser regression fixtures and MP-B worknotes.
File Description
README.md Updates the Node prerequisite.
tools/​README.md Updates launcher prerequisites.
tools/​package.json Raises the tools Node engine baseline.
tools/​mac.mjs Adds macOS launcher version validation.
tools/​launch.ps1 Adds early PowerShell version validation.
foreman/​package.json Raises the Foreman Node engine baseline.
foreman/​src/​repos.ts Supports Node 24 test-reporter output.
foreman/​test/​repos.test.ts Adds parser regression coverage.
docs/​multiplayer/​worknotes/​MP-B.md Records implementation and verification details.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@aurablacklight
aurablacklight merged commit 27c0306 into main Oct 4, 2026
5 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.

2 participants