diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 2de6f83..33e1b8d 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -8,12 +8,13 @@ # npm(kotlin-js-store/yarn.lock)は version updates の対象に含めない。lockfile は KGP が # JS/wasm テストランナー用に生成する成果物であり、宣言元の package.json はリポジトリに存在しないため、 # Dependabot の更新 PR は次の kotlinUpgradeYarnLock で失われる。alerts は次の基準で捌く。 -# 1. 上流の宣言レンジ内に修正版がある場合: kotlinUpgradeYarnLock で lockfile を再生成して追随する -# (両ビルドで実行し、生成物は LF へ正規化する) -# 2. レンジ内に修正版が無い場合: tolerable_risk として dismiss する。npm 依存は runtime-api の -# 配布物に入らず(生成 package.json は依存ゼロ、公開先は Maven Central のみ)、 -# 処理する入力も CI 内の自リポジトリのテスト成果物に限られる。resolutions による -# major 跨ぎの強制上書きは、上流が検証していない組み合わせをテストランナーへ注入することになるため採らない +# 1. 上流の宣言レンジ内に修正版がある場合: lockfile を作り直して追随する(手順は CLAUDE.md)。 +# 上流の解決へ合わせる通常の更新と同じ操作であり、alert 固有の手当ては要らない +# 2. レンジ内に修正版が無い場合: tolerable_risk として dismiss し、上流が追随するのを待つ。npm 依存は +# runtime-api の配布物に入らず(生成 package.json は依存ゼロ、公開先は Maven Central のみ)、 +# 処理する入力も CI 内の自リポジトリのテスト成果物に限られる。resolutions による major 跨ぎの +# 強制上書きは、上流が検証していない組み合わせをテストランナーへ注入するため、重大な脆弱性に +# 上流が追随しないときに限って検討する version: 2 updates: # integration-test は独立した Gradle ビルドだが、その settings はルートビルドを composite 参照するため、 diff --git a/.github/workflows/kotlin-prerelease.yml b/.github/workflows/kotlin-prerelease.yml index dacd61b..9c65a16 100644 --- a/.github/workflows/kotlin-prerelease.yml +++ b/.github/workflows/kotlin-prerelease.yml @@ -86,11 +86,16 @@ jobs: # kotlin-js-store/yarn.lock はカタログの宣言版で解決した npm 依存を固定したものであり、 # 版を差し替えると一致せず kotlinStoreYarnLock が失敗する。マイナー更新では両ビルドの # ロックを作り直して取り込む必要があり、横断ビルドはその作り直しまでを含めて先行検証する - # (ここで作り直した結果は取り込まない)。ビルドと同じ起動に混ぜると作り直しと照合の順序が - # 定まらないため、起動を分ける - - run: ./gradlew kotlinUpgradeYarnLock $KOTLIN_OVERRIDE + # (ここで作り直した結果は取り込まない)。作り直しは取り込み時と同じ手順で行い、毎回新規の + # チェックアウトで走るため消すのは保存側のロックだけでよい。ビルドと同じ起動に混ぜると + # 作り直しと照合の順序が定まらないため、起動を分ける + - run: | + rm kotlin-js-store/yarn.lock + ./gradlew kotlinUpgradeYarnLock $KOTLIN_OVERRIDE - run: ./gradlew build $KOTLIN_OVERRIDE - - run: ./gradlew -p integration-test kotlinUpgradeYarnLock $KOTLIN_OVERRIDE + - run: | + rm integration-test/kotlin-js-store/yarn.lock + ./gradlew -p integration-test kotlinUpgradeYarnLock $KOTLIN_OVERRIDE - run: >- ./gradlew -p integration-test build $KOTLIN_OVERRIDE -x :gradle-integration:test -x :maven-integration:test diff --git a/CLAUDE.md b/CLAUDE.md index f983cda..66a4f69 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -31,6 +31,9 @@ 作業ツリーに未コミットの変更があるときは、切り替える前に扱いを確認する - コミットは変更の意味合い毎に分割する - ライブラリの版を変える必要があるときは、先に提案する +- npm の lockfile は上流が解決する状態に合わせる。更新は両ビルドの `kotlin-js-store/yarn.lock` と + `build/js` / `build/wasm` のロックを消してから `kotlinUpgradeYarnLock` を実行し、生成物を LF へ正規化する。 + 消さないとレンジを満たしている解決が残り、版は動かない - CI ワークフローを変更したら、push する前にローカルで検証する(YAML のパース・`run` スクリプトの空撃ち・判定の期待値) - 変更後はファイル名・コメント・資料まで整合させる。変更量を抑える表面的な追記より全体の整合性を優先する diff --git a/integration-test/kotlin-js-store/yarn.lock b/integration-test/kotlin-js-store/yarn.lock index 8dd7992..32092f6 100644 --- a/integration-test/kotlin-js-store/yarn.lock +++ b/integration-test/kotlin-js-store/yarn.lock @@ -25,9 +25,9 @@ ansi-regex@^5.0.1: integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-regex@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.2.2.tgz#60216eea464d864597ce2832000738a0589650c1" - integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg== + version "6.3.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.3.0.tgz#247c8e7b70a1a43b10ce14c0226fcbf58e8815d5" + integrity sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ== ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" @@ -248,9 +248,9 @@ jackspeak@^3.1.2: "@pkgjs/parseargs" "^0.11.0" js-yaml@^4.1.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.3.1.tgz#01216c001d67f48e2cd560d708c7af21090a3848" - integrity sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ== + version "4.3.2" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.3.2.tgz#8e44fb14a2643c59726bb15787b5f1512cb3d3fb" + integrity sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA== dependencies: argparse "^2.0.1" diff --git a/kotlin-js-store/yarn.lock b/kotlin-js-store/yarn.lock index 8dd7992..32092f6 100644 --- a/kotlin-js-store/yarn.lock +++ b/kotlin-js-store/yarn.lock @@ -25,9 +25,9 @@ ansi-regex@^5.0.1: integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-regex@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.2.2.tgz#60216eea464d864597ce2832000738a0589650c1" - integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg== + version "6.3.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.3.0.tgz#247c8e7b70a1a43b10ce14c0226fcbf58e8815d5" + integrity sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ== ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" @@ -248,9 +248,9 @@ jackspeak@^3.1.2: "@pkgjs/parseargs" "^0.11.0" js-yaml@^4.1.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.3.1.tgz#01216c001d67f48e2cd560d708c7af21090a3848" - integrity sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ== + version "4.3.2" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.3.2.tgz#8e44fb14a2643c59726bb15787b5f1512cb3d3fb" + integrity sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA== dependencies: argparse "^2.0.1"