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

refactor(harmony): Phase 3 — extract fingerprint.py

Move all pure-computation functions (no I/O) to muse/core/harmony/fingerprint.py.

Moved to fingerprint.py ----------------------- Time helpers: _now_utc, _parse_dt

Content-addressed ID computation: blob_fingerprint, compute_pattern_id, compute_resolution_id, compute_escalation_id

Plugin-dispatch fingerprinting: compute_semantic_fingerprint

fingerprint.py imports ---------------------- datetime, logging, pathlib muse.core.types: JsonValue, content_hash .paths: _SHA256_ID_RE .types: AgentProvenance muse.domain.HarmonyPlugin (lazy, inside compute_semantic_fingerprint)

__init__.py changes ------------------- - Adds from .fingerprint import (...) for all 7 symbols - Removes duplicated function bodies (~100 lines) - content_hash re-added to muse.core.types import (needed by append_audit)

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

sha256:8104248901e3a4babe475281ea319cb8a689b1cfa7131e5893e239da5af4106b sha
+23 ~6 −8 symbols
sha256:4ff0b06497e0fbb38fb3ccbf97fa1d3a0f6d638a57da5e0426684a51a71919ac snapshot
+23
symbols added
~6
symbols modified
−8
symbols removed
0
dead code introduced
Semantic Changes 37 symbols
~ muse/core/harmony/fingerprint.py .py 16 symbols added
+ _now_utc function function _now_utc L23–25 ← moved from muse/core/harmony/__init__.py
+ _parse_dt function function _parse_dt L28–40 ← moved from muse/core/harmony/__init__.py
+ blob_fingerprint function function blob_fingerprint L43–57 ← moved from muse/core/harmony/__init__.py
+ compute_escalation_id function function compute_escalation_id L128–142 ← moved from muse/core/harmony/__init__.py
+ compute_pattern_id function function compute_pattern_id L60–93 ← moved from muse/core/harmony/__init__.py
+ compute_resolution_id function function compute_resolution_id L96–125 ← moved from muse/core/harmony/__init__.py
+ compute_semantic_fingerprint function function compute_semantic_fingerprint L145–186 ← moved from muse/core/harmony/__init__.py
+ AgentProvenance import import AgentProvenance L18–18
+ JsonValue import import JsonValue L15–15
+ _SHA256_ID_RE import import _SHA256_ID_RE L17–17
+ annotations import import annotations L9–9
+ content_hash import import content_hash L15–15
+ datetime import import datetime L11–11
+ logging import import logging L12–12
+ pathlib import import pathlib L13–13
+ logger variable variable logger L20–20
~ muse/core/harmony/__init__.py .py 7 symbols added, 8 symbols removed, 6 symbols modified
_now_utc function function _now_utc L275–277 → moved to muse/core/harmony/fingerprint.py
_parse_dt function function _parse_dt L279–291 → moved to muse/core/harmony/fingerprint.py
blob_fingerprint function function blob_fingerprint L189–203 → moved to muse/core/harmony/fingerprint.py
compute_escalation_id function function compute_escalation_id L1164–1178 → moved to muse/core/harmony/fingerprint.py
compute_pattern_id function function compute_pattern_id L205–238 → moved to muse/core/harmony/fingerprint.py
compute_resolution_id function function compute_resolution_id L240–269 → moved to muse/core/harmony/fingerprint.py
compute_semantic_fingerprint function function compute_semantic_fingerprint L1401–1442 → moved to muse/core/harmony/fingerprint.py
split_id import import split_id L101–101
+ _now_utc import import _now_utc L104–104
+ _parse_dt import import _parse_dt L104–104
+ blob_fingerprint import import blob_fingerprint L104–104
+ compute_escalation_id import import compute_escalation_id L104–104
+ compute_pattern_id import import compute_pattern_id L104–104
+ compute_resolution_id import import compute_resolution_id L104–104
+ compute_semantic_fingerprint import import compute_semantic_fingerprint L104–104

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