Objective. Define the minimal conditions under which a verifier MUST return PASS for SSM-Clock Stamp artifacts — deterministic, plain ASCII.
Integrity
- Unmodified files verify
HASH_OK=trueviah' = H_algo(file_bytes)and string-equal to recorded digest (lowercase64-hex). - Any byte change yields
HASH_OK=false→VERDICT=FAIL.
Clock (UTC → angle)
iso_utcparses asYYYY-MM-DDThh:mm:ssZ(UTC, seconds only;23:59:60forbidden).- Deterministic math:
wrap360(x) = x - 360*floor(x/360),theta_deg = wrap360( (unix_seconds/86400) * 360 ),rasi_idx = floor(theta_deg/30). theta_degis printed with exactlytheta_precdigits (default5) using IEEE-754 binary64 round-half-to-even; compare as strings.- Result:
CLOCK_OK=truewhen bothrasi_idxand fixed-printtheta_degmatch.
Chain (append-only)
- If a ledger is provided, rewalk from
chain_0 = "0"*64with each row’skv:chain_algo(or default):chain_k = H_chain( ascii(chain_{k-1} + "|" + stamp_core_k) ). - All rows match recorded
chain; the target file’schainis present →CHAIN_OK=true. - Without a ledger, set
CHAIN_OK=na(does not fail core PASS).
Anchors (daily roll-up)
- If an anchor note is provided, rebuild the same-day set; canonical order by
(iso_utc, stamp_core, chain); literal join"Stamp_1|...|Stamp_n"; computerollup_D' = sha256( ascii(joined) ). - Require
rollup_D' == rollup_sha256and, if present,n == count→ANCHOR_OK=true. - Without a note, set
ANCHOR_OK=na.
KV compliance
- Defaults when
kv:absent:algo=sha256; chain_algo=sha256; theta_prec=5; float=ieee75464; time_mode=derived_utc. - Recognized domains:
algo ∈ {sha256, sha3_256, blake2b-256}chain_algo ∈ {sha256, sha3_256, blake2b-256}theta_prec ∈ {3..9}float = ieee75464time_mode ∈ {derived_utc, observed}
- Unknown
kvkeys are ignored; duplicate keys or out-of-domain values → FAIL (syntax/policy).
Observed-time evidence (if present)
abs( unix(iso_utc) - unix(obs_iso_utc) ) <= tolerance_secandobs_evidence_sha256 == sha256( ascii(concat_of_sources_and_reported_times) )(normalize\r\n→\n).- Report
EVIDENCE_OK=true/false; advisory unless local policy requires.
ASCII discipline
- Stamps are single ASCII lines with
|separators; no spaces around separators; all hashed inputs useascii(...). - Digests are lowercase 64-hex;
theta_deguses.as decimal; no thousands separators.
Backward compatibility
- All v1.1 stamps verify under v1.3: absence of
kv:implies the defaults above.
PASS rule (final)
HASH_OK=trueandCLOCK_OK=trueand (CHAIN_OK ∈ {true, "na"}) and (ANCHOR_OK ∈ {true, "na"}) →VERDICT=PASS.- Otherwise
VERDICT=FAILwith the first failing reason.
Navigation
Back: SSM-Clock Stamp – Batch Verify-All (harness) (5.10)
Next: SSM-Clock Stamp – Float Parity Across Implementations (5.12)