# Promethean for Regulators and Auditors

> Read the verifier. Run it against any operator's chain. No trust required.

## What you can do without contacting Promethean

1. **Read the verifier source.** Apache-2.0, ~500 lines of plain Node 18+. Available at `https://promethean.software/verify.mjs` and inside `https://promethean.software/runtime-ai/latest.tgz`.

2. **Verify any chain.** Operators provide their L12 receipt log (`*.jsonl`). You run:

   ```bash
   node verify.mjs operator-chain.jsonl --trusted-key <operator-public-key>
   ```

   Exit 0: chain is intact, every signature verifies, every hash recomputes, no continuity break, no malformed line. Exit 1: tamper detected; the error message tells you which entry and what's wrong.

3. **Cross-check the trust anchor.** The verifier prints the sha256 fingerprint of the trust anchor it's using. Cross-reference against `https://promethean.software/api/facts/trust-anchor` (or against the canonical fingerprint published at `https://promethean.software/system`).

4. **Run against the three reference chains.** https://promethean.software/examples — three downloadable, runnable chains (paysafe, cliniclens, civicgate) covering fintech, healthtech, and govtech use cases.

## What the verifier checks

- Hash continuity: each entry's `prevHash` matches the prior entry's `hash`.
- Hash integrity: each entry's `hash` field equals `sha256(canonicalForm(entry))`.
- Signature: each entry's `attestation.signature` is a valid Ed25519 signature over the canonical form, under the embedded `publicKey`.
- Trust anchor: count of entries signed under the trusted public key vs. operator-supplied keys.
- ID contiguity: entry ids form a contiguous `1, 2, 3, …` sequence per spec.
- Timestamp monotonicity: `recordedAtMs` increases.
- Closed-field schema: no unknown top-level fields (would otherwise be silently stripped from the canonical form and bypass the signed envelope).

## What it deliberately does NOT do

The verifier does not contact Promethean. It does not require network access. It does not depend on any npm package. It cannot phone home. It is byte-identical wherever you run it.

## Authoritative refs

- HTML: https://promethean.software/regulators
- Example chains: https://promethean.software/examples
- Facts index: https://promethean.software/api/facts
