Uh oh!
There was an error while loading. Please reload this page.
feat: PLAN32-host-wiring up / scale / editor の配線を project.yml へ切替 - #105
Conversation
PLAN32 Task 2。devbase up がプロジェクトの project.yml を読み、正規化した clone プランを生成 compose の dev サービスへ環境変数として載せる。これで entrypoint が複数リポジトリを clone できる。 - lib/devbase/project/runtime.py を追加: コンテナへ渡す環境変数の組み立て (DEVBASE_REPOS / DEVBASE_PRIMARY_DIR / DEVBASE_WORKSPACE*)、workspace JSON の 生成、scale の読み書き。workspace の JSON はホスト側で組み立てて base64 で 渡すため、シェルでのエスケープが要らずテストもできる - scale の取得元と devbase scale の書き込み先を env の CONTAINER_SCALE から project.yml の scale へ移した。書き込みは行単位の置換にしてコメントと並び順を 保ち、書いた結果を読み直して壊れていれば元へ戻す - エディタは repo が 1 件なら primary のフォルダ、2 件以上なら entrypoint が 書き出した multi-root workspace を開く。自動オープンの有効判定は project.yml の open_editor > グローバル .env の DEVBASE_OPEN_EDITOR の順 - 旧 GIT_REPO / WORK_DIR / CONTAINER_SCALE を読む経路を削除した。project.yml が 無いプロジェクトは移行手順を案内するエラーで停止する (後方互換なし) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
b65fce4 to
3e21c0dCompare
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 1 | codex | REQUEST_CHANGES
write_scale が project.yml のコメントを保持する契約を満たすよう、行内コメントを残す置換にしてください。
Uh oh!
There was an error while loading. Please reload this page.
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 1 | gemini | APPROVE
PR の目的 (PLAN32) に沿った up / scale への project.yml 適用が適切に実装されています。
open_editorやcontainer_envなど、設定の参照先が新方式に一本化されていることを確認しました。- テストも過不足なく更新されており、既存の
env依存が綺麗に剥がせている点が素晴らしいです。
[minor / 正確性]
別 PR になるかと思いますが、config.py 等のエラーメッセージで案内されている devbase project migrate-config コマンドが現状のコマンド群に未実装のようです。もし本 PR 群が先行してリリースされる場合、ユーザーが存在しないコマンドを叩いて混乱する可能性があるため、リリース順序などにご留意ください。
`^scale:.*$` の一括置換で `scale: 1 # 並列数` の行内コメントごと 消えており、「コメントを保持する」という関数の契約に反していた。 値部分と行内コメントを別々に捕まえ、値だけを差し替える。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
takemi-ohama
commented
Aug 22, 2026
🔧 /ndf:fix サマリ (round 1)対応件数: critical=0 / major=0 / minor=1 (合計 1 件) 対応した指摘
deferred
再レビュー依頼 |
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 2 | codex | APPROVE
round 1 の修正を確認し、追加の修正必須事項はありません。
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 2 | gemini | APPROVE
設計と実装は意図通りに連携しており、テストも十分にカバーされています。追加の修正が必要な点はありません。
Summary
devbase up/devbase scale/ エディタ自動オープンの設定源を、プロジェクトのenvからprojects/<name>/project.ymlへ切り替えます。これにより 1 プロジェクトが複数リポジトリを持てるようになります。lib/devbase/project/runtime.pyDEVBASE_REPOS= clone プラン /DEVBASE_PRIMARY_DIR/DEVBASE_WORKSPACE/DEVBASE_WORKSPACE_B64)scaleの読み書きdevbase up:project.ymlを読み、clone プランを生成 compose の dev サービスへ載せる。これを entrypoint が復号して複数リポジトリを clone するdevbase scale N: 書き込み先がenvのCONTAINER_SCALEからproject.ymlのscaleへ*.code-workspaceを開く。自動オープンの有効判定はproject.ymlのopen_editor→ グローバル.envのDEVBASE_OPEN_EDITORの順GIT_USER/GIT_REPO/WORK_DIR/CONTAINER_SCALEを読む処理を削除。project.ymlの無いプロジェクトは移行手順を案内するエラーで停止する設計上の判断
environmentは辞書形・リスト形の両方を保ったまま追記するscaleの書き込みは行単位の置換。YAML を読み直して書き戻すとコメントと並び順が失われるため。書き換え後に読み直して検証し、壊れていれば元へ戻すproject.ymlが無い場合はエラーで停止(旧envへフォールバックしない)。後方互換を持たない方針では、移行漏れを黙って動かすと検出できないため破壊的変更
project.ymlを持たないプロジェクトはdevbase up/devbase scaleが動作しません。プロジェクト定義の移行は後続 PR(変換コマンド)と plugin リポジトリ側の PR で行います。issues/PLAN32_multi-repo-project.mdの Task 2Test plan
uv run pytest tests/project/test_runtime.py— 12 件(clone プラン / primary / workspace の有無と中身 / compose 安全性 / scale の読み書きとコメント保持 / 不正値での巻き戻し)uv run pytest tests/volume/test_compose_dev_environment.py— 5 件(dev 全インスタンスへ注入 / 非 dev には注入しない / 辞書形・リスト形・未定義の各environment形式)uv run pytest tests/editor— 96 件(open_editorの有効判定がproject.yml優先になること / workspace を--file-uri、単一リポジトリを--folder-uriで開くこと)uv run pytest— 全 1342 件 greendevbase build --no-cache→up --open(release ブランチでの結合検証で実施)