Skip to content

ci: generic test-allowlist drift-guard (NOT_BUILT fail-closed) - #266

Merged
frstrtr merged 1 commit into
masterfrom
ci/test-allowlist-drift-guard
Jun 20, 2026
Merged

ci: generic test-allowlist drift-guard (NOT_BUILT fail-closed)#266
frstrtr merged 1 commit into
masterfrom
ci/test-allowlist-drift-guard

Conversation

@frstrtr

@frstrtr frstrtr commented Jun 20, 2026

Copy link
Copy Markdown
Owner

Standalone, build-free CI job + tools/ci/check_test_target_allowlist.py that fails closed when a per-coin test executable declared in src/impl//test/CMakeLists.txt is absent from the build.yml --target allowlist.

Why: such a target is never compiled, so CTest reports it NOT_BUILT and silently passes — the DGB #137 / test_dgb_subsidy class that red'd master at 4284fda. This guards that failure mode at PR time.

Scope (per integrator green-light):

  • Generic across ALL coin lanes (bch/btc/dgb/ltc/nmc), not nmc-only.
  • Single new CI step, no src reach (diff = build.yml + tools/ci/ only).
  • Expands foreach(t IN LISTS VAR) + add_executable(prefix_\${t}) generators (bch ABLA + embedded-body suites).
  • Escape hatch for intentionally-unbuilt targets: # ci-allowlist-exempt: <target> -- <reason>.

Verification:

  • Clean master: OK — audits 48 targets across 5 lanes, all present (zero drift).
  • Negative test (phantom add_executable): correctly FAILS exit 1.
  • Exemption path: marker suppresses → OK.

Touches shared build.yml → operator-tap, not auto-merge/fenced lane.

Add tools/ci/check_test_target_allowlist.py + a standalone, build-free CI job
that fails closed when a per-coin test executable declared in
src/impl/<coin>/test/CMakeLists.txt is absent from the build.yml --target
allowlist. Such a target is never compiled, so CTest reports it NOT_BUILT and
silently passes -- the DGB #137 / test_dgb_subsidy class that red'd master.

Generic across all coin lanes (bch/btc/dgb/ltc/nmc); expands foreach(t IN LISTS
VAR) + add_executable(prefix_${t}) generators. Escape hatch for intentionally
unbuilt targets: # ci-allowlist-exempt: <target> -- <reason>. Currently audits
48 targets across 5 lanes, all present (zero drift).
@frstrtr
frstrtr merged commit a16603b into master Jun 20, 2026
19 checks passed
frstrtr added a commit that referenced this pull request Jul 26, 2026
…->v36 flip (#876)

Pins the donation script SSOT (core::donation::get_donation_script) byte-for-byte
on both legs: v<36 = 67-byte BCH current-mainnet forrestv P2PK (guarded against a
silent LTC/DASH-copied vector via the pubkey-prefix identity check), v>=36 =
23-byte combined 1-of-2 P2SH. Boundary pinned EXACTLY at version 36 (no off-by-one
byte-offset-104 GENTX divergence). Guards the only G2-ratchet failure mode that is
silent and reward-losing. Header-only, rig-free, gate-logic untouched.

Wired into BCH_ABLA_TESTS and both build.yml COIN_BCH target lists; local ctest
#266 PASS.

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