feat(pack-gc): Phase 4 — GC consolidates N push packs into one bundle
process_pack_gc_job merges all distinct packs for a repo into a single content-addressed consolidated bundle and rewrites musehub_pack_index so every object_id maps to the new key. After GC, wire_fetch_bundle returns exactly 1 pack_url regardless of how many pushes the repo had.
- process_pack_gc_job: download all packs, merge objects, write consolidated bundle, delete+reinsert pack index rows pointing at new key - Idempotent: same content → same sha256 key → no duplicate rows - Skips repos already at ≤ 1 pack (single-pack repos are already optimal) - Wire pack.gc job type into worker.py - PG-1..6 TDD tests all green (18/18 across phases 1-4)
sha256:28e1d7ddf80d751ec881b5c8bf57f6259b9b36b829d3ab1730784b626ece4d0e
sha
+24
~1
symbols
sha256:d9f98d094eb2ff75820d490dc2c812739ab7d5ed05158fdcd8aa61ba173d041c
snapshot
+24
symbols added
~1
symbol modified
0
dead code introduced
Semantic Changes
25 symbols
+
test_pg1_gc_consolidates_multiple_packs
function
async_function test_pg1_gc_consolidates_multiple_packs L165–199
+
test_pg2_gc_leaves_exactly_one_pack
function
async_function test_pg2_gc_leaves_exactly_one_pack L207–229
+
test_pg3_consolidated_bundle_contains_all_objects
function
async_function test_pg3_consolidated_bundle_contains_all_objects L237–274
+
test_pg5_gc_skips_single_pack_repo
function
async_function test_pg5_gc_skips_single_pack_repo L328–352
+
test_pg6_fetch_returns_single_pack_url_after_gc
function
async_function test_pg6_fetch_returns_single_pack_url_after_gc L360–404
0 comments
To add a comment, use the Muse CLI:
muse hub commit comment sha256:28e1d7ddf80d751ec881b5c8bf57f6259b9b36b829d3ab1730784b626ece4d0e --body "your comment"
No comments yet. Be the first to start the discussion.