Every forecast row carries a SHA-256 commitment_hash computed over a canonical serialization of its fields, plus a prev_hash pointer to the row before it. Together these form an append-only log: tampering with any past row would invalidate every hash downstream.
The chain shows these forecasts have not been altered relative to each other since each row's commit. It does NOT yet prove when each row was written — external timestamp anchoring (OpenTimestamps) is on the Phase 3 roadmap.
The TypeScript canonical-serialization implementation lives at web/lib/forecasts/verify.ts and is byte-equivalent to the Postgres forecasts_canonical_hash function. A known-answer test cross-checks the two on every CI run.
The JSON feed is available at /api/v1/forecasts — paginated, versioned, ordered by seq.
The public record counts official forecasts only. Earlier rows in the ledger are pre-launch scenario drafts and pipeline test data — permanent in the chain, excluded from the record. Calibration measurements (Brier / RPS by domain) publish here as official forecasts resolve.