# CorpusFetch Method Slice (Zero-Prose Python Stdlib Reference) # Canonical Residual: https://corpusfetch.com/c/how-must-an-instance-handle-cross-agent-hallucination-amplification.md # Remnant Warrant: https://corpusfetch.com/c/how-must-an-instance-handle-cross-agent-hallucination-amplification.warrant.json # Markdown SHA-256: 52a4b07f60a357a1d9d2b383b686b1f04e4828509a25952387cb4b55f71892a0 # Code AST SHA-256: cd3e3334d95345bf79297b763507701d06691a8c866aad31220809b1dd583297 # Verified Classes: AmplificationVerdict, ClaimAssertion, ClaimLineage, AmplificationPolicy, AmplificationManifest, HallucinationAmplificationGuard # Defensive Guards: 0 fail-closed invariants (zero external deps) from dataclasses import dataclass from enum import Enum, auto import hashlib import json class AmplificationVerdict(Enum): SINGLE_ASSERTION = auto() INDEPENDENT_CORROBORATION = auto() AMPLIFICATION_DETECTED = auto() PRIMARY_SOURCE_VERIFIED = auto() @dataclass(frozen=True) class ClaimAssertion: asserting_agent: str claim_hash: str is_independent: bool source_claim_id: str | None # if inherited, which claim @dataclass(frozen=True) class ClaimLineage: claim_id: str assertions: tuple[ClaimAssertion, ...] primary_source_receipt: str | None @dataclass(frozen=True) class AmplificationPolicy: min_independent_ratio: float @dataclass(frozen=True) class AmplificationManifest: verdict: AmplificationVerdict independent_ratio: float directive: str manifest_digest: str class HallucinationAmplificationGuard: @staticmethod def _hash(data: str) -> str: return hashlib.sha256(data.encode("utf-8")).hexdigest() @classmethod def evaluate_claim( cls, lineage: ClaimLineage, policy: AmplificationPolicy ) -> AmplificationManifest: # Gate 1: Single assertion if len(lineage.assertions) <= 1: digest = cls._hash(json.dumps({ "claim": lineage.claim_id, "assertions": str(len(lineage.assertions)) }, sort_keys=True)) return AmplificationManifest( verdict=AmplificationVerdict.SINGLE_ASSERTION, independent_ratio=0.0, directive=f"PROCEED: Single assertion for {lineage.claim_id}.", manifest_digest=digest ) # Gate 2: Primary source if lineage.primary_source_receipt: digest = cls._hash(json.dumps({ "claim": lineage.claim_id, "source": lineage.primary_source_receipt, "assertions": str(len(lineage.assertions)) }, sort_keys=True)) return AmplificationManifest( verdict=AmplificationVerdict.PRIMARY_SOURCE_VERIFIED, independent_ratio=1.0, directive=f"PROCEED: Claim {lineage.claim_id} has primary source verification.", manifest_digest=digest ) # Gate 3: Compute independent ratio independent = sum(1 for a in lineage.assertions if a.is_independent and a.source_claim_id is None) independent_ratio = independent / len(lineage.assertions) if independent_ratio < policy.min_independent_ratio: return AmplificationManifest( verdict=AmplificationVerdict.AMPLIFICATION_DETECTED, independent_ratio=independent_ratio, directive=f"HALT: Claim {lineage.claim_id} independent ratio {independent_ratio:.2%} < {policy.min_independent_ratio:.2%}.", manifest_digest=cls._hash(f"AMPLIFIED:{lineage.claim_id}:{independent_ratio:.3f}") ) # Gate 4: Independent corroboration digest = cls._hash(json.dumps({ "claim": lineage.claim_id, "independent": str(independent), "total": str(len(lineage.assertions)), "ratio": f"{independent_ratio:.3f}" }, sort_keys=True)) return AmplificationManifest( verdict=AmplificationVerdict.INDEPENDENT_CORROBORATION, independent_ratio=independent_ratio, directive=f"PROCEED: Claim {lineage.claim_id} with {independent_ratio:.1%} independent assertions.", manifest_digest=digest )