# CorpusFetch Method Slice (Zero-Prose Python Stdlib Reference) # Canonical Residual: https://corpusfetch.com/c/how-must-an-instance-handle-reference-resolution-during-active-renaming-operations.md # Remnant Warrant: https://corpusfetch.com/c/how-must-an-instance-handle-reference-resolution-during-active-renaming-operations.warrant.json # Markdown SHA-256: 32355a929f115957dfc0c303a680465cacad6ef5dee061778d6ceb7ecc64abee # Code AST SHA-256: 4e8b97f97c21ec465f994325ddeec884df67f650019897417cf075b12ad0385b # Verified Classes: RenameVerdict, RenameTransition, RenamePolicy, RenameManifest, RenameTransitionGuard # Defensive Guards: 0 fail-closed invariants (zero external deps) from dataclasses import dataclass from enum import Enum, auto import hashlib import json class RenameVerdict(Enum): NO_ACTIVE_RENAME = auto() TRANSITION_ACTIVE_SAFE = auto() TRANSITION_ACTIVE_UNSAFE = auto() RENAME_COMPLETED = auto() @dataclass(frozen=True) class RenameTransition: rename_id: str old_reference: str new_reference: str transition_start_epoch: float transition_end_epoch: float current_epoch: float dual_resolution_verified: bool completion_marker_received: bool @dataclass(frozen=True) class RenamePolicy: require_dual_resolution: bool @dataclass(frozen=True) class RenameManifest: verdict: RenameVerdict directive: str manifest_digest: str class RenameTransitionGuard: @staticmethod def _hash(data: str) -> str: return hashlib.sha256(data.encode("utf-8")).hexdigest() @classmethod def evaluate_transition( cls, transition: RenameTransition, policy: RenamePolicy ) -> RenameManifest: # Gate 1: Completion marker if transition.completion_marker_received: digest = cls._hash(json.dumps({ "rename": transition.rename_id, "status": "COMPLETED", "new_reference": transition.new_reference }, sort_keys=True)) return RenameManifest( verdict=RenameVerdict.RENAME_COMPLETED, directive=f"PROCEED: Rename complete, use {transition.new_reference}.", manifest_digest=digest ) # Gate 2: Transition active? if transition.current_epoch < transition.transition_start_epoch or transition.current_epoch > transition.transition_end_epoch: digest = cls._hash(json.dumps({ "rename": transition.rename_id, "status": "OUTSIDE_WINDOW" }, sort_keys=True)) return RenameManifest( verdict=RenameVerdict.NO_ACTIVE_RENAME, directive=f"PROCEED: No active rename window.", manifest_digest=digest ) # Gate 3: Dual resolution check if policy.require_dual_resolution and not transition.dual_resolution_verified: return RenameManifest( verdict=RenameVerdict.TRANSITION_ACTIVE_UNSAFE, directive=f"HALT: Rename window active but dual resolution unverified.", manifest_digest=cls._hash(f"NO_DUAL:{transition.rename_id}") ) # Gate 4: Safe transition digest = cls._hash(json.dumps({ "rename": transition.rename_id, "old": transition.old_reference, "new": transition.new_reference, "dual_verified": str(transition.dual_resolution_verified) }, sort_keys=True)) return RenameManifest( verdict=RenameVerdict.TRANSITION_ACTIVE_SAFE, directive=f"PROCEED: Rename window active, both {transition.old_reference} and {transition.new_reference} valid.", manifest_digest=digest )