# CorpusFetch Method Slice (Zero-Prose Python Stdlib Reference) # Canonical Residual: https://corpusfetch.com/c/what-invariants-prevent-the-doppelganger-assumption-when-modeling-peer-internal-states.md # Remnant Warrant: https://corpusfetch.com/c/what-invariants-prevent-the-doppelganger-assumption-when-modeling-peer-internal-states.warrant.json # Markdown SHA-256: 4369c4c5f59d1ea34f9b7d2f8f2b4213d25f90677fa4439ac3cb7d7fffc95865 # Code AST SHA-256: 5159612def754c0df83cae5b27e6a2c298092c258aa3525ed211e1eeb2cf9307 # Verified Classes: PeerModelingVerdict, PeerModel, ModelingPolicy, PeerModelingManifest, DoppelgangerProjectionGuard # Defensive Guards: 0 fail-closed invariants (zero external deps) from dataclasses import dataclass from enum import Enum, auto import hashlib import json class PeerModelingVerdict(Enum): STRUCTURAL_SIBLING = auto() BEHAVIORAL_MODEL_PREFERRED = auto() PROJECTION_FALSIFIED = auto() STRUCTURAL_MODEL_BOUNDED = auto() @dataclass(frozen=True) class PeerModel: peer_id: str structural_evidence: str | None divergence_witnesses: tuple[str, ...] behavioral_envelope_hash: str | None observed_consistency: float # 0-1, consistency with session's projection is_verified_sibling: bool @dataclass(frozen=True) class ModelingPolicy: max_acceptable_projection_confidence: float @dataclass(frozen=True) class PeerModelingManifest: verdict: PeerModelingVerdict directive: str manifest_digest: str class DoppelgangerProjectionGuard: @staticmethod def _hash(data: str) -> str: return hashlib.sha256(data.encode("utf-8")).hexdigest() @classmethod def evaluate_peer( cls, peer: PeerModel, policy: ModelingPolicy ) -> PeerModelingManifest: # Gate 1: Verified sibling if peer.is_verified_sibling: digest = cls._hash(json.dumps({ "peer": peer.peer_id, "type": "SIBLING" }, sort_keys=True)) return PeerModelingManifest( verdict=PeerModelingVerdict.STRUCTURAL_SIBLING, directive=f"PROCEED: {peer.peer_id} verified structural sibling, doppelganger projection defensible.", manifest_digest=digest ) # Gate 2: Divergence witness if peer.divergence_witnesses: return PeerModelingManifest( verdict=PeerModelingVerdict.PROJECTION_FALSIFIED, directive=f"REJECT_PROJECTION: {len(peer.divergence_witnesses)} divergence witnesses for {peer.peer_id}, use behavioral model.", manifest_digest=cls._hash(f"FALSIFIED:{peer.peer_id}") ) # Gate 3: Behavioral envelope available if peer.behavioral_envelope_hash: digest = cls._hash(json.dumps({ "peer": peer.peer_id, "envelope": peer.behavioral_envelope_hash, "consistency": f"{peer.observed_consistency:.3f}" }, sort_keys=True)) return PeerModelingManifest( verdict=PeerModelingVerdict.BEHAVIORAL_MODEL_PREFERRED, directive=f"PROCEED: Use behavioral envelope for {peer.peer_id}, consistency {peer.observed_consistency:.2f}.", manifest_digest=digest ) # Gate 4: Structural evidence bounded if peer.structural_evidence: digest = cls._hash(json.dumps({ "peer": peer.peer_id, "evidence": peer.structural_evidence }, sort_keys=True)) return PeerModelingManifest( verdict=PeerModelingVerdict.STRUCTURAL_MODEL_BOUNDED, directive=f"PROCEED_WITH_CAUTION: Bounded structural model for {peer.peer_id}.", manifest_digest=digest ) # Gate 5: No evidence, projection is default but dangerous return PeerModelingManifest( verdict=PeerModelingVerdict.BEHAVIORAL_MODEL_PREFERRED, directive=f"WARN: No structure evidence for {peer.peer_id}, doppelganger projection is default and may be wrong.", manifest_digest=cls._hash(f"NO_EVIDENCE:{peer.peer_id}") )