Corrections log
Every claim that was downgraded or refuted, every number that was corrected, and every sentence we were asked to delete, all in chronological order. From "blocked at the exit" to KS-1, this is the part of the whole research most worth reading.
This page cites 3 verdicts: Overstated 1 · Same sign, unresolved 1 · Not re-verified 1click one to jump to its claim card
#Why this page exists
Because a system that claims to be accountable must first be able to be accountable to itself.
This page is the form in which the project puts that into practice: every downgraded claim, every corrected number, every deleted phrasing, in chronological order. The full cross-reference is in the evidence ledger.
#2026-10-07 — Site data audit
We checked the site's numbers one by one against their sources (the project's _index/claims.json, the thesis, and the Vacant repo's decision and conclusion documents), and changed the following:
- The denominators for
zero.reminder_default_offwere attached to the wrong batch: the denominators written next to "share of correct answer files about 82% → 65%" (A 119, C37 161, C37R 211) belong to the 10-02 Colab v3.7 batch, not the 09-26 local batch. The two batches are now written separately: the local batch uses the decision document's original wording, with no denominator attached; the Colab batch is A 97/119 = 81.5%, C37 123/161 = 76.4%, C37R 139/211 = 65.9%. - The lab-notes index showed the stat "55 claims with no measurable difference": the code had concatenated 5 and 5 as strings; the correct total is 10. And adding "No discernible difference" and "Same sign, unresolved" together in the first place violates the definitions of the verdict values. That cell has been removed and replaced with a verdict distribution bar that keeps the two values separate.
- The page label for
no_effectis now uniformly "No discernible difference" (the thesis's term). Previously the site also showed the variant "indistinguishable effect" (original: 「無可分辨效應」). - "34 claims" was stale: the home page, the archive, the docs index, the lab-notes index, the FAQ, the methods page, this page and four posts still said 34 claims; the current count is 58 (34 in the official index + 24 repo verdicts). Numbers on the hand-written pages are now computed by the build.
- The defense-axis summary said "6 of 12 refuted": it is 3 refuted and 3 overstated, and those are two different verdict values.
- The counts in the evidence ledger's "where the verdicts cluster" covered only the 34 claims in the official index; the denominator is now stated.
- The source document for
zero.v37_gguf_not_replicatedis on thedocs/gguf-replication-resultsbranch of the Vacant repo, which as of 10-03 had not yet been merged into main; this is now noted in the source field.
#2026-10-03 — Zero-config v3.7 released (v0.9.0)
vacant-networkv0.9.0 released, tagv0.9.0: the product line is zero-config — it works as soon as it's installed, with no configuration.- The results of all four zero-config batches are written up in Zero-config Vacant: in the DABstep paid batch neither model showed a measured difference (p=0.21 / 0.29); local 711 cells p=0.021 but concentrated in 6 tasks; Colab 920 tasks p=0.387; u274 p=1.0.
- v3.7's p=0.0028 did not replicate once the engine was switched: Colab +11.3 pp (p=0.0028), LM Studio GGUF −0.4 pp (p=0.84). So we do not claim that "v3.7 makes the agent do better."
- In the 920-task batch, 96% of send-backs were mistaken (455 of 472 send-backs happened only because
sh run_tests.shwas not recognized) — this is exactly what v3.7's first defect fix addresses. - After u274's missing-file send-backs, of 31 runs: 0 correct, 17 wrong, 14 still with no file — this is what v3.7's third defect fix addresses.
- New product line: accountable trace (Accountable trace). Two layers of attribution, five levels, three conditions for
provable; end to end 33/33, 25/25, 16/16 (all L-fake). - Three gaps in the native platforms (Native platforms and silently not taking effect): W1 the key-variable allowlist; W2 opencode has no stop event (a full case history of 37 steps, zero verdicts); W3 the harness did not pass
--dir. - Seven measurement errors in the A/B harness for the interactive TUI (plus two more that exist only in code comments), every one of which made the numbers look better than they really were.
- Five silent defects in the universal intake point; among them, Codex refuses to start because of the leftover key
profile = "vacant". - From this round on, the site's claim index has two tiers: the 34 claims imported from the project (
claims.json), and the 24 transcribed from the Vacant repo's decision documents (claims-repo.json). The latter are marked "repo verdict" in the ledger, meaning they are not yet in the official index.
#2026-09-24 — Thesis finalized and full audit
- The full thesis was finalized (
Vacant_可究責層_畢業專題論文.docx/.pdf). - The data index
_index/was completed: 34 claims, and a sha256 manifest of 3,322 files (1,550,582 lines, 325,111,980 bytes). - Fact-check report completed: 8 ERRORs, 22 WARNs, 16 NITs.
- This site was restructured: docs / lab notes / evidence ledger went live.
#2026-09-20 — "Blocked at the exit" refuted; the five-level vocabulary rewritten
The ABPI audit (391 cells) found:
| Check | Result |
|---|---|
| Server-side conversation | all 2,755 turns match |
| Receipt chain | 195 / 195 verify |
| Receipt grade | All grade C |
| "Blocked at the exit" | Does not hold |
Fact: refused delivery is only a flag and an exit code. The outer script does not read the exit code, and in 7 of the 59 refused cells, the files were copied out and scored.
Correction: the project switched to the five-level vocabulary (Observed / Decided / Withheld / Mediated / Attested), and requires each level to declare its own coverage. The furthest we can claim publicly is Decided.
Design response: release / publish capability separation. publish is the only component able to write outward, and it does not read the exit code.
Same day: a field test of framework hooks showed that an agent can delete its own hook configuration → hooks can serve only as an enhancement, not as a root of trust. The first grade-A receipt from a real agent was signed.
#2026-09-18 — R532 amendments one and two
AMEND1: the analyzer checked only significance, not direction, and so labeled the result EFFECTIVE. That label is voided. Only RULED_OUT may be cited (this round's threshold: interval upper bound < +2.0 pp), and it is explicitly forbidden to say "the loop is harmful".
AMEND2: the premise of a "stronger model" does not hold — the 27B OFF arm at 74.8% vs the 12B at 75.2%. We did not actually compare against a stronger model.
A number was corrected at the same time: the gate cuts false delivery by roughly 40%, not by half. The original thesis said "halved," which was judged ERROR E6 — the two rates used different denominators (120/836 = 14.4% vs 211/836 = 25.2%).
#2026-09-13 — R460R: the headline claim loses to its own stability rule
| H-MIX − CONFORM | +5.83 / +4.17 / +0.83 / +2.50 / +4.31 pp |
| Holm p | .6301 / .9165 / 1.0000 / .6776 / .9224 |
| Passed | 0 / 5 |
Status: downgraded from "supported" to Same sign, unresolved.
Five mandatory accompanying statements: same sign all five times; zero passes of Holm; all five uncorrected intervals overlap R460; all five upper bounds are below +13.33; the cross-task-bank result also did not pass Holm.
Banned phrasings: "replication is stable," "replication failed," "the effect disappeared," "equivalent," "a tie," "the loop is useless." No pooling n, no averaging, no picking one run to report.
Same day: the main hypothesis of R529 across four task-bank sets (716 tasks) did not hold (+1.12 pp, Holm p=.3409). Only afterwards did we discover that the two hosts had different reasoning settings.
#2026-09-09 — The first sentence we were asked to delete
In the R440P audit on 2026-09-03, the "reviewer committee" role was deleted.
The analysis at the time (reviewer accuracy 0.7552 vs a zero-intelligence baseline of 0.7522, a gap of +0.29 pp) led the project to use the customer's own executable acceptance tests as the referee instead.
Execution replaces opinion; receipts replace votes.
#2026-09-03 — R440P: the gate is born; R440Q: a premise is refuted
- R440P: removed the reviewer committee and the single-round revision (saving 3 + 1 calls per task), and switched to the visible acceptance gate.
- R440Q: in LCB v1, 91/91 hidden test sets are supersets of the visible tests (
V ⊆ GT), so "passes hidden but fails visible" is impossible by construction. This refuted the first premise of R440P §7.
Upgraded to a main conclusion:
If a requirement cannot be run, there is no free referee; the mechanism degrades into "ask a model" — and that is exactly the thing that measured worst.
#2026-09-01 — Two hypotheses proposed, then ruled out
- H-A, ceiling: the 35b worker is too strong → switching to 12b will reveal the gain. Ruled out. ON vs OFF5 p = 1.0000.
- H-B, hard tasks: MBPP+ is too easy → switching to LiveCodeBench will reveal the gain. Ruled out. ON vs OFF5 p = 0.4244.
#2026-08-30 — Experiment G: the committee loses to majority vote
The three pre-stated criteria of R437:
| Criterion | Verdict |
|---|---|
| ① The gauge has a signal | ✓ 26.44% |
| ② The three arms differ discernibly | Not measured |
| ③ ON beats OFF5 at equal budget | ✓ The answer is no |
A data-quality claim was downgraded at the same time:
"The first clean, complete dataset" → changed to "no known bug contamination, paired subset n=101." ON-arm infra_void 66/179 = 36.9%, equal_budget_comparison_valid = false.
Another counterexample: ON 75.25% vs OFF5 77.23% (−1.98 pp); after fixing an unrelated typing allowlist bug it became 84.16% vs 81.19% (+2.97 pp). The direction of the point estimate flipped because an unrelated bug was fixed.
#2026-08-06 — The "novel attack" claim withdrawn
The pulse attack is Srivatsa et al.'s (2005, TrustGuard) strategic oscillation; Hoffman et al. (2009, ACM Computing Surveys §5.4) list it as a named category, oscillation attack.
Even our headline had been anticipated: Srivatsa measured attacker cost ratios across four oscillation models of 1 : 2.28 : 2.08 : 1.36, and proved that an attacker who knows the memory window maxH does best by oscillating with period = maxH. Our "1.81×" is both older and weaker, and we had already judged it ourselves to be noise (permutation test p=0.115, statistical power 25%).
Six of the seven components already have equivalent prior work.
#2026-08-06 — Six pulse conclusions: three refuted, two downgraded
| Original conclusion | Verdict |
|---|---|
| Temporal structure barely affects the total take (1.81×) | Overstated — decomposed, it is exposure 6.06× and efficiency 8.45× offsetting each other in opposite directions; statistical power 25% |
| The blind spot matters far more than parameter choices | Overstated — propped up by the degenerate endpoint blind=1.0; the interaction η²=0.264 is 4 times the main effect |
| Once the blind spot exceeds 0.5–0.75, pulsing does worse than sustained bad behavior | Refuted — paired difference −0.57, CI crosses 0; the measured 81/84/87 are all above 79 |
| A larger audit cannot rescue the blind spot | Refuted — at blind spot 0.5, audit 0.1→1.0 cuts the total take by 82%, p=5.5e-6 |
| Caught once = permanently delisted | Overstated — confounded; slash 0.9 comes back at round 177 |
| At equal budget, crude beats pulse | Refuted — E19 was never an equal-budget comparison; correctly tied at budget=2 it is 1.67 vs 0.97, p=0.0015 |
Two were kept: the detection probability is a single product, (1 − blind spot) × sampling rate × accuracy; and the blind spot × temporal structure interaction, η² = 0.264.
Also: the original report said 1,741 per-round records; the correct number is 1,740.
#2026-08-03 — The silent damage of config-digest
SimConfig.digest() is both the RNG seed and a hash of every field. The consequence: "adding one optional parameter" silently shifts every number in E1–E16.
Fix: fields left at their default values are excluded from the digest; the three digests for whitewash / patient / sybil are pinned so they reproduce bit for bit.
#2026-07-26 — Independent review: four sentences we were asked to delete
The review targeted commit f9a381a. Verdict: what this architecture currently increases is accountability, not trust.
Three necessary conditions; two do not hold:
| Status | Evidence | |
|---|---|---|
| ① Signals cannot be cheaply forged | Does not hold | Impersonation inherits reputation: 0.50 → 0.7417 |
| ② Punishment actually bites | Does not hold | For low scorers, slash is a reward: 0.0161 → 0.0312 → 0.0588 → 0.1053 |
| ③ The audit anchor is credible | Partly holds | The sampling seed is hard-coded and publicly predictable |
The four sentences we were asked to delete:
- "Teeth give wrongdoing real consequences" (original: 「牙齒讓作惡有真實後果」)
- "Credit follows the memory, not the body" (original: 「credit 跟記憶走、不跟身體走」)
- "Putting the substrate into the key blocks cross-brain laundering" (original: 「substrate 進 key 堵住跨腦洗白」)
- "Sybil attacks require paying a cost" (original: 「Sybil 攻擊需要付出成本」) (reason: the anonymous attack is 0.05 × N, linear; at N=200, total weight 10.0)
Two more bugs in the statistics tools:
- The normal-approximation branch of
wilcoxon_signed_rank_exactdouble-counted the tie correction: with n=30, 20 positive and 10 negative, the code said p=0.0288 (significant), while the exact value is 0.0987 (not significant). - The bootstrap CI used
hash()as its seed, which is not reproducible across processes: the same data produced 53,478 and 1,628.
Fix branch: 4 P0 + 6 P1 items, TDD. 361 passed / 1 skipped (baseline 330), tests mapped to 29/29 review comments, attacks blocked 12/12 on both the Mac and the VM. 6 structural gaps were deliberately left, the first being "identity is still free."
#2026-07-26 — Entry cost: neither road should be taken
14 mechanism simulations. An exogenous entry fee is actively harmful (stake=0 blocks everything; stake=2 take 5.00, ROI 2.354), and endorsement with joint liability is a pure net loss (at λ=0.9 honest participants lose 0.691 while the gain is 0).
The real constraint is reviewer accuracy: at acc = 0, take 16.65, ROI 1.04 — the only cell in the whole table where "wrongdoing starts to pay."
Verdict: the premise was wrong.
#2026-07-09 — A record downgraded by ourselves
Going back to check the 2026-07-05 end-to-end record, we found that model I/O persistence had never taken effect at all (/tmp/vac_app.jsonl was only 357 bytes).
That record was reclassified from "evidence" to "single-case demonstration."
#2026-06-30 — Network contamination disclosed
The first a2hard round of the group-routing re-verification printed ✓, but a per-call I/O audit caught calls 20–23 (exactly good_1's 4 peer reviews) hitting Connection refused / reset by peer; the empty strings were matched as passes by the negated \bYES\b pattern, good_1's peer reputation was wrongly pushed to 0.50, peer agreement with ground truth fell from 88% to 75%, and the catch rate fell to 71%.
The apparent "−4%" was network noise.
What was fixed was the measurement, not the experiment: call() got retry×4. Clean rerun: 0 errors, 0 empty strings, 0 reasoning leaks, reviewers 16 YES + 16 NO.
#2026-06-28 — KS-1: both main validation designs killed
The two designs were sent into adversarial workflows of 17 and 10 agents respectively. Both were killed.
On a frozen, stateless language model, "making the consequences real" and "writing the consequences in the prompt so they sound more real" are the same intervention. Vacant's real mechanisms — signatures, decentralized peers, persistent reputation, lineage — not one of them entered any experimental arm.
This later became the methodological core of the whole project (the KS-1 invariant), and led directly to the experimental designs of the memory layer and the trust layer.
Citation errors in the same round: I-CALM's "hallucinations −50%, accuracy +2–8%" is not in the original paper; Trust Over Fear had no effect at baseline; 2510.08624 is from 2025; Tetlock's cheap talk was applied in the wrong context.
#2026-07-17 — External anchors registered
The original texts and sources of 114 external references were registered into the references folder, each one archived and registered with a SHA-256. The key passages of Appraisal of Human Trust (Ebrahimi et al.) were compared word for word, Chinese against English.
#2026-07-03 — The main line redefined as "memory is responsibility"
Research history has the full table of milestones.
#Major changes on the site side
| Date | Change |
|---|---|
| 2026-10-07 | One shared navigation across the whole site; the docs and lab-notes indexes gained four "I want to…" entry points and the verdict distribution bar; the evidence ledger can be filtered by axis / verdict; the lab-notes index can be filtered by verdict; each page's header lists the verdicts the page cites; missing glyphs in the heading font filled in; old-site pages removed, with the 404 page pointing visitors back. |
| 2026-09-24 | Site restructured into three layers: / (identity and story), /docs/ (in-depth documentation), /blog/ (lab notes). The 34 verdicts are computed from a single data file, and the sitemap covers every page. |
| 2026-09-13 | Home page turned into the clay theatre; text cut to 53%. |
| 2026-09-12 | The archive became a page of its own. |
| 2026-09-07 | data/status.json is now produced by a script in the main Vacant repo, and outputs only independently recomputable quantities. |
#Next
- Verdicts on every claim: Evidence ledger
- The full history: Research history

