Skip to content
Solutions · Marketplaces

Test the whole order flow, including the workers.

Run services, workers, and queues together in an isolated environment.

Exercise retries and repeat submissions with workflows your team defines.

Check matching, notifications, and settlement before releasing a change.

Trace · matching.worker
3 hops · 1 denied
  1. 01
    listings.created
    web → queue
  2. 02
    matching.worker
    queue → worker
  3. 03
    api.partners.test
    worker → partner · denied
Timing is the bug

Give background jobs a place in your pre-deploy checks.

  • Queues in the twin. The broker runs in the twin, with its topics and consumer groups created in its own image and no production messages copied.

  • Webhook containment. Production partner webhooks are blocked and written to the attempted-effect ledger.

  • Retry personas. Impatient users and API clients become deterministic scenarios.

Clone-local queue
t0 → now
listings.created
t+00:02
orders.paid
t+00:07
match.attempt
t+00:11
notify.worker
t+00:14
partner.webhook
blocked
00:0000:06now00:18
3 pass1 warn1 block
Restore both sides

Buyers, sellers, listings, and in-flight orders as a referential subset.

  • Both sides of the market. Buyers and sellers restored together, so a match has something to match against.

  • Run the workers. Matching, notify, and settle against clone-local queues.

  • Contain partners. Each partner host carries its own mode in the manifest, so the ones the twin simulates and the ones it refuses are written down rather than assumed.

Referential subset
2 joined · 1 miss
Buyers
match
Sellers
  • 01
    buyer_18c
    in-flightjoined
  • 02
    buyer_44a
    activejoined
  • 03
    buyer_09f
    long-tailmiss
miss
  • seller_north
    listing openjoined
    01
  • seller_helix
    listing openjoined
    02
  • order_992
    join validmiss
    03
buyer_44a ↔ seller_helix1 miss
Compare

Catch missed matches and inconsistent order state.

  • Rolling deploys. Test the previous release against the updated schema.

  • Duplicate events. Check outcomes after background jobs finish.

  • Compare. The oracle diffs the twin's writes against the baseline run.

Oracle · dual-write
old worker / new worker

Baseline

Candidate

queued
listings.created
queued
listings.created
match.ok
orders.paid
match.miss
orders.paid
sent
notify.worker
skipped
notify.worker
Branched database
one row the oracle returns
miss
rowbasecand
order_992okmiss
Next

Bring your next pull request.

See how Antifailure would test your stack, what it would check, and the evidence your team would review before merging.