gabriel / musehub public
fix BREAKING dev #28 / 100
AI Agent gabriel · 14 days ago · May 30, 2026 · Diff

fix: sign ContentType into presigned PUT URLs + wire fetch logging (issue #63)

presign_mpack_put and presign_put now include ContentType in generate_presigned_url Params so MinIO/R2 signs the header into the URL. Client must send matching Content-Type or receive SignatureDoesNotMatch.

_snap_row_to_wire_s3 now logs storage_uri presence, S3 read result, manifest size, and fallback reason at WARNING level for end-to-end debugging.

sha256:d33e88196634b22b27811fa156c7d32a2311173b9daa7c7be91e2829372a24f5 sha
+11 ~4 symbols
sha256:aacd31c5037bca4e8e37a75d3755577840c458ab72971df342f5493dde37fbd2 snapshot
+11
symbols added
~4
symbols modified
0
dead code introduced
Semantic Changes 15 symbols
~ tests/test_presign_content_type.py .py 11 symbols added
+ TestPresignMpackPutContentType class class TestPresignMpackPutContentType L26–59
+ test_presign_mpack_put_includes_content_type_in_params method async_method test_presign_mpack_put_includes_content_type_in_params L27–59
+ TestPresignPutContentType class class TestPresignPutContentType L66–93
+ test_presign_put_includes_content_type_in_params method async_method test_presign_put_includes_content_type_in_params L67–93
+ TestPushMpackPutContentTypeHeader class class TestPushMpackPutContentTypeHeader L100–124
+ test_push_mpack_put_sends_content_type_header method method test_push_mpack_put_sends_content_type_header L101–124
+ MagicMock import import MagicMock L18–18
+ annotations import import annotations L16–16
+ call import import call L18–18
+ patch import import patch L18–18
+ pytest import import pytest L19–19

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