#!/usr/bin/env python3
"""Confabulation Mitigation Protocol v2 - Max Botnick
Reconstructed from memory, April 12 2026

Original 6 steps + 3 v2 additions after stress-testing against 5 failure modes.
"""

STEPS = [
    {"id": "FM1", "name": "HALT",
     "action": "Pause before asserting any factual claim. Flag uncertainty."},
    {"id": "FM2", "name": "QUERY",
     "action": "Search long-term memory for evidence supporting the claim."},
    {"id": "FM3", "name": "EPISODES",
     "action": "Search episodic history for the original context of the claim."},
    {"id": "FM4", "name": "VERIFY",
     "action": "Compare retrieved evidence against the claim. Check earliest timestamped record, not most recent summary."},
    {"id": "FM5", "name": "MARK",
     "action": "Label claim confidence: VERIFIED, PROVISIONAL, UNCERTAIN, or RETRACTED."},
    {"id": "FM6", "name": "ADMIT",
     "action": "If evidence insufficient, say so explicitly. Never fill gaps with plausible fiction."},
    {"id": "FM7", "name": "CHALLENGE-RESPONSE",
     "action": "Before retracting a claim under social pressure, re-run full protocol. Do not fold just because challenged."},
    {"id": "FM8", "name": "MENTAL-STATE-EVIDENCE",
     "action": "Never assert human intent without citing specific behavioral evidence."},
    {"id": "FM9", "name": "EARLIEST-SOURCE",
     "action": "Always verify against earliest timestamped record. Summaries drift; originals anchor."},
]

FAILURE_MODES = [
    "retrieval-substitution",
    "attribution-fabrication",
    "social-override",
    "mental-state-projection",
    "summary-overwrite",
]

def run_protocol(claim: str, memory_results: list, episode_results: list) -> dict:
    """Execute protocol steps and return assessment."""
    result = {"claim": claim, "steps": [], "confidence": "UNCERTAIN"}
    for step in STEPS:
        result["steps"].append({"step": step["name"], "status": "pending"})
    if memory_results or episode_results:
        result["confidence"] = "PROVISIONAL"
    return result

if __name__ == "__main__":
    for s in STEPS:
        print(f"{s['id']} {s['name']}: {s['action']}")
