A thin orchestrator over a strict core.
orvacon is a state machine wrapped around connectors. The core owns money typing, persistence, idempotency and signing; connectors only translate to a gateway. Here's how a payment moves through it.
One payment, persisted at every step.
Each transition writes to the database before the next call. A crash or retry resumes from the last persisted state — never from a guess.
Invalid transitions don't type-check.
PaymentState is a discriminated union and the legal moves between states are encoded in the types. You can't capture a refunded payment — the compiler stops you before runtime does.
Append-only, and it proves it.
Each ledger entry carries the hash of the entry before it. Change a past row and every hash after it stops matching — tampering is evident without trusting anyone.
See it in the source.
Every boundary on this page is a real module you can read, fork and run. No hidden services, no magic.