dgb(D0.5): AUX_DOGE consensus-isolation guard (compile-time + link-time) - #589
Merged
Conversation
…GE seam Freeze the DGB-as-parent isolation invariant into a compile-time check. The -DAUX_DOGE=ON build links ltc_coin (substrate path (a)) for Bitcoin-wire-generic value/serialization types only; the LTC consensus surface (HeaderChain, make_ltc_chain_params_mainnet/testnet, scrypt pow, Art-Forz retarget) stays present-but-dead at link and must never reach the DGB-parent live call path. - aux_doge_isolation_guard.hpp: assert the DGB-parent witness-strip trait resolves to dgb::coin::TxParams (DGB's own consensus params), not bitcoin_family's default that LTC/DASH inherit, and that the DGB parent coinbase type is distinct from ltc::coin's. - node.hpp: assert AuxDogeParse carries CAuxPow<dgb::coin::MutableTransaction> (DGB-parent-pinned), enforced in the production dgb object library, never the shared module's ltc default. Link-time half (CMake POST_BUILD nm -C negative-symbol check on c2pool-dgb) staged as fast-follow; it needs an AUX_DOGE build slot to validate the demangled-symbol grep.
Link-level companion to the compile-time aux_doge_isolation_guard.hpp. nm -C negative-symbol check on the AUX_DOGE c2pool-dgb binary: hard-fail if the DGB parent ODR-uses any LTC per-coin consensus symbol (make_ltc_chain_params / ltc::coin::HeaderChain / ltc::coin::ChainParams), with a dgb::coin:: positive control so it cannot pass vacuously on a wrong/stripped binary. Wired as a post-build step in the COIN_DGB+AUX_DOGE CI job. ltc::coin wire-generic types (header-only/inlined, no symbols) are out of scope by design -- a wire-type relocation is caught by the D0-seam flag protocol, not this link guard.
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.
D0.5 — AUX_DOGE per-coin consensus-isolation guard
Fenced, additive, no consensus-value change. Surfaced as its own PR per integrator guidance so it is tappable in parallel with #556 (not serialized behind it).
What it does
src/impl/dgb/coin/aux_doge_isolation_guard.hpp): asserts the DGB-parent witness-strip trait holds on the AUX_DOGE seam; the-DAUX_DOGE=ONbuild links ltc_coin only for the Bitcoin-wire-generic substrate path (a), never for DGB consensus values.scripts/ci/dgb_aux_doge_link_isolation_guard.sh):nm -Cnegative-symbol check on the AUX_DOGE c2pool-dgb binary; hard-fails on any forbidden LTC consensus symbol or a wrong/stripped binary. Wired as a post-build step in the COIN_DGB+AUX_DOGE CI leg (.github/workflows/build.yml).src/impl/dgb/coin/node.hpp: guard include at the AUX_DOGE seam.Evidence (pre-rebase, validated)
Scope / safety
src/impl/dgb/+ the DGB CI leg only. No shared bitcoin_family / src/core changes. No consensus-value change.Commits GPG-signed. Do not self-merge — operator tap.