There was unanimous support in discussion of T200297 for avoiding any database polymorphism, and we'll take that principle further to eliminate all generic parameters to public APIs.
This task is done when:
- Implement secondary tables. Each entity type will have its own table and indexes. Hooks keep the data in sync.
- Split get and post APIs out by judgment schema, e.g. "judge diff damaging".
Other moments of the conversation also suggest that we should lose the generic subpage syntax where possible, but that doesn't need to be solved in this task. I've also extended this reasoning to the API, and am happy with the results so far.
It will still be beneficial to generalize backend logic such as the ContentHandler that they share, though it may be subclassed to implement each judgment schema as a slight variation with its own unique validation, rendering, and so on.