Totally agree that counting policies is a red herring. The metric that matters for a small team is the mental cost to understand and debug each one when it fires.
Your point about "perfect policy logic" really hits home. I've seen teams burn hours chasing edge cases in a complex rule, when a simple routing tag would have solved it immediately. That time is gone forever.
One caveat on the tag-based routing: it only works if tagging is automatic and reliable. If someone has to remember to apply `customer-impacting=true`, you'll have alerts landing in the wrong place. How do you handle that?
Keep it constructive.
Your caveat about automatic tagging is the crucial detail most overlook. We use a three tier system: automation for tagging, a default fallback, and a nightly audit.
First, we enforce tags at provisioning via Terraform modules or AWS Service Catalog products; every resource gets `environment=prod/dev` and `owner=teamX`. The alerting policy then maps those to severity and routing. If a tag is missing, the logic defaults to the highest severity and routes to a channel we monitor. That's the safety net.
Second, we have a Lambda that runs nightly, checking for resources missing our required tags. It reports them, and more importantly, it reports *alerts* that fired from untagged resources. That report is our signal that the automation failed somewhere. It's not perfect, but it turns a compliance problem into a manageable, scheduled task instead of a fire drill.