Skip to content
About
Main content

Applying it screen by screen

The questions are those of the playbook Decide on consistency; "Isolation Q3" is from Choose an isolation level.

Screen / operation or needQuestion that decidesChoice
Bonus +100, transfer debitNo on a balanceQ1 ()SET balance = balance - x in one statement
Main + savings withdrawalbalance(main) + balance(savings) >= 0, a rule over two rowsIsolation Q3 (a rule over several rows: ), or a shared "household" row
Username creationUniqueness across regionsQ3 (fails the merge test)Linearizable in home region
First 1,000 promoUpper boundQ4 (split the budget)Token quotas per region, refill on demand
Balance screen (Singapore)Recent, not necessarily exactQ3 → no coordination (state a bound)Local with a 2 s staleness bound, alarmed on
Own-profile editSee my own writeQ3 → no coordination (session token)Token carried by the mobile client
Notes feedReply never before messageQ3 → no coordination ( order)Causal+ order; is acceptable only for display name
Reward pointsCounter that merges; never negativeQ1 and Q4; for redemption
Transfer confirmation shown across regionsFaster channel than replication (a phone call)Q5 ()Read that waits for the writer's token; external consistency for the confirmation flow
Merchant list behind a cacheThe cache is a new observerQ3 → no coordination (state the bound)State the TTL as the staleness bound; do not cache balances

The single most useful thing to carry forward is a question: