gabriel / musehub public
perf patch unpack-bundle task/bundle-zero-put-objects #1 / 1
AI Agent gabriel · 125 days ago · May 11, 2026 · Diff

perf(unpack-bundle): zero per-object MinIO PUTs — objects live in the bundle

The bundle is already in MinIO at bundles/{bundle_key}, proved by sha256(wire_bytes) == bundle_key. Every object inside is content-addressed. Record storage_uri='bundles/{bundle_key}' instead of extracting each object individually. Background promoter handles extraction async.

Eliminates the objects_db bottleneck (was 16s for 5156 objects × 25KB each). The push path now does exactly one MinIO PUT (the bundle) regardless of how many objects it contains.

sha256:eb442e73622ec88aa586bc8b86dc1102c9b74b43ba5510c9cfdb19961e9d8add sha
+40 ~1 symbols
sha256:65d6aa884e46c652bda66b6f14ff03279cc5b550af7220b8bf8097c46a124e33 snapshot
+40
symbols added
~1
symbol modified
0
dead code introduced
Semantic Changes 41 symbols
~ tests/test_bundle_delta_e2e.py .py 40 symbols added
+ _AUTH_CTX variable variable _AUTH_CTX L59–64
+ _BLOB_SIZE variable variable _BLOB_SIZE L51–51
+ _FILES_CHANGED variable variable _FILES_CHANGED L50–50
+ _GATE_S variable variable _GATE_S L52–52
+ _N_COMMITS variable variable _N_COMMITS L49–49
+ _N_FILES variable variable _N_FILES L48–48
+ _make_repo function function _make_repo L101–111
+ _populate function function _populate L114–172
+ client function async_function client L68–82
+ ASGITransport import import ASGITransport L23–23
+ AsyncClient import import AsyncClient L23–23
+ AsyncSession import import AsyncSession L24–24
+ CommitRecord import import CommitRecord L34–34
+ MSignContext import import MSignContext L26–26
+ SnapshotRecord import import SnapshotRecord L34–34
+ annotations import import annotations L12–12
+ app import import app L28–28
+ blob_id import import blob_id L41–41
+ build_mpack import import build_mpack L31–31
+ compute_commit_id import import compute_commit_id L33–33
+ compute_snapshot_id import import compute_snapshot_id L33–33
+ datetime import import datetime L14–14
+ get_db import import get_db L27–27
+ hashlib import import hashlib L15–15
+ httpx import import httpx L19–19
+ msgpack import import msgpack L20–20
+ muse_dir import import muse_dir L32–32
+ optional_signed_request import import optional_signed_request L26–26
+ pathlib import import pathlib L16–16
+ pytest import import pytest L21–21
+ pytest_asyncio import import pytest_asyncio L22–22
+ require_signed_request import import require_signed_request L26–26
+ time import import time L17–17
+ write_branch_ref import import write_branch_ref L34–34
+ write_commit import import write_commit L34–34
+ write_object import import write_object L30–30
+ write_snapshot import import write_snapshot L34–34
+ repo function async_function repo L86–94
+ test_bundle_is_delta_encoded function function test_bundle_is_delta_encoded L179–214
+ test_bundle_push_delta_e2e function async_function test_bundle_push_delta_e2e L218–301
← Older Oldest on task/bundle-zero-put-objects
All commits
Newer → Latest on task/bundle-zero-put-objects

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