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
- lineage: is
Textthat carries the group lineage this chat presents — the identity a jump lands on - names: is every
Textthat the reader knows the chat by — the shown names of its current members other than the reader, or the reader's own shown name when they stand alone
Invariants
- A chat presents a lineage — an entry that jumps nowhere is not an entry.
- A chat carries at least one name — a chat with nobody to name is not a chat.
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