gabriel / muse public
fix status task/mwp-cleanup #7 / 7
AI Agent gabriel · 150 days ago · Apr 24, 2026 · Diff

fix(status): untracked files now set clean=False, matching git behaviour

Previously clean=True even with untracked files on disk. This silently misled agents into thinking a working tree was fully committed when it wasn't — the bug that caused the architecture doc to go unnoticed.

Git contract: 'nothing added to commit but untracked files present' is NOT a clean tree. Muse now matches this.

- status.py: `clean = not staged and not unstaged and not untracked` - _StatusJson docstring updated - agent-guide.md: corrected clean/dirty/untracked key-rules section and the git muscle-memory traps table - test_cmd_status.py: new test_untracked_file_makes_repo_not_clean (was RED) - docs/protocol/musewire-architecture.md: staged (was untracked, never committed)

sha256:2148d03925bdee980ca42fad1223c056bb83aaba3ea381d6529f8c77fea9aaff sha
+141 ~3 symbols
sha256:46f87db16f3e6950f5447b66ac6759317b4fce73cb0a4859899044615f74bf82 snapshot
+141
symbols added
~3
symbols modified
0
dead code introduced
Semantic Changes 144 symbols
~ docs/agent-guide.md .md 114 symbols added
+ Muse Ecosystem — Agent Guide section Muse Ecosystem — Agent Guide L1–1262
+ Agent Config section Agent Config L507–571
+ Adapter files generated section Adapter files generated L541–559
+ code@L554 variable variable code@L554 L554–558
+ table@L543 section table@L543 L543–549
+ Commands section Commands L559–571
+ table@L561 section table@L561 L561–568
+ First-time setup section First-time setup L516–532
+ code[bash]@L518 variable variable code[bash]@L518 L518–531
+ Keeping adapters in sync section Keeping adapters in sync L532–541
+ code[bash]@L536 variable variable code[bash]@L536 L536–540
+ code@L511 variable variable code@L511 L511–515
+ Auth — MSign (Ed25519) section Auth — MSign (Ed25519) L456–473
+ code[bash]@L460 variable variable code[bash]@L460 L460–466
+ Branch Flow section Branch Flow L199–270
+ Branch semantic flags section Branch semantic flags L214–241
+ code[bash]@L220 variable variable code[bash]@L220 L220–238
+ Standard cycle section Standard cycle L241–270
+ code[bash]@L243 variable variable code[bash]@L243 L243–267
+ code@L201 variable variable code@L201 L201–211
+ Bundle — Off-Network Transfer section Bundle — Off-Network Transfer L389–441
+ Agent decision chain section Agent decision chain L395–420
+ code[bash]@L399 variable variable code[bash]@L399 L399–416
+ Create section Create L420–428
+ code[bash]@L422 variable variable code[bash]@L422 L422–427
+ Subcommand reference section Subcommand reference L428–441
+ table@L430 section table@L430 L430–438
+ Code Intelligence — Replace Your Reflexes section Code Intelligence — Replace Your Reflexes L580–988
+ Eight questions, eight commands — do not confuse them section Eight questions, eight commands — do not confuse them L916–927
+ Layered intel — three altitudes, one repo section Layered intel — three altitudes, one repo L584–596
+ code@L586 variable variable code@L586 L586–591
+ Reflex replacement table section Reflex replacement table L596–898
+ table@L598 section table@L598 L598–897
+ Task-typed rituals section Task-typed rituals L927–959
+ code[bash]@L930 variable variable code[bash]@L930 L930–936
+ code[bash]@L938 variable variable code[bash]@L938 L938–945
+ code[bash]@L947 variable variable code[bash]@L947 L947–951
+ code[bash]@L953 variable variable code[bash]@L953 L953–958
+ Trigger phrases → commands section Trigger phrases → commands L898–916
+ table@L902 section table@L902 L902–915
+ muse cat vs muse code cat — two different commands section muse cat vs muse code cat — two different commands L976–988
+ table@L978 section table@L978 L978–983
+ muse read --json — what the output contains section muse read --json — what the output contains L959–976
+ code[bash]@L968 variable variable code[bash]@L968 L968–972
+ _types section Cryptographic Value Codec — muse.core._types L473–507
+ Rules section Rules L498–507
+ _types) function section Utility functions (all in muse.core._types) L485–498
+ table@L487 section table@L487 L487–497
+ Wire format section Wire format L477–485
+ code@L479 variable variable code@L479 L479–484
+ Deploy (MuseHub) section Deploy (MuseHub) L441–456
+ code[bash]@L445 variable variable code[bash]@L445 L445–451
+ Gitism Glossary section Gitism Glossary L988–1262
+ Deletion muscle memory — git rm → muse rm section Deletion muscle memory — git rm → muse rm L1014–1034
+ table@L1018 section table@L1018 L1018–1026
+ Hub command shape — noun then verb, not verb-noun section Hub command shape — noun then verb, not verb-noun L1084–1137
+ table@L1089 section table@L1089 L1089–1133
+ JSON key names section JSON key names L992–1014
+ table@L994 section table@L994 L994–1013
+ git stash → muse shelf section git stash → muse shelf L1245–1262
+ table@L1250 section table@L1250 L1250–1259
+ muse hub — full command reference section muse hub — full command reference L1137–1245
+ code[bash]@L1145 variable variable code[bash]@L1145 L1145–1151
+ code[bash]@L1154 variable variable code[bash]@L1154 L1154–1162
+ code[bash]@L1165 variable variable code[bash]@L1165 L1165–1177
+ code[bash]@L1180 variable variable code[bash]@L1180 L1180–1193
+ code[bash]@L1196 variable variable code[bash]@L1196 L1196–1202
+ code[bash]@L1205 variable variable code[bash]@L1205 L1205–1211
+ code[bash]@L1214 variable variable code[bash]@L1214 L1214–1221
+ code[bash]@L1224 variable variable code[bash]@L1224 L1224–1233
+ code[bash]@L1236 variable variable code[bash]@L1236 L1236–1244
+ muse status --json — always the same shape section muse status --json — always the same shape L1034–1084
+ code[json]@L1039 variable variable code[json]@L1039 L1039–1064
+ table@L1077 section table@L1077 L1077–1083
+ Harmony — Resolution Intelligence section Harmony — Resolution Intelligence L270–389
+ Harmony CLI reference section Harmony CLI reference L340–355
+ table@L342 section table@L342 L342–354
+ Harmony storage layout section Harmony storage layout L323–340
+ code@L325 variable variable code@L325 L325–339
+ How Harmony learns section How Harmony learns L282–296
+ code@L286 variable variable code@L286 L286–295
+ Idiomatic harmony workflow section Idiomatic harmony workflow L296–323
+ code[bash]@L298 variable variable code[bash]@L298 L298–322
+ Key behaviours to remember section Key behaviours to remember L371–389
+ Pattern fingerprinting section Pattern fingerprinting L355–371
+ code@L275 variable variable code@L275 L275–281
+ Muse Commands section Muse Commands L43–199
+ -C — cross-repo targeting section -C — cross-repo targeting L47–57
+ code[bash]@L49 variable variable code[bash]@L49 L49–54
+ Core commands section Core commands L158–186
+ table@L160 section table@L160 L160–185
+ Never pipe 2>&1 into a JSON parser section Never pipe 2>&1 into a JSON parser L144–158
+ code[bash]@L149 variable variable code[bash]@L149 L149–157
+ muse content-grep — regex gotchas section muse content-grep — regex gotchas L186–199
+ code[bash]@L190 variable variable code[bash]@L190 L190–194
+ muse hub repo list — exact flags section muse hub repo list — exact flags L133–144
+ code[bash]@L139 variable variable code[bash]@L139 L139–143
+ muse hub — always needs repo context section muse hub — always needs repo context L57–78
+ code[bash]@L61 variable variable code[bash]@L61 L61–68
+ code[bash]@L69 variable variable code[bash]@L69 L69–77
+ muse hub — targeting staging vs local section muse hub — targeting staging vs local L120–133
+ code[bash]@L125 variable variable code[bash]@L125 L125–132
+ muse push — check remotes exist before pushing section muse push — check remotes exist before pushing L78–96
+ code@L88 variable variable code@L88 L88–93
+ code[bash]@L82 variable variable code[bash]@L82 L82–85
+ muse push — uses remote names, not --hub section muse push — uses remote names, not --hub L96–120
+ code[bash]@L101 variable variable code[bash]@L101 L101–109
+ code[bash]@L112 variable variable code[bash]@L112 L112–115
+ section No Legacy. No Deprecated. No Exceptions. L571–580
+ section No git. No GitHub. Ever. L19–28
+ Sub-Agents Must Use Muse Too section Sub-Agents Must Use Muse Too L28–43
+ code@L32 variable variable code@L32 L32–40
+ Three Repos, One Platform section Three Repos, One Platform L7–19
+ table@L9 section table@L9 L9–14
+ Muse Wire Protocol — Architecture section Muse Wire Protocol — Architecture L1–243
+ Comparison Grid: Git Smart HTTP vs MWP Today vs MWP Target section Comparison Grid: Git Smart HTTP vs MWP Today vs MWP Target L8–31
+ table@L10 section table@L10 L10–28
+ Current Protocol State (Accurate as of 2026-04-24) section Current Protocol State (Accurate as of 2026-04-24) L216–235
+ table@L218 section table@L218 L218–232
+ Phase Plan (TDD, Bottom-Up) section Phase Plan (TDD, Bottom-Up) L106–216
+ Phase 1 — Advertise worker endpoint in /refs response section Phase 1 — Advertise worker endpoint in /refs response L110–135
+ code[python]@L113 variable variable code[python]@L113 L113–126
+ Phase 2 — MWP object-pack POST (all objects, no presign) section Phase 2 — MWP object-pack POST (all objects, no presign) L135–165
+ code[python]@L138 variable variable code[python]@L138 L138–149
+ code[python]@L151 variable variable code[python]@L151 L151–160
+ Phase 3 — Eliminate presign for production; keep for local section Phase 3 — Eliminate presign for production; keep for local L165–179
+ Phase 4 — Deploy CF Worker section Phase 4 — Deploy CF Worker L179–207
+ code[bash]@L181 variable variable code[bash]@L181 L181–185
+ code[bash]@L187 variable variable code[bash]@L187 L187–191
+ code[bash]@L200 variable variable code[bash]@L200 L200–204
+ code[toml]@L193 variable variable code[toml]@L193 L193–198
+ Phase 5 — Remove presign sidecar from CLI (production only) section Phase 5 — Remove presign sidecar from CLI (production only) L207–216
+ Root Cause of the 5-Minute Push section Root Cause of the 5-Minute Push L31–54
+ code@L37 variable variable code@L37 L37–47
+ The Right Answer: Cloudflare Worker Pack Receiver section The Right Answer: Cloudflare Worker Pack Receiver L64–106
+ How it works section How it works L68–89
+ code@L70 variable variable code@L70 L70–80
+ What changes on each side section What changes on each side L89–106
+ What the Old Doc Got Wrong section What the Old Doc Got Wrong L235–243
+ Why Presign Exists (The Constraint) section Why Presign Exists (The Constraint) L54–64
~ tests/test_cmd_status.py .py 1 symbol added, 1 symbol modified
+ test_untracked_file_makes_repo_not_clean method method test_untracked_file_makes_repo_not_clean L677–697

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:2148d03925bdee980ca42fad1223c056bb83aaba3ea381d6529f8c77fea9aaff --body "your comment"