Status: not commissioned. No reviewer, firm or university group has been engaged and no budget has been set. Nothing on this site claims an audit, a certification or a formal proof. This is the brief we would send, so that whoever reviews Mirror reviews the claims that matter, against the evidence that already exists.
1. Why a review, and why this one#
Every claim Mirror makes is meant to be checkable by the reader: a published spec, signed records anyone can verify offline, and a test suite that fails the build when a refusal stops holding. That is necessary and not sufficient. Tests written by the author share the author's blind spots. A bank's model-risk team, and the strategy reviews this project has received, ask the same thing: has anyone without a stake looked?
This brief asks for a bounded review of the claims that, if false, would make the product dangerous rather than merely weaker.
2. The claims under review#
| Ref | Claim | Where it lives | What would falsify it |
|---|---|---|---|
| C1 | The operator cannot learn a value or a band from what it receives | kernel/mirror-kernel.js (commitLeg), the wire guard in server/core.js, Boundary 5 of the register | Any route accepting a raw field; a commitment invertible without the corridor secret; a field leaking the band |
| C2 | Ambiguity never clears: malformed, missing or contradictory input ends undetermined or divergent, never reconciled | reconcile, the independence gate, the verdict rule (/verdict-certificate.json) | Any input that reaches reconciled without every required leg agreeing and the gate met |
| C3 | Every signed record verifies offline, and a record cannot be altered without its signature failing | kernel/envelope.js, kernel/mirror-sign.js | A canonicalisation ambiguity; a field outside the signed bytes; a verifier accepting a high-S or wrong-curve signature |
| C4 | The transparency log is append-only: a consistency proof cannot be produced across a rewritten history | kernel/mirror-anchor.js | Two trees with a valid consistency proof where the older is not a prefix |
| C5 | The refusals hold: no score, no filing decision, no volume fee, no invented price, no custody | kernel/mirror-cannot.js, and the code and test each of its 39 refusals names | Any route or record that produces one |
| C6 | Two independent implementations produce identical bytes | The conformance vectors, server/sdk-polyglot.test.js | A vector the reference and an independent implementation answer differently |
| C7 | A release rebuilds byte-for-byte from source | server/reproduce.js, the provenance statement | A subject that does not rebuild identically on a clean machine |
Out of scope: commercial claims, the website's design, the hosting providers' own security, and anything a bank does inside its perimeter.
3. What we would hand over#
- The full source of the release under review, its provenance statement and its software and cryptographic bills of materials.
- The protocol specification and the boundary register, including every limit the project already admits.
- The conformance vectors and the instructions to run the whole suite (
node kernel/test.js) and the reproduction (node server/reproduce.js). - Write access to nothing. The reviewer runs everything on their own machines.
4. What we would ask back#
- For each claim: held, held with conditions (stated), or failed (with a reproduction).
- Any finding outside C1–C7 the reviewer considers material.
- Permission to publish the report in full, including failures, beside the threat-model review history. A finding is fixed with a test that pins it, and the fix is listed there.
5. What it would and would not let anyone say#
A clean report would let a bank say that a named, independent party checked these seven claims on this release. It would not be a certification, it would not cover later releases, and it would not make Mirror catch collusion (Boundary 3) or a scheme its tables cannot see (Boundary 1). If a report is ever published, this page will link it; until then, this page is the whole of what exists.
See also the zero-knowledge commission brief, the one cryptographic extension Mirror will not hand-roll.