Specification before code
The requirements register and the database definition were written and proven against a real database before the application existed. The schema is treated as law, and no rule in it is ever weakened.
Assurance
Every claim on this site has a named source in the ledger repository, a date, and a check that keeps it true. This page says how the ledger was built, how it is verified and how it is secured. It also says what has not been done.
How it was built
The requirements register and the database definition were written and proven against a real database before the application existed. The schema is treated as law, and no rule in it is ever weakened.
Application code cannot reach the journal directly. Every posting and every settlement goes through one of two database functions that check, lock and write in a single step.
Work could not proceed past a stage until an independent internal auditor had re-run every claim live. The first gate was refused, and that refusal is published.
A check must be shown to catch a known defect before its clean result is trusted.
The audits were conducted by an independent internal audit function at RODMENA that did not write or merge the application code. No external body has reviewed the ledger, and the company says so wherever the audits are mentioned. The audit history page lists the complete history and every finding. See the audit history page.
Continuous verification
Re-counted from the repository before each release of this site. A figure older than 120 days fails the build.
112
automated tests
Run over real PostgreSQL and real HTTP against a running service, never a mock.
101
database certification probes
Schema-level probes that must all pass before a migration is accepted.
54
live probes against the running service
Each proves a known-positive before it asserts an absence, and tests every guard in both directions.
4
internal audit gates
Gate A schema fidelity, Gate B money path, Gate C workers and reads, Gate D readiness. An independent internal auditor signed them off one at a time, and work could not continue until a gate was signed.
194,432 / 0
requests served / errors in the ten-minute load test
Ten minutes of sustained traffic with zero errors, and the books reconciled clean afterwards. The run was not measured on reference hardware, and no latency figure is published.
Figures re-counted from the ledger repository on 2026-09-05. Every audit was internal, by an independent internal auditor. How the numbers are produced.
cd ~/develop/ledger && .venv/bin/python -m pytest --collect-only -q tests/ | tail -1grep EXPECTED_PROBES= audit/evaluations/schema-probes.shgrep -oE 'probe_[a-z0-9_]+' audit/evaluations/run_all.sh | sort -u | wc -lTesting doctrine
Load and failure testing
10 minutes of sustained traffic at a target of 500 requests a second. No request failed, and the reconciler reported clean books afterwards.
With hundreds of transactions in flight the service process was killed without warning. Afterwards there were no partial writes, no double-applied entries, and the books were consistent.
Told to stop mid-storm, the service finished every request in flight, refused none, and left the reconciler clean.
These runs were on a shared machine, not reference hardware. That is why no response-time figure appears anywhere on this site. It would be a number about the wrong computer.
Security model
Keys are issued by the company authorisation service. The ledger holds no secret capable of producing a credential it would accept, and a probe asserts that continuously.
Row-level isolation is enforced inside the database, and it fails closed. A request that arrives with no valid boundary is refused.
A partner key cannot move money, and a posting key cannot create tenants. Revocation takes effect immediately, and the ledger enforces expiry itself.
If the authorisation service is unreachable, the ledger says so and does not pretend a valid key is invalid.
Request floods are refused before they reach the service. An oversized request is refused in the same error format the API uses for everything else.
The figures on this site are re-counted from the repository and dated. A stale figure fails the site build.
Company-level assurance lives on rodmena.com, which holds the Trust Centre, the security whitepaper, service and support, exit and portability and data processing. RODMENA holds no ISO 27001 or SOC 2 certification today and publishes its certification roadmap there.
Due diligence
Every round is dated and shows the number of findings and what happened to them.
The GOV.UK Gate 4 review areas, mapped honestly to what a buyer can verify today.
Send your due-diligence questionnaire or your own test plan. We answer with evidence, and we say plainly when the answer is no.