"""Safety gate for manual dataset uploads (ADR-0011). Public, non-agent-facing API. An upload is quarantined-until-validated and never executable, routed through the same manifest/validation machinery a registered dataset passes, plus an admin approval: stage_upload(...) → quarantine + type/size/manifest/attestation gate validate_upload(rec) → manifest-schema + against-data validation register_upload(rec) → admin-only promotion into the live registry Only admins (UPLOAD_ADMIN_IDS) can register; researchers may stage + validate. """ from src.uploads.promotion import RegistrationRefused, register_upload from src.uploads.records import ( STATUS_QUARANTINED, STATUS_REGISTERED, STATUS_REJECTED, STATUS_VALIDATED, UploadRecord, is_admin, ) from src.uploads.staging import UploadRejected, stage_upload from src.uploads.validation import validate_upload __all__ = [ "stage_upload", "validate_upload", "register_upload", "UploadRecord", "UploadRejected", "RegistrationRefused", "is_admin", "STATUS_REJECTED", "STATUS_QUARANTINED", "STATUS_VALIDATED", "STATUS_REGISTERED", ]