Attachment storage
Attachments are private application data, not public object URLs.
A table cell stores stable metadata rather than an expiring URL:
attachmentId + objectKey + name + size + contentTypeUpload, download and delete operations go through authenticated QTable APIs and re-check the current table and row permission.
Runtime settings
Section titled “Runtime settings”The current storage contract includes settings for:
ATTACHMENT_STORAGE_ENABLEDATTACHMENT_S3_ENDPOINTATTACHMENT_S3_ACCESS_KEYATTACHMENT_S3_SECRET_KEYATTACHMENT_S3_BUCKET- optional
ATTACHMENT_S3_REGION ATTACHMENT_S3_SECUREATTACHMENT_MAX_BYTES- cleanup batch / interval settings
ATTACHMENT_UPLOAD_PENDING_GRACE_SECONDS
Lifecycle
Section titled “Lifecycle”Soft-deleted rows retain attachment objects so restore remains possible. Permanent purge makes those objects eligible for durable background cleanup. Uploads use a durable intent before object-store writes so abandoned uploads remain discoverable for cleanup.