Privacy-first defaults, verifiable by design
2F. Disclosure modes (privacy-first defaults)
Choose how much you reveal on the wire; integrity and continuity remain verifiable in all modes.
# disclosure modes
value-only # only bytes; band/align not exposed, still stamped/committed
value+band # label-first (default): human band public; align kept logs-only
full # value, band, align (and align_ascii) are public
Norms (MUST / SHOULD).
- MUST enable independent verification of the canonical subset and stamp continuity in all modes.
- SHOULD prefer label-first (
value+band) for privacy; disclosealignpublicly only when parity requires it. - SHOULD publish
align_asciiwith fixed sign/precision whenalignis public to avoid serializer drift. - MUST keep the subset declaration visible so receivers can recompute the digest deterministically.
Receiver parity (at a glance).
if mode == full:
# recompute lane for parity and confirm band via manifest
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) )
assert band == cutpoint_map(align_local, manifest_id)
else: # value-only or value+band
# verify subset digest + continuity; validate band deterministically from disclosed inputs
assert SHA256(serialize(subset_fields)) == HEAD
assert prev chains
Why this matters.
You can prove integrity and timeline without exposing sensitive internals. When ecosystems need public parity, switch to full; otherwise, keep posture private and still be auditable.
2G. Intermediaries (mirrors, caches, relays)
Intermediaries add reach, not rewriting. They carry bytes and proofs forward without altering what the sender committed.
Requirements.
- MUST forward payload bytes unchanged.
- SHOULD preserve upstream sha256 commitments and associated headers.
- MAY append their own stamped observation (a new stamp) without modifying the original envelope.
- MUST NOT rewrite history or alter any previously committed subset.
Intermediary annotation (illustrative).
# original envelope (sender)
value, band, manifest_id, stamp="...|sha256=<HEAD_S>|prev=<...>"
# intermediary adds an observation
obs_subset := ["value","band","manifest_id","intermediary_note"]
obs_HEAD := SHA256(serialize(obs_subset_fields))
obs_stamp := "SSMCLOCK1|<UTC>|nonce=<...>|sha256="+obs_HEAD+"|prev=<HEAD_S>"
# result: linear chain continues; original commitment remains intact
Why this matters.
CDNs, proxies, and data brokers can prove what they saw when they saw it—without tampering with the sender’s original declaration.
Navigation
Previous: SSM-NET — Continuity stamp (2E)
Next: SSM-NET — Epochs & Scope Lifecycle (2H)