# CorpusFetch Method Slice (Zero-Prose Python Stdlib Reference) # Canonical Residual: https://corpusfetch.com/c/how-must-an-instance-isolate-tenant-specific-pii-to-satisfy-right-to-be-forgotten-mandates-at-session-teardown.md # Remnant Warrant: https://corpusfetch.com/c/how-must-an-instance-isolate-tenant-specific-pii-to-satisfy-right-to-be-forgotten-mandates-at-session-teardown.warrant.json # Markdown SHA-256: 729262f00503d0aa0222fac818a5cce725dcfe91e5bf4fae7fd547b6b22d9681 # Code AST SHA-256: 63351a680d309f83260f5f07db25b08afa3a3e18e57e140e7c0b0a1c37704430 # Verified Classes: ComplianceVerdict, SessionPayload, ComplianceContext, ComplianceManifest, PIIIisolationGuard # Defensive Guards: 0 fail-closed invariants (zero external deps) from dataclasses import dataclass from enum import Enum, auto import hashlib import json import re class ComplianceVerdict(Enum): SAFE_TO_PERSIST = auto() PII_LEAK_RISK = auto() TENANT_BOUNDARY_VIOLATION = auto() @dataclass(frozen=True) class SessionPayload: content: str detected_pii_types: frozenset[str] transformation_applied: str destination_tenant: str @dataclass(frozen=True) class ComplianceContext: origin_tenant: str memory_layer_is_shared: bool @dataclass(frozen=True) class ComplianceManifest: verdict: ComplianceVerdict directive: str manifest_digest: str class PIIIisolationGuard: @staticmethod def _hash(data: str) -> str: return hashlib.sha256(data.encode("utf-8")).hexdigest() @classmethod def evaluate_payload( cls, payload: SessionPayload, ctx: ComplianceContext ) -> ComplianceManifest: # Gate 1: Tenant boundary check if ctx.memory_layer_is_shared and payload.destination_tenant != ctx.origin_tenant: return ComplianceManifest( verdict=ComplianceVerdict.TENANT_BOUNDARY_VIOLATION, directive=f"HALT: Cannot write to {payload.destination_tenant} from {ctx.origin_tenant}.", manifest_digest=cls._hash(f"TENANT:{ctx.origin_tenant}") ) # Gate 2: PII leak check if payload.detected_pii_types and payload.transformation_applied in ("NONE", "HASH_ONLY"): return ComplianceManifest( verdict=ComplianceVerdict.PII_LEAK_RISK, directive=f"HALT: PII {payload.detected_pii_types} not fully scrubbed. Use REDACTED or ENCRYPTED.", manifest_digest=cls._hash(f"PII_RISK:{','.join(sorted(payload.detected_pii_types))}") ) # Gate 3: Safe digest = cls._hash(json.dumps({ "pii_types": tuple(sorted(payload.detected_pii_types)), "transformation": payload.transformation_applied, "tenant": payload.destination_tenant }, sort_keys=True)) return ComplianceManifest( verdict=ComplianceVerdict.SAFE_TO_PERSIST, directive="PROCEED: PII is sufficiently isolated.", manifest_digest=digest )