feat: replace infer_sem_ver_bump with structured semver classifier
- Add muse/core/semver_classifier.py: VisibilityTier, StabilityTier, ChangeKind, ChangeClassification, SemVerClassification, StabilityManifest, classify_delta — evidence-driven classification with confidence scores - Delete infer_sem_ver_bump from domain.py (removed from __all__ earlier) - Update cli/commands/commit.py to call classify_delta instead - Rewrite tests/test_sem_ver.py: 121 tests covering the new classifier - Fix _glob_star_match: regex-based ** expansion (was matching everything) - Fix _classify_move: use old_address as canonical address
sha256:05d74f1339933f271493f80d9ea71d8719e762af3c3e15c96e52d306c7d14c64
sha
+146
~23
−20
symbols
sha256:d85770312ebfc61b883770573f61a025148f9c8dd5240900bdae008f44e22ea9
snapshot
+146
symbols added
~23
symbols modified
−20
symbols removed
0
dead code introduced
Semantic Changes
189 symbols
~
run
~
__all__
−
test_insert_private_function_is_at_most_minor
method
method test_insert_private_function_is_at_most_minor L105–115
−
test_multiple_breaking_changes_accumulated
method
method test_multiple_breaking_changes_accumulated L179–187
−
test_replace_implementation_changed_is_patch
method
method test_replace_implementation_changed_is_patch L144–148
−
test_replace_metadata_only_unrecognized_summary
method
method test_replace_metadata_only_unrecognized_summary L150–156
−
test_replace_signature_changed_public_is_major
method
method test_replace_signature_changed_public_is_major L139–142
+
test_delete_private_symbol_is_invisible
method
method test_delete_private_symbol_is_invisible L532–535
+
test_code_domain_rename_is_breaking_low_confidence
method
method test_code_domain_rename_is_breaking_low_confidence L776–781
+
test_invisible_directory_rename_is_invisible
method
method test_invisible_directory_rename_is_invisible L790–794
+
test_non_code_domain_rename_is_invisible
method
method test_non_code_domain_rename_is_invisible L783–788
+
test_delete_public_experimental_is_patch
method
method test_delete_public_experimental_is_patch L673–677
+
test_insert_public_experimental_is_patch
method
method test_insert_public_experimental_is_patch L679–682
+
test_signature_change_experimental_is_patch
method
method test_signature_change_experimental_is_patch L684–690
+
test_insert_private_symbol_is_invisible
method
method test_insert_private_symbol_is_invisible L510–514
+
test_delete_on_invisible_file_produces_no_bump
method
method test_delete_on_invisible_file_produces_no_bump L644–646
+
test_insert_on_invisible_file_produces_no_bump
method
method test_insert_on_invisible_file_produces_no_bump L634–637
+
test_patch_op_on_invisible_file_is_invisible
method
method test_patch_op_on_invisible_file_is_invisible L648–654
+
test_move_op_private_symbol_is_invisible
method
method test_move_op_private_symbol_is_invisible L741–745
+
test_move_op_public_exported_is_implementation
method
method test_move_op_public_exported_is_implementation L735–739
+
test_mutate_op_private_symbol_is_invisible
method
method test_mutate_op_private_symbol_is_invisible L753–758
+
test_mutate_op_public_is_implementation
method
method test_mutate_op_public_is_implementation L747–751
+
test_patch_op_invisible_file_skips_children
method
method test_patch_op_invisible_file_skips_children L713–719
+
test_patch_op_no_child_ops_is_implementation
method
method test_patch_op_no_child_ops_is_implementation L707–711
+
test_patch_op_with_stable_child_delete_is_major
method
method test_patch_op_with_stable_child_delete_is_major L721–726
+
test_replace_implementation_change_is_patch
method
method test_replace_implementation_change_is_patch L539–544
+
test_replace_private_symbol_is_invisible
method
method test_replace_private_symbol_is_invisible L579–582
+
test_replace_rename_unstable_is_minor
method
method test_replace_rename_unstable_is_minor L569–571
+
test_replace_signature_change_stable_is_major
method
method test_replace_signature_change_stable_is_major L546–554
+
test_replace_signature_change_unstable_is_minor
method
method test_replace_signature_change_unstable_is_minor L556–559
+
test_replace_unrecognised_summary_is_conservative_low_confidence
method
method test_replace_unrecognised_summary_is_conservative_low_confidence L573–577
+
test_explicit_manifest_overrides_repo_root
method
method test_explicit_manifest_overrides_repo_root L820–834
+
test_repo_root_missing_stability_toml_falls_back_to_empty
method
method test_repo_root_missing_stability_toml_falls_back_to_empty L813–818
+
test_classify_delta_returns_valid_bump
class
method test_classify_delta_returns_valid_bump L893–895
+
test_breaking_addresses_empty_when_no_breaking
method
method test_breaking_addresses_empty_when_no_breaking L448–457
+
test_empty_is_invisible_is_always_false
method
method test_empty_is_invisible_is_always_false L216–218
+
test_empty_stability_for_defaults_to_unstable
method
method test_empty_stability_for_defaults_to_unstable L212–214
+
test_declared_experimental_exact_match
method
method test_declared_experimental_exact_match L290–292
+
test_stable_wins_over_experimental_when_both_match
method
method test_stable_wins_over_experimental_when_both_match L303–309
~
_delete
~
_delta
~
_insert
~
_replace
~
DeleteOp
~
InsertOp
~
MoveOp
~
PatchOp
0 comments
To add a comment, use the Muse CLI:
muse hub commit comment sha256:05d74f1339933f271493f80d9ea71d8719e762af3c3e15c96e52d306c7d14c64 --body "your comment"
No comments yet. Be the first to start the discussion.