The Morning Slate

The Morning Slate · Verifier

Verify a prediction

Recompute the SHA-256 hash of any prediction we've published. The hash math runs in your browser — we never receive what you compute. If you arrived via a prediction <code>?id=</code> link, your browser also fetches that prediction's canonical fields from our public dataset to populate the form; the hash computation itself never leaves your machine. You can also do it yourself, fully offline, with the snippets below.

The slate composition

Slate date (UTC)
2026-09-04
Schema version
almanac-slate-v1
Slate hash version
v1
Computed at (UTC)
2026-09-04T06:00:00.521Z
Trigger event
auto_publish
Triggered by
cron
Member count
6
Members (position, prediction ID)
  1. #1 cm420af36c2c4be2cfd33744ab
  2. #2 cm7295ac9398ac6f9b576561ab
  3. #3 cm0a419a11f39e74d32e7b06ab
  4. #4 cmbf540ede0191e9e2bae43aab
  5. #5 cmd6143c667232553eecb724ab
  6. #6 cm1f77bf260504bbe93ccacaab

Live recomputation

(Verification will appear here once data is provided.)

Don't trust us, do it yourself

// Recompute the SHA-256 of this prediction's canonical input.
import { createHash } from "node:crypto";

const canonical =
  `{"members":[{"predictionId":"cm420af36c2c4be2cfd33744ab","slatePosition":1},{"predictionId":"cm7295ac9398ac6f9b576561ab","slatePosition":2},{"predictionId":"cm0a419a11f39e74d32e7b06ab","slatePosition":3},{"predictionId":"cmbf540ede0191e9e2bae43aab","slatePosition":4},{"predictionId":"cmd6143c667232553eecb724ab","slatePosition":5},{"predictionId":"cm1f77bf260504bbe93ccacaab","slatePosition":6}],"schemaVersion":"almanac-slate-v1","slateDate":"2026-09-04"}`;

const computed = createHash("sha256").update(canonical, "utf8").digest("hex");
console.log("computed:", computed);
console.log("expected:", "9769f2837c5995ef4536fd743b37c37a3db202967f981868c7f3d1f60a85f061");
console.log("match:   ", computed === "9769f2837c5995ef4536fd743b37c37a3db202967f981868c7f3d1f60a85f061");

These snippets recompute the slate hash from its canonical payload. Same SHA-256 algorithm as per-prediction hashes — the inputs are just (schemaVersion, slateDate, ordered prediction IDs).