nmc(PE-2d): submit_aux_block surfaces false in embedded mode (no silent success) - #253
Merged
Merged
Conversation
…nt success) The embedded submitauxblock RPC leg has no daemon to RPC and is not a same-process fallback like BTC submitblock-to-bitcoind, so it cannot itself broadcast and must not claim success. Return false, mirroring submit_block() never-silent-drop (#162); the P2P relay via submit_block() is the one authoritative embedded route. Updates the fallback-leg KAT to assert false (supersedes integrator note #3 per UID1610) while keeping the distinct no-cache invariant. Punch-list item (2) of the 2d broadcaster gate; item (1) host m_block_relay wiring + #251 won-block un-gate stay queued behind the #247/#251 tap.
frstrtr
added a commit
that referenced
this pull request
Jun 20, 2026
…te P2P won-block from 2d Per integrator design call (2026-06-20): embedded mode relies SOLELY on P2P relay for won-block propagation. submit_aux_block() is intentionally inert in-process (mirrors doge embedded path), so LEG 1 (submitauxblock) is external-RPC-deployment-only / N/A in the embedded soak -- never driven here. The dual-path submitblock fallback stays a DEPLOYMENT-level gate, kept explicit. LEG 2 (P2P primary) is the live embedded won-block route and is UN-GATED from 2d (#247/#253/#254 landed on master 294fb30). The end-to-end assert fires once the in-loop c2pool embedded regtest process drives node A -- next slice. Recut off origin/master (294fb30); scripts-only, fenced to scripts/.
frstrtr
added a commit
that referenced
this pull request
Jun 20, 2026
…te P2P won-block from 2d Per integrator design call (2026-06-20): embedded mode relies SOLELY on P2P relay for won-block propagation. submit_aux_block() is intentionally inert in-process (mirrors doge embedded path), so LEG 1 (submitauxblock) is external-RPC-deployment-only / N/A in the embedded soak -- never driven here. The dual-path submitblock fallback stays a DEPLOYMENT-level gate, kept explicit. LEG 2 (P2P primary) is the live embedded won-block route and is UN-GATED from 2d (#247/#253/#254 landed on master 294fb30). The end-to-end assert fires once the in-loop c2pool embedded regtest process drives node A -- next slice. Recut off origin/master (294fb30); scripts-only, fenced to scripts/.
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.
What
Embedded
submit_aux_block()returned an unconditionaltrue. The submitauxblock RPC route is external-namecoind-only and is not a same-process fallback like BTC submitblock-to-bitcoind, so the embedded RPC leg cannot itself broadcast and must not claim success. It now returns false, mirroringsubmit_block()never-silent-drop (#162). The P2P relay viasubmit_block()is the one authoritative embedded route.Why
Integrator UID1610 ratified this as a hard blocker for 2e: a won-block soak that asserts green while zero broadcast occurred is green-by-construction — the precise failure the broadcaster gate exists to catch. This supersedes integrator note #3.
Scope / fence
src/impl/nmc/(coin impl + KAT). No core, no host, no build.yml change.SubmitAuxBlockFallbackLegIsDistinctFromP2PRelay→SubmitAuxBlockRpcLegSurfacesFalseInEmbeddedMode, asserts false, keeps the distinct no-cache invariant.nmc_template_builder_test: 17/17 PASS.Sequencing
This is punch-list item (2) of the 2d broadcaster gate, landed early off master (non-colliding with the tap-gated #247/#251). Punch-list item (1) host
m_block_relay→CoinBroadcaster wiring + #251 won-block un-gate stay queued behind the #247/#251 operator tap. Cut off origin/master, not stacked. I do not self-merge.