chore: ORT バージョン floor 統一と CI gate 拡張 (Issue #372) - #404
Conversation
Option C 方針 (各ランタイム独立の最新 stable を許容、ただし floor は
C++ canonical 以上) を実装:
- docker/cpp-dev/Dockerfile: 1.17.0 → 1.20.0 (canonical 整合)
- Python (pyproject.toml の train/inference/inference-gpu extras +
requirements.txt + requirements_gpu.txt + setup.py extras_require)
の onnxruntime{,-gpu} floor を >=1.20.0 に統一
- scripts/check_ort_versions.py に floor-check モード追加
(Python / C# / Go / WASM の dep ファイルが canonical 以上か検証)
- scripts/test_check_ort_versions.py に 22 テスト追加 (合計 39)
- ort-version-sync.yml の検査 paths を floor 対象まで拡張
- docs/spec/ort-versions.md を Option C 方針 + 最新マトリクスで更新
Rust ort 2.0.0-rc.12 は upstream に stable 版がないため (2026-05 時点)、
本 PR では触らず docs/spec/ort-versions.md に「別途トラッキング」と明記。
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Issue #372 の Option C 方針に基づき、C++ canonical ORT バージョンを基準に各ランタイムの floor pin を統一し、さらにそれを CI gate として自動検証するよう拡張するPR。
Changes:
- Python ランタイム/学習系の ORT 依存 floor を
>=1.20.0に引き上げ scripts/check_ort_versions.pyに floor-check group を追加し、CI gate 対象を全ランタイムへ拡張- テスト・spec・workflow の更新で運用手順と検知範囲を明文化
Reviewed changes
Copilot reviewed 9 out of 10 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
src/python_run/setup.py |
GPU extras の ORT floor を >=1.20.0 に更新 |
src/python_run/requirements_gpu.txt |
GPU requirements の ORT floor を >=1.20.0 に更新 |
src/python_run/requirements.txt |
CPU requirements の ORT floor を >=1.20.0 に更新 |
src/python/pyproject.toml |
train/inference の ORT floor を >=1.20.0 に更新 |
scripts/test_check_ort_versions.py |
floor-check / parse_version を含むテストを追加 |
scripts/check_ort_versions.py |
exact-match + floor-check の2段検証に拡張 |
docs/spec/ort-versions.md |
Option C ポリシー、対象範囲、更新手順を追記 |
docker/cpp-dev/Dockerfile |
dev image の ORT を canonical(1.20.0) に整合 |
.github/workflows/ort-version-sync.yml |
floor 対象ファイルも paths に追加し gate 対象拡張 |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment 1: Python/npm の floor regex を operator バリエーションに対応 - Python: `>=` 限定 → `==` / `~=` も検出 (PEP 440 のうち lower-bound を構成する operator) - npm: `>=` 限定 → `^` / `~` / 無印 (exact pin) も検出 - 実運用での `onnxruntime==1.19.0` や `"onnxruntime-web": "^1.19.0"` といった指定で gate がすり抜けないことをテスト 5 ケースで pin Comment 2: 必須ファイル missing を warn+skip → fail に変更 - TARGETS / FLOOR_TARGETS の missing は failures に積んで rc=1 にする - 「移動/削除/リネームに気付けない」リスクを排除 - ファイルが存在/不存在の双方を unit test で検証 (3 ケース新設) Comment 3: csproj XML 属性順序非依存 - `Include` 先 / `Version` 先の両方を許容する 2 本の regex に分割 - 全 floor regex を named groups (`?P<pkg>` / `?P<ver>`) に統一して 順序差を helper 側で吸収 - `Version` 先・属性間に無関係な属性を挟むケースのテストを追加 テスト合計: 39 → 55 (+16)
|
Copilot 3 件のレビューコメント、全て対応しました (commit 07b77fb)。 Comment 1: 実運用 operator のすり抜け対策
Comment 2: 必須ファイル missing を fail 化
実装済み:
Comment 3: csproj XML 属性順序非依存XML 仕様上 テストでカバー:
XML パーサ採用も検討しましたが、現状 regex の運用簡潔さ + named groups で属性順序を吸収する方針で十分堅牢と判断。 テスト: 39 → 55 (+16) 全 pass、ruff クリーン、 |
Closes #372
Summary
Issue #372 の Option C (各ランタイム独立の最新 stable を許容、ただし floor は C++ canonical 以上) を実装。PR #403 で C++ パイプラインの 1.17.0 → 1.20.0 統一 + CI gate 化が済んでいるので、本 PR はその上に floor pin 統一 + CI gate を全ランタイムに拡張 を載せる。
なぜ Option C か
変更内容
A. drift 修正 (5 ファイル)
docker/cpp-dev/Dockerfile1.17.0(URL 5 行)1.20.0(canonical 整合)src/python/pyproject.toml(train/inference/inference-gpu の 3 ヶ所)>=1.17>=1.20.0src/python_run/requirements.txt>=1.11.0>=1.20.0src/python_run/requirements_gpu.txt>=1.11.0,<2>=1.20.0,<2src/python_run/setup.pyextras_require gpu>=1.11.0,<2>=1.20.0,<2B. CI gate 拡張 (
scripts/check_ort_versions.py)docker/cpp-dev/Dockerfileを追加pyproject.toml/requirements*.txt/setup.py)PiperPlus.{Core,Cli,Cli.Tests,Core.Tests,Bench})go.mod)package.jsonpeerDependencies)parse_version()で SemVer-ish 比較 (短形式1.20→(1, 20, 0)、pre-release 剥がし対応)C. テスト (
scripts/test_check_ort_versions.py)22 テスト追加で 合計 39 テスト:
parse_version正規化 (7 ケース): leadingv、短形式パディング、pre-release / build-metadata 剥がしD. workflow (
ort-version-sync.yml)pyproject.toml/requirements*.txt/setup.py/csharp/**/*.csproj/go.mod/package.json/Dockerfile)pathsを 「Source of truth + script」 「Exact-match group」 「Floor-check group」 に整理E. spec (
docs/spec/ort-versions.md)Floor (Issue #372)列で各ファイルが gate を通っているか可視化Updatingセクションに canonical bump 時の手順 (Python / C# / Go / WASM への波及含む) を追加Rust ort exemptionセクションで RC 例外の理由 + action items を明記Rust ort 2.0.0-rc.12 を扱わない理由
ortcrate は 2026-05 現在 stable 版が crates.io に未公開 (2.0.0-rc.12が最新)。ort 1.xstable は存在するが API が大きく異なり、piper-core/piper-cli/piper-python/piper-wasmの 4 crate を書き換える必要ありort 2.x stableのリリース待ちが現実的→ 本 PR では Rust に手を入れず、
docs/spec/ort-versions.mdに「ort 2.x stableリリース待ち、別 issue でトラッキング」と明記。検証
python scripts/check_ort_versions.py --verboseローカル成功 (canonical: 1.20.0、全ファイル OK)pytest scripts/test_check_ort_versions.pyローカル成功 (39/39 pass)ruff format/ruff checkクリーンTest plan
ort-version-sync.ymlが新しい paths でも trigger することを確認Option Cのポリシー判断がdocs/spec/ort-versions.mdで読み取れること