Files
KArtSell.Aegis/docs/CURRENT/V13-FE-034_IDEMPOTENCY_RETRY_CONTRACT_SLICE_NOTE.md
kjh2064 3f293d8aa8
deploy / deploy (push) Successful in 1m52s
deploy / notify (push) Successful in 1s
V13-FE-006: consolidate approved UI and contract hardening
2026-08-13 02:41:00 +09:00

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 same Idempotency-Key on repeated execution.
  • Optional If-Match is 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.