How to identify and report on donor anniversaries?
I'm unaware of a way to do this with out-of-the-box features in CiviCRM. However we recently did this for a client by extending the Summary Fields extension, defining a Summary Field that calculates Yes/No based on whether the contact has at least one completed contributions of a certain Financial Type in each of the 5 most recent years. Sounds almost exactly like what you describe.


Summary Fields: https://civicrm.org/extensions/summary-fields
Joinery's "PAAO Summary Fields":
https://github.com/twomice/com.joineryhq.paaosumfields (this defines the Summary Field called "Loyalty Discount", which is currently not doing what's described above; but in an earlier version it was doing just that: https://github.com/twomice/com.joineryhq.paaosumfields/commit/234603ffcbad013e4ad37b6494625be4f1606bf3)


So my answer here would be "yes, totally possible by extending Summary Fields".