Releases: PNX89/QUIDZ
Releases · PNX89/QUIDZ
Release list
v0.1.0
Added
quidz.money: integer minor units with a currency, ISO 4217 exponents for zero-decimal and
three-decimal currencies, and arithmetic that raises across currencies.quidz.clock: the single wall-clock boundary, with aFakeClockthat records what was slept
so no test needs a real sleep.quidz.verify: Stripe signature verification over the raw request bytes, with multiple active
v1secrets for rotation, every non-v1scheme discarded, and a 300 second default tolerance
checked at receipt time. Adyen HMAC verification over the colon-joined signing string, with
\and:escaped inside field values and the hexadecimal key decoded before use.quidz.events: Stripe and Adyen payloads to oneCanonicalEvent, with delivery identity taken
from stable identity fields and the Adyen(eventCode, success)pair mapped as a pair.quidz.model: the payment aggregate, amount conservation invariants, a monotonic state rank,
and a status derived from the amounts rather than stored.quidz.store: SQLite schema with two composite unique constraints, WAL plusbusy_timeout
plusforeign_keysplussynchronouspragmas, andwrite_txasBEGIN IMMEDIATEthat
refuses to nest.quidz.inbox: claim with a lease, park, drain, and a global retry budget; the claim row and
the ledger effect commit in one transaction.quidz.ledger: transactional application of one canonical event, with the duplicate path
decided by the unique index rather than by a prior SELECT.quidz.reconcile: the thirteen-member drift taxonomy, the two-source classifier, a fail-closed
gate scoped to the affected payments with materiality thresholds and an audited break-glass,
and stable JSON and text report renderers.quidz.dlq: typed reason codes, full-jitter bounded backoff from an unpredictable generator
that only a test seeds, and anunknowndefault that is retryable with a cap.quidz.sim: a synthetic provider with seven break modes, a payment list and a settlement
report, generating no card-like data.quidz.metrics: twelve operational counters as an allowlist.quidz.cli:quidz demo,quidz replayandquidz reconcile, with the exit-code contract
documented in the README.quidz.app: an optional FastAPI adapter behind theserverextra, the only module permitted
to import a web framework.- 140 tests, deterministic and network-free, including an import-boundary scan, a forced INSERT
race across eight threads, and a 20 permutation seeded replay of one event stream. mypy --strictover the package and the tests on every interpreter leg, so thepy.typed
marker the wheel ships is a checked promise rather than an asserted one.