SSM-Clock Stamp – Clarifications & Agility (0B)

Scope. Concise, normative clarifications for the stamp string, required fields, and exact computations. All outputs are plain ASCII.

Float determinism (must).
All intermediate math SHALL use IEEE-754 binary64; decimal point is '.'; no thousands separators.

Canonical angle string (must).
theta_deg MUST be rendered with exactly theta_prec fractional digits using round-half-to-even. Default theta_prec = 5.

UTC string (must).
iso_utc is UTC-only in fixed form YYYY-MM-DDThh:mm:ssZ (no subseconds, no offsets).

Leap-second policy (must).
Stamping during 23:59:60 is forbidden. Verifiers MUST reject any stamp whose iso_utc claims :60.

Algorithm agility (kv: tail).
Declare per-stamp algorithms without changing the base fields:

  • kv:algo (file digest) ∈ {sha256, sha3_256, blake2b-256}
  • kv:chain_algo (chain digest) ∈ {sha256, sha3_256, blake2b-256}
    Expected hex length for both digests: 64 (256-bit).
    Rule: Verifier MUST recompute using the declared algorithms and compare as lowercase hex.

Deterministic clock from UTC (recap).
wrap360(x) = x - 360*floor(x/360)
theta_deg = wrap360( (unix_seconds / 86400) * 360 )
rasi_idx = floor(theta_deg / 30)

Append-only chain (recap).
stamp_core = "SSMCLOCK1|" + iso_utc + "|" + rasi_idx + "|" + theta_deg + "|" + h_file
chain_0 = "0"*64
chain_k = H_chain( ascii(chain_{k-1} + "|" + stamp_core) ) (H declared by kv:chain_algo, default sha256)

Large files (allowed).
sha256(file_bytes) (or algo) MAY be computed via streaming; the digest MUST equal the monolithic hash of the same bytes.

Observed-time mode (optional).
Use kv:time_mode=observed if you set iso_utc from lightweight observations (e.g., OS clock, HTTPS Date, org NTP, GPS).
Typical evidence (ASCII sidecar, not part of the stamp):
obs_iso_utc=<ISO_Z>tolerance_sec=<int>delta_sec=<int>obs_sources_ascii=<list>obs_evidence_sha256=<hex>

Advisory refinement (optional, non-breaking).
kv:ssmc_hint_min = Δ with |Δ| <= 30 minutes. Verifiers MAY compute an advisory theta_deg' using unix_seconds + 60*Δ; core verification stays anchored to iso_utc.

Alignment meta (optional, non-breaking).
kv:a_stamp ∈ (-1,+1) — a bounded quality scalar carried as metadata; it does not affect pass/fail.

Backdating bound & anchors (policy).
Bound offline backdating by anchor cadence:
max_backdating_window_sec <= anchor_period_sec
Daily anchor: rollup_D = sha256( ascii(Stamp_1 "|" ... "|" Stamp_n) ) with canonical sort by (iso_utc, stamp_core, chain).

Provenance helpers (optional, non-breaking).
kv:chain_id = <8 hex> (e.g., 1a2b3c4d), kv:device = <ascii_token> with [A-Za-z0-9._-]{1,32} — aids safe multi-device merges; unknown kv: keys are ignored by verifiers.

Acceptance (summary checks).

  • theta_deg string uses exactly theta_prec digits (default 5) under IEEE-754 binary64 rounding.
  • File and chain digests match recomputation under declared algo/chain_algo.
  • float == ieee75464; time_mode ∈ {derived_utc, observed}; otherwise FAIL.
  • If present: |ssmc_hint_min| <= 30; chain_id and device match their patterns.
  • Unknown kv: keys: ignored (forward-compatible).

Navigation
Back: SSM-Clock Stamp – One-line Format & Core Rules (0A)
Next: SSM-Clock Stamp – Quick Q&A: Integrity • Clock • Anchors (0C)