[PR #651] [MERGED] fix(setup): align Node runtime checks with package engines #2139

Closed
opened 2026-10-16 21:14:46 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/651
Author: @kaoru0822-kitauji
Created: 10/6/2026
Status: ✅ Merged
Merged: 10/6/2026
Merged by: @kaoru0822-kitauji

Base: main ← Head: fix/node-runtime-engine-alignment


📝 Commits (1)

  • ea0b733 fix(setup): align Node runtime checks with package engines

📊 Changes

18 files changed (+121 additions, -40 deletions)

View changed files

📝 README.md (+1 -1)
📝 README_ar.md (+1 -1)
📝 README_ja.md (+1 -1)
📝 README_ko.md (+1 -1)
📝 README_zh.md (+1 -1)
📝 docs/installation.md (+1 -1)
📝 docs/user-visible-errors.csv (+5 -5)
📝 docs/windows-ghidra-p0.md (+1 -1)
📝 install.sh (+4 -6)
📝 src/application/Doctor.test.ts (+15 -1)
📝 src/application/DoctorDiagnostics.ts (+1 -1)
📝 src/application/Setup.fixture.ts (+1 -1)
📝 src/application/Setup.recovery.test.ts (+18 -1)
📝 src/application/SetupHost.ts (+1 -1)
➕ src/domain/runtimeVersion.test.ts (+26 -0)
📝 src/domain/runtimeVersion.ts (+7 -9)
📝 tests/boundary/filesystem/installScript.test.ts (+28 -8)
📝 tests/conformance/releaseConfiguration.test.ts (+8 -0)

📄 Description

Summary

Align doctor, setup, and the shell installer with the Node engine range established in #644: ^22.19.0 || ^24.11.0 || >=26.0.0.

No separate issue: this is a focused follow-up to the deliberate engine restriction in #644.

Problem and expected behavior

On main at 19f8cdd, supportsNodeVersion("25.1.0") returns true even though that version does not satisfy package.json. Doctor reports the runtime healthy, setup can apply configuration/install actions, and install.sh invokes npm. These surfaces should reject Node 25 and explain the supported alternatives.

The maintainer's #644 commit explicitly says: "Narrow engines to supported majors (22/24/26; vitest 5 refuses Node 25)."

Change and scope

  • Use the existing semver dependency for the shared runtime check and add a conformance assertion against package.json.
  • Reject Node 25 and prereleases before installer npm invocation.
  • Keep setup rejection before effects; update the healthy setup fixture to Node 24.
  • Align recovery text and runtime requirements in the English/localized READMEs and installation docs.

Contract and boundary impact

  • Semantic owner: domain runtime support predicate and shell installer preflight.
  • CLI/MCP: doctor health and setup remediation change for unsupported runtimes; no tools or schemas change.
  • Provider/platform: existing package engine policy is preserved; no provider or native support is added.
  • Evidence/artifacts: no changes.
  • Process/authorization/cleanup: unsupported runtimes are rejected before installation or setup effects; existing approval and cleanup behavior is preserved.
  • Generated metadata/package: no dependency, engine, version, or generated-catalog changes.

Evidence and regression coverage

On unchanged production code, the new tests fail for Node 25 doctor health, setup effects, and installer acceptance. Setup's recording host reports installed_hopper, configured_codex, and installed_skill; the fixed code records no effects. Installer tests use real shell execution with fixture executables and assert npm was not invoked.

Runtime cases cover supported version floors, excluded major versions, prereleases, and malformed version strings. A package-engine conformance check prevents the shared range from drifting again.

These are executed production-seam tests under Node 24, not execution of Node 25 itself.

Validation performed

  • Focused runtime, doctor, setup, installer, and documentation/conformance tests: 89 passed.
  • All doctor/setup-family tests plus runtime version tests: 90 passed.
  • npm run check: passed (93 lint warnings, 0 errors).
  • npm run docs:check: passed after the final documentation edits.
  • npm run verify:package: passed using a writable temporary npm cache; four-client setup, readback, idempotence, and 116-tool MCP verification succeeded.
  • npm pack --dry-run: passed.
  • git diff --check: passed.
  • Independent review found no remaining blocking issue.

Runtime: Node.js 24.19.0, npm 11.9.0. Complete hosted CI is tracked separately; no full local suite pass is claimed.

Compatibility, safety, and release

No engine-policy expansion or migration. Users on Node 25 receive the supported-runtime remediation already implied by package.json. Real Hopper/Ghidra and macOS/Windows verification were not run because provider behavior is unchanged; package verification establishes only its stated integration coverage.

Prepared with AI assistance.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/morluto/rea/pull/651 **Author:** [@kaoru0822-kitauji](https://github.com/kaoru0822-kitauji) **Created:** 10/6/2026 **Status:** ✅ Merged **Merged:** 10/6/2026 **Merged by:** [@kaoru0822-kitauji](https://github.com/kaoru0822-kitauji) **Base:** `main` ← **Head:** `fix/node-runtime-engine-alignment` --- ### 📝 Commits (1) - [`ea0b733`](https://github.com/morluto/rea/commit/ea0b733687582d6cc28b42beaf2fc7a48be07b6a) fix(setup): align Node runtime checks with package engines ### 📊 Changes **18 files changed** (+121 additions, -40 deletions) <details> <summary>View changed files</summary> 📝 `README.md` (+1 -1) 📝 `README_ar.md` (+1 -1) 📝 `README_ja.md` (+1 -1) 📝 `README_ko.md` (+1 -1) 📝 `README_zh.md` (+1 -1) 📝 `docs/installation.md` (+1 -1) 📝 `docs/user-visible-errors.csv` (+5 -5) 📝 `docs/windows-ghidra-p0.md` (+1 -1) 📝 `install.sh` (+4 -6) 📝 `src/application/Doctor.test.ts` (+15 -1) 📝 `src/application/DoctorDiagnostics.ts` (+1 -1) 📝 `src/application/Setup.fixture.ts` (+1 -1) 📝 `src/application/Setup.recovery.test.ts` (+18 -1) 📝 `src/application/SetupHost.ts` (+1 -1) ➕ `src/domain/runtimeVersion.test.ts` (+26 -0) 📝 `src/domain/runtimeVersion.ts` (+7 -9) 📝 `tests/boundary/filesystem/installScript.test.ts` (+28 -8) 📝 `tests/conformance/releaseConfiguration.test.ts` (+8 -0) </details> ### 📄 Description ## Summary Align doctor, setup, and the shell installer with the Node engine range established in #644: `^22.19.0 || ^24.11.0 || >=26.0.0`. No separate issue: this is a focused follow-up to the deliberate engine restriction in #644. ## Problem and expected behavior On main at `19f8cdd`, `supportsNodeVersion("25.1.0")` returns true even though that version does not satisfy package.json. Doctor reports the runtime healthy, setup can apply configuration/install actions, and install.sh invokes npm. These surfaces should reject Node 25 and explain the supported alternatives. The maintainer's #644 commit explicitly says: "Narrow engines to supported majors (22/24/26; vitest 5 refuses Node 25)." ## Change and scope - Use the existing semver dependency for the shared runtime check and add a conformance assertion against package.json. - Reject Node 25 and prereleases before installer npm invocation. - Keep setup rejection before effects; update the healthy setup fixture to Node 24. - Align recovery text and runtime requirements in the English/localized READMEs and installation docs. ## Contract and boundary impact - Semantic owner: domain runtime support predicate and shell installer preflight. - CLI/MCP: doctor health and setup remediation change for unsupported runtimes; no tools or schemas change. - Provider/platform: existing package engine policy is preserved; no provider or native support is added. - Evidence/artifacts: no changes. - Process/authorization/cleanup: unsupported runtimes are rejected before installation or setup effects; existing approval and cleanup behavior is preserved. - Generated metadata/package: no dependency, engine, version, or generated-catalog changes. ## Evidence and regression coverage On unchanged production code, the new tests fail for Node 25 doctor health, setup effects, and installer acceptance. Setup's recording host reports `installed_hopper`, `configured_codex`, and `installed_skill`; the fixed code records no effects. Installer tests use real shell execution with fixture executables and assert npm was not invoked. Runtime cases cover supported version floors, excluded major versions, prereleases, and malformed version strings. A package-engine conformance check prevents the shared range from drifting again. These are executed production-seam tests under Node 24, not execution of Node 25 itself. ## Validation performed - Focused runtime, doctor, setup, installer, and documentation/conformance tests: 89 passed. - All doctor/setup-family tests plus runtime version tests: 90 passed. - `npm run check`: passed (93 lint warnings, 0 errors). - `npm run docs:check`: passed after the final documentation edits. - `npm run verify:package`: passed using a writable temporary npm cache; four-client setup, readback, idempotence, and 116-tool MCP verification succeeded. - `npm pack --dry-run`: passed. - `git diff --check`: passed. - Independent review found no remaining blocking issue. Runtime: Node.js 24.19.0, npm 11.9.0. Complete hosted CI is tracked separately; no full local suite pass is claimed. ## Compatibility, safety, and release No engine-policy expansion or migration. Users on Node 25 receive the supported-runtime remediation already implied by package.json. Real Hopper/Ghidra and macOS/Windows verification were not run because provider behavior is unchanged; package verification establishes only its stated integration coverage. Prepared with AI assistance. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-16 21:14:46 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
morluto/rea#2139
No description provided.