feat(snapshot,status): スナップショットのグループ対応と可視化・ドキュメント (PLAN39 PR4) - #126
Merged
Merged
Conversation
スナップショットの対象を「共通 + アカウントグループ」の 2 本にし、いま自分が どのグループにいるのかを status と起動ログで分かるようにする。 - snapshot — 対象ボリュームを固定値から 2 本へ。1 つのアーカイブにまとめるため コンテナ内では /source/ai と /source/group に並べてマウントする。メタデータへ 対象ボリューム名を記録し、`devbase snapshot list` にも表示する - 旧スナップショット (volume: devbase_home_ubuntu のみ) は共通ボリュームを ルートへ直接マウントする旧レイアウトとして**そのまま復元できる** - 対象ボリュームの構成が変わったら新しい世代を作る。旧世代の snar は別の レイアウトを記録しており、そこへ差分を積むと全ファイルが移動したものとして 扱われて差分が壊れるため。明示的に古い世代を指定された場合は理由を出して止める - 復元時のクリアはマウントポイント自身ではなく**各マウントの直下**を消す (busy) - `devbase status` の [環境] にアカウントグループとボリューム名を出す。グループ名が 不正でも例外にせず表示に留める (status は状態を見るコマンドで、設定の誤りで 一覧全体を出せなくする必要はない) - entrypoint の起動ログにグループと gcloud のアカウントを 1 行出す。未ログインや gcloud 不在で `set -e` の起動を落とさないようフォールバックする - ドキュメント — ボリューム構造の表、アカウントグループの説明、2 層の永続化、 初回シード、スナップショットの対象と世代分割、README / CHANGELOG Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01S5oA2PqY6UX2Ca3t78886t
takemi-ohama
commented
Aug 29, 2026
takemi-ohama
left a comment
Contributor
Author
There was a problem hiding this comment.
🤖 cross-review | round 1 | codex | APPROVE
差分内に修正が必要な問題はありません。
takemi-ohama
commented
Aug 29, 2026
takemi-ohama
left a comment
Contributor
Author
There was a problem hiding this comment.
🤖 cross-review | round 1 | gemini | APPROVE
設計・実装ともに PLAN39 の要件を適切に満たしており、問題ありません。
This was referenced Aug 29, 2026
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.
Pull Request
概要
PLAN39 の 4 本目。スナップショットの対象を 2 ボリュームに広げ、いま自分がどの
アカウントグループにいるのかを
devbase statusと起動ログで分かるようにします。あわせてボリューム構造まわりのドキュメントを新しい構成へ更新します。
PR1〜PR3 で「認証と会話ログをグループ側へ分ける」仕組みは動きますが、この PR が無いと
グループボリュームがバックアップされず、また利用者が自分のグループを確認する手段が
ありません。
関連 Issue
変更点
スナップショット(Task 6 / AC9)
対象が
devbase_home_ubuntu固定から「共通 + 解決されたグループ」の 2 本になります。1 つのアーカイブにまとめるため、コンテナ内では
/source/aiと/source/groupに並べてマウントします。
volumes: {ai: devbase_home_ubuntu, group: devbase_home_kkg}volume: devbase_home_ubuntu旧スナップショットはそのまま復元できます。 復元時は作成時の解決結果ではなく
スナップショット自身のメタデータを見るため、別グループのスナップショットを
取り違えることもありません。
対象ボリュームの構成が変わったとき(PLAN39 への移行、グループ切替)は
新しい世代を作ります。旧世代の
snapshot.snarは別のレイアウトを記録しており、そこへ差分を積むと全ファイルが移動したものとして扱われて差分が壊れるためです。
世代を分ければ旧世代はそのまま復元できます。構成の違う世代を明示的に指定された場合は、
黙って壊れた差分を積まず理由を出して止めます。
復元前のクリアは各マウントの直下を消します。マウントポイント自身は busy で消せません。
devbase snapshot listに対象ボリュームの列を足しました。可視化(Task 7 / AC10)
devbase statusの[環境]セクションに解決結果を出します。末尾は値が
env由来か未設定によるフォールバックかを示します。グループ名が不正でも例外にせず「(設定エラー)」として表示に留めます。
statusは状態を見るコマンドであり、設定の誤りで一覧全体を出せなくする必要はないためです。
entrypoint の起動ログにも 1 行出します。
entrypoint.shはset -eで動くため、未ログインでgcloudが非 0 を返してもgcloudを含まないイメージでも起動を落とさないようフォールバックします。ドキュメント
docs/user/container-operations.md— ボリューム構造の表(3 種類)、「アカウントグループ」節、AI 設定の永続化を 2 層構成へ、初回シードの説明、起動ログ
docs/user/environment-variables.md—DEVBASE_ACCOUNT_GROUPの節docs/user/snapshot-guide.md— 対象ボリューム、listの出力例、世代分割の説明docs/plugin-dev/compose-yml-guidelines.md/quickstart.md— 標準ボリュームの表README.md/CHANGELOG.mdやらないこと(スコープ外)
docs/user/google-auth.md— PR5。本 PR のドキュメントからリンクしていますが実体は PR5 で追加するため、release ブランチ内では PR5 の merge まで
リンク切れです
満たす受け入れ条件
devbase statusに解決されたアカウントグループが表示される影響と互換性
devbase upでは対象ボリュームの構成が変わるため新しい世代が作られます動作確認
uv run pytestが greenbash -n containers/base/entrypoint.shが passdevbase statusの表示を実機で確認🤖 Generated with Claude Code
https://claude.ai/code/session_01S5oA2PqY6UX2Ca3t78886t