Remove dead members from Snapshot and SyncPlan - #121
Merged
Merged
Conversation
in-jun
commented
Jul 18, 2026
in-jun
left a comment
Owner
Author
There was a problem hiding this comment.
Verified against the current tree: a repo-wide search for .with(, .without(, hasConflicts, and SyncPlan.EMPTY (Kotlin sources plus build scripts) turns up only the declarations being removed here. Conflict reporting genuinely flows through the separately-named SyncResult.Success.hadConflicts, and every surviving .EMPTY reference in the tests resolves to Snapshot.EMPTY, which is retained. Dropping the now-empty SyncPlan companion object along with EMPTY is the right call.
Scope is tight — nothing beyond the four dead members — and it lands squarely on the stated goal of keeping the core-sync model surface small and provable. Looks good to merge.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The core-sync models carry four public members with no call sites anywhere in the repo. A small, provable model surface is the point of core-sync, so these are worth dropping before someone reaches for one and introduces an inconsistent code path.
Snapshot.with/Snapshot.without: mutation helpers on an otherwise-immutable model; snapshots are always rebuilt in full viaSnapshotBuilder, never mutated incrementally.SyncPlan.hasConflictsandSyncPlan.EMPTY: unused; conflict reporting flows through the differently-namedSyncResult.Success.hadConflicts. RemovingEMPTYleaves an empty companion object, so that goes too.Kept
Snapshot.EMPTY/of/containsandSyncPlan.conflicts/localDeletionCount/remoteDeletionCount/action, which are all still referenced. core-sync compiles and its full test suite passes.Fixes #73