Purpose. A compact MUST/SHOULD checklist for anchoring operations in plain ASCII so every auditor reproduces identical results.
SHALL (must)
- Use UTC day keys only:
iso_utc = "YYYY-MM-DDThh:mm:ssZ"(seconds only, no offsets/subseconds). - Serialize stamps with literal
|separators, no spaces, no leading/trailing|. - Compute anchors with:
rollup_D = sha256( ascii(Stamp_1 "|" ... "|" Stamp_n) )after canonical sort by(iso_utc, stamp_core, chain). - Print angles with exactly
theta_precdigits (default5) using IEEE-754 binary64 round-half-to-even; compare angles as strings. - Emit digests as lowercase 64-hex
[0-9a-f]{64}. - Reject leap seconds: no stamping at
23:59:60. - Recompute
chain_kper link using each row’s declared algorithm:chain_k = H_chain( ascii(chain_{k-1} + "|" + stamp_core_k) )withchain_0 = "0"*64. - Treat unknown
kv:keys as ignorable (forward-compatible); duplicate keys are invalid. - Enforce
float = ieee75464whenever akv:tail is present; any other value → FAIL.
SHOULD (recommended)
- Publish anchors on a regular cadence (e.g., daily) to bound backdating:
max_backdating_window_sec <= anchor_period_sec. - Include both
count=<n>andsource=<ledger|sidecars>in the anchor note. - Keep all content ASCII (7-bit) to simplify cross-platform verification.
- Include stamps exactly as recorded (carry any
kv:tail unchanged). - Keep
algoandchain_algoconsistent within a ledger for operational simplicity (mixing is allowed but increases audit work). - When multi-device stamping is expected, include provenance keys (non-breaking):
kv:chain_id=<8hex>,kv:device=<token>with[A-Za-z0-9._-]{1,32}. - When verifying observed-time sidecars, normalize
\r\nto\nbefore hashing the evidence concatenation forobs_evidence_sha256.
Navigation
Back: SSM-Clock Stamp – Failure Modes & Guidance (3.7)
Next: SSM-Clock Stamp – Rationale (3.9)