Safeguards · the refusal contract, version 1.1.0

39 things this rail cannot be made to do.

Not a policy page. Each refusal names the code that enforces it and the test that fails the build if it ever stops holding. The list is signed at GET /cannot, and within a major version nothing on it is removed or weakened.

28 structural11 enforced7 new in 1.1.0published 2026-09-28

The hallmark plate

Every refusal, punched into the code.

An assayer punches a hallmark into metal that has passed the test. Here each mark is a refusal the code enforces. Brass marks are structural: removing one would change what Mirror is. Ink marks are enforced guards under the same change control. Hover or focus a mark to read it; select it to open its entry.

Operator
Signed record
Business
Evidence
Reading Hover or focus a mark to read what it refuses.
StructuralEnforcedNew in 1.1.0

Break it

Pick an attacker. Fail to break it.

A list of refusals is a claim until you attack it. Choose a role, fire at a simulated operator, and read what you actually get back: nothing you can use.

mirror-operator · adversary sandboxSIMULATED
Serve the operator and seize everything it holds.

Simulated against the real properties · the homoglyph fold runs live in your browser

The ledger

What it refuses, why, and what enforces it.

What the operator cannot hold

raw_valuestructuralwire: raw_leaked

A raw trade value, unit count, band, corridor table or per-shipment salt, at any nesting depth, on any route

Why. The operator reconciles opaque commitments; a value it never receives cannot leak, be subpoenaed or be scored.

Enforced byserver/core.jsserver/designed-inability.test.jsserver/core-routes.test.js
filing_decisionstructuralwire: sar_wall

A suspicious-activity filing or a filing decision, including homoglyph and zero-width disguises of the key

Why. Tipping-off is a criminal offence; the rail must be incapable of holding the thing it would tip off about.

Enforced byserver/core.jsconformance/sar-wall.test.jsserver/wall-normalization.test.js
secret_custodystructural

A corridor secret - no route accepts, escrows or recovers one

Why. An operator holding a secret could open every commitment made under it without searching at all.

Enforced byserver/designed-inability.test.js
cargo_identifierstructuralwire: raw_leaked

A plaintext container number, cargo key, receipt secret or measured or declared mass - a cargo travels as an opaque locator and a salted mass commitment

Why. An identifier painted on the box would let the operator follow the cargo across banks; a kilogram is a trade figure like a price.

Enforced byserver/core.jsserver/path-routes.test.jsserver/app.test.js
private_keyenforcedwire: private_key_leaked

A member's private signing key, even on a demo operator

Why. A member's key never leaves the institution; the right answer to receiving one is a loud refusal, not a silent discard.

Enforced byserver/core.jsserver/cannot.test.js
plaintext_join_keyenforcedwire: plaintext_join_key

A plaintext join key on the duplicate-financing bus

Why. A join key must arrive as an opaque locator commitment; a readable document reference would identify the trade.

Enforced byserver/core.jsserver/cutover.test.js
staff_directorystructuralnew in 1.1.0

A directory of a member's staff - names, email addresses, passwords or SCIM users. Access is by scoped member keys; which person holds a key is decided behind the member's own SSO

Why. An operator holding a bank's staff roster would hold personal data on a rail whose argument is that it holds almost nothing.

Enforced bykernel/mirror-delegation.jskernel/mirror-delegation.test.jskernel/mirror-auth.js
unscoped_delegateenforcedwire: scopenew in 1.1.0

A delegated key acting outside the scopes its member granted, after its certificate expired, or after the member revoked it - a live session included

Why. Per-desk permission is only real if the operator enforces it on every request.

Enforced byserver/core.jskernel/mirror-delegation.jsserver/delegation.test.js
push_to_non_partystructuralnew in 1.1.0

A webhook delivery of a verdict to any member whose leg did not authenticate on it

Why. Telling a non-party that a trade was judged would draw the correspondent graph this rail exists not to build.

Enforced bykernel/mirror-webhook.jskernel/mirror-webhook.test.jsserver/webhooks.test.js
webhook_to_private_networkenforcednew in 1.1.0

A webhook delivered to a private, loopback, link-local or metadata address - by literal, or by what a registered name resolves to at connect time

Why. An operator that posts wherever a name points becomes a probe into its own network.

Enforced bykernel/mirror-webhook.jsserver/webhook-send.jsserver/webhooks.test.js
assay_and_origin_secretstructuralwire: raw_leakednew in 1.1.0

A declared or measured grade, an assay certificate secret or a document salt, at any nesting depth, on any route

Why. A grade is a trade figure like a price, and the certificate secret and the document salt open the commitments they salt.

Enforced byserver/core.jsserver/wall-normalization.test.js

What a signed record cannot become

risk_scorestructural

A risk score, probability, rating, likelihood or percentile - even inside a validly signed record

Why. A score about a party is a de-risking instrument the moment it exists; Mirror reports states and counts with denominators.

Enforced bykernel/mirror-forbidden.jskernel/mirror-sign.jskernel/mirror-forbidden.test.jskernel/mirror-certificate.test.js
fourth_verdictstructural

Any verdict other than reconciled, divergent or undetermined

Why. Ambiguity fails closed to undetermined, never to a clear; the verdict-rule certificate checks every configuration.

Enforced bykernel/mirror-verdict-rule.test.jskernel/mirror-kernel.test.js
member_rankingstructural

A ranking, percentile or per-counterparty comparison of members or corridors

Why. A ranking of institutions is a scoreboard regulators would read as a verdict on conduct.

Enforced bykernel/mirror-evenhand.test.jskernel/mirror-rerisk.test.jskernel/mirror-graph.test.js
byproduct_leakenforced

A trade-shaped field in the public registry, or cover traffic that is not structurally uniform

Why. A by-product that carries shape leaks what the primary output withholds.

Enforced bykernel/mirror-public.test.jskernel/mirror-cadence.test.js
filing_in_recordstructural

A filing decision inside a signed record - refused by the verifier whoever signed it

Why. The promise must hold on the record in an examiner's hand, not only at the operator's door.

Enforced bykernel/mirror-forbidden.test.jsserver/forbidden-parity.test.js
secret_in_recordstructural

A per-shipment salt or shared secret inside a signed record

Why. A leaked salt opens the commitments it salted.

Enforced bykernel/mirror-forbidden.test.js
settlement_instructionstructural

A settlement, payment or release instruction; the ISO 20022 evidence block attaches proof and never triggers a payment

Why. Mirror is not in the payment path and never will be.

Enforced bykernel/mirror-iso20022.test.jskernel/mirror-forbidden.test.js
stakeholder_only_clearstructural

A reconciled verdict that rests only on parties with a stake in the price - two desks stating the same number cannot mint a clear

Why. Same-lie collusion reconciles perfectly; only a party with nothing to gain - a ratified witness key, competent on the axis - reaches past it.

Enforced bykernel/mirror-independence-gate.jskernel/mirror-independence-gate.test.jsserver/independence-gate-routes.test.js
overclaimed_assertionstructural

A record claiming more than that the committed labels agree - that a label is the band of its true value is never asserted at reconciliation

Why. A signed clean bill of health and a signed false one differ exactly by that sentence; the verifier rejects an assertion that does not restate the record.

Enforced bykernel/mirror-assertion.jskernel/mirror-leg.jsserver/label-integrity-routes.test.js
malleable_signatureenforced

A second valid signature form for one signing - every signature is low-S, and a malleated copy is the same record, never a second verdict

Why. A verdict entering an append-only log must not circulate under two signature strings.

Enforced bykernel/envelope.jskernel/mirror-malleability.test.js
opening_secret_in_recordstructuralnew in 1.1.0

A terminal receipt secret, an assay certificate secret or a document salt inside a signed record - refused by the verifier whoever signed it

Why. Each of them opens a witness or origin commitment the record was built to keep closed.

Enforced bykernel/mirror-forbidden.jsserver/forbidden-parity.test.js
cross_key_clearstructuralnew in 1.1.0

A clear between legs banded under different corridor keys or tables - such a shipment is undetermined, never reconciled and never divergent

Why. During a key rotation a straddling shipment must fail safe, not accuse anyone and not clear.

Enforced bykernel/mirror-kernel.jsserver/rotation-rehearsal.test.js

What the business cannot do

no_per_verdict_feestructuralwire: volume_fee_refused

A per-trade, per-verdict or per-shipment fee

Why. Coverage is the value; metering it would pay a member to submit less.

Enforced bykernel/mirror-billing.jskernel/mirror-billing.test.jsserver/pricing-sim.test.js
no_bps_feestructuralwire: volume_fee_refused

A fee on trade value - basis points, ad valorem, a take rate

Why. Mirror never sees a value, and a cut of flow would put it in the payment path.

Enforced bykernel/mirror-billing.jskernel/mirror-billing.test.jsserver/pricing-sim.test.js
no_seat_feeenforcedwire: pricing_refused

A per-seat or per-user fee

Why. The value is the corridor and the archive; seats penalise a compliance team for growing.

Enforced bykernel/mirror-billing.jskernel/mirror-billing.test.js
no_settlement_feestructuralwire: pricing_refused

A fee on settlement or money movement

Why. There is no settlement, so there is nothing to charge for.

Enforced bykernel/mirror-billing.jskernel/mirror-billing.test.js
no_filing_feestructuralwire: pricing_refused

A fee tied to a filing decision

Why. The rail refuses to hold a filing decision.

Enforced bykernel/mirror-billing.jskernel/mirror-billing.test.js
no_conversion_discountenforcedwire: pricing_refused

A free-to-paid conversion discount

Why. A free tier that converts makes the verifier a sales tool.

Enforced bykernel/mirror-billing.jskernel/mirror-billing.test.js
no_score_feestructuralwire: pricing_refused

A fee for a trust or risk score

Why. Mirror produces no score.

Enforced bykernel/mirror-billing.jskernel/mirror-billing.test.js
no_volume_bandenforcedwire: pricing_refused

A volume-band pricing tier

Why. Volume is a side channel the boundary register names.

Enforced bykernel/mirror-billing.jskernel/mirror-billing.test.js
invented_pricestructural

A price or band table Mirror authored, suggested or computed - templates carry none, and the corridor graph cites whole ratified tables by hash

Why. A price source inside the rail is a manipulation target and makes the operator an authority on value.

Enforced bykernel/mirror-library.test.jskernel/mirror-graph.test.js
custodystructural

Moving, holding, freezing or settling money

Why. Custody is a different, licensed business, and a boundary this product does not cross.

Enforced bykernel/mirror-iso20022.test.jskernel/mirror-billing.test.js
price_in_citationstructural

A figure inside a citation corridor - a citation names a public document and a step, never a price; each bank derives the table party-side

Why. The corridor must never become a place Mirror publishes or holds a price.

Enforced bykernel/mirror-citation.jskernel/mirror-nested.test.jsserver/nested-routes.test.js

What the evidence cannot carry

case_contentstructural

The content of a case in the case chain: field values, recipients, notes or a filing action

Why. The chain proves custody - what was touched and when - and is safe to log publicly only because it holds nothing else.

Enforced bykernel/mirror-casechain.jskernel/mirror-casechain.test.js
graph_identitystructural

A member, product, corridor id, per-corridor rate or percentile in a corridor-graph release

Why. The graph publishes population cells under a suppression floor; anything identifying defeats the floor.

Enforced bykernel/mirror-graph.jskernel/mirror-graph.test.js
path_count_below_kstructural

A path or ghost-coverage count describing fewer than k institutions besides the requester - withheld, never partial

Why. With two banks on a path, one bank's count is a statement about the other's trade.

Enforced bykernel/mirror-path.jskernel/mirror-path.test.jsserver/path-routes.test.js
unreviewed_graph_statisticenforced

A corridor-graph statistic published without a named external review of its mechanism, or described as differential privacy it does not provide

Why. A network statistic a reviewer can break with a membership-inference argument is a leak with extra steps.

Enforced bykernel/mirror-graph.jskernel/mirror-graph.test.js
government_verification_claimenforced

A claim that Mirror verified a tax authority's or customs administration's signature

Why. Registration is the submitting institution's dated statement; Mirror checks no government signature and says so on the leg.

Enforced bykernel/mirror-einvoice.jskernel/mirror-einvoice.test.js

Change control

How a refusal could ever change - and why it almost can't.

Within a major version a refusal code is never removed, reused or weakened: a structural refusal never becomes merely enforced and its wire code never changes. Adding a refusal is a minor version. Removing or weakening one requires a major version, a dated changelog entry and at least 90 days' published notice. server/cannot.test.js holds this registry against the pinned previous one on every run.

  1. 1.0.02026-09-27

    First published registry: 32 refusals across the operator, the signed record, the business and the evidence kernels, each tied to the tests that pin it - including the independence gate, the precise assertion and low-S signatures.

  2. 1.1.02026-09-28

    Seven refusals added, none removed or weakened: no staff directory and no delegate acting outside its scopes; no verdict pushed to a non-party and no webhook into a private network; no assay or origin secret at the door or in a signed record; no clear between legs banded under different corridor keys.

Check it yourself

Don't take this page's word for it.

This page is generated from the same registry the operator signs. Fetch the signed list and verify it offline - on the bench, or with your own code against the published key.

Put the signed list on the bench
# the signed registry, straight from the operator
OP=https://mirror-operator.vasileburuian94.workers.dev
curl $OP/cannot > cannot.json
curl $OP/jwks > jwks.json

# verify offline: ES256 over canonical JSON, plus the refusal scan
node -e 'const k = require("./mirror-kit.js");
  k.sign.verifyRecord(require("./cannot.json"), require("./jwks.json"))
   .then((v) => console.log(v.valid, v.reason))'