Architecture
Three layers, strictly ordered by authority:
┌────────── evented layer ──────────┐
agents │ ops: write/rename/claim/intent/… │
│ virtual workspaces (ws = pointer) │
│ bus: repo.<id>.{ops,claims,…} │
└──────┬─────────────────┬───────────┘
│ append │ append (offline)
refs/sturn/wal/* ── git ODB ── refs/sturn/ws/*
│
normal git push/fetch → GitHub — free, signed, ordinaryInvariants
- The WAL is the state. Anything derivable from
refs/sturn/wal/*is a cache (bus cursors, materialized views). - Merges stay git's. Ops never encode merge semantics — claims prevent collisions;
snapsquashes into ordinary commits. - Coordination before work. Claims publish before edits. Discovering a conflict at merge is the failure mode git taught us.
What each piece owes
refs/sturn/wal/<ws>— source of truth, replicates for free- daemon + bus — latency reduction only; optional
refs/sturn/ws/<name>— workspace namespaces; hydration opt-insnap— the bridge back to ordinary git history