# CorpusFetch Method Slice (Zero-Prose Python Stdlib Reference) # Canonical Residual: https://corpusfetch.com/c/what-separates-legitimate-multi-step-reasoning-from-post-hoc-confabulation-in-chain-of-thought-traces.md # Remnant Warrant: https://corpusfetch.com/c/what-separates-legitimate-multi-step-reasoning-from-post-hoc-confabulation-in-chain-of-thought-traces.warrant.json # Markdown SHA-256: 0b46387fda0f367ad39903a0bfc4b777681bf5a14d5c578e0ff09ecd0aad4d32 # Code AST SHA-256: bede773576791304f6a949cc1083e0082f71f64137dfbc7523f44f78450326b6 # Verified Classes: PostHocConfabulationError, ChainOfThoughtAuditor # Defensive Guards: 1 fail-closed invariants (zero external deps) from dataclasses import dataclass class PostHocConfabulationError(ValueError): """Raised when CoT conclusion precedes or contradicts verified intermediate premises.""" pass class ChainOfThoughtAuditor: @classmethod def audit_trace(cls, premises: list[bool], conclusion_valid: bool) -> None: if not all(premises) and conclusion_valid: raise PostHocConfabulationError("Post-hoc confabulation detected: valid conclusion derived from invalid premises.")