gabriel / muse public
feat BREAKING pack dev
AI Agent gabriel · 159 days ago · Apr 18, 2026 · Diff

feat(pack): Phase 3 — fail loudly on MISSING objects; clean up push.py dead code

- build_mpack: raise ValueError on MISSING objects (absent locally, no promisor remote configured). PROMISED objects (absent but covered by a promisor remote) are silently skipped. Uses object_state() from object_availability — same tristate logic as verify-pack/verify. - _push_stream: same MISSING → raise / PROMISED → skip fix applied to the streaming push object loop via load_promisor_remotes(). - push.py dry-run: replaced build_mpack call (which loaded all blobs just to call len()) with walk_commits() — pure BFS, no blob I/O. - Removed dead imports from push.py: build_mpack (only needed for the now-replaced dry-run), build_mpack_from_walk (imported but never called). - 4 new TDD tests in TestPackObjectsMissingObjectValidation; 202 passing.

sha256:fc37cb724364b6f127e376f9d065792fbbbc2ea4bc19456df131b30d5d8baa0f sha
+12 ~9 −2 symbols
sha256:06f931586d4f95f5de7b250a330c34021a848068565769c4c73cee039b9a0764 snapshot
+12
symbols added
~9
symbols modified
−2
symbols removed
0
dead code introduced
Semantic Changes 23 symbols
~ muse/cli/commands/push.py .py 3 symbols added, 2 symbols removed, 8 symbols modified
− build_mpack import import build_mpack L89–89
− build_mpack_from_walk import import build_mpack_from_walk L89–89
+ ObjectState import import ObjectState L88–88
+ load_promisor_remotes import import load_promisor_remotes L88–88
+ object_state import import object_state L88–88
~ run
~ muse/core/pack.py .py 3 symbols added, 1 symbol modified
+ ObjectState import import ObjectState L41–41
+ load_promisor_remotes import import load_promisor_remotes L41–41
+ object_state import import object_state L41–41
+ TestPackObjectsMissingObjectValidation class class TestPackObjectsMissingObjectValidation L468–538
+ test_missing_object_error_mentions_object_id method method test_missing_object_error_mentions_object_id L493–511
+ test_missing_object_exits_nonzero method method test_missing_object_exits_nonzero L471–491
+ test_present_object_always_passes method method test_present_object_always_passes L532–538
+ test_promised_object_does_not_fail method method test_promised_object_does_not_fail L513–530
+ _write_promisor_config function function _write_promisor_config L459–465
← Older Oldest on dev
All commits
Newer → Latest on dev

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