Pre-merge live smoke on .94 caught 'Bucket not found': the upload wrote to a per-institute bucket cc.institutes.<id>.private that isn't provisioned on dev. Use the shared SOURCE_BUCKET_FALLBACK (cc.users); institute is namespaced in the storage path + enforced by the files-row RLS. Per-institute buckets are a future multi-tenant concern. Catalogue path + cross-institute 404 already verified green. Co-Authored-By: Claude Opus 4.8 <[email protected]>