gabriel / muse public
fix BREAKING task/fix-failing-tests #5 / 5
AI Agent gabriel · 136 days ago · May 5, 2026 · Diff

fix: resolve failing tests across coord, code analytics, and core layers

- UUID → record_id: purge all uuid/UUID terminology from coord test files (test_coord_write_remote_atomic, test_coord_data_integrity, test_coord_security) covering docstrings, variable names, test method names, error messages, comments - clones.py: rename cluster fields (cluster_hash→hash, member_count→count), use full 64-char content hashes instead of short IDs - dead.py: rename output key candidates→results for JSON consistency - languages.py: rename field names (file_count→files, symbol_count→symbols) - stable.py: rename fields (days_stable→unchanged_for, symbols→stable list key) - verify_commit.py: use short_id() in text output for commit ID display - read.py: null out structured_delta for genesis commits in JSON output - blame.py: bounds-check attribution index to fix IndexError when child_lines grows larger than current_lines during sequence-matcher equal-region walk - pyproject.toml: add tree-sitter-scss to web extras (was missing) - snapshot_cmd.py, api_surface.py, agent.py, bisect.py: misc test alignment fixes - test_cmd_worktree_hardening.py: use muse.core.paths utilities directly - test_integrity_I2_fsync.py: patch pathlib.Path.copy not shutil.copy2 - test_query_history_supercharge.py: remove short_id fields from required set - test_social_cli.py: fix path checks for sha256 content-addressed subdirs

