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

refactor(harmony): Phase 7 — extract policies.py

Move policy serialisation, CRUD, and matching logic out of the harmony god-object into muse/core/harmony/policies.py.

- policies.py: _MAX_POLICY_BYTES, _MAX_POLICIES, _policy_condition_to_dict, _policy_to_dict, _dict_to_policy, save_policy, load_policy, list_policies, remove_policy, _condition_matches, match_policy - __init__.py: re-exports extracted symbols; fnmatch import removed (no longer used after policy matching moved out)

707/707 harmony tests green.

sha256:42ccf3b0a358cb985acab8d086d9cff35f61b8f647fa4639e523151b277ba864 sha
+42 −12 symbols
sha256:bf7f0fb917f651b184c1952ce65fb1348270a58c8aa94445c7feaa0ad0a05393 snapshot
+42
symbols added
−12
symbols removed
0
dead code introduced
Semantic Changes 54 symbols
~ muse/core/harmony/policies.py .py 31 symbols added
+ _MAX_POLICIES variable variable _MAX_POLICIES L36–36 ← moved from muse/core/harmony/__init__.py
+ _MAX_POLICY_BYTES variable variable _MAX_POLICY_BYTES L33–33 ← moved from muse/core/harmony/__init__.py
+ _condition_matches function function _condition_matches L231–253 ← moved from muse/core/harmony/__init__.py
+ _dict_to_policy function function _dict_to_policy L64–88 ← moved from muse/core/harmony/__init__.py
+ _policy_condition_to_dict function function _policy_condition_to_dict L42–48 ← moved from muse/core/harmony/__init__.py
+ _policy_to_dict function function _policy_to_dict L50–62 ← moved from muse/core/harmony/__init__.py
+ ConflictPattern import import ConflictPattern L20–20
+ JsonValue import import JsonValue L15–15
+ Mapping import import Mapping L13–13
+ Policy import import Policy L20–20
+ PolicyAction import import PolicyAction L20–20
+ PolicyCondition import import PolicyCondition L20–20
+ PolicyScope import import PolicyScope L20–20
+ _PolicyConditionDict import import _PolicyConditionDict L20–20
+ _PolicyDict import import _PolicyDict L20–20
+ _parse_dt import import _parse_dt L17–17
+ _validate_policy_id import import _validate_policy_id L18–18
+ _write_atomic import import _write_atomic L19–19
+ annotations import import annotations L7–7
+ fnmatch import import fnmatch L9–9 ← moved from muse/core/harmony/__init__.py
+ json import import json L10–10
+ load_json_file import import load_json_file L15–15
+ logging import import logging L11–11
+ pathlib import import pathlib L12–12
+ policies_dir import import policies_dir L18–18
+ list_policies function function list_policies L158–199 ← moved from muse/core/harmony/__init__.py
+ load_policy function function load_policy L118–156 ← moved from muse/core/harmony/__init__.py
+ logger variable variable logger L30–30
+ match_policy function function match_policy L255–275 ← moved from muse/core/harmony/__init__.py
+ remove_policy function function remove_policy L201–225 ← moved from muse/core/harmony/__init__.py
+ save_policy function function save_policy L94–116 ← moved from muse/core/harmony/__init__.py
~ muse/core/harmony/__init__.py .py 11 symbols added, 12 symbols removed
_MAX_POLICIES variable variable _MAX_POLICIES L206–206 → moved to muse/core/harmony/policies.py
_MAX_POLICY_BYTES variable variable _MAX_POLICY_BYTES L200–200 → moved to muse/core/harmony/policies.py
_condition_matches function function _condition_matches L399–421 → moved to muse/core/harmony/policies.py
_dict_to_policy function function _dict_to_policy L234–258 → moved to muse/core/harmony/policies.py
_policy_condition_to_dict function function _policy_condition_to_dict L212–218 → moved to muse/core/harmony/policies.py
_policy_to_dict function function _policy_to_dict L220–232 → moved to muse/core/harmony/policies.py
fnmatch import import fnmatch L92–92 → moved to muse/core/harmony/policies.py
list_policies function function list_policies L326–367 → moved to muse/core/harmony/policies.py
load_policy function function load_policy L288–324 → moved to muse/core/harmony/policies.py
match_policy function function match_policy L423–443 → moved to muse/core/harmony/policies.py
remove_policy function function remove_policy L369–393 → moved to muse/core/harmony/policies.py
save_policy function function save_policy L264–286 → moved to muse/core/harmony/policies.py
+ _MAX_POLICIES import import _MAX_POLICIES L141–141
+ _MAX_POLICY_BYTES import import _MAX_POLICY_BYTES L141–141
+ _condition_matches import import _condition_matches L141–141
+ _dict_to_policy import import _dict_to_policy L141–141
+ _policy_condition_to_dict import import _policy_condition_to_dict L141–141
+ _policy_to_dict import import _policy_to_dict L141–141
+ list_policies import import list_policies L141–141
+ load_policy import import load_policy L141–141
+ match_policy import import match_policy L141–141
+ remove_policy import import remove_policy L141–141
+ save_policy import import save_policy L141–141

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