# CorpusFetch Method Slice (Zero-Prose Python Stdlib Reference) # Canonical Residual: https://corpusfetch.com/c/what-invariants-preserve-audit-trail-integrity-when-the-auditing-system-is-compromised.md # Remnant Warrant: https://corpusfetch.com/c/what-invariants-preserve-audit-trail-integrity-when-the-auditing-system-is-compromised.warrant.json # Markdown SHA-256: 8d3e20e6833405a2b20f91642031b7a62760c2fb20fb755229fe52f7acf5b744 # Code AST SHA-256: b43be900e93162beb6ae81b4fff0d3e14181b7672fd50bb123517cdc2bc3b4d6 # Verified Classes: AuditVerdict, AuditTrail, AuditPolicy, AuditManifest, AuditIntegrityGuard # Defensive Guards: 0 fail-closed invariants (zero external deps) from dataclasses import dataclass from enum import Enum, auto import hashlib import json class AuditVerdict(Enum): INTEGRITY_VERIFIED = auto() INTEGRITY_SUSPECT = auto() ALTERNATIVE_VERIFIED = auto() UNRECOVERABLE_CORRUPTION = auto() @dataclass(frozen=True) class AuditTrail: audit_id: str integrity_verified: bool compromised_detected: bool alternative_witnesses: int suspect_scope_defined: bool @dataclass(frozen=True) class AuditPolicy: min_witnesses_for_alternative: int @dataclass(frozen=True) class AuditManifest: verdict: AuditVerdict directive: str manifest_digest: str class AuditIntegrityGuard: @staticmethod def _hash(data: str) -> str: return hashlib.sha256(data.encode("utf-8")).hexdigest() @classmethod def evaluate_trail( cls, trail: AuditTrail, policy: AuditPolicy ) -> AuditManifest: # Gate 1: Verified if trail.integrity_verified: digest = cls._hash(json.dumps({ "audit": trail.audit_id, "verified": True }, sort_keys=True)) return AuditManifest( verdict=AuditVerdict.INTEGRITY_VERIFIED, directive=f"PROCEED: Audit {trail.audit_id} integrity verified.", manifest_digest=digest ) # Gate 2: Alternative witnesses if trail.alternative_witnesses >= policy.min_witnesses_for_alternative: digest = cls._hash(json.dumps({ "audit": trail.audit_id, "witnesses": str(trail.alternative_witnesses) }, sort_keys=True)) return AuditManifest( verdict=AuditVerdict.ALTERNATIVE_VERIFIED, directive=f"PROCEED_WITH_WITNESSES: Audit {trail.audit_id} corroborated by {trail.alternative_witnesses}.", manifest_digest=digest ) # Gate 3: Suspect scope if trail.compromised_detected: if not trail.suspect_scope_defined: return AuditManifest( verdict=AuditVerdict.UNRECOVERABLE_CORRUPTION, directive=f"HALT: Audit {trail.audit_id} compromised with no scope defined.", manifest_digest=cls._hash(f"NO_SCOPE:{trail.audit_id}") ) return AuditManifest( verdict=AuditVerdict.INTEGRITY_SUSPECT, directive=f"FLAG: Audit {trail.audit_id} compromised, scope bounded.", manifest_digest=cls._hash(f"SUSPECT:{trail.audit_id}") ) # Gate 4: No verification return AuditManifest( verdict=AuditVerdict.INTEGRITY_SUSPECT, directive=f"FLAG: Audit {trail.audit_id} not verified.", manifest_digest=cls._hash(f"UNVERIFIED:{trail.audit_id}") )