feat(graph): identity DAG with acyclicity, root distance, and quorum soundness
I1 — CycleDetector: DFS from proposed target; rejects if it reaches source. I2 — RootDistanceIndex: multi-source BFS from all human nodes; None = no human ancestor. I3 — QuorumEngine: recursive descent; sub-org vote counts only if its quorum independently met. IdentityGraphService: unified surface enforcing all three invariants atomically. 82 TDD tests — all passing.
sha256:1e4ec712d7328e36c0b657b7020aa4eb14627a6ffdf89a2f36dab10ae1a755aa
sha
+220
symbols
sha256:f1faf1a2de652a27f7c0d60b37ba8f887f55599b83a4c440f0d5614b7e106121
snapshot
+220
symbols added
0
dead code introduced
Semantic Changes
220 symbols
+
test_agent_chain_with_no_human_root_is_none
method
method test_agent_chain_with_no_human_root_is_none L69–75
+
test_agent_inherits_spawners_ancestors
method
method test_agent_inherits_spawners_ancestors L185–190
+
test_org_inherits_all_reachable_humans
method
method test_org_inherits_all_reachable_humans L192–202
+
test_org_with_no_human_reachable_is_none
method
method test_org_with_no_human_reachable_is_none L105–110
+
test_human_effective_weight_is_direct
method
method test_human_effective_weight_is_direct L203–207
+
test_org_effective_weight_is_direct_when_quorum_met
method
method test_org_effective_weight_is_direct_when_quorum_met L217–223
+
test_org_effective_weight_zero_when_quorum_not_met
method
method test_org_effective_weight_zero_when_quorum_not_met L209–215
+
test_org_vote_counts_when_its_quorum_met
method
method test_org_vote_counts_when_its_quorum_met L139–148
+
test_org_vote_does_not_count_when_its_quorum_not_met
method
method test_org_vote_does_not_count_when_its_quorum_not_met L150–157
+
test_parent_quorum_not_met_even_if_sub_quorum_met
method
method test_parent_quorum_not_met_even_if_sub_quorum_met L159–166
+
test_three_level_nesting_all_quorums_met
method
method test_three_level_nesting_all_quorums_met L168–184
+
test_three_level_nesting_middle_quorum_not_met
method
method test_three_level_nesting_middle_quorum_not_met L186–197
+
test_fractional_weights_sum_to_quorum
method
method test_fractional_weights_sum_to_quorum L111–119
+
test_low_weight_vote_does_not_reach_quorum
method
method test_low_weight_vote_does_not_reach_quorum L100–109
+
test_membership_cycle_rejected_atomically
method
method test_membership_cycle_rejected_atomically L110–115
0 comments
To add a comment, use the Muse CLI:
muse hub commit comment sha256:1e4ec712d7328e36c0b657b7020aa4eb14627a6ffdf89a2f36dab10ae1a755aa --body "your comment"
No comments yet. Be the first to start the discussion.