What this rests on
- The sealed public dossier. releve-public.json in the repository, fingerprint
37f8e511de19c842, measured at commit e95f0a0
on 2026-09-05. The extractor that feeds this page verifies the seal,
then recomposes every question’s state from its own verdicts with the contract’s
no-gap rule, and refuses to emit if a single line disagrees.
- The suite’s own public records. The reports judged here are the public
records of Cascade’s tools (the reader, the matcher, the scenario, the factor):
published, sealed, verifiable by anyone. A question without one is a named row,
never a guessed column.
- Five controls, one order. present, sealed, signed, fresh, consistent: the
state reached is the highest control held without a gap in that order. A held
control above a hole counts for nothing, and the table shows why.
- Freshness against a declared rhythm. Each measurement’s age is judged
against the rhythm written in the dossier itself (90 days), never
against an unstated habit.
What this refuses
- Your data. This page cannot read it: no network requests leave it
(connect-src ‘none’), no third-party resource is loaded, and there is no input
field to paste a report into.
- A verdict without its sentence. Every cell opens into the record’s own
words: what was checked, on which file, and what the next control still needs.
Assemble the dossier of your own reports
The instrument shows our dossier, over our public records. Yours is assembled at home,
by the tool, from the sealed reports the suite’s tools left at your desk, and nothing
about them leaves your machine.
The three commands, exactly as they run
$ git clone https://github.com/ArslaneSempai-ui/cascade-dossier.git
$ npm ci --ignore-scripts
$ npm run dossier -- --reports=a-measured.json,b-measured.json
the dossier is written next to your reports, and nowhere else