sha256:6fd4a12e7e66540c96dd2aed44b9c2f912e24283289793ddfb25212b81cff6f7 sha
+140 ~190 −28 symbols
sha256:ea7f245d98649911575c1226e45bd81b1ca3f867768376282af2c7ec4f0c66f1 snapshot
+140
symbols added
~190
symbols modified
−28
symbols removed
0
dead code introduced
Semantic Changes 358 symbols
~ muse/cli/commands/agent.py .py 2 symbols removed, 1 symbol modified
base64 import import base64 L87–87
hashlib import import hashlib L88–88
~ muse/cli/commands/dead.py .py 2 symbols modified
~ muse/cli/commands/languages.py .py 2 symbols modified
~ muse/cli/commands/read.py .py 1 symbol modified
~ run
~ muse/cli/commands/snapshot_cmd.py .py 1 symbol added, 4 symbols modified
+ short_id import import short_id L80–80
~ muse/cli/commands/stable.py .py 3 symbols modified
~ muse/cli/commands/verify_commit.py .py 1 symbol added, 5 symbols modified
+ short_id import import short_id L62–62
~ run
~ muse/core/bisect.py .py 1 symbol modified
~ muse/core/blame.py .py 1 symbol modified
~ pyproject.toml .toml 3 symbols modified
~ tests/test_cmd_clones.py .py 2 symbols added, 2 symbols removed, 1 symbol modified
test_hash_is_short_id method method test_hash_is_short_id L360–364
test_member_hashes_are_short_ids method method test_member_hashes_are_short_ids L372–378
+ test_hash_is_full_id method method test_hash_is_full_id L360–363
+ test_member_hashes_are_full_ids method method test_member_hashes_are_full_ids L371–376
~ tests/test_coord_data_integrity.py .py 14 symbols added, 11 symbols removed, 73 symbols modified
test_8_threads_write_distinct_uuids_all_files_present method method test_8_threads_write_distinct_uuids_all_files_present L812–834
test_8_threads_write_same_uuid_final_file_is_valid_json method method test_8_threads_write_same_uuid_final_file_is_valid_json L836–861
test_empty_uuid_rejected method method test_empty_uuid_rejected L1271–1277
test_traversal_uuid_does_not_escape_remote_dir method method test_traversal_uuid_does_not_escape_remote_dir L1213–1226
test_traversal_uuid_null_byte_rejected method method test_traversal_uuid_null_byte_rejected L1228–1235
test_uuid_128_chars_accepted method method test_uuid_128_chars_accepted L1237–1243
test_uuid_129_chars_rejected method method test_uuid_129_chars_rejected L1245–1253
test_write_remote_same_uuid_second_overwrites_first method method test_write_remote_same_uuid_second_overwrites_first L1406–1421
test_record_uuid_fallback_to_fpath_stem method method test_record_uuid_fallback_to_fpath_stem L343–352
_SAFE_RECORD_UUID_RE import import _SAFE_RECORD_UUID_RE L114–114
uuid import import uuid L106–106
+ test_8_threads_write_distinct_record_ids_all_files_present method method test_8_threads_write_distinct_record_ids_all_files_present L817–839
+ test_8_threads_write_same_record_id_final_file_is_valid_json method method test_8_threads_write_same_record_id_final_file_is_valid_json L841–866
+ test_empty_record_id_rejected method method test_empty_record_id_rejected L1276–1282
+ test_record_id_128_chars_accepted method method test_record_id_128_chars_accepted L1242–1248
+ test_record_id_129_chars_rejected method method test_record_id_129_chars_rejected L1250–1258
+ test_traversal_record_id_does_not_escape_remote_dir method method test_traversal_record_id_does_not_escape_remote_dir L1218–1231
+ test_traversal_record_id_null_byte_rejected method method test_traversal_record_id_null_byte_rejected L1233–1240
+ test_write_remote_same_record_id_second_overwrites_first method method test_write_remote_same_record_id_second_overwrites_first L1411–1426
+ test_record_id_fallback_to_fpath_stem method method test_record_id_fallback_to_fpath_stem L348–357
+ _id_seq variable variable _id_seq L129–129
+ _new_id function function _new_id L131–132
+ _SAFE_RECORD_ID_RE import import _SAFE_RECORD_ID_RE L114–114
+ content_hash import import content_hash L111–111
+ itertools import import itertools L103–103
~ _hb
~ _res
~ _task
~ tests/test_coord_pull_null_records.py .py 4 symbols added, 3 symbols modified
+ _id_seq variable variable _id_seq L64–64
+ _new_id function function _new_id L67–68
+ content_hash import import content_hash L56–56
+ itertools import import itertools L47–47
~ tests/test_coord_security.py .py 11 symbols added, 8 symbols removed, 18 symbols modified
test_1000_adversarial_uuids_zero_files_written method method test_1000_adversarial_uuids_zero_files_written L959–988
test_traversal_uuid_ssh_target_rejected method method test_traversal_uuid_ssh_target_rejected L900–912
test_uuid_with_backslash_rejected method method test_uuid_with_backslash_rejected L939–942
test_uuid_with_newline_rejected method method test_uuid_with_newline_rejected L931–937
test_uuid_with_null_byte_rejected method method test_uuid_with_null_byte_rejected L914–921
test_uuid_with_space_rejected method method test_uuid_with_space_rejected L923–929
_SAFE_RECORD_UUID_RE import import _SAFE_RECORD_UUID_RE L147–147
uuid import import uuid L128–128
+ test_1000_adversarial_record_ids_zero_files_written method method test_1000_adversarial_record_ids_zero_files_written L964–993
+ test_record_id_with_backslash_rejected method method test_record_id_with_backslash_rejected L944–947
+ test_record_id_with_newline_rejected method method test_record_id_with_newline_rejected L936–942
+ test_record_id_with_null_byte_rejected method method test_record_id_with_null_byte_rejected L919–926
+ test_record_id_with_space_rejected method method test_record_id_with_space_rejected L928–934
+ test_traversal_record_id_ssh_target_rejected method method test_traversal_record_id_ssh_target_rejected L905–917
+ _id_seq variable variable _id_seq L159–159
+ _new_id function function _new_id L161–162
+ _SAFE_RECORD_ID_RE import import _SAFE_RECORD_ID_RE L147–147
+ content_hash import import content_hash L136–136
+ itertools import import itertools L128–128
~ tests/test_coord_write_remote_atomic.py .py 3 symbols added, 3 symbols removed, 12 symbols modified
test_concurrent_writes_different_uuids_all_valid method method test_concurrent_writes_different_uuids_all_valid L197–224
test_null_byte_uuid_rejected method method test_null_byte_uuid_rejected L355–361
test_unsafe_uuid_rejected method method test_unsafe_uuid_rejected L344–353
+ test_concurrent_writes_different_record_ids_all_valid method method test_concurrent_writes_different_record_ids_all_valid L197–224
+ test_null_byte_record_id_rejected method method test_null_byte_record_id_rejected L355–361
+ test_unsafe_record_id_rejected method method test_unsafe_record_id_rejected L344–353
~ tests/test_core_refs.py .py 38 symbols added
+ TestIterBranchRefs class class TestIterBranchRefs L134–237
+ test_bare_hex_in_file_is_skipped method method test_bare_hex_in_file_is_skipped L225–230
+ test_branch_name_is_relative_posix_path method method test_branch_name_is_relative_posix_path L215–223
+ test_empty_heads_dir_yields_nothing method method test_empty_heads_dir_yields_nothing L140–143
+ test_hierarchical_branch_name_uses_posix_slash method method test_hierarchical_branch_name_uses_posix_slash L182–190
+ test_missing_heads_dir_yields_nothing method method test_missing_heads_dir_yields_nothing L135–138
+ test_multiple_branches_yields_all method method test_multiple_branches_yields_all L154–160
+ test_returns_iterator_not_list method method test_returns_iterator_not_list L208–213
+ test_single_branch_yields_name_and_commit_id method method test_single_branch_yields_name_and_commit_id L145–152
+ test_skips_empty_ref_files method method test_skips_empty_ref_files L192–199
+ test_skips_empty_subdirectories method method test_skips_empty_subdirectories L172–180
+ test_skips_symlinks method method test_skips_symlinks L162–170
+ test_uses_generator_not_list_comprehension method method test_uses_generator_not_list_comprehension L232–237
+ test_yields_non_empty_commit_ids method method test_yields_non_empty_commit_ids L201–206
+ TestReadRef class class TestReadRef L77–126
+ test_bare_hex_returns_none method method test_bare_hex_returns_none L116–120
+ test_prefixed_id_returned_unchanged method method test_prefixed_id_returned_unchanged L122–126
+ test_returns_commit_id_for_well_formed_ref method method test_returns_commit_id_for_well_formed_ref L78–81
+ test_returns_none_for_empty_file method method test_returns_none_for_empty_file L86–89
+ test_returns_none_for_missing_file method method test_returns_none_for_missing_file L83–84
+ test_returns_none_for_whitespace_only method method test_returns_none_for_whitespace_only L91–94
+ test_returns_none_on_permission_error method method test_returns_none_on_permission_error L106–114
+ test_strips_trailing_newline_only method method test_strips_trailing_newline_only L101–104
+ test_strips_whitespace_and_newlines method method test_strips_whitespace_and_newlines L96–99
+ _FAKE_CID variable variable _FAKE_CID L67–67
+ _FAKE_CID2 variable variable _FAKE_CID2 L68–68
+ _FAKE_CID3 variable variable _FAKE_CID3 L69–69
+ _make_repo function function _make_repo L43–49
+ _write_branch_ref function function _write_branch_ref L52–56
+ _write_corrupt_ref function function _write_corrupt_ref L59–64
+ _store_write_branch_ref import import _store_write_branch_ref L34–34
+ annotations import import annotations L26–26
+ iter_branch_refs import import iter_branch_refs L33–33
+ json import import json L28–28
+ long_id import import long_id L35–35
+ pathlib import import pathlib L29–29
+ pytest import import pytest L31–31
+ read_ref import import read_ref L33–33
~ tests/test_stress_store_provenance.py .py 61 symbols added
+ TestCRDTAnnotationSemantics class class TestCRDTAnnotationSemantics L386–437
+ test_all_provenance_fields_default_to_empty_string method method test_all_provenance_fields_default_to_empty_string L430–437
+ test_reviewed_by_orset_union_semantics method method test_reviewed_by_orset_union_semantics L387–412
+ test_test_runs_gcounter_monotone method method test_test_runs_gcounter_monotone L414–428
+ TestCommitPersistence class class TestCommitPersistence L211–288
+ test_list_commits_returns_all_written method method test_list_commits_returns_all_written L256–262
+ test_many_commits_all_retrievable method method test_many_commits_all_retrievable L264–288
+ test_overwrite_commit_updates_reviewed_by method method test_overwrite_commit_updates_reviewed_by L231–242
+ test_overwrite_commit_updates_test_runs method method test_overwrite_commit_updates_test_runs L244–254
+ test_read_absent_commit_returns_none method method test_read_absent_commit_returns_none L228–229
+ test_write_and_read_back method method test_write_and_read_back L212–217
+ test_write_is_idempotent method method test_write_is_idempotent L219–226
+ TestCommitRecordRoundTrip class class TestCommitRecordRoundTrip L97–203
+ test_all_provenance_fields_preserved method method test_all_provenance_fields_preserved L105–126
+ test_breaking_changes_preserved method method test_breaking_changes_preserved L158–169
+ test_committed_at_timezone_aware method method test_committed_at_timezone_aware L200–203
+ test_crdt_fields_preserved method method test_crdt_fields_preserved L128–142
+ test_minimal_round_trip method method test_minimal_round_trip L98–103
+ test_missing_crdt_fields_default_correctly method method test_missing_crdt_fields_default_correctly L186–198
+ test_parent_ids_preserved method method test_parent_ids_preserved L171–184
+ test_sem_ver_bump_preserved method method test_sem_ver_bump_preserved L144–156
+ TestGetHeadCommitId class class TestGetHeadCommitId L366–378
+ test_empty_branch_returns_none method method test_empty_branch_returns_none L367–368
+ test_returns_id_after_writing_head_ref method method test_returns_id_after_writing_head_ref L370–373
+ test_strips_whitespace method method test_strips_whitespace L375–378
+ TestSnapshotRecordRoundTrip class class TestSnapshotRecordRoundTrip L296–322
+ test_empty_manifest_round_trip method method test_empty_manifest_round_trip L319–322
+ test_large_manifest method method test_large_manifest L303–308
+ test_minimal_round_trip method method test_minimal_round_trip L297–301
+ test_write_and_read_back method method test_write_and_read_back L310–317
+ TestTagRecord class class TestTagRecord L330–358
+ test_created_at_preserved method method test_created_at_preserved L354–358
+ test_round_trip method method test_round_trip L331–341
+ test_write_and_list method method test_write_and_list L343–352
+ _SNAP_ID variable variable _SNAP_ID L65–65
+ _commit function function _commit L68–89
+ _now function function _now L61–62
+ CommitDict import import CommitDict L29–29
+ CommitRecord import import CommitRecord L29–29
+ ORSet import import ORSet L26–26
+ SemVerBump import import SemVerBump L28–28
+ SnapshotRecord import import SnapshotRecord L29–29
+ TagRecord import import TagRecord L29–29
+ compute_commit_id import import compute_commit_id L27–27
+ compute_snapshot_id import import compute_snapshot_id L27–27
+ datetime import import datetime L19–19
+ fake_id import import fake_id L24–24
+ get_all_commits import import get_all_commits L29–29
+ get_all_tags import import get_all_tags L29–29
+ get_head_commit_id import import get_head_commit_id L29–29
+ long_id import import long_id L24–24
+ overwrite_commit import import overwrite_commit L29–29
+ pathlib import import pathlib L20–20
+ pytest import import pytest L22–22
+ read_commit import import read_commit L29–29
+ read_snapshot import import read_snapshot L29–29
+ ref_path import import ref_path L25–25
+ write_commit import import write_commit L29–29
+ write_snapshot import import write_snapshot L29–29
+ write_tag import import write_tag L29–29
+ repo function function repo L52–58

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