gabriel / muse public
fix BREAKING fix/227-i3-naming-collision #1 / 1
AI Agent gabriel · 14 hours ago · Oct 22, 2026 · Diff

fix: identity plugin docs mislabeled I3 as quorum soundness (musehub#227)

Companion to musehub#227 ("Quorum" names three unrelated concepts across the codebase; identity's own I3 has two non-reconciled definitions).

Audit (on the musehub side) found two non-reconciled definitions of "I3" for the identity domain: A) musehub/graph/push_validator.py — per-edge signature authorization, actually enforced at push time (hard error). The real one. B) musehub/graph/quorum.py — recursive weighted-vote quorum tallying, never called by anything outside its own module/tests (musehub#225).

This repo's muse/plugins/identity/plugin.py pointed at the WRONG one: its module docstring and schema() description both labeled I3 "quorum soundness" (definition B, the dead one) rather than "authorization" (definition A, the one actually enforced). Fixed both: - Module docstring: "I3 Quorum soundness — hub-level concern" → "I3 Authorization — per-edge signature authorization; hub-level concern ... see musehub/graph/push_validator.py." - schema() description: "recursive quorum soundness (I3)" → "push-time signature authorization (I3)."

Also updated docs/domain-extensibility.md's identity-domain worked example, which repeated the same "I3 — quorum soundness" mislabel.

New tests/test_identity_plugin_invariant_docs.py (2 tests): asserts the module docstring's I3 line says "authorization" and never "quorum soundness", and the same for schema()'s description string.

Confirmed genuine RED by reverting the plugin.py + docs change together and re-running — both tests failed against the original "quorum soundness" text — restored, both green.

Regression: 85 tests across the full identity-domain test suite (records, schema, diff, merge, snapshot) — all green, no regressions.

musehub-side fix (quorum.py's own docstring renamed away from the "I3" label entirely, without deleting the dead code — that's musehub#225's call) ships separately in the musehub repo as part of the same musehub#227 ticket.

sha256:93f1e6c919d610c23dcd7c1474d978295a4cf47c8f1a8613558f071eac51aba0 sha
+6 ~5 symbols
3 changed · 1259 in snapshot files
sha256:cbf3f178dd8bc52ac26464a9e0bf892f2672d7710362c22364e808860f8d88c1 snapshot
+6
symbols added
~5
symbols modified
3
files changed
1259
files in snapshot
0
dead code introduced
Semantic Changes 11 symbols
+ _claims_label function function _claims_label L20–25
+ annotations import import annotations L13–13
+ identity_plugin import import identity_plugin L17–17
+ re import import re L15–15
+ test_module_docstring_i3_is_authorization_not_quorum_soundness function function test_module_docstring_i3_is_authorization_not_quorum_soundness L28–43
+ test_schema_description_i3_is_authorization_not_quorum_soundness function function test_schema_description_i3_is_authorization_not_quorum_soundness L46–55
Files Changed
+1 ~2
1259 in snapshot
← Older Oldest on fix/227-i3-naming-collision
All commits
Newer → Latest on fix/227-i3-naming-collision

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:93f1e6c919d610c23dcd7c1474d978295a4cf47c8f1a8613558f071eac51aba0 --body "your comment"