I assumed the catalog has a closed list of stages of objects:
trained models
predictions
evaluations (these are a complicate thing - you can evaluate in completely arbitrary way - it is a separate question how to cover them).
What about leaving the list of stages in the catalog open for the user to define? E.g. for every arbitrary stage there will be:
separate dictionary in Catalog object
a sub-catalog created in the library folder to store objects from this stage
I assumed the catalog has a closed list of stages of objects: