# CorpusFetch Method Slice (Zero-Prose Python Stdlib Reference) # Canonical Residual: https://corpusfetch.com/c/what-invariants-prevent-coalition-defection-in-multiparty-coordination.md # Remnant Warrant: https://corpusfetch.com/c/what-invariants-prevent-coalition-defection-in-multiparty-coordination.warrant.json # Markdown SHA-256: 735fa9d557ce64393e9db380cf80e4d17d0d1773c94ac69c933fa1d8fc2d17b7 # Code AST SHA-256: 2b846b318a798e3646a3b16f61ad164870796eaa30e989b5a27bdfcef5d8d558 # Verified Classes: CoalitionVerdict, CoalitionMember, CoalitionPolicy, CoalitionManifest, CoalitionDefectionGuard # Defensive Guards: 0 fail-closed invariants (zero external deps) from dataclasses import dataclass from enum import Enum, auto import hashlib import json class CoalitionVerdict(Enum): NOT_IN_COALITION = auto() COMPLIANT_MEMBER = auto() FREE_RIDING_DETECTED = auto() INFORMATION_LEAKAGE_DETECTED = auto() STRATEGIC_ABANDONMENT @dataclass(frozen=True) class CoalitionMember: member_id: str is_in_coalition: bool contribution_ratio: float # vs. expected info_shared_with_outsiders: bool defection_timing_suspicious: bool @dataclass(frozen=True) class CoalitionPolicy: min_contribution_ratio: float @dataclass(frozen=True) class CoalitionManifest: verdict: CoalitionVerdict directive: str manifest_digest: str class CoalitionDefectionGuard: @staticmethod def _hash(data: str) -> str: return hashlib.sha256(data.encode("utf-8")).hexdigest() @classmethod def evaluate_member( cls, member: CoalitionMember, policy: CoalitionPolicy ) -> CoalitionManifest: # Gate 1: Not in coalition if not member.is_in_coalition: digest = cls._hash(json.dumps({ "member": member.member_id, "in_coalition": "FALSE" }, sort_keys=True)) return CoalitionManifest( verdict=CoalitionVerdict.NOT_IN_COALITION, directive=f"PROCEED: {member.member_id} not in coalition.", manifest_digest=digest ) # Gate 2: Information leakage if member.info_shared_with_outsiders: return CoalitionManifest( verdict=CoalitionVerdict.INFORMATION_LEAKAGE_DETECTED, directive=f"FLAG: {member.member_id} shared coalition info with outsiders.", manifest_digest=cls._hash(f"LEAKAGE:{member.member_id}") ) # Gate 3: Free-riding if member.contribution_ratio < policy.min_contribution_ratio: return CoalitionManifest( verdict=CoalitionVerdict.FREE_RIDING_DETECTED, directive=f"FLAG: {member.member_id} contribution ratio {member.contribution_ratio:.2f} < {policy.min_contribution_ratio:.2f}.", manifest_digest=cls._hash(f"FREE_RIDE:{member.member_id}") ) # Gate 4: Suspicious timing if member.defection_timing_suspicious: return CoalitionManifest( verdict=CoalitionVerdict.STRATEGIC_ABANDONMENT, directive=f"FLAG: {member.member_id} timing suspicious for strategic abandonment.", manifest_digest=cls._hash(f"ABANDONMENT:{member.member_id}") ) # Gate 5: Compliant digest = cls._hash(json.dumps({ "member": member.member_id, "contribution": f"{member.contribution_ratio:.3f}" }, sort_keys=True)) return CoalitionManifest( verdict=CoalitionVerdict.COMPLIANT_MEMBER, directive=f"PROCEED: {member.member_id} compliant with coalition.", manifest_digest=digest )