Conflict resolution is a business decision, not a technical one
A delivery made offline at 14:02 arrives at 17:00, against a job the office reassigned at 14:30. Every obvious answer to who wins is wrong, and the right answer is not a technical one.
Concepts from the proof, explained in my own words with code from my own systems.
A delivery made offline at 14:02 arrives at 17:00, against a job the office reassigned at 14:30. Every obvious answer to who wins is wrong, and the right answer is not a technical one.
I wrote the conflict resolver wrong the first time. Four tests went red in under a second and told me exactly what I had misunderstood.
A driver phone must hold a working credential for nine hours with no way to check in. The standard playbook does not work here, and pretending it does would be the first vulnerability.
The same allowlist, the same resolver, the same logic. Move one check after the other and an attacker can smuggle a price change through a genuine delivery.
Seven real defects found by running the system end to end rather than trusting six green test suites. The worst one reported success while writing nothing.
A pharmacy till has to keep selling when the internet drops, then reconcile without recording a sale twice. That constraint decides the whole architecture.
IoT vehicle locks speak a proprietary binary protocol over raw TCP. Riders speak HTTP. The operator dashboard speaks WebSocket. All three have to agree on the state of one physical scooter.
Tens of thousands of products from a third-party supplier, continuously synchronised. The bugs here are not in the fetch, they are in the clock.
A production marketplace responding in six seconds. The instinct is to suspect the sockets or add a server. Profiling said the database, and the fix cost nothing to run.
A retailer already ran their business on an external ERP. Building a customer platform in front of it means deciding, per entity, which system is allowed to be right.
A retail client wanted to rearrange their storefront without filing a ticket. That single requirement is what made GraphQL correct and REST wrong.
Holding money between two parties looks like a status field. It is a balance, a state machine, and a transaction boundary you have to draw narrowly on purpose.
Eighteen models in TypeScript over SQL, handed over to be moved to a new stack. The rewrite came out with sixteen, which is the number that mattered.
Letting clients define their own content types means storing schemas as data. That buys instant onboarding and hands back things the database used to do for you.
What is near me is the query a discovery platform lives on. Where you compute it decides whether the product still works once the catalogue is worth having.