Interop — public-root reader

XRPL public-root catalogue

Living catalogue is GET /root.json. GET /api/xrpl has 12/16 GH-secret sigs(derived at load); EURQ/USDQ unsigned (sig_ed25519 null, NO_LAPTOP_SIGN). Do not say all leaves unsigned. Inclusion is membership in that hash list — not a laptop-signed card check for the two unsigned leaves. Schema: /schema/card-v0.json. Intended DID: did:web:csoai.org#board-attestation-1. We use did:web:csoai.org, not did:xrpl. DEVNET Payment-memo / CredentialCreate hashes are historical, not this feed. This is not a GSPC grade, not a bond, and not a market. Do not mix represented TVL.

Honesty box — read first

GET /api/xrpl is a reader of /root.json (HTTP 200 this load). writes_board is false. Live n=16: 12/16 GH-secret sigs; EURQ/USDQ unsigned. Do not stamp MEASURED from this catalogue. Do not restamp. Historical XRPL DEVNET Payment-memo / CredentialCreate hashes are not this feed. Hugging Face mirror: csoai/gspc-boards public-root/root.json.

Envelope schema is public-root-v1, not a measurement card. This root.json envelope is Ed25519-signed over the compact preimage under did:web:csoai.org#board-attestation-1. Leaves MAY carry attestations — coverage harvest, not grades. Not MEASURED. Not a certificate. Free; not paywalled.

as_of
2026-09-28T07:32:07Z
card_count
310
merkle_root
c2ab6d59e530d7dd5999b790c590ca0513e3af6f6fc1514cb8a282232ea768e3
xrpl.fi assetCount
16
/api/xrpl sigs
12/16 GH-secret; EURQ/USDQ unsigned

Signed-root catalogue · live leaf sig tally

Load GET /root.json. GET /api/xrpl: 12/16 leaves carry sig_ed25519; EURCV/EURQ/USDQ/PSC unsigned (sig_ed25519 null, NO_LAPTOP_SIGN). The tally is computed from the reader on this load — do not say all leaves unsigned, and do not quote a remembered count. The root envelope signature is checked in this browser against a pinned key. Inclusion is promoted to VALID only when the proof re-hashes to that verified root and matches the requested leaf and index. This is still not an individual leaf signature or a grade. DEVNET historical. Not a second scoreboard. Intended DID fragment: did:web:csoai.org#board-attestation-1. /api/xrpl is a reader of this root (live, n=16, writes_board=false). Not a GSPC mill. The writer of this root is councilof.ai/root.json; the csoai.org twin can lag behind it and is STALE whenever the bytes differ (issue #1010 tracks the twin) — verify against this host. Hugging Face mirror: csoai/gspc-boards public-root/root.json.

as_of
2026-09-28T07:32:07Z
card_count
310
merkle_root
c2ab6d59e530d7dd5999b790c590ca0513e3af6f6fc1514cb8a282232ea768e3
did_intended
did:web:csoai.org#board-attestation-1
root signature
VALID
/api/xrpl sigs
12/16 leaves carry sig_ed25519; EURCV/EURQ/USDQ/PSC unsigned
signature check
Ed25519 over 274 canonical bytes of {kind, schema, as_of, merkle_root, card_count, did_intended} verifies under did:web:csoai.org#board-attestation-1 (pinned key).

Estate cards still recompute at /gspc-verify (estate mode). Public-root mode on that page loads this same catalogue: 12/16 GH-secret sigs on GET /api/xrpl; EURQ/USDQ unsigned; DEVNET historical.