gabriel / musehub public
feat BREAKING dev
AI Agent gabriel · 147 days ago · Apr 29, 2026 · Diff

feat: remove Cloudflare Worker push path (pack_origin / object-pack)

Deletes wire_push_object_pack, the /push/object-pack and /internal/register-objects routes, pack_origin from wire_refs and WireRefsResponse, worker_internal_key and pack_worker_url config settings, and all related tests and comments.

Two push paths remain: stream (< 500 objects AND < 50 MB) and presigned R2 (>= 500 objects OR >= 50 MB via push/presign → R2 PUT → push/confirm → push/stream).

sha256:af12b4bc0d64a82ae0d6fdf468b96f84ba1464aad51086d70ae05391840d50ea sha
~18 −98 symbols
sha256:80eba57200c0d89690df93bb431eb962883e2b37f2b19a51bda2fa5073d2339d snapshot
~18
symbols modified
−98
symbols removed
0
dead code introduced
Semantic Changes 116 symbols
_compress_zlib function function _compress_zlib L49–50
_make_delta_stream function function _make_delta_stream L53–60
_mp function function _mp L63–64
_sha256_oid function function _sha256_oid L44–46
AsyncClient import import AsyncClient L31–31
AsyncSession import import AsyncSession L32–32
JSONValue import import JSONValue L37–37
StrDict import import StrDict L37–37
annotations import import annotations L24–24
blob_id import import blob_id L34–34
db import import db L36–36
factory_create_repo import import factory_create_repo L35–35
msgpack import import msgpack L29–29
pytest import import pytest L30–30
struct import import struct L26–26
zlib import import zlib L27–27
test_decompress_if_needed_binary_non_zlib_passthrough function function test_decompress_if_needed_binary_non_zlib_passthrough L104–108
test_decompress_if_needed_empty_bytes_passthrough function function test_decompress_if_needed_empty_bytes_passthrough L111–113
test_decompress_if_needed_full_readme_roundtrip function function test_decompress_if_needed_full_readme_roundtrip L130–134
test_decompress_if_needed_importable_from_compression_module function function test_decompress_if_needed_importable_from_compression_module L71–74
test_decompress_if_needed_plain_text_passthrough function function test_decompress_if_needed_plain_text_passthrough L98–101
test_decompress_if_needed_short_data_passthrough function function test_decompress_if_needed_short_data_passthrough L116–118
test_decompress_if_needed_truncated_zlib_returns_original function function test_decompress_if_needed_truncated_zlib_returns_original L121–127
test_decompress_if_needed_zlib_level_1_magic_78_01 function function test_decompress_if_needed_zlib_level_1_magic_78_01 L77–81
test_decompress_if_needed_zlib_level_6_magic_78_9c function function test_decompress_if_needed_zlib_level_6_magic_78_9c L84–88
test_decompress_if_needed_zlib_level_9_magic_78_da function function test_decompress_if_needed_zlib_level_9_magic_78_da L91–95
test_push_delta_plain_base_baseline function async_function test_push_delta_plain_base_baseline L142–179
test_push_delta_reconstructed_bytes_match_target function async_function test_push_delta_reconstructed_bytes_match_target L299–354
test_push_delta_zlib_base_in_content_cache_succeeds function async_function test_push_delta_zlib_base_in_content_cache_succeeds L187–237
test_push_delta_zlib_base_in_storage_succeeds function async_function test_push_delta_zlib_base_in_storage_succeeds L241–295
test_repair_object_accepts_sha256_prefixed_id function async_function test_repair_object_accepts_sha256_prefixed_id L433–468
test_repair_object_corrects_corrupted_stored_bytes function async_function test_repair_object_corrects_corrupted_stored_bytes L362–407
test_repair_object_is_idempotent function async_function test_repair_object_is_idempotent L472–510
test_repair_object_rejects_hash_mismatch function async_function test_repair_object_rejects_hash_mismatch L411–429
~ tests/test_encoding_roundtrip.py .py 24 symbols removed
_compute_delta function function _compute_delta L58–85
_log_bytes function function _log_bytes L88–105
_mp function function _mp L49–50
_sha256_oid function function _sha256_oid L44–46
_zlib_compress function function _zlib_compress L53–55
AsyncClient import import AsyncClient L28–28
AsyncSession import import AsyncSession L29–29
JSONValue import import JSONValue L34–34
StrDict import import StrDict L34–34
annotations import import annotations L20–20
blob_id import import blob_id L31–31
db import import db L32–32
decompress_if_needed import import decompress_if_needed L33–33
factory_create_repo import import factory_create_repo L35–35
logging import import logging L22–22
msgpack import import msgpack L26–26
pytest import import pytest L27–27
struct import import struct L23–23
zlib import import zlib L24–24
logger variable variable logger L37–37
test_delta_zlib_stored_as_plain_bytes function async_function test_delta_zlib_stored_as_plain_bytes L248–319
test_encoding_none_stored_correctly function async_function test_encoding_none_stored_correctly L327–373
test_zlib_blob_view_serves_plain_text function async_function test_zlib_blob_view_serves_plain_text L181–240
test_zlib_stored_as_plain_bytes function async_function test_zlib_stored_as_plain_bytes L113–173
~ tests/test_wire_refs_pack_origin.py .py 16 symbols removed
AsyncClient import import AsyncClient L15–15
AsyncMock import import AsyncMock L17–17
AsyncSession import import AsyncSession L16–16
StrDict import import StrDict L20–20
annotations import import annotations L12–12
create_repo import import create_repo L21–21
patch import import patch L17–17
pytest import import pytest L14–14
settings import import settings L19–19
test_refs_pack_origin_absent_by_default function async_function test_refs_pack_origin_absent_by_default L30–46
test_refs_pack_origin_absent_when_key_missing function async_function test_refs_pack_origin_absent_when_key_missing L50–66
test_refs_pack_origin_absent_when_url_missing function async_function test_refs_pack_origin_absent_when_url_missing L70–86
test_refs_pack_origin_present_when_worker_configured function async_function test_refs_pack_origin_present_when_worker_configured L90–107
test_refs_pack_origin_value_matches_setting function async_function test_refs_pack_origin_value_matches_setting L111–125
test_wire_refs_service_omits_pack_origin_without_settings function async_function test_wire_refs_service_omits_pack_origin_without_settings L154–169
test_wire_refs_service_returns_pack_origin function async_function test_wire_refs_service_returns_pack_origin L134–150
~ musehub/api/routes/wire.py .py 5 symbols removed, 11 symbols modified
_WorkerObjectEntry class class _WorkerObjectEntry L930–937
_WorkerRegisterRequest class class _WorkerRegisterRequest L940–947
wire_push_object_pack import import wire_push_object_pack L49–49
push_object_pack function async_function push_object_pack L391–421
worker_register_objects function async_function worker_register_objects L955–1024
~ musehub/config.py .py 1 symbol modified
~ musehub/models/wire.py .py 1 symbol modified
~ musehub/services/musehub_wire.py .py 4 symbols removed, 4 symbols modified
ObjectPackResult class class ObjectPackResult L417–419
_upload_objects_to_r2 function async_function _upload_objects_to_r2 L295–334
update import import update L53–53
wire_push_object_pack function async_function wire_push_object_pack L422–491
~ func
~ select
~ tests/test_object_integrity.py .py 5 symbols removed
test_push_objects_with_tampered_sha256_returns_422 function async_function test_push_objects_with_tampered_sha256_returns_422 L233–251
test_push_objects_with_valid_sha256_succeeds function async_function test_push_objects_with_valid_sha256_succeeds L213–230
test_push_with_non_sha256_object_id_is_rejected function async_function test_push_with_non_sha256_object_id_is_rejected L194–210
test_push_with_tampered_sha256_object_returns_422 function async_function test_push_with_tampered_sha256_object_returns_422 L173–191
test_push_with_valid_sha256_object_succeeds function async_function test_push_with_valid_sha256_object_succeeds L153–170
~ tests/test_object_store_canonical.py .py 3 symbols removed
TestSecurity class class TestSecurity L467–510
test_content_hash_mismatch_rejected_on_push method async_method test_content_hash_mismatch_rejected_on_push L492–510
test_raw_hex_oid_in_push_rejected method async_method test_raw_hex_oid_in_push_rejected L470–490
~ tests/test_quota_via_refs.py .py 7 symbols removed, 1 symbol modified
_zlib function function _zlib L41–42
AsyncClient import import AsyncClient L24–24
AsyncMock import import AsyncMock L19–19
MagicMock import import MagicMock L19–19
zlib import import zlib L18–18
test_quota_counts_shared_object_per_repo function async_function test_quota_counts_shared_object_per_repo L50–113
test_quota_idempotent_push_no_double_count function async_function test_quota_idempotent_push_no_double_count L121–158
~ patch
← 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:af12b4bc0d64a82ae0d6fdf468b96f84ba1464aad51086d70ae05391840d50ea --body "your comment"