# #region clean_release_enums [C:3] [TYPE Module] [SEMANTICS clean-release, enum, lifecycle, status, compliance]
# @BRIEF Canonical enums for clean release lifecycle and compliance.
# @LAYER Domain
# @RELATION DEPENDS_ON -> [EXT:Python:enum]

from enum import Enum


class CandidateStatus(str, Enum):
    """Lifecycle states for a ReleaseCandidate."""
    DRAFT = "DRAFT"
    PREPARED = "PREPARED"
    MANIFEST_BUILT = "MANIFEST_BUILT"
    CHECK_PENDING = "CHECK_PENDING"
    CHECK_RUNNING = "CHECK_RUNNING"
    CHECK_PASSED = "CHECK_PASSED"
    CHECK_BLOCKED = "CHECK_BLOCKED"
    CHECK_ERROR = "CHECK_ERROR"
    APPROVED = "APPROVED"
    PUBLISHED = "PUBLISHED"
    REVOKED = "REVOKED"

class RunStatus(str, Enum):
    """Execution status for a ComplianceRun."""
    PENDING = "PENDING"
    RUNNING = "RUNNING"
    SUCCEEDED = "SUCCEEDED"
    FAILED = "FAILED"
    CANCELLED = "CANCELLED"

class ComplianceDecision(str, Enum):
    """Final compliance result for a run or stage."""
    PASSED = "PASSED"
    BLOCKED = "BLOCKED"
    ERROR = "ERROR"

class ApprovalDecisionType(str, Enum):
    """Types of approval decisions."""
    APPROVED = "APPROVED"
    REJECTED = "REJECTED"

class PublicationStatus(str, Enum):
    """Status of a publication record."""
    ACTIVE = "ACTIVE"
    REVOKED = "REVOKED"

class ComplianceStageName(str, Enum):
    """Canonical names for compliance stages."""
    DATA_PURITY = "DATA_PURITY"
    INTERNAL_SOURCES_ONLY = "INTERNAL_SOURCES_ONLY"
    NO_EXTERNAL_ENDPOINTS = "NO_EXTERNAL_ENDPOINTS"
    MANIFEST_CONSISTENCY = "MANIFEST_CONSISTENCY"

class ClassificationType(str, Enum):
    """Classification types for artifacts."""
    REQUIRED_SYSTEM = "required-system"
    ALLOWED = "allowed"
    EXCLUDED_PROHIBITED = "excluded-prohibited"

class ViolationSeverity(str, Enum):
    """Severity levels for compliance violations."""
    CRITICAL = "CRITICAL"
    MAJOR = "MAJOR"
    MINOR = "MINOR"

class ViolationCategory(str, Enum):
    """Categories for compliance violations."""
    DATA_PURITY = "DATA_PURITY"
    SOURCE_ISOLATION = "SOURCE_ISOLATION"
    MANIFEST_CONSISTENCY = "MANIFEST_CONSISTENCY"
    EXTERNAL_ENDPOINT = "EXTERNAL_ENDPOINT"

# #endregion clean_release_enums
