diff --git a/TODO.md b/TODO.md index e17600c0..0c8244de 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 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) - llm-worker のエラー耐性 diff --git a/tickets/pod-state-write-points.md b/tickets/pod-state-write-points.md deleted file mode 100644 index 2a87a88c..00000000 --- a/tickets/pod-state-write-points.md +++ /dev/null @@ -1,36 +0,0 @@ -# Pod state: lifecycle 各点での write 配線 - -## 背景 - -`pod-state-backend` で Pod metadata の永続 backend が用意された。本チケットでは Pod の lifecycle 各点で **active `(SessionId, SegmentId)` の更新を Pod state に write-through する** ことを実装する。 - -## 要件 - -- Pod state の write point を以下に配置: - - Pod 作成時: pod name と allocated `SessionId` を初期化。`SegmentId` は first `SessionStart` materialize で確定するので未確定 marker を許容する。 - - first run で `SessionStart` が materialize された後: active `(SessionId, SegmentId)` を確定。 - - compaction: 新 `SegmentId` に切り替わる (`SessionId` は据え置き)。 - - fork (live auto / 過去): 新 `SegmentId` に切り替わる。 - - resume: 起動時に Pod state から `(SessionId, SegmentId)` を解決し、session log を `restore_from_manifest` 相当の経路で復元する。 -- session log の `SessionOrigin` を Pod state 側に重複保持しないこと。compaction / fork の構造的 lineage は session-store 側に正本。 -- live writer の二重起動は既存の pod-registry / session lock と同等以上に防止する(Pod state にも lock 役割を持たせるかは実装時に判断、ただし pod-registry の責務を歪めない)。 - -## 完了条件 - -- 上記 write point で Pod state が更新され、Pod プロセスを再起動しても Pod 名から active session に復元できる。 -- compaction / fork により active segment が変わった場合、Pod state と pod-registry の session id が整合する。 -- 既存の `--session ` resume を壊さない。 -- `cargo check --workspace` および `cargo test -p pod` が通る。 - -## 範囲外 - -- Pod 名単位 resume の CLI 引数導線(別チケット `pod-name-resume`)。 -- spawned children の永続化(別チケット `spawned-registry-persist`)。 -- ordered session history の audit(Pod state 側に持たせるか、session log だけで足りるかは本チケットで判断。**持つ必要が無いなら持たないこと**を優先する)。 - -## 関連 - -- `tickets/pod-state-backend.md` (前提) -- `tickets/pod-name-resume.md` (後続) -- `crates/pod/src/pod.rs` -- `crates/pod-registry/`