fix(coding): preserve renderer recovery state

This commit is contained in:
2026-08-23 22:27:21 +08:00
parent 36626c88b5
commit 1abb2fff36
3 changed files with 125 additions and 7 deletions

View File

@@ -102,6 +102,12 @@
discard, per-target sequence/generation-gap recovery, load single-flight,
and connection-generation protection. Reconnect never replays a prompt and
an obsolete connection flight cannot clear a newer one.
- Closed the planner review's two P1 recovery windows: patches arriving while
a target GET is in flight are buffered only for that invalidated Conversation
and replayed in generation/sequence order after a valid Snapshot; unresolved
pending/accepted/uncertain prompt requests re-overlay their local optimistic
nodes after snapshot-first reconnect until a durable `clientRequestId`
reconciliation arrives. Neither mechanism replays a mutation.
- Added optimistic user nodes keyed by `clientRequestId`. Durable upsert keeps
the optimistic UI node id; definite rejection restores an untouched draft
and marks the node failed; uncertain delivery restores the draft while
@@ -122,7 +128,9 @@
## Verification
- `pnpm exec vitest run tests/unit/coding-conversations-facade.test.ts tests/unit/coding-conversations-store.test.tsx`:
2 files / 12 tests passed.
initial implementation 2 files / 12 tests passed; after review fixes, 2 files
/ 13 tests passed, including delayed gap GET + concurrent patch replay and
reconnect Snapshot optimistic-node continuity.
- `pnpm exec vitest run` for the two PI-110 tests plus PI-010 contracts,
coding core routes, event projector, Conversation runtime, product tools,
and subagent suites: 8 files / 75 tests passed.
@@ -140,6 +148,11 @@
- Real Provider remains Explicitly Waived / Accepted Risk with
`realTurnVerified=false`. macOS x64/arm64 remains deferred to mandatory
PI-150. Neither is recorded as Pass.
- Planner review of `a072257...36626c8`: Standards PASS / 0 findings; Spec
Needs Fix with two P1 findings for recovery-window patch loss and reconnect
Snapshot optimistic-node loss. Both independent reproductions were accepted
and fixed locally with the focused regressions above; fixed-range re-review
remains required before PI-110 can be marked Done.
## Follow-ups