In January we wrote about replacing CometBFT. The last awkward part was still there, though: compatibility code left two ways to think about how the node ran.
That ended this week. rp1d start now enters the DAG runtime directly. Narwhal workers batch transactions, primaries certify them, Bullshark orders the certificate graph, and the executor calls the Cosmos SDK application. Comet compatibility remains where clients need it, but it no longer owns block production.
Why we finished the cutover
Two runtimes create two sets of failure assumptions. A node operator should not have to ask which consensus path produced a block, and an engineer debugging startup should not have to trace legacy branches before reaching the code that actually runs.
The cutover also let us remove memory that only existed to support duplicate paths. The same change tightened DAG retention and gossip behavior so nodes do less work holding and redistributing data they no longer need.
What changed in practice
- DAG configuration is written as part of normal node initialization.
- Restart handling preserves chain data and resumes the DAG runtime.
- Gossip pressure is bounded more carefully during peer churn.
- Consensus and oracle state now follow one startup and shutdown lifecycle.
This is infrastructure work, so the honest result is not a new button. It is a smaller set of states a validator can enter, fewer old assumptions in the runtime, and a cleaner base for the performance work that follows.
Source record
- DAG-first runtimecommit / 2026-03-02
- DAG memory reductioncommit / 2026-03-02
- DAG liveness hardeningcommit / 2026-03-02