VacantAn accountability layer for AIGitHub

· Defense axis · Refuted

The "equal budget" trap: our ranking flipped completely

The criterion was written as defected <= BUDGET, an upper bound that always holds, so it could not catch "this arm was never bound at all." As a result, whitewash misbehaved 2.5 times as much and we read it as "the strategy is cheaper." After switching to == and verifying, the ranking flipped.

equal budgetmeasurement trapsrefuted

#What we wanted to do

E19 set out to answer a very intuitive question:

Given the same misbehavior budget, which timing pattern is the most economical for an attacker?

So we set a cap: the total number of acts of misbehavior cannot exceed 12. Then we compared the "efficiency" of five attack strategies.

#What we measured

ArmEfficiency under the criterionBound?
whitewash (misbehaves all the time, switches identity when caught)8.166729 / 30
sybil6.133330 / 30
pulse(5,20)4.301 / 30
pulse(3,10)4.23331 / 30
patient (misbehaves slowly)3.73331 / 30

Our conclusion:

Under an equal budget (12 each) + blind spot 0.5, whitewash at 8.17 actually beats pulsing at 4.23.

"So a crude continuous attack is more economical than a carefully paced pulse." That sentence reads as fairly insightful.

#Where it went wrong

So whom did that budget of 12 actually bind?

ArmShare of seeds that reached the budget of 12
whitewash29 / 30
sybil30 / 30
patient1 / 30
pulse(3,10)1 / 30
pulse(5,20)0 / 30

And defected <= BUDGET is an upper bound that always holds — it passes as long as misbehavior does not exceed 12. So by design this criterion cannot tell "bound" from "not bound."

#After the correction

We switched to defected == BUDGET, and verified beforehand that every arm was really bound.

Swept over budget ∈ {1, 2, 3, 4, 6}:

Budgetwhitewashpatientsybilpulse(3,10)pulse(5,20)
11.00 / 0.5331.00 / 0.8671.00 / 0.5331.00 / 0.9001.00 / 0.900
21.00 / 0.9670.87 / 1.6671.00 / 0.9670.90 / 1.6670.90 / 1.667
31.00 / 1.6670.77 / 2.3001.00 / 1.6000.77 / 2.3000.77 / 2.300
41.00 / 2.2330.60 / 2.9001.00 / 2.0330.63 / 2.9330.63 / 2.900
61.00 / 3.6670.27 / 3.6001.00 / 3.2330.47 / 3.833running

Only budget = 1 binds all five arms. Relaxing to "80% reach the budget" only adds budgets 1 and 2.

At the only point where all arms are bound (Wilcoxon exact, grouped by seed):

ArmEfficiencyvs whitewashp
pulse(3,10)0.900+0.3670.0074 (13/15/2)
pulse(5,20)0.900+0.3670.0074
patient0.867+0.3330.0309
sybil0.5330.000identical across all 30 seeds
whitewash0.533——

The ranking flipped: whitewash is the weakest, not the strongest.}}

#Consistency check

After the change, we reran budget = 12 and it reproduced the original E19 bit for bit:

Value
Share reaching the budget29 / 30 = 0.9667
Actual misbehavior11.9667
Claimed efficiency8.1667

#Four places this rule applies

WhereWrong equal budgetCorrect
Comparing attack strategiesdefected <= 12== 1 (the only point where all are bound)
ON vs OFF5accepted hard-coded to Truedenominator changed to all tasks
Token comparison of equal-budget armscompares only the call-count capsum usage call by call (cap ≠ actual cost)
V/GT auditcompares against hidden testscompares only against visible tests (that one is not a shippable mechanism)

The full accounting for the third one

The fourth one

#The general rule

#Next

Related

  • How "temporal structure doesn't matter" went wrong: breaking the aggregate apart

    We measured total hits across 15 cells of attack strategies that differed by only 1.81×, then wrote "temporal structure barely affects the result." Broken apart: exposure spans 6.06× and efficiency spans 8.45× — attack capability differs by 8.45×.

  • We sent AI to refute our own conclusions, and they succeeded

    In early 2026-08, we handed six headline conclusions about the pulse attack to independent agents, with one instruction only: "prove it wrong." The result: three refuted, two downgraded, and only two held up.

  • Our AI review committee lost to "generate five times, take the majority"

    Same 5 calls, same set of tasks: a committee of three AI reviewers plus one revision lost to "generate five times and take a majority vote." The point estimate of the difference was −1.98 percentage points — and after we fixed an unrelated bug, it became +2.97.

  • Six things we mismeasured

    Reading the wrong field, network drops counted as reviewer results, an rng seed that degenerates at the limit, treating `defected <= BUDGET` as an equal budget, pretty numbers at an endpoint, and a rule switched off by default — six real measurement traps and their lessons.

about 2 min read · this page cites 1 adjudicated claim

Shih Hsin UniversityDepartment of Information and Communications, Shih Hsin UniversityVacant

Department of Information and Communications, Shih Hsin University · 2026 capstone project · on-site exhibition