There are no checks if we reached sessionEnd or not.
The invariant says:
System upgrade cannot take place unless the school's
sessionEndhas reached
However, in LevelOne::graduateAndUpgrade, we don't check if we reached the sessionEnd or not.
The system can upgrade before the sessionEnd was reached, which breaks the invariant quoted above. However, since this call needs to be done by the principal, I assume they're trusted, so it's Low severity.
Manual Review
Add a check inside LevelOne::graduateAndUpgrade if block.timestamp >= sessionEnd.
`graduateAndUpgrade()` can be called successfully even when the school session has not ended
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.