I added
disable_checks = true
to Dependency "router-internal"
and let it run overnight. Out of 6 events, instead of 2-3-4-5 notifications on each router recovery, I got 0 on the first 5 and 1 on the 6th. So I’ll call that fixed.
Unfortunately Icinga is still an order of magnitude noisier than our older monitoring solution, because basic dependencies are still not stopping alerting while a parent is down. Unless I see some progress on Notifications despite Dependencies I will need to find another solution.