SSM-NET — Epochs & Scope Lifecycle (2H)

Reset accumulators without losing truth or continuity

Purpose (in one line).
Long-running streams can reset (U,W) without breaking auditability: epochs are declared, stamps stay linear, and math remains deterministic.

Kernel reminder (context).

# alignment lane kernel
a_c := clamp(a_raw, -1+eps_a, +1-eps_a)
u   := atanh(a_c)
U  += w*u ; W += w
align := tanh( U / max(W, eps_w) )

Definitions.

  • Scope. The continuity domain for stamps and digest replay (e.g., URL, stream id, topic, or device).
  • Epoch. A declared boundary within a scope at which accumulators reset.
  • epoch_id. Stable, human-readable token for the current epoch; monotonic within a scope.

Norms (MUST / SHOULD / MAY)

1) Declaration on the wire (MUST).

  • When an epoch starts, stamp the first post-reset item and declare epoch_id on that item and all subsequent items in the epoch.

2) Reset semantics (MUST).

# at epoch boundary
U := 0
W := 0
# kernel order remains: clamp -> atanh -> accumulate -> tanh

3) Manifest stability (MUST).

  • Epoch creation MUST NOT change eps_a, eps_w, or w. Any change → new manifest_id.

4) Receiver parity (SHOULD).

# recompute per epoch independently
# expect continuity of stamps (truth), not of (U,W) values across the boundary

5) Epoch id monotonicity (SHOULD).

  • epoch_id strictly increases (lexical or numeric) within a scope.

6) Gap handling (MAY).

  • After outages/backfills, you may start a new epoch; the prev chain must remain linear.

Serialization & discovery

Profile-level field (wire).

# include on every item of the epoch
SSMNET-Epoch: <epoch_id>

Checkpoint (optional).

/.well-known/ssmnet/checkpoint
# MAY expose: { HEAD: <hex>, epoch_id: <epoch_id> }

Evidence bundle (optional).

# example contents
epochs.txt  # lists epoch_id, first index/time, last digest seen


Examples (illustrative)

Epoch rollover by size/time.

# last item of epoch_id=2025W44
... | sha256=<HEX_A>|prev=<HEX_Z>  -> yields HEAD=<HEX_A>

# first item of epoch_id=2025W45
SSMNET-Epoch: 2025W45
prev=<HEX_A>                 # linear continuity across epochs
U := 0 ; W := 0              # math reset (documented by epoch declaration)

Operational rotation (daily epochs).

epoch_id := YYYYMMDD
# manifests unchanged; disclosure unchanged; stamps continue linearly


Prohibited behaviors

  • MUST NOT silently reset (U,W) without declaring a new epoch_id.
  • MUST NOT change eps_a, eps_w, or w at an epoch boundary (that’s a policy change → rotate manifest_id).
  • MUST NOT fork the prev chain at an epoch boundary; continuity remains single-link linear.

Audit expectations

Auditors can:

1) Walk stamps across epochs (linear prev).
2) Verify per-epoch lane parity within tolerances:
   - batch vs stream: ≤ 1e-6
   - shard-merge:     ≤ 1e-12
3) Confirm kernel parameters match the manifest before/after the boundary.


Minimal receiver algorithm (epoch-aware, L2/L3)

state:
  HEAD := "NONE"
  epoch_active := null
  U := 0 ; W := 0

for each item e in order:
  # 1) integrity & continuity
  DIGEST := SHA256(serialize_declared_subset(e) [+ raw_body_bytes_if_declared])
  require e.stamp.sha256 == DIGEST
  require e.stamp.prev == HEAD or e.stamp.prev == "NONE"  # genesis
  HEAD := DIGEST

  # 2) epoch handling
  if e.epoch_id != epoch_active:
      epoch_active := e.epoch_id
      U := 0 ; W := 0

  # 3) parity (when align is public)
  if align_public(e.manifest_id):
      a_c := clamp(a_raw, -1+eps_a, +1-eps_a)
      u   := atanh(a_c)
      U  += w*u ; W += w
      align_local := tanh( U / max(W, eps_w) )
      require e.band == cutpoint_map(align_local, e.manifest_id)

  # 4) accept (or flag + append stamped incident on failure)


One-line takeaway for Section 2
“A small, deterministic lane + manifest-based bands + a declared subset + a one-line stamp = meaning that travels and can be replayed by anyone.”


Navigation
Previous: SSM-NET — Disclosure & Intermediaries (2F–2G)
Next: SSM-NET — Manifests: purpose, fields, rotation (3A–3C)