gabriel / muse public
feat BREAKING task/phase1-cohen-action-labels #1 / 1
AI Agent gabriel · 163 days ago · Apr 17, 2026 · Diff

feat: Phase 1 — Cohen action labels in ConflictRecord and merge JSON output

Every conflict record now carries ours_action and theirs_action fields (inserted/deleted/modified) so agents see what each side did, not just that they conflicted. Labels appear in ConflictRecord.to_dict() and in the muse merge --json conflict_records list.

- ConflictDict and ConflictRecord: add ours_action, theirs_action fields - CodePlugin.merge(): populate conflict_records with _file_action() labels - merge.py: include conflict_records in conflict-status JSON output - 14 new TDD tests in test_phase1_cohen_action_labels.py

sha256:7970cdc3d1206180172e2f74f29b8e6977572924b87c361c9a73240663430aa6 sha
+32 ~20 symbols
sha256:402d26be34d5d65f46b440d52cc040131e22250c5ca37fc1697614b05e4f34fd snapshot
+32
symbols added
~20
symbols modified
0
dead code introduced
Semantic Changes 52 symbols
+ TestCodePluginMergeLabels class class TestCodePluginMergeLabels L104–210
+ test_both_inserted_different_content_labels method method test_both_inserted_different_content_labels L150–162
+ test_both_modified_produces_modified_labels method method test_both_modified_produces_modified_labels L107–120
+ test_manual_strategy_conflict_record_has_labels method method test_manual_strategy_conflict_record_has_labels L191–210
+ test_multiple_conflicts_each_gets_record method method test_multiple_conflicts_each_gets_record L176–189
+ test_no_conflict_no_conflict_records method method test_no_conflict_no_conflict_records L164–174
+ test_ours_deleted_theirs_modified_labels method method test_ours_deleted_theirs_modified_labels L122–134
+ test_ours_modified_theirs_deleted_labels method method test_ours_modified_theirs_deleted_labels L136–148
+ TestConflictRecordSchema class class TestConflictRecordSchema L60–97
+ test_all_action_values_accepted method method test_all_action_values_accepted L93–97
+ test_conflict_record_defaults_empty_string method method test_conflict_record_defaults_empty_string L71–74
+ test_conflict_record_explicit_actions method method test_conflict_record_explicit_actions L76–79
+ test_conflict_record_has_ours_action method method test_conflict_record_has_ours_action L63–65
+ test_conflict_record_has_theirs_action method method test_conflict_record_has_theirs_action L67–69
+ test_to_dict_includes_ours_action method method test_to_dict_includes_ours_action L81–85
+ test_to_dict_includes_theirs_action method method test_to_dict_includes_theirs_action L87–91
+ _BASE_PY variable variable _BASE_PY L49–49
+ _OURS_MODIFIED variable variable _OURS_MODIFIED L52–52
+ _OURS_PY variable variable _OURS_PY L50–50
+ _THEIRS_MODIFIED variable variable _THEIRS_MODIFIED L53–53
+ _THEIRS_PY variable variable _THEIRS_PY L51–51
+ _oid function function _oid L30–31
+ _snap function function _snap L41–46
+ _write_blob function function _write_blob L34–38
+ CodePlugin import import CodePlugin L23–23
+ ConflictRecord import import ConflictRecord L22–22
+ annotations import import annotations L15–15
+ hashlib import import hashlib L17–17
+ pathlib import import pathlib L18–18
+ pytest import import pytest L20–20
~ muse/cli/commands/merge.py .py 1 symbol modified
~ muse/domain.py .py 3 symbols modified
~ muse/plugins/code/plugin.py .py 2 symbols added, 16 symbols modified
+ _file_action function function _file_action L1070–1083
+ ConflictRecord import import ConflictRecord L111–111
~ merge
← Older Oldest on task/phase1-cohen-action-labels
All commits
Newer → Latest on task/phase1-cohen-action-labels

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