Repository navigation
devbase build: 開発サービスより前に別のサービスの build: がある・build: ./dev と書いたプロジェクトで、通常のビルドが開発サービスと違う Dockerfile から継承の連なりを決める → 開発サービスの build から Dockerfile を決め、--expires の判定と同じ場所を読む(#415) - #426
Conversation
通常のビルドがプロジェクトの Dockerfile を開発サービスの build から決め、 --expires の判定と同じ場所を読むための要求。用語集に 「プロジェクトの Dockerfile」「Dockerfile の場所の決め方」を足す。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
通常のビルドが、Python の入口(python -m devbase.commands.project_dockerfile)を 1 回起動して docker compose config から開発サービスの Dockerfile を決める設計。 決め方は utils/dockerfile.py の project_dockerfile_path 1 つにし、--expires の判定と 共有する。compose.yml が無ければ今のまま Dockerfile を読み、構成を読めなければ compose の理由を出して何も建てずに止まる。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 1 | codex | APPROVE
ドメインモデル節と用語集の差分に、指定基準に該当する修正指摘はありません(判断根拠: Mission・Vision、目の前の変更に判断を限る原則)。
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 1 | kiro | APPROVE
設計文書のドメインモデルの節(コンテキスト・集約・不変条件・ドメインイベント・用語)と用語集の差分を見た。コンテキストマップは compose→image-lineage(順応者)と cli→image-lineage(順応者)の関係を宣言しており、集約は 1 つ(プロジェクトの Dockerfile)で持ち主も 1 つ(project_dockerfile_path)に決まっている。不変条件 I9〜I13 は 1 行 1 条件で矛盾しない。ドメインイベント E1〜E6 は要求文書の番号・名前・順序をそのまま引き継ぎ、各イベントに受け手がある。用語の表の 2 語(プロジェクトの Dockerfile・Dockerfile の場所の決め方)は用語集の追加差分と意味が一致する。この節の範囲で critical / major の指摘は無い。
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 2 | claude | REQUEST_CHANGES
テスト設計のハーネスは偽の uv で Python の側をまるごと差し替えるため、場所を出す入口(project_dockerfile_path を呼ぶ側)が通常のビルドの経路のテストで一度も動かない。受け入れ条件 1〜5・8 と I9 の「どう壊したら落ちるべきか」が成り立たない。入口を本物で動かし、偽の docker が構成の JSON を返すハーネスを設計に書く必要がある。
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 2 | kiro | APPROVE
設計・要求の全体(決定の記録 1〜6・入出力の契約・テスト設計・不変条件 I9〜I13)を参照コード(_get_base_image_ref・_compose_config_services・_apply_context・_inject_secrets・get_dev_service_name・bin/devbase の cmd_build)と確定仕様 base-image-chain-build.md・用語集に突き合わせた。受け入れ条件 1〜10 はいずれもテスト設計の行と不変条件に対応し、外部ツールの挙動の断定(docker compose config の正規化・argparse の SUPPRESS)は日付とコマンドつきの実測が添えてある。2 つの経路が同じパスを決める契約(I9・受け入れ条件 4)で唯一ずれうる DEV_SERVICE_NAME が空の場合は決定 6 で明示して #425 へ切り出しており、隠れた食い違いではない。critical / major の指摘は無い。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🔧 /ndf:fix サマリ | commit 03935b3対応件数: critical=0 / major=0 / minor=0(合計 0 件) |
# Conflicts: # docs/glossary/glossary.json
#415 の要求と受け入れ条件、設計を文書にまとめました(スプリント m7e)。あわせて用語集に語を追加しました。コードの変更は含みません。
利用者向けの変化
変更の要点
issues/issue-415-requirements.mdを追加し、devbase build が compose.yml の最初の build: から Dockerfile を決め、dev のサービスの Dockerfile と食い違いうる #415 の要求と受け入れ条件を記載issues/issue-415-design.mdを追加し、devbase build が compose.yml の最初の build: から Dockerfile を決め、dev のサービスの Dockerfile と食い違いうる #415 の設計を記載docs/glossary.mdとdocs/glossary/glossary.jsonに用語を追加テスト
supervise.py の run のステップの結果です。
issues/issue-415-requirements.mdを読めない:[Errno 2] No such file or ...)requirements-check は止まっており、通っていません。このファイルは本 PR に含まれていますが、検査の時点では読めていません。マージの前に原因を確認し、再実行が必要です。
モード: standard / 通した工程: 設計 → 要求と受け入れ条件 → ドキュメントレビュー
🤖 Generated with Claude Code
決めたこと
issues/issue-415-design.mdproject_dockerfile_path1 つにし、通常のビルドも--expiresの判定もこれを呼ぶdocker compose buildと同じ構成を読むため、通常のビルドは Python の入口を 1 回起動してdocker compose configの結果から場所を決めるpython -m devbase.commands.project_dockerfileにするcompose.ymlが無ければ入口を起動せず、カレントのDockerfileを読むbin/devbaseは✗ Failed to read the compose configuration; no image was builtを出して終了コード 1 で止まるdocker compose buildが建てるサービスと同じサービスを見るため、開発サービス名はbin/devbaseが--serviceで渡す