Write contracts/docs/concepts-proposal-lifecycle.md explaining the proposals contract's voting design: how a proposal is created, how votes are weighted/counted, what finalization does, expiry handling, and how a finalized proposal's execution ties back into group_treasury withdrawals.
Acceptance criteria:
- A state diagram covers every
ProposalStatus value and the function calls that cause each transition
- Explains what determines a proposal passing or failing (vote count/threshold/quorum — whichever the code actually implements) precisely
- Explains the expiry path and why
finalize_expired_proposal exists as distinct from normal finalization
Write
contracts/docs/concepts-proposal-lifecycle.mdexplaining theproposalscontract's voting design: how a proposal is created, how votes are weighted/counted, what finalization does, expiry handling, and how a finalized proposal's execution ties back intogroup_treasurywithdrawals.Acceptance criteria:
ProposalStatusvalue and the function calls that cause each transitionfinalize_expired_proposalexists as distinct from normal finalization