Skip to content

Commit 1cdf451

Browse files
committed
nmc(underfill): split KAT into standalone nmc_underfill_guard_test target + build.yml allowlist
Mirror btc/dash/dgb *_underfill_guard_test symmetry: the NMC underfill guard KAT was compiled into the allowlisted nmc_template_builder_test target to dodge the workflow-scope wall. Register it as its own nmc_underfill_guard_test CMake target and add it to the build.yml ctest --target allowlist (both build blocks) so the drift-guard stays green.
1 parent 7791eb9 commit 1cdf451

2 files changed

Lines changed: 24 additions & 14 deletions

File tree

.github/workflows/build.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ jobs:
123123
test_mweb_builder \
124124
test_address_resolution test_compute_share_target test_web_honesty_regression \
125125
test_utxo test_dgb_subsidy test_dgb_coinbase_value dgb_share_test dgb_redistribute_test dgb_block_assembly_test dgb_witness_commitment_test dgb_header_sample_build_test dgb_header_ingest_test dgb_mempool_ingest_test \
126-
dgb_gentx_coinbase_test dgb_connection_coinbase_test dgb_pplns_payout_split_test nmc_auxpow_merkle_test nmc_template_builder_test nmc_auxpow_wire_test nmc_reconstruct_won_block_test nmc_mempool_name_test nmc_block_broadcast_test nmc_host_dualpath_test nmc_fallback_path_conformance_test dgb_gentx_share_path_test dgb_conn_pplns_producer_test dgb_other_tx_resolver_test \
126+
dgb_gentx_coinbase_test dgb_connection_coinbase_test dgb_pplns_payout_split_test nmc_auxpow_merkle_test nmc_template_builder_test nmc_underfill_guard_test nmc_auxpow_wire_test nmc_reconstruct_won_block_test nmc_mempool_name_test nmc_block_broadcast_test nmc_host_dualpath_test nmc_fallback_path_conformance_test dgb_gentx_share_path_test dgb_conn_pplns_producer_test dgb_other_tx_resolver_test \
127127
dgb_other_tx_assembler_test dgb_reconstruct_won_block_test dgb_reconstruct_closure_test dgb_gentx_unpack_test dgb_work_source_test dgb_template_builder_test dgb_embedded_coin_node_test dgb_embedded_tx_select_test dgb_template_other_txs_test dgb_coinbase_value_parity_test dgb_submit_classify_test dgb_aux_parent_coinbase_parity_test dgb_template_capture_test dgb_aux_doge_db_commitment_bind_test dgb_aux_doge_mm_commitment_test dgb_aux_doge_dc_proof_test dgb_aux_doge_bind_parsers_test dgb_compact_blocks_bip152_parity_test dgb_aux_dual_target_select_test dgb_aux_broadcast_path_election_test dgb_aux_doge_submit_test dgb_aux_doge_embed_livewire_test dgb_aux_doge_dc_layout_verifier_test \
128128
rpc_request_test softfork_check_test genesis_check_test algo_select_test digishield_walk_test header_chain_test \
129129
dgb_coin_node_seam_test dgb_block_broadcast_test dgb_won_block_dispatch_test dgb_forced_won_share_dualpath_test dgb_scrypt_pow_test dgb_nonce_grinder_test dgb_regrind_block_test dgb_won_block_finalize_test dgb_share_target_genesis_test dgb_share_target_retarget_test dgb_share_bits_oracle_pin_test dgb_pool_msg_wire_test dgb_get_shares_walk_test dgb_download_stops_test dgb_think_p1_walk_bounds_test dgb_think_p1_desired_emit_test dgb_think_p6_desired_cutoff_test dgb_think_p4_head_keys_test dgb_think_p3_best_head_test dgb_g1_oracle_byte_parity_test dgb_think_p2_walk_bounds_test dgb_expected_time_to_block_test dgb_tail_score_endpoints_test dgb_pool_attempts_per_second_test dgb_pool_efficiency_test dgb_think_p5_best_share_punish_test dgb_auto_ratchet_tail_guard_test dgb_auto_ratchet_sim_test dgb_binomial_conf_interval_test dgb_desired_version_tally_test dgb_min_protocol_ratchet_test dgb_get_height_and_last_endpoints_test dgb_chain_walk_window_test dgb_redistribute_delegate_ghal_test dgb_share_weight_decay_test dgb_naughty_propagation_test dgb_hash_format_parity_test dgb_emergency_decay_saturation_test dgb_arith256_muldiv_kat_test v37_test \
@@ -280,7 +280,7 @@ jobs:
280280
test_mweb_builder \
281281
test_address_resolution test_compute_share_target test_web_honesty_regression \
282282
test_utxo test_dgb_subsidy test_dgb_coinbase_value dgb_share_test dgb_redistribute_test dgb_block_assembly_test dgb_witness_commitment_test dgb_header_sample_build_test dgb_header_ingest_test dgb_mempool_ingest_test \
283-
dgb_gentx_coinbase_test dgb_connection_coinbase_test dgb_pplns_payout_split_test nmc_auxpow_merkle_test nmc_template_builder_test nmc_auxpow_wire_test nmc_reconstruct_won_block_test nmc_mempool_name_test nmc_block_broadcast_test nmc_host_dualpath_test nmc_fallback_path_conformance_test dgb_gentx_share_path_test dgb_conn_pplns_producer_test dgb_other_tx_resolver_test \
283+
dgb_gentx_coinbase_test dgb_connection_coinbase_test dgb_pplns_payout_split_test nmc_auxpow_merkle_test nmc_template_builder_test nmc_underfill_guard_test nmc_auxpow_wire_test nmc_reconstruct_won_block_test nmc_mempool_name_test nmc_block_broadcast_test nmc_host_dualpath_test nmc_fallback_path_conformance_test dgb_gentx_share_path_test dgb_conn_pplns_producer_test dgb_other_tx_resolver_test \
284284
dgb_other_tx_assembler_test dgb_reconstruct_won_block_test dgb_reconstruct_closure_test dgb_gentx_unpack_test dgb_work_source_test dgb_template_builder_test dgb_embedded_coin_node_test dgb_embedded_tx_select_test dgb_template_other_txs_test dgb_coinbase_value_parity_test dgb_submit_classify_test dgb_aux_parent_coinbase_parity_test dgb_template_capture_test dgb_aux_doge_db_commitment_bind_test dgb_aux_doge_mm_commitment_test dgb_aux_doge_dc_proof_test dgb_aux_doge_bind_parsers_test dgb_compact_blocks_bip152_parity_test dgb_aux_dual_target_select_test dgb_aux_broadcast_path_election_test dgb_aux_doge_submit_test dgb_aux_doge_embed_livewire_test dgb_aux_doge_dc_layout_verifier_test \
285285
rpc_request_test softfork_check_test genesis_check_test algo_select_test digishield_walk_test header_chain_test \
286286
dgb_coin_node_seam_test dgb_block_broadcast_test dgb_won_block_dispatch_test dgb_forced_won_share_dualpath_test dgb_scrypt_pow_test dgb_nonce_grinder_test dgb_regrind_block_test dgb_won_block_finalize_test dgb_share_target_genesis_test dgb_share_target_retarget_test dgb_share_bits_oracle_pin_test dgb_pool_msg_wire_test dgb_get_shares_walk_test dgb_download_stops_test dgb_think_p1_walk_bounds_test dgb_think_p1_desired_emit_test dgb_think_p6_desired_cutoff_test dgb_think_p4_head_keys_test dgb_think_p3_best_head_test dgb_g1_oracle_byte_parity_test dgb_think_p2_walk_bounds_test dgb_expected_time_to_block_test dgb_tail_score_endpoints_test dgb_pool_attempts_per_second_test dgb_pool_efficiency_test dgb_think_p5_best_share_punish_test dgb_auto_ratchet_tail_guard_test dgb_auto_ratchet_sim_test dgb_binomial_conf_interval_test dgb_desired_version_tally_test dgb_min_protocol_ratchet_test dgb_get_height_and_last_endpoints_test dgb_chain_walk_window_test dgb_redistribute_delegate_ghal_test dgb_share_weight_decay_test dgb_naughty_propagation_test dgb_hash_format_parity_test dgb_emergency_decay_saturation_test dgb_arith256_muldiv_kat_test test_coin_broadcaster test_multiaddress_pplns test_pplns_stress \

src/impl/nmc/test/CMakeLists.txt

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,25 +27,34 @@ if (BUILD_TESTING AND GTest_FOUND)
2727
# P1 PC: embedded template builder KATs. Header-only builder
2828
# (template_builder.hpp / rpc_data.hpp); links the same SCC the sibling
2929
# merkle test does (core + nmc_coin for the out-of-line transaction ctor).
30-
#
31-
# nmc_underfill_guard_test.cpp: port of the LTC/DOGE "near-empty template
32-
# on a non-empty mempool" template-builder guard to the NMC embedded
33-
# template path (coin/template_builder.hpp), matching the BTC port
34-
# (test/test_btc_underfill_guard.cpp). Predicate KATs at the pinned 50 kB
35-
# floor/slack + build_template wiring via the SAFE-ADDITIVE
36-
# underfill_tripped seam (log-only guard; GBT projection asserted
37-
# unchanged). Compiled INTO this already-allowlisted target (second
38-
# source; gtest_add_tests AUTO scans all target sources) so no build.yml
39-
# --target allowlist edit is needed — a NEW target absent from that
40-
# allowlist reds master as a NOT_BUILT sentinel (the #724/#728 lesson).
41-
add_executable(nmc_template_builder_test nmc_template_builder_test.cpp nmc_underfill_guard_test.cpp)
30+
# The underfill guard KAT that used to be compiled into this target now
31+
# lives in its own nmc_underfill_guard_test target below (btc/dash/dgb symmetry).
32+
add_executable(nmc_template_builder_test nmc_template_builder_test.cpp)
4233
target_link_libraries(nmc_template_builder_test PRIVATE
4334
GTest::gtest_main GTest::gtest
4435
core nlohmann_json::nlohmann_json)
4536
target_link_libraries(nmc_template_builder_test PRIVATE
4637
c2pool_payout c2pool_merged_mining c2pool_hashrate c2pool_storage)
4738
target_link_libraries(nmc_template_builder_test PRIVATE nmc_coin)
4839

40+
# nmc_underfill_guard_test: port of the LTC/DOGE "near-empty template on a
41+
# non-empty mempool" template-builder guard to the NMC embedded template
42+
# path (coin/template_builder.hpp), matching the BTC/DGB/DASH ports. Predicate
43+
# KATs at the pinned 50 kB floor/slack + build_template wiring via the
44+
# SAFE-ADDITIVE underfill_tripped seam (log-only guard; GBT projection asserted
45+
# unchanged). Standalone target mirroring btc/dash/dgb *_underfill_guard_test
46+
# for symmetry; same SCC as the sibling template_builder test (core + nmc_coin
47+
# for the out-of-line transaction ctor). MUST be listed in the build.yml
48+
# --target allowlist below (a registered target absent from that allowlist
49+
# reds master as a NOT_BUILT sentinel: the #724/#728 lesson).
50+
add_executable(nmc_underfill_guard_test nmc_underfill_guard_test.cpp)
51+
target_link_libraries(nmc_underfill_guard_test PRIVATE
52+
GTest::gtest_main GTest::gtest
53+
core nlohmann_json::nlohmann_json)
54+
target_link_libraries(nmc_underfill_guard_test PRIVATE
55+
c2pool_payout c2pool_merged_mining c2pool_hashrate c2pool_storage)
56+
target_link_libraries(nmc_underfill_guard_test PRIVATE nmc_coin)
57+
4958
# P1 card 237: wire-vector KAT. Round-trips the canonical CAuxPow layout
5059
# against a REAL Namecoin mainnet block (757000). Same SCC as the sibling
5160
# tests (core + nmc_coin for the out-of-line MutableTransaction ctor).
@@ -121,6 +130,7 @@ if (BUILD_TESTING AND GTest_FOUND)
121130
include_directories(${gtest_SOURCE_DIR}/include ${gtest_SOURCE_DIR})
122131
gtest_add_tests(nmc_auxpow_merkle_test "" AUTO)
123132
gtest_add_tests(nmc_template_builder_test "" AUTO)
133+
gtest_add_tests(nmc_underfill_guard_test "" AUTO)
124134
gtest_add_tests(nmc_auxpow_wire_test "" AUTO)
125135
gtest_add_tests(nmc_reconstruct_won_block_test "" AUTO)
126136
gtest_add_tests(nmc_mempool_name_test "" AUTO)

0 commit comments

Comments
 (0)