Skip to content

G3a: LTC+DOGE populated-block production harness (test-only, regime-independent) - #679

Merged
frstrtr merged 2 commits into
masterfrom
ltc-doge/g3a-populated-block-regtest
Jul 12, 2026
Merged

G3a: LTC+DOGE populated-block production harness (test-only, regime-independent)#679
frstrtr merged 2 commits into
masterfrom
ltc-doge/g3a-populated-block-regtest

Conversation

@frstrtr

@frstrtr frstrtr commented Jul 12, 2026

Copy link
Copy Markdown
Owner

G3a populated-block production harness — LTC parent + DOGE merged-aux

Classification: SAFE-ADDITIVE, test-only, single-coin (LTC). Two new files, zero production/core drift, per-coin isolation preserved.

Diff (vs master, clean rebase — 2 files, +594)

  • src/impl/ltc/test/g3a_populated_block_regtest_test.cpp (+300) — the G3a regtest harness
  • scripts/ltc_g2_crossing_staged_migration_harness.sh (+294) — the G2 three-tier staged-migration crossing harness (carried on this branch)

Isolation

Coverage (38/38 PASS)

  • FOUND -> ASSEMBLED -> ACCEPTED across all three regimes: v35 / v35-v36 HYBRID / v36.
  • Dual-sink exercised on BOTH the LTC parent and the DOGE merged-aux.
  • Auxpow coupling asserted: aux is DROPPED when the parent block is LOST.
  • Populated (not coinbase-only): diverse tx types on both chains.
  • Load-bearing invariant: regime independent of reaches_network on BOTH chains.

Notes

  • I do NOT self-merge; this is for integrator review + operator merge tap.
  • HEAD = 5b0860a (rebased off 85a4a9c to drop a redundant already-in-master rename; test coverage identical).

🔒 GPG-signed (50AB1379).

frstrtr added 2 commits July 12, 2026 12:27
Re-cuts the LTC (+DOGE aux) crossing soak-harness so it lands the moment the
swarm (VM119/120/121) has a target, per integrator UID2071. Mirrors the dgb/dash
G2 harnesses but THREE-TIER per operator 2026-07-03 wire-compat:
  T-A jtoomim v35-only (raw-tx)  T-B p2pool-merged-v36 (python, v36 dest)
  T-C c2pool-ltc (C++, AutoRatchet, DOGE aux embedded)  -- on ONE sharechain.

Staged with the 3301 accept-floor (params.hpp:65), the PR#95 8-byte identifier
(e037d5b8c6923410), and --fresh-ratchet (archives prior ratchet state, never
destroys). Staging: forward natural-fill -> ratchet cross (.37/.38/.39 repoint)
-> reverse. 5 checks: three-tier cohabit, vote-visibility (zero v36-byte leak
into v35 shares), #288 staged accept gate, ratchet+persist+reverse, byte-compat
differential.

Found gap recorded in-script: LTC lacks the dgb/btc AutoRatchet sim/tail-guard/
desired-version KATs its own state machine is the reference for; --sim-votes
rows are [GATED: ltc-ratchet-kats] until those ports land (next milestone). Rig
rows GATED until start-tap frees R1-LTC onto the v36 tier. Deploy-only; natural-
vote hard gate preserved; never force-activates.
…erged-aux)

Standalone host-compilable harness proving FOUND->ASSEMBLED->ACCEPTED is
regime-independent (v35/HYBRID/v36) for BOTH the LTC parent block and the
DOGE aux block it carries. Asserts:
 - populated assembly: 6 diverse tx (coinbase/P2PKH/P2SH/segwit/MWEB/aux-cb),
   never coinbase-only, identical across regimes;
 - LTC dual sink (submit_block_p2p -> submitblock RPC fallback);
 - DOGE aux dual sink (embedded P2P relay -> submitauxblock->dogecoind);
 - merged-mining coupling: aux LOST when parent LOST, aux sinks notwithstanding;
 - load-bearing invariant regime _|_ reaches_network on BOTH chains.

Confined to src/impl/ltc/test; reads core::version_gate SSOT read-only, no
core/bitcoin_family drift. Off the CI allowlist (no #137 trap) until the G3
regtest VM lane is authorized; live leg swaps the sink lambdas for the real
submit paths.
@frstrtr
frstrtr merged commit 1941f77 into master Jul 12, 2026
26 checks passed
@frstrtr
frstrtr deleted the ltc-doge/g3a-populated-block-regtest branch July 12, 2026 14:23
frstrtr added a commit that referenced this pull request Jul 26, 2026
…ent + DOGE aux) (#870)

* ltc/doge: G3a populated-block-production CI gate (non-hollow, LTC parent + 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.

* ci: install LTC G3a populated-regtest gate workflow + allowlist ltc_g3a_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).

---------

Co-authored-by: frstrtr <frstrtr@users.noreply.github.com>
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