Purpose. A concise, plain-ASCII checklist for verifying an SSM-Clock Stamp end-to-end: file bytes, UTC-derived angles, chain position, and optional daily anchors.
1) Inputs & parse (single line)SSMCLOCK1|iso_utc|rasi_idx|theta_deg|sha256(file)|chain[|kv:...]
- Split on
|(ASCII only). - If a
kv:tail exists, parsekey=valuepairs separated by;. Unknown keys are ignored.
2) File digest (integrity, must)
- Choose file-digest algorithm:
algo = kv:algoelsesha256. - Recompute
h' = H_algo(file_bytes); compare to recordedsha256(file)(hex). - Pass iff hex strings match (case-insensitive but emit lowercase in stamps).
3) UTC string & leap-second check (must)
iso_utcmust beYYYY-MM-DDThh:mm:ssZ(UTC only; no subseconds, no offsets).- Reject if
hh:mm:60(leap second23:59:60) appears.
4) Deterministic angles (must)
- Compute POSIX time from
iso_utc→unix_seconds. theta_tmp = (unix_seconds / 86400) * 360theta_wrapped = wrap360(theta_tmp)wherewrap360(x) = x - 360*floor(x/360)- Precision:
p = kv:theta_precelse5; formattheta_wrappedwith exactlypdigits usingIEEE-754 binary64round-half-to-even →theta_fmt. - Check:
theta_fmt == theta_deg(string equality). - Compute
rasi' = floor( float(theta_fmt) / 30 ); checkrasi' == rasi_idx.
5) Chain step (tamper-evident order)
- If you have the previous tip
chain_{k-1}:chain_k' = H_chain( ascii(chain_{k-1} + "|" + stamp_core) )
wherestamp_core = "SSMCLOCK1|iso_utc|rasi_idx|theta_deg|sha256(file)"andH_chain = kv:chain_algoelsesha256. - Accept if
chain_k' == chain(hex). - If previous tip is unknown, validate shape:
chain ∈ [0-9a-f]{64}(lowercase recommended); then verify when previous tip is available (e.g., in a ledger).
6) Anchors (if present/published)
- Canonical sort the day’s stamps by
(iso_utc, stamp_core, chain). - Join as
"Stamp_1|...|Stamp_n"(literal|, no leading/trailing). - Compute daily anchor:
rollup_D' = sha256( ascii(joined) ). - Accept if
rollup_D'equals the publishedrollup_D(public “no-later-than” bound).
7) kv: acceptance checks
algo ∈ {sha256, sha3_256, blake2b-256}→ digest length 64 hex.chain_algo ∈ {sha256, sha3_256, blake2b-256}→ digest length 64 hex.theta_prec ∈ {3..9}(default5).float == ieee75464(mandatory).time_mode ∈ {derived_utc, observed}.ssmc_hint_min = Δallowed iff|Δ| <= 30(minutes); advisory only.chain_idmatches[0-9a-fA-F]{8};devicematches[A-Za-z0-9._-]{1,32}.- Unknown keys: ignored (forward-compatible).
- Any invalid value: FAIL.
Common failure reasons (quick triage)
theta_degnot printed with exactlytheta_precdigits (string mismatch).iso_utcnot in...Zform or includes subseconds/offsets.- Leap second (
:60) present. - File/chain digests not 64-hex or don’t match recomputation under declared algos.
floatnotieee75464, ortime_modeoutside allowed set.
Navigation
Back: SSM-Clock Stamp – Core Ideas & Day-one Benefits (0D)
Next: SSM-Clock Stamp – Normative Specification — Stamp (1)