Nordhavn / specs / convene / surface

convene / surfaceroot

convene-surface

The root descriptor for the surface crate — the presentation domain. This is the layer a person actually touches, and it has its own professional experts: not case workers and not protocol designers, but the people who decide what a reading looks like — a message list, a composer, a session. Their vocabulary is this crate's vocabulary. The surface turns the comms domain's readable timeline into lines a person reads, turns the words a person typed into a send, and lays the chats a member may enter before them as a list to jump between — nothing more. Everything the system knows stays one layer down: the surface holds no key material of its own, no message store, and no ordering rules; it consumes core's projections and performs core's contexts, in the reader's own seat.

Two ideas carry the design. The surface presents; it never decides. Who may read is the epochs' business; what order messages stand in is the fold's business; whether a send is allowed is the sender's own ring's business. The surface's one judgement of its own is presentational: a blank composer is not a message. A member replies to what they saw. The surface is where a person's reading and a person's writing meet, so the message a post follows is the last message the reading showed — the causal parent is the tip of the presented timeline, not a store's opinion.

Below itself the surface names one seam to the floor — Screen, "present this reading" — which a host binds to whatever actually draws: a terminal for the demonstration, the web page in the browser node. Modeling stops there; layout, styling, and widgets are the floor's craft, not this domain's.

Build

kind: library

Depends on

Contains