gabriel / muse public
test phase4 task/phase1-merge-engine #10 / 16
AI Agent gabriel · 13 hours ago · Jun 11, 2026 · Diff

test(phase4): Harmony learning across all history modes — 6 HA tests

- HA_01–03: merge/squash/rebase conflict → resolve → commit → Harmony learns; re-run auto-resolves with no conflict - HA_04: MERGE_STATE.theirs_commit is always set for squash (guard that makes commit.py Harmony recording fire) - HA_05: pattern in Harmony store after squash commit - HA_06: clean squash merge produces no Harmony patterns (no false learning) - No code change needed — MERGE_STATE carries theirs_commit regardless of --history mode; Harmony keying is content-based (file object IDs) not commit-ID-based so squash/rebase work identically to merge

sha256:75bbcdb47b6efaccafb75a02ff98f2d2fab4e9c5f803282868bd968a7180d5a4 sha
+32 symbols
sha256:2bab835d054b49586048c3f0bb54986904b0dcbb2d242ab51d1da3f25a07b3f1 snapshot
+32
symbols added
0
dead code introduced
Semantic Changes 32 symbols
~ tests/test_phase4_harmony_history.py .py 32 symbols added
+ TestHarmonyLearnsPerHistoryMode class class TestHarmonyLearnsPerHistoryMode L189–246
+ _run_full_harmony_test method method _run_full_harmony_test L193–223
+ test_HA_01_merge_harmony_auto_resolves method method test_HA_01_merge_harmony_auto_resolves L225–227
+ test_HA_02_squash_harmony_auto_resolves method method test_HA_02_squash_harmony_auto_resolves L229–236
+ test_HA_03_rebase_harmony_auto_resolves method method test_HA_03_rebase_harmony_auto_resolves L238–246
+ TestHarmonyStructuralGuarantees class class TestHarmonyStructuralGuarantees L253–327
+ test_HA_04_merge_state_theirs_commit_set_for_squash method method test_HA_04_merge_state_theirs_commit_set_for_squash L256–277
+ test_HA_05_harmony_pattern_in_store_after_squash_commit method method test_HA_05_harmony_pattern_in_store_after_squash_commit L279–296
+ test_HA_06_harmony_does_not_fire_for_clean_squash_merge method method test_HA_06_harmony_does_not_fire_for_clean_squash_merge L298–327
+ _checkout function function _checkout L113–121
+ _env function function _env L47–48
+ _init_repo function function _init_repo L51–66
+ _make_commit function function _make_commit L75–110
+ _run_conflict_cycle function function _run_conflict_cycle L146–182
+ _setup_conflict_repo function function _setup_conflict_repo L124–143
+ _write_obj function function _write_obj L69–72
+ cli variable variable cli L40–40
+ CliRunner import import CliRunner L33–33
+ annotations import import annotations L26–26
+ blob_id import import blob_id L34–34
+ datetime import import datetime L28–28
+ fake_id import import fake_id L34–34
+ heads_dir import import heads_dir L36–36
+ json import import json L29–29
+ muse_dir import import muse_dir L36–36
+ pathlib import import pathlib L30–30
+ pytest import import pytest L32–32
+ read_merge_state import import read_merge_state L37–37
+ read_object import import read_object L35–35
+ ref_path import import ref_path L36–36
+ write_object import import write_object L35–35
+ runner variable variable runner L39–39

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