◐ governance · how decisions happen_×
Elected board · token-weighted community vote · zero root authority

The network
votes itself.

There is no founder with a kill switch. No admin keys. No root extrinsics after genesis. Every runtime upgrade, parameter change, and rail activation is an on-chain proposal that either passes its vote or doesn't. This page explains the rules of that game.

◉ parameters_×
MechanismThresholdQuorumNotes
Community proposal50% Aye10%No deposit. Quorum is the spam filter.
Emergency action75% Aye10%Board recall. Reserve unlock. High-stakes only.
Board election (genesis)PluralityNo deposit. 1-address-1-vote. Bootstrap only.
Board election (post-bootstrap)Plurality100 TWL nomination deposit. TWL-weighted vote.
Board term5 years · 5–7 seats
✎ proposal types_×
Runtime upgrade

Ship a new WASM runtime. Required for promoting a scaffolded rail to first-class.

Parameter change

Tune fee splits, oracle staleness bounds, mining treasury share (up to 10%), and similar.

Rail activation

Bring a scaffolded rail online once its oracles and bridge infrastructure are operational.

Board recall

Remove a board seat mid-term. 75% threshold, emergency path.

Treasury spend

Allocate community-treasury balance for grants, infrastructure, or oracle subsidies.

Reserve action

Move or unlock the protocol's crypto reserve. 75% threshold.

Oracle operator set

Add, remove, or restake oracle operators maintaining price feeds.

Carbon registry link

Authorise a new carbon registry (Verra, Gold Standard, …) once its API is wired up.

◉ live proposals_×
Status

Mainnet is in its bootstrap phase. The genesis board election has not opened yet and there are no active proposals. Once the bootstrap mining threshold is met, the first board-election proposal becomes submittable — it will appear here and on any Polkadot.js Apps explorer pointed at a Twill RPC.

Until then, watch the repo for the proposal template, read pallets/governance/src/lib.rs, and join Discord to discuss what the first community proposals should be.

◴ how to propose_×
Step by step

Draft · publish · sign · submit

  1. Draft the proposal body in plain text. Keep it specific: which extrinsic, which parameter, which value.
  2. Publish the draft — GitHub issue, Discord #governance, or both — so voters have context before the on-chain motion appears.
  3. Submit governance.submit_proposal via Polkadot.js Apps while connected to any Twill RPC. The signer must hold a TWL account.
  4. The proposal is open for the voting window. Voters cast Aye / Nay with governance.vote. Stake is weighted by TWL balance.
  5. If the threshold and quorum are met at the deadline, the motion enacts automatically in the next block.
# Example: propose a fee parameter change
governance.submit_proposal({
  kind: SetFeePoolSplit,
  args: { staker_bps: 8000, community_bps: 2000 },
  body_hash: "<IPFS or commit hash>"
})

# Vote
governance.vote(
  proposal_id,
  Vote::Aye
)
◈ the board_×

The board does not have unilateral power. It schedules, it proposes, and it executes the outcomes of votes. A board seat can be recalled at 75%. Board decisions that touch the reserve require 75%.

Seats
5–7

Flexible. The exact count is a parameter set by the previous election's winner count.

Term
5 years

Long enough to plan upgrades, short enough to keep the ballot live.

Recall
75%

Any seat, any time. Emergency path to replace a member mid-term.