chore(docs): scope-out cpp-dev distroless, narrow M3 to 4 images - #526
Merged
Conversation
PR #524 (distroless webui + cpp-inference trial bundle) で M3 distroless spike の本来目的 (multi-stage build pattern / glibc ABI 整合 / entrypoint 移植) は達成済。 cpp-dev は dev image (production 推論経路なし、 GHCR 配布は dev 用) で、 distroless 哲学と本質的に不整合 (cmake / clang / gdb を final stage に残さざるを得ない) のため、 supply chain 大目的 (CVE 80% 削減 / size 50% 削減) への寄与が限定的と判断し scope-out 確定。 - cpp-dev ticket: Status「計画中」→「除外確定」、 §Note に scope-out rationale (spike 目的達成 + dev image 構造的不整合 + production 経路なしで supply chain 寄与限定) を明記、 旧 wolfi-base trial Note は履歴記録として保持 - M3 milestone doc: §1 直下に 5 image → 4 image scope 縮小注記、 §2 配下チケット表 header と本文を 4 image に更新、 cpp-dev 行は strikethrough + 除外確定、 §2 依存関係 を 4 件に - doc-examples audit fixture: ticket / milestone の line shift 吸収のため regenerate (block 数 446 不変、 中身は line offset 更新のみ) 個別 ticket Status の merged 反映 (python-inference trial PR #523 / webui + cpp-inference trial PR #524) は別 PR で扱う scope。
Contributor
Required status-check gate (deferred)Head SHA |
There was a problem hiding this comment.
Pull request overview
Docs-only update to narrow the M3 “Distroless migration” milestone scope by explicitly scoping out the cpp-dev image (T-016), documenting the rationale and keeping historical context, plus regenerating the doc-examples audit snapshot to account for line shifts.
Changes:
- Mark T-016 (
cpp-devdistroless) as scope-out confirmed, adding a rationale note while retaining the prior Wolfi trial note. - Update the M3 milestone to reflect “Distroless × 4 images” and strike through T-016 with updated dependency notes.
- Regenerate
tests/fixtures/doc_examples_audit/audit.jsonto align line offsets (block count unchanged).
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| tests/fixtures/doc_examples_audit/audit.json | Snapshot regen to absorb doc line shifts (offset updates + generated_at). |
| docs/tickets/tickets/T-016-distroless-cpp-dev.md | Document T-016 scope-out decision and rationale; keep prior Wolfi trial note/history. |
| docs/tickets/milestones/M3-supply-chain.md | Update milestone scope from 5→4 images and reflect T-016 scope-out in the ticket table/dependencies. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Copilot review (PR #526) 指摘 3 件への対応: - PR フィールドを他 ticket 同じ `#NNN (...)` 形式に揃える (`PR ` prefix 除去) - 実在しない例示パス `docs/tickets/proposals/...` を抽象表現「別 proposal doc」に書き換え (factual error fix) - 未設定値 `―` を canonical 表記 `なし` に統一 (grep / 自動処理整合) ticket 内容は不変、 schema / 表記の正規化のみ。
13 tasks
ayutaz
added a commit
that referenced
this pull request
May 20, 2026
…tone lychee (PR #529) が `docs/tickets/milestones/M3-supply-chain.md` line 20 の `[T-016 §Note](../tickets/T-016-distroless-cpp-dev.md)` を broken link として検出。 cpp-dev ticket file 削除に伴う dangling reference の修正漏れ。 詳細誘導先を file link から PR #526 (scope-out 確定) + 削除済 ticket は git history で参照可能、 の text 記述へ書き換え。
ayutaz
added a commit
that referenced
this pull request
May 20, 2026
…tickets Copilot review (PR #529) 6 件指摘の整合性破綻を一括修正。 前回 PR の cleanup で私が「歴史的記述として残す」 と判断した旧計画記述が、 scope-out 後の現状と矛盾して読まれる状態が残っていた。 - M3 milestone Status: 「計画中」 → 「進行中 (Distroless trial 3/4 投入済 PR #523 / #524、 promotion 観測中。 SLSA L3 未着手)」 — 実態に合わせて milestone 全体 status を更新 - M3 milestone post-M3 retrospective 項目: 「T-012〜T-016 完了で」 → 「T-012〜T-015 完了で (cpp-dev scope-out で対象外)」 - 各 ticket の §M3 内推奨実装順 quote block (T-012/T-013/T-014/T-015 冒頭): 旧計画「cpp-dev → cpp-inference → webui → python-inference → wyoming」 を「旧計画、 PR #523/#524 trial bundle と PR #526 scope-out で再編済」 と注記化、 PR 番号で実際の cadence を併記 - T-012 Trial scope note: 「5+ PR cadence」 → 「4+ PR cadence」、 「T-013/T-014/T-015/T-016 + canonical 置換」 → 「T-013/T-014/T-015 + canonical 置換」 - T-012 §2.2 base image 候補比較表: 「shell + apk で柔軟、 T-016 で実績」 → 「shell + apk で柔軟」 + 短所列に「PR #524 wolfi-base trial で apk packaging 不足 (OpenJTalk / mecab tooling chain は Debian apt 前提) と判明、 dev image 文脈での失敗実証済」 - T-013 §2.7: 「T-016 と同 format」 → 「distroless-report.md format (旧 T-016 で想定された M3 共通 format、 cpp-dev scope-out で未作成、 promotion PR で別途定義予定)」 - T-014: 「5 image 中で最後に着手」 → 「distroless 4 image 中で最後に着手予定」、 「M3 全 5 image」 → 「M3 distroless 4 image (cpp-dev scope-out で対象外)」 - T-015 (最大規模、 9 箇所): §推奨 (cc-dynamic + T-016 統一) → 「PR #524 trial で `debian:12-slim` + `gcr.io/distroless/cc-debian12` 採用」、 §並列度 (T-016 完了後着手) → 「PR #524 で T-013 と trial bundle として直接着手・merged」、 §採否 (T-016 spike 結果次第) → 「PR #524 trial で size -2.2% 実証済」、 §6.結論 (T-016 retrospective) → 「M3 全体 retrospective に持ち越し」、 §7.2 Handoff (T-016 と整合) → 「cpp-dev wolfi-base trial で構造的失敗実証済、 採用不可」、 §7.3 未解決質問 (T-016 retrospective で決定) → 「PR #524 で確定」 へ更新 - doc-examples audit fixture を regenerate (ticket file の line shift 吸収、 block 数 444 不変) production paths / build pipeline / contract gate 影響ゼロ、 docs integrity の最終確保のみ。
ayutaz
added a commit
that referenced
this pull request
May 20, 2026
) * chore(docs): finalize M3 distroless cleanup, delete cpp-dev ticket PR #526 で確定した M3 distroless scope 縮小 (cpp-dev 除外) と PR #523 / #524 の trial merged 状態を docs 全体に反映する一括整理。 - cpp-dev ticket file (旧 T-016) を削除。 経緯は git history + PR #524 (wolfi trial 失敗) + PR #526 (scope-out 確定) で参照可能 - M3 milestone 表の Status / PR 列を ticket 本体と sync: python-inference / webui / cpp-inference を「計画中」→「着手中 (trial merged 2026-05-20、 promotion 観測中)」 + PR 列に #523 / #524 を記入、 cpp-dev 行は表から除去 (補足注記で git history を案内) - tickets/README の M3 ticket list から cpp-dev link 除去、 「5 image」→「4 image」、 milestone status を「計画中」→「進行中 (trial 3/4 投入済)」 へ - 各 ticket §先行チケット (T-012/T-013/T-014/T-015) の T-016 link を除去し scope-out 経緯を注記 - T-015 §着手前提 「T-016 完了推奨 (Wolfi multi-stage の知見を流用)」 → 「なし (T-016 scope-out で wolfi-base trial は失敗実証済、 PR #524 で webui との trial bundle として直接着手)」 (factual error 修正、 wolfi 失敗実証済の事実反映) - CHANGELOG [Unreleased] の cpp-dev entry を「本 PR から除外、 別 PR で扱う」 (時点表現) → 「scope-out 確定 (PR #526)、 ticket file 削除済」 (確定表現) へ更新、 scope-out 根拠 (production 経路なし + distroless 哲学不整合 + 大目的への寄与限定) を併記 - doc-examples audit fixture を regenerate (T-016 削除で block 数 446 → 444、 内訳は bash=191 / python=19 等で言語別総数は実体に同期) production paths (canonical Dockerfile / docker-compose / deploy-huggingface.yml / build pipeline) は不変更、 docs integrity 確保のみの保守的な一括整理。 * fix(docs): remove dangling link to deleted cpp-dev ticket in M3 milestone lychee (PR #529) が `docs/tickets/milestones/M3-supply-chain.md` line 20 の `[T-016 §Note](../tickets/T-016-distroless-cpp-dev.md)` を broken link として検出。 cpp-dev ticket file 削除に伴う dangling reference の修正漏れ。 詳細誘導先を file link から PR #526 (scope-out 確定) + 削除済 ticket は git history で参照可能、 の text 記述へ書き換え。 * fix(docs): finish T-016 scope-out integrity across all M3 distroless tickets Copilot review (PR #529) 6 件指摘の整合性破綻を一括修正。 前回 PR の cleanup で私が「歴史的記述として残す」 と判断した旧計画記述が、 scope-out 後の現状と矛盾して読まれる状態が残っていた。 - M3 milestone Status: 「計画中」 → 「進行中 (Distroless trial 3/4 投入済 PR #523 / #524、 promotion 観測中。 SLSA L3 未着手)」 — 実態に合わせて milestone 全体 status を更新 - M3 milestone post-M3 retrospective 項目: 「T-012〜T-016 完了で」 → 「T-012〜T-015 完了で (cpp-dev scope-out で対象外)」 - 各 ticket の §M3 内推奨実装順 quote block (T-012/T-013/T-014/T-015 冒頭): 旧計画「cpp-dev → cpp-inference → webui → python-inference → wyoming」 を「旧計画、 PR #523/#524 trial bundle と PR #526 scope-out で再編済」 と注記化、 PR 番号で実際の cadence を併記 - T-012 Trial scope note: 「5+ PR cadence」 → 「4+ PR cadence」、 「T-013/T-014/T-015/T-016 + canonical 置換」 → 「T-013/T-014/T-015 + canonical 置換」 - T-012 §2.2 base image 候補比較表: 「shell + apk で柔軟、 T-016 で実績」 → 「shell + apk で柔軟」 + 短所列に「PR #524 wolfi-base trial で apk packaging 不足 (OpenJTalk / mecab tooling chain は Debian apt 前提) と判明、 dev image 文脈での失敗実証済」 - T-013 §2.7: 「T-016 と同 format」 → 「distroless-report.md format (旧 T-016 で想定された M3 共通 format、 cpp-dev scope-out で未作成、 promotion PR で別途定義予定)」 - T-014: 「5 image 中で最後に着手」 → 「distroless 4 image 中で最後に着手予定」、 「M3 全 5 image」 → 「M3 distroless 4 image (cpp-dev scope-out で対象外)」 - T-015 (最大規模、 9 箇所): §推奨 (cc-dynamic + T-016 統一) → 「PR #524 trial で `debian:12-slim` + `gcr.io/distroless/cc-debian12` 採用」、 §並列度 (T-016 完了後着手) → 「PR #524 で T-013 と trial bundle として直接着手・merged」、 §採否 (T-016 spike 結果次第) → 「PR #524 trial で size -2.2% 実証済」、 §6.結論 (T-016 retrospective) → 「M3 全体 retrospective に持ち越し」、 §7.2 Handoff (T-016 と整合) → 「cpp-dev wolfi-base trial で構造的失敗実証済、 採用不可」、 §7.3 未解決質問 (T-016 retrospective で決定) → 「PR #524 で確定」 へ更新 - doc-examples audit fixture を regenerate (ticket file の line shift 吸収、 block 数 444 不変) production paths / build pipeline / contract gate 影響ゼロ、 docs integrity の最終確保のみ。
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.
Summary
distroless 移行 milestone (M3 supply chain) のうち、 cpp-dev image を scope-out する docs only PR。 trial bundle PR (webui + cpp-inference) で multi-stage build pattern / glibc ABI 整合 / shell-less entrypoint 移植の知見が既に揃ったため cpp-dev での再実証は不要。 加えて cpp-dev は dev image (production 推論経路なし、 GHCR 配布は dev 用のみ) で distroless 哲学と本質的に不整合 (cmake / clang / gdb を final stage に残さざるを得ない) のため、 大目的「container image の CVE 80%+ 削減 / size 50%+ 削減」 への寄与が限定的と判断。
Affected Components
Type
Risk Level
Contract Impact
docs/spec/*.toml不変更、 doc-examples audit fixture (tests/fixtures/doc_examples_audit/audit.json) は ticket line shift を吸収する regenerate のみで block 数 446 不変変更内容
設計判断
Test Plan
uv run python scripts/check_doc_examples.py audit --check-snapshot tests/fixtures/doc_examples_audit/audit.jsonで audit fixture drift なし (block 数 446 不変、 exit 0) を確認git diff dev...HEAD -- docker/ .github/ src/ docs/spec/が空 (production paths / contract spec への副作用なし) を確認Checklist
Related Issues
なし (M3 milestone の scope 縮小判断、 issue 紐付けなし)