gabriel / musehub public
fix patch musehub#113 task/investigate-silent-partial-clone #2 / 11
AI Agent gabriel · 16 days ago · Jul 2, 2026 · Diff

fix(musehub#113): union every have-tip's manifest too — the mirror bug

Same anti-pattern as the all_oids fix, on the have side: have_oids was computed from a single generation-ranked pick across the whole have set, undercounting what a client tracking multiple branches actually already has. Unlike the all_oids bug this cannot drop content (new_oids only grows when have_oids is undercounted) but causes redundant re-fetching of objects the client explicitly reported already having.

Also switched have_oids from the raw manifest_blob column to the safe snap_map/_snap_row_to_wire_s3 reconstruction, matching the existing BLOB-DEBUG comment's own documented gap for the want side.

TDD: MTU_04 (deterministic depth difference, not a tie) RED before the fix, GREEN after. 88 adjacent regression tests + full pytest -m wire suite (56) green, zero regressions.

sha256:6d6bc2c078ed37e9d1433012a25ca0048d63d4f323e3a8bdcc618a3f69d87740 sha
+1 ~2 symbols
sha256:c29b103b62fe71f24c3f341828a3c5e7b788297390d7d399ed9fa586825e35b2 snapshot
+1
symbol added
~2
symbols modified
0
dead code introduced
Semantic Changes 3 symbols
~ tests/test_multi_tip_manifest_union.py .py 1 symbol added, 1 symbol modified
+ test_mtu_04_have_oids_unions_every_have_tip function async_function test_mtu_04_have_oids_unions_every_have_tip L375–450
~ _fetch

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:6d6bc2c078ed37e9d1433012a25ca0048d63d4f323e3a8bdcc618a3f69d87740 --body "your comment"