feat(storage): phase 4 — shelf entries use git-header+JSON, no extension
- shelf_entry_path() returns .muse/shelf/<algo>/<hex> (no extension) - write_shelf_entry() writes 'shelf <size>\0<json>' framing (crash-safe atomic rename) - read_shelf_entry() parses header+JSON; silently migrates .msgpack on first read - list_shelf_entries() handles both new-format (no extension) and .msgpack legacy files - delete_shelf_entry() removes both new and legacy .msgpack files - gc._collect_shelf_objects() reads object IDs from new-format shelf entries - test_phase4_shelf_json.py: 18 new tests covering all Phase 4 requirements - test_shelf_msgpack_storage.py: updated 11 tests to reflect no-extension format - test_cmd_shelf.py: updated fsync test to check _write_shelf_header_atomic
Issue: #12
sha256:5cb3eb55c96351accd2253e726ac0d2d101dd39919315e3d00fca4379852e58d
sha
+49
~22
−2
symbols
sha256:59e87ccf4ec74481b4682a91f8ddf139ee7ce2041c8fccc19eda85c31b89d0f3
snapshot
+49
symbols added
~22
symbols modified
−2
symbols removed
0
dead code introduced
Semantic Changes
73 symbols
+
test_delete_absent_entry_returns_false
method
method test_delete_absent_entry_returns_false L287–294
+
test_delete_removes_legacy_msgpack_file
method
method test_delete_removes_legacy_msgpack_file L275–285
+
test_gc_finds_object_ids_in_new_format_entry
method
method test_gc_finds_object_ids_in_new_format_entry L302–314
+
test_legacy_migrated_to_new_format_on_read
method
method test_legacy_migrated_to_new_format_on_read L207–218
+
test_legacy_msgpack_readable_via_list
method
method test_legacy_msgpack_readable_via_list L197–205
+
test_legacy_msgpack_readable_via_read_shelf_entry
method
method test_legacy_msgpack_readable_via_read_shelf_entry L186–195
+
test_legacy_msgpack_removed_after_migration
method
method test_legacy_msgpack_removed_after_migration L220–229
+
test_shelf_entry_path_has_no_extension
method
method test_shelf_entry_path_has_no_extension L86–90
−
test_creates_msgpack_file_at_correct_path
method
method test_creates_msgpack_file_at_correct_path L323–330
0 comments
To add a comment, use the Muse CLI:
muse hub commit comment sha256:5cb3eb55c96351accd2253e726ac0d2d101dd39919315e3d00fca4379852e58d --body "your comment"
No comments yet. Be the first to start the discussion.