Same semantics across APIs, meshes, and devices—manifest, subset, stamp; bytes unchanged.
5C. API-M (programmatic APIs)
Apply SSM-NET to REST/GraphQL/gRPC without altering transport semantics. The overlay rides as headers/metadata; payload bytes remain invariant (phi((m,a)) = m).
Binding (copy-ready).
# declarations (visible on the wire)
SSMNET-Manifest: <ManifestID>
SSMNET-Disclosure: value-only | value+band | full
SSMNET-Canonical-Subset: ["value","band","manifest_id"(,"align_ascii"?)]
SSMNET-Body-Hash: sha256=<HEX> # if body exists
SSMNET-Stamp: SSMCLOCK1|<UTC_ISO>|nonce=<...>|sha256=<HEAD>|prev=<HEX or NONE>
Rules (MUST/SHOULD).
- MUST bind exactly the declared subset in the declared order.
- MUST compute sha256 over the exact on-wire body bytes when present.
- MUST NOT let intermediaries reserialize fields listed in the subset.
- SHOULD default to label-first (value+band); expose align only if declared public.
- If align is public, align_ascii MUST be canonical (e.g., "+0.732000").
Pattern (illustrative JSON API).
POST /api/do-thing
SSMNET-Manifest: NETWORK_POSTURE.DEMO
SSMNET-Disclosure: value+band
SSMNET-Canonical-Subset: ["value","band","manifest_id"]
SSMNET-Body-Hash: sha256=<B_REQ>
SSMNET-Stamp: SSMCLOCK1|2025-11-10T07:05:00Z|nA1|sha256=<H_REQ>|prev=NONE
{ "value": { "op": "do-thing", "x": 12 } }
HTTP/1.1 200 OK
SSMNET-Manifest: NETWORK_POSTURE.DEMO
SSMNET-Band: A0
SSMNET-Canonical-Subset: ["value","band","manifest_id"]
SSMNET-Body-Hash: sha256=<B_RES>
SSMNET-Stamp: SSMCLOCK1|2025-11-10T07:05:01Z|nA2|sha256=<H_RES>|prev=<H_REQ>
5D. MESH-M (peer/mesh links)
Peers exchange stamped envelopes over arbitrary links; continuity remains linear per scope.
Binding & behavior.
- Peers MUST preserve linear chains; repairs are append-only.
- Federation level is negotiated per link (label-first → full evidence).
- Peers MAY gossip checkpoints: HEAD=<HEX> for quick recovery.
Envelope sketch.
envelope := {
"value": <opaque/structured>,
"band": "<BandLabel>",
"manifest_id": "<ManifestID>",
"stamp": "SSMCLOCK1|<UTC_ISO>|nonce=<...>|sha256=<HEAD>|prev=<HEX or NONE>"
}
# optional: align (+ align_ascii) if link policy is "full"
Why it helps.
Mesh participants can prove what they forwarded and when—without centralized ledgers—while keeping payload formats intact.
5E. IoT-M (devices & gateways)
Constrained devices carry bands and stamps with minimal overhead; gateways preserve and may append observations.
Device essentials (MUST/SHOULD).
- MUST emit: manifest_id, band, stamp
- MUST keep payload bytes unchanged: phi((m,a)) = m
- MUST compute body hash over exact on-wire bytes if declared
- SHOULD generate nonce via CSPRNG; size declared by manifest/profile
- If align public: MUST emit align_ascii as canonical signed decimal (e.g., "+0.732000")
Gateway behavior.
- SHOULD preserve device stamps and commitments
- MAY append a new stamped observation (append-only, no rewrites)
- MUST NOT reserialize fields included in the device's declared subset
Low-power session hint.
# declare subset once per session
SSMNET-Subset-Decl-ID: S1
SSMNET-Canonical-Subset@S1 := ["value","band","manifest_id"]
# subsequent frames reference S1; any change requires a new declaration id
IoT continuity line (template).
SSMCLOCK1|<UTC_ISO>|nonce=<HEX>|sha256=<HEAD>|prev=<HEX or NONE>
Why it helps.
Even tiny sensors can ship portable meaning with replayable provenance—and gateways can extend the audit trail without touching device bytes.
Navigation
Previous: SSM-NET — HTTP-M & WS-M (5A–5B)
Next: SSM-NET — Golden flows: GET, POST, mirrors, streams, audits (6A–6E)