The intent of calling LevelOne::graduateAndUpgrade is to graduate students and perform other important actions , but the function clearly ignores the second parameter in LevelOne::graduateAndUpgrade , clearly upgrading to LevelTwo Contract implementation ignoring calling LevelTwo::graduate immediately which was meant to be passed in bytes format
The second parameter stated in this function is not used , The function doesn't pass call LevelTwo::graduate even if its passed in bytes format
The principal calling LevelOne::graduateAndUpgrade at the end of a school session after all conditions have been met ends up not graduating any student
Manual Review
LevelOne contract inherits UUPS upgradeable contract , consider calling UUPSUpgradeable::upgradeToAndCall which upgrades and subsequently execute the function call encoded in bytes memory data. Also consider consider changing bytes memory to use a named parameter e.g bytes memory data
The system doesn't implement UUPS properly.
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.