How these reports are made
Stablecoin Dashboard publishes structural risk reports for stablecoins backed by collateralised debt positions: what backs each token, how much of that backing can be checked on-chain, and how it holds up under stress. An automated pipeline produces them; this page explains the rules it follows.
Every number traces to a pinned call
Every figure in a report is computed from Ethereum data read at one fixed block. Each value is stored with the contract call that produced it, so anyone can repeat that call on their own node, at that block, and get the same number. An AI model writes the explanatory text around the figures. It never supplies a number: its text is checked against the report's data table before anything is published.
Gates, and why their log is public
A gate is a check that must pass before a report is published. A minor finding publishes with a visible notice; a serious one withholds the report, except where a recorded ruling published a page regardless. The two cases on this site are stated under Open notices. Every time a gate fires, a public log records the date, the token, what kind of check fired, how serious it was, and how it was resolved. Anyone can say their work is checked; a log of checks stopping reports is the evidence. The log below holds 37 entries.
The written summaries on each page come from a local language model under a guard that only lets through figures printed in the data table; no second model reviews them. When a draft does not pass that guard, its section shows a notice in place of the summary and the page still publishes, so the figures stay current. The deterministic checks run on every page.
One revision, no hand edits
A report gets one revision when a judge finds a defect in its prose. In the local configuration the judge is withdrawn, so there is no revision pass: a page that fails a deterministic check is not published, and the fix goes to the template, never to the page. No report is edited by hand, and no gate can be switched off for a single run.
Same scenarios, each protocol's own mechanics
The archetype fixes the scenarios so the three pages are comparable; what happens under each shock is modelled from each protocol's own contracts.
Checked by hand
For each token, the analyst repeated a sample of the stress calls through an independent node at the report's block and compared the results with the published artifact. Each token's verify page lists the calls, so you can repeat them too.
Open notices
crvUSD's, GHO's and LUSD's pages passed every check.
The behavioral tier
The behavioral tier shows how each token trades: how far its price has strayed from the peg over the last seven days, how much DEX liquidity Webacy counts for it, how its supply changed over seven days, and how concentrated its holders are. It comes from Webacy, an external monitoring service, and is fetched at a timestamp printed on each page. Unlike the structural figures, it is not read at the report's block, and this pipeline neither computes nor verifies it.
References such as P-7.11
The appendix pages cite entries such as P-7.11. These are entries in the project's decision log, PROGRESS.md, where every ruling and implementation step is recorded in the order it was confirmed.
Detail for specialists
The six mechanisms behind the claim
- One block, one table, one formatter: every contract read in a run carries the run's
run_block(rubric 0.5, R-13); every rendered figure replays from a flat-table field (DET-84) and is formatted by one rule (DET-89). - Fail-closed: a missing or erroring gate result means no publication (DET-85, T-25).
- Gate integrity: the page embeds the hash of what it was built from; no page publishes with an open Level 2/3 entry, and no override or output-edit resolution exists (DET-13). Pages published by ruling carry their open entries, shown in the table below.
- The stale-page banner: "Last successful run / Current run: quarantined", and "Under review" after four quarantined runs (DET-59, memo §8.1.2).
- The public log: category-level, one entry per trigger fired (DET-60, memo §8.1.3); this page's row count is checked against the log when the site is built.
- Numbers never originate from the model: generate → evaluate → one revision → ship or quarantine; findings patch templates, rubrics or prompts, never a report (brief §6–§7, rubric §6 and 2.2, LLM-01).
Rubric entries not yet registered (6)
6 rubric entries are not yet registered in the harness. Until they are, a report's completeness is measured over the registered entries (rubric amendment A-16); each is listed here with its queue item.
| entry | queue item |
|---|---|
DET-09 | P-4.01 (DET-09 set-file inputs: GHO discovery_m absent, LUSD 0.4459 - ruling) |
DET-75 | P-4.01 #25/#26 (field-existence clause; FR-14 fields) |
DET-76abcd | P-4.01 (DET-76 limbs a-d beside the registered DET-76e) |
DET-81 | P-4.01 (GHO [[reference_feed]] rows, gap column - P-7.05) |
DET-23abd | P-4.01 (DET-23 limbs a/b/d beside the registered DET-23c) |
DET-64 | P-4.01 (GHO attribution cross-check: aggregate reads) |
Outcome per token
| token | block | report | checks passed | outcome | open log entries | gate record |
|---|---|---|---|---|---|---|
| crvUSD | 26143168 | 07f460c0 | 89 of 90 evaluated, 6 not evaluated (judge withdrawn) | published | crvUSD:17 T-28 | committed record |
| GHO | 26100308 | d07a2702 | 89 of 90 evaluated, 6 not evaluated (judge withdrawn) | published | GHO:9 T-02, GHO:10 T-20, GHO:17 T-28 | committed record |
| LUSD | 26107477 | ba9b2bb8 | 89 of 90 evaluated, 6 not evaluated (judge withdrawn) | published | LUSD:17 T-28 | committed record |
Each page's data/evaluation-<block>.json is the gate record as rendered; the ruled outcome is in the committed record, linked in the last column.
Sources for the behavioral tier
/rwa/{address}?chain=eth&hours=168: the depeg snapshot, its seven-day history, DEX liquidity (total and depth tier) and the Ethereum DEX pools list/rwa/hci?chain=eth&pageSize=500: holder concentration, matched by contract address/rwa/supply/{symbol}: the net supply change over 7, 30 and 90 days, used only when the returned row's Ethereum address is the token's
Latest snapshot per token, committed trimmed to the fields the page uses (and the undocumented cost-to-move pair, stored only), with the sha256 of every full response: out/behavioral/crvUSD/20261018T123628Z.json · out/behavioral/GHO/20261018T123628Z.json · out/behavioral/LUSD/20261018T123628Z.json. Each token page's block is rebuilt from its snapshot when the site is built (rubric amendment A-20).
Holder-concentration history is not offered by Webacy's API: its OpenAPI specification (v1.7.3) has no history endpoint or parameter for /rwa/hci, so no concentration chart is drawn.
The public log (37 rows)
| entry | date | token | category | trigger | level | resolution type | resolution date | status |
|---|---|---|---|---|---|---|---|---|
crvUSD:10 | 2026-09-14 | crvUSD | gate failure | T-28 | 2 | — | — | resolved by crvUSD:23 |
crvUSD:11 | 2026-09-14 | crvUSD | harness error | T-25 | 2 | — | — | resolved by crvUSD:24 |
crvUSD:12 | 2026-09-14 | crvUSD | judge instability | T-24 | 2 | — | — | resolved by crvUSD:18 |
crvUSD:13 | 2026-09-25 | crvUSD | gate failure | T-28 | 2 | — | — | resolved by crvUSD:19 |
crvUSD:14 | 2026-09-26 | crvUSD | gate failure | T-28 | 2 | — | — | resolved by crvUSD:20 |
crvUSD:15 | 2026-09-30 | crvUSD | gate integrity | T-23 | 2 | — | — | resolved by crvUSD:21 |
crvUSD:16 | 2026-09-30 | crvUSD | gate failure | T-28 | 2 | — | — | resolved by crvUSD:22 |
crvUSD:17 | 2026-09-30 | crvUSD | gate failure | T-28 | 1 | — | — | open |
crvUSD:18 | 2026-09-14 | crvUSD | judge instability | T-24 | 2 | template change | 2026-09-30 | resolution of crvUSD:12 |
crvUSD:19 | 2026-09-25 | crvUSD | gate failure | T-28 | 2 | template change | 2026-09-30 | resolution of crvUSD:13 |
crvUSD:20 | 2026-09-26 | crvUSD | gate failure | T-28 | 2 | template change | 2026-09-30 | resolution of crvUSD:14 |
crvUSD:21 | 2026-09-30 | crvUSD | gate integrity | T-23 | 2 | template change | 2026-09-30 | resolution of crvUSD:15 |
crvUSD:22 | 2026-09-30 | crvUSD | gate failure | T-28 | 2 | template change | 2026-09-30 | resolution of crvUSD:16 |
crvUSD:23 | 2026-09-14 | crvUSD | gate failure | T-28 | 2 | template change | 2026-09-30 | resolution of crvUSD:10 |
crvUSD:24 | 2026-09-14 | crvUSD | harness error | T-25 | 2 | template change | 2026-09-30 | resolution of crvUSD:11 |
GHO:9 | 2026-09-14 | GHO | off-venue share > 25% | T-02 | 1 | — | — | open |
GHO:10 | 2026-09-14 | GHO | freeze coverage below target | T-20 | 1 | — | — | open |
GHO:11 | 2026-09-14 | GHO | gate failure | T-28 | 2 | — | — | resolved by GHO:18 |
GHO:12 | 2026-09-14 | GHO | harness error | T-25 | 2 | — | — | resolved by GHO:19 |
GHO:13 | 2026-09-25 | GHO | gate failure | T-28 | 2 | — | — | resolved by GHO:20 |
GHO:14 | 2026-09-26 | GHO | gate failure | T-28 | 2 | — | — | resolved by GHO:21 |
GHO:15 | 2026-10-01 | GHO | gate integrity | T-23 | 2 | — | — | resolved by GHO:22 |
GHO:16 | 2026-10-01 | GHO | gate failure | T-28 | 2 | — | — | resolved by GHO:23 |
GHO:17 | 2026-10-01 | GHO | gate failure | T-28 | 1 | — | — | open |
GHO:18 | 2026-09-14 | GHO | gate failure | T-28 | 2 | template change | 2026-10-01 | resolution of GHO:11 |
GHO:19 | 2026-09-14 | GHO | harness error | T-25 | 2 | template change | 2026-10-01 | resolution of GHO:12 |
GHO:20 | 2026-09-25 | GHO | gate failure | T-28 | 2 | template change | 2026-10-01 | resolution of GHO:13 |
GHO:21 | 2026-09-26 | GHO | gate failure | T-28 | 2 | template change | 2026-10-01 | resolution of GHO:14 |
GHO:22 | 2026-10-01 | GHO | gate integrity | T-23 | 2 | template change | 2026-10-01 | resolution of GHO:15 |
GHO:23 | 2026-10-01 | GHO | gate failure | T-28 | 2 | template change | 2026-10-01 | resolution of GHO:16 |
LUSD:7 | 2026-09-14 | LUSD | gate failure | T-28 | 2 | — | — | resolved by LUSD:9 |
LUSD:8 | 2026-09-14 | LUSD | judge instability | T-24 | 2 | — | — | resolved by LUSD:10 |
LUSD:9 | 2026-09-14 | LUSD | gate failure | T-28 | 2 | template change | 2026-09-14 | resolution of LUSD:7 |
LUSD:10 | 2026-09-14 | LUSD | judge instability | T-24 | 2 | template change | 2026-09-14 | resolution of LUSD:8 |
LUSD:16 | 2026-10-02 | LUSD | gate failure | T-28 | 2 | — | — | resolved by LUSD:18 |
LUSD:17 | 2026-10-02 | LUSD | gate failure | T-28 | 1 | — | — | open |
LUSD:18 | 2026-10-02 | LUSD | gate failure | T-28 | 2 | template change | 2026-10-02 | resolution of LUSD:16 |