The Governance::_queueProposal() function throws a ProposalAlreadyExecuted error when a proposal is already queued, which incorrectly represents the proposal's state and can confuse users.
In Governance::_queueProposal(), when checking if a proposal is already queued using isOperationPending(), the error message indicates the proposal is executed rather than queued:
The root cause is a mismatch between the check being performed (isOperationPending()) and the error being thrown (ProposalAlreadyExecuted). The function is checking if the proposal is pending in the timelock, but throwing an error suggesting it has already been executed.
The incorrect error message can:
Lead to incorrect assumptions about proposal execution status
Create inconsistency in error handling across the protocol
Create New Error Type
Create a specific error for queued proposals and use it instead:
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.