gabriel / muse public
feat BREAKING merge task/phase1-merge-engine #7 / 16
AI Agent gabriel · 12 hours ago · Jun 11, 2026 · Diff

feat(merge): Phase 7 — independence merge correctness + Harmony confidence gating

IC_01: guard against vacuous delete+delete commutes on shared symbol addresses (parseable base + unparseable ours/theirs both produce DeleteOps for the same symbols, which incorrectly passed commute check and silently union-merged divergent content) IC_04: guard against empty child_ops on both sides (no parse info = no independence) HC_01-HC_04: harmony.min_auto_apply_confidence config gate with _read_config_float helper; resolutions below threshold escalate instead of auto-applying

Tests: 8 new tests in test_phase7_merge_correctness.py (IC_01-04, HC_01-04)

sha256:f0cc3f3fe40f1df9a488585b5b2aef6aa4dcb0b22b5fdbf7bab7071a5b0c7f7c sha
+31 ~3 symbols
sha256:52d90bf7e7b29d5919a502543915e86aa26de29e29b357fa67981a8e4f430397 snapshot
+31
symbols added
~3
symbols modified
0
dead code introduced
Semantic Changes 34 symbols
+ _NOW variable variable _NOW L308–308
+ _env function function _env L65–66
+ _init_repo function function _init_repo L69–84
+ _make_commit function function _make_commit L93–128
+ _plant_harmony_resolution function function _plant_harmony_resolution L311–371
+ _write_obj function function _write_obj L87–90
+ cli variable variable cli L58–58
+ CliRunner import import CliRunner L52–52
+ annotations import import annotations L44–44
+ blob_id import import blob_id L53–53
+ datetime import import datetime L46–46
+ fake_id import import fake_id L53–53
+ heads_dir import import heads_dir L55–55
+ json import import json L47–47
+ muse_dir import import muse_dir L55–55
+ pathlib import import pathlib L48–48
+ pytest import import pytest L51–51
+ read_object import import read_object L54–54
+ ref_path import import ref_path L55–55
+ tomllib import import tomllib L49–49
+ write_object import import write_object L54–54
+ runner variable variable runner L57–57
+ test_HC_01_high_confidence_auto_applies function function test_HC_01_high_confidence_auto_applies L378–407
+ test_HC_02_low_confidence_does_not_auto_apply function function test_HC_02_low_confidence_does_not_auto_apply L414–445
+ test_HC_03_config_key_overrides_threshold function function test_HC_03_config_key_overrides_threshold L452–490
+ test_HC_04_no_qualifying_resolution_escalates_cleanly function function test_HC_04_no_qualifying_resolution_escalates_cleanly L497–529
+ test_IC_01_divergent_unparseable_surfaces_conflict function function test_IC_01_divergent_unparseable_surfaces_conflict L135–174
+ test_IC_02_non_overlapping_symbols_merge_cleanly function function test_IC_02_non_overlapping_symbols_merge_cleanly L181–217
+ test_IC_03_same_symbol_conflict_surfaces function function test_IC_03_same_symbol_conflict_surfaces L224–254
+ test_IC_04_step15_skips_empty_child_ops function function test_IC_04_step15_skips_empty_child_ops L261–301
~ muse/core/harmony/engine.py .py 1 symbol added, 1 symbol modified
+ _read_config_float function function _read_config_float L508–530
~ muse/plugins/code/plugin.py .py 2 symbols modified

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