I augusti 2026 genomförde vi experimentet som vår egen fallrapport varit skyldig i månader: bär den fulla granskningsapparat vi byggt sin kostnad mot en enda billig genomgång? Vi förregistrerade det, bedömde blint och använde publicerade professionella revisioner som facit. Den förlorade ett mål rakt av och kunde inte utses till vinnare på det andra. Sedan fann en retrospektiv revision av körningarna i september att jämförelsen inte var så ren som vi hade sagt. Den här anteckningen bär allt detta, eftersom regeln denna praktik säljer (en praktik som inte kan visa var den hade fel har ingen ställning där den säger sig ha rätt) gäller oss först.
Vad vi gjorde
Två mål, båda offentlig kod med en offentlig professionell revision vid en angiven commit, så att facit fanns innan vi började och inte var vårt eget:
- Mål 1, BDK (
bitcoindevkit/bdk_walletvid775e4aee, v1.0.0-beta.2), mot Wizardsardines revision från december 2024: tolv fynd som nämnare. Kördes den 14 augusti. - Mål 2, ZF FROST (
ZcashFoundation/frostvid5fa17ed, v0.6.0,frost-core), mot NCC Groups bedömning från oktober 2023: fyra fynd som nämnare. Kördes den 22 och 23 augusti.
Två armar på vardera. Arm A, den billiga nivån: en genomgång av en enda utomstående modellinje med självkontroll av de egna källhänvisningarna i samma genomgång. Arm B, den fulla apparaten: en panel av sökande modellinjer, därefter en instans som ”konstruktörens advokat”, som argumenterar för de tillitsantaganden koden avser, därefter en adversariell nåbarhetskontroll, därefter en slutkontroll. Båda armarna utgick från källkoden före rättning, med samma fyndneutrala uppdragsregler, och fick aldrig veta vad revisionen hade funnit. Nämnare och matchningsregel (samma sänka och samma mekanism) frystes skriftligt före bedömningen. Varje rapport bedömdes sedan av en blind analytiker som inte kört någon av armarna och som kontrollerade varje påstående mot källkoden. Behållningsregeln var bindande fastställd i förväg: apparaten bär sin kostnad om den återfinner minst två fler av revisorns fynd, eller om den billiga armen levererar minst två fler källmotbevisade påståenden.
Vad vi fann
| Billig nivå | Full apparat | |
|---|---|---|
| Mål 1, återfunna av revisorns 12 fynd | 8 | 6 (5 vid strikt läsning) |
| Mål 1, källmotbevisade påståenden, levererade | 0 av 25 | 1 av 39 |
| Mål 2, återfunna av revisorns 4 fynd | 4 | 0–1 (bedömarberoende, se nedan) |
| Mål 2, källmotbevisade påståenden, levererade | 3 av 11 | 1 av 7 (0 hos den andra bedömaren) |
På det första målet var apparaten helt enkelt sämre: färre återfunna fynd, ett falskt påstående mer, ungefär sex gånger så många modellanrop, två instansavbrott. På det andra gjorde den det enda vår hypotes hade förutsagt och sänkte antalet falska påståenden i en brusig miljö (dess förregistrerade precisionströskel utlöstes); det betalade den genom att radera de fynd revisorn hade bedömt som verkliga (alla fyra hos en bedömare, tre av fyra hos en annan), efter att dess egen sökpanel hade funnit alla fyra. Den förregistrerade regeln hade inget sätt att väga en precisionsvinst mot ett ras i återfunna fynd, och kunde därför inte utse någon vinnare; vi kallar inte det en vinst.
Mekanismen var densamma på båda målen, och det var inte de sökande. Advokatinstansen och nåbarhetsinstansen tar bort varje kandidat som vilar på ”ett antagande koden dokumenterar, eller en part som hotmodellen litar på”. Det testet uppfylls både av falska positiva (som är trygga att ta bort) och av verkliga fynd vars hela poäng är att det dokumenterade antagandet inte upprätthålls. I FROST sade kodens egna kommentarer att anroparen validerar indata; revisorn hade bedömt att just den fördelningen var defekten; vår advokat trodde på kommentarerna. De enskilda avvisningarna var försvarbara läsningar. Felet var att avgöra frågan tyst, genom radering.
Vad vi ändrade
- Filtren annoterar; de raderar inte längre. En instans som skulle avfärda ett fynd på grund av antagande, avsikt eller tillit flaggar det nu och låter det stå kvar i rapporten, så att en människa avgör.
- Vi satte samman mål 2:s bevarade domar på nytt i det driftläget, mot ett förregistrerat test (23 augusti; filtrens befintliga domar blev flaggor, en ändring av etikett och inte en ny körning, denna gång bedömda av en enda blind bedömare över alla 24 kandidater). Återfunna fynd gick tillbaka till 4 av 4, mekaniskt, eftersom inget raderades. Den intressanta siffran var flaggan: var och en av de sju falska påståendena bar en flagga, och inget av de sju oflaggade objekten var falskt; på detta enda mål fungerade flaggan som ett såll. Men tio av de sjutton flaggade objekten var verkliga, sex av dem revisorns egna. Som dom är samma flagga destruktiv. Flaggan säger vad du ska titta på, inte vad du ska kasta: och vad det kostar en granskare att avgöra sjutton flaggade objekt, eller om en människa under tidspress motstår att radera på flagga, är oprövat.
- Den billiga nivån är standardvalet: ett policybeslut grundat på två körningar, preliminärt, och behållet efter att revisionen nedan snävade in jämförelsen till dess precisionsskillnad. Den tunga panelen är reserverad för en yta med en verkligt hög rå andel falska positiva, där en människa kommer att avgöra flaggorna.
- En ”precisionsvinst” räknas inte längre för sig själv. På mål 2 utlöstes precisionströskeln därför att samma filter hade fått de återfunna fynden att rasa; förregistreringen behandlade de två som oberoende rattar, och första utkastet till vår egen redogörelse gick vidare och uppfann en viktning efter att ha sett resultatet; en slutkontroll i granskningen fångade det. Framåt räknas en precisionsvinst bara om apparatens återfunna fynd ligger högst ett fynd under den billiga armens.
Sedan föll mätningen på sin egen revision
Den 13 september fann en retrospektiv revision av varje lagrad instanssession (1 385 stycken) att den billiga armen inte var så blind som protokollet hade sagt. Dess sessioner hade hämtat, bland andra sidor, målens egna ärendehanterare: ärenden som namnger just de funktioner och objekt som flera av revisorns fynd handlar om. Ingen av de sidorna anger revisionens mekanismer, så ingen läste något facit; men protokollets mening att armarna ser ”endast den fastnålade källkoden” var falsk, och den kontaminationskontroll vi kört var en kall minnessond, som inte kan upptäcka en hämtning under körning. Apparatarmens sessioner hade rensats av dess eget körverktyg; dess exponering är därmed för alltid okänd.
En uppföljning samma dag gick fynd för fynd. På BDK ligger två av de åtta rader som krediterats den billiga armen på den funktion som de hämtade ärendena namnger; de övriga sex visar ingen registrerad överlappning. På FROST ligger tre av de fem krediterade raderna på exakt den parameter som det enda hämtade ärendet handlar om: en direkt ämnesträff, inte bara nåbarhet, även om ärendet aldrig anger mekanismen. Även om man krediterar den billiga armen enbart de okorrelerade raderna (sex av åtta, två av fem) återfinner den fortfarande minst lika mycket som apparaten på båda målen; riktningen står alltså kvar, marginalen inte. Och uppföljningen kunde inte slutföras: den billiga armens sessionsloggar hade rensats av verktygets egen städrutin inom timmar efter den första revisionen, och dess råa fyndtext hade aldrig sparats; de fullständiga hämtningslistorna och tidpunkterna fynd för fynd går därmed inte att återskapa.
Vad detta välter: den billiga nivåns siffror för återfunna fynd som rena siffror. Vad det inte välter: att mätningen ägde rum, att oraklen var externa, att förregistrering och blindbedömning var verkliga, och (fyndet som betyder något) att apparatens filtrerande instanser raderade fynd som en professionell revisor hade bedömt som verkliga. Det fastställdes genom att läsa instansernas egna avvisningar, inte genom räkningarna av återfunna fynd. Båda revisionerna kördes av samma modelleverantör som orkestratorn; de står i akten med den etiketten.
Fem svagheter till som akten bär, de flesta funna av granskningsinstanser och inte av oss: den blinda bedömaren kom från samma modelleverantör som orkestratorn och som apparatens sammanslagningsinstans, framtvingat av tillgänglighet och mildrat av kontroll mot källkoden, men en korrelationskanal i ett experiment om dekorrelation; samma utomstående modellinje som körde den billiga armen satt också som apparatens nåbarhetsgranskare på båda målen, så en del av skillnaden i återfunna fynd är en modellinje som är oenig med sig själv mellan roller; den billiga armen som den kördes var tunnare än den förregistrerade (ingen separat kontroll av ärendehanteraren, ingen separat kontrollsvit), och på mål 1 skrevs minnessondens resultat aldrig in i körloggen; apparaten kördes med två sökande modellinjer mot ett förregistrerat minimum om tre, så en version i full styrka kan tänkas göra bättre ifrån sig, även om förlusterna kom från filtren, som en tredje sökande inte skulle ändra; och en tredje blind bedömare, som bedömde apparatens sju fynd på mål 2 på nytt, höll med om sex och vände det avgörande, vilket är skälet till att den rutan säger 0–1 och inte 0.
Vad detta ger dig
Ingenting på den här sidan är ett påstående om träffandel; det är tvärtom. Vad det är: förmågan att köra denna mätning, förregistrerad, blindbedömd, mot en offentlig revision, med en kontaminationskontroll som undersöker vad en instans hämtade snarare än vad den minns, och som kopierar sessionsloggen till ett varaktigt lager vid bedömningstillfället, eftersom loggarna bakom denna revision var borta inom dygnet. Den förmågan införs i samma revidering av vår fallrapport som publicerar denna mätning, och det första den mätte var oss. När vi sökte av marknaden i september 2026 fann vi ingen annan granskningspraktik som publicerar en kontrollerad jämförelse av sin egen produkt, än mindre en som den förlorat. Det är ett påstående om vad som står i akten, inte om vem som är bäst; nästa billiga genomgång slår oss kanske igen, och om den gör det läser du det här.
Gränserna som hör hemma här: två mål, ett av dem med en nämnare på fyra rader; den billiga armens siffror för återfunna fynd är hämtningskontaminerade och apparatarmens exponering är för alltid okänd; bedömaren kom från samma leverantör; kostnaderna räknades i modellanrop, vilket smickrar den billiga nivån (dess enda genomgång på mål 1 var det dyraste uppmätta anropet); analysen av vilka av den billiga armens träffar som följde på en hämtad sida är ofullständig och kan inte längre slutföras. Vår fallrapports påstående att ingen kontrollerad jämförelse hade körts var sant när det skrevs och inaktuellt från den 14 augusti; den biblioteksrevidering som publiceras med denna anteckning bär mätningen och båda revisionerna. Om något här är fel rättar vi det skriftligt på den här sidan.