Oops. Looks like someone at SE Towers pressed the wrong button/s.
We just did a major revamp of how badges are awarded behind the scenes
to drastically reduce the load on SQL Server. It now takes advantage
of some pre-compute work we're doing to track badge progress in the
profile.
However, I screwed up 2 queries, specifically the text names of the
badges that prevent duplicate awarding. I was thinking to myself
earlier "hey, maybe we should pass these in" as part of the rewrite -
but it's not quite so simple. I'll take another look at this soon but
when we're not fighting fires from a SQL Server upgrade. The
cardinality changes which hosed some of the bigger badge queries
needed urgent attention here, which ended up as a major revamp and
introduced the 2 errors reported here.
Apologies for all the bad grants here - that certainly wasn't the
intention. Due to how badges get tested, it's also not a symptom that
shows up locally. If I can change this to a param exclusion passed by
the code then things like this become far less likely to happen going
forward.
Nick Craver♦
Fixed now, all apart from the fact that my badge count still says

which I gather will get fixed overnight
I have cleaned up all achievements and grants associated with the bad
code. User badge counts (on user cards and flair) will sync up tonight
as part of a regular process.