- Shipped
- August 9, 2026 at 5:34 AM UTC
- Author
- Kamo
- Commit
- 50d0a3c
Call recordings, voicemails, chat attachments, HR resources, marketing materials, meeting recordings and every kind of document are all rows in imgs, distinguished only by ImageAssocType and all sharing one bucket, because association is metadata rather than a storage boundary. Reporting them as a single line was accurate and useless: for one production organization it hid that 5.08 GB of a 5.09 GB footprint was chat attachments. Each association now belongs to a domain, so an organization can see what is actually consuming its storage rather than one undifferentiated total. StorageDomainCoverageTest makes an omission a build failure: every ImageAssocType must be claimed by exactly one domain — unclaimed means uploads are stored and never billed, claimed twice means billed twice. Verified by probe: removing HR_RESOURCE from its domain fails the build with the reason, rather than passing quietly. MEETING_RECORDINGS sums both its sources, the meeting_recordings table and the MEET_RECORDING association. MeetRecordingService writes only the former, so they do not overlap.