Evidence
What we ran on 2026-11-02. All of it is our own testing, not an independent review.
Live suite: 19 of 19
verify_qaas.py (public, also in the Hugging Face Space) run against the production cluster with a test
account's key:
| Check | Result |
|---|---|
| Cluster HEALTHY, N=4 f=1 quorum=3; membership hash published | pass |
| No API key → 401 | pass |
5 bad digests (abc, short, non-hex, empty, ../../etc/passwd) → 400/422 | pass |
| Notarize → NOTARIZED in 2.6 s; receipt is for my digest | pass |
| Server verify and offline verify (pinned) → NOTARIZED | pass |
Same request_id → idempotent replay, same sequence | pass |
| Forged: digest swapped, sequence changed, one commit signature corrupted, one vote removed, membership replaced (wrong pin) | all rejected |
| Server verify rejects a changed sequence | pass |
New forgery kit: 17 of 17 rejected
qaas-forgeries.py builds 17 forged receipts from the real one and runs the standalone verifier on each, pinned to the live cluster. Run from files downloaded from this site:
| # | Forgery | Verdict |
|---|---|---|
| 0 | Control: the real receipt | NOTARIZED |
| 1 | One validator's vote filed a second time under another validator's name | NOT_VERIFIED |
| 2 | A vote relabelled as another member (sender id swapped) | NOT_VERIFIED |
| 3 | Third vote signed by an outsider key embedded in the vote | NOT_VERIFIED |
| 4 | A PREPARE vote passed off as a COMMIT vote | NOT_VERIFIED |
| 5 | Extra vote from a non-member id | NOT_VERIFIED |
| 6 | Certificate view changed | NOT_VERIFIED |
| 7 | Quorum lowered to 2, with 2 votes | NOT_VERIFIED |
| 8 | Operation digest differs from receipt digest | NOT_VERIFIED |
| 9 | Leader proposal attributed to a non-primary | NOT_VERIFIED |
| 10 | PREPARE certificate removed | NOT_VERIFIED |
| 11 | COMMIT certificate null | NOT_VERIFIED |
| 12 | Sequence as a string | NOT_VERIFIED |
| 13 | Signature with extra padding (malleated encoding) | NOT_VERIFIED |
| 14 | request_id changed | NOT_VERIFIED |
| 15 | client_id changed | NOT_VERIFIED |
| 16 | Receipt type changed | NOT_VERIFIED |
| 17 | Whole cluster re-signed with the forger's own 4 keys, for a digest never notarized | NOT_VERIFIED (caught by the pin only) |
Unit tests
tests/test_quorum_qaas.py: 21 passed, including 5 added today for the verify route: a forged cluster is
rejected with no pin, a real receipt still verifies with no pin, an explicit pin is honoured, and an unknown
membership fails closed with 503.
Cluster health today
| Time (UTC) | Status |
|---|---|
| 2026-11-02 04:23 | DEGRADED 1 replica unreachable (cain-mr2-node-3, Miami). 3 of 4 still form a quorum, but there is no margin for another failure. |
| 2026-11-02 04:53 | HEALTHY |
Files and hashes
| File | SHA-256 |
|---|---|
| verify_qaas_receipt.py | ddefc7c29bcd7a0c0af7bf8d81bdf7dba87b4095443e2a4c4e0afa372f43937d |
| verify_pbft_qc_bundle.py | 1d90370f3ab7270d95b4c104f2dda318ea9b21fe062c99da9b58d78da9234132 |
| qaas-forgeries.py | dd5be0a634135177965c63854036b5d1c94fdb80c2e3e33563cced782595fe14 |
| qaas-evidence-2026-11-02.json (full output) | 5f2f0b4d4fb6d288e972bac4a3795175e1d3789a32b99b1e06f137d6aa1a6534 |
| verify-yourself-receipt.json (the sample receipt) | cc1a0bc6e6e640b0bb7b25d9e3d98aeee4d4469b8d05a89cada4307b4c779c6b |
| qaas-kit-SHA256SUMS | hash list for the first four |
FIRME AI CORPORATION · CAIN-42 is a Byzantine trust fabric. Numbers marked "our own check" were run by us, not by an independent party. Nothing on these pages is a certification.