From bacba69d31170f5e1ae5068397d45eec657ec8a0 Mon Sep 17 00:00:00 2001 From: Hare Date: Fri, 22 May 2026 22:03:36 +0900 Subject: [PATCH] chore: complete pod-state-backend ticket --- TODO.md | 1 - tickets/pod-state-backend.md | 44 ------------------------------------ 2 files changed, 45 deletions(-) delete mode 100644 tickets/pod-state-backend.md diff --git a/TODO.md b/TODO.md index bf1838be..e17600c0 100644 --- a/TODO.md +++ b/TODO.md @@ -8,7 +8,6 @@ - Pod: 任意ターンからの Fork(複数ターン巻き戻しを汎用化) → [tickets/pod-session-fork.md](tickets/pod-session-fork.md) - Pod: Inbound PodEvent ハンドリングの重複を統合 → [tickets/pod-inbound-pod-event-dedup.md](tickets/pod-inbound-pod-event-dedup.md) - Pod 単位永続化 - - Pod state backend と FsStore 実装 → [tickets/pod-state-backend.md](tickets/pod-state-backend.md) - Pod lifecycle 各点での write 配線 → [tickets/pod-state-write-points.md](tickets/pod-state-write-points.md) - Pod 名単位の resume / attach 導線 → [tickets/pod-name-resume.md](tickets/pod-name-resume.md) - SpawnedPodRegistry の永続化と復元 → [tickets/spawned-registry-persist.md](tickets/spawned-registry-persist.md) diff --git a/tickets/pod-state-backend.md b/tickets/pod-state-backend.md deleted file mode 100644 index aa3adb86..00000000 --- a/tickets/pod-state-backend.md +++ /dev/null @@ -1,44 +0,0 @@ -# Pod state: session-store backend と FsStore 実装 - -## 背景 - -Pod 単位のランタイム状態は現状 `/{pod_name}/` 配下 (`status.json` / `history.json` / `spawned_pods.json`) に write-through されているのみで、Pod プロセスの寿命を超える復元ソースとして扱えない。 - -`session-grouping-introduce` で Session(Segment 群の grouping)が導入されたあとは、Pod は **「どの Session の、どの leaf Segment が現在 active か」を指す軽量メタデータ**を持てば良い。会話本文は session log を唯一の正本とし、Pod state は references のみを保持する。 - -このチケットは Pod metadata の **backend trait と FsStore 実装の追加**だけに範囲を絞る。lifecycle hook の配線や CLI 導線は後続チケットで扱う。 - -## 要件 - -- Pod metadata trait を session-store crate に追加(`Store` 拡張 or 隣接 trait / module。実装時に決定)。 -- 保持する内容: - - active `(SessionId, SegmentId)` 参照 - - Pod 名(key) - - manifest / scope の snapshot 参照(既存 session log の `pod.scope` snapshot と責務を重複させない範囲で。最低限 latest segment への pointer のみで足りる可能性が高い) -- FsStore のデフォルト layout は `/pods//` 配下に置く。`` は引き続き socket / pid / status など一時状態専用。 -- write は session-store の他 write と同じ sync API で揃える。 -- read は冪等で、Pod state が無ければ `None` を返すだけ(initial Pod 起動時に作成される)。 -- `--pod` resume の入口に必要な `read_by_name(pod_name)` API を提供する。 - -## 完了条件 - -- Pod metadata trait と FsStore 実装が `session-store` にあり、minimal CRUD が unit test で確認できる。 -- `/pods//` の layout が決まっている。 -- ordered session history のような時系列 audit は本チケットには含めない(write point 配線時に必要なら追加)。 -- `cargo check --workspace` および `cargo test -p session-store` が通る。 - -## 範囲外 - -- Pod lifecycle の write point 配線(別チケット `pod-state-write-points`)。 -- Pod 名単位 resume / attach の CLI 導線(別チケット `pod-name-resume`)。 -- SpawnedPodRegistry の永続化(別チケット `spawned-registry-persist`)。 -- DB backend 実装。 - -## 関連 - -- `tickets/session-grouping-introduce.md` (前提) -- `tickets/pod-state-write-points.md` (後続) -- `tickets/pod-name-resume.md` (後続) -- `tickets/spawned-registry-persist.md` (並行可) -- `crates/session-store/` -- `crates/pod/src/runtime/dir.rs`