Close the duplicate-submit gap after a slow response
A 15-second response prompts a refresh and second submission. Finance receives two approval requests. Coordinate submission identity with saved revisions and uncertain responses.
- Focused work estimate
- 3h 15m + prerequisites
- Priority in the scenario
- High
- Engineering practice
- Idempotency · Concurrency · Workflow integrity
Estimated field mix
- Frontend60%
- Distributed systems40%
Field percentages are editorial estimates of the ticket's engineering focus. They total 100%; they are not measured time, proficiency scores, or ownership evidence.
Review it, then add it to your workspace.
The board opens an editable draft; nothing is saved until you confirm it. Sign-in and workspace permissions apply, and Demo boards remain ephemeral.
Project context
The fictional Beacon operations team buys equipment through a browser form. Finance checks totals, departments, and quotes. Scope is one currency per request and an approval API contract; payments and accounting integration are excluded.
Setup prerequisites
- Synthetic department and cost-center directory
- Draft, submission, and approval API fixtures
Preceding work
Complete these dependencies, or supply their agreed outputs before taking this ticket.
- FORM-102 · Make the total match the submitted line items
- FORM-101 · Point requesters to the field that needs fixing
- FORM-103 · Clear an orphaned cost center when department changes
- FORM-104 · Save drafts without overwriting a second browser tab
- FORM-105 · Show attachment quarantine and upload recovery clearly
Acceptance criteria
- Submission waits for acknowledgement of the exact displayed draft revision.
- One revision reuses a durable operation key across refresh and retry.
- Uncertain results use status lookup; edits cannot silently reuse the old key for a different revision.
Implementation constraints
- Use the idempotency/status contract; disabling the button alone is insufficient.
Verification to include
- Drop the accepted response, refresh, and retry; one logical submission exists under the same operation key.
- Edit during failed autosave and submit; no unsaved or mismatched revision is sent.
Deliverables
- Submission coordinator and refresh-after-timeout test
Rollout and recovery
Pilot with one queue and inspect operation conflicts; disable new submissions on reconciliation failure while preserving drafts.
Value of the work
For the engineer: Practice form modeling, exact totals, revision handling, and collaboration under failure.
For the team: Inspect whether a developer protects business workflows from duplicate, lost, or misleading submissions.
Evidence boundaries
Outcome Evidence: Tests, patches, and runbooks are requested deliverables. They become Outcome Evidence only through a qualified Mission and immutable Evidence IDs.
Ownership Evidence: Independent adaptation must be observed under a declared verification policy and cite immutable Evidence IDs. Completing a planning ticket establishes no Ownership Evidence.