What is meta? ×
Meta Stack Exchange is where users like you discuss bugs, features, and support issues that affect the software powering all 133 Stack Exchange communities.

Today, I answered a question and it was accepted. I saw the +15 in my reputation-by-time view. Shortly thereafter, they accepted someone else's question, and I saw the -15 in the reputation-by-time view. Net of zero, I thought, so I moved on. Now, a couple hours later, I was reviewing my reputation changes for the day, and noticed the -15 for unaccept, but without any corresponding +15 for the original accept. For a net of -15.

Here's what I see in my reputation by time view:

96   today
-2   1 hour ago     downvote    How do I encode the & symbol for batch requests?
+10  1 hour ago     upvote      How do I encode the & symbol for batch requests?
-15  1 hour ago     unaccept    php tag data not executing when retrieving from database
+50  1 hour ago     upvote      How to I make my custom mySQL query to in rails 3?
-1   2 hours ago    downvoted   How do I line up input fields and their labels in a grid like manner with css?
-1   2 hours ago    downvoted   mySQL order by certain values & then DESC?
+15  3 hours ago    accept      Performance tuning-Should i use loop or 'OR' to query a bunch of stuff
+40  3 hours ago    upvote      Performance tuning-Should i use loop or 'OR' to query a bunch of stuff

If I add up the values in that row, it indeed adds up to 96. So there's a -15 in there with no +15. And I checked my numbers for yesterday just to make sure that missing +15 didn't fall there for some reason, and it didn't.

And if I view reputation-by-post, that confirms it:

-15  1 hour ago     unaccept    php tag data not executing when retrieving from database

I would expect to see "0" on the left if the net was really zero.

EDIT:

I did a recalc, and here was the output for today:

 2   7509365 (10)
 2   7509365 (10)
 2   7509365 (10)
 2   7509365 (10)
 1   7509365 (15)
 2   7509475 (10)
 2   7509475 (10)
 2   7509475 (10)
 3   7509733 (-1)
 3   7509524 (-1)
 2   7509475 (10)
 2   7509475 (10)
 2   7510413 (10)
 3   7510413 (-2)
-- 2011-09-22 rep +111  = 5250      

Not only does it say "+111" (as opposed to +96), there is also no instance of "7510173" which is the post in question. So it's just the display that's wrong (caching bug?). @WladimirPalant is correct.

EDIT 2:

The reputation graph is correctly showing "+111" even though the other views are still wrong. I haven't looked at the graph view until now today, but had been looking at the other views a few times. Definitely smells like a caching problem.

EDIT 3:

The story gets stranger. Since I posted this, I've done a little more on StackOverflow. Among other things, two of my answers were accepted. But my reputation-by-time and -by-post views don't show either of these accepts. And the total shown is the sum without them:

126  today
+30  12 mins ago    upvote      Ruby on rails: Yielding specific views in a specific places in the layout
-2   3 hours ago    downvote    How do I encode the & symbol for batch requests?
+10  3 hours ago    upvote      How do I encode the & symbol for batch requests?
-15  3 hours ago    unaccept    php tag data not executing when retrieving from database
+50  4 hours ago    upvote      How to I make my custom mySQL query to in rails 3?
-1   4 hours ago    downvoted   How do I line up input fields and their labels in a grid like manner with css?
-1   4 hours ago    downvoted   mySQL order by certain values & then DESC?
+15  6 hours ago    accept      Performance tuning-Should i use loop or 'OR' to query a bunch of stuff
+40  6 hours ago    upvote      Performance tuning-Should i use loop or 'OR' to query a bunch of stuff

This is the display, even though two of my new answers were accepted. The graph view is still correct, showing "+156" (accounting for the +30 that the other views are not; 126 + 30 = 156). So it looks like now my rep-by-time and rep-by-post views are not displaying any accept votes.

share|improve this question
    
Most likely the display is wrong. You should lose only the reputation you gained when your answer was accepted, with the net reputation change being zero. –  Wladimir Palant Sep 22 '11 at 8:06
    
