The only thing that gives me pause is that these changes will prevent the monitor from seeing any non-queryable nodes. The {{SessionEnvironment.Monitor}} interface was designed as a generic way to monitor the changes in a transaction, and was not specific to indexing. This change will alter that monitoring contract so that monitors (whatever they are) will only ever see changes to queryable nodes.

Did you consider passing the queryable state as a parameter to the {{Monitor}} methods? At least then the implementations could determine if they care.