Nordhavn / specs / convene / core / Conversation

convene / coredata

Conversation

Purpose

The named surface members write into — the case channel as its members think of it. A conversation belongs to exactly one group lineage and is stable across membership changes: revisions come and go, the conversation keeps its identity. The channel of the book — the work of carrying a message between the application and the wire — is something else entirely: not a value in this layer but the seam below it, the Relay port the transport realises. The two are deliberately distinct names for deliberately different things.

Attributes

Invariants

Scenarios

A case conversation over its lineage

Given: conversation id "conv-7421", name "Case 7421", and lineage "g-7421" When: a Conversation is created Then: it is accepted and reads back with that id, name, and lineage

A conversation without a name is rejected

Given: conversation id "conv-7421", an empty name, and lineage "g-7421" When: a Conversation is created Then: the creation is rejected because the name is empty

spoken of by