# Commission brief: an independent review of the kernel

**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](/boundary-register.md) | 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](/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](/threat-model-reviews.md). 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](/commission-zk.md), the one cryptographic extension Mirror will not hand-roll.
