reflog.md
markdown
sha256:660fcac1df3ab28f61862e961890bd2ca8b754fa0242079d93ca1e25037ec8a6
chore(tests): add docstring to tests/__init__.py so rc14 tr…
Human
26 days ago
muse reflog — HEAD and branch movement history
The reflog is Muse's undo safety net. Every time HEAD or a branch pointer moves — commit, checkout, merge, reset, cherry-pick — Muse appends an entry to a per-ref journal. If you accidentally reset to the wrong commit, the reflog tells you exactly where HEAD was before.
Storage
.muse/logs/
HEAD ← journal for the symbolic HEAD pointer
refs/
heads/
main ← journal for the main branch ref
feat/audio ← journal for the feat/audio branch ref
…
Each file is an append-only sequence of lines in the format used by Git, so tooling that understands both formats works without translation.
Subcommands
muse reflog (default)
Show the HEAD reflog, newest entry first.
muse reflog [--branch <name>] [--limit N] [--all]
| Flag | Default | Description |
|---|---|---|
--branch, -b |
HEAD log | Show the named branch's reflog instead of HEAD |
--limit, -n |
20 | Maximum entries to show |
--all |
false | List every ref that has a reflog |
Output format
@{0} cccccccc0000 (initial) 2026-03-19 14:22:01 UTC commit: add chorus
@{1} aabbccdd1234 (cccccccc0000) 2026-03-19 14:18:44 UTC checkout: moving from dev to main
@{2} aaaa0000ffff (aabbccdd1234) 2026-03-19 14:15:02 UTC commit: initial
@{N}— reflog index (0 = newest)- First SHA-256 prefix — new commit
- SHA-256 in parentheses — previous commit (
initialfor the first entry)
When entries are written
| Operation | Entry |
|---|---|
muse commit |
commit: <message> |
muse checkout <branch> |
checkout: moving from X to Y |
muse checkout -b <branch> |
branch: created from X |
muse merge <branch> |
merge: <branch> into <current> |
muse reset |
reset (soft/hard): moving to <sha12> |
Agent workflows
Undo an accidental reset
# Find HEAD before the reset:
muse reflog --limit 5
# Restore:
muse reset <sha-from-reflog>
Automated safety checkpoint
# Before a risky operation, note the current HEAD:
HEAD=$(muse plumbing rev-parse HEAD)
# Do the risky operation…
muse reset --hard some-old-commit
# If it went wrong, restore using the reflog:
muse reflog
muse reset "$HEAD"
Pipeline inspection
# How many commits happened today?
muse reflog --branch main | grep "$(date +%Y-%m-%d)" | wc -l
Security notes
The reflog files are append-only by design. Entries are never modified after being written. The log paths are validated through the same contain_path primitive used throughout Muse — no path traversal is possible via branch names.
File History
4 commits
sha256:660fcac1df3ab28f61862e961890bd2ca8b754fa0242079d93ca1e25037ec8a6
chore(tests): add docstring to tests/__init__.py so rc14 tr…
Human
26 days ago
sha256:d8316ffae901be06347e16ab55be11868eb519dd16ade3e8aa16a99e662f7e62
baseline: rc14 re-baseline after rc3 store corruption recovery
Human
patch
26 days ago
sha256:fb67fed5a4d3e40de84bdd163de94ef1386570bef1dd1a020a732c8a038962ce
Merge branch 'dev' into main
Human
48 days ago
sha256:1c4b3e3a9a1f300774c3ee662b572a698d5fd405bf765a71e6011a2e9c3eaaaa
feat: Muse — version control for the agent era
Human
100 days ago