15

While checking the lower end of the reputation league on Worldbuilding, I think I have found a bug in the ranked positions:

screenshot of ranked positions bug

I would expect a 400 to come after 399.

It appears when viewing the top 400 users by Year but not By Month or All Time.

4
  • 2
    Possibly related: Stack Exchange reputation leagues will soon list only the top 400 users (two weeks prior) Commented May 20 at 17:00
  • 2
    @This_is_NOT_a_forum possibly? I'd say surely, it caused flurry of bugs, naturally... Commented May 20 at 18:16
  • 8
    Oh man, this is a funny one. And believe it or not, the bug has been there since the beginning of Leagues. I'll give a bit more detail in an answer at a later point, but if you want to try and puzzle it out, have a fun clue: Your rank in past leagues isn't stable. Check one week, your rank might be lower. Check another, your rank might be higher... even for the same week.
    – Slate StaffMod
    Commented May 20 at 19:49
  • @Slate I'm guessing this has to do with dates/times. Anything with a date/time component is going to have many, multiple date/time related bugs :P
    – Robotnik
    Commented May 21 at 1:42

1 Answer 1

22

This bug has existed since Leagues began, and it is fascinating to me that it was found today. It was found for a preposterously silly reason - I don't think anyone would have noticed, were the length of the leaderboards not fixed.

The reputation leagues have never had a tiebreaker. The order of users with the same earned reputation in a given league was completely arbitrary, determined by random chance. It was determined randomly every time the cache expired, which means your rank on historical leagues isn't stable. In other words, if you checked your historical leagues position every week, you'd get a different rank.

So why the jump from #399 to #426? Because the numerical ranks are assigned before the top 400 are selected. Users who had the same reputation change could be assigned any random rank among users who had the same rep change - but only some, chosen randomly and separately, would appear on the leaderboards. There were a decent number of users with 50 reputation change - and the ranks were assigned before the top 400 were selected. This part of the bug is new. But the root cause is the lack of stable sorting.

The answer, of course, is to provide a stable and consistent way of ranking accounts on the network in any given league. This way, users receive exactly the same rank every time the query is run. So we made a quick decision. When users have the same reputation change in a given period on the Leagues...:

  1. First tiebreaker: The user with the most received upvotes in the period wins.
  2. Second tiebreaker: The user with the least received downvotes in the period wins.
  3. Third tiebreaker: The newest user profile wins. (Fallback.)

Not sure exactly when this will deploy, but it should be soon.

5
  • 4
    Heh, your talents are wasted, you're a skilled bug hunter! Commented May 21 at 17:40
  • 6
    @Shadow I wish I could take credit for discovering this one. But truthfully, I'm more proud of my responsibilities to this company as a "future bug creator."
    – Slate StaffMod
    Commented May 21 at 17:42
  • 5
    Good to see Leagues getting some love, bugfixes, and entertaining answers like this.
    – Shog9
    Commented May 21 at 22:45
  • Now I'm curious what determined the "random" ranking of tied users...
    – V2Blast
    Commented May 22 at 17:59
  • @V2Blast Lavarand, of course. :D Commented May 28 at 17:08

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .