# #region clean_release_exceptions [C:3] [TYPE Module] [SEMANTICS clean-release, exception, domain, error]
# @BRIEF Domain exceptions for clean release compliance subsystem.
# @LAYER Domain
# @RELATION DEPENDS_ON -> [EXT:Python:Exception]

class CleanReleaseError(Exception):
    """Base exception for clean release subsystem."""
    pass

class CandidateNotFoundError(CleanReleaseError):
    """Raised when a release candidate is not found."""
    pass

class IllegalTransitionError(CleanReleaseError):
    """Raised when a forbidden lifecycle transition is attempted."""
    pass

class ManifestImmutableError(CleanReleaseError):
    """Raised when an attempt is made to mutate an existing manifest."""
    pass

class PolicyResolutionError(CleanReleaseError):
    """Raised when trusted policy or registry cannot be resolved."""
    pass

class ComplianceRunError(CleanReleaseError):
    """Raised when a compliance run fails or is invalid."""
    pass

class ApprovalGateError(CleanReleaseError):
    """Raised when approval requirements are not met."""
    pass

class PublicationGateError(CleanReleaseError):
    """Raised when publication requirements are not met."""
    pass

# #endregion clean_release_exceptions
