From some more testing it appears that the generate_primary_file() is called when a user manually uploads a composite data type (cdt), but it's not called when the cdt is generated as a product of a run. That's fine. I can work around that.
I am curious about how cdts are uploaded manually, though. If I select multiple files to upload as a cdt, they're not linked but instead uploaded as individual cdts. Is there a way to upload multiple files as a cdt using the latest dev galaxy? (I noticed the file upload gui has changed from earlier releases, and I'm wondering if support for cdt uploads is now lacking)