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

Purpose. Quick triage for common verification failures in SSM-Clock Stamp. Each item lists the symptom, cause, and what to do next — all in plain ASCII.


1) HASH mismatch (HASH_OK=false)

  • Symptom: h' != sha256(file) (under kv:algo if present).
  • Cause: File bytes changed; wrong file; read in text mode; wrong kv:algo.
  • Action: Re-read file in binary; recompute H_algo(file_bytes); confirm kv:algo; compare lowercase 64-hex strings.

2) CLOCK mismatch (CLOCK_OK=false)

  • Symptom: rasi'_idx != rasi_idx or theta_fmt != theta_deg.
  • Cause: iso_utc not in YYYY-MM-DDThh:mm:ssZ; subseconds/offsets used; wrong rounding (not round-half-to-even); wrong theta_prec.
  • Action: Parse iso_utc as UTC (no subseconds); recompute
    theta'_deg = wrap360( (unix_seconds / 86400) * 360 ) and rasi'_idx = floor(theta'_deg/30); format theta'_deg with exactly theta_prec digits (default 5) using IEEE-754 binary64 banker’s rounding; compare as strings.

3) Leap-second violation

  • Symptom: iso_utc has :60 → reject.
  • Cause: Attempted stamp at 23:59:60.
  • Action: Do not stamp at the leap second; use a valid second (00..59).

4) CHAIN rewalk failed (CHAIN_OK=false)

  • Symptom: Mismatch at row k:
    H_chain_k( ascii(chain_{k-1} + "|" + stamp_core_k) ) != chain_k.
  • Cause: Deletion/insertion/reorder; used the wrong chain_algo; rebuilt stamp_core_k with a different theta_deg string; non-ASCII join (spaces/Unicode).
  • Action: Rebuild stamp_core_k exactly; rewalk from chain_0 = "0"*64; use the declared kv:chain_algo per row; ensure concatenation is ASCII with a single literal |.

5) Anchor mismatch (ANCHOR_OK=false)

  • Symptom: rollup_D' != rollup_sha256 or n != count.
  • Cause: Non-canonical order; missing/extra stamp; wrong day selection; wrong join string.
  • Action: Select same UTC day; sort by (iso_utc, stamp_core, chain); join as "Stamp_1|...|Stamp_n" (literal |, no leading/trailing); compute sha256( ascii(joined) ).

6) KV invalid (syntax/domain)

  • Symptom: Unrecognized value or duplicate key → FAIL.
  • Cause: theta_prec outside {3..9}; float != ieee75464; time_mode not in {derived_utc, observed}; |Δ|>30 for ssmc_hint_min; malformed chain_id or device; duplicate keys.
  • Action: Enforce domains; ignore unknown keys; reject duplicates/out-of-domain values.

7) Orphan sidecar (evidence)

  • Symptom: Evidence present but source file missing.
  • Cause: File moved/deleted.
  • Action: Report HASH_OK=unknown (cannot compute); do not pass core checks without the file.

8) Mixed line endings / locale drift

  • Symptom: Hashes/angles differ across systems.
  • Cause: Text-mode reads (CRLF normalization); locale printing affecting theta_deg.
  • Action: Always read binary; print with . decimal; enforce fixed digits and binary64 banker’s rounding.

9) Wrong field shapes

  • Symptom: Extra spaces, uppercase hex, trailing |, offsets in time.
  • Cause: Non-canonical formatting.
  • Action: Ensure one ASCII line; |-separated; lowercase 64-hex; iso_utc ends with Z, seconds only.

Navigation
Back: SSM-Clock Stamp – Verdict Logic (2.6)
Next: SSM-Clock Stamp – Canonical Formatting & Normalization (2.8)