gabriel / musehub public
test red fix/wire-push-external-parent-manifest #3 / 4
AI Agent gabriel · 10 days ago · Jul 7, 2026 · Diff

test(red): musehub#134 — push must reconstruct external delta-only parent, not {}

Direct wire_push_unpack_mpack call proves the exact corruption reproduced live on staging.musehub.ai/gabriel/musehub: when a pushed snapshot's parent is absent from its own payload (already on the server from an earlier push) and that parent is stored delta-only (manifest_blob=NULL), the server silently substitutes an empty dict as the base instead of reconstructing via the delta chain. The child's manifest permanently drops every inherited file and can never hash back to its own snapshot_id.

RED: D's stored manifest only contains f4.txt, missing f1.txt/f2.txt inherited from external delta-only parent B.

sha256:b916bfaf72c56574764215fb36e245869f2cf36c7fab7e38afbc195d8d105a54 sha
+25 symbols
sha256:9169e0352fdae35e2ec045db922fa3c22a2e0d9062e25b72f7e1d76fde8e474f snapshot
+25
symbols added
0
dead code introduced
Semantic Changes 25 symbols
+ _IDENTITY_ID variable variable _IDENTITY_ID L58–58
+ _OWNER variable variable _OWNER L57–57
+ _cid function function _cid L61–62
+ _mock_backend function function _mock_backend L91–99
+ _now function function _now L65–66
+ _raw_commit function function _raw_commit L69–88
+ AsyncMock import import AsyncMock L38–38
+ AsyncSession import import AsyncSession L42–42
+ MagicMock import import MagicMock L38–38
+ MusehubCommit import import MusehubCommit L48–48
+ MusehubCommitGraph import import MusehubCommitGraph L48–48
+ MusehubSnapshot import import MusehubSnapshot L48–48
+ MusehubSnapshotRef import import MusehubSnapshotRef L48–48
+ annotations import import annotations L35–35
+ blob_id import import blob_id L46–46
+ build_wire_mpack import import build_wire_mpack L45–45
+ compute_identity_id import import compute_identity_id L47–47
+ create_repo import import create_repo L54–54
+ datetime import import datetime L37–37
+ hash_snapshot import import hash_snapshot L44–44
+ msgpack import import msgpack L40–40
+ patch import import patch L38–38
+ pytest import import pytest L41–41
+ wire_push_unpack_mpack import import wire_push_unpack_mpack L55–55
+ test_child_of_external_delta_only_parent_reconstructs_full_manifest function async_function test_child_of_external_delta_only_parent_reconstructs_full_manifest L103–234

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