CASCADE seal f51ff169dbc4fd15 · measured, then frozen
Appendix A · Scoring Method and reproducibility ← Back to the findings

Seven factors, declared tables. Written twins, one grid.

A matte aluminium balance with two pans at exactly the same height; the right pan is the tool's deep amethyst.

This page shows what the scoring numbers are made of: which dossiers, which factors, which declared tables, and where each figure refuses to be quoted. No real person exists in the public record, and no official risk list was copied into it: that refusal is enforced by a test, not by discipline.

Written dossiers, twin by twin

The measured half rests on dossiers we wrote and we declare: six escalated archetypes and, deliberately, their six maintained twins: a family company with every ownership layer named against the shell that hides them, a neighbourhood shop whose turnover sits on its declaration against the counter that outruns it, a salaried account at ratio one against the firm at ratio five, a foreign student at stipend scale against the remote newcomer at several times his declaration. What separates each twin is in the fields, history and ratios, never only in the label, and a test pins all six pairs structurally.

No official country list was copied, and a test makes the refusal structural: suspects and twins share their countries of residence, so no code can quietly become a list. The geography factor scores zero on this book, on both sides, and the page above says so as a finding rather than hiding it.

Verify the dossiers

The suite revalidates every written dossier, the six twin pairs, and the country-sharing rule.

run it yourself
npm test84 dossiers revalidated, twin invariants and the no-list rule pinned

Where it livessrc/dossiers-etiquetes.test.ts:65 · src/synthetic.ts:29 · src/synthetic.ts:50

Every table is declared, and declared as an assumption

A scoring factor needs tables: which activities weigh what, which products, which channels. Every table in this tool is written in one file with provenance, unit and bounds, and every one carries the same one-word status: assumed. That is the thesis of the amethyst: the tables your vendor calls calibration are declarations, and the only way to know what they are worth is to measure them against your own dispositioned reviews.

Verify the declarations

The tables file carries value, provenance and bounds for every assumption.

run it yourself
npm testthe assumptions cases pin provenance and bounds

Where it livessrc/assumptions.ts:81 · src/assumptions.ts:113

Generated variants, apart whichever side they favour

The synthetic half is generated from the written dossiers under an explicit seed, natures preserved by construction: linked factors keep the observed-over-declared ratios, cash shares stay on their side of the line, ownership layers keep their floor, the remote newcomer stays new. On this tool the generated half is harsher than the written one on the best factor, and it stays apart exactly as it would if it flattered: separation is a rule, not a convenience, and the page shows both numbers side by side.

Verify the separation

Open the record: the two blocks carry their provenance in the data itself.

run it yourself
python3 -c "import json; d=json.load(open('releve-public.json')); print(d['authored']['provenance'][:24], '/', d['synthetic']['provenance'][:22])"prints the two provenance declarations: written by hand, seeded variants

Where it livessrc/synthetic.ts:29 · src/measure.ts:71

Wilson everywhere, scores bounded, refusals where n is small

Every rate travels with its Wilson interval at 95 percent and its n; below twenty observations a rate is noted rather than quoted, and recall on your own book is refused outright under five confirmed escalations. A factor's score lives in [0, 1] and a value outside it is an error named with the factor and the dossier, never a silent rounding. The threshold grid is shared and inclusive, so the strictest cell still means something for a factor that answers exactly one.

Verify the refusals

The bounds and refusals live in code, and the suite exercises them.

run it yourself
npm testinterval, score-bound and refusal cases run with the rest

Where it livessrc/interval.ts:102 · src/facteur.ts:55 · src/facteur.ts:56