1.3 KiB
1.3 KiB
V13-FE-034 — Idempotency retry contract
Source / Assumption / Unknown / Decision Required
- Source:
frontend/src/shared/commands/idempotency.ts,frontend/src/shared/crud/useOptimisticCommand.ts, and their characterization tests. - Assumption: one
createRequest()represents one user intent; every retry reuses that immutable request envelope. - Unknown: each production command's server-side deduplication store, response replay contract, retention, and endpoint coverage.
- Decision Required: BE/QA approval of per-command idempotency persistence and duplicate-side-effect evidence.
Existing contract verified
- UUID key is generated once per intent.
run()sends the sameIdempotency-Keyon repeated execution.- Optional
If-Matchis forwarded for optimistic concurrency. - 409/412 sets the conflict state and pending state is cleared.
- Concurrent execution is rejected while a command is pending.
Evidence
pnpm test -- src/shared/crud/tests/useOptimisticCommand.spec.ts: 1 file / 2 tests passed in the FE regression run.- Full FE regression: 49 files / 126 tests passed; typecheck passed.
Outstanding
This proves the client boundary only. Server-side deduplication, replayed response equivalence, retention, and per-endpoint integration evidence remain outstanding. This Slice is IN_PROGRESS.