native-deps-guard — ネイティブ ML スタック依存の互換チェック
対象依存(指定があれば $ARGUMENTS、無ければ下記すべて)の更新可否を、このリポジトリの 固定制約に照らして判定する。結論(上げてよい / だめ / 条件付き)と根拠を報告するだけ。 勝手にバージョンを書き換えない。
固定されている制約(根拠)
- Docker/runtime は Node 22 系。Dockerfile のベースイメージは
node:22-bookworm-slim。 ルート package.json のengines.nodeは>=22なので、 ローカル実行の上限は固定していない。 - glibc 依存(
onnxruntime-nodeのネイティブバイナリの制約)。Alpine(musl) は不可、 ベースはnode:22-bookworm-slim(glibc 2.36)。 - バージョンは pnpm-workspace.yaml の catalog 1 箇所で集中管理。
- ネイティブビルド許可は同ファイルの
onlyBuiltDependenciesとallowBuildsにonnxruntime-nodeを記載。 これを外すとネイティブ依存の install/build スクリプトが走らず実行時エラーになる。
手順
- 現状把握:
pnpm-workspace.yaml(catalog)・各package.json・Dockerfileを読む。 - 上げたい依存の リリースノート / CHANGELOG を WebFetch で確認する:
- onnxruntime-node: 対応 Node バージョン、glibc の最低要件、CPU 命令セット要件の変化。
- Node engines / Docker ベース: Docker runtime の Node 22 とローカル engines
>=22の範囲で動くか。
- 判定観点:
- Docker runtime の Node 22 との互換は壊れないか。
- engines
>=22のままで問題ないか(上限が必要な依存に変わっていないか)。 - glibc 前提(bookworm-slim = 2.36)を崩していないか。
onlyBuiltDependencies/allowBuildsへの追記が必要な新たなネイティブ依存が増えていないか。
- 報告: 各依存を
✅ 上げてOK / ⚠️ 条件付き / ❌ 非推奨+ 一行根拠 + 実施するなら「catalog のどの行をどう変える / 何を検証する」まで。
上げた後の検証(案内のみ。実行は /preflight)
pnpm install → pnpm run build → pnpm run test:integration
(モデル不在なら統合テストは skip される)→ docker build .。