The .PostInitialize procedure would be triggered if a database has auxiliary databases. It would be triggered after all auxiliary databases were finished opening, allowing any additional initialization needed that can only be done after the auxiliary databases are available.
The .PostCloseDatabase procedure would be triggered after a database is closed. For example, it could be used to close auxiliary databases (perhaps there should be an automatic option for this?). Note that the way AppKit is structured, this can only be called after the database is actually closed, not before (perhaps via a timer?). It cannot interfere with closing or prevent the database from closing. Probably we need to pass it parameters with database information, for example the list of auxiliary databases.
Another idea – perhaps a function that will return a list of databases that reference a specified database as an auxiliary database? So we can leave a database open if some other open database is referring to it.