`compute_sync_actions` emits no action for files that are missing from both local and remote but still tracked in the sync base (the `(None, None, Some(_))` arm). Nothing else cleaned those entries, so `.syncstate.json` grew forever every time a file was deleted both locally and remotely — and on each subsequent sync the same no-op match fired again. Add a `prune_orphan_bases` pass that runs before `compute_sync_actions` in `sync_workspace_inner`, dropping any base entry whose path is in neither the local nor remote scan. Unit-tested in isolation. |
||
|---|---|---|
| .. | ||
| src | ||
| Cargo.toml | ||