aboutsummaryrefslogtreecommitdiffstats
path: root/src/remake/delta.rs
Commit message (Collapse)AuthorAgeFilesLines
* access: a change judged by the policy it was written under, locally tootv3 days1-1/+4
| | | | | | | | | Review 2, N10: the judgement before a change leaves (1140) and a replay's (1141) skipped changes when the document *with* the change had no policy it enforces. A write removing the policy, or setting one the node doesn't know, then left unjudged, while receivers judge it at its dependencies, where the policy was enforced. Both now read the policy at the heads before the change, as receivers do.
* remake: a replay taken back keeps the node its authortv3 days1-1/+72
| | | | | | | | | | | | | Review 2, N4: replay_newest names the node the document's author once, before its first group. Taking a refused group back forks the document at the heads before it, and Automerge's fork has no author; when the refused group was the actor's first change, the next one was committed as seq 1 without the footer naming the node, refused as "it names no node", taken back too, and so on: the whole replay in the quarantine with a misleading reason. The fork now names the node its author again. Test: the first group refused (a capability revoked in the new epoch), the next replayed.
* remake: replays judged before they go intv3 days1-2/+113
| | | | | | | | | | | | | | | 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 writerstv4 days1-22/+180
| | | | | | | | 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).
* store: keys_at tells no map from an empty onetv4 days1-2/+2
| | | | | | | | registry::exists counted any value at _continuum/users as a registry; keys_at answers None where there is no map, and its users (records, members, forget records, remakes) say what they make of it. Auth plan M1 (fix).
* remake: read ops, not diffstv10 days1-5/+4
| | | | This gives bench_replay a speedup of ~8x/64x/280x.
* LWW everywhere, mostlytv10 days1-4/+283
|
* use Automerge as Document instead of AutoCommittv11 days1-35/+37
| | | | This allows a lot of operations to drop mut.
* tests write through document::testing helperstv11 days1-61/+56
|
* one function for changed pathstv11 days1-27/+6
|
* add changed_path minimality testtv2026-10-261-0/+69
|
* move protocol paths to dedicated moduletv2026-10-261-12/+7
|
* add replay testtv2026-10-251-0/+65
|
* nodes keep list of every actor ID they've usedtv2026-10-251-8/+9
|
* add votes registertv2026-10-241-2/+5
|
* turn compaction into a kind of remaketv2026-10-211-8/+47
|
* rename compaction to remaketv2026-10-211-0/+387