ltc/doge: G3a populated-block-production CI gate (non-hollow, LTC parent + DOGE aux) - #870
Merged
Merged
Conversation
…ent + DOGE aux) Wire PR #679 g3a_populated_block_regtest_test.cpp (previously an unbuilt standalone main(), dead to CI) into CMake as the ctest target LtcG3aPopulated, add a machine-parseable G3A_ASSERTIONS_PASSED summary, and add the DASH/BCH-modeled gate script tests/gates/ltc_g3a_regtest_block_production.sh: network-free CI arm via ctest with an empty-suite guard + an assertion-count floor (>=38), plus an opt-in live regtest arm gated on LTC_RPC_PASS+DOGE_RPC_PASS (deterministic skip absent creds). Populated LTC parent (coinbase+P2PKH+P2SH+segwit+MWEB) carries the DOGE aux-coinbase auxpow child; production path proven regime-independent (v35/ HYBRID/v36) on both the LTC parent and DOGE aux dual sinks.
…3a_populated_test Workflow files cannot be pushed over the API token (no workflow scope), so they land here via the SSH remote. Also fixes the drift-guard failure on this branch: ltc_g3a_populated_test is declared in src/impl/ltc/test/CMakeLists.txt but was absent from the build.yml --target allowlist in both the linux and linux-asan jobs (NOT_BUILT risk).
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.
G3a populated-block-production CI gate — LTC parent + DOGE merged-aux
Closes the last per-coin gap where LTC/DOGE trailed the fleet: DASH and BCH both
run a
gate G3a — populated-regtest block-productionin CI; LTC/DOGE had none.What was actually missing
PR #679 landed
src/impl/ltc/test/g3a_populated_block_regtest_test.cpp— apopulated-block production harness (LTC parent + DOGE merged-aux, all three share
regimes) — but as a standalone
int main()with no CMake wiring: it neverbuilt and never ran in CI (dead code). This PR turns it into a real, non-hollow
gate without re-inventing the shape (modeled on
dash-/bch-gate-g3a-*).Changes (per-coin isolation: src/impl/ltc/ + tests/gates/ only; core/version_gate read-only)
src/impl/ltc/test/CMakeLists.txt— new ctest targetLtcG3aPopulated.src/impl/ltc/test/g3a_populated_block_regtest_test.cpp— add an assertioncounter + machine-parseable
G3A_ASSERTIONS_PASSED=Nsummary (invariants unchanged).tests/gates/ltc_g3a_regtest_block_production.sh— DASH/BCH-modeled entrypoint:empty-suite guard +
G3A_ASSERTIONS_PASSED >= 38floor + opt-in live regtest arm(
LTC_RPC_PASS+DOGE_RPC_PASS; deterministic skip absent creds).Populated means populated (criterion #1)
The LTC parent template carries coinbase + P2PKH + P2SH + native-segwit + MWEB
plus the DOGE aux-coinbase auxpow commitment — 6 diverse tx, never coinbase-only.
Merged case stays in G3a (criterion #4)
The #679 harness already models the DOGE aux block as a first-class leg (dual sink:
embedded P2P relay -> submitauxblock->dogecoind fallback), coupled to the LTC parent
solve but never gated by the version regime. So the merged leg belongs in G3a,
not deferred to G3b — matching #679's own scope and the DASH/BCH "both paths" bar.
Non-hollow proof, BOTH directions (criterion #3)
G3A_ASSERTIONS_PASSED=38,ALL PASS, exit 0 -> gate PASS.(
n_tx=1,tx_types=TX_COINBASE) ->G3A_ASSERTIONS_PASSED=18,FAILED (20),exit 1; independently the count guard reds it (18 < floor 38 -> gate exit 3).
Workflow YAML handoff
.github/workflows/ltc-gate-g3a-regtest-block-production.ymlis NOT in this branch(pushing token lacks
workflowscope). It is staged on the workstation at/home/ubuntu/g3a-workflow-staging/ltc-gate-g3a-regtest-block-production.ymlforintegrator to carry over the SSH remote (same as the #867 DOGE-smoke handoff).
Live-regtest arm is opt-in — no testbed-VM blocker
The network-free CI arm carries the gate. The live arm skips deterministically
until an isolated regtest litecoind+dogecoind is wired (the standing G3b-live
testbed-VM standup), so that gap does NOT fence this gate.