Version number is (as mentioned) 3.7, but this has been carrying on for a long time.
I'm pretty sure this is what happens in the background:
- Attempt one -> number is pushed to grade book
- New attempt is opened -> grade -1 is written to assign_grades for attempt 2. This of course is not copied to the grade book (a grade of minus 1 would be strange)
- From now on, the grade book only looks at the grade for the last attempt for this assignment. Which is attempt 2. But that currently has grade -1 so nothing happens to the grade book. The grade book is never monitoring what is entered in attempt 1 for the assignment, as it is irrelevant for the grade book: that should only store the grade with the highest attempt number
To me this looks like a bug... but it might be design, I don't know.
It could be fixed pretty easy if the grade book will always store the grade from the highest attempt except when the grade is minus 1, then the grade book should store the grade from the attempt before that.
See screenshot of student below:
What happened here? Student has had 1 attempt. Teacher graded this 5.0 but made a mistake and changed this to 4.0.
Student now see two grades: the grade from assign_grades attempt 1, which is 4.0 but also sees the old (wrong) grade 5.0 from (and in) the grade book. This grade has never been updated with the correct grade.
In our institution the number of attempts for an assignment is pretty important. For example you get TWO attempts for every assignment. After turning in the first assignment, there can be a review with the student and the teacher. The first attempt can be corrected by the teacher based upon this review. So that is why grades for the first attempt sometimes are corrected... but of course the teacher can always make a mistake and should be able to correct the grade for the first attempt anyway.
NB: there's NOT a higher attempt made than attempt one in this example. So the 5.0 you see above is not from attempt 2 or higher, it was the wrong grade entered at attempt ONE which has been corrected. Tabel assign_grades has stored the correct grade, however table grade_grades still shows the wrong grade.