Add three-way file root apply

This commit is contained in:
Eric Wendland 2026-05-22 14:41:09 +02:00
commit 606641dd4a
5 changed files with 602 additions and 27 deletions

View file

@ -40,12 +40,12 @@ Implementation order:
- `[x]` `geth status` reports the current bootstrap backend, target crate,
target version, and blocker for CAS, KV, and pubsub.
3. `[ ]` Polish file sync reconciliation.
3. `[x]` Polish file sync reconciliation.
Acceptance criteria:
- `[ ]` Add a safe three-way apply path for non-conflicting
- `[x]` Add a safe three-way apply path for non-conflicting
create/update/delete/rename changes.
- `[ ]` Keep ambiguous changes as durable conflicts.
- `[ ]` Add two-root integration coverage.
- `[x]` Keep ambiguous changes as durable conflicts.
- `[x]` Add two-root integration coverage.
4. `[ ]` Replace JSON document state with durable Automerge documents.
Acceptance criteria:
@ -108,11 +108,11 @@ Implementation order:
- `[~]` File sync reconciliation polish.
Acceptance criteria:
- `[ ]` `cas root apply` has a richer three-way base/local/remote reconcile
- `[x]` `cas root apply` has a richer three-way base/local/remote reconcile
path for safe updates and deletes.
- `[ ]` Ambiguous changes continue to produce durable conflicts instead of
- `[x]` Ambiguous changes continue to produce durable conflicts instead of
overwriting local files.
- `[ ]` Tests cover create/update/delete/rename application across two local
- `[x]` Tests cover create/update/delete/rename application across two local
roots.
- `[~]` Durable Automerge documents.
@ -717,8 +717,12 @@ and future group key evolution.
and directories from a CAS tree without deleting extras or overwriting local
edits.
- `[x]` Apply records durable conflicts for differing local paths.
- `[ ]` Future completion adds a richer three-way apply using base/local/remote
trees for automatic safe updates and deletes.
- `[x]` `geth cas root apply <root> --to <path>` uses a registered local
root's previous scan as the base for automatic safe creates, updates,
deletes, and renames when the current local filesystem still matches that
base.
- `[x]` Ambiguous three-way changes remain durable conflicts instead of being
overwritten.
- `[x]` Conflict handling.
Acceptance criteria: