Skip to content

Glossary

Attribution — who wrote a stored event: the principal’s subject and actor, recorded on every event in both lanes and never rewritten. See Storage & event log.

Changeset — the persisted state of a staging session: stages plus two lanes of staged changes, stored in a field of the host document.

Client — the connection to one folder, owning reads, writes, subscriptions and the optimistic overlay. Live and staging sessions are opened on it. Connects over a socket or, in-process, by function calls.

Document — the unit of data: docId, type, server-assigned sequence, JSON data, optionally with embedded Yjs documents. See Documents & folders.

Event log — the append-only history of a document’s accepted changes: one log per sync lane — JSON Patch events under sequence, Yjs update events under yjs_sequence. See Storage & event log.

Folder — the unit of synchronization and authority; one server instance (one Durable Object, in production) owns one folder.

Fractional index — a string key that sorts between its neighbors, used to order records in collections without array indices.

Guard — a precondition on an update: either sequence (document unchanged since base) or patch (RFC 6902 test ops on the touched values). See Changes as JSON Patch.

Host document — the document whose field stores a staging session’s changeset — typically the document that motivates the changes (e.g. a conversation).

In-process client — a full client connected to the server by function calls instead of a socket. See In-process clients.

JSON lane — the half of document sync carrying structured changes as JSON Patch, versioned by sequence. See Two sync lanes.

Lane — in sync: the JSON lane or the Yjs lane. In a changeset: changes (an ordered record set of JSON Patch records) or yjsCopies (one staged Yjs copy per target Y.Doc).

Optimistic update — a change applied to the local view immediately, retired when the server confirms it (or discarded when rejected). See Sync & optimistic updates.

Presence — ephemeral participant state (cursor, selection, display name), carried in named channels: a sys:presence:<presenceType>:<docId> document riding the ordinary document wire — no bespoke protocol — read and written per-session through a synthetic sys:presence-view:<presenceType>:<docId> view. Never stored. See Presence.

Principal — who a client acts as: a subject (the user or service the write is on behalf of; null when anonymous) and an actor (what kind of code is acting — a user’s frontend, a named AI agent, server-side system code). The two are independent, and neither confers privilege: identity is never authority. Stamped onto every stored event as attribution. See Authorization.

Sequence — the per-document, server-assigned, monotonically increasing version number of the JSON snapshot. The Yjs lane has its own version, yjs_sequence. See Two sync lanes.

Session — a document-editing surface on a client. Two kinds share it: a live session, whose writes land on the document immediately, and a staging session, which accumulates the same calls into a changeset to preview and commit atomically. Commit, discard, stages and conflicts exist only on the latter. See Staged sessions.

Soft delete — removing a document from the index and read path while retaining its history, so it can be restored at the exact sequence it left. Deleted documents are listed in sys:trash. See Documents & folders.

Stage — a staging session’s record for one touched document: base sequence, type, create/delete kind, pending rename. No snapshot — the staged patches themselves live in the changeset’s lanes.

Staged Yjs copy — a staging session’s staged Yjs content: the live target Y.Doc forked into a host sub-document that editors bind to and collaborate on natively. Returned by session.getYDoc. Tracks the live target while the session runs, and is merged back into it at commit. See Changesets & lanes.

State vector — Yjs’s compact summary of the content a peer already holds. Subscribes carry one per embedded Y.Doc so the server can answer with exact diffs; the server’s answers carry its own so the client can push back what it lacks. See Two sync lanes.

System document — engine state exposed as a document under the reserved sys: prefix, read and subscribed to like any other. See System documents.

Three-way preview — a derived conflict view comparing base (staged from), head (live now), and staged (base + staged changes). The base is resolved on demand — live head, an in-memory pin, or an event-log replay on a cold client. See Conflict preview & resolution.

Write-behind burst — a run of streamed Yjs deltas buffered in memory and flushed as one merged transaction into the Yjs lane’s log. Single-author, so attribution stays correct. The fold shortens the log rather than perforating it: the surviving rows keep consecutive positions, and the document’s yjs_sequence follows them down, so coalescing is invisible from outside storage. See Storage & event log.

Yjs lane — the CRDT half of document sync: Yjs updates under their own per-document version and stored log, never advancing sequence. See Two sync lanes.

yjs_sequence — the Yjs lane’s per-document version, and each Yjs log row’s position: the document’s value is its latest Yjs event’s, exactly as sequence is its latest JSON event’s. 0 for a document with no Yjs history, fully independent of sequence, and server-side only — no wire event carries it, because a CRDT lane gives clients nothing to do with a version.