Skip to content

snapshot create: 既にある世代の名前で --full を打つと失敗し、その後の差分が失敗の前の変更を落とす → その世代を今のボリュームの全体で作り直し、失敗しても前の控えを保つ(#458) - #467

Merged
takemi-ohama merged 3 commits into
mainfrom
design/issue-458
Oct 12, 2026

Conversation

@takemi-ohama

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

Copy link
Copy Markdown
Contributor

#458 の要求と受け入れ条件の写し、および設計文書(スプリント m8b)を追加しました。設計の主題は「既存の世代を --full で作り直す」ことです。この PR には文書だけが含まれ、実装は入っていません。

利用者向けの変化

  • 無し

移行の手順

  • 無し

変更の要点

テスト

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

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

requirements-check は止まりました。理由は issues/issue-458-requirements.md を読めなかったことです。このファイルは変更の統計では追加されています。止まった原因を確かめたうえで、このステップをやり直す必要があります。

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

🤖 Generated with Claude Code

決めたこと

issues/issue-458-design.md

  • 決定 1: 作り直しで前の控えを失わないため、新しい full を仮の名前と新しい状態ファイルで作ってから入れ替える
  • 決定 2: 入れ替えの途中で止まっても誤った中身を復元しないため、状態ファイル → 差分(番号の大きい順)→ 印付きの meta.yml → full → 印無しの meta.yml → 状態ファイルの順で入れ替える
  • 決定 3: 新しい世代の作成を今と同じに保つため、作り直しの手順は世代に前のファイルがあるときだけ通す
  • 決定 4: 既存の名前への --full を止めずに受け付け、前の差分は消して前の時点へは戻せないと文書に書く
  • 決定 5: すでに傷んだ世代を見つける処理は足さず、CHANGELOG.md で条件と取り直しを案内する(要求の未決 1 の案)

takemi-ohama and others added 2 commits October 12, 2026 22:09
既存の世代の名前で snapshot create --full を打ったときの作り直しの要求。
課題の本文が正で、この写しは spec-copy.py write で作った。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
新しい full を仮の名前と新しい状態ファイルで控えてから入れ替え、
前の状態ファイル → 差分(番号の大きい順)→ full → 状態ファイルの順で
置き換える。新しい世代の作成は今と同じ経路のまま。
語「世代の作り直し」を用語集へ足した。

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

修正が必要な指摘は major 1 件です。

Comment thread issues/issue-458-design.md Resolved

@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

設計文書のドメインモデルの節と用語集の差分を見た。コンテキストは snapshot 単一で閉じ(コンテキストマップ不要)、集約「世代」の書き換えは単一の orchestrator _create_full 経由に収束し、不変条件 I1〜I5 は矛盾せず、ドメインイベント E1〜E7 は受け手を持ち要求の E1〜E7 の番号を引き継いでいる。用語集に追加した「世代の作り直し」は設計の用語表・参照先(snapshot-series.md)と一致する。critical/major の指摘は無し。

full と meta.yml の入れ替えの間は meta.yml に rebuilding の印を立て、restore が
消去の前に拒む。状態ファイルは印を外した後に入れ替える(I3・決定 2)。

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

Copy link
Copy Markdown
Contributor Author

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

対応件数: 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 2 | claude | APPROVE

round 1 の指摘(full と meta.yml の組の食い違い)への対応として入った印 rebuilding: true・meta.yml の 2 回の書き換え・restore の消去前の拒否は、止まる各状態で restore が別の組のボリュームを消さないことを満たしており、manager.py の restore(唯一の消去の経路、呼び出しは commands/snapshot.py:126 のみ)とも矛盾しない。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 | kiro | APPROVE

round 1 の major(別のボリュームの組で既存名へ --full を打ち、full と meta.yml が別の組を指す途中状態で restore するとデータを取り違えて消す)への対応差分を確認した。(1) 破壊的に対象ボリュームを消すのは restore(clear_command 経由)だけで、rotate/delete は snapshot.yml のエントリだけを触り meta.yml の volumes/archive_root を読まないため、restore に印チェックを置けば保全できる。(2) 入れ替え順(snar 削除 → incr 削除 → 印付き meta → full 改名 → 印無し meta → snar 改名)により full=新/meta=旧 の窓は生じず、meta=新/full=旧 の窓は rebuilding 印で restore を止める。(3) meta.yml を消さず印にする決定は、snapshot_volumes が meta 欠落時に旧レイアウト(HOME_UBUNTU_VOLUME をルートへ)へフォールバックする実装(manager.py:1248-1271)と整合し、採らなかった形の根拠が実装で裏づけられる。(4) 用語集の『世代の作り直し』と整合し、rebuilding は内部キーで利用者語ではない。I3(a)(b)・状態表・テスト設計行・入出力の契約が互いに矛盾しない。critical/major の指摘は無し。

@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 13:27
@takemi-ohama
takemi-ohama merged commit 37231ab into main Oct 12, 2026
10 checks passed
@takemi-ohama takemi-ohama mentioned this pull request Oct 12, 2026
2 tasks done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant