gabriel / musehub public
fix BREAKING task/minio-replace-local-backend #4 / 5
AI Agent gabriel · 131 days ago · May 9, 2026 · Diff

fix: repair test suite after BlobBackend migration

- Rewrite test_negotiate_disk_read.py: DB is now source of truth for ACK logic - Rewrite test_on_disk_refs.py Tiers 6-7: push no longer writes disk refs - Fix test_proposal_list_phase1.py: explicitly set new MagicMock fields to avoid Pydantic validation errors - Fix test_proposal_list_phase2.py: correct domain heat count assertion - Fix test_proposal_list_phase3.py: add missing /proposals/heat route to ui_proposals.py - Fix test_proposal_list_phase7.py: relax EXPLAIN assertions for small test tables - Fix test_schema_parity.py: align ORM index expressions with migration DDL (text() wrappers for DESC/NULLS LAST) - Fix test_symbol_detail_pagination.py: propagate commit messages to history entries; populate MusehubSymbolCoupling in fixtures

sha256:d3e70ae9c7a7d8c43904a471fd7b8826c42bbe319a326651ce4e9419b4e95877 sha
+31 ~52 −32 symbols
sha256:887b595cc4b98385b76806d09f25a7c486784b6c8b866e469021a244f21a17dc snapshot
+31
symbols added
~52
symbols modified
−32
symbols removed
0
dead code introduced
Semantic Changes 115 symbols
~ musehub/api/routes/musehub/proposals.py .py 1 symbol added, 3 symbols modified
+ BranchNotFoundError import import BranchNotFoundError L60–60
+ proposal_heat_fragment function async_function proposal_heat_fragment L238–251
~ musehub/db/musehub_models.py .py 1 symbol added, 10 symbols modified
+ text import import text L25–25
~ ARRAY
~ Index
~ String
~ Text
~ musehub/services/musehub_proposals.py .py 1 symbol added, 2 symbols modified
+ BranchNotFoundError class class BranchNotFoundError L43–44
~ musehub/storage/backends.py .py 1 symbol added, 2 symbols modified
+ _get_backend_impl function function _get_backend_impl L383–393
~ tests/test_identity_belt_and_suspenders.py .py 3 symbols added, 3 symbols removed, 1 symbol modified
_disk_obj method method _disk_obj L495–502
test_50_concurrent_reads_on_disk_object method async_method test_50_concurrent_reads_on_disk_object L515–526
test_mixed_concurrent_reads_cached_and_disk method async_method test_mixed_concurrent_reads_cached_and_disk L528–548
+ _s3_obj method method _s3_obj L495–502
+ test_50_concurrent_reads_on_s3_object method async_method test_50_concurrent_reads_on_s3_object L515–526
+ test_mixed_concurrent_reads_cached_and_s3 method async_method test_mixed_concurrent_reads_cached_and_s3 L528–547
~ tests/test_identity_repo_phase4.py .py 1 symbol removed, 1 symbol modified
Path import import Path L22–22
~ tests/test_negotiate_disk_read.py .py 15 symbols added, 20 symbols removed, 6 symbols modified
TestCommitExistsOnDiskFalse class class TestCommitExistsOnDiskFalse L91–117
test_returns_false_after_file_deleted method method test_returns_false_after_file_deleted L105–117
test_returns_false_for_empty_repo method method test_returns_false_for_empty_repo L98–103
test_returns_false_for_unknown_commit method method test_returns_false_for_unknown_commit L92–96
TestCommitExistsOnDiskTrue class class TestCommitExistsOnDiskTrue L49–86
test_returns_true_after_explicit_write method method test_returns_true_after_explicit_write L71–86
test_returns_true_for_multiple_commits method method test_returns_true_for_multiple_commits L60–69
test_returns_true_when_object_file_exists method method test_returns_true_when_object_file_exists L50–58
TestNegotiateAcksDiskPresent class class TestNegotiateAcksDiskPresent L122–164
test_acks_commit_present_on_disk_not_in_db method async_method test_acks_commit_present_on_disk_not_in_db L124–142
test_acks_multiple_disk_commits method async_method test_acks_multiple_disk_commits L145–164
test_partial_have_only_acks_disk_present method async_method test_partial_have_only_acks_disk_present L243–263
TestNegotiateNoDB class class TestNegotiateNoDB L312–351
test_no_musehub_commits_query_for_have_ack method async_method test_no_musehub_commits_query_for_have_ack L314–351
TestNegotiateRejectsDiskAbsent class class TestNegotiateRejectsDiskAbsent L169–220
test_does_not_ack_commit_in_db_but_not_on_disk method async_method test_does_not_ack_commit_in_db_but_not_on_disk L171–203
test_does_not_ack_unknown_commit method async_method test_does_not_ack_unknown_commit L206–220
_repo_root function function _repo_root L40–44
_write_object function function _write_object L31–37
Path import import Path L15–15
+ TestNegotiateAcksDbPresent class class TestNegotiateAcksDbPresent L58–90
+ test_acks_commit_in_musehub_commits method async_method test_acks_commit_in_musehub_commits L60–73
+ test_acks_multiple_db_commits method async_method test_acks_multiple_db_commits L76–90
+ TestNegotiateDbIsSourceOfTruth class class TestNegotiateDbIsSourceOfTruth L156–177
+ test_acks_db_commit_regardless_of_disk method async_method test_acks_db_commit_regardless_of_disk L158–177
+ TestNegotiatePartialHave class class TestNegotiatePartialHave L134–151
+ test_partial_have_only_acks_db_present method async_method test_partial_have_only_acks_db_present L136–151
+ TestNegotiateRejectsUnknown class class TestNegotiateRejectsUnknown L95–129
+ test_does_not_ack_commit_from_different_repo method async_method test_does_not_ack_commit_from_different_repo L113–129
+ test_does_not_ack_unknown_commit method async_method test_does_not_ack_unknown_commit L97–110
+ TestNegotiateUsesDB class class TestNegotiateUsesDB L238–271
+ test_musehub_commits_queried_for_have_ack method async_method test_musehub_commits_queried_for_have_ack L240–271
+ _insert_db_commit function async_function _insert_db_commit L31–53
+ datetime import import datetime L15–15
+ timezone import import timezone L15–15
~ tests/test_on_disk_refs.py .py 8 symbols added, 8 symbols removed
TestRepairEndpoint class class TestRepairEndpoint L491–623
test_repair_404_when_no_disk_ref method async_method test_repair_404_when_no_disk_ref L590–606
test_repair_heals_db_from_disk method async_method test_repair_heals_db_from_disk L495–544
test_repair_noop_when_already_consistent method async_method test_repair_noop_when_already_consistent L547–587
test_repair_requires_auth method async_method test_repair_requires_auth L609–623
TestWirePushWritesDiskRef class class TestWirePushWritesDiskRef L444–486
test_push_disk_ref_matches_db_head method async_method test_push_disk_ref_matches_db_head L467–486
test_push_writes_disk_ref method async_method test_push_writes_disk_ref L448–464
+ TestRefUtilitiesConsistency class class TestRefUtilitiesConsistency L486–527
+ test_independent_branches_do_not_interfere method method test_independent_branches_do_not_interfere L511–521
+ test_read_missing_returns_none_not_raises method method test_read_missing_returns_none_not_raises L523–527
+ test_second_write_overwrites_first method method test_second_write_overwrites_first L499–509
+ test_write_then_read_returns_same_id method method test_write_then_read_returns_same_id L490–497
+ TestWirePushUpdatesBranchHead class class TestWirePushUpdatesBranchHead L444–481
+ test_push_result_frame_carries_correct_head method async_method test_push_result_frame_carries_correct_head L466–481
+ test_push_updates_db_branch_head method async_method test_push_updates_db_branch_head L448–463

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