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

fix(musehub#113): union every want-tip's manifest instead of a single generation-ranked pick

Root cause: wire_fetch_mpack computed all_oids from exactly one snapshot (ORDER BY generation DESC LIMIT 1 across all walked commits), silently dropping every other requested tip's unique blobs. Affects any multi-tip want set, tied generations or not, including a plain clone of the default branch whenever any other branch in the repo is deeper.

TDD: tests/test_multi_tip_manifest_union.py (MTU_01 sibling tie, MTU_02 differing generations, MTU_03 default branch loses own content) all RED before the fix, GREEN after. 84 adjacent regression tests + full pytest -m wire suite (56) green, zero regressions. Live E2E confirmed against a fresh local repo.

sha256:739d791a021442da80466654f296365d6f86f557589c3b116aa0022b340eeb0b sha
+48 ~4 symbols
sha256:7dd83495e0d86872f105a27dc4779350dfac6678e546a60021184181de483359 snapshot
+48
symbols added
~4
symbols modified
0
dead code introduced
Semantic Changes 52 symbols
+ branch_labels variable variable branch_labels L22–22
+ depends_on variable variable depends_on L23–23
+ down_revision variable variable down_revision L21–21
+ downgrade function function downgrade L48–51
+ Sequence import import Sequence L13–13
+ Union import import Union L13–13
+ annotations import import annotations L11–11
+ op import import op L15–15
+ sa import import sa L16–16
+ revision variable variable revision L20–20
+ upgrade function function upgrade L26–45
+ _IDENTITY_ID variable variable _IDENTITY_ID L63–63
+ _InMemBackend class class _InMemBackend L103–128
+ __init__ method method __init__ L106–107
+ get method async_method get L121–122
+ get_mpack method async_method get_mpack L112–113
+ presign_get method async_method presign_get L124–125
+ presign_mpack_get method async_method presign_mpack_get L115–116
+ put method async_method put L118–119
+ put_mpack method async_method put_mpack L109–110
+ quarantine_mpack method async_method quarantine_mpack L127–128
+ _OWNER variable variable _OWNER L62–62
+ _cid function function _cid L71–73
+ _fetch function async_function _fetch L179–190
+ _now function function _now L76–77
+ _push_full_manifest function async_function _push_full_manifest L131–176
+ _raw_commit function function _raw_commit L80–100
+ AsyncSession import import AsyncSession L52–52
+ annotations import import annotations L46–46
+ blob_id import import blob_id L56–56
+ build_wire_mpack import import build_wire_mpack L55–55
+ compute_identity_id import import compute_identity_id L57–57
+ create_repo import import create_repo L58–58
+ datetime import import datetime L48–48
+ hash_snapshot import import hash_snapshot L54–54
+ parse_wire_mpack import import parse_wire_mpack L55–55
+ patch import import patch L49–49
+ pytest import import pytest L51–51
+ wire_fetch_mpack import import wire_fetch_mpack L59–59
+ wire_push_unpack_mpack import import wire_push_unpack_mpack L60–60
+ test_mtu_01_sibling_tie_both_manifests_included function async_function test_mtu_01_sibling_tie_both_manifests_included L199–240
+ test_mtu_02_shallower_sibling_manifest_included function async_function test_mtu_02_shallower_sibling_manifest_included L249–299
+ test_mtu_03_default_branch_keeps_its_own_newest_content function async_function test_mtu_03_default_branch_keeps_its_own_newest_content L308–363
~ docs/issues/silent-partial-clone-promised-object.md .md 5 symbols added, 3 symbols modified
+ ✅ FIXED — Phase 1, TDD section ✅ FIXED — Phase 1, TDD L707–775
+ Test-first (RED) section Test-first (RED) L709–725
+ The fix section The fix L725–749
+ code[python] variable variable code[python] L737–748
+ Verified green — unit, regression, and live E2E section Verified green — unit, regression, and live E2E L749–775

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:739d791a021442da80466654f296365d6f86f557589c3b116aa0022b340eeb0b --body "your comment"