P1 after comparing with the other PRs here (assessed alone as P2): Raised to P1: the only PR fixing a concrete reported data race (#36515) in the interface external miners already use; leaving it at P2 with the feature PRs would flatten a correctness bug into the same level as enhancements.
P2 because it fixes a data race when concurrent IPC worker threads access templates during block submission
Improves stability and completeness of the mining interface relied on by external Stratum v2 clients
P2 because it stops full block assembly and lock acquisition on every tick during template polling
Significantly cuts CPU usage and lock contention for miners waiting on template updates
Ranking pass: Root of the BlockTemplateManager chain (#33922, #36356, #36357 build on it) as well as a measurable CPU/lock-contention win for template polling.
Worth reviewing now despite conflict with master, as the needed rebase is mechanical
P3 because benign shutdown during mining calls triggers false internal bug assertions
Affects miners using getblocktemplate or longpolling while stopping the node
Ranking pass: Moved up: it is the only fix for a user-reported failure (#34262) miners hit in normal operation, so it leads the P3 block ahead of tooling and refactors.
Ready to review
No review verdicts recorded
No reviews or discussion yet
No substantive feedback either way
6 lines added or modified outside tests
34 lines added or modified in tests
4 lines removed in total
2 files, 1 commits
(+)#36367Bruce039mempool: keep prioritisetransaction deltas within MAX_MONEY
P3 because it stops template generation from dropping prioritised transactions due to corrupted chunk fees
Impact is limited because triggering it requires unrealistic fee deltas far exceeding MAX_MONEY
Ranking pass: Moved up: signed-overflow UB that silently drops prioritised transactions from templates is a template-correctness issue, ranking above cleanups and tests despite the unrealistic trigger.
Ready for review
No obstacles or pending changes known that would invalidate review
No review verdicts recorded
No substantive comments or reviews yet
Awaiting initial review
11 lines added or modified outside tests
29 lines added or modified in tests
3 lines removed in total
3 files, 1 commits
(+)#36356w0xltmining: move getblocktemplate cache into BlockTemplateManager
P3 · cleanup
Ready
0
Strong
71 + 66 tests
Tie mining template cache lifetimes to the node context rather than process-scoped static state
Prevent cached block pointers from outliving chainstate managers and enable template invalidation unit tests
P4 after comparing with the other PRs here (assessed alone as P3): Lowered to P4: reviewers confirm the no-mempool lookup path is unreachable in production, making it a contract-consistency tidy-up on par with #36451 rather than a real bug fix.
P3 because callers relying on positional indexing get consistent results without a mempool
The benefit is minor since current production paths do not encounter lookups without a mempool
Block template construction and everything a miner or pool interacts with: the block assembler, getblocktemplate and related RPCs, the Mining interface and its IPC exposure, template update logic (fee inflow, new tip, waitNext), the bitcoin-mine program, and the tests for these. A mining PR that adds or changes an interfaces::Mining method or its capnp definition is mining first and ipc second. The Mining label is a strong prior.
Not mining: general IPC infrastructure that the mining interface happens to use (that is ipc); mempool policy that affects which transactions are eligible (that is mempool).
What matters here
Template validity above all: a template that produces an invalid block loses the block reward. Then correctness of fee and weight accounting, and of template updates as the mempool and tip change. Then latency and resource use of template generation, which pools feel per block. Then completeness and stability of the interface external miners build on (Stratum v2 template providers are the current consumer). Then developer-facing tooling.
Changes whose benefit is a small fraction of a block's fees, weighed against any risk of invalidity, rank low; say so with the numbers when the discussion has them.
Every band, state, and summary on this page is model output against a written category definition, shown with its rationale. It is an unofficial tool and does not speak for the project. Click a row to expand it. The category definition lives in ryanofsky/prio-bitcoin/categories/mining.md; pull requests that improve it are welcome.