Nordhavn / specs / convene / core / MessageId

convene / coredata

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

Invariants

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

spoken of by