Skip to main content

Domain NFR defaults

Generic SDS “big four” live in Method. This page is the loan-market amendment.

NFRTypical consumer appThis domain
AvailabilityStale feed > errorUnavailable vote > wrong vote for submit
Scalability100M usersFewer users, huge correctness / audit / multi-tenant blast radius
Latency<500ms readsGrids must feel instant on entitled data; ingest can lag if the UI is honest
ConsistencyEventual OKStrong where money/positions/entitlements move; eventual OK for “notice arrived, processing” if labeled

CAP in bank English: stale position vs unavailable vote. Positions, entitlements, vote submit = CP. “Live progress dashboard” can be AP if it says it is approximate.

Cache amendment: the read path for a position used to vote or reconcile cannot be “whatever is in Redis.” Cache is behind “this is settled from the agent.” Show as_of / sync state.

Load shaping: don’t onboard three agent banks’ full history the same weekend as a voting deadline.

Sagas: no distributed ACID across agent-feed, your platform, and a lender’s book. Vote: validate entitlement → snapshot settled position → accept vote → emit downstream. If snapshot fails, do not accept the vote.

Extra boxes: idempotency, outbox, sagas, row-level authz, audit log, DLQ, observability on workers.