Missing sessionEnd check enables premature upgrades, violating the 4-week session invariant.
The graduateAndUpgrade function in LevelOne.sol does not check if block.timestamp >= sessionEnd before upgrading, despite the invariant requiring a 4-week session. This allows the Principal to upgrade the system prematurely, breaking the session duration rule.
Disrupts the scheduled session timeline, affecting all actors.
Manual code review and Foundry testing.
Add require(block.timestamp >= sessionEnd, "Session has not ended"); at the start of graduateAndUpgrade.
`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.