Skip to content

dgb(D0.5): AUX_DOGE consensus-isolation guard (compile-time + link-time) - #589

Merged
frstrtr merged 2 commits into
masterfrom
dgb/aux-doge-d05-isolation-guard
Jul 2, 2026
Merged

dgb(D0.5): AUX_DOGE consensus-isolation guard (compile-time + link-time)#589
frstrtr merged 2 commits into
masterfrom
dgb/aux-doge-d05-isolation-guard

Conversation

@frstrtr

@frstrtr frstrtr commented Jun 27, 2026

Copy link
Copy Markdown
Owner

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

  • Compile-time (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=ON build links ltc_coin only for the Bitcoin-wire-generic substrate path (a), never for DGB consensus values.
  • Link-time (scripts/ci/dgb_aux_doge_link_isolation_guard.sh): nm -C negative-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)

  • nm -C neg-symbol check: 0 forbidden LTC syms / 11157 dgb::coin:: PASS
  • Rebased clean onto master @062183e11; conflict-free on guard files.

Scope / safety

  • Per-coin isolation invariant upheld: touches src/impl/dgb/ + the DGB CI leg only. No shared bitcoin_family / src/core changes. No consensus-value change.
  • Pairs with the AUX_DOGE dual-parent stretch (D0/DA seam); does not enable it by default.

Commits GPG-signed. Do not self-merge — operator tap.

frstrtr added 2 commits June 27, 2026 21:41
…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.
@frstrtr
frstrtr merged commit 5ac007e into master Jul 2, 2026
37 of 55 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant