fix: convergent-edit phantom conflicts in ops_commute + merge debug instrumentation
ops_commute returned False for two ReplaceOps or AddressedInsertOps at the same address regardless of whether their content matched. When both branches independently made the same change to a symbol (convergent edit), this caused phantom conflicts in muse merge and muse pull even though ours and theirs agreed on the final object_id.
Fix: for replace+replace and addressed-insert+insert at the same address, check content equality (new_content_id / content_id). Equal content commutes.
Added MUSE_MERGE_DEBUG=1 instrumentation writing JSON lines to /tmp/muse_merge_debug.log across merge.py, pull.py, plugin.merge, and merge_ops to capture manifests, op lists, and conflict paths for debugging.
Closes #85 (phantom conflicts on convergent symbol edits).
Semantic Changes
31 symbols
0 comments
muse hub commit comment sha256:39065bc65b1a541916c4ea32ccd53eac38bb93015db2be2e342326064e86c44f --body "your comment"
No comments yet. Be the first to start the discussion.