SSM-Clock Stamp – Deterministic Clock from UTC (1.2)

Purpose. Define the ephemeris-free mapping from a UTC timestamp to a human-checkable angle and sector used in SSM-Clock Stamp.

Definitions (UTC → angle/sector)
Let unix_seconds be POSIX time computed from iso_utc (UTC only; format YYYY-MM-DDThh:mm:ssZ).

  • Angle wrap: wrap360(x) = x - 360*floor(x/360)
  • Time→angle: theta_deg = wrap360( (unix_seconds / 86400) * 360 )
  • Sector (rasi): rasi_idx = floor(theta_deg / 30)

Rate constant (for intuition)
Per-second advance (exact): dtheta_per_sec = 360/86400 = 0.0041666667 deg/s (recurring).
A 1-second change in iso_utc moves theta_deg by ~0.0041667 degrees; 30 degrees corresponds to 2 hours.

Deterministic procedure (must)

  1. Parse iso_utc as UTC (no subseconds/offsets) → unix_seconds.
  2. Compute raw angle: theta_raw = (unix_seconds / 86400) * 360.
  3. Wrap once: theta_wrapped = wrap360(theta_raw) → domain [0,360).
  4. Print theta_deg with exactly theta_prec digits (default 5) using IEEE-754 binary64 round-half-to-even.
  5. Compute sector: rasi_idx = floor( float(theta_deg) / 30 ) → integer in [0,11].

Ranges & invariants

  • theta_deg ∈ [0,360) after wrapping; rasi_idx ∈ {0..11}.
  • theta_deg must be compared as a string printed with exactly theta_prec digits.
  • The mapping uses only UTC arithmetic; no ephemeris or leap-year logic beyond POSIX time is involved.

Edge conditions

  • Leap-second ban: 23:59:60 is invalid; verifiers reject any iso_utc with :60.
  • Subseconds: not allowed; iso_utc uses whole seconds only.
  • Timezones/offsets: not allowed; Z (UTC) only.

Audit tip (optional)
For quick checks, verify that two successive seconds differ by ~0.0041667 degrees and yield the same rasi_idx until the next 30-degree boundary.

Navigation
Back: SSM-Clock Stamp – Stamp Format (1.1)
Next: SSM-Clock Stamp – File Hash (1.3)