editorzero — design exploration · territory: mono-acid · ref NULPUNT-01

NUL0PUNT

Swiss-brutalist · exposed coordinate grid / ink on cool paper · one acid: chartreuse #C6F500 / Archivo Expanded · Archivo · Space Mono / humans + agents as peer co-editors
A Dashboard · Home workspace://acme-research
editorzero
acme-research
Search docs, spaces, agents… ⌘K
NA
Documents
412
+18 this week
Edits today
1,204
▲ 41% · 312 by agents
Open suggestions
23 / 5 by agents
awaiting review · 3 stale

Recent

edited · last 24h →
01 Realtime transport — failover semanticsresearch / sync-layer NAW 4 min ago
02 Onboarding handbook — agent principalshandbook / identity WLMTR 22 min ago
03 Q3 capability matrix — surface parityengineering / spec TRA 1 hr ago
04 Pricing page — public draft v4product / publishing LM 3 hr ago

Spaces

manage →
SP·01128
Engineering
Specs, ADRs, runbooks. Owned schema + dispatcher internals.
9 people·2 agents
SP·0296
Research
CRDT convergence notes, transport experiments, field data.
5 people·1 agent
SP·0351
Handbook
How we work. Public-facing pages publish from here.
14 people·1 agent
B Documents · inside a space space://engineering
editorzero
acme-research / engineering
Filter in space… /
NA
ENGINEERING / ARCHITECTURE /

Sync & transport

filter all editors + New document
# Document Kind Editors Last update
01
Realtime transport — failover semantics
spec · md
NAW weaver editing
4 min · weaver ···
02
Hocuspocus failover — sequence diagrams
draft · md
TRLM2 people
1 hr · TR ···
03
State-vector compaction — RFC
published
ANAarchivist + 1
yesterday · archivist ···
04
Presence & awareness — cursor model
draft · md
LM1 person
2 days · LM ···
05
Offline reconciliation — convergence proof
published
NAWA2 agents + 1
3 days · NA ···
06
Transport benchmark harness — notes
draft · md
Wweaver only
4 days · weaver ···
C Document · reading view doc://realtime-transport-failover
editorzero
engineering / architecture
Share Edit document
NA
ENGINEERING / ARCHITECTURE / SYNC & TRANSPORT

Realtime transport & failover semantics

How editorzero keeps every replica convergent when the websocket drops — and why the dispatcher, not the client, owns the moment of truth.

A self-hostable, AI-native workspace lives or dies on one promise: every editor — human or agent — sees the same document, eventually and provably. Transport is how we keep that promise across flaky networks.

01The convergence contract

Replicas exchange Yjs updates over a single websocket multiplexed per document. The CRDT guarantees that any permutation of those updates converges to identical state. Transport's only job is delivery — never resolution. When delivery fails, we degrade, we do not diverge.

The client is never the source of truth. The dispatcher is. A dropped socket is a delivery problem, not a correctness problem.

02Failover, step by step

  • Detect. Heartbeat lapses past the grace window; the client marks the channel degraded and buffers locally.
  • Buffer. Local edits keep applying against the in-memory doc; the update queue is ordered by Lamport clock.
  • Reattach. On reconnect, the client sends its state vector; the server replies with the missing delta only.
  • Reconcile. Buffered updates merge; the audit log records exactly one entry per applied mutation.

The reattach handshake is deliberately cheap — a state vector is a few hundred bytes regardless of document size, so a client that was offline for an hour pays the same reconnect cost as one offline for a second.

# reattach: send what we have, receive only what we lack
POST /sync/reattach { doc, stateVector }
  → 200 { delta, serverClock } # bytes ∝ divergence, not doc size
Invariant 03

Every mutation produces exactly one audit entry, and the audit log alone reconstructs final state. Failover replays the queue through the same dispatcher path — so a recovered edit is indistinguishable from one that never dropped.

03Why agents change the math

Agents are first-class principals. An agent reconnecting after a network partition follows the identical reattach path as a human — same state vector, same delta, same audit attribution. There is no privileged agent channel and no second code path to drift out of sync.

D Document editor · live co-edit 2 humans + weaver (agent) · connected
editorzero
Realtime transport — failover semantics
NA TR W
Done
Saved · v12 2 editing live
+

Realtime transport & failover semantics

engineering / architecture · draft v12
+

Transport's only job is delivery, never resolution. When the socket drops we degrade — we never diverge. The client buffers locally and replays through the dispatcher on reconnect.

+

On reconnect the client sends its state vector; the server returns only the missing delta, so reconnect cost scales with divergence — not document size.

+

Failover sequence

+

Buffered updates are ordered by timestamp Lamport clock and merged on reattach, and each applied mutation writes exactly one audit entry.

Wweaver · agent suggested 38s ago REPLACE · INLINE
Replace “timestamp” with “Lamport clock” — timestamps aren't monotonic across replicas; ordering by Lamport clock is what the convergence proof in §2 actually relies on.
anchor: relpos ⟨c4·12 → c4·21⟩ · audit #a7f3

Type / for blocks · select text to format · @weaver to delegate

Insert block · "/"
Ask weaver to draft@
HHeading 2##
Paragraph
Bullet list-
<>Code block```
"Quote>
E Admin · members & agents admin://members
editorzero
Admin / acme-research
Find member or agent… ⌘K
NA

Members

24 humans · 3 agents · self-hosted instance
Invite human + Provision agent
Member Type Role Teams Rate / activity Status
NA
Numman Alinumman@acme.dev
Human Owner
EngineeringAdmins
Active
W
weaveragent · key ez_ag_4f…91
Agent Editor
EngineeringResearch
40/min · 312 edits today Live
TR
Tara Reyestara@acme.dev
Human Editor
EngineeringProduct
Active
A
archivistagent · key ez_ag_b2…07
Agent Viewer
Research
12/min · 44 reads today Idle
LM
Lena Märzlena@acme.dev
Human Editor
Product
Away
L
linteragent · key ez_ag_9c…3a
Agent Editor
Engineering
20/min · revoked 1× Idle
NULPUNT — mono-acid system for editorzero · near-black ink on cool paper, one acid: chartreuse #C6F500 themeable · CSS custom properties · WCAG 2.1 AA text