This is a bug I would say, but it is known and there are reasons for this; basically the announce message might get dropped and is thus lenient in accepting grafts. But yeah, all things considered, it is a bug that we should probably fix.
Based on what you said, should this fix be implemented at the level which would prevent the graft entirely? Or would it be simpler to add another step to the Publish method to run the subscription filters again?
I’m thinking actually we could just add the logic here, where the subscription filter is currently checked, to also filter out any graft control messages as well?
Do you think we need to filter out IWANT control messages too?