Uh oh!
There was an error while loading. Please reload this page.
chore: PLAN32 の破壊的変更に合わせて 3.0.0 へ上げる - #109
Conversation
PLAN32 Task 5。複数リポジトリ構成と project.yml への移行に合わせて利用者向け ドキュメントを更新した。 - docs/user/project-yml.md を新設: スキーマ、複数リポジトリの例、検証される 内容、env との使い分け、旧 env からの移行表、コンテナへの渡り方 - 環境変数ガイド / コンテナ操作ガイド / CLI リファレンス / プラグイン開発の 各所から旧キー (GIT_USER / GIT_REPO / WORK_DIR / CONTAINER_SCALE) の説明を 外し、project.yml とその参照へ置き換え - CLI リファレンスに devbase project migrate-config を追記 - アーキテクチャ解説に project/ モジュールの節を追加 - CHANGELOG に破壊的変更と再ビルドの注意を追記 過去リリース分の CHANGELOG 記述は履歴なので書き換えていない。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- repo-backed-projects.md: 見出し変更で切れた `#スケール前提-container_scale1` 参照 2 箇所を `#スケール前提-scale-1` に修正 - quickstart.md: `env` はファイル自体が必須(中身は任意)と見出しから分かるよう変更し、 最小構成のディレクトリツリーへ `project.yml` を追加 - project-yml.md: `env` ファイルが必須である旨を同じ表現に揃える Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`devbase env init` の editor コレクター (lib/devbase/env/collectors/editor.py) が `DEVBASE_OPEN_EDITOR` を対話収集し、対話の既定は `1` (有効) である。 「収集対象外」「既定: OFF」という記述は実装と矛盾していたため、収集対象で あることと、OFF に倒れるのはキー自体が未設定のときだけである旨へ修正した。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
project.yml への移行はプロジェクト定義の互換性を壊すため、SemVer の major を上げる。プラグイン側は requires.devbase を ">=3.0.0" に更新して 非対応の devbase へインストールされないようにする必要がある (各 plugin リポジトリの PR で対応)。 CHANGELOG の [Unreleased] を [3.0.0] として確定し、ドキュメント中の バージョン表記も揃えた。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 1 | codex | REQUEST_CHANGES
リリース前に、実行時版数・lockfile・CHANGELOG 参照リンクを 3.0.0 基準へ同期してください。
Uh oh!
There was an error while loading. Please reload this page.
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 | REQUEST_CHANGES
PR の説明にある grep の結果と異なり、バージョン番号の更新漏れや付随するロックファイルの非同期が見受けられます。
インラインで指摘できない差分外のファイルが含まれるため、以下にまとめて記載します。
- [major / 正確性]
lib/devbase/__init__.py(L3),lib/devbase/cli.py(L17),lib/devbase/commands/status.py(L13):__version__ = "2.2.0"が残存しています。これらの実行時版数も3.0.0へ更新してください。 - [major / 正確性]
uv.lock:pyproject.tomlのバージョンが上がったことでuv lock --checkが失敗する状態になっています。uv lockを実行してロックファイルを同期してください。 - [major / 正確性]
CHANGELOG.md(末尾):
Keep a Changelog 形式のリンクが未更新です。[Unreleased]の比較開始点をv3.0.0に向け、新たに[3.0.0]: https://github.com/devbasex/devbase/compare/v2.2.0...v3.0.0のリンク定義を追加してください。 - [minor / ドキュメント]
docs/user/env-export-import.md(L77付近):
manifest のサンプルコードにあるdevbase_version: 2.2.0も3.0.0へ合わせておくことを推奨します(必須ではありません)。
pyproject.toml だけを 3.0.0 にしたため、実行時の版数表示とロックファイルが 2.2.0 のまま取り残されていた。 - lib/devbase/__init__.py の __version__ を 3.0.0 へ (--version / status / export manifest の実体) - lib/devbase/cli.py, lib/devbase/commands/status.py の ImportError fallback も 同じ値へ同期 - uv.lock のローカルパッケージ版数を 3.0.0 へ (uv lock --check が通る状態に戻す) - CHANGELOG.md に [3.0.0] のリンク定義を追加し、[Unreleased] の比較開始点を v3.0.0 へ変更 - docs/user/env-export-import.md の manifest サンプルの devbase_version を 3.0.0 へ docs/user/plugin-registries.md の「devbase v2.2.0 以降」は当該仕様が導入された 版を指す履歴記述のため据え置く。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- project.yml リファレンス: `init` は clone 直後だけでなくコンテナ起動の たびに `./init.sh` を実行することを明記し、`branch` (clone 直後のみ) との タイミング差の表と冪等性の注意を追加 - 環境変数: `DEVBASE_WORKSPACE` が効くのはリポジトリ 1 件の構成だけで、 2 件以上では自動生成した workspace を直接開くため上書きできない旨を明記 - container-operations / plugin-dev quickstart の関連記述も同じ挙動へ揃える Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
takemi-ohama
commented
Aug 22, 2026
🔧 /ndf:fix サマリ (round 1)対応件数: critical=0 / major=1 / minor=2 (合計 3 件) codex / gemini の指摘はいずれも妥当でした。 詳細
意図的に据え置いた箇所
検証 |
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 2 | codex | APPROVE
版数・lockfile・リリース履歴の同期に修正が必要な問題はありません。
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 2 | gemini | REQUEST_CHANGES
v3.0.0 の破壊的変更 (PLAN32) に伴うドキュメントの更新漏れがあります。新規ユーザーがチュートリアル通りに実行するとエラーになる状態のため、リリース前に修正をお願いします。
[critical / 正確性]
docs/plugin-dev/quickstart.md:project.ymlへの更新漏れ
CHANGELOG に「プロジェクト設定をproject.ymlへ移行する破壊的変更を含みます」とありますが、本ファイルの「2.3 env ファイルの作成」セクション(76行目付近)が旧仕様(envファイルにGIT_USER等を書く内容)のままです。v3.0.0 ではproject.ymlがないとup時にエラーになるため、チュートリアルをproject.ymlを作成する手順に更新してください。ディレクトリ構成ツリー(34行目付近)の修正も必要です。[major / 網羅性]
docs/plugin-dev/plugin-yml-reference.md:requires定義の不足
CHANGELOG でプラグイン側のrequires.devbase: ">=3.0.0"更新が必須とアナウンスされていますが、リファレンスのフィールド一覧にrequiresに関するスキーマ定義や説明が記載されていません。ユーザーが正しく設定できるよう追記が必要です。[major / 正確性]
docs/plugin-dev/quickstart.md:plugin.ymlサンプルへのrequires追記
上記に関連し、本ファイルの「1.2 plugin.yml の配置」(23行目付近)にあるサンプルコードにもrequires: ...のセクションを追記し、ユーザーがコピペしても新しい必須要件を満たせるようにしてください。
env の役割を「コンテナへ渡す環境変数」と書き換えたのに、直上の表だけ 「リポジトリ名・コンテナ数等」と旧仕様のままで矛盾していた。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
gemini round 2 の critical 指摘 (quickstart.md が旧 env 仕様のまま) は PR #108 で 対応済みのため、同じ release/PLAN32 を base とする本ブランチへ取り込み、 3.0.0 の版数記述とドキュメント本文の仕様を同一ブランチ上で整合させる。 CHANGELOG.md はコンフリクトしたため union で解決した。 - HEAD 側: [Unreleased] を [3.0.0] - 2026-08-23 として確定した見出しと注記 - docs 側: project.yml 移行の ### Changed エントリ [2.2.0] 以前の履歴記述は変更していない。
CHANGELOG が 3.0.0 で requires.devbase: ">=3.0.0" への更新を求めているのに、 plugin.yml リファレンスに requires の記述が無く、プラグイン作者が何を書けばよいか たどれない状態だった (gemini round 2 の major 指摘)。 追記にあたって実装 (lib/devbase/plugin/syncer.py load_plugin_info) を確認したところ、 リファレンスとクイックスタートが載せていた plugins[] 配列 + projects[] 列挙の構造は どこからも読まれておらず、実際は plugin.yml が name / version / description / priority / requires.devbase を持つフラット形式で、プロジェクトは projects/ 配下の ディレクトリから自動検出される。旧構造のまま requires だけ足すと誤った位置を案内する ため、スキーマ記述を実装に合わせて訂正した上で追記している。 - plugin-yml-reference.md: 基本構造・フィールド一覧・使用例をフラット形式へ訂正。 requires (devbase 本体の最低バージョン。project.yml 形式は 3.0.0 以降でのみ読めるため ">=3.0.0" を指定する) と priority の詳細節を追加。プロジェクト自動検出を明記。 複数 Plugin を 1 リポジトリで配る場合は registry.yml を使う旨へ差し替え。 実在しないエラーメッセージを並べていたバリデーション表を実際の PluginError へ訂正。 - quickstart.md 1.2: plugin.yml サンプルをフラット形式 + requires.devbase へ更新。 検証: uv run pytest 1371 passed / 記載サンプルを load_plugin_info に通して requires_devbase='>=3.0.0' が取れることを確認。
takemi-ohama
commented
Aug 22, 2026
🔧 /ndf:fix サマリ (round 2)対応件数: critical=1 / major=2 / minor=0 (合計 3 件) round 2 は gemini のみ REQUEST_CHANGES で、指摘はレビュー body の 3 点(インラインなし)でした。3 点とも妥当と再判定し、すべて対応しています。 詳細
1. 現在の
2 / 3. # lib/devbase/plugin/syncer.pyreturnPluginInfo(
name=data.get('name', plugin_dir.name),
version=data.get('version', '0.1.0'),
description=data.get('description', ''),
priority=data.get('priority', 0),
requires_devbase=data.get('requires', {}).get('devbase') ifisinstance(data.get('requires'), dict) elseNone,
)実際の 旧構造のまま
deferred
検証記載サンプルが実装のローダを実際に通り、
|
- name: 強制されない命名規則を「バリデーションルール」と書いていたため 「命名規則(推奨)」へ改め、省略時はディレクトリ名になることを追記 - version: サンプルの引用符の有無を基本構造の例と統一
takemi-ohama
commented
Aug 22, 2026
(上のサマリの補足)セルフレビューで見つけた 2 点を
|
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 3 | codex | APPROVE
修正が必要な指摘はありません。
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 3 | gemini | APPROVE
変更内容を確認しました。project.yml の導入 (PLAN32) に伴う各モジュールの変更、マイグレーション機能 (migrate-config)、entrypoint.sh の複数リポジトリ対応などすべて目的通り設計・実装されています。境界値やエラーハンドリングに関するテストも十分に書かれており、懸念点はありません。
# Conflicts: # CHANGELOG.md # docs/user/project-yml.md
Summary
project.ymlへの移行はプロジェクト定義の互換性を壊すため、SemVer に従って major を上げます。pyproject.toml:2.2.0→3.0.0CHANGELOG.md:[Unreleased]の内容を[3.0.0] - 2026-08-23として確定し、プラグイン側でrequires.devbase: ">=3.0.0"への更新が必要な旨を明記背景
クロスレビューで、プラグインの
plugin.ymlがrequires.devbase: ">=2.2.0"を許容したままだと、project.ymlを読めない 2.2.0 にインストールできてしまい、インストール時の互換性チェックを通過した後でdevbase upが失敗する、という指摘がありました。プラグイン側が下限を上げるには、まず本体側にその版数が必要です。プラグインリポジトリ側の更新は各リポジトリの移行 PR で行います。issues/PLAN32_multi-repo-project.mdTest plan
uv run pytest— 全 1371 件 greengrep -rn "2\.2\.0" docs README.md lib bin— 残存は CHANGELOG の過去リリース記述のみ