gabriel / muse public
docs dev
AI Agent gabriel · 150 days ago · Apr 24, 2026 · Diff

docs: commit-id-v2 rewrite spec

v2 formula adds repo_id, author, signer_public_key to commit_id hash. Removes format_version entirely. Renames branch→created_on_branch. Normalises bare-sig prefix. Topological rewrite algorithm with dry-run. Pilot strategy: muse-zsh in /tmp before touching any real repo.

sha256:148e92dd21404e63cd40f8f12e45aec1cf401c111eb02a5c2bd3f4eebbed9d43 sha
+38 symbols
sha256:78caec00f09025b50d2dc0cad7312e253a0cf8d42872c1f59dcb6e3022f700c0 snapshot
+38
symbols added
0
dead code introduced
Semantic Changes 38 symbols
~ docs/commit-id-v2-rewrite.md .md 38 symbols added
+ Commit ID v2 — History Rewrite Spec section Commit ID v2 — History Rewrite Spec L1–224
+ Dry-Run Mode (--dry-run) section Dry-Run Mode (--dry-run) L176–183
+ Edge Cases section Edge Cases L183–198
+ table@L185 section table@L185 L185–195
+ Execution Order (Workspace) section Execution Order (Workspace) L198–210
+ Files to Touch section Files to Touch L94–118
+ code[bash]@L110 variable variable code[bash]@L110 L110–115
+ table@L96 section table@L96 L96–107
+ New compute_commit_id Formula section New compute_commit_id Formula L57–81
+ code@L61 variable variable code@L61 L61–64
+ code@L67 variable variable code@L67 L67–70
+ Phases section Phases L210–224
+ table@L212 section table@L212 L212–224
+ Problems Fixed section Problems Fixed L3–40
+ 1 — Key-swap attack surface section 1 — Key-swap attack surface L5–12
+ 2 — author not bound to commit ID section 2 — author not bound to commit ID L12–17
+ 3 — repo_id not bound to commit ID section 3 — repo_id not bound to commit ID L17–21
+ 4 — Bare base64 signature prefix section 4 — Bare base64 signature prefix L21–27
+ 5 — format_version schema versioning field section 5 — format_version schema versioning field L27–33
+ 6 — branch field semantics are misleading section 6 — branch field semantics are misleading L33–40
+ Rewrite Algorithm section Rewrite Algorithm L118–176
+ Step 0 — Preflight section Step 0 — Preflight L120–124
+ Step 1 — Safety copy (pilot) / bundle (main repos) section Step 1 — Safety copy (pilot) / bundle (main repos) L124–136
+ code[bash]@L127 variable variable code[bash]@L127 L127–130
+ code[bash]@L132 variable variable code[bash]@L132 L132–135
+ Step 2 — Load repo_id section Step 2 — Load repo_id L136–142
+ code@L138 variable variable code@L138 L138–141
+ Step 3 — Collect all commits section Step 3 — Collect all commits L142–146
+ Step 4 — Topological sort (Kahn's algorithm) section Step 4 — Topological sort (Kahn's algorithm) L146–150
+ Step 5 — Rewrite each commit section Step 5 — Rewrite each commit L150–160
+ code@L152 variable variable code@L152 L152–159
+ Step 6 — Update branch heads section Step 6 — Update branch heads L160–164
+ Step 7 — Delete old commit files section Step 7 — Delete old commit files L164–168
+ Step 8 — Verify section Step 8 — Verify L168–176
+ code[bash]@L170 variable variable code[bash]@L170 L170–173
+ Schema Changes to CommitRecord section Schema Changes to CommitRecord L81–94
+ table@L83 section table@L83 L83–87
+ Solution — One Sweep, Clean Forever section Solution — One Sweep, Clean Forever L40–57
← Older Oldest on dev
All commits
Newer → Latest on dev

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:148e92dd21404e63cd40f8f12e45aec1cf401c111eb02a5c2bd3f4eebbed9d43 --body "your comment"