feat: bundle content validation (issue #49 phase 2)
Adds per-object sha256 verification, decompression size guard (zip bomb), and object count mismatch detection to process_bundle_index_job. All validation runs before any DB or MinIO writes so failed jobs leave no partial state. Quarantined jobs get status='quarantined' with a reason.
- BundleValidationError exception class (terminal, not retried) - quarantine_job() in musehub_jobs — sets status='quarantined', quarantine_reason - quarantine_reason column on MusehubBackgroundJob - bundle_max_decompressed_bytes config setting (default 4 GB) - declared_objects_count stored in job payload for count mismatch check - put_bundle() and quarantine_bundle() on BlobBackend - 8 new tests in test_bundle_validation_phase2.py
sha256:7189fd2a116a24aa69ce8efd79893929ac75aa42aeb6308678df94d00246a9c7
sha
+52
~5
symbols
sha256:e8987ab1761e837c443538f467bb5dd86bb26ee10d036506e4f54b38e5fc88aa
snapshot
+52
symbols added
~5
symbols modified
0
dead code introduced
Semantic Changes
57 symbols
+
test_count_mismatch_raises_bundle_validation_error
function
async_function test_count_mismatch_raises_bundle_validation_error L268–292
+
test_hash_mismatch_raises_bundle_validation_error
function
async_function test_hash_mismatch_raises_bundle_validation_error L212–239
+
test_process_bundle_index_job_sets_quarantined_on_validation_error
function
async_function test_process_bundle_index_job_sets_quarantined_on_validation_error L406–441
+
test_quarantine_job_sets_status_and_reason
function
async_function test_quarantine_job_sets_status_and_reason L373–402
+
test_valid_bundle_passes_all_validation_checks
function
async_function test_valid_bundle_passes_all_validation_checks L445–461
+
test_validation_failure_writes_no_commits_to_db
function
async_function test_validation_failure_writes_no_commits_to_db L337–369
+
test_validation_failure_writes_no_objects_to_minio
function
async_function test_validation_failure_writes_no_objects_to_minio L296–333
+
test_zip_bomb_raises_bundle_validation_error
function
async_function test_zip_bomb_raises_bundle_validation_error L243–264
~
Settings
0 comments
To add a comment, use the Muse CLI:
muse hub commit comment sha256:7189fd2a116a24aa69ce8efd79893929ac75aa42aeb6308678df94d00246a9c7 --body "your comment"
No comments yet. Be the first to start the discussion.