SSM-Clock Stamp – Minimal Test Vectors (13)

Purpose. Byte-accurate, copy-pasteable vectors to validate any implementation of SSM-Clock Stamp (SSM-CS). Everything is strict ASCII; all formulas appear in inline code.


Common parameters (apply to both variants)

  • Seed: chain_0 = "0"*64
  • Times and angles (deterministic from UTC):
    wrap360(x) = x - 360*floor(x/360)
    theta_deg = wrap360( (unix_seconds / 86400) * 360 )
    rasi_idx = floor(theta_deg / 30)
    (print theta_deg with exactly 5 fractional digits; IEEE-754 binary64, ties-to-even)
  • Chain rule: chain_k = sha256( ascii(chain_{k-1} + "|" + stamp_core_k) )
  • Stamp core: stamp_core_k = "SSMCLOCK1|" + iso_utc + "|" + rasi_idx + "|" + theta_deg + "|" + sha256(file)
  • Full line: SSMCLOCK1|iso_utc|rasi_idx|theta_deg|sha256(file)|chain
  • Daily roll-up (anchor): rollup_D = sha256( ascii(Stamp_1 "|" ... "|" Stamp_n) )
    (canonical sort by (iso_utc, stamp_core, chain); no kv: tail used here)

Variant A — LF newlines (\n)

File A bytes (hex): 68 65 6c 6c 6f 0a (ASCII: hello\n)
sha256(fileA) = 5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03

iso_utc_1 = "2025-10-13T10:53:57Z"theta_deg_1 = "163.48750"rasi_idx_1 = 5
stamp_core_1 = "SSMCLOCK1|2025-10-13T10:53:57Z|5|163.48750|5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03"
chain_1 = e5243368aaaf8168f02927dd69e02276bce15aa96e261d17bae5ba0e8d315801

Stamp 1 (full line):
SSMCLOCK1|2025-10-13T10:53:57Z|5|163.48750|5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03|e5243368aaaf8168f02927dd69e02276bce15aa96e261d17bae5ba0e8d315801

File B bytes (hex): 77 6f 72 6c 64 0a (ASCII: world\n)
sha256(fileB) = e258d248fda94c63753607f7c4494ee0fcbe92f1a76bfdac795c9d84101eb317

iso_utc_2 = "2025-10-13T10:53:58Z"theta_deg_2 = "163.49167"rasi_idx_2 = 5
stamp_core_2 = "SSMCLOCK1|2025-10-13T10:53:58Z|5|163.49167|e258d248fda94c63753607f7c4494ee0fcbe92f1a76bfdac795c9d84101eb317"
chain_2 = d3d430dc505bbb149f39e372eb52542897cfae44a838e369af954f1d1a92a604

Stamp 2 (full line):
SSMCLOCK1|2025-10-13T10:53:58Z|5|163.49167|e258d248fda94c63753607f7c4494ee0fcbe92f1a76bfdac795c9d84101eb317|d3d430dc505bbb149f39e372eb52542897cfae44a838e369af954f1d1a92a604

Daily roll-up over {Stamp 1, Stamp 2} (canonical order A then B):
rollup_D = b9ebdfba5be3b374a5408b5e05a38b5e219209ad504a48052e687f263a578cba
count = 2


Variant B — CRLF newlines (\r\n)

File A bytes (hex): 68 65 6c 6c 6f 0d 0a (ASCII: hello\r\n)
sha256(fileA) = cd2eca3535741f27a8ae40c31b0c41d4057a7a7b912b33b9aed86485d1c84676

iso_utc_1 = "2025-10-13T10:53:57Z"theta_deg_1 = "163.48750"rasi_idx_1 = 5
stamp_core_1 = "SSMCLOCK1|2025-10-13T10:53:57Z|5|163.48750|cd2eca3535741f27a8ae40c31b0c41d4057a7a7b912b33b9aed86485d1c84676"
chain_1 = 9a08d6a9c721ce6a6fb5dbf7c8ed61d6e9e151ae47fe14098f148e59932fe674

Stamp 1 (full line):
SSMCLOCK1|2025-10-13T10:53:57Z|5|163.48750|cd2eca3535741f27a8ae40c31b0c41d4057a7a7b912b33b9aed86485d1c84676|9a08d6a9c721ce6a6fb5dbf7c8ed61d6e9e151ae47fe14098f148e59932fe674

File B bytes (hex): 77 6f 72 6c 64 0d 0a (ASCII: world\r\n)
sha256(fileB) = 877cfffa459d1c11793b970dd94f9489ef2bf4d2e446acfafef690ee595422d0

iso_utc_2 = "2025-10-13T10:53:58Z"theta_deg_2 = "163.49167"rasi_idx_2 = 5
stamp_core_2 = "SSMCLOCK1|2025-10-13T10:53:58Z|5|163.49167|877cfffa459d1c11793b970dd94f9489ef2bf4d2e446acfafef690ee595422d0"
chain_2 = 883cbef4306a9dd61cac1bc867a7597f1cfcafb743628af348358b5520c5b47c

Stamp 2 (full line):
SSMCLOCK1|2025-10-13T10:53:58Z|5|163.49167|877cfffa459d1c11793b970dd94f9489ef2bf4d2e446acfafef690ee595422d0|883cbef4306a9dd61cac1bc867a7597f1cfcafb743628af348358b5520c5b47c

Daily roll-up over {Stamp 1, Stamp 2} (canonical order A then B):
rollup_D = 39a523aa059777fa18352f4e7aee9164d501b850019e6ff5a541b79387f73d99
count = 2


How to use these vectors (quick check)

  1. Hash: recompute h' = sha256(file_bytes) and compare to sha256(file) in each line.
  2. Clock: from iso_utc, compute theta_deg/rasi_idx and confirm
    rasi_idx == floor(theta_deg/30) and the printed theta_deg matches exactly 5 decimals.
  3. Chain: with chain_0 = "0"*64, verify
    chain_k == sha256( ascii(chain_{k-1} + "|" + stamp_core_k) ) for each record.
  4. Roll-up: canonically sort by (iso_utc, stamp_core, chain), join with literal |, and check
    rollup_D == sha256( ascii(joined) ).

Notes. Keep all content 7-bit ASCII; | is the only delimiter; no spaces; all digests are lowercase 64-hex. Do not copy from rich editors—use raw bytes exactly as listed.


Navigation

Back: SSM-Clock Stamp – Q&A (12B)
Next: SSM-Clock Stamp – Hardware Profile (14)