#96 – Stabilize in-epoch invalid SPRT on small samples
Passed
Proposal ID: 96
Type: Update Params
Submit: 2026-08-20 18:04 UTC
Voting: 2026-08-20 18:04 UTC → 2026-08-21 06:04 UTC
Expedited: Yes
In-epoch SPRT on invalid inferences is not stable on a small sample. A few invalids can trip it before the epoch has enough data. This proposal raises invalidation_h_threshold to 40 and sets bad_participant_invalidation_rate to 18e-2. At large sample sizes the threshold is about 10% invalid, so participants below that are not punished. Higher rates still trigger, 18% in about 360 samples and 12% in about 1650. Small samples cannot trigger it. At least 32 flagged invalids are required, and at 500 samples the observed rate must exceed 16%. Downtime SPRT is unused and is turned off. Epoch-end stats tests still work.
Final Tally
Voters
| Voter | Vote |
|---|---|
| gonka1qwfrtz…33xdkl | Yes 100.0% |
| gonka1p2lhgn…k6h26m | Yes 100.0% |
| gonka1ym3np7…0e4a2p | Yes 100.0% |
| gonka1xwkesa…lcktds | Yes 100.0% |
| gonka18xeqns…whyn0d | Yes 100.0% |
| gonka1830lqu…pasz0y | Yes 100.0% |
| gonka1t0psql…mnwdad | Yes 100.0% |
| gonka10mmdja…vqgz09 | Yes 93.8% Abstain 5.5% No_With_Veto 0.8% |
| gonka1346p2h…nd55fh | Yes 100.0% |
| gonka1kvmerz…lzldum | Yes 100.0% |
| gonka168rtjf…lnkns2 | Yes 100.0% |
| gonka16dgkvx…6j0skk | Yes 100.0% |
| gonka1m58jds…cqqppf | Yes 100.0% |
| gonka1u60wtn…u7w0qq | Yes 100.0% |
Messages
| # | Type |
|---|---|
| 1 | /inference.inference.MsgUpdateParams |
Contract Details
[
{
"@type": "/inference.inference.MsgUpdateParams",
"authority": "gonka10d07y265gmmuvt4z0w9aw880jnsr700j2h5m33",
"params": {
"epoch_params": {
"epoch_length": "15391",
"epoch_multiplier": "1",
"epoch_shift": "16980",
"default_unit_of_compute_price": "100",
"poc_stage_duration": "35",
"poc_exchange_duration": "0",
"poc_validation_delay": "5",
"poc_validation_duration": "240",
"set_new_validators_delay": "120",
"inference_validation_cutoff": "2",
"inference_pruning_epoch_threshold": "2",
"inference_pruning_max": "5000",
"poc_pruning_max": "1000",
"poc_slot_allocation": {
"value": "1",
"exponent": -1
},
"confirmation_poc_safety_window": "500"
},
"validation_params": {
"false_positive_rate": {
"value": "5",
"exponent": -2
},
"min_ramp_up_measurements": 10,
"pass_value": {
"value": "99",
"exponent": -2
},
"min_validation_average": {
"value": "1",
"exponent": -2
},
"max_validation_average": {
"value": "1",
"exponent": 0
},
"expiration_blocks": "150",
"epochs_to_max": "30",
"full_validation_traffic_cutoff": "10000",
"min_validation_halfway": {
"value": "5",
"exponent": -2
},
"min_validation_traffic_cutoff": "100",
"miss_percentage_cutoff": {
"value": "1",
"exponent": -2
},
"miss_requests_penalty": {
"value": "1",
"exponent": 0
},
"timestamp_expiration": "300",
"timestamp_advance": "30",
"estimated_limits_per_block_kb": "0",
"invalid_reputation_preserve": {
"value": "0",
"exponent": 0
},
"bad_participant_invalidation_rate": {
"value": "18",
"exponent": -2
},
"invalidation_h_threshold": {
"value": "4",
"exponent": 1
},
"downtime_good_percentage": {
"value": "99",
"exponent": -2
},
"downtime_bad_percentage": {
"value": "99",
"exponent": -2
},
"downtime_h_threshold": {
"value": "1",
"exponent": 9
},
"downtime_reputation_preserve": {
"value": "0",
"exponent": 0
},
"quick_failure_threshold": {
"value": "1",
"exponent": -6
},
"binom_test_p0": {
"value": "1",
"exponent": -1
},
"claim_validation_enabled": false,
"logprobs_mode": "processed_logprobs"
},
"poc_params": {
"default_difficulty": 5,
"validation_sample_size": 200,
"poc_data_pruning_epoch_threshold": "1",
"weight_scale_factor": null,
"model_params": null,
"model_id": "",
"seq_len": "0",
"poc_v2_enabled": true,
"confirmation_poc_v2_enabled": true,
"stat_test": null,
"validation_slots": 0,
"poc_normalization_enabled": true,
"poc_stronger_rng_enabled": false,
"models": [
{
"model_id": "MiniMaxAI/MiniMax-M2.7",
"seq_len": "1024",
"stat_test": {
"dist_threshold": {
"value": "75",
"exponent": -2
},
"p_mismatch": {
"value": "1",
"exponent": -1
},
"p_value_threshold": {
"value": "5",
"exponent": -2
}
},
"weight_scale_factor": {
"value": "3024",
"exponent": -4
},
"penalty_start_epoch": "278"
},
{
"model_id": "moonshotai/Kimi-K2.6",
"seq_len": "1024",
"stat_test": {
"dist_threshold": {
"value": "4",
"exponent": -1
},
"p_mismatch": {
"value": "1",
"exponent": -1
},
"p_value_threshold": {
"value": "5",
"exponent": -2
}
},
"weight_scale_factor": {
"value": "945",
"exponent": -3
},
"penalty_start_epoch": "332"
},
{
"model_id": "zai-org/GLM-5.2-FP8",
"seq_len": "1024",
"stat_test": {
"dist_threshold": {
"value": "45",
"exponent": -2
},
"p_mismatch": {
"value": "1",
"exponent": -1
},
"p_value_threshold": {
"value": "5",
"exponent": -2
}
},
"weight_scale_factor": {
"value": "25935",
"exponent": -4
},
"penalty_start_epoch": "500"
},
{
"model_id": "deepseek-ai/DeepSeek-V4-Flash-0731",
"seq_len": "1024",
"stat_test": {
"dist_threshold": {
"value": "41",
"exponent": -2
},
"p_mismatch": {
"value": "1",
"exponent": -1
},
"p_value_threshold": {
"value": "5",
"exponent": -2
}
},
"weight_scale_factor": {
"value": "214",
"exponent": -3
},
"penalty_start_epoch": "360"
}
],
"validation_vote_threshold_bps": 5000
},
"tokenomics_params": {
"subsidy_reduction_interval": {
"value": "5",
"exponent": -2
},
"subsidy_reduction_amount": {
"value": "2",
"exponent": -1
},
"current_subsidy_percentage": {
"value": "9",
"exponent": -1
},
"work_vesting_period": "180",
"reward_vesting_period": "180"
},
"collateral_params": {
"slash_fraction_invalid": {
"value": "2",
"exponent": -1
},
"slash_fraction_downtime": {
"value": "1",
"exponent": -1
},
"downtime_missed_percentage_threshold": {
"value": "5",
"exponent": -2
},
"grace_period_end_epoch": "180",
"base_weight_ratio": {
"value": "2",
"exponent": -1
},
"collateral_per_weight_unit": {
"value": "42",
"exponent": -1
}
},
"bitcoin_reward_params": {
"use_bitcoin_rewards": true,
"initial_epoch_reward": "323000000000000",
"decay_rate": {
"value": "-475",
"exponent": -6
},
"genesis_epoch": "1",
"utilization_bonus_factor": {
"value": "5",
"exponent": -1
},
"full_coverage_bonus_factor": {
"value": "12",
"exponent": -1
},
"partial_coverage_bonus_factor": {
"value": "1",
"exponent": -1
}
},
"dynamic_pricing_params": {
"stability_zone_lower_bound": {
"value": "4",
"exponent": -1
},
"stability_zone_upper_bound": {
"value": "6",
"exponent": -1
},
"price_elasticity": {
"value": "5",
"exponent": -2
},
"utilization_window_duration": "60",
"min_per_token_price": "1",
"base_per_token_price": "100",
"grace_period_end_epoch": "90",
"grace_period_per_token_price": "100"
},
"bandwidth_limits_params": {
"estimated_limits_per_block_kb": "53760",
"kb_per_input_token": {
"value": "23",
"exponent": -4
},
"kb_per_output_token": {
"value": "64",
"exponent": -2
},
"invalidations_limit": "500",
"invalidations_sample_period": "120",
"invalidations_limit_curve": "250",
"minimum_concurrent_invalidations": 1,
"max_inferences_per_block": "1000"
},
"confirmation_poc_params": {
"expected_confirmations_per_epoch": "4",
"alpha_threshold": {
"value": "5",
"exponent": -1
},
"slash_fraction": {
"value": "0",
"exponent": 0
},
"upgrade_protection_window": "500"
},
"genesis_guardian_params": {
"network_maturity_threshold": "15000000",
"network_maturity_min_height": "3000000",
"guardian_addresses": [
"gonkavaloper1y2a9p56kv044327uycmqdexl7zs82fs5lyang5",
"gonkavaloper1dkl4mah5erqggvhqkpc8j3qs5tyuetgdc59d0v",
"gonkavaloper1kx9mca3xm8u8ypzfuhmxey66u0ufxhs70mtf0e"
]
},
"developer_access_params": {
"until_block_height": "2459367",
"allowed_developer_addresses": [
"gonka10fynmy2npvdvew0vj2288gz8ljfvmjs35lat8n",
"gonka1v8gk5z7gcv72447yfcd2y8g78qk05yc4f3nk4w",
"gonka1gndhek2h2y5849wf6tmw6gnw9qn4vysgljed0u",
"gonka1z66ec2zedwpapp6jrj9raxgl93e5ec9z5my52h",
"gonka1jw6xg0wun3g8m2fjm8lula82dw5p6jl8yp28mn",
"gonka15sjedpgseutpnrjx2ge3mgau3s8ft5qzym9waa",
"gonka1l4a2wtls9rgd2mnnj6mheml5xlq3kknngj4p7h",
"gonka1f3yg5385n3f9pdw2g3dcjcnfqyej67hcu9vfet",
"gonka15g5pu70k7l6hvdt8xl80h4mxe332762csupaeg",
"gonka1uyqp5z3dveamfw4pmw7p7rfvwdvgzewnqrzhsu",
"gonka18lluv53n4h9z34qu20vxcvypgdkhsg6nn2cl2d",
"gonka1x7zh2277spp7jfqjhv0g5mnezg290xdr4kpfnk",
"gonka1ddswmmmn38esxegjf6qw36mt4aqyw6etvysy5x",
"gonka1kx9mca3xm8u8ypzfuhmxey66u0ufxhs7nm6wc5",
"gonka1dkl4mah5erqggvhqkpc8j3qs5tyuetgdy552cp",
"gonka1y2a9p56kv044327uycmqdexl7zs82fs5ryv5le",
"gonka1p0uanq0aay6n3l4gtnshg63cy6vx3zgvkyc5lc",
"gonka1khca2ht3m0nvpfghrxwgvnmj74t0sx6qzc2edd"
]
},
"participant_access_params": {
"new_participant_registration_start_height": "2475000",
"blocked_participant_addresses": [
"gonka1blockedxxxxxxxxxxxxxxxxxxxxxx"
],
"use_participant_allowlist": true,
"participant_allowlist_until_block_height": "2475000"
},
"transfer_agent_access_params": {
"allowed_transfer_addresses": [
"gonka1y2a9p56kv044327uycmqdexl7zs82fs5ryv5le",
"gonka1dkl4mah5erqggvhqkpc8j3qs5tyuetgdy552cp",
"gonka1kx9mca3xm8u8ypzfuhmxey66u0ufxhs7nm6wc5",
"gonka1ddswmmmn38esxegjf6qw36mt4aqyw6etvysy5x",
"gonka10fynmy2npvdvew0vj2288gz8ljfvmjs35lat8n",
"gonka1v8gk5z7gcv72447yfcd2y8g78qk05yc4f3nk4w",
"gonka1gndhek2h2y5849wf6tmw6gnw9qn4vysgljed0u"
]
},
"devshard_escrow_params": {
"min_amount": "50000000",
"max_amount": "100000000000",
"max_escrows_per_epoch": 500000,
"group_size": 16,
"allowed_creator_addresses": [
"gonka10fynmy2npvdvew0vj2288gz8ljfvmjs35lat8n",
"gonka1uyqp5z3dveamfw4pmw7p7rfvwdvgzewnqrzhsu",
"gonka1sy7ug80wrnm6gk47creak0j5eagjpf7maqcqwk",
"gonka1w66aw6jayepglwgz66qtunetr5nyw9ls7evq5g",
"gonka1v8gk5z7gcv72447yfcd2y8g78qk05yc4f3nk4w",
"gonka1gndhek2h2y5849wf6tmw6gnw9qn4vysgljed0u",
"gonka1z66ec2zedwpapp6jrj9raxgl93e5ec9z5my52h",
"gonka1jw6xg0wun3g8m2fjm8lula82dw5p6jl8yp28mn",
"gonka15sjedpgseutpnrjx2ge3mgau3s8ft5qzym9waa",
"gonka1l4a2wtls9rgd2mnnj6mheml5xlq3kknngj4p7h",
"gonka1f3yg5385n3f9pdw2g3dcjcnfqyej67hcu9vfet",
"gonka15g5pu70k7l6hvdt8xl80h4mxe332762csupaeg",
"gonka1p0uanq0aay6n3l4gtnshg63cy6vx3zgvkyc5lc",
"gonka1r2s0rwgskp6y4ed7qr7d25qdwjwlvpp6demv90",
"gonka1ls8wqecwj369du8s2t9a223xu9sgvmzlw2ye9c",
"gonka10wmset95nhgfjt4wklsyjqpx55m40zy3gha2pn",
"gonka17ld2g62230w0erzexefzw03sw0adtuchr425rp",
"gonka1t9akhsrqjkavh68c7cannlfdj58y25vsewfflt"
],
"token_price": "10",
"approved_versions": [
{
"name": "v3",
"binary": "https://github.com/gonka-ai/gonka/releases/download/release%2Fv0.2.13-devshard-v3.0.0/devshardd.zip",
"sha256": "ca1294fc8db3f0907a01f362eb4b13665f66d0fd12cfc6f01468b1e27f0bab63"
},
{
"name": "v4",
"binary": "https://github.com/gonka-ai/gonka/releases/download/release%2Fv0.2.15-devshard-v4.0.1/devshardd.zip",
"sha256": "c80d098941fd18caf0159910c1b6c23140fce871f7ce903ceaad134cfe626b25"
}
],
"max_nonce": 1000000,
"devshard_requests_enabled": true,
"default_inference_seal_grace_nonces": 160,
"default_inference_seal_grace_seconds": 3600,
"create_devshard_fee": "10000",
"fee_per_nonce": "1000",
"refusal_timeout": "60",
"execution_timeout": "1920",
"validation_rate": 1000,
"vote_threshold_factor": 50,
"default_auto_seal_every_n_nonces": 0
},
"fee_params": {
"min_gas_price_ngonka": "0",
"base_validation_gas": "500000",
"gas_per_poc_count": "100"
},
"delegation_params": {
"deploy_window": "500",
"refusal_penalty": {
"value": "1",
"exponent": -1
},
"no_participation_penalty": {
"value": "15",
"exponent": -2
},
"delegation_share": {
"value": "5",
"exponent": -2
},
"w_threshold": {
"value": "1",
"exponent": -1
},
"v_min": "3",
"cap_factor": {
"value": "75",
"exponent": -2
},
"initial_model_id": "MiniMaxAI/MiniMax-M2.7",
"max_model_voting_power_percentage": {
"value": "3",
"exponent": -1
}
},
"maintenance_params": {
"maintenance_enabled": false,
"maintenance_min_schedule_lead_blocks": "100",
"maintenance_max_window_blocks": "200",
"maintenance_max_concurrent_validators": 3,
"maintenance_max_concurrent_power_bps": 1000,
"maintenance_credit_cap_blocks": "400",
"maintenance_credit_earn_per_successful_epoch_blocks": "20"
}
}
}
]