aboutsummaryrefslogtreecommitdiffstats
path: root/src/state/host.rs
Commit message (Collapse)AuthorAgeFilesLines
* state: a document swap keeps the signatures of the changes it keepstv3 days1-3/+4
| | | | | | | | | | | | | Review 2.2: swap_document forgot every signature. After dropping changes taken unjudged (or a rejoin into the same epoch), the node could vouch for none of the changes it kept: under signatures required, those building on an actor waited for that actor's next signature, and for an actor that stopped writing, forever. Signatures::kept_for keeps the signatures of the changes the new document holds, checks each actor's latest again, and keeps those waiting for their changes. This node's replayed changes are signed at once, as before.
* access: an epoch's root is never droppedtv3 days1-2/+9
| | | | | | | | | | | | | | | A REFUSALS naming the swarm's first change made the node receiving it judge that change again in a document that isn't empty, refuse it as "a change without dependencies that isn't the epoch's root", and drop it with everything built on it: its whole document. The first epoch's root is now the first change a document holds, as it comes to an empty one or as it is in one; a change judged again on a peer's word is never refused for having no dependencies; and drop_taken refuses to drop an epoch's root, or anything that would leave nothing kept, logging an error instead. Review finding 1 (critical).
* swarm: changes taken unjudged, dropped (REFUSALS)tv4 days1-1/+85
| | | | | | | | | A node refusing changes a peer brought tells it which broke a rule; the peer judges them itself, and if its rules refuse them too, drops them with all built on them (its document forked without them, a fresh actor), quarantining its own writes among them. Wire version 42. Auth plan M6 (rejoin on taint).
* access: signatures requiredtv4 days1-2/+15
| | | | | | | | "signatures": "required": a change counts only once a signature by its committer vouches for it, and waits until then; every node then signs every change it makes. Auth plan M6.
* access: the policy enforcedtv4 days1-3/+18
| | | | | | | | _continuum/access/policy ({"version": 1}) has every node screen every change it receives, on every path changes come in. A policy a node doesn't know stops its writes through the API. GET /admin/refused. Auth plan M6.
* remake: forgetting and releasing name their usertv4 days1-0/+19
| | | | | | | Forget records and released quarantines name the user who made them, so they are judged by its capabilities. Auth plan M6.
* signatures: changes signed by their nodetv4 days1-0/+2
| | | | | | | | | | Every node signs the changes it commits with its node key, an Ed25519 signature over the change's hash, kept beside the document. One signature on an actor's latest change vouches for its earlier ones. Protocol data and paths listed in _continuum/access/signed are signed, and writes with ?signed=true. Auth plan M5.
* refuse misplaced authorstv4 days1-0/+5
|
* bootstrap: replace pull by progress notifytv10 days1-0/+2
|
* document: allow writes during rejointv10 days1-100/+169
|
* LWW everywhere, mostlytv10 days1-0/+29
|
* remake: copy stale view when writes stoptv10 days1-0/+13
| | | | This ensures that stale reads show every write that was answered.
* state: drop epoch_txtv10 days1-3/+3
| | | | The stamp is the only lock-free epoch label.
* document: reject writes during rejointv10 days1-2/+14
|
* use Automerge as Document instead of AutoCommittv11 days1-5/+31
| | | | This allows a lot of operations to drop mut.
* rename AutoMerge to Documenttv11 days1-9/+9
|
* remake needs sane clocktv11 days1-0/+4
|
* unify request_sync logictv11 days1-2/+1
|
* move ChangeSet from swarm to documenttv11 days1-1/+2
|
* unify sync_on predicatetv11 days1-4/+2
|
* unify source resettv11 days1-3/+2
|
* peers from member list start as unknowntv2026-10-281-3/+3
|
* move keepalive and firewall to pathstv2026-10-281-8/+18
|
* rename PING/PONG to STATUS/STATUS_REPLYtv2026-10-281-2/+2
|
* introduce bounded blob downloadstv2026-10-261-2/+6
|
* wrap unix timestamps in newtypetv2026-10-261-2/+2
|
* unify peers snapshot logictv2026-10-261-16/+4
|
* unify lock logictv2026-10-261-8/+3
|
* split state moduletv2026-10-251-0/+276