Validation: ranking notes
Category notes
The list is dominated by two coherent blocks: chainstate/block-storage integrity fixes (#34132, #35714, #35744, #36149, #35307, plus the P3 error-handling cluster) and undecided soft-fork implementations. I kept the integrity fixes together at P2 and promoted #35307 into that band, since an unrecoverable assumeutxo abort is the same class of failure as the crashes already banded P2. Soft forks stay at P2 as decision items but sit below the concrete correctness and measured-performance work, per the category's note that their weight here is the weight of reaching a decision.
Review order and overlapping PRs
- #35861 (Testnet 5) is stacked on #35793 (BIP 54); #35793 must be reviewed and settled first or the Testnet 5 parameters cannot be evaluated.
- #35646 and #29700 attack the same problem (removing fatal/runtime errors from BlockValidationState / AbortNode) with different mechanisms; a maintainer should pick an approach before either gets line-by-line review. #35570 (returning BlockValidationState by value) touches the same surface and reviewers already flagged the interaction, so it should follow that decision.
- #35731 is an explicit follow-up to #35714 and the author asked that it wait; review #35714 first.
- #34132 and #36280 both address corrupt on-disk records being silently reinterpreted (missing coin vs empty/anyone-can-spend script). Review #34132 first since it sets the general policy for fatal read/deserialization failures; #36280 is the narrower case.
- #36049, #35003, #35714 and #35731 form one block-storage error-handling cluster; deciding the exception-vs-return-value convention (the open architectural question in #35003) governs all of them.
- #31989, #29247, #32247 and #36122 are four undecided soft-fork implementations at the same band; none is blocked by the others, but reviewers should be aware they compete for the same scarce consensus-review attention, and #35793 is the only fork proposal in this list with actual momentum.
- #35557 may be partly superseded by merged #35496 (maflcko's question is unanswered); confirm the remaining delta before spending review time.
- #35906, #36066 and #35187 all push validation toward stateless / side-effect-free checks and will conflict textually and conceptually; #35906 defines the interface direction and should go first.
- #35751 builds on the CoinsViewOverlay from #35295; its value depends on that being in place.
- #36000 (prefetch thread pool ahead of ConnectTip) and #36244 (async block processing worker queue) both restructure how blocks reach ConnectBlock and will collide; #36000 has reproduced benchmarks and a tested ACK, so it should be reviewed first.
Band and position changes
- #36149: moved up: it is the only one of the crash/assert cluster with confirmed reproducers (#31512, #36021) and fuzz verification
- #31989: moved down: grouped with the other undecided soft-fork implementations; the decision value is real but below concrete correctness and performance work
- #29247: moved down: same soft-fork decision-needed grouping as #31989/#32247/#36122
- #36122: moved down: explicitly opened as an experimental companion to the BIPs, the least decision-ready of the soft-fork group
- #35307: raised to P2: an unrecoverable abort / false corruption error requiring reindex is the same class of chainstate-integrity failure as #35744 and #36149, which sit at P2
- #36280: moved up: corrupt records silently becoming anyone-can-spend is the most consensus-relevant of the corruption-handling P3s, pairs with #34132
- #35938: moved up: prevents irreversible loss of otherwise recoverable block data, ranked with the other data-integrity P3s
- #35646: moved down slightly: overlaps #29700 and needs an approach decision before either is worth deep line review
- #35751: moved up: a measured ~10% win on a real workload ranks above the untested cleanups it was sitting among
- #36231: moved up: consensus/pow regression coverage grouped with the other test-vector PRs
- #33324: moved down: one-off optional migration, below the correctness and performance P3s
- #34534: moved up: an actual user-facing capability for pruned-node operators outranks the pure cleanups below it
- #33854: moved down: reviewers dispute that the rare interrupted-IBD case justifies the complexity, lowering confidence in the benefit
- #35569: moved down: broad churn in consensus-critical code whose only payoff is speculative future work, and the concept itself is disputed
About
This pass by claude-opus-5 on 2026-09-17 saw every PR in the category at once and checked the bands given to each PR alone against each other, ordered the PRs, and noted chains and overlaps. Back to the category.