Objective. Diagnose and fix a daily roll-up mismatch between a recomputed digest and the published (or expected) anchor — deterministic, plain ASCII.
Setup (inputs)
- UTC date
YYYY-MM-DD. - Source A (e.g., ledger) and Source B (e.g., sidecars).
- Expected or published
rollup_sha256(optional). - Each stamp line is the full ASCII record:
SSMCLOCK1|iso_utc|rasi_idx|theta_deg|sha256(file)|chain[|kv:...]
Reproduce the mismatch (minimal)
- Select same-UTC-day lines from each source (
iso_utc → YYYY-MM-DD). - Canonical order by key
(iso_utc, stamp_core, chain)wherestamp_core = "SSMCLOCK1|" + iso_utc + "|" + rasi_idx + "|" + theta_deg + "|" + sha256(file). - Join literally:
"Stamp_1|...|Stamp_n"(single|, no leading/trailing). - Hash:
rollup_D = sha256( ascii(Stamp_1 "|" ... "|" Stamp_n) ). - Observe mismatch: digest or count differs.
Root-cause checklist (deterministic fixes)
- Day selection (UTC only).
Ensureiso_utcisYYYY-MM-DDThh:mm:ssZ; no subseconds; reject23:59:60. - Order.
Must be(iso_utc, stamp_core, chain); ASCII/byte-wise comparison. - Join.
Use literal|between full lines; no spaces, no trailing|; do not insert\n. - Inner formatting (do not “prettify”).
theta_deg: fixedtheta_precdigits (default5) with IEEE-754 binary64 round-half-to-even; compare as strings.- Digests: lowercase 64-hex (
[0-9a-f]{64}). - Keep any
kv:tail exactly as recorded.
- Set difference (make it explicit).
Compute ASCII diffs:missing_in_ledger = sidecars_set - ledger_setmissing_in_sidecars = ledger_set - sidecars_set
List the first differing line(s) verbatim.
- Ledger continuity (optional but helpful).
Rewalk:chain_k = H_chain( ascii(chain_{k-1} + "|" + stamp_core_k) )withchain_0 = "0"*64; find first break indexk.
Recovery procedure (copy-ready)
- Fix selection, order, join, or restore missing lines as indicated by the diff.
- Recompute:
rollup_D' = sha256( ascii(Stamp_1 "|" ... "|" Stamp_n) ). - If publishing: update the anchor note (and
count) once parity holds across sources. - (Optional) Add
witness_chain_tip=<64-hex>to tie the anchor to the ledger tip.
Expected outputs
- Before fix:
ANCHOR_LEDGER_OK=falseorANCHOR_SIDECARS_OK=false - After fix:
ANCHOR_LEDGER_OK=trueandANCHOR_SIDECARS_OK=true,VERDICT=PASS
Why this works
The Shunyaya Symbolic Mathematical Clock Stamp anchor depends only on public, reproducible ASCII strings. Canonical selection, ordering, and literal joining make differences mechanical to locate and correct.
Navigation
Back: SSM-Clock Stamp – Daily Anchor Parity (ledger vs sidecars) (5.6)
Next: SSM-Clock Stamp – Canonical Formatting (theta precision) (5.8)