The review design is incorrect and it will breaks the invariant in 2 places
In file LevelOne.sol function graduateAndUpgrade()
There's no check if 4 reviews are fulfilled for an individual student by checking reviewCount variable.
A principle can perform upgrade with no 4 reviews requirement.
reviewCount during giveReview() functionIn the giveReview function, it is missing to update the reviewCount when a teacher giving student a review.
This will cause the system cannot log the correct review count for a student and break the business logic.
Invariant breaking -- Students must have gotten all reviews before system upgrade. System upgrade should not occur if any student has not gotten 4 reviews (one for each week)
Manual review
Considering updating the reviewCount within the giveReview() function
`reviewCount` for students is not updated after each review session
All students are graduated when the graduation function is called as the cut-off criteria is not applied.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.