Skip to main content

How governance works

Governance is the Boardroom: an OpenZeppelin Governor (ICGovernor) plus a TimelockController, voting on gINVEST.

The important structural fact is that the Timelock is the Treasury's authority. It holds authority.governor() and calls every onlyGovernor function directly — on the Treasury, the token, the tax collector, the accumulator, the feeds, staking and the distributor. There is no admin key that can move funds, and there is no relay contract in between: a proposal names the real target contract and its own ABI encoding.

The four steps

StepWhat it means
IProposeYour gINVEST must meet the proposal threshold.
IIVoteCast with the gINVEST you held at the proposal's snapshot.
IIITimelockThe passed proposal waits out the minimum delay.
IVExecuteAnyone executes it — the executor role is open.

Parameters

Genesis values, and the bounds the Boardroom may move them within:

ParameterGenesis (4663)Bounds
Voting delay6 h[1 h, 30 d]
Voting period48 h[24 h, 90 d]
Timelock minimum delay24 hpolicy, not code
Proposal threshold25 bps of live gINVEST supply≤ 10,000 bps
Quorum1,000 bps of non-excluded circulating gINVEST at the snapshot≤ 10,000 bps

Quorum, and why there is a floor

quorum(t) = max( circulating(t) × quorumBps / 1e4 , quorumFloor )

The absolute floor exists so a dormant Boardroom cannot be captured by a handful of votes. It is sized at ten POL pools' worth of staked INVEST — quorumFloor = polInvest × 1e9 / 10, i.e. 10% of the protocol-owned-liquidity leg.

Voting weight is your gINVEST at the moment a proposal snapshots. Protocol-held gINVEST — the Treasury's, Staking's, the bond depository's, the redemption module's and the Timelock's — is excluded from the eligible supply. That exclusion set is fixed in the gINVEST constructor and is immutable.

There are no voters at t0

Mainnet launches with no genesis deposit, so nothing is staked and every INVEST in existence is the POL leg. At a 4,000 USDG seed the quorum floor is 400 gINVEST — a tenth of the t0 supply. A proposal needs at least that much gINVEST voting, i.e. 10% of the launch float bought out of the pool and staked, or the parameter guardian lowers the floor. Plan the first proposals around that valve.

Lockout-proof tuning

The rule is asymmetric on purpose:

  • Raises of quorumFloor, quorumBps or proposalThresholdBps go through governance, and a floor raise is additionally capped at the reachable non-excluded supply (ICGovernor_FloorUnreachable) — governance cannot lock itself out.
  • The parameter guardian may only lower. That is an escape valve, not a capture power: quorum measures participation, and a proposal still needs FOR > AGAINST to pass. Lowering the bar to vote does not decide the vote.
  • Voting delay and period have permanent floors and caps.
  • setProposalThreshold is disabled outright.

Roles on the Timelock

RoleHolder
Proposethe Governor
Cancelthe Governor and the Investors Center Safe
Executeanyone — a passed proposal is not gated on a privileged key
Administer rolesnobody; the deployer gave this up at handoff

The Safe's ability to cancel is a deliberate, accepted residual: it can veto a queued proposal but cannot enact one.

What proposals look like

Every proposal is a direct call on the contract it affects — there is no relay in between. These are the shapes the Boardroom will see most:

  1. Vet a price feed — approve the exact valuation configuration a new reserve asset may carry. The operator then activates it separately, through an announced queue.
  2. Pin an accumulator route or policy — fix which venue the treasury may buy a given asset through, and the caps that bound those purchases.
  3. Treasury roles and parameters — grant or revoke a role, and tune the rate limits that bound how much value any role can move.
  4. Emissions and staking — set the reward rate, the epoch length and the warm-up rules.
  5. Bonds — set the vesting bounds, lower the absolute price floor, arm the price band.
  6. Tax — re-point the collector, the team wallet or the accumulator; register or cancel a pending tax exemption. The rate itself cannot be changed by anyone.
  7. Games — grant the game house its Treasury role and set its risk budget.

The redemption backstop

RedemptionModule is a frozen Treasury role (REDEEMER) that governance cannot revoke. It is a pro-rata, balance-based, oracle-independent rage-quit: you can redeem for a slice of the raw reserve tokens even if every price feed is down. The POL INVEST/USDG pair is set as the immutable excludedReserve at construction, so the protocol's own liquidity is not redeemable out from under itself.