For product owners and integrators
Changelog and rating matrix history
What changed, and when. The rating matrix comes first, because a quote recorded today may need explaining in two years, and the explanation starts with which prices applied. Everything below the matrix is taken from the repository’s own history.
Rating matrix
Every version of the prices
Every recorded entry carries the matrix_version that priced it, and that field is
inside the entry’s hash, so it cannot be changed afterwards. The fingerprint is the SHA-256
of every price, one line per component (vertical|code|cents), sorted; recompute it
from GET /api/v1/verticals or with node tools/matrix-fingerprint.mjs.
A test fails if a price changes without a new version and a new row here.
| Version | In force | What changed | Fingerprint |
|---|---|---|---|
2026.09.1 |
12 September 2026 to date | First published matrix: four verticals, each a mandatory base layer and four optional modules, 20 prices. Mock rates for validation, not offered to anyone. | 06918cd51b6df7c637a972af673957f05a9f7f246aaed5a6f5c49e270aadd600 |
The first 43 entries in the ledger, recorded on 12 September 2026 before the version field existed, carry no version. They were priced by the same rates: no price has changed since the engine was first deployed that day.
Changes
What changed, most recent first
23 September 2026
- The 13 September head is timestamped in Bitcoin (block 967830 and later), via three OpenTimestamps calendars. Heads are now anchored weekly by an automated workflow. Verify
- Single-entry proofs: show one quote to a regulator or a customer without revealing any other. Verify
- Every API error links to the row of the API reference that explains it; ten codes that had no row now do.
- A Postman collection generated from the OpenAPI spec, and a “try it” panel on the API reference.
- Fixed: a browser on riskrouter.eu could not send an API key to the API, so the live console could price but never record.
- Security headers on the site and the API, a hash-based Content-Security-Policy,
security.txtand a disclosure policy. - A continuity and exit plan, with the facts a DORA register of information needs.
- Three guides for distributors, a share image per page, and the ledger’s live head on the home page.
- Campaign links are counted without cookies, storage or third parties. What is counted
22 September 2026
- Self-serve sandbox keys: take one on screen with nobody in the loop. Get a key
Idempotency-Keyon recorded quotes: a retried request can never create a second ledger entry.- An OpenAPI 3.1 description of the API, kept identical to the running routes by a test.
- Check your own export in the browser on /verify, with nothing uploaded.
- Fixed: a keyed quote whose ledger write failed still reported
attribution.recorded: true.
20 September 2026
- Distributors can export their own entries, the chain they sit in and the signed head, and verify it without us.
- The public verifier repository went live.
- Heads first submitted to OpenTimestamps calendars.
- A “break it yourself” demonstration of the chain on /verify.
- Rate limit on the export, the one route that had none.
19 September 2026
- The platform moved to riskrouter.eu, with a published contact address.
13 September 2026
- Attestations of the ledger head are signed (ECDSA P-256), so a head someone saved cannot be disowned.
- Ledger writes are attributed to a distributor, and the attribution is inside the entry’s hash.
12 September 2026
- The ledger becomes tamper-evident: every entry is SHA-256 hash-chained to the one before it.
- First version of the engine, the audit ledger and the demo console. Rating matrix
2026.09.1.