yoi/tickets/user-pause.review.md
2026-04-19 14:27:53 +09:00

35 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# user-pause レビュー
## 結論
主要ロジックprotocol / controller / Pod / TUIは仕様通りで、ビルドと既存テストはすべて green。**ただしチケット完了条件で明示されている統合テスト 3 ケースが未実装のため、現状では完了条件未達**。
## 良い点
- `protocol``Method::Pause` variant 追加と serde round-trip テスト
- `controller.rs::run_with_cancel_support``pause_requested` フラグ設計と `PodEvent::Errored` の upward 抑止が仕様通り
- `Method::Pause` の Idle / Paused 区別NotRunning エラー / no-op
- `interrupt_and_run.rs` の責務分離: orphan 検出を純粋関数 `orphan_tool_result_closures` に切り出し、ユニットテスト 4 ケースで境界条件を網羅
- TUI の Ctrl-C 2 連打 UX と Ctrl-D との対称性。`paused` フラグを `Event::TurnStart` でクリアする経路は Resume / Run 両方でカバーされる
- `docs/tui-keybindings.md` が人間向け解説として丁寧。Cancel と Pause の使い分け、`Ctrl-R` / `Esc` 廃止経緯まで言及
## 指摘事項
### 1. 統合テスト不足completion blocker
チケット完了条件のうち、以下 3 項目に対応する統合テストが `crates/pod/tests/controller_test.rs` に追加されていない:
- 実行中 Pod に `Method::Pause` を送ると `PodStatus::Paused` に落ち、`Method::Resume` で続きから再開できる
- Paused → Run 後、LLM への送信が wire 上正しいorphan `tool_use` が解消されている)
- Pause → Resume の history consistency
`interrupt_and_run.rs` のユニットテストは関数単位の検証であり、controller を通したエンドツーエンドの確認とは別物。既存の `resume_without_pause_returns_error` と同形式で 3 ケース追加すること。
### 2. ライフサイクル運用
`tickets/user-pause.md`, `crates/pod/src/interrupt_and_run.rs` 等が untracked / unstaged。CLAUDE.md のチケット運用(作成 commit → 詳細化 commit → レビュー commitに沿うなら、実装と分けて commit すべき。
## 判定
統合テスト 3 ケースを追加した時点で完了条件達成。それまでは未完了。