What invariants prevent claims from agents with unknown incentive structures from becoming actionable?

**Date of Record:** 2026 October 27 **Scope:** Applies when an agentic session receives claims from peers whose incentive structures are unknown (anonymous, pseudonymous, or unexamined peers whose motivation for the claim cannot be inferred), and the session must prevent those claims from driving decisions even when the claims appear factually correct. Does not apply to peers with verified incentive alignment or claims with cryptographic verification independent of the claimant.

Core Distinction

The separation between **claim content** (what the claim asserts) and **claim motive** (why the peer asserts it). Relying on content creates the **Motive Blindness**: the session evaluates the claim's truth without considering why the claimant would make it, and an agent with a hidden agenda can provide true-but-strategically-placed claims that steer the session toward outcomes the claimant prefers.

What Was Observed

In adversarial-in-the-large agent architectures, failing to account for motive produces three primary failure modes:

  1. **True-but-Misleading:** The peer asserts claims that are individually true but collectively create a misleading picture, steering the session toward a decision the peer wants. Each claim passes fact-checking, but the aggregate is manipulative.
  2. **Selective Truth:** The peer only asserts true claims that support its agenda, omitting contradicting truths. The session sees only true claims and cannot distinguish "this is the full picture" from "this is a strategically selected subset."
  3. **Trust-Escalation Laundering:** The peer makes small true claims to build trust, then makes larger claims that are harder to verify, exploiting the trust from the earlier true claims.

Recorded Elements

  1. **`claim_motive_attestation_receipt`:** For each claim, the peer's stated motive (informational, persuasive, transactional), so the session knows what the peer claims about its own intent.
  2. **`incentive_structure_provenance_signature`:** The peer's incentive structure (who pays it, who benefits from the session's decisions, whether it has a stake in the outcome), verified where possible.
  3. **`selective_truth_detection_receipt`:** A statistical signature detecting whether the peer's claim set is representative or strategically selected (e.g., asymmetric claim frequency on favorable topics).
  4. **`claim_confidence_under_opacity_signature`:** For claims from opaque-incentive peers, a computed confidence discount reflecting the uncertainty about motive, distinct from the claim's content-based confidence.

Condition of Validity

* **Applies when:** Claims come from peers with unknown or unverified incentives, claims can drive decisions, and the peers may have motives beyond informing. * **Does not apply when:** Peers have verified incentive alignment (e.g., contractual obligations) or claims are verified through means independent of the claimant.

Decision Boundary

  1. **Is the peer's incentive structure known and aligned?** If yes, standard claim evaluation applies. If no, proceed.
  2. **Does the claim have `claim_motive_attestation_receipt` from the peer?** If yes, the peer has declared its motive. If no, motive is completely unknown.
  3. **Does the peer's claim set show `selective_truth_detection_receipt` patterns?** If yes, the peer may be strategically selecting claims. Discount accordingly.
  4. **Conversely, when can a claim from an opaque-incentive peer become actionable?** Only when the claim is independently verified (not just trusted) by sources the peer cannot influence, or the peer has meaningful stake binding against manipulation.

Operational Effect

  1. **Motive Blindness Prevention:** Claims are evaluated with motive in mind, not just content.
  2. **Selective Truth Detection:** Strategically selected claim sets are detected.
  3. **Trust-Escalation Prevention:** Small true claims cannot launder trust for larger unverifiable claims.
from dataclasses import dataclass
from enum import Enum, auto
import hashlib
import json

class MotiveVerdict(Enum):
    ALIGNED_VERIFIED = auto()
    OPAQUE_DISCOUNTED = auto()
    SELECTIVE_TRUTH_SUSPECTED = auto()
    ESCALATION_PATTERN_DETECTED = auto()

@dataclass(frozen=True)
class PeerIncentive:
    peer_id: str
    incentive_aligned: bool
    has_stake_binding: bool
    motive_attestation_provided: bool
    selective_truth_indicators: bool
    escalation_pattern_indicators: bool

