diff --git a/.yoi/tickets/00001KVMT2J25/item.md b/.yoi/tickets/00001KVMT2J25/item.md index 3c57dfd8..cec394bb 100644 --- a/.yoi/tickets/00001KVMT2J25/item.md +++ b/.yoi/tickets/00001KVMT2J25/item.md @@ -1,8 +1,8 @@ --- title: 'Pod protocol: in-flight LLM response reconnect snapshot should include unfinished blocks' -state: 'inprogress' +state: 'closed' created_at: '2026-06-21T10:02:01Z' -updated_at: '2026-06-21T11:56:44Z' +updated_at: '2026-06-21T12:00:02Z' assignee: null readiness: 'implementation_ready' risk_flags: ['protocol', 'session-history', 'persistence', 'tui-reconnect', 'stream-state'] diff --git a/.yoi/tickets/00001KVMT2J25/resolution.md b/.yoi/tickets/00001KVMT2J25/resolution.md new file mode 100644 index 00000000..f64ce13e --- /dev/null +++ b/.yoi/tickets/00001KVMT2J25/resolution.md @@ -0,0 +1,20 @@ +In-flight LLM response 中の reconnect / late attach snapshot に unfinished blocks を含める protocol/pod/TUI 実装を統合した。 + +主な成果: +- `Event::Snapshot` に typed `InFlightSnapshot` / `InFlightBlock` を追加。 +- Pod 側に assistant text / thinking / tool-call args の in-flight accumulator を追加。 +- Streaming callbacks が accumulator 更新と live delta broadcast を同じ stream path で行うようにした。 +- Connect-time snapshot が in-flight stream state を含むようにした。 +- Session-log mirror snapshot と in-flight snapshot、および finalized `AssistantItem` publish/clear の critical section を揃え、mirror-only assistant commit が snapshot/live boundary で消える race を防止した。 +- Finalized assistant item が committed snapshot に含まれる場合は matching in-flight state を clear して duplicate を防ぐ。 +- TUI snapshot restore が unfinished text/thinking/tool-call args blocks を seed し、後続 live deltas が同じ logical block に continuation されるようにした。 +- Serialization/default compatibility、snapshot/live no-gap/no-duplicate、TUI continuation の focused regression tests を追加。 + +統合・検証: +- Merge commit: `b21638f5 merge: inflight reconnect snapshot` +- Implementation commits: `74aca6f6`, `061136d7` +- Reviewer final verdict: approve +- Validation passed: `cargo fmt --all --check`, `git diff --check HEAD^1..HEAD`, `cargo test -p protocol`, `cargo test -p pod --lib in_flight`, `cargo test -p pod session_log_and_in_flight_snapshot_prevents_mirror_only_assistant_gap`, `cargo test -p pod committed_assistant_snapshot_does_not_duplicate_in_flight_block`, `cargo test -p tui snapshot_in_flight_blocks_continue_with_live_deltas`, `cargo test -p tui`, `cargo check -p protocol -p pod -p tui`, and `cargo run -p yoi -- ticket doctor`。 + +既知の無関係事項: +- Full `cargo test -p pod` は既存の prompt-resource assertion 2 件で失敗することが reviewer により確認済み。この Ticket の差分とは無関係。 \ No newline at end of file diff --git a/.yoi/tickets/00001KVMT2J25/thread.md b/.yoi/tickets/00001KVMT2J25/thread.md index 78a73d56..a109bc27 100644 --- a/.yoi/tickets/00001KVMT2J25/thread.md +++ b/.yoi/tickets/00001KVMT2J25/thread.md @@ -486,3 +486,79 @@ Worktree status: - Clean on `impl/00001KVMT2J25-inflight-snapshot` at `061136d7`。 --- + + + +## Implementation report + +Reviewer r2 approvalを受けて、実装ブランチを Orchestrator worktree の `orchestration` branch に統合した。 + +統合: +- Merge commit: `b21638f5 merge: inflight reconnect snapshot` +- Merged branch: `impl/00001KVMT2J25-inflight-snapshot` +- Implementation commits: + - `74aca6f6 fix: snapshot in-flight stream state` + - `061136d7 fix: close in-flight snapshot commit race` + +Orchestrator worktree validation: +- `cargo fmt --all --check`: passed +- `git diff --check HEAD^1..HEAD`: passed +- `cargo test -p protocol`: passed (`40 passed`) +- `cargo test -p pod --lib in_flight`: passed (`5 selected tests`) +- `cargo test -p pod session_log_and_in_flight_snapshot_prevents_mirror_only_assistant_gap`: passed +- `cargo test -p pod committed_assistant_snapshot_does_not_duplicate_in_flight_block`: passed +- `cargo test -p tui snapshot_in_flight_blocks_continue_with_live_deltas`: passed +- `cargo test -p tui`: passed (`367 passed`) +- `cargo check -p protocol -p pod -p tui`: passed +- `cargo run -p yoi -- ticket doctor`: passed (`doctor: ok`) + +Known unrelated validation note: +- Full `cargo test -p pod` was not repeated in Orchestrator after merge because Reviewer confirmed it still fails only on pre-existing prompt-resource assertions unrelated to this diff。 + +Final Orchestrator worktree status after validation: clean on `orchestration` at `b21638f5`。 + +--- + + + +## State changed + +Reviewer approval、Orchestrator worktree への統合、protocol/pod/TUI focused tests、cargo check、Ticket doctor が完了したため `done` に遷移する。 + +--- + + + +## State changed + +Ticket を closed にしました。 + + +--- + + + +## 完了 + +In-flight LLM response 中の reconnect / late attach snapshot に unfinished blocks を含める protocol/pod/TUI 実装を統合した。 + +主な成果: +- `Event::Snapshot` に typed `InFlightSnapshot` / `InFlightBlock` を追加。 +- Pod 側に assistant text / thinking / tool-call args の in-flight accumulator を追加。 +- Streaming callbacks が accumulator 更新と live delta broadcast を同じ stream path で行うようにした。 +- Connect-time snapshot が in-flight stream state を含むようにした。 +- Session-log mirror snapshot と in-flight snapshot、および finalized `AssistantItem` publish/clear の critical section を揃え、mirror-only assistant commit が snapshot/live boundary で消える race を防止した。 +- Finalized assistant item が committed snapshot に含まれる場合は matching in-flight state を clear して duplicate を防ぐ。 +- TUI snapshot restore が unfinished text/thinking/tool-call args blocks を seed し、後続 live deltas が同じ logical block に continuation されるようにした。 +- Serialization/default compatibility、snapshot/live no-gap/no-duplicate、TUI continuation の focused regression tests を追加。 + +統合・検証: +- Merge commit: `b21638f5 merge: inflight reconnect snapshot` +- Implementation commits: `74aca6f6`, `061136d7` +- Reviewer final verdict: approve +- Validation passed: `cargo fmt --all --check`, `git diff --check HEAD^1..HEAD`, `cargo test -p protocol`, `cargo test -p pod --lib in_flight`, `cargo test -p pod session_log_and_in_flight_snapshot_prevents_mirror_only_assistant_gap`, `cargo test -p pod committed_assistant_snapshot_does_not_duplicate_in_flight_block`, `cargo test -p tui snapshot_in_flight_blocks_continue_with_live_deltas`, `cargo test -p tui`, `cargo check -p protocol -p pod -p tui`, and `cargo run -p yoi -- ticket doctor`。 + +既知の無関係事項: +- Full `cargo test -p pod` は既存の prompt-resource assertion 2 件で失敗することが reviewer により確認済み。この Ticket の差分とは無関係。 + +---