Topic declaration
messages
messages is the set of schemas that may be published to the topic. Membership means the topic is allowed to carry that schema. It does not assert that such a message is ever published.
message_identity
Message identity is a guarantee provided by the topic’s producers, declaring where the identity of one logical message lives in the payload.
unspecified: No fact relates two carried messages sharing any field values.keyed: For each mapped message schema, the mapping gives the ordered tuple of fields holding that schema’s message identity. The guarantee is: any two messages carried by the topic, each of a mapped schema, whose identity tuples are equal are the same logical message (hence of the same schema, with equal payloads).
- Two publications sharing an identity are attempts at publishing one logical message. The declaration says nothing about how often that message is delivered; delivery is a realization fact.
- Because equal identity implies same schema, cross-schema identity collisions are excluded.
- The mapping may cover a subset of the carried schemas. This is a deliberate asymmetry with the transport’s grouping key, which must place every carried message in some group.
order_id correctly orders the messages of one order and identifies the order; it does not identify the message, because OrderCreated and OrderPaid for one order share it while being different logical messages. The message identity of such a topic is an event_id.
Grouping and ordering are L1, not L0
For a given topic, grouping and ordering are declared either once at the topic runtime or independently at each subscription runtime, and never at both.For the full runtime vocabulary, see Topic and subscription runtime.
Transport order is not execution serialization
A transport ordering guarantee describes the order in which messages are logically observed by the subscription abstraction. It does not imply:- that two consumer invocations cannot overlap
- that the consumer executes one message at a time
- that effects produced by the consumer cannot overtake one another
- or that independent producers had a meaningful business-level happens-before relationship
Ordered transport does not invent business order
If two independent upstream producers concurrently publish messages for the same logical key, a keyed transport may impose a sequence between them. That sequence is a real transport order, but it does not prove that either message was semantically required to precede the other. The verifier distinguishes:- an order that merely exists because a transport serialized concurrent inputs, and
- an upstream semantic or causal precedence that the architecture is required to preserve.
Subscription input
topic, messages (all or only [...]), and optional acknowledge_on_success. It does not carry delivery or dispatch; those are L1 facts declared in a SubscriptionRuntime.
acknowledge_on_success means: when an invocation triggered through this input reaches successful logical completion, the triggering logical source item is acknowledged for this consumer. It does not close an idempotency proof nor prove duplicate collapse.