- Shipped
- 8 நவம்பர், 2026 அன்று 12:25 AM UTC
- Author
- Kamo
- Commit
- 332f727
- Entities/repos for the six hand-applied tables (content_scan_verdicts, antivirus_detections, antivirus_false_alarm_reports, antivirus_allowlist, antivirus_org_settings, antivirus_daily_stats). - com.kamo.z.shared.antivirus: **************** AntivirusPolicy (brief §2), AntivirusClient (streaming /v1/scan, holds by pod, breaker, X-Internal-Auth), AntivirusGate (scanUpload / verdictFor / assertReadable / recordVerdict / applyRecheck / drill), AntivirusRecorder (REQUIRES_NEW writes, upserts), AntivirusNotifier (bell + email via EmailService, rt.org.<org>.antivirus), AntivirusUploadGuard (raw-MinIO paths), AntivirusHoldCompleter, AntivirusExceptionAdvice (422/423/503). - ImageService: screen before any row/object in storeContentAddressed (all overloads) and uploadDocument; held => is_missing dat, no object; read gate in downloadDocument + public assertReadable. Scanning is opt-in per service (kamo.antivirus.enabled); the read gate is always on. - ServiceType ANTIVIRUS(41, core); rights VIEW_ANTIVIRUS 698, MANAGE_ANTIVIRUS_POLICY 699, SHOW_TOUR_ANTIVIRUS 700; PlatformRightType MANAGE_PLATFORM_ANTIVIRUS; NotificationKind **************** AccessLogEventType ANTIVIRUS_*; four canonical templates; Report Studio compliance.antivirus.
