Anniversary was just changed to silver so new installs will get it, there is some notification suppression logic see:
So its legit that you are not being notified for that.
The sharing badge may need a tweak, its grabbing min(id) instead of max which means it is unlikely to hit the threshold
SELECT views.user_id, i2.post_id, i2.created_at granted_at
SELECT i.user_id, MIN(i.id) i_id
FROM incoming_links i
JOIN badge_posts p on p.id = i.post_id
WHERE i.user_id IS NOT NULL
GROUP BY i.user_id,i.post_id
HAVING COUNT(*) > 25
) as views
JOIN incoming_links i2 ON i2.id = views.i_id
One possibility would be to add another return column to the badge queries, call it repeat_id. Could be trivially mapped to the seq column in the badge_users table. Then have repeat_id * TIMESPAN('1 year') somewhere in the query.