Repository navigation
fix(remote-changes): recover file moves across outcome commit gaps - #17
Merged
Merged
Conversation
Retain original batch, policy, namespace, and item evidence before a file rename, then reconcile that evidence before replay revision checks. Commit path and revision together and remove the preparation only with the original batch outcome; preserve uncertainty and local journal work. Fence the checkpoint protocol with SQLite schema 7 and add native ordinary/case-only reopen, interruption, cancellation, and ABI coverage. Refs: MirrorPulse CF-007
MergeSky
approved these changes
Oct 17, 2026
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.
Change type
fix— backward-compatible correctionSummary
A remote file move could commit the native rename and item revision, lose its original batch-outcome commit, then become a spurious
StaleRemoteRevisionconflict on unchanged replay (MirrorPulse CF-007). Persist versioned original batch/entry, policy, store/root, native object/placeholder, item-state, journal, and ancestor evidence before rename. Replay authenticates that preparation before ordinary revision checks and completes the original outcome without renaming or hydrating again, including equal-revision and case-only operations.Use the inspected object handle for non-replacing native rename, retain directory guards through namespace/projection work, and commit path/revision plus projected evidence together. Original outcome/progress and evidence cleanup commit atomically. Uncertain objects, local work, ancestry, or storage retain a retryable entry and its evidence instead of inventing a user conflict. Pending feed observations require reconciliation and are never acknowledged as uploads by recovery.
The official SQLite provider upgrades schemas 0–6 to schema 7, preserving repository data and rejecting older runtimes. Public guidance covers policy matching, cancellation, ambiguous commits, cursor/conflict semantics, custom-store contracts, and conservative legacy behavior.
Verification
Supported scope and remaining evidence
This fixes file moves submitted in the original remote batch. Directory missing-outcome recovery and historical preview.5 gaps without original proof remain outside this fix; existing conflicts are preserved for review. Before projected evidence exists, a rename that clears in-sync under TrackAll remains conservatively unresolved; PreserveForSyncEngine permits earlier-window recovery. Recovery preserves the current in-sync state and does not clear later content or journal work.
The local native evidence is ARM64 under the existing user. x64/ARM64 CI, fresh ordinary-user execution, real process termination/power loss, execution-role rotation, and adversarial write/access races are not inferred from injected in-process commit failures. Simultaneous SDK owners are outside the supported owner model. No package publication or product Adapter cursor completion is claimed.