Scope - Implement policy checks (premium/animated allowances) before accepting uploads - Generate multiple sizes and formats for icons consistently - Garbage-collect old icons upon updates Acceptance criteria - Config-driven validation for premium/animated profile pictures and role icons - Generated variants: sizes (e.g., 64/128/256/512) and formats (e.g., png/webp) stored and retrievable - Old icon variants cleaned up when a new image is stored - Endpoints continue to return correct content type and cache headers Code references - avatars: https://github.com/erkinalp/anticensor/blob/master/src/cdn/routes/avatars.ts#L27-L31 - role-icons: https://github.com/erkinalp/anticensor/blob/master/src/cdn/routes/role-icons.ts#L29-L32 - guild-profiles: https://github.com/erkinalp/anticensor/blob/master/src/cdn/routes/guild-profiles.ts#L27-L31 Notes - Ensure consistency in how hash/animated prefixes are handled across routes - Consider background processing if resizing/transcoding proves expensive