Make plan switching and seat allocation share one consistency boundary
A downgrade races a seat invitation; both requests pass their reads and leave more active seats than permitted.
- Focused work estimate
- 6h + prerequisites
- Priority in the scenario
- High
- Engineering practice
- Transactions · Concurrency
Estimated field mix
- Database engineering60%
- Backend40%
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
A fictional document service grants storage and collaboration rights from subscriptions. Support cannot explain why delayed events restore old limits.
Setup prerequisites
- Create a local subscription API with synthetic accounts.
- Understand transactions and UTC intervals.
Preceding work
Complete these dependencies, or supply their agreed outputs before taking this ticket.
Acceptance criteria
- Serialize competing allowance and allocation changes per account.
- One conflicting request returns a retryable conflict.
- A failed transaction leaves both seat count and rights unchanged.
Implementation constraints
- Document the invariant and chosen locking order.
Verification to include
- Run a two-client barrier test for downgrade versus invitation.
- Force transaction rollback and check both tables retain prior values.
Deliverables
- Transactional guard and concurrency reproduction
Rollout and recovery
Introduce with lock-wait monitoring; revert command routing if contention exceeds the documented local budget.
Value of the work
For the engineer: Practice temporal rules, concurrency and explainable API decisions.
For the team: Review whether entitlement changes preserve customer access and produce supportable decisions.
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.