MessageId
Purpose
A message's identity — the stable name minted once when a message is first made, owned by no platform. It is the one fact the backbone keeps about every message, and the whole causal layer rides on it: a later message names the ones it follows by their message ids, the timeline folds a correction onto the message that carries the same id, and a parent named but not yet received stands as a hole keyed by its id. Because copies of a message are re-sealed per recipient and so differ byte for byte, the storage address of a copy names bytes, not the message — the identity is minted, not derived from any copy's bytes.
Attributes
- value: is
Textthat carries the identity, such as "m-8001"
Invariants
- The value is not empty.
Scenarios
An id carries its value
Given: the value "m-8001" When: a MessageId is created Then: it is accepted and reads back with value "m-8001"
An empty id is rejected
Given: an empty value When: a MessageId is created Then: the creation is rejected because the value is empty