fix(refs): CAS guards on merge, cherry-pick, revert, pull, rebase
Phase 1 of data integrity audit (issue #7): all write_branch_ref callers that advance an existing branch now pass expected_id for CAS protection. RefConflictError surfaced as a retryable user error on mismatch.
Commands fixed: merge (3 sites), cherry-pick (1), revert (1), pull (3), rebase/squash/continue (4). Abort path left unconditional (intentional restore).
11-test regression suite in test_phase1_cas_branch_ref_callers.py using race injection pattern: patches write_branch_ref to advance the branch just before the real write, proving CAS detection without threading.
sha256:8f54a2ad8f91a756ccce8819b0531f2f5b4309ce619ffae7b50bc9c56bd301f3
sha
+43
~67
symbols
sha256:d1eafd5bce0dfbbc3d65d514a5f81a50505fc8306e1d8c57c93eadfc850d7150
snapshot
+43
symbols added
~67
symbols modified
0
dead code introduced
Semantic Changes
110 symbols
+
test_write_branch_ref_cas_uncontested_under_50ms
method
method test_write_branch_ref_cas_uncontested_under_50ms L242–258
+
test_cherry_pick_branch_ref_unchanged_after_failed_cas
method
method test_cherry_pick_branch_ref_unchanged_after_failed_cas L186–193
+
test_cherry_pick_fails_when_branch_advances_concurrently
method
method test_cherry_pick_fails_when_branch_advances_concurrently L171–177
+
test_cherry_pick_succeeds_when_branch_has_not_moved
method
method test_cherry_pick_succeeds_when_branch_has_not_moved L179–184
+
test_merge_branch_ref_unchanged_after_failed_cas
method
method test_merge_branch_ref_unchanged_after_failed_cas L139–148
+
test_merge_fails_when_branch_advances_concurrently
method
method test_merge_fails_when_branch_advances_concurrently L117–122
+
test_merge_succeeds_when_branch_has_not_moved
method
method test_merge_succeeds_when_branch_has_not_moved L133–137
+
test_revert_branch_ref_unchanged_after_failed_cas
method
method test_revert_branch_ref_unchanged_after_failed_cas L226–233
+
test_revert_fails_when_branch_advances_concurrently
method
method test_revert_fails_when_branch_advances_concurrently L213–218
+
test_revert_succeeds_when_branch_has_not_moved
method
method test_revert_succeeds_when_branch_has_not_moved L220–224
~
run
~
Manifest
~
run
0 comments
To add a comment, use the Muse CLI:
muse hub commit comment sha256:8f54a2ad8f91a756ccce8819b0531f2f5b4309ce619ffae7b50bc9c56bd301f3 --body "your comment"
No comments yet. Be the first to start the discussion.