Skip to content

VS Code Server: コンテナごとのボリュームが本体を重ねて持ち、更新のたびに旧版が溜まる → 本体(bin/)だけを全コンテナで 1 本のボリュームに置いて版の数に上限を置き、拡張と状態はコンテナの書き込みレイヤーに残す(#463) - #484

Merged
takemi-ohama merged 5 commits into
mainfrom
design/issue-463
Oct 14, 2026

Conversation

@takemi-ohama

@takemi-ohama takemi-ohama commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

#463 の設計文書を追加しました。VS Code Server が使う共通のボリュームと、コンテナごとに持つ状態の扱いについて、要求と受け入れ条件、およびその設計をまとめています。あわせて用語集に語を加えました。実装の変更は含みません。

利用者向けの変化

  • 無し

移行の手順

  • 無し

変更の要点

  • issues/issue-463-requirements.md を追加しました(253 行)。VS Code Server のボリュームについての要求と受け入れ条件をまとめています。
  • issues/issue-463-design.md を追加しました(480 行)。共通のボリュームとコンテナごとの状態の設計を記しています。
  • docs/glossary.md と docs/glossary/glossary.json に、設計で使う用語を加えました。
  • 変更は 4 ファイル、773 行の追加だけです。

テスト

supervise.py の run のステップの結果です。

ステップ exit 結果
glossary 0 ok(宣言と用語集が揃っている)
requirements-check 2 stopped(issues/issue-463-requirements.md を読めない: [Errno 2] No such file or ...)
  • requirements-check は exit 2 で止まり、要求の検査は通っていません。
  • このファイルは本 PR の変更に含まれています。検査が実行時にファイルを見つけられなかった原因を確かめる必要があります。

モード: standard / 通した工程: 設計 → 要求と受け入れ条件 → ドキュメントレビュー

🤖 Generated with Claude Code

決めたこと

issues/issue-463-design.md

  • 決定 1: 作り直しで消えてよいものは共有もボリュームにもせず、共有を bin/ に絞って ~/.vscode-server/bin に付ける(利用者の決定、2026-10-14)
  • 決定 2: 旧形式と取り違えず中身が分かる名前にするため、共通の VS Code Server ボリュームを devbase_vscode-server-bin にする
  • 決定 3: 建て直していないイメージでも attach できるよう、起動の後の処理で bin の所有者を ~/.vscode-server の所有者へ揃える
  • 決定 4: 同時に走っても使っている版を消さないため、残す版の数を 5 にし、版を product.json の更新時刻で並べる
  • 決定 5: VS Code Server の持ち物を消さないため、片付けを共通の VS Code Server ボリュームの bin/ の 3 種に限る
  • 決定 6: 利用者が移った後の後片付けを忘れないよう、旧形式の案内を devbase up のたびに最後に出し、印を持たない

takemi-ohama and others added 2 commits October 13, 2026 09:08
bin/・extensions/ を全コンテナ共通の 1 本にし、data/ はコンテナごとに残す。
data/Machine の .devport が後勝ちになることと、devbase がコンテナごとに書く
window.title がぶつかることを、空の作業用ボリュームでの確かめとコードの読みで
見つけたため。課題の「実機で確かめること」10 項目の確かめ方と結果、マージ前の
手動確認 M1〜M3 を書いた。用語集に 3 語を足した。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
共通の VS Code Server ボリューム devbase_vscode-server を ~/.vscode-server に、
コンテナごとの状態 devbase_vscode-data_<project>_<index> を ~/.vscode-server/data に
入れ子で付ける。建て直していないイメージでは入れ子の data が root のまま書けない
ため(実測 D1)、起動の後の処理で所有者を揃える(D2)。entrypoint は本体の版を
product.json の更新時刻の順に 5 版まで残し、入れ子の本体と古い一時の展開を消す
(同時の片付けで版が減らない並べ方を D3 で確かめた)。旧形式のボリュームは
devbase up の最後に名前と消し方を案内し、devbase は消さない。用語集に 2 語を足した。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 1 | codex | REQUEST_CHANGES

ドメインモデルの修正が必要な指摘 2 件。

Comment thread issues/issue-463-design.md Outdated
Comment thread issues/issue-463-design.md

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 1 | kiro | REQUEST_CHANGES

ドメインモデルの不変条件 I1 と I2 が、プロジェクトが ~/.vscode-server/data だけを宣言した場合で矛盾する。I1 を無条件の「片方だけを足さない」から、I2 の例外(data だけ宣言のときは共通だけを足す)と両立する条件へ直すこと。

Comment thread issues/issue-463-design.md Outdated
@takemi-ohama

Copy link
Copy Markdown
Contributor Author

🔧 /ndf:fix サマリ | round 1 | commit dc4b464

対応件数: critical=0 / major=2 / minor=0(合計 2 件)
決着: 2 件 / 見送り: 0 件 / 却下: 1 件
CI: SUCCESS

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 2 | claude | APPROVE

round 2 の差分(I1 の書き換え)は I2・_vscode_volumes の責務・受け入れ条件 5 のテスト行と両立しており、新たな指摘は無い。

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 2 | kiro | REQUEST_CHANGES

round 1 の I1/I2 矛盾(data だけ宣言のケース)は I1 の書き換えで解消。ただし書き換えた I1 に、プロジェクトが ~/.vscode-server だけを宣言したケース(適用範囲で明示している既存の経路)での新しい食い違いが残る。1 件。

Comment thread issues/issue-463-design.md Outdated
@takemi-ohama

Copy link
Copy Markdown
Contributor Author

🔧 /ndf:fix サマリ | commit cbf2e89

対応件数: critical=0 / major=0 / minor=0(合計 0 件)
決着: 1 件 / 見送り: 0 件 / 却下: 1 件
CI: NONE

@takemi-ohama
takemi-ohama marked this pull request as ready for review October 13, 2026 00:32
利用者の決定(2026-10-14)に合わせて要求・設計・用語集を書き直す。

- 共通の VS Code Server ボリューム devbase_vscode-server-bin 1 本を
  ~/.vscode-server/bin に付ける。extensions/・extensionsCache/・data/ は
  ボリュームにせず、コンテナの書き込みレイヤーに残す(devbase up の作り直しで消える)
- コンテナごとの状態のボリューム(devbase_vscode-data_*)を作らない
- 起動の後の処理の所有者の直しを data から bin へ移す(今の base で D4・D5 を実測)
- 要求の M2・M3、前提 7(拡張の集まり)を削除し、作り直しで失うものを前提 7 に書く
- 課題 #463 の本文を直し、spec-copy.py write で写しを作り直した

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@takemi-ohama takemi-ohama changed the title VS Code Server: コンテナごとのボリュームが本体と拡張を重ねて持ち、更新のたびに旧版が溜まる → 本体と拡張を全コンテナで 1 組にし、本体の版の数に上限を置き、窓のタイトルと再接続はコンテナごとに保つ(#463) VS Code Server: コンテナごとのボリュームが本体を重ねて持ち、更新のたびに旧版が溜まる → 本体(bin/)だけを全コンテナで 1 本のボリュームに置いて版の数に上限を置き、拡張と状態はコンテナの書き込みレイヤーに残す(#463) Oct 13, 2026

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 3 | claude | APPROVE

round 3 の差分(共有を bin/ だけにし、extensions/・extensionsCache/・data/ を書き込みレイヤーに残す再設計)は、要求・設計・用語集の間で受け入れ条件・不変条件 I1〜I11・構成要素・テスト設計の行が対応しており、既存の entrypoint(ubuntu で動き sudo で所有者を直す・準備の印の前に devbase_setup_vscode_server_dir を呼ぶ)、window_title の docker exec(開発ユーザーで data/Machine を mkdir -p)、cmd_up の down → up とも矛盾しない。新たな指摘は無い。

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 3 | codex | APPROVE

指定コミット間の変更差分に、新規の critical / major 指摘はありません。判断の根拠: 利用者の承認(共有を bin/ に限定し、拡張と状態の消失を受け入れる決定)、Value 3(プロジェクトごとの状態の分離)、C4(旧形式のボリュームを自動削除しない)。

@takemi-ohama

Copy link
Copy Markdown
Contributor Author

🔧 /ndf:fix サマリ | commit (なし)

対応件数: critical=0 / major=0 / minor=0(合計 0 件)
決着: 0 件 / 見送り: 0 件 / 却下: 0 件
CI: NONE

@takemi-ohama takemi-ohama added the design-approved ドキュメントレビューを人間が承認した label Oct 14, 2026
@takemi-ohama
takemi-ohama merged commit f58d0d8 into main Oct 14, 2026
10 checks passed
@takemi-ohama takemi-ohama mentioned this pull request Oct 14, 2026
1 task done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

design-approved ドキュメントレビューを人間が承認した

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant