Batch stability

September 19, 2026 ยท View on GitHub

A one-off script (not kept in the repo), jev-1.13.0, seed 20260918. The 8 USSD files the benchmark scans; 20 (file, question) pairs: 10 drawn from pairs whose normal-batch p is 0.15-0.85, 10 from the rest (broad questions excluded). Each is asked (a) alone, (b) in the batch jevscan sends (same request, so the same cache entry as a scan), (c) with 10 random other questions from any level, at a random position, and (d) alone again, sent past the cache. Jev is not deterministic: the same request sent twice can differ, so (a) vs (d) is the floor the batch effects are compared with. (d) was sent fresh. Size: 81 cached or uncached requests plus 20 repeats, 990,496 input tokens through the cache ($0.0416 uncached).

ComparisonMean abs delta (all 20)Max (all 20)Mean (10 uncertain)Max (10 uncertain)
alone vs the same request repeated (repeat noise)0.0090.0300.0160.030
alone vs normal batch0.0070.0300.0130.030
random batch vs normal batch0.0080.0300.0150.030
alone vs random batch0.0110.0600.0200.060

Largest mean abs batch delta: 0.011. That is below the 0.03 bar set before the run, so batching was left as is: question order is already fixed (library order), and only the batch boundaries move with file size. The batch effects are about the size of the repeat noise, so fixing the batches would not make scores reproducible. Single moves of 0.05-0.08 do occur, so a p within about 0.05 of a threshold should be read as a tie.

FileQuestion(a) alone(b) normal batch(c) random batch(d) alone, repeated
USSDRebalancer.solsubcategory:arbitrary_external_call0.1800.1800.1700.170
USSD.solsubcategory:invariant_violation_solvency0.6700.6600.6900.680
oracles/UniswapV3StaticOracle.soldetector:oracle0.3000.2900.2900.290
USSD.soldetector:deploy_uninitialized_impl0.7400.7500.7600.760
oracles/UniswapV3StaticOracle.soldetector:general_dos0.3000.3300.3000.310
oracles/StableOracleDAI.solsubcategory:uninitialized_or_shadowed_state0.3000.3000.3300.320
USSDRebalancer.solsubcategory:rounding_direction_error0.3900.3800.3800.370
oracles/UniswapV3StaticOracle.solsubcategory:external_protocol_assumption0.2900.3000.3000.260
USSDRebalancer.solsubcategory:fee_on_transfer_or_rebasing_token0.4200.4000.3900.400
USSD.solsubcategory:manipulable_twap_or_custom_oracle0.2600.2900.3200.270
oracles/StableOracleWBGL.solsubcategory:single_function_reentrancy0.0200.0200.0200.020
USSD.soldetector:kinetiq_native_receive_handling0.0300.0200.0200.020
oracles/UniswapV3StaticOracle.soldetector:kinetiq_instant_unstake_pool0.0100.0100.0100.010
oracles/UniswapV3StaticOracle.solsubcategory:liquidation_logic_error0.0200.0200.0200.020
oracles/StableOracleWBTC.soldetector:c_field_truncation0.0100.0100.0100.010
USSD.soldetector:vyper_augassign_oob0.0100.0100.0100.010
USSD.soldetector:diamond_selector_collision0.0300.0300.0200.020
oracles/StableOracleDAI.soldetector:compound_patterns0.0100.0100.0100.010
USSDRebalancer.soldetector:vyper_range_negative0.0100.0100.0100.010
Migrations.soldetector:solana0.0100.0100.0100.010