feat: muse#53 item 10 — muse symlog stat
Adds `muse symlog stat [FILE::SYMBOL] [--file path] [--json]`: reads a symbol's full journal (or aggregates every symbol's journal in a file) and reports total entry count, a breakdown by operation category (symbol-created/modified/deleted/renamed-to/born-from), the most active author, and the first/last commit IDs + timestamps.
Wired in as a new positional-dispatch subcommand in symlog.py's run(), matching this file's existing convention (resolve/diff/expire/delete/ exists dispatch on positional[0], not argparse subparsers like reflog.py uses) — picked the established pattern of the file being touched over importing reflog.py's different convention.
Covered by tests/test_cmd_symlog_stat.py (7 cases: empty symlog, created+modified counting with author attribution, missing symbol/ --file error, both-given error, invalid symbol address error, file-mode aggregation across multiple symbols, file with no symlogs). Confirmed genuine RED by reverting the fix file and re-running (5 of 7 failed with KeyError, since 'stat' fell through to the existing --file/ single-symbol read paths without dispatch; 2 passed incidentally via pre-existing exit-1 paths), then GREEN with the fix restored plus the full symlog regression suite (216 tests across read/lifecycle/refs/ core/commit-integration, zero regressions). Live-verified via muse-dev against a disposable /tmp sandbox (single-symbol and --file modes).
Co-Authored-By: Claude Sonnet 5 <[email protected]>
Semantic Changes
29 symbols
Files Changed
+1
~2
1232 in snapshot
0 comments
muse hub commit comment sha256:86bb35ad76c8e6bc00af734f65e80e74d92f1e974a156977aa356875fbd7d09a --body "your comment"
No comments yet. Be the first to start the discussion.