From 6046842242b079e27d1aaf0ff54c367456e3945d Mon Sep 17 00:00:00 2001 From: Hare Date: Sat, 23 May 2026 13:35:03 +0900 Subject: [PATCH] docs: add manual turn rollback ticket --- TODO.md | 2 ++ tickets/manual-turn-rollback.md | 55 +++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 tickets/manual-turn-rollback.md diff --git a/TODO.md b/TODO.md index c7c1b4b2..711d82d4 100644 --- a/TODO.md +++ b/TODO.md @@ -5,6 +5,7 @@ - Prompt / Workflow 評価メトリクスと改善 Offer → [tickets/prompt-eval-metrics.md](tickets/prompt-eval-metrics.md) - Permission: allow-all 既定 policy への整理 → [tickets/permission-default-policy.md](tickets/permission-default-policy.md) - Pod: 任意ターンからの Fork(複数ターン巻き戻しを汎用化) → [tickets/pod-session-fork.md](tickets/pod-session-fork.md) +- Pod/TUI: 手動 rollback 導線 → [tickets/manual-turn-rollback.md](tickets/manual-turn-rollback.md) - Pod: Inbound PodEvent ハンドリングの重複を統合 → [tickets/pod-inbound-pod-event-dedup.md](tickets/pod-inbound-pod-event-dedup.md) - llm-worker のエラー耐性 - ストリーム途中失敗時の継続 → [tickets/llm-worker-stream-continuation.md](tickets/llm-worker-stream-continuation.md) @@ -24,3 +25,4 @@ - system-reminder 注入機構の汎用化(2件目の利用者が出た時に検討。タグ形式 `...` の規約は session-todo-reminder で先行確立。注入された Item は worker.history に append する方針) - Bashツールがファイル編集に常用されている問題をdesciptionで抑制 - 事前定義したManifestをProfile的に扱い、Orchestrator/Coder/Researcherで別々のモデル/設定を使わせる運用ができるようにする +- 複数のPodのViewを行き来できるUI diff --git a/tickets/manual-turn-rollback.md b/tickets/manual-turn-rollback.md new file mode 100644 index 00000000..34e8b8b4 --- /dev/null +++ b/tickets/manual-turn-rollback.md @@ -0,0 +1,55 @@ +# Pod/TUI: 手動 rollback 導線 + +## 背景 + +`pod-empty-turn-rollback` / `tui-empty-turn-restore` により、AI 側出力が 0 の interrupted turn については Pod 側で自動 rollback し、TUI 側で入力を復元できるようになった。 + +一方で、rollback substrate は直前 Run の状態復元に使える形で入り始めているが、ユーザーが明示的に rollback を要求する導線はまだない。誤送信、モデル選択ミス、途中で方針を変えた場合などに、ユーザーが手動で直前状態へ戻す手段が必要になる可能性がある。 + +詳細な UX / rollback 対象範囲 / safety policy は未決定のため、本チケットでは要求を保持し、実装方針は着手時に確定する。 + +## 要件メモ + +- ユーザーが明示的に rollback を要求できる導線を用意する。 + - TUI system command / keybinding / tool / protocol Method のどこに置くかは未決定。 + - 最初は TUI から直前 turn を rollback する導線が候補。 +- rollback 対象範囲を決める。 + - 直前 submit のみか。 + - assistant output がある turn を許可するか。 + - tool call / tool result が含まれる turn を許可するか。 + - 複数 turn rollback は `pod-session-fork` との関係を確認する。 +- safety policy を決める。 + - user-visible assistant output を消す場合は確認を要求するか。 + - tool side effect が既に発生した turn を rollback できるのか、履歴から消すのではなく fork に誘導するのか。 + - rollback が history/context 永続化原則を壊さないようにする。 +- TUI 側の表示を決める。 + - rollback 成功 / 失敗の通知。 + - 消された blocks の扱い。 + - rollback された input を composer に戻すか、history/backup に置くか。 +- protocol signal を整理する。 + - 既存 `RunResult::RolledBack` を再利用できるか。 + - 手動 rollback は RunEnd ではなく専用 Event / Method が必要か。 + +## 完了条件(詳細未確定) + +- 手動操作で rollback を要求できる。 +- rollback 成功時、Pod の session log / SegmentLogSink mirror / TUI 表示が整合する。 +- rollback 失敗時、理由がユーザーに見える。 +- tool side effect や assistant output を含む turn の扱いが仕様として明示されている。 +- tests がある。 +- `cargo fmt --check` +- `cargo check --workspace` +- 関連 crate の tests。 + +## 範囲外 + +- 複数ターン rollback / 過去地点からの本格的なやり直し(`pod-session-fork` と調整) +- rollback 履歴スタック +- tool side effect の undo +- fork tree 可視化 + +## 関連 + +- `tickets/pod-session-fork.md` +- 完了済み: `pod-empty-turn-rollback` +- 完了済み: `tui-empty-turn-restore`