gabriel / muse public
refactor BREAKING store task/store-phase6-releases #1 / 1
AI Agent gabriel · 114 days ago · May 21, 2026 · Diff

refactor(store): extract release layer into muse.core.releases

Move _sem_ver_bump_val, _parse_semver_tag, _parse_changelog_entries, ReleaseDict, compute_release_id, ReleaseRecord, release_path, _read_release_or_migrate, write_release, read_release, get_release_for_tag, list_releases, delete_release, and build_changelog out of muse/core/store.py into a new muse/core/releases.py module.

All symbols remain re-exported from muse.core.store — zero callers updated. Removed now-unused _releases_dir from the paths import block.

sha256:3381fdd936abcacbb45af12a44a7300a4d678c4be814132e73afddc93e7c493a sha
+54 ~19 −18 symbols
sha256:08bb20d047621911a21ad5fc4310d547ae66134653b1af2dcbf2b0068fea21dd snapshot
+54
symbols added
~19
symbols modified
−18
symbols removed
0
dead code introduced
Semantic Changes 91 symbols
~ muse/core/releases.py .py 40 symbols added
+ ReleaseDict class class ReleaseDict L121–138 ← moved from muse/core/store.py
+ ReleaseRecord class class ReleaseRecord L159–240
+ from_dict method method from_dict L215–240 ← moved from muse/core/store.py
+ to_dict method method to_dict L195–212
+ _parse_changelog_entries function function _parse_changelog_entries L89–114
+ _parse_semver_tag function function _parse_semver_tag L71–86
+ _read_release_or_migrate function function _read_release_or_migrate L273–289 ← moved from muse/core/store.py
+ _sem_ver_bump_val function function _sem_ver_bump_val L55–68
+ build_changelog function function build_changelog L378–411
+ compute_release_id function function compute_release_id L145–151 ← moved from muse/core/store.py
+ delete_release function function delete_release L363–375 ← moved from muse/core/store.py
+ get_release_for_tag function function get_release_for_tag L314–325 ← moved from muse/core/store.py
+ ChangelogEntry import import ChangelogEntry L40–40
+ MsgpackDict import import MsgpackDict L46–46
+ ReleaseChannel import import ReleaseChannel L40–40
+ SemVerBump import import SemVerBump L46–46
+ SemVerTag import import SemVerTag L40–40
+ TypedDict import import TypedDict L35–35
+ _CHANNEL_MAP import import _CHANNEL_MAP L40–40
+ _int_val import import _int_val L39–39
+ _json import import _json L31–31
+ _read_msgpack_dict import import _read_msgpack_dict L37–37
+ _releases_dir import import _releases_dir L38–38
+ _str_list import import _str_list L39–39
+ _str_val import import _str_val L39–39
+ _write_json_atomic import import _write_json_atomic L37–37
+ annotations import import annotations L28–28
+ content_hash import import content_hash L46–46
+ dataclass class import dataclass L34–34
+ datetime import import datetime L30–30
+ field import import field L34–34
+ logging import import logging L32–32
+ pathlib import import pathlib L33–33
+ short_id import import short_id L46–46
+ split_id import import split_id L46–46
+ list_releases function function list_releases L328–360 ← moved from muse/core/store.py
+ logger variable variable logger L48–48
+ read_release function function read_release L300–311 ← moved from muse/core/store.py
+ release_path function function release_path L247–266
+ write_release function function write_release L292–297 ← moved from muse/core/store.py
~ muse/core/store.py .py 14 symbols added, 18 symbols removed, 19 symbols modified
ReleaseDict class class ReleaseDict L317–334 → moved to muse/core/releases.py
ReleaseRecord class class ReleaseRecord L349–431
from_dict method method from_dict L406–431 → moved to muse/core/releases.py
to_dict method method to_dict L385–403
_parse_changelog_entries function function _parse_changelog_entries L284–311
_parse_semver_tag function function _parse_semver_tag L265–282
_read_release_or_migrate function function _read_release_or_migrate L630–646 → moved to muse/core/releases.py
_sem_ver_bump_val function function _sem_ver_bump_val L250–263
build_changelog function function build_changelog L733–765
compute_release_id function function compute_release_id L340–346 → moved to muse/core/releases.py
delete_release function function delete_release L719–731 → moved to muse/core/releases.py
get_release_for_tag function function get_release_for_tag L672–683 → moved to muse/core/releases.py
_CHANNEL_MAP import import _CHANNEL_MAP L110–110
_releases_dir import import _releases_dir L157–157
list_releases function function list_releases L685–717 → moved to muse/core/releases.py
read_release function function read_release L659–670 → moved to muse/core/releases.py
release_path function function release_path L461–480
write_release function function write_release L652–657 → moved to muse/core/releases.py
+ ReleaseDict import import ReleaseDict L247–247
+ ReleaseRecord import import ReleaseRecord L247–247
+ _parse_changelog_entries import import _parse_changelog_entries L247–247
+ _parse_semver_tag import import _parse_semver_tag L247–247
+ _read_release_or_migrate import import _read_release_or_migrate L247–247
+ _sem_ver_bump_val import import _sem_ver_bump_val L247–247
+ build_changelog import import build_changelog L247–247
+ compute_release_id import import compute_release_id L247–247
+ delete_release import import delete_release L247–247
+ get_release_for_tag import import get_release_for_tag L247–247
+ list_releases import import list_releases L247–247
+ read_release import import read_release L247–247
+ release_path import import release_path L247–247
+ write_release import import write_release L247–247
← Older Oldest on task/store-phase6-releases
All commits
Newer → Latest on task/store-phase6-releases

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