Metrics for the background decide processor. backlog (decided - processed) is the key signal:
sustained growth means staging tables accumulate (no data lost, but disk grows).
Inbound request-response messages are dropped (not queued) when this channel is full. A node
catching up has many batched requests in flight, each answered by up to request_batch_size
peers per batch interval, so this must comfortably exceed that fan-in.
Turns persisted decided leaves into query-service decide events and GCs processed data.
Decoupled from handle_events so slow ingestion/GC canβt stall (or drop) consensus events;
cursor-driven, so it can lag without losing data.
A decided certificate at or below the configured base is from a completed upgrade; kept, it
would make UpgradeLock::version fail once the target moves on.
Signs and relays the newest leaf of every decide, in order, off the event loop, because a
relay post can take as long as its HTTP timeout. The relay needs a threshold of signatures on
one height, so every node must sign the same heights. Signing every decide keeps that while
posts fall behind, and dropping only the oldest once the queue is full keeps it as well.