3.2 KiB
3.2 KiB
TUI: Pod 状態同期と Ctrl 系操作の安定化
背景
TUI 利用中、notice / alert / compact 表示が出た前後で Ctrl-C / Ctrl-X が効かない、または意図と違う動作をしているように見えるケースがある。
調査上、notice 表示そのものがキー入力を壊している実装は見当たらない。一方で、TUI が持つ running / paused などのローカル状態と、Pod controller の実状態がズレる経路が複数ある。
代表例:
Event::RunEnd後、TUI は idle 扱いになるが、Pod controller 側では memory extract / consolidate / post-run compact などの post-run 処理がまだ続いている場合がある。- この区間で notice / alert / compact event が表示されると、ユーザーからは「notice が出て idle に見えるのに Ctrl 操作が効かない」ように見える。
- TUI attach 時は
GetHistoryで履歴を復元するが、Pod の現在 status(Running / Paused / Idle)は復元されない。- 実際には Pod が Running / Paused でも、TUI 側は初期値の idle として扱い、
Ctrl-C/Ctrl-Xの分岐が実状態と合わない可能性がある。
- 実際には Pod が Running / Paused でも、TUI 側は初期値の idle として扱い、
- TUI の terminal event polling は Pod event が頻繁な時に key input が遅延・取りこぼしに見えやすい構造になっている疑いがある。
要件
- TUI が表示・操作に使う Pod 状態は、接続直後および実行中を通じて Pod controller の実状態と一致する。
- attach / resume 直後でも Running / Paused / Idle が正しく表示される。
Ctrl-C/Ctrl-Xの分岐が TUI の古い推測状態に依存して誤動作しない。
RunEndと post-run 処理中の扱いを整理する。- Worker turn が終わった状態と、Pod controller が次の method を即時処理できる状態を混同しない。
- post-run compact / memory 系処理中に notice が出ても、TUI 上の status と操作可能性が矛盾しない。
- TUI の input polling を見直し、Pod event / notice が多い状況でも key input が starvation しない。
Ctrl-C/Ctrl-Xの UX を明確化する。- Running / Paused / Idle / post-run busy それぞれで、Pause / Cancel / Shutdown / TUI exit のどれを送るかを明示する。
完了条件
- Running / Paused な Pod に後から TUI attach しても、status 表示と
Ctrl-C/Ctrl-Xの挙動が実状態に合っている。 RunEnd後の post-run 処理中に alert / compact notice が発生しても、TUI が idle と誤表示して操作不能に見える状態にならない。- Pod event / notice が連続しても、
Ctrl-C/Ctrl-Xが遅延・取りこぼしに見えない。 - 上記の状態遷移について、少なくともユニットテストまたは再現手順で確認できる。
範囲外
- TUI の入力キューイング(
tickets/tui-input-queue.md)。本チケットは状態同期と Ctrl 系操作の安定化に限定する。 - native GUI 側の状態管理。
- notice / alert の文言や見た目の全面 redesign。
Review
- 状態: Approve with follow-up
- レビュー詳細: ./tui-pod-status-sync.review.md
- 日付: 2026-05-04