aboutsummaryrefslogtreecommitdiffstats
path: root/src/remake/switch.rs
Commit message (Collapse)AuthorAgeFilesLines
* rules: a carried remake record taken from the coordinator its snapshot namestv3 days1-1/+2
| | | | | | | | | | | | | | | | | Review finding 7, second part: a record carried into a new epoch whole (proposal and decision in one change) was taken from any member, for any remake ID. A member could write a forged record, decision included, for a fresh ID in a single change. The snapshot's epoch metadata now names the remake's coordinator, as the quorum built it. The carried-record exception holds only in a later epoch, only for the remake that made it, and only from the coordinator its snapshot names, where there is no record yet. Wire version 43: the snapshot, and so the epoch ID, changes. The review suggested carrying the record inside the snapshot instead. The snapshot can't hold the decision, which names the snapshot's own hash. So the snapshot vouches for who may carry the record instead.
* remake: replays judged before they go intv3 days1-0/+2
| | | | | | | | | | | | | | | A switching or rejoining node replays late writes as fresh changes naming each write's user, and nothing judged them before they left: a replay every node would refuse (a revoked capability, a second envelope at a signed path, readers changed) was refused everywhere, and with it everything the node wrote after it. Under a policy, replay_newest now judges each group it commits as every node will (rules::judge_held, in the new epoch); one they would refuse is taken back (forked at the heads before it, same actor) and its paths quarantined with the reason. replay_newest takes the epoch. Review finding 3 (remake replays).
* remake: replays keep their writerstv3 days1-3/+14
| | | | | | | | A remake's replay writes each value as the user who wrote it, splitting where several users wrote under a path, so replays are judged as the original writes. Auth plan M6 (remakes, 2.4).
* document: allow writes during rejointv9 days1-1/+1
|
* LWW everywhere, mostlytv9 days1-10/+20
|
* document: reject writes during rejointv10 days1-1/+1
|
* use Automerge as Document instead of AutoCommittv10 days1-5/+12
| | | | This allows a lot of operations to drop mut.
* remake coordination use document, not automergetv10 days1-8/+5
|
* move ChangeSet from swarm to documenttv11 days1-1/+1
|
* remake worker wakes up when vote is duetv2026-10-261-0/+4
|
* make clippy happy againtv2026-10-261-4/+2
|
* unify lock logictv2026-10-261-8/+3
|
* move protocol paths to dedicated moduletv2026-10-261-2/+3
|
* add clock moduletv2026-10-251-6/+12
| | | | | The Clock module is the system clock that every unix timestamp new goes through. It comes with an offset that only tests can set.
* only keep list of actor IDs within one epoch (fixup)tv2026-10-251-0/+2
|
* nodes keep list of every actor ID they've usedtv2026-10-251-1/+4
|
* allow superseding expired remakestv2026-10-241-0/+4
|
* remake coordinators resume after restarttv2026-10-241-0/+4
|
* put remake content into blobstv2026-10-241-1/+14
|
* introduce majority voting on remakestv2026-10-241-1/+4
|
* make remake switch delay configurabletv2026-10-211-1/+6
|
* turn compaction into a kind of remaketv2026-10-211-30/+67
|
* rename compaction to remaketv2026-10-211-0/+248