Conformance
Synfin is an open standard, so "conformant" has to mean something specific. This page states exactly what is checked today and what is not yet, no badge that outruns its evidence.
What conformance checks today
The conformance runners are property-based and check the standard's in-process ports, the shapes and invariants an implementation must honor, before anything claims to be Synfin-conformant:
- Adapter conformance (
runAdapterConformance): aVenueAdaptermust declare a settlement mode the spec recognizes, quote deterministically, keep itsvenueIdconsistent, and reject malformed amounts and assets rather than invent a quote. - Router conformance (
runRouterConformance): the routing port must rank and select venues to the spec's rules over adversarial inputs.
These runners are how the reference implementation keeps itself honest. They throw on the first violation, so they drop into any test runner.
What conformance does NOT check yet
Stated plainly, so the meaning is not overstated:
-
The runners verify in-process ports, not the
live hosted API. A green in-process result does not by
itself assert that a given deployment's
/api/*surface conforms. -
The standalone
@synfin/conformancenpm package is deprecated (Synfin is now a hosted API). Do not build an integration around installing it.
The roadmap: live-API conformance
The trust artifact an integrator will point at is a
live-API conformance runner that exercises a deployment's real
endpoints against the published contract (/openapi/v1.yaml): the
x-synfin-api-version header, the response schemas, the
{ error, code, action? } error shape, and the on-ledger guarantees
(the memo floor enforced, not just disclosed). When that ships, a green result
will assert "this deployment conforms," which is the claim worth making. Until
then, the honest statement is the one on this page.
What you can rely on now
Independent of the conformance runner, these hold on the live API today and are the guarantees to build against:
- On-ledger minimum.
minReceiveis computed server-side and enforced on-ledger via the deposit memo; a bad quote aborts and funds never leave the wallet. - Non-custodial. Synfin holds no keys and drives no ledger; your wallet signs and sends.
- Stable contract. The wire is versioned (
x-synfin-api-version) and documented in /openapi/v1.yaml; the API reference is generated from it.