aboutsummaryrefslogtreecommitdiffstats
path: root/src/remake/records.rs
Commit message (Collapse)AuthorAgeFilesLines
* rules: a carried remake record taken from the coordinator its snapshot namestv3 days1-0/+1
| | | | | | | | | | | | | | | | | 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.
* store: keys_at tells no map from an empty onetv4 days1-0/+4
| | | | | | | | 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: decouple grace time from node's keepalivetv10 days1-2/+21
|
* use Automerge as Document instead of AutoCommittv11 days1-6/+7
| | | | This allows a lot of operations to drop mut.
* store function accept any documenttv11 days1-6/+10
|
* tests write through document::testing helperstv11 days1-46/+45
|
* remake coordination use document, not automergetv11 days1-15/+15
|
* replace EpochInfo by EpochRecordtv12 days1-16/+1
|
* add epoch retention teststv2026-10-261-0/+29
|
* wrap unix timestamps in newtypetv2026-10-261-25/+29
|
* allow humand-friendly durations in APItv2026-10-261-9/+9
|
* move protocol paths to dedicated moduletv2026-10-261-4/+5
|
* add clock moduletv2026-10-251-7/+0
| | | | | The Clock module is the system clock that every unix timestamp new goes through. It comes with an offset that only tests can set.
* bump abort margin & allow aborting active remaketv2026-10-251-3/+4
|
* compact remake fixes base at the committv2026-10-241-12/+76
| | | | | | | Instead of fixing base heads at when proposed, compact fixes them when committing. This shrinks the window where writes can be lost if their author restarts to the switch delay; during replace and import remakes writes can still be lost during the voting period.
* allow superseding expired remakestv2026-10-241-3/+86
|
* add votes registertv2026-10-241-21/+110
|
* put remake content into blobstv2026-10-241-7/+30
|
* introduce majority voting on remakestv2026-10-241-3/+35
|
* make remake switch delay configurabletv2026-10-211-0/+5
|
* allow choosing the base in remakestv2026-10-211-1/+1
| | | | | | | | | POST /admin/remakes accepts "baseHeads": ["<hex>", ...], for example the heads of an earlier GET /store?heads=true. Every head must be in the coordinating node's document, otherwise the request gets a 400. Without it, the base is the current heads. This works for any kind.
* turn compaction into a kind of remaketv2026-10-211-0/+21
|
* rename compaction to remaketv2026-10-211-0/+428