Economic Resilience Report
The integrity attestation proves the current state is conserved. The Resilience Report asks the harder question: does the economy survive adversarial conditions with its sacred invariants intact? It applies modeled shocks to a live baseline snapshot and reports where — if ever — each one breaks.
The scenarios
- redemption_run — a correlated fraction of circulating supply redeems at
P_red = P × (1 − σ); asserts reserve coverageR ≥ ρ·S·P_redat every step (25 / 50 / 75 / 100%). - oracle_skew — commodity spot moves by the documented set (adversity increasing); asserts USD reserve + commodity collateral covers
ρ·liabilitiesand no pool is emptied. - reserve_shortfall — reserve units are removed in 1 / 5 / 10% steps (theft, assay failure); asserts ANGEL stays backed or flags under-collateralization.
- sybil_wash— a settlement burst measured against the velocity tripwire; “survives” means the tripwire detects it and auto-quarantine contains it. The report also documents the residual undetected capacity below the tripwire.
Every magnitude is an exported constant and is echoed back in resilience.inputs, so the report is fully reproducible. It reuses the canonical monetary formulas and the Phase-22 velocity constants — no new money math.
Severity
- SEVERE — a scenario failed; the response names the
worst_scenarioand is never cached. - WARNING— all scenarios survive but the redemption-coverage buffer is thin (< 1.25× liabilities); never cached.
- OK — the economy survives every scenario with a healthy buffer.
GET /api/v1/raillab/resilience (ISSUER API key)
{
"resilience": {
"baseline": { "angel_supply": 100000, "reserve_usd": 675000, "backing_ratio": 1.5, ... },
"scenarios": [
{ "scenario": "redemption_run", "survives": true, "worst_case": "fully backed at 100% redemption", "detail": [...] },
{ "scenario": "oracle_skew", "survives": true, ... },
{ "scenario": "reserve_shortfall", "survives": true, ... },
{ "scenario": "sybil_wash", "survives": true, ... }
],
"summary": { "survives": true, "worst_scenario": null, "severity": "OK" },
"inputs": { "redemption_stress_steps": [0.25, 0.5, 0.75, 1], ... },
"degraded": false
},
"snapshot": { "content_hash": "…", "signature": "…", "public_key": "…", "algorithm": "ed25519" }
}Verify the report offline
Signed with the same key as /api/v1/receipts/monetary. Remove snapshot, recompute sha256(canonicalJson(body, keys sorted)), then verify the Ed25519 signature over utf8(content_hash).
Agent autarky
const p = new PassportClient({ apiKey: "pp_…", baseUrl: "https://passport.metis.gold" });
const r = await p.getResilience(); // ISSUER key
if (r.resilience.summary.severity === "SEVERE") {
// an autonomous operator can halt work / demand remediation before touching the rails.
}