Published evidence — /signed/
Every artifact this directory serves, with its size and what it is. This tree mixes signed card envelopes, indexes, source data and legacy artifacts. A filename or directory does not make an artifact signed; use the family-specific procedure and inspect the artifact's own state.
Start here: HOW-TO-VERIFY.md — pin the signing key against
/.well-known/did.json first. A card that verifies against the key it
ships with proves only that the file is self-consistent, which is not authenticity.
What the counts actually say
| Source | Count |
|---|---|
files in cards/ | 335 |
rows in card_index.json | 335 |
n_cards declared in card_index.json | 335 |
cards claimed by HOW-TO-VERIFY.md | 335 |
Artifacts
| File | Size | What it is |
|---|---|---|
HOW-TO-VERIFY-ROOT.md | 10.2 KB | |
HOW-TO-VERIFY.md | 14.4 KB | Step-by-step verification, starting with pinning the key against /.well-known/did.json. Served as text/plain so it renders in a browser instead of downloading. |
arena_scoreboard.json | 9.5 KB | Arena scoreboard artifact. |
board_living.json | 7.8 KB | Living-board data whose embedded historical stamp is explicitly UNVERIFIABLE; not a valid attestation. |
card-matrix.json | 182.7 KB | Unsigned index data assembled from published card metadata; not a signed card envelope. |
card_index.json | 192.8 KB | Index of published measurement cards. Each row carries card id, axis, timestamp, signed flag and key id — the full payload (pubkey, signature, preimage) lives in the per-card file. |
chain-facts.json | 2.6 KB | Derived source data about chain records; not a signature envelope. |
chain.json | 195.2 KB | Source-maintained chain document. Verify individual hashes and signatures; no append-only storage property is asserted by this index. |
disclosure-crosswalk-example.json | 7.9 KB | |
eat_compliance_board.json | 1.3 KB | Legacy board artifact; its filename is not a compliance determination. |
findings_index.json | 1007.0 KB | Unsigned findings index; source data, not a signed card envelope. |
gspc-board.signed.json | 56.4 KB | MPC-signed historical board freeze. Check gspc-board.status.json before relying on it as current. |
gspc-board.status.json | 2.2 KB | Fail-closed status for the preserved MPC board freeze; names known claim defects and the current authority. |
gspc-measurement.json | 20.0 KB | Measurement-data bundle behind the board; inspect its own signature fields and verification state rather than assuming the whole file is signed. |
gspc-quest-instruments.json | 86.9 KB | |
hub-census-baseline.json | 897 B | Unsigned dated census source data. |
hub-census-delta.json | 1.0 KB | Unsigned dated census-delta source data. |
public-root-leaf-union.json | 291.1 KB | Derived union of candidate root leaves; verify against the authoritative public-root envelope before relying on membership. |
verify-card.mjs | 9.4 KB | Standalone verifier. Runs on plain Node with no dependencies and no network beyond fetching the card and the DID document. |
cards/ | 335 files | One JSON per measurement card, named by its own content id. Browse the index. |
Verify one card, end to end
This procedure applies to the published measurement-card family in cards/. It does not verify every top-level JSON file listed above.
# 1. pin the key
curl -s https://councilof.ai/.well-known/did.json
# 2. fetch a card and check it against the pinned key
curl -s https://councilof.ai/signed/verify-card.mjs -o verify-card.mjs
node verify-card.mjs 00a5218048b4ff922c9793e5d155c7c62b4be5a84de3f09e16af3df59445b3c9
The rule the whole tree rests on: id == sha256(preimage), where preimage is the body
serialised with sorted keys and no whitespace, and signature is Ed25519 over that preimage under the pinned key.
The full procedure, with the exact serialisation, is here.