I think there might be an overflow error with the scoring... Look at the total score in the following vs. the contributed shares and CFD...
Well, this is not a bug, this is feature :-). I didn't want to complicate the stuff with score based system in the introduction, but as you are asking...
Using exp(round_time/C) can lead to extremely high numbers. Such big that with many workers and extremely bad pool luck, it may overflow somewhere. So in reality, the score based system is implemented with one optimization, that was not explained yesterday:
The real formula isnt score += exp(round_time/C), but:
duration = min(round_time, hour_time)
score += exp(duration/C)
where round_time is count of seconds from round beginning and hour_time is count of seconds in current hour.
And every hour, exactly at 0 minute, 0 second +- 50 miliseconds, I'm performing "renormalization". This means that all worker scores are divided by exp(min(3600, round_time)/C).
This has NO IMPACT on score system itself, but helps handling huge numbers in application. So your observation was absolutely correct, because every hour the system score drop to very low number.