SSM-Clock Stamp – Failure Modes & Guidance (3.7)

Purpose. Quick triage for anchor-related problems in SSM-Clock Stamp. Each item lists the symptom, likely cause, and a fix, all in plain ASCII.


1) Digest mismatch

  • Symptom: rollup_D' != rollup_sha256.
  • Likely cause: Missing/extra stamp; non-canonical order; wrong join (e.g., newline instead of |); inner field reformatted.
  • Fix:
    1. Re-select same UTC day via YYYY-MM-DD from iso_utc.
    2. Canonical sort by (iso_utc, stamp_core, chain) where
      stamp_core = "SSMCLOCK1|" + iso_utc + "|" + rasi_idx + "|" + theta_deg + "|" + sha256(file).
    3. Join literally: "Stamp_1|...|Stamp_n" (single |, no leading/trailing).
    4. Recompute: rollup_D' = sha256( ascii(joined) ).

2) Count mismatch

  • Symptom: n != count in the note.
  • Likely cause: Anchor metadata out of sync with the set.
  • Fix: Recompute n from the canonical set and republish the anchor note.

3) Source parity fail (ledger vs sidecars)

  • Symptom: rollup_D(ledger) != rollup_D(sidecars) or counts differ.
  • Likely cause: Orphan sidecars; stale ledger export; accidental edits.
  • Fix:
    • Diff line sets (ASCII) to list missing_in_ledger and missing_in_sidecars.
    • Rewalk ledger chain (see 2.4) to detect deletions/reorders.
    • Rebuild both anchors strictly per 3.1–3.3.

4) Wrong separator / whitespace

  • Symptom: Digest differs only on some platforms.
  • Likely cause: Joined with \n or spaces, or added a trailing |.
  • Fix: The joined string must be "Stamp_1|...|Stamp_n" — a single literal | between full lines, no whitespace padding, no trailing/leading separators.

5) Inner formatting drift

  • Symptom: A stamp line looks the same numerically but hashes differ.
  • Likely cause: Re-emitted fields with different formatting (e.g., theta_deg not fixed to theta_prec digits; uppercase hex).
  • Fix: Treat each stamp as an immutable ASCII line. Do not reprint inner fields. Required shapes:
    • theta_deg uses exactly theta_prec digits (default 5) with round-half-to-even.
    • Digests are lowercase 64-hex.

6) Leap-second contamination

  • Symptom: A line includes 23:59:60.
  • Likely cause: Attempted stamping during a leap second (forbidden).
  • Fix: Exclude such lines; producers must not create them; verifiers must reject :60.

7) Day selection error

  • Symptom: Stamps near midnight fall into the wrong set.
  • Likely cause: Local timezone used instead of UTC.
  • Fix: Day key is strictly UTC from iso_utcYYYY-MM-DD.

Navigation
Back: SSM-Clock Stamp – Verification Procedure (3.6)
Next: SSM-Clock Stamp – Operational Cautions (3.8)