SSM-NET — Bands & Envelope (2B–2C)

Human-readable stance from rulebooks, wrapped in a portable unit

2B. Bands from a published manifest
Humans act on labels, not raw dials. Bands are computed only under a declared manifest so that “safe,” “amber,” and “critical” mean the same thing for everyone at that moment.

# band mapping (normative)
band := cutpoint_map(align, manifest_id)

Requirements (MUST / SHOULD).

  • MUST compute band using the exact manifest referenced by manifest_id.
  • MUST declare boundary inclusivity per cut in the manifest (e.g., [-1.00, -0.80) → "A++").
  • MUST rotate policy by minting a new manifest_id when any cutpoint or obligation changes.
  • SHOULD specify numeric tolerances near boundaries to avoid flip-flop decisions (e.g., cmp_tolerance = 1e-9).

Why it matters.
A published manifest turns subjective safety judgments into deterministic rules. Every receiver can replay the same cuts and arrive at the same band.


2C. Envelope (portable unit of meaning)
An envelope is the minimal, self-describing unit you can send on any transport. It carries the original value, the band derived from the manifest, and a stamp that binds time, order, and a canonical subset for integrity.

# minimal envelope (illustrative)
{
  "value":        <opaque or structured>,
  "align":        <FloatAlign>,            # omit unless align_public = true
  "align_ascii":  "+0.732000",             # include only if align is public
  "band":         "<BandLabel>",
  "manifest_id":  "<ManifestID>",
  "stamp":        "SSMCLOCK1|<UTC_ISO>|nonce=<...>|sha256=<HEX>|prev=<HEX or NONE>"
}

Norms (MUST / SHOULD / MAY).

  • MUST carry value, band, manifest_id, stamp.
  • MUST NOT expose align unless the manifest/profile declares it public.
  • SHOULD include align_ascii (fixed sign/precision, e.g., "+0.732000") when align is public to avoid serializer drift.
  • MAY include extra non-normative fields; only the declared canonical subset is bound by the digest.

Canonical subset & digest (pointer for receivers).
The sender declares exactly which fields are hashed; receivers recompute byte-for-byte.

# canonical subset (example declaration)
subset := ["value","band","manifest_id"]    # optionally "align_ascii" if align is public
HEAD   := SHA256( serialize(subset) )

Continuity (time & order).
Every envelope includes a one-line stamp that locks the subset and links to the prior digest.

# stamp format (normative shell)
SSMCLOCK1|<UTC_ISO>|nonce=<...>|sha256=<HEAD>|prev=<PRIOR_HEAD or NONE>

What receivers do (at a glance).

# minimal receiver flow
assert SHA256(serialize(subset_values)) == HEAD
assert prev chains to local HEAD
band_local := cutpoint_map(align_or_inputs, manifest_id)
accept if all checks pass; append incident note (no edits) otherwise

Why it matters.
The envelope lets any independent party verify integrity, policy, and sequence—without changing a single payload byte.


Navigation
Previous: SSM-NET — Alignment lane (2A)
Next: SSM-NET — Canonical subset & body commitment (2D)