Queues, workers, dual-writes, matching logic staging never reproduces.
The twin includes workers and queues. Production webhooks are blocked.
Impatient retries and multi-tab checkout become deterministic scenarios.
Matching logic that depends on queue order will not show up if staging skips workers.
- 01listings.createdweb → queue
- 02matching.workerqueue → worker
- 03api.partners.testworker → partner · denied
Services, queues, and workers are a dimension staging drops.
Queues in the twin. Simulated streams so dual-writes and retries are visible.
Webhook containment. Production partner webhooks are blocked and written to the attempted-effect ledger.
Retry personas. Impatient users and API clients become deterministic scenarios.
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.
- 01buyer_18cin-flightjoined
- 02buyer_44aactivejoined
- 03buyer_09flong-tailmiss
- 01seller_northlisting openjoined
- 02seller_helixlisting openjoined
- 03order_992join validmiss
Duplicate events, missed matches, and irreversible writes in the oracle.
Rolling deploys. Old and new schema coexistence is exactly what a disposable twin is for.
Duplicate events. Visible when workers actually run.
Compare. The oracle diffs the twin's writes against the baseline run.
Baseline
Candidate
Know what happens before you deploy.
Create a disposable production twin for every risky change. Catch migration failures before they reach customers.