README.md
Governor
⚠️ Experimental — generated with no human supervision by the daily MCP pipeline (Solidity→Gno port). Not audited. See r/moul/x/daily.
A simplified on-chain governance realm inspired by OpenZeppelin's Governor.
It ports the core proposal → vote → execute lifecycle to Gno: Propose records
a proposal's snapshot height and a deadline of ChainHeight() + votingPeriod,
CastVote gives every address a single equally-weighted vote (1 address = 1
vote, tracked in an avl voter set), and State computes Active / Succeeded
/ Defeated from the deadline versus the current chain height plus whether the
for tally beats against. Execute finalizes a Succeeded proposal.
Unlike the ERC20Votes-weighted original, voting power here is flat (one address, one vote) and there is no timelock — the emphasis is on a clean, deterministic state machine driven by block height.
Example calls
# open a proposal (returns its id)
Propose("Fund the docs working group for Q3")
# vote: 0=against, 1=for, 2=abstain (one vote per address)
CastVote(1, 1)
# read the current state: Active | Succeeded | Defeated | Executed
State(1)
# once past the deadline with for > against, finalize it
Execute(1)
Render("") lists every proposal with its tally bars (▓░) and state.
Part of moul/gno-contracts — moul's versioned gno.land contracts. See the repository for the full catalog, build/test tooling, and usage.
Dependency graph:

🧪 Highly experimental — potentially vibe-coded. Not audited; may break, change, or be removed at any time. Do not use with anything of value. Full disclaimer: DISCLAIMER.