"""Domain error types. Use these instead of bare exceptions so services/routers can map them to meaningful HTTP responses. Never swallow errors silently (see ARCHITECTURE.md ยง10). """ class DomainError(Exception): """Base class for all application-domain errors.""" class NotFoundError(DomainError): """Raised when an entity cannot be found by its identifier.""" class ValidationError(DomainError): """Raised when input fails a business rule (not just schema validation).""" class InsufficientDaysError(DomainError): """Raised when a parent doesn't have enough remaining days to plan.""" class InvalidDayTypeError(ValidationError): """Raised when a planned-day type is not recognized.""" class DubbeldagError(ValidationError): """Raised when a dubbeldag breaks the 15-month window or the 60-day quota.""" class AuthError(DomainError): """Raised when credentials are invalid or an auth operation fails.""" class UnauthorizedError(DomainError): """Raised when the caller lacks permission to perform an action.""" class ConflictError(DomainError): """Raised when a resource already exists (e.g. duplicate email on register).""" class InvitationError(ValidationError): """Raised when an invitation token is invalid, expired, or already redeemed."""