Skip to content

ltc/doge: G3a populated-block-production CI gate (non-hollow, LTC parent + DOGE aux) - #870

Merged
frstrtr merged 2 commits into
masterfrom
ltc-doge/ltc-g3a-regtest-gate
Jul 26, 2026
Merged

ltc/doge: G3a populated-block-production CI gate (non-hollow, LTC parent + DOGE aux)#870
frstrtr merged 2 commits into
masterfrom
ltc-doge/ltc-g3a-regtest-gate

Conversation

@frstrtr

@frstrtr frstrtr commented Jul 26, 2026

Copy link
Copy Markdown
Owner

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-production in CI; LTC/DOGE had none.

What was actually missing

PR #679 landed src/impl/ltc/test/g3a_populated_block_regtest_test.cpp — a
populated-block production harness (LTC parent + DOGE merged-aux, all three share
regimes) — but as a standalone int main() with no CMake wiring: it never
built 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 target LtcG3aPopulated.
  • src/impl/ltc/test/g3a_populated_block_regtest_test.cpp — add an assertion
    counter + machine-parseable G3A_ASSERTIONS_PASSED=N summary (invariants unchanged).
  • tests/gates/ltc_g3a_regtest_block_production.sh — DASH/BCH-modeled entrypoint:
    empty-suite guard + G3A_ASSERTIONS_PASSED >= 38 floor + 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)

  • Unmodified (green): G3A_ASSERTIONS_PASSED=38, ALL PASS, exit 0 -> gate PASS.
  • Deliberate break (red): force the populated template to coinbase-only
    (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.yml is NOT in this branch
(pushing token lacks workflow scope). It is staged on the workstation at
/home/ubuntu/g3a-workflow-staging/ltc-gate-g3a-regtest-block-production.yml for
integrator 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.

frstrtr and others added 2 commits July 26, 2026 06:10
…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).
@frstrtr
frstrtr merged commit 3548684 into master Jul 26, 2026
30 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