CASCADE seal f51ff169dbc4fd15 · measured, then frozen
Appendix B · Scoring Security and data handling ← Back to the findings

No list, no network. Declared facts only.

A matte aluminium padlock; its shackle, closed, is the same deep amethyst as the tool's accents.

Customer risk scoring touches the most personal table a bank holds. This tool's answer is structural: its public data is written and generated with no real person in it, no official risk list was copied anywhere, and not one module is allowed to reach the network.

The network allowlist is empty, and a test walks every file

Like the blue and the onyx, the amethyst downloads nothing: the allowlist of modules that may touch the network is empty, and a structural test walks every source file for network sites and fails the suite if one appears. The detector proves it can see a planted call before its zero is believed.

Verify the frontier

Run the suite; the walk fails if any file gains a network site.

run it yourself
npm testfails if any module touches the network; the allowlist is empty

Where it livessrc/frontiere.test.ts:22 · src/frontiere.test.ts:43

No real person, and no official list, anywhere public

Every dossier in the public record was written for the archetype it illustrates or generated from those dossiers under a seed. No anonymised customer data, because anonymised is a promise and absent is a fact. And no official risk list was copied into the data: a test requires suspects and benign twins to share their countries, so the record cannot smuggle a list in through its examples, and the geography factor's zero on this book is printed as a finding.

Verify the provenance

The dossiers file declares itself, dossier by dossier, and the no-list rule is a test.

run it yourself
python3 -c "import json; d=json.load(open('src/dossiers-etiquetes.json')); print(d['provenance'], len(d['dossiers']), 'dossiers, each with a written reason')"prints: authored 84 dossiers, each with a written reason

Where it livessrc/dossiers-etiquetes.json:2 · src/dossiers-etiquetes.test.ts:65

Your two files stay yours, and the outputs carry no value

measure:yours reads your dispositioned reviews and your customer attributes, rebuilds each dossier in memory, and writes its outputs next to your files and nowhere else: counts, rates, intervals and verdicts by your review id. Never a customer id, never a country, never an amount of yours. Your review ids do survive as verdict keys, so choose them opaque.

There is no callback, no telemetry, no account to create. The whole measurement is a local process reading two CSV files at your desk.

Verify the seal, offline

Cut the network, run everything, then recompute the public record's seal.

run it yourself
CASCADE_OFFLINE=1 npm testthe whole suite, network cutnpm run sceller -- releve-public.jsonsays: already sealed, and the seal matches

Where it livessrc/sceller.ts:42 · src/dossier.ts:11