gabriel / musehub public
feat patch phase3 task/phase1-object-store-invariant #4 / 6
AI Agent gabriel · 9 days ago · May 29, 2026 · Diff

feat(phase3): write snapshot objects to S3 at all 3 write sites (issue #63)

All snapshot write paths now call backend.put(snapshot_id, snapshot_to_bytes(...)) and populate MusehubSnapshot.storage_uri: - upsert_snapshot_entries (primary path — called by merge_proposal, commit_files_to_repo, push receive) - repair_snapshot_on_push (repair path in wire_push) - wire_push bulk insert (new snapshots from push receive)

Adds snapshot_to_bytes() helper to musehub/muse_cli/snapshot.py producing canonical muse binary format: snapshot <size>\0<json>. manifest_blob (msgpack) retained as DB cache for intel/GC hot paths.

14/14 phase 1 tests GREEN. 133 existing tests unaffected.

sha256:450998d182617fa93b737cbbdb3fe956c61566051739acec8c63ec5e7b4587f8 sha
+1 ~3 symbols
sha256:14f4b9c92d04bd89a26d75fdf5e62e37686be9e961ee83ac434412d98bacd1c5 snapshot
+1
symbol added
~3
symbols modified
0
dead code introduced
Semantic Changes 4 symbols
~ musehub/muse_cli/snapshot.py .py 1 symbol added
+ snapshot_to_bytes function function snapshot_to_bytes L75–92

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