Billing, ledgers, and side effects that must never hit live processors.
The firewall simulates Stripe. Safe State masks account identifiers.
The oracle compares ledger writes.
Duplicate events are incidents. They belong in a report, not in production.
- 01twin.app.internalPOST /checkoutorigin0.4ms
- 02af-proxy:8443egress ruleinspect1.1ms
- 03stripe.pack.local412bPOST /v1/chargesmockledger
- 04api.stripe.comlive processordenyrefused
The charge is written to a clone-local ledger. api.stripe.com never resolves.
Charging a card from a twin is an existential failure.
The mode is set per host. block, allow, capture, mock, sandbox or synth, written against the host in antifailure.yaml.
Nothing leaves without a rule. Egress defaults to block, so a processor nobody configured is refused on its first run rather than passed through.
The ledger records the decision. Each attempt is stored with the mode that decided it, so the reason a request never left is readable afterwards.
A host with no rule is blocked on first contact.
Containment is the product surface.
Ledger comparison. The oracle compares writes, events, and third-party effects against baseline.
Irreversible writes. Candidate billing events that old code cannot reconcile show up before ship.
Mid-market first. Technically sophisticated billing teams. Not a regulated-enterprise procurement motion.
Twin ledger
in-boundary- chg_184$49.00POST /v1/charges
- chg_185$49.00retry checkout
- inv_044$0.00refund path
Live processors
- api.stripe.com
- api.sendgrid.com
- hooks.slack.com
- api.prod.internal
TTL contained. Processors never resolved.
Not a warning. A failed containment model.
There is no warning level for this. A twin that reaches a live processor has not failed a check. Its containment did not hold.
The customer finds out. A real card, a real inbox and a real partner endpoint are the three places a contained run becomes somebody else's incident.
So the default refuses. A host with no rule against it is blocked, which is the only default that stays safe as the integration list grows.
Attempted-effect ledger
LNS 04
Twin run 08f2
must never · fail closed
- 01MOCKSTRIPEPOST /v1/charges $49.00
- 02CAPTURESENDGRIDrender invoice.paid.html
- 03CAPTURESLACKwebhook preview stored
- 04DENYHOSTNAMEapi.prod.internal
3 contained · 1 denied · 0 charged
Know what happens before you deploy.
Create a disposable production twin for every risky change. Catch migration failures before they reach customers.