Skip to content

Node.js 26対応を追加 - #7

Open
okash1n wants to merge 4 commits into
mainfrom
feature/node26-support
Open

Node.js 26対応を追加#7
okash1n wants to merge 4 commits into
mainfrom
feature/node26-support

Conversation

@okash1n

@okash1n okash1n commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

概要

  • 非Docker教材をNode.js 24/26対応に更新
  • Node.js majorをstate identityへ含め、切替時はfail closedに制御
  • support matrixとCIへNode.js 26 profileを追加
  • Docker Lesson 06〜09はNode.js 24限定をrunnerで強制

検証

  • Node.js 26: npm test 375件成功
  • Node.js 24: 変更境界の17件成功
  • node scripts/sync-course-contract.mjs --check 成功
  • git diff --check 成功

補足

  • ローカルではDocker daemonが起動していないため、Docker統合はCIで確認します。

Copilot AI review requested due to automatic review settings July 31, 2026 16:28

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.

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 thread course/runner/main.mjs
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}の対応環境を確認してください`],
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