Yea, stems from reports being classes which get instantiated with a `request` object. Also how the permissions framework works, it assumes everything is a class or a function that can be [imported at any time](https://github.com/dimagi/commcare-hq/blob/master/corehq/apps/users/models.py#L1244-1244) (not the case with these). The dynamic names are required by the permissions framework which stores the list of reports as fully qualified [python paths](https://github.com/dimagi/commcare-hq/blob/master/corehq/apps/reports/util.py#L345-345) which must be unique per report.

These reports are a bit weird since they are dynamically generated based off db config. I'll add some better comments to explain myself.