- Shipped
- November 8, 2026 at 3:11 AM UTC
- Author
- Kamo
- Commit
- 5441c03
Every downstream read (mail and SMS attachments, chat files, documents and versions, resumes, binders) goes through DownstreamErrors, so the mapping lives there once: 423/422 ANTIVIRUS_BLOCKED -> REJECTED "Antivirus blocked this file because it contains something harmful (a password stealer). It can't be opened." (TEST_FILE says it is a harmless test file); ANTIVIRUS_CHECKING and 503 ANTIVIRUS_UNAVAILABLE -> UNAVAILABLE, retry later, never ambiguous. Reads the reason from the body or the X-Kamo-Antivirus-Reason/-Family headers a binary download carries. No engine names, no raw body.
