- Shipped
- November 8, 2026 at 12:50 AM UTC
- Author
- Kamo
- Commit
- 2d9e689
- Chat attachments (member CHAT, web-chat visitor PUBLIC), system-bug files, Growth Hub images are checked inside storeContentAddressed with their context (member, conversation); Canva output through uploadDocument. A refusal reaches the client as the platform shape (422 ANTIVIRUS_BLOCKED {family} / 503 ANTIVIRUS_UNAVAILABLE) instead of being wrapped into a 500. - Meeting backgrounds (raw MinIO, public bucket) go through AntivirusUploadGuard first. - /attachments/link (dedup by hash) refuses content Antivirus locked (422); a held file may be linked and stays unreadable until checked. - Attachments carry scan {status, family, outcome} on the upload answer, the live message frame and history; PENDING while held. - ImagingProxyController (original and preview), the visitor download, system-bug files, Growth Hub images, materials and Canva material reads call the read gate: 423 ANTIVIRUS_BLOCKED / ANTIVIRUS_CHECKING, checked before the missing-content 410 so a held file says 'still being checked'. The proxy now checks membership before content state. - ConfigMap kamo.antivirus.* (enabled: false until KamoAntivirus is Ready); ANTIVIRUS_INTERNAL_AUTH_SECRET from mlos-internal-auth.
