Purpose. Increase confidence by deriving the same daily anchor from two independent sources and expecting them to match exactly.
Two independent builds (should)
- Ledger anchor — derive
Stamp_ifrom a local append-only ledger, then re-sort canonically (not ledger order). - Sidecar anchor — discover
Stamp_iby scanning sidecar locations and parsing the exact lines, then re-sort canonically.
Deterministic outputs (per source)
- After canonical selection and ordering (see 3.1–3.2), compute the roll-up for each source:
rollup_D_ledger = sha256( ascii(Stamp_1 "|" ... "|" Stamp_n) )rollup_D_sidecars = sha256( ascii(Stamp_1 "|" ... "|" Stamp_n) ) - Also record counts:
count_ledger,count_sidecars. - Expectation:
rollup_D_ledger == rollup_D_sidecarsandcount_ledger == count_sidecars.
If they differ (investigate)
Common causes: missing sidecars, stale ledger export, accidental edits, or non-canonical sort/join. Use this quick checklist:
- Rebuild both sets strictly by UTC day key from
iso_utc→YYYY-MM-DD. - Re-run canonical sort by
(iso_utc, stamp_core, chain)wherestamp_core = "SSMCLOCK1|" + iso_utc + "|" + rasi_idx + "|" + theta_deg + "|" + sha256(file). - Re-join literally with a single
|between full lines:"Stamp_1|...|Stamp_n"(no leading/trailing|). - Re-hash:
sha256( ascii(joined) ). - Diff the sets (ASCII): compare line-by-line; list
missing_in_ledgerandmissing_in_sidecars. - Rewalk chain in the ledger (see 2.4) to detect deletions/reorders; ensure each differing line has a consistent
chainhistory.
Outcome flag (optional reporting)
PARITY_OK=trueif both digest and count match; otherwisefalsewith the smallest witness diff (e.g., first missing line).
Why dual-source parity matters
- It gives auditors two independent constructions of the same public claim.
- When both yield identical
rollup_D, confidence improves at negligible cost.
Navigation
Back: SSM-Clock Stamp – Anchor Publication (3.4)
Next: SSM-Clock Stamp – Verification Procedure (3.6)