Goal. Explain how time is represented in an SSM-Clock Stamp, and how daily anchors bind a stamped set to public time—without changing any past stamps.
Declarative time in the stamp (what it means)
- The timestamp in the line is chosen by the stamper:
iso_utc = "YYYY-MM-DDThh:mm:ssZ". - Angles are derived deterministically from that choice:
theta_deg = wrap360( (unix_seconds(iso_utc) / 86400) * 360 )•rasi_idx = floor(theta_deg / 30) - This yields a human-checkable clock state (angles/sectors), but it is not a trusted wall-clock oracle by itself.
Local order vs. public time (two layers)
- Local, tamper-evident order:
chain_k = H_chain( ascii(chain_{k-1} + "|" + stamp_core) )withchain_0 = "0"*64
This proves the ordering of records in a chain; any deletion/reordering breaks subsequentchain_k. - Public, no-later-than time: publish a daily roll-up of the day’s stamps:
rollup_D = sha256( ascii(Stamp_1 "|" ... "|" Stamp_n) )using canonical sort by(iso_utc, stamp_core, chain).
The momentrollup_Dis publicly witnessed (e.g., posted), the set gains a “no-later-than T_pub” bound.
Preferred wording (clarity in claims)
- Use “no-later-than T” (or “not-after T”) when referring to anchors.
- Avoid “not-before T” unless you additionally assert a lower bound (which the basic daily anchor does not provide).
Why anchors are additive (no mutation)
- Anchors are computed from already-issued stamp lines and exported as a separate ASCII digest.
- You can add anchors later, at any cadence (e.g., daily), without re-issuing or editing older stamps.
Stronger practice (optional, recommended)
- Publish the same
rollup_Dto multiple independent channels (redundant witnesses). - Keep a small, signed text note that lists the exact day range and the repository/ledger reference where auditors can re-derive
rollup_D. - For long chains, also keep per-day ledgers listing the exact stamp lines used in the roll-up (pure ASCII).
Acceptance (auditor checklist, anchors)
- Canonically sort the day’s stamps by
(iso_utc, stamp_core, chain). - Join as the literal ASCII string:
"Stamp_1|...|Stamp_n"(single|between full lines; no leading/trailing|). - Compute
rollup_D' = sha256( ascii(joined) ). - Pass if
rollup_D'equals the publishedrollup_D. This yields a public no-later-than bound for that set.
Notes on scope
- Anchors augment time claims; they do not alter file digests, angles, or chain math.
- Faster anchor cadence (e.g., hourly) shrinks any potential backdating window:
max_backdating_window_sec <= anchor_period_sec.
Navigation
Back: SSM-Clock Stamp – Canonical Formatting Rules (1.5)
Next: SSM-Clock Stamp – Observed-time Mode (1.7)