74569 bc medium base consensus client process exits on safe invalid payloads because is deposits only misclassifies every derived block and bypasses holocene fallback
Description
Summary
Root cause
// crates/consensus/protocol/src/attributes.rs:65-70
pub fn is_deposits_only(&self) -> bool {
self.attributes
.transactions
.iter() // Option<Vec<Bytes>>::iter — yields &Vec<Bytes> once
.all(|tx| tx.first().is_some_and(|tx| tx[0] == OpTxType::Deposit as u8))
// ^^^^^^^^^^^ tx is &Vec<Bytes>; tx.first() is the first Bytes only
}Fatal-reachability chain (process exit, not degradation)
#
File:line
Effect
Impact explanation
Likelihood explanation
Recommendation
Additional Notes
Proof of Concept
A. Predicate (4 tests, crates/consensus/protocol/src/attributes.rs)
B. Fatal-arm routing (crates/consensus/engine/src/task_queue/tasks/seal/task_test.rs)
C. Live devnet verifier exit (end-to-end)
Minimal PoC patch
Reproduction steps
Observed result on 2026-04-23
Why this is sufficient
Previous75294 bc low the proposer retries an invalid cached parent instead of refreshing recovery stateNext74557 sc low pause blocks verifier nullification but not game resolution
Was this helpful?