All packsOffline Sync EngineSolve
postgres advisory lock serialize transaction commit order race
Two transactions can take sequence numbers out of commit order
Transaction A takes sequence 100, transaction B takes 101 and commits first -- a client that pulled through 101 never sees seq 100, because nothing serialized commit order against sequence order.
This is one of the things Offline Sync Engine already handles. Let your app keep working with no internet, then merge the changes correctly when it reconnects.
Is this you?
If two push transactions run concurrently, transaction A might grab sequence number 100 while transaction B grabs 101 -- and then B commits first. A client pulling changes in sequence order, having already paginated through 101, has no reason to go back and check for 100: from its perspective it's already past that point, but transaction A's row commits moments later at a sequence number the client has already scrolled past and will never revisit.
Why this one is easy to get wrong
Handing out sequence numbers via a database sequence and letting transactions commit whenever they finish is the default, low-friction way to build a paginated feed, and it works correctly under light load where transactions rarely overlap -- the race is a genuine concurrency bug that only manifests under simultaneous writes, which single-threaded manual testing essentially never produces.
What you get instead
The pack pins a single fix rather than leaving this as an open risk: every push transaction opens with SELECT pg_advisory_xact_lock(4217), serializing all pushes through one lock so sequence order and commit order become the same thing by construction. The documented ceiling is real -- this caps push throughput at roughly hundreds per second -- and the pack states the upgrade path explicitly (fencing pulls at the oldest in-flight transaction) rather than suggesting the lock be removed to fix throughput.
Source: ARCHITECTURE.md 'Pagination (decided)' — checkable in the pack you receive
How you actually use this
You don’t install a library or wire up an SDK. Your own coding agent builds the code in your project, and you keep it — no runtime dependency on us.
Step 1
Download and unzip
You get a folder: the docs that tell an agent what to build, a starting skeleton, and the test suite that decides when it's done.
Step 2
Open it in Claude Code or Cursor
Point your coding agent at the folder. Nothing to install, no account with us, no API key.
Step 3
Paste one prompt
The pack contains the exact prompt. Paste it as your first message and leave it alone — it works through the build itself, choosing a cheaper or stronger model per task.
Step 4
Run ./verify.sh
One command. It prints a pass or fail for every check. Green means the build is done — the same script we ran to produce the receipt on this page.
Typical build: about 12 minutes of your agent working, mostly unattended. Then you integrate the working module into your app the way you would any code you’d written yourself.
Why you can believe this
2 of 3 runs passedWe ran this pack from an empty folder 3 times and published exactly what happened — every check, the model, the token cost, the wall time. Not a testimonial, and not our opinion: the same verify.sh you run yourself. Read the full receipt →