0LNetworkCommunity/libra-framework

[bug] inconsistent `is_resolved` flag behavior in diem governance framework

Closed this issue · 1 comments

Describe the bug
When using the Diem governance framework, submitting and resolving a proposal via the Libra-framework leads to the 0x1::diem_governance::is_resolved function correctly returning true. However, when a proposal is made to change the move-stdlib and it gets resolved—such as in the 6.9.6 upgrade where the move-stdlib was upgraded—the is_resolved function incorrectly returns false, despite the upgrade being successfully applied. This inconsistency can lead to confusion and mismanagement of the governance process.

To Reproduce
Steps to reproduce the behavior:

  1. Submit a proposal to the Diem governance framework to upgrade the move-stdlib to a new version (e.g., during the 6.9.6 upgrade process).
  2. Follow the standard voting procedure until the proposal is accepted and the upgrade is applied.
  3. Call the 0x1::diem_governance::is_resolved view function to check the resolution status of the proposal.
  4. Observe that the function returns false, indicating that the proposal has not been resolved, despite the successful application of the upgrade.

Expected behavior
After a proposal to upgrade the move-stdlib is successfully voted on and applied, calling the 0x1::diem_governance::is_resolved function should return true, indicating that the proposal has been resolved. This expected behavior aligns with how the function responds to resolved proposals within the Libra-framework, ensuring consistency across different types of governance proposals.

Additional context
The inconsistency in the is_resolved function's return value could lead to governance issues, such as the potential for double voting on proposals believed to be unresolved. This bug report was prompted by the observation of this issue during the 6.9.6 upgrade process, specifically concerning the move-stdlib upgrade proposal. It is crucial for the integrity of the governance process that the is_resolved function accurately reflects the resolution status of all types of proposals.

This was an operator error due to lack of documentation. Rectified with information in #210