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
| Step | What it means | |
|---|---|---|
| I | Propose | Your gINVEST must meet the proposal threshold. |
| II | Vote | Cast with the gINVEST you held at the proposal's snapshot. |
| III | Timelock | The passed proposal waits out the minimum delay. |
| IV | Execute | Anyone executes it — the executor role is open. |
Parameters
Genesis values, and the bounds the Boardroom may move them within:
| Parameter | Genesis (4663) | Bounds |
|---|---|---|
| Voting delay | 6 h | [1 h, 30 d] |
| Voting period | 48 h | [24 h, 90 d] |
| Timelock minimum delay | 24 h | policy, not code |
| Proposal threshold | 25 bps of live gINVEST supply | ≤ 10,000 bps |
| Quorum | 1,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.
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,quorumBpsorproposalThresholdBpsgo 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.
setProposalThresholdis disabled outright.
Roles on the Timelock
| Role | Holder |
|---|---|
| Propose | the Governor |
| Cancel | the Governor and the Investors Center Safe |
| Execute | anyone — a passed proposal is not gated on a privileged key |
| Administer roles | nobody; 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:
- 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.
- Pin an accumulator route or policy — fix which venue the treasury may buy a given asset through, and the caps that bound those purchases.
- Treasury roles and parameters — grant or revoke a role, and tune the rate limits that bound how much value any role can move.
- Emissions and staking — set the reward rate, the epoch length and the warm-up rules.
- Bonds — set the vesting bounds, lower the absolute price floor, arm the price band.
- 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.
- 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.