fix: isolate attachment submission state

This commit is contained in:
2026-08-24 01:50:04 +08:00
parent bec93d0918
commit 1ca0249e69
8 changed files with 320 additions and 21 deletions

View File

@@ -151,6 +151,14 @@
behind a buffered continuous tail, Renderer requests one fresh target
Snapshot; a repeated identical stale response becomes a retryable error
instead of remaining in an infinite recovering state.
- Closed the incremental planner review findings after `bec93d0`: attachment
editing is locked for the originating Conversation until upload and HTTP 202
acceptance settle, so removal or a next-message paste cannot mutate the
captured image set. Attachment preparation failures now remain local to the
Composer, restore the draft, permit direct retry without runtime recovery,
and retain already uploaded variants for reuse. Attachment route failures use
only registered `CODING_ATTACHMENT_INVALID`, `CODING_ATTACHMENT_NOT_FOUND`,
and `CODING_STORAGE_WRITE_FAILED` codes while preserving 413/404 status.
- Synchronized `README.md` with the current Pi core Chat, first-Conversation,
batch and attachment behavior. PI-130 feature controls and PI-140 legacy
removal remain outside this task.
@@ -161,6 +169,10 @@
**Standards Needs Fix / Spec Needs Fix**. PI-120 remained the unique Ready
Frontier; the findings above were treated as blocking rather than advancing
PI-130.
- The correction candidate `bec93d0` received incremental planner review result
**Standards PASS / Spec Needs Fix**. Its three remaining attachment-state and
typed-error findings were implemented and kept PI-130 locked pending another
planner review.
- Post-review focused suites passed: attachment Host routes, stale recovery,
shared ProjectService/Registry mutation queue, slow Agent switch, cross-
Conversation submission isolation, attachment count/concurrency and pressure
@@ -171,7 +183,11 @@
20 React commits, 131,148 wire bytes, and measured Main-to-React p95
`35.995 ms` against the `<=50 ms` budget. It includes mixed message blocks,
4 KiB tool output and more than 100 KiB of cumulative thinking output.
- `pnpm test`: passed, 218 files / 2316 passed / 2 skipped.
- Latest attachment-state focused run passed: 3 files / 39 tests, including
delayed upload/removal, delayed HTTP 202/next-image isolation, local
preparation failure/direct retry, uploaded-variant reuse, and registered
Host error codes.
- `pnpm test`: passed, 218 files / 2321 passed / 2 skipped.
- `pnpm run typecheck`: passed.
- `pnpm run lint:check`: passed with 0 errors and six unchanged warnings in
`ExecutionGraphCard`, `Home`, and `Makelore`.