gabriel / muse public
refactor BREAKING harmony task/harmony-decompose #12 / 13
AI Agent gabriel · 116 days ago · May 22, 2026 · Diff

refactor(harmony): Phase 1 — extract types.py

Convert muse/core/harmony.py (flat file, 2210 lines) to muse/core/harmony/ package. Phase 1 moves all dataclasses, TypedDicts, and open constant namespaces to types.py.

New layout ---------- muse/core/harmony/ __init__.py — full public API (re-exports types + all logic inline) types.py — ConflictType, ResolutionStrategy, PolicyAction, PolicyScope, AuditEventType, EscalationStatus, AgentProvenance, PolicyCondition, ConflictPattern, Resolution, Policy, ResolutionProposal, EscalationRecord, _PatternDict, _ResolutionDict, _PolicyConditionDict, _PolicyDict, AuditEvent, _EscalationDict, + type aliases (_ConflictDescription, _AuditMetadata, _ProvenanceDict)

Deleted ------- muse/core/harmony.py — replaced by the package

External callers unchanged -------------------------- All existing `from muse.core.harmony import X` statements continue to work without modification — __init__.py re-exports the full prior API. Verified: muse/cli/commands/commit.py, merge.py, harmony.py, muse/core/bridge/harmony_shelf.py, muse/core/harmony_engine.py.

Test result: 707 passed / 0 failed (baseline: 707 passed)

sha256:5656b6361255f887ab64af2a48127c0dfbfec071a9dbaaa975c2a3267d733c0f sha
+56 ~1 −29 symbols
sha256:0fbdc5a7c0550ef2377c910e840bea76ae63e0652a4f917901bd8ced5377ae28 snapshot
+56
symbols added
~1
symbol modified
−29
symbols removed
0
dead code introduced
Semantic Changes 86 symbols
~ muse/core/harmony/types.py .py 33 symbols added
+ AgentProvenance class class AgentProvenance L134–174 ← moved from muse/core/harmony/__init__.py
+ agent method method agent L154–161 ← moved from muse/core/harmony/__init__.py
+ from_dict method method from_dict L168–174 ← moved from muse/core/harmony/__init__.py
+ human method method human L149–151 ← moved from muse/core/harmony/__init__.py
+ to_dict method method to_dict L163–165 ← moved from muse/core/harmony/__init__.py
+ AuditEvent class class AuditEvent L386–396 ← moved from muse/core/harmony/__init__.py
+ AuditEventType class class AuditEventType L101–117 ← moved from muse/core/harmony/__init__.py
+ ConflictPattern class class ConflictPattern L195–229 ← moved from muse/core/harmony/__init__.py
+ ConflictType class class ConflictType L33–54 ← moved from muse/core/harmony/__init__.py
+ EscalationRecord class class EscalationRecord L310–336 ← moved from muse/core/harmony/__init__.py
+ EscalationStatus class class EscalationStatus L119–127 ← moved from muse/core/harmony/__init__.py
+ Policy class class Policy L257–282 ← moved from muse/core/harmony/__init__.py
+ PolicyAction class class PolicyAction L70–84 ← moved from muse/core/harmony/__init__.py
+ PolicyCondition class class PolicyCondition L177–192 ← moved from muse/core/harmony/__init__.py
+ PolicyScope class class PolicyScope L86–99 ← moved from muse/core/harmony/__init__.py
+ Resolution class class Resolution L232–254 ← moved from muse/core/harmony/__init__.py
+ ResolutionProposal class class ResolutionProposal L285–307 ← moved from muse/core/harmony/__init__.py
+ ResolutionStrategy class class ResolutionStrategy L56–68 ← moved from muse/core/harmony/__init__.py
+ _AuditMetadata variable variable _AuditMetadata L24–24 ← moved from muse/core/harmony/__init__.py
+ _ConflictDescription variable variable _ConflictDescription L21–21 ← moved from muse/core/harmony/__init__.py
+ _EscalationDict class class _EscalationDict L398–407 ← moved from muse/core/harmony/__init__.py
+ _PatternDict class class _PatternDict L342–353 ← moved from muse/core/harmony/__init__.py
+ _PolicyConditionDict class class _PolicyConditionDict L368–372 ← moved from muse/core/harmony/__init__.py
+ _PolicyDict class class _PolicyDict L374–384 ← moved from muse/core/harmony/__init__.py
+ _ProvenanceDict variable variable _ProvenanceDict L27–27 ← moved from muse/core/harmony/__init__.py
+ _ResolutionDict class class _ResolutionDict L355–366 ← moved from muse/core/harmony/__init__.py
+ JsonValue import import JsonValue L14–14
+ Literal import import Literal L12–12
+ Mapping import import Mapping L10–10
+ TypedDict import import TypedDict L12–12 ← moved from muse/core/harmony/__init__.py
+ annotations import import annotations L7–7
+ dataclass class import dataclass L11–11
+ datetime import import datetime L9–9
~ muse/core/harmony/__init__.py .py moved from muse/core/harmony.py; 23 added, 29 removed, 1 modified
AgentProvenance class class AgentProvenance L270–310 → moved to muse/core/harmony/types.py
agent method method agent L290–297 → moved to muse/core/harmony/types.py
from_dict method method from_dict L304–310 → moved to muse/core/harmony/types.py
human method method human L285–287 → moved to muse/core/harmony/types.py
to_dict method method to_dict L299–301 → moved to muse/core/harmony/types.py
AuditEvent class class AuditEvent L522–532 → moved to muse/core/harmony/types.py
AuditEventType class class AuditEventType L237–253 → moved to muse/core/harmony/types.py
ConflictPattern class class ConflictPattern L331–365 → moved to muse/core/harmony/types.py
ConflictType class class ConflictType L169–190 → moved to muse/core/harmony/types.py
EscalationRecord class class EscalationRecord L446–472 → moved to muse/core/harmony/types.py
EscalationStatus class class EscalationStatus L255–263 → moved to muse/core/harmony/types.py
Policy class class Policy L393–418 → moved to muse/core/harmony/types.py
PolicyAction class class PolicyAction L206–220 → moved to muse/core/harmony/types.py
PolicyCondition class class PolicyCondition L313–328 → moved to muse/core/harmony/types.py
PolicyScope class class PolicyScope L222–235 → moved to muse/core/harmony/types.py
Resolution class class Resolution L368–390 → moved to muse/core/harmony/types.py
ResolutionProposal class class ResolutionProposal L421–443 → moved to muse/core/harmony/types.py
ResolutionStrategy class class ResolutionStrategy L192–204 → moved to muse/core/harmony/types.py
_AuditMetadata variable variable _AuditMetadata L108–108 → moved to muse/core/harmony/types.py
_ConflictDescription variable variable _ConflictDescription L105–105 → moved to muse/core/harmony/types.py
_EscalationDict class class _EscalationDict L534–543 → moved to muse/core/harmony/types.py
_PatternDict class class _PatternDict L478–489 → moved to muse/core/harmony/types.py
_PolicyConditionDict class class _PolicyConditionDict L504–508 → moved to muse/core/harmony/types.py
_PolicyDict class class _PolicyDict L510–520 → moved to muse/core/harmony/types.py
_ProvenanceDict variable variable _ProvenanceDict L111–111 → moved to muse/core/harmony/types.py
_ResolutionDict class class _ResolutionDict L491–502 → moved to muse/core/harmony/types.py
Literal import import Literal L92–92
TypedDict import import TypedDict L92–92 → moved to muse/core/harmony/types.py
dataclass class import dataclass L91–91
+ AgentProvenance import import AgentProvenance L106–106
+ AuditEvent import import AuditEvent L106–106
+ AuditEventType import import AuditEventType L106–106
+ ConflictPattern import import ConflictPattern L106–106
+ ConflictType import import ConflictType L106–106
+ EscalationRecord import import EscalationRecord L106–106
+ EscalationStatus import import EscalationStatus L106–106
+ Policy import import Policy L106–106
+ PolicyAction import import PolicyAction L106–106
+ PolicyCondition import import PolicyCondition L106–106
+ PolicyScope import import PolicyScope L106–106
+ Resolution import import Resolution L106–106
+ ResolutionProposal import import ResolutionProposal L106–106
+ ResolutionStrategy import import ResolutionStrategy L106–106
+ _AuditMetadata import import _AuditMetadata L106–106
+ _ConflictDescription import import _ConflictDescription L106–106
+ _EscalationDict import import _EscalationDict L106–106
+ _PatternDict import import _PatternDict L106–106
+ _PolicyConditionDict import import _PolicyConditionDict L106–106
+ _PolicyDict import import _PolicyDict L106–106
+ _ProvenanceDict import import _ProvenanceDict L106–106
+ _ResolutionDict import import _ResolutionDict L106–106
+ annotations import import annotations L88–88

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