I just did a reputation re-calc and that didn't affect this issue. I did gain a mysterious 3 reputation from something though... Won't complain about that. =) –  Ben Lee Sep 22 '11 at 8:15
1  
My guess would be that you downvoted three answers that have been removed. –  Wladimir Palant Sep 22 '11 at 8:17
    
@WladimirPalant, I just unconvered some evidence actually that you're exactly right, the display is wrong. If you want to add that as an actual answer, and I'll accept it. –  Ben Lee Sep 22 '11 at 8:18
    
Better retag your question into a bug report, this is extremely confusing and needs to be fixed. Either the original "accept" vote should still be displayed or if this isn't possible (which I suspect it is) the "unaccept" should be displayed with a zero score change. –  Wladimir Palant Sep 22 '11 at 8:20
    
@WladimirPalant, done. I also added the evidence I found for it being a display problem. –  Ben Lee Sep 22 '11 at 8:22
    
    
@ChrisF, yes I saw those when I was searching for this problem before posting, but those are describing different problems. Those people couldn't even see which question changed. I can see it, the problem I'm having is that it's incorrectly showing just the "-15", without the corresponding "+15", even though the net is actually 0 (as indicated by the recalc output). It is also apparently using that incorrect display to calculate the sum, which also then is incorrect (in my case, it shows "+96" when in fact the recalc and common sense show it to be "+111"). –  Ben Lee Sep 22 '11 at 8:39
    
@BenLee: I don't think that this is a caching problem - there are simply too many different ways to calculate reputation changes. And different parts of SO take different approaches which causes all sorts of inconsistencies. –  Wladimir Palant Sep 22 '11 at 9:20
    
@WladimirPalant, see my EDIT 3 that I just posted. The problem is bigger than it initially seemed. –  Ben Lee Sep 22 '11 at 10:16
    
See Nick Carver's last comment on the answer to Loss of reputation when answer unaccepted -- looks like they're fixing at least part of the problem now. –  agf Sep 22 '11 at 10:50

2 Answers 2

up vote 11 down vote accepted

This was indeed a bug in the query for reputation break-down, those quick accepts/unaccepts didn't have the corresponding deleted accept being fed into the cancelling algorithm...this has been fixed and you will no longer see the errant -15 that was cropping up like the case in question.

share|improve this answer
    
Thanks for the fix! Any idea about the other bug I noticed, in "EDIT 3" in my question? It seems to be showing all the accepts now, but last night it was definitely not showing my most latest accepted answers in the rep-by-time or rep-by-post views. –  Ben Lee Sep 22 '11 at 15:44

It seems that this has been implemented with the assumption that "accept" and "unaccept" are usually at least a few days apart (which was the problem scenario in Please show us when we lose an accepted answer). So your net reputation for today will be correct (you lost 15 reputation points today) whereas the reputation for the day where the answer was accepted will be wrong (the accept vote disappeared) but nobody really cares. Of course this approach produces very confusing results when "accept" and "unaccept" happen on the same day.

Without really knowing much about how Stack Overflow is implemented I think that there are three solutions:

  1. Don't remove the "accept" vote from the database when the answer is unaccepted, simply add the "unaccept" vote. This will make sure that the "accept" still shows up as a reputation change and the entire reputation history is correct. I don't know whether leaving the "accept" vote in the database will break some assumptions elsewhere however.
  2. Display each "unaccept" as two votes - "accept" with +15 and "unaccept" with -15. Here the "accept" vote can be displayed without a date. Or maybe the date of the "accept" can be remembered in the database record for "unaccept" so that it can still be displayed. So the score for the day where the "accept" vote happened still changes retroactively but at least all the score changes sum up to the correct value.
  3. Most simple solution - assign score 0 to the "unaccept" vote (because that's its effective score the way things are implemented right now). I guess that the effect will be that you will no longer be notified about a reputation change here and your reputation change will be wrong both for the day of "accept" and for the day of "unaccept". But at least the reputation history is somewhat consistent.

Clearly, the first solution would produce most consistent results. But the other two might be simpler to implement.

share|improve this answer

You must log in to answer this question.

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