Repository navigation
confirm: walk past taken BQ hole; loadq=14 writeq=14 - #137
Merged
Merged
Conversation
take_raw removes the BQ row, so unresolved_heights starting at tip+1 treated the taken prefix as a fetch hole and lookup idled after one wave. Start the walk after lookup_taken_hi; a missing height above that high-water still stops. Queue caps match the running host knobs (14/4/14).
format_info / format_debug / format_sizes pin the live default cap.
average-gary
added a commit
to average-gary/rbitcoin
that referenced
this pull request
Oct 7, 2026
Plan D lands on top of sv2/plan-c-fee-push (reardencode reardencode#949, reardencode#951), which supplies the Arc<Transaction> template bodies and the 64-slot same-tip retention that validated jobs now rely on instead of a pin. Readers coming from sv2-spec discussion reardencode#239 also get the pointer to the Core-IPC implementation of the same messages (sv2-tp reardencode#137). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
average-gary
added a commit
to average-gary/rbitcoin
that referenced
this pull request
Oct 9, 2026
Plan D lands on top of sv2/plan-c-fee-push (reardencode reardencode#949, reardencode#951), which supplies the Arc<Transaction> template bodies and the 64-slot same-tip retention that validated jobs now rely on instead of a pin. Readers coming from sv2-spec discussion reardencode#239 also get the pointer to the Core-IPC implementation of the same messages (sv2-tp reardencode#137). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
average-gary
added a commit
to average-gary/rbitcoin
that referenced
this pull request
Oct 9, 2026
sv2-spec#239 settled on the JDP shape for the missing-transactions leg (Sjors, 2026-10-08): the TP asks with a proper message and the JDS answers with one, reusing the 6.4.7 and 6.4.8 layouts under TDP numbers, and the TP holds the pending proposal. ProposeTemplate drops transaction_list; ProposeTemplate.MissingTransactions becomes ProvideMissingTransactions (0x78, TP to client) and ProvideMissingTransactions.Success (0x7b, client to TP) carries the txs. A JDS copies both payloads between the TP and its JDC unchanged. The session keeps a proposal it answered ProvideMissingTransactions under its request_id (wtxids and coinbase split, no transactions) in a table of at most MAX_PENDING_PROPOSALS (8) for provide_timeout (30 s, Sv2TpConfig like setup_timeout); past the bound the oldest is dropped. A provide for an id it does not hold, already consumed, or expired is ProposeTemplate.Error unknown-request-id; a proposal under an id still queued, in flight, or held is duplicate-request-id; a provide short of a requested position, with a tx the TP did not ask for, or with one that does not decode is bad-missing-tx and ends that exchange, the first two before any decode. These edge rules match sv2-tp reardencode#137. A validation that still lacks a transaction (one left the mempool between rounds) asks again for every position the mempool does not hold, the supplied ones included, since the TP holds no transactions across the round trip. The client frame cap moves the block-sized bound onto ProvideMissingTransactions.Success (~4.2 MB); ProposeTemplate drops to wtxids plus coinbase (~2.3 MB). Red was the compile failure of the journeys against the one-message shape (no pending table, no 0x7b handler; the old session ignored 0x7b), then a short provide answered ProvideMissingTransactions again and a ProposeTemplate under an in-flight id validated twice. The missing-transactions journey walks the round trip, each code, the bound, and expiry under a 1 s provide_timeout; the D11 journey completes each copy through its provide and refuses the in-flight duplicate. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
average-gary
added a commit
to average-gary/rbitcoin
that referenced
this pull request
Oct 9, 2026
Plan D lands on top of sv2/plan-c-fee-push (reardencode reardencode#949, reardencode#951), which supplies the Arc<Transaction> template bodies and the 64-slot same-tip retention that validated jobs now rely on instead of a pin. Readers coming from sv2-spec discussion reardencode#239 also get the pointer to the Core-IPC implementation of the same messages (sv2-tp reardencode#137). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
average-gary
added a commit
to average-gary/rbitcoin
that referenced
this pull request
Oct 9, 2026
sv2-spec#239 settled on the JDP shape for the missing-transactions leg (Sjors, 2026-10-08): the TP asks with a proper message and the JDS answers with one, reusing the 6.4.7 and 6.4.8 layouts under TDP numbers, and the TP holds the pending proposal. ProposeTemplate drops transaction_list; ProposeTemplate.MissingTransactions becomes ProvideMissingTransactions (0x78, TP to client) and ProvideMissingTransactions.Success (0x7b, client to TP) carries the txs. A JDS copies both payloads between the TP and its JDC unchanged. The session keeps a proposal it answered ProvideMissingTransactions under its request_id (wtxids and coinbase split, no transactions) in a table of at most MAX_PENDING_PROPOSALS (8) for provide_timeout (30 s, Sv2TpConfig like setup_timeout); past the bound the oldest is dropped. A provide for an id it does not hold, already consumed, or expired is ProposeTemplate.Error unknown-request-id; a proposal under an id still queued, in flight, or held is duplicate-request-id; a provide short of a requested position, with a tx the TP did not ask for, or with one that does not decode is bad-missing-tx and ends that exchange, the first two before any decode. These edge rules match sv2-tp reardencode#137. A validation that still lacks a transaction (one left the mempool between rounds) asks again for every position the mempool does not hold, the supplied ones included, since the TP holds no transactions across the round trip. The client frame cap moves the block-sized bound onto ProvideMissingTransactions.Success (~4.2 MB); ProposeTemplate drops to wtxids plus coinbase (~2.3 MB). Red was the compile failure of the journeys against the one-message shape (no pending table, no 0x7b handler; the old session ignored 0x7b), then a short provide answered ProvideMissingTransactions again and a ProposeTemplate under an in-flight id validated twice. The missing-transactions journey walks the round trip, each code, the bound, and expiry under a 1 s provide_timeout; the D11 journey completes each copy through its provide and refuses the in-flight duplicate. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
After
loadq, lookuptake_raws the BQ row when it emits a batch. The nextblock_queue_unresolved_heights(path_lo=tip+1)saw a hole at tip+1 and returned empty, so lookup idled after one wave (~18–25 fat blocks). Scripts sat atscriptq=1while 200+ later heights sat on the BQ. Host rate at 932–943k dropped ~6.2/s → ~4.4/s.What
max(path_lo, lookup_taken_hi+1). A missing height above that high-water is still a fetch hole.unresolved_heights_walks_past_taken_bq_hole(store walker unchanged).Test