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 coverage R ≥ ρ·S·P_red at every step (25 / 50 / 75 / 100%).
  • oracle_skew — commodity spot moves by the documented set (adversity increasing); asserts USD reserve + commodity collateral covers ρ·liabilities and 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_scenario and 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.
}