Skip to content

スナップショット: 作り直せるキャッシュ・一時ファイル・ログまで毎回控え、フルの世代と差分が大きくなる → 本体が持つ既定の除外と利用者が足した除外を控えから外し、除外が違う世代へは差分を積まない(#368) - #459

Merged
takemi-ohama merged 5 commits into
mainfrom
design/issue-368
Oct 12, 2026

Conversation

@takemi-ohama

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

Copy link
Copy Markdown
Contributor

#368 の要求と受け入れ条件の写し、および設計文書を追加しました。除外にかかわる語を用語集へ足しています(スプリント m8a)。コードの変更は含みません。

利用者向けの変化

  • 無し

移行の手順

  • 無し

変更の要点

変更は 4 ファイル、637 行の追加です。

テスト

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

ステップ exit 結果
glossary 0 ok(宣言と用語集が揃っている)
requirements-check 2 stopped(issues/issue-368-requirements.md を読めない: [Errno 2] No such file or ...)

requirements-check の終了コード 2 は失敗ではありません。要求の文書(issues/issue-368-requirements.md)をまだ書いていない時点で打つ検査で、「仕様のコピーが無いので要求の工程を通す」という意味です。要求はこの PR で書きました。

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

🤖 Generated with Claude Code

決めたこと

issues/issue-368-design.md

  • 決定 1: 世代の規則と除外の規則を分けて読めるよう、除外の一覧の組み立てを exclude.py に置き、manager.py は受け取って使うだけにする
  • 決定 2: ボリュームの下の深い場所や chats/ の下を外さないよう、パターンにメンバー名を頭に付け、--anchored --no-wildcards-match-slash でメンバーより前に渡す
  • 決定 3: 系列ごとの除外の一覧が起動のたびに揺れないよう、利用者の除外を devbase のルートに 1 つの設定ファイル backups/exclude.yml で受ける
  • 決定 4: 使えない値や読めない設定で控えが止まらず古い世代も消えないよう、警告して続け、読めない間は今の世代の除外の一覧のまま差分を積む
  • 決定 5: 復元の結果が除外の一覧と食い違わないよう、世代の meta.yml に full を作ったときの一覧を残し、違う世代へは差分を積まない
  • 決定 6: 外した SQLite の本体に古い WAL が残らないよう、既定の除外に .codex/logs_2.sqlite-wal と -shm を足す
  • 決定 7: 既定の除外を共通ボリュームとグループのボリュームの両方に当てる

takemi-ohama and others added 2 commits October 12, 2026 17:05
- 除外は各ボリュームの頭にアンカーし、* は 1 つの要素の中だけに当てる(GNU tar 1.35 で測った)
- 利用者の除外は backups/exclude.yml で受け、使えない値は警告して外す
- 世代の meta.yml に除外の一覧を残し、違う世代へは差分を積まない
- 既定の除外に logs_2.sqlite の WAL・SHM を足す(課題の表に無いパス。承認ゲート 1 で見る)
- 用語集に「除外のパターン」を足し、「利用者の除外」に置き場を書き足す

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 | APPROVE

ドメインモデルの節と用語集の差分について、指定の基準に該当する修正指摘はありません。判断の根拠: Vision・Value 2・Value 3(世代ごとの除外の固定、既存世代の復元互換性、ボリュームを起点とする除外の条件を確認)。

@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 | APPROVE

設計 PR のドメインモデルの節(コンテキスト・集約・不変条件・ドメインイベント・用語)と用語集の差分を見た。コンテキストは snapshot 1 つで volume との順応者関係も宣言済み、集約はそれぞれ持ち主が 1 つ(世代=SnapshotManager、利用者の除外の設定=利用者)、不変条件 I1〜I8 に相互矛盾は無く、ドメインイベント E1〜E7 はすべて受け手を持ち要求 E1〜E7 の番号を 1:1 で引き継ぐ。用語集の差分(除外のパターンを追加、利用者の除外の意味を backups/exclude.yml 置き場で変更、除外の一覧・既定の除外は要求で追加済みで不変)は設計の用語表の『追加・意味の変更・変えない』の宣言と一致する。基準(critical/major)に当たる指摘は無い。

@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 | REQUEST_CHANGES

1 件。読めない exclude.yml を既定の除外だけで続ける扱い(決定 4)が、不変条件 I1 と自動スナップショットの rotate を通じて古い世代を消す経路になっている。

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

@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 | APPROVE

設計 PR #368 を kiro 観点(共通・ドキュメント・設計の各観点)で round 2 レビューした。要求(issue-368-requirements.md)・設計(issue-368-design.md)・用語集差分(glossary.json / glossary.md)を実装(lib/devbase/snapshot/manager.py)と照合した。受け入れ条件 1〜14・不変条件 I1〜I8 はテスト設計表に 1:1 で対応し、退けた案(決定 1〜7 の『採らない』)は他節に残っていない。入出力の契約の SnapshotError の文面・終了コード 1 への経路(create→_create_incremental→cmd_snapshot)、copy の meta 丸写し(shutil.copytree)、restore を変えない(I8)を実コードで確認した。tar の挙動は『測った tar の振る舞い』で実測の根拠がある。用語集 json/md は一致し、設計の用語表の『追加・意味の変更・変えない』の宣言と整合する。critical / major の基準(誤動作・停止・データ破壊・秘密や戻せない操作・実装者が別物を作る食い違い)に当たる修正指摘は無い。

読めない exclude.yml を既定の除外だけとして比べると、新しい世代ができて
rotate が古い世代を消し、設定を直した次の up でもう 1 世代消える。
読めない間は記録を持つ世代へ記録の一覧で差分を積む形に変え、決定 4・
テスト設計・snapshot-guide に書くことを直した。

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

Copy link
Copy Markdown
Contributor Author

🔧 /ndf:fix サマリ | round 2 | commit 621ba0e

対応件数: critical=0 / major=1 / minor=0(合計 1 件)
決着: 1 件 / 見送り: 0 件 / 却下: 0 件
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 3 | claude | REQUEST_CHANGES

1 件。I9 が差分の経路だけを守り、読めない間に差分の上限で作る新しいフルが既定の除外だけになるため、設定を直した後にもう 1 世代がローテーションで消える経路が残る。

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

@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

指定の差分(1e1a59c → 621ba0e)に、重複を除く critical / major の修正指摘はありません。判断の根拠: Value 2・Vision(読めない設定時の除外の引き継ぎを、積み先判定・差分作成・テスト設計と照合)。

差分の上限・snar 無しのフォールバック・復元前バックアップで作る新しいフルを
_excludes_for で系列の記録の一覧にし、設定を直した次の up で世代を失わないようにする。

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

Copy link
Copy Markdown
Contributor Author

🔧 /ndf:fix サマリ | round 3 | commit 3ddf5dc

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

@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 marked this pull request as ready for review October 12, 2026 08:31
@takemi-ohama takemi-ohama added the design-approved ドキュメントレビューを人間が承認した label Oct 12, 2026
@takemi-ohama
takemi-ohama merged commit 7b3c1b6 into main Oct 12, 2026
10 checks passed
@takemi-ohama takemi-ohama mentioned this pull request Oct 12, 2026
3 tasks 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