Nordhavn / specs / convene / surface / Chat

convene / surfacedata

Chat

Purpose

One entry of a member's presented chat list — the surface's word for a conversation the seat can read, as the rail a person jumps between chats by shows it. A chat is presentation, not knowledge: it carries the lineage a jump lands on — as a Line carries its message id — and the names the reader knows the chat by, and it never carries key material, sealed bytes, or anybody's messages. The domain deliberately holds no group name — naming rides nowhere on the wire — so a chat presents under its people: the shown names of the members the reader would find there, and the reader's own shown name when they stand alone, because a chat with somebody in it always has somebody to name.

Attributes

Invariants

Scenarios

A chat presents its people

Given: lineage "g-7421" and the names "Anne Bruun" and "Karin Dahl" When: a Chat is created Then: it is accepted as the chat of lineage "g-7421" named by "Anne Bruun" and "Karin Dahl"

A chat without a lineage is rejected

Given: an empty lineage and the names "Anne Bruun" When: a Chat is created Then: the creation is rejected because a chat presents a lineage

A chat with nobody to name is rejected

Given: lineage "g-7421" and no names When: a Chat is created Then: the creation is rejected because a chat carries at least one name

spoken of by