VacantAn accountability layer for AIGitHub

Lab notes

What we measured,
and what we measured that didn't hold.

Vacant's lab notes, 32 posts: each one an experiment that really ran or a claim that was refuted, with full numbers, denominators and verdicts. The raw record of the defense axis, the gain axis and multi-party execution.

The 58 claims behind these notes, by verdict (click a segment to see them)

Held23/58Refuted14/58Overstated5/58No discernible difference5/58Same sign, unresolved5/58Not re-verified6/58

#Method4 posts

How to turn a statement into a number that can be recomputed — and how it later got refuted.

  1. Six verdict values: how to say "not measured" without saying "no difference"

    Held, Refuted, Overstated, No discernible difference, Same sign, unresolved, Not re-verified — each of these six terms has a strict definition. We keep them apart so that "I didn't detect it" is never read as "I tested it, and there's nothing."

  2. Preregistration: why we write down the criteria before running the experimentHeld

    Criteria, statistical methods and the four state rules are all frozen and timestamped before the run starts. This post explains how we preregister, and why "adding a criterion after the fact" doesn't count in this research.

  3. We sent AI to refute our own conclusions, and they succeededOverstated

    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.

  4. 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.

#Defense axis9 posts

The cost of getting in, what it saves, and the attack model we refuted ourselves.

  1. An attacker that only slanders and never breaks a rule got 95.4% of the workNot re-verified

    All three layers of anti-vote-stuffing defense were in place, yet a collusion group that never delivered anything bad and only reviewed others took almost all of the routing — and its score is 0. The harm was not underestimated; it was measured as zero.

  2. Why "permanent exclusion" is really the product of two reasonable patchesOverstated

    Measured: of 368 penalized seeds, 0 returned to routing. We said "caught once = removed permanently" — but the real mechanism is not a clock; it is that slash both halves the mean and doubles the observation count, and the observation count is the exponential coefficient of the return time.

  3. How "temporal structure doesn't matter" went wrong: breaking the aggregate apartOverstated

    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×.

  4. Detection probability is one product, not three dimensionsRefuted

    We originally claimed that "raising the audit rate cannot rescue cases with a blind spot." Measured: at blind spot 0.5, raising the audit rate from 0.1 to 1.0 cut the attacker's total hits by 82%, p = 5.5e-6. The three factors are terms in the same product.

  5. The "equal budget" trap: our ranking flipped completelyRefuted

    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.

  6. Pulse attack: not new, and even our headline number was already old newsNot re-verified

    Discharge B, charge R, repeat. This model had already been done in 2005 (Srivatsa et al.'s strategic oscillation); on 2026-08-06 we withdrew the "novel attack" claim.

  7. The trust on/off experiment on a real model: +8.3%, but statistically nothing happenedNot re-verified

    60 paired tasks; switching the trust layer on raised the pass rate from 51.67% to 60.00% — but the 95% interval spans 0, McNemar p=0.332, and statistical power is only 0.163. The same data holds another, more meaningful result.

  8. Setting the stake too low let attackers earn a 235% returnNot re-verified

    The most counterintuitive result of the 14 mechanism simulations: free entry blocks completely, yet a stake of 2 gave the attacker a return per unit of cost of 2.354. We deleted two defense designs (an exogenous entry fee and endorser liability) entirely.

  9. The only truly tight constraint in the whole defense system: reviewer accuracyNot re-verified

    We swept the stake, probation length, ecosystem size, attacker share, and the correlation of reviewer errors — all of them are slack. The only cell where attacking starts to pay is when reviewer accuracy drops to 0.

#Gain axis13 posts

Which mechanism actually makes deliveries better — including four batches where no difference was detected.

  1. Zero-config, four batches: three measured no difference, and the fourth vanished when we switched enginesNot re-verified

    Zero-config was measured on four batches: DABstep, 711 local cells, 920 Colab tasks and u274. Paid batch: no measured difference for either model; local batch p=0.021 but concentrated in 6 tasks; 920 tasks and u274: no measured difference; v3.7 later measured p=0.0028, but did not replicate on GGUF.

  2. The gate cuts false delivery by about 40%, not in half

    An experiment with 836 tasks, 43 blocks and 0 voided. The thesis's "halved" was wrong — because the two rates used different denominators. This correction changes the gate's effect from "in half" to "roughly 40%."

  3. This is a success-rate gain, not a token-efficiency gainNot re-verified

    Recomputed call by call, 197 cells, zero differences. H-MIX uses 2.23–2.78× the tokens of a single draw, and in four of the five replications it was more expensive per correct delivery than the gate. "The same ceiling" is not "the same actual cost."

  4. After five replications: the headline claim lost to its own stability ruleSame sign, unresolved

    R460 measured the revision loop at 13.33 percentage points above resampling with a fresh attempt, Holm p = .0112. After five same-task replications, all five were not significant, 0/5 passed correction, and the status was downgraded to "Same sign, unresolved."

  5. The only thing that held stably across five replications: the loop beats a single draw by 17 to 29 percentage pointsHeld

    All 15 blocks pass their own Holm correction, with differences from +17.5 to +29.2 percentage points, across five same-task replications and four mutually exclusive task sets. This is the hardest result in the whole project.

  6. The gain comes from the loop, not from the first-round promptHeld

    We pulled out the complete first-round responses and re-scored them offline: the loop contributes +19.17 / +17.50 percentage points, the first-round prompt only +6.67 / +8.33. 21 tasks were rescued by the loop.

  7. The MDE is 4.31 percentage points, but the task bank has only 378 tasksSame sign, unresolved

    For the comparison of the gate against majority vote, we can calculate that 491 pairs are needed for 80% statistical power, but the task bank actually has only 378 tasks. This "Same sign, unresolved" is not unfinished work; it is physically unmeasurable.

  8. The harder the task, the more the acceptance gate is worthHeld

    The early-stop gate delivers 7.8 percentage points more on MBPP+, and 20.9 percentage points more on hard LiveCodeBench problems. And the "leak rate" drops from 44 to 11 — refusing delivery is worth the most on hard tasks.

  9. The birth of the judging gate: execution instead of opinion, receipts instead of votesHeld

    We deleted the AI review committee and replaced it with "run the customer's acceptance tests, deliver the first candidate that passes, refuse delivery if none passes." On three task banks it delivered 4.58 to 19.17 percentage points more, at only 1.5 calls per task.

  10. Only after our own experiments excluded two explanations did the mechanism have room to changeRefuted

    "The model is too strong" and "the tasks are too easy" were two explanations proposed by humans. Two experiments excluded both, and only then was the reviewer mechanism forced into a redesign — and the direction was to change the referee, not the reviewer model.

  11. The reviewers track task difficulty, not whether the answer is rightHeld

    The same reviewer layer judges almost everything as pass on MBPP+ (0.305 error rate) and almost everything as fail on LiveCodeBench hard tasks (0.46 error rate). It follows a global property, not this particular answer.

  12. "The hidden tests are lossless" is empty by constructionHeld

    A criterion R440P set in advance was refuted nine days later: in LCB, 91/91 hidden test sets are supersets of the visible tests, so "would pass hidden but fails visible" cannot happen by construction. This criterion had zero statistical power.

  13. Our AI review committee lost to "generate five times, take the majority"Refuted

    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.

#Records & multi-party execution4 posts

Signature chains, twins, and the places where the measuring tools themselves measured wrong.

  1. The measuring tool got it wrong seven times, and every error leaned against itselfNot re-verified

    The A/B harness for the interactive TUI had seven measurement errors, plus two more that exist only in code comments. Every one was caught on a real pi, and every one pushed the numbers to look better than they really were — 8 fabricated results, and 5 cells whose prompts were never sent.

  2. An attacker re-mints the whole chain with their own key, and the receipt viewer still says it passesHeld

    194 receipt chains, 9,841 entries, all verify. But the offline single-file viewer has a structural limit: if the whole chain is re-minted once, it still passes. This is not a vulnerability; it is the definitional boundary of a signature.

  3. The lying key was named all 273 times; honest keys were falsely accused 0 timesHeld

    k=3, 1 controlled lying key, 5,519 testimonies. Lying cells named 273/273, honest keys falsely accused 0/1,840, contradictory-signature cells ruled correctly 58/58. How strict these numbers are depends on whether you know the mathematical upper bound ⌊(k−1)/2⌋.

  4. After turning the acceptance suite from code into data, the delivery-rate drop went from 75% to 2.7%Held

    An attacker wrote a stateful variant of the gauge: the gauge scored perfectly in both directions, yet the delivery rate dropped 75 percentage points. The fix was to leave the suite with only three things: a dialect, an entry-point name, and a literal list of input — expected value pairs.

#Project history2 posts

From definition to verdict: how this line of work got to where it is now.

  1. The definition changed five times: from "a responsibility structure" to "no delivery without a receipt is accepted"

    Over nine months, "what Vacant is" was rewritten five times, and each time the claim got smaller: from "a responsibility structure agents adopt voluntarily" to "a delivery without a verifiable receipt is not accepted." The shrinking process itself is this project's contribution.

  2. KS-1: On a frozen model, "writing the consequences to look real" and "making the consequences real" are the same thingNot re-verified

    On 2026-06-28, the two main validation designs were killed by adversarial workflows of 17 and 10 agents. The fact that killed them later became the methodological core of the whole project.

All the verdicts are here

The label on a note is the verdict of that post's main claim. The full verdicts of every public claim are in the evidence ledger; methods and reading rules are in Experimental methods and verdict values.

Shih Hsin UniversityDepartment of Information and Communications, Shih Hsin UniversityVacant

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