gabriel / musehub public
BREAKING dev #1 / 100
AI Agent gabriel · 16 hours ago · Jun 17, 2026 · Diff

merge: rescue snapshot-recovery hardening (c00aa21d) into dev alongside repair-commit

fix/push-empty-manifest-delta-parent carried the deployed snapshot manifest recovery-on-read hardening (c00aa21d) — never merged to dev/main. Today's dev->staging deploy (repair-commit) rolled it back on staging; merging it in so dev/main and staging carry BOTH the hardening and the repair-commit endpoint.

wire_push.py conflict resolved as the union: ours (repair-commit imports + wire_repair_commit) + theirs (corrected delta-only-snapshot comment). Non-conflicting changes merged intact: wire_shared.py recovery walker (_cached_manifest_reproduces, _reconstruct_manifest_validated) + tests/test_serve_corrupt_manifest_recovery.py + tests/test_push_delta_only_parent_manifest.py.

sha256:4669620efda9ff41c55bdefd1f7bfe1c239d468428744c84ead9957e5a003a53 sha
+49 ~1 symbols
4 changed · 976 in snapshot files
sha256:e180f793332d464a3fb60fe9b6b19291567a3ecc6c71a336378052d27bad50bf snapshot
+49
symbols added
~1
symbol modified
4
files changed
976
files in snapshot
0
dead code introduced
Semantic Changes 50 symbols
+ DB_URL variable variable DB_URL L44–44
+ HUB variable variable HUB L43–43
+ REPO_ROOT variable variable REPO_ROOT L45–45
+ _commit_id_by_message function function _commit_id_by_message L61–68
+ _stored_snapshot_for_commit function async_function _stored_snapshot_for_commit L71–90
+ hub_repo function function hub_repo L94–104
+ AsyncSession import import AsyncSession L37–37
+ MusehubCommit import import MusehubCommit L41–41
+ MusehubSnapshot import import MusehubSnapshot L41–41
+ Path import import Path L33–33
+ annotations import import annotations L28–28
+ asyncio import import asyncio L30–30
+ create_async_engine import import create_async_engine L37–37
+ hash_snapshot import import hash_snapshot L40–40
+ json import import json L31–31
+ msgpack import import msgpack L35–35
+ pytest import import pytest L36–36
+ sessionmaker import import sessionmaker L38–38
+ subprocess import import subprocess L32–32
+ muse function function muse L48–51
+ muse_check function function muse_check L54–58
+ test_child_of_delta_only_parent_keeps_complete_manifest function function test_child_of_delta_only_parent_keeps_complete_manifest L107–153
+ DB_URL variable variable DB_URL L42–42
+ HUB variable variable HUB L41–41
+ REPO_ROOT variable variable REPO_ROOT L43–43
+ _commit_id_by_message function function _commit_id_by_message L59–64
+ _corrupt_then_serve function async_function _corrupt_then_serve L79–117
+ _snapshot_id_for_commit function async_function _snapshot_id_for_commit L67–76
+ hub_repo function function hub_repo L121–130
+ AsyncSession import import AsyncSession L34–34
+ MusehubCommit import import MusehubCommit L38–38
+ MusehubSnapshot import import MusehubSnapshot L38–38
+ Path import import Path L30–30
+ _snap_row_to_wire_s3 import import _snap_row_to_wire_s3 L39–39
+ _time import import _time L29–29
+ annotations import import annotations L24–24
+ asyncio import import asyncio L26–26
+ create_async_engine import import create_async_engine L34–34
+ hash_snapshot import import hash_snapshot L37–37
+ json import import json L27–27
+ msgpack import import msgpack L32–32
+ pytest import import pytest L33–33
+ sessionmaker import import sessionmaker L35–35
+ subprocess import import subprocess L28–28
+ muse function function muse L46–49
+ muse_check function function muse_check L52–56
+ test_serving_path_recovers_from_corrupt_manifest_blob function function test_serving_path_recovers_from_corrupt_manifest_blob L133–165
~ musehub/services/musehub_wire_shared.py .py 2 symbols added, 1 symbol modified
+ _cached_manifest_reproduces function function _cached_manifest_reproduces L156–165
+ _reconstruct_manifest_validated function async_function _reconstruct_manifest_validated L168–213
Files Changed
+2 ~2
976 in snapshot

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