Purpose. Let any observer verify a published daily anchor for a UTC day using only plain ASCII rules.
Inputs
- Anchor note with
date,rollup_sha256(and optionallycount). - All stamp lines for that UTC date (from ledger or sidecars).
Procedure (deterministic, copy-ready)
- Collect the set (same UTC day).
Include every full line whoseiso_utcyields the day keyYYYY-MM-DDof the anchor date. Identity is the entire line as recorded:SSMCLOCK1|iso_utc|rasi_idx|theta_deg|sha256(file)|chain[|kv:...] - Canonical ordering.
Sort by the tuple(iso_utc, stamp_core, chain)wherestamp_core = "SSMCLOCK1|" + iso_utc + "|" + rasi_idx + "|" + theta_deg + "|" + sha256(file) - Literal join.
Build the exact ASCII string"Stamp_1|...|Stamp_n"— literal|between full lines; no leading/trailing|. - Compute roll-up.
rollup_D' = sha256( ascii(Stamp_1 "|" ... "|" Stamp_n) )
Output must be lowercase 64-hex. - Compare to the note.
Requirerollup_D' == rollup_sha256.
If the note includescount, also requiren == count.
Verdict (anchor)
- Valid anchor: digests match (and count, if provided). Treat the anchor’s publication time as the public no-later-than bound for all included stamps.
- Invalid anchor: report
digest mismatchorcount mismatch; rebuild selection/order/join exactly per steps above.
Notes
- If
n = 0, the correct digest issha256( ascii("") ). - Do not reformat inner fields (e.g.,
theta_degdigits, hex case). All comparisons are ASCII byte-wise.
Navigation
Back: SSM-Clock Stamp – Dual-source Parity (3.5)
Next: SSM-Clock Stamp – Failure Modes & Guidance (3.7)