VacantAn accountability layer for AIGitHub

· Records & multi-party execution · Held

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

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

multi-party executionnamingEd25519receipt chain

#Three things

  1. Execute and attest: each executor runs acceptance with its own renderer and sandbox, and signs into its own event chain the hashes of the task, the candidate, the suite and the rendered result, along with the visible acceptance result.
  2. Tally: first check whether the suite passed the gauge, then verify the testimony one entry at a time. The same executor signing two testimonies with different content for the same event → proof-grade fault, voided.
  3. Vote and name: decided by majority. Votes short of a quorum, or a tie → undecided, and the shipping rule treats undecided as not passed. The minority is listed by name, with its event hash and signature attached.

#R454's results

k = 3, with 1 controlled lying key (K3):

CheckResult
Lying cells that named K3273 / 273
Honest keys falsely accused0 / 1,840
Contradictory-signature cells ruled correctly58 / 58
Total testimonies5,519
Signature-verification failures0

#Cross-machine consistency (R453)

Scale368 tasks × 5 candidates = 1,840 candidates
EnvironmentmacOS + Linux (k = 2)
Visible acceptance labels agree1,840 / 1,840
Receipt chainsBoth verify
WindowsExcluded (the sandbox can't be built)

#Simulation sweep: two counterintuitive results

200 cells (r446 371 tasks × 5 candidates, r443 91 tasks × 5, k ∈ {1,3,5,7}, corruption share 0–70%, five kinds of attack):

#① Adding machines buys nothing

ConditionDelivery rate
At a fixed corruption share, k from 1 to 7Does not change at all
Collusion67.39%
Sabotage0%

#② At k = 3, one missing vote means no one is named

k = 3, quorum = 2, one vote absent or refused1-1 tie → undecided, no one named

This is a deliberate design choice. What it means is:

Naming presupposes "an honest majority is present," not "signatures exist."

#The mathematical upper bound

tolerance limit = ⌊ (k − 1) / 2 ⌋

When a majority colludes, the result flips: the honest parties get named, and the mechanism itself does not know which side of the threshold it is on.

Sweep batchFalse-accusation rate past a majority
r446 (371 tasks × 5)0.175
r443 (91 tasks × 5)0.374

#What this mechanism can't solve

Corruption of the acceptance suite itself. If the suite is swapped for "passes as soon as it loads":

Every vote is honest, every chain verifies, and the system is still delivering garbage.

StageResult
Suite bound into the commit, plain suite371 / 371 all refused (normal)
Stateful gauge variantDelivery rate drops 75.20 pp, gauge reports ok
Fix: SuiteSpecexec smuggling 368 / 371 → 0 / 371
Residual: generic_gauged+2.72 pp
Upper bound: weak_oracle+4.35 pp

The fix is replacing the referee, not adding executors

#Honest boundaries

#Next

Related

about 2 min read · this page cites 2 adjudicated claims

Shih Hsin UniversityDepartment of Information and Communications, Shih Hsin UniversityVacant

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