iuna

iuna

iuna - experimental mainnet-candidate protocol
git clone https://getiuna.org/git/iuna.git
Log | Files | Refs | README | LICENSE

commit d1bd82718b86d90f9d9b3d64462a7aa7f6a06f54
parent e82c90b62af25f6a2c40834d5ede8027f8948542
Author: Joris Hartog <jorishartog@hotmail.com>
Date:   Fri, 21 Aug 2026 14:23:03 +0200

Move long adversarial tests out of pre-commit

Diffstat:
M.githooks/pre-commit | 6+++++-
Mdeployment.sh | 1+
Msrc/domain/adversarial_tests.rs | 18++++++++++++++++++
3 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/.githooks/pre-commit b/.githooks/pre-commit @@ -3,4 +3,8 @@ set -euo pipefail cargo fmt -- --check cargo clippy --all-targets --all-features -- -D warnings -cargo test +cargo test --lib -- \ + --skip domain::adversarial_tests:: \ + --skip adapters::p2p:: \ + --skip domain::vdf::arithmetic::tests::optimized_nudupl_matches_kyn_across_sequential_squares \ + --skip domain::vdf::limb_arithmetic::tests::limb_nudupl_matches_kyn_across_sequential_squares diff --git a/deployment.sh b/deployment.sh @@ -87,6 +87,7 @@ run_release_tests() { validate_positive_integer IUNA_VDF_FUZZ_RUNS "$vdf_fuzz_runs" cargo test --locked + cargo test --locked domain::adversarial_tests:: -- --ignored cargo check --locked --manifest-path fuzz/Cargo.toml cargo run --locked --manifest-path fuzz/Cargo.toml --bin p2p_envelope -- -runs="$fuzz_runs" fuzz/corpus/p2p_envelope cargo run --locked --manifest-path fuzz/Cargo.toml --bin compact_snapshot -- -runs="$fuzz_runs" fuzz/corpus/compact_snapshot diff --git a/src/domain/adversarial_tests.rs b/src/domain/adversarial_tests.rs @@ -2093,6 +2093,7 @@ fn committee_roots_are_unique(committee: &[BurnCommitteeMember]) -> bool { } #[test] +#[ignore = "long-running adversarial reward split coverage; run via deployment.sh"] fn rank_zero_reward_is_credited_to_finalizer_and_extra_committee_members() { let mut harness = Harness::new(91, 50, 50, AdversaryStrategy::Honest); harness.mature_lineages(2, 2); @@ -2157,6 +2158,7 @@ proptest! { #![proptest_config(Config { cases: 32, .. Config::default() })] #[test] + #[ignore = "long-running adversarial proptest; run via deployment.sh"] fn required_attested_burn_must_be_included(seed in any::<u64>(), burn_idx in 0usize..LEVELS.len()) { let mut harness = harness_for_percent(seed, LEVELS[burn_idx]); let leader = harness.next_rank(0); @@ -2191,6 +2193,7 @@ proptest! { } #[test] + #[ignore = "long-running adversarial proptest; run via deployment.sh"] fn timing_and_vdf_mutations_are_rejected(seed in any::<u64>(), rank in 1usize..3) { let mut harness = harness_for_percent(seed, 25); let leader = harness.next_rank(rank); @@ -2221,6 +2224,7 @@ proptest! { } #[test] + #[ignore = "long-running adversarial proptest; run via deployment.sh"] fn committee_selection_is_deterministic_and_sybil_resistant(seed in any::<u64>(), lineage_idx in 0usize..LEVELS.len()) { let mut harness = Harness::new(seed, 10, LEVELS[lineage_idx], AdversaryStrategy::AddressRotation); harness.mature_lineages(2, 4); @@ -2239,6 +2243,7 @@ proptest! { } #[test] + #[ignore = "long-running adversarial state-machine proptest; run via deployment.sh"] fn adversarial_state_machine_keeps_invalid_paths_out( seed in any::<u64>(), strategy_idx in 0usize..10, @@ -2571,6 +2576,7 @@ fn misused_or_extra_committee_bundle_is_rejected() { } #[test] +#[ignore = "long-running committee quorum mutation coverage; run via deployment.sh"] fn mini_burn_bundle_quorum_oracle_matches_consensus_mutations() { let mut harness = harness_for_percent(38, 25); harness.mature_lineages(2, 4); @@ -2639,6 +2645,7 @@ fn mini_burn_bundle_quorum_oracle_matches_consensus_mutations() { } #[test] +#[ignore = "long-running committee availability coverage; run via deployment.sh"] fn finalizer_anchor_alone_requires_available_committee_signatures() { let mut harness = harness_for_percent(20, 25); harness.mature_lineages(1, 4); @@ -2662,6 +2669,7 @@ fn finalizer_anchor_alone_requires_available_committee_signatures() { } #[test] +#[ignore = "long-running rank fallback committee coverage; run via deployment.sh"] fn rank_one_committee_excludes_missed_rank_zero_owner_and_requires_remaining_slot() { let mut harness = harness_for_percent(22, 25); harness.mature_lineages(2, 4); @@ -2803,6 +2811,7 @@ fn pending_third_party_burn_does_not_affect_block_validity() { } #[test] +#[ignore = "long-running third-party burn committee coverage; run via deployment.sh"] fn included_third_party_burn_requires_committee_signatures() { let mut harness = harness_for_percent(21, 25); harness.mature_lineages(1, 4); @@ -2882,6 +2891,7 @@ fn post_genesis_transactions_cannot_spend_with_genesis_input_signatures() { } #[test] +#[ignore = "long-running committee signature rejection coverage; run via deployment.sh"] fn invalid_committee_signature_is_rejected() { let mut harness = harness_for_percent(13, 25); harness.mature_lineages(1, 4); @@ -2980,6 +2990,7 @@ fn consumed_ticket_cannot_be_reused() { } #[test] +#[ignore = "long-running mini ticket oracle sweep; run via deployment.sh"] fn mini_ticket_oracle_matches_ledger_across_maturity_expiry_and_consumption() { let mut harness = harness_for_percent(32, 25); assert_mini_ticket_inventory_matches(&harness.ledger); @@ -3178,6 +3189,7 @@ fn mini_validator_matches_consensus_for_recovery_rules() { } #[test] +#[ignore = "long-running recovery/fork-choice coverage; run via deployment.sh"] fn recovery_and_fork_choice_cannot_cross_finality_depth() { let mut local = harness_for_percent(19, 25); for _ in 0..9 { @@ -3749,6 +3761,7 @@ fn replay_and_double_spend_do_not_change_supply() { } #[test] +#[ignore = "long-running adversarial resource matrix; run via deployment.sh"] fn adversarial_scenarios_cover_resource_matrix() { let strategies = [ AdversaryStrategy::MaximizeBurnWeight, @@ -3876,6 +3889,7 @@ fn adversarial_scenarios_cover_resource_matrix() { } #[test] +#[ignore = "long-running economic attack sweep; run via deployment.sh"] fn attack_economics_visible_burns_have_no_finite_censorship_price() { let cases = [(1, 1), (10, 1), (10, 25), (25, 10), (50, 50)]; @@ -3913,6 +3927,7 @@ fn attack_economics_visible_burns_have_no_finite_censorship_price() { } #[test] +#[ignore = "long-running economic attack sweep; run via deployment.sh"] fn economic_sweep_runner_classifies_attack_costs_across_dimensions() { let cases = [ EconomicSweepCase { @@ -4035,6 +4050,7 @@ fn economic_sweep_runner_classifies_attack_costs_across_dimensions() { } #[test] +#[ignore = "long-running economic attack sweep; run via deployment.sh"] fn attack_economics_withheld_burns_require_gossip_isolation() { let mut visible = Harness::new(1_100, 25, 25, AdversaryStrategy::CensorBurns); let visible_metrics = visible.run_strategy(4); @@ -4064,6 +4080,7 @@ fn attack_economics_withheld_burns_require_gossip_isolation() { } #[test] +#[ignore = "long-running economic attack sweep; run via deployment.sh"] fn attack_economics_committee_capture_requires_matured_lineage_weight() { let mut low_lineage = Harness::new(1_200, 10, 1, AdversaryStrategy::MaximizeCommitteeWeight); let low_metrics = low_lineage.run_strategy(8); @@ -4188,6 +4205,7 @@ fn performance_budget_burn_bundle_processing_respects_10kb_cap() { } #[test] +#[ignore = "long-running snapshot replay budget coverage; run via deployment.sh"] fn performance_budget_snapshot_replay_handles_multi_block_chain() { let mut harness = harness_for_percent(1_501, 25); for _ in 0..32 {