Node.js 26対応を追加 - #7
Open
okash1n wants to merge 4 commits into
Open
Conversation
There was a problem hiding this comment.
Pull request overview
非Docker教材を Node.js 24/26 対応に拡張し、Node.js major を runner state identity に取り込むことで、major 切替時の挙動を fail closed に統一するPRです。カリキュラム契約(manifest / support matrix / schema)と runner 側の検証・復旧導線、CI マトリクス、教材ドキュメントを一括で更新しています。
Changes:
- Node.js 26 を含む runtime versionRange・support matrix・CI profile を追加し、教材の前提条件を 24/26 に更新
- state marker を v2 化して nodeMajor を記録し、実行時の nodeMajor 不一致を
STATE_RUNTIME_DRIFTとして検出・遮断 - Lesson ごとの
supportedNodeMajorsと support profile 割当を導入し、未対応環境(特に Docker Lesson 06〜09 の Node 26)を runner が事前に拒否
Reviewed changes
Copilot reviewed 48 out of 49 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| test/course/runner-support.test.js | Node 26 profile/lesson runtime support の検証ケース追加 |
| test/course/runner-state.test.js | state marker の nodeMajor ドリフト拒否(fail closed)をテスト追加 |
| test/course/runner-lifecycle.test.js | runtime drift のブロック/復旧(diagnose/purge)や Node 26 拒否境界をE2E化 |
| test/course/runner-cli.test.js | manifest schema v2・Node versionRange・lesson supportedNodeMajors への追従 |
| test/course/dependency-isolation.test.js | engines.node の許容レンジ更新に追従 |
| test/course/curriculum-schemas.test.js | curriculum manifest/support matrix の 24/26 整合性と README の手順記載を検証 |
| README.md | Node 24/26 前提、profile 区分、major切替時の purge 手順を追記 |
| package.json | engines.node を 24/26 許容に更新 |
| package-lock.json | lock 内 engines.node を 24/26 許容に更新 |
| curriculum/support-matrix.json | Node 26 profiles と lesson 割当を追加(06〜09は24のみ) |
| curriculum/schemas/support-matrix.schema.json | nodeMajor を [24, 26] enum 化 |
| curriculum/schemas/state-marker.schema.json | schemaVersion 1/2 併存 + v2 で nodeMajor 必須化 |
| curriculum/schemas/manifest.schema.json | schemaVersion 2 + Node versionRange と supportedNodeMajors を定義 |
| curriculum/manifest.json | manifest v2 化、supportedNodeMajors 付与(06〜09は24のみ) |
| course/runner/support.mjs | Node 24/26 判定、lesson runtime support 判定関数を追加 |
| course/runner/state.mjs | state marker v2(nodeMajor)導入と StateRuntimeDriftError 追加 |
| course/runner/runtime-lesson.mjs | state 更新に runtimeNodeMajor を伝播 |
| course/runner/project-app-runtime.mjs | state 読み書きに nodeMajor を含めて runtime drift を遮断 |
| course/runner/main.mjs | lesson 実行前に lesson runtime support 検査、marker nodeMajor 検査を追加 |
| course/runner/lock.mjs | lock の state identity に nodeMajor を含められるよう拡張 |
| course/runner/lifecycle.mjs | diagnose に runtime drift 表示、stop/lock で runtime identity を強制 |
| course/runner/journal.mjs | journal 参照の state identity に nodeMajor を含められるよう拡張 |
| course/reading/manifest.json | reading lesson 01 の参照ハッシュ更新 |
| course/reading/lessons/01/README.md | 読み直し誘導見出し文言の更新 |
| course/reading/lessons/01/answer-key.md | 読み直し誘導見出し文言の更新 |
| course/lessons/setup/README.md | setup 回の Node 24/26 前提・手順更新 |
| course/lessons/setup/instructor-guide.md | setup 回の講師ガイド Node 24/26 前提更新 |
| course/lessons/setup/answer-key.md | setup 回の採点基準 Node 24/26 前提更新 |
| course/lessons/capstone/README.md | capstone の Node 24/26 前提更新 |
| course/lessons/15/README.md | Lesson 15 の Node 24/26 前提更新 |
| course/lessons/15/instructor-guide.md | Lesson 15 講師ガイド Node 24/26 前提更新 |
| course/lessons/14/README.md | Lesson 14 の Node 24/26 前提更新 |
| course/lessons/13/README.md | Lesson 13 の Node 24/26 前提更新 |
| course/lessons/13/instructor-guide.md | Lesson 13 講師ガイド Node 24/26 前提更新 |
| course/lessons/12/README.md | Lesson 12 の Node 24/26 前提更新 |
| course/lessons/12/instructor-guide.md | Lesson 12 講師ガイド Node 24/26 前提更新 |
| course/lessons/11/README.md | Lesson 11 の Node 24/26 前提更新 |
| course/lessons/10/README.md | Lesson 10 の Node 24/26 前提更新 |
| course/lessons/06/technical-design.md | regression 手順の Node 24/26 対応更新 |
| course/lessons/06/README.md | Docker Lesson 06 を Node 24 限定(Node 26 は拒否)と明記 |
| course/lessons/05/README.md | Lesson 05 の Node 24/26 前提更新 |
| course/lessons/04/README.md | Lesson 04 の Node 24/26 前提更新 |
| course/lessons/03/README.md | Lesson 03 の Node 24/26 前提更新 |
| course/lessons/02/README.md | Lesson 02 の Node 24/26 前提更新 |
| course/lessons/01/runner.mjs | lesson 01 state 更新に runtimeNodeMajor を伝播 |
| course/lessons/01/README.md | Lesson 01 の Node 24/26 前提更新 |
| course/lessons/01/instructor-guide.md | Lesson 01 講師ガイド Node 24/26 前提更新 |
| CONTRIBUTING.md | コントリビューション手順の Node 24/26 前提更新 |
| .github/workflows/course-quality.yml | CI を Node 24/26 マトリクスで実行するよう拡張 |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+469
to
+471
| recovery: [support.reasonCode === 'UNSUPPORTED_LESSON_NODE_VERSION' | ||
| ? `Node.js 24でnpm ciとcourse setupをやり直してからLesson ${lessonId}を実行してください` | ||
| : `curriculum/support-matrix.jsonでLesson ${lessonId}の対応環境を確認してください`], |
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.
概要
検証
npm test375件成功node scripts/sync-course-contract.mjs --check成功git diff --check成功補足