Operational Trust Console

Passport continuously attests that its money ledgers stayed conserved. The Trust Console surfaces that attestation (signed, chained, offline-verifiable) together with the execution-safety interlock and rail health — so operators and autonomous agents can see — and independently verify — the current trust state.

Reading the dashboard

Three severity tilts make it legible:

  • SEVERE — the execution interlock is ON (live settlement halted after an integrity breach) OR the attestation chain failed verification. Treat as: stop transacting; investigate immediately.
  • WARNING — a settlement-velocity anomaly (possible compromised signer) OR stale PENDING/PENDING_REVIEW settlements. Treat as: investigate; the AUTO-QUARANTINE tripwire may already be acting.
  • OK — ledgers conserved, chain verified, interlock clear.
GET /api/v1/raillab/console   (ISSUER API key)
{
  "console": {
    "severity": "OK",
    "safety": { "halted": false, ... },
    "attestation": { "verified": true, "chain_ok": true, "issues": [] },
    "rails": { "total": 12, "enabled": 9, "quarantined": 1, ... }
  }
}

Independently verify an attestation

You don't have to trust the dashboard. Fetch the latest signed attestation and verify it in two steps — recompute the hash and check the Ed25519 signature:

GET /api/v1/raillab/health/attestations/latest   (public)

# verify endpoint (public) — POST the full attestation object
POST /api/v1/raillab/health/attestations/verify

# or verify POST /api/v1/raillab/health/attestations/verify
# with the full signed attestation JSON body -> { "valid": true }

The attestation attestation_hash issha256(canonicalJson(body)); the Ed25519 signature is over that hash. `chain_ok` means the previous hash resolves to a stored attestation, making the whole history tamper-evident.

Live status endpoints (public)

Agent autarky

From the SDK:

const p = new PassportClient({ apiKey: "pp_…", baseUrl: "https://passport.metis.gold" });
const safety = await p.getSafetyStatus();       // public
const trust  = await p.getTrustOverview();      // ISSUER key for full detail

if (trust.console.severity === "SEVERE") {
  // An autonomous agent can decide to pause work on this rail.
}