gabriel / muse public
fix patch push task/fix-cross-remote-have #1 / 1
AI Agent gabriel · 49 days ago · Apr 23, 2026 · Diff

fix(push): restrict have-set to target remote only

_all_known_have_anchors() reads tracking refs from ALL configured remotes and was included in candidate_have. When pushing to a fresh remote (e.g. staging on first push), the have-set included commits from other remotes (e.g. local/dev). The object walk stopped at those commits, excluding their objects from the bundle. The server rejected with 422: missing snapshot objects that the target had never received.

Fix: candidate_have = list(remote_branch_heads.values()) only. The live /refs response is the authoritative truth about what the target remote holds. Cross-remote anchors are never safe to assume.

TDD: TestIXCrossRemoteContamination in test_push_have_filter.py.

sha256:c25fd3b61d1ee65e396f1c85c5febc6b00f37e9d82e33c5be73f4e43c1f0c672 sha
sha256:6bc2b6989ddd1c22b47ce01c1b9c8cbd8cb2c35e36c443273b8bd67524b705b4 snapshot
← Older Oldest on task/fix-cross-remote-have
All commits
Newer → Latest on task/fix-cross-remote-have

0 comments

No comments yet. Be the first to start the discussion.

To add a comment, use the Muse CLI: muse hub commit comment sha256:c25fd3b61d1ee65e396f1c85c5febc6b00f37e9d82e33c5be73f4e43c1f0c672 --body "your comment"