# Proposal lifecycle

How a protocol change gets from idea to execution.

> **Testnet.** DAO proposals are planned and not active. No proposal has been created. See [Testnet Status](../../introduction/testnet-status.md).

## Today

Every protocol change goes through the Safe and the `MultiSigTimelock`. The Safe proposes the operation, the signers approve it, the delay runs out and the Safe executes it. See [Governance](./README.md#what-is-live-today).

## Planned DAO proposals

The four phases below describe DAO proposals through the `GovernanceManager` contract. Full DAO governance is on the roadmap for Q4 2027.

### Phase 1: discussion and temperature check (offchain)

1. A community member forms an idea to improve the protocol.
2. The idea is shared in the Noderr community channels, such as Discord and forums. Feedback refines it and surfaces problems.
3. The proposer gauges wider support through informal signaling in those channels. This shows whether the idea has enough support for a formal proposal.

### Phase 2: proposal and vote (onchain)

1. An eligible proposer will call `propose()` on `GovernanceManager` with the exact `targets`, `values` and `calldatas`.
2. The proposal must include a clear title, a description of the change, the rationale and the specific actions to take.
3. A fixed 7-day voting period will begin. Node operators will vote for, against or abstain, using their [voting power](./README.md#voting-power).
4. Node voting power will settle the vote onchain.

To pass, a proposal will need both quorum and approval at the end of the voting period. Major decisions need the Oracle Chamber supermajority instead of standard approval. The numbers are in [Thresholds](./README.md#thresholds).

### Phase 3: timelock and review (onchain)

A passed proposal will be queued with `queue()`, which sets its `eta` (earliest time of arrival). It then waits out its timelock delay. The delay gives everyone time to review the queued change before it runs.

### Phase 4: execution (onchain)

1. After the delay, the proposal will become executable.
2. `execute()` will run the proposal's payload against the target contracts.
3. The proposal will then be marked `Executed`.

## Next

- [Governance](./README.md)
- [Voting guide](../../getting-started/for-users/voting-guide.md)