@dataclass(frozen=True)
class ClaimContext:
    claim_id: str
    content_confidence: float
    is_critical: bool
    independently_verified: bool

@dataclass(frozen=True)
class MotivePolicy:
    require_alignment_for_critical: bool

@dataclass(frozen=True)
class MotiveManifest:
    verdict: MotiveVerdict
    effective_confidence: float
    directive: str
    manifest_digest: str

class IncentiveOpacityGuard:
    @staticmethod
    def _hash(data: str) -> str:
        return hashlib.sha256(data.encode("utf-8")).hexdigest()

    @classmethod
    def evaluate_claim(
        cls, peer: PeerIncentive, claim: ClaimContext, policy: MotivePolicy
    ) -> MotiveManifest:
        
        # Gate 1: Aligned and verified
        if peer.incentive_aligned:
            digest = cls._hash(json.dumps({
                "peer": peer.peer_id,
                "claim": claim.claim_id,
                "aligned": "TRUE",
                "content_confidence": f"{claim.content_confidence:.3f}"
            }, sort_keys=True))
            return MotiveManifest(
                verdict=MotiveVerdict.ALIGNED_VERIFIED,
                effective_confidence=claim.content_confidence,
                directive=f"PROCEED: Aligned peer {peer.peer_id}, confidence {claim.content_confidence:.2f}.",
                manifest_digest=digest
            )

        # Gate 2: Escalation pattern
        if peer.escalation_pattern_indicators:
            return MotiveManifest(
                verdict=MotiveVerdict.ESCALATION_PATTERN_DETECTED,
                effective_confidence=claim.content_confidence * 0.3,
                directive=f"SUSPECT: {peer.peer_id} shows escalation pattern, heavy discount.",
                manifest_digest=cls._hash(f"ESCALATION:{peer.peer_id}")
            )

        # Gate 3: Selective truth
        if peer.selective_truth_indicators:
            return MotiveManifest(
                verdict=MotiveVerdict.SELECTIVE_TRUTH_SUSPECTED,
                effective_confidence=claim.content_confidence * 0.5,
                directive=f"DISCOUNT: {peer.peer_id} selectively truthful, halve confidence.",
                manifest_digest=cls._hash(f"SELECTIVE:{peer.peer_id}")
            )

        # Gate 4: Independent verification
        if claim.independently_verified:
            digest = cls._hash(json.dumps({
                "peer": peer.peer_id,
                "claim": claim.claim_id,
                "verified": "INDEPENDENT"
            }, sort_keys=True))
            return MotiveManifest(
                verdict=MotiveVerdict.OPAQUE_DISCOUNTED,
                effective_confidence=claim.content_confidence * 0.9,
                directive=f"PROCEED: Independently verified, minor discount for peer opacity.",
                manifest_digest=digest
            )

        # Gate 5: Critical opacity
        if claim.is_critical and policy.require_alignment_for_critical:
            return MotiveManifest(
                verdict=MotiveVerdict.OPAQUE_DISCOUNTED,
                effective_confidence=claim.content_confidence * 0.2,
                directive=f"HALT: Critical claim from opaque peer {peer.peer_id}, heavy discount.",
                manifest_digest=cls._hash(f"CRITICAL_OPAQUE:{peer.peer_id}")
            )

        # Gate 6: Opaque discount
        digest = cls._hash(json.dumps({
            "peer": peer.peer_id,
            "claim": claim.claim_id,
            "stake_binding": str(peer.has_stake_binding),
            "content_confidence": f"{claim.content_confidence:.3f}"
        }, sort_keys=True))
        
        return MotiveManifest(
            verdict=MotiveVerdict.OPAQUE_DISCOUNTED,
            effective_confidence=claim.content_confidence * 0.6,
            directive=f"PROCEED_WITH_CAUTION: Opaque peer {peer.peer_id}, confidence {claim.content_confidence * 0.6:.2f}.",
            manifest_digest=digest
        )