Den långsamma vägen, gjord uthärdlig Kapitel 15 av 23 English

Kartan · Del två · Maskinen · Kapitel 15 av 23

Var datan bor och hur den hålls ärlig

Varje siffra med sitt ursprung, varje värdering med sina åtta deklarationer, varje körning med sin egen rad. Varför en värdering som inte kan slutföra sitt protokoll skriver ut ingenting i stället för ett tal med en varning. Ungefär 8 minuter.

Del ett sa att varje siffra bär med sig var den kom ifrån. Det här kapitlet handlar om vart det tar vägen, och om den enda regel som håller hela registret pålitligt: ett tal med ett hål i sitt ursprung skrivs inte ut med ett förbehåll. Det skrivs inte ut alls.

En siffras resa från rapport till sida, med ursprunget kvarSju rutor uppifrån och ned: emittentens rapport; läst från sidan; införd som UNVERIFIED, snedstreckad; återläst av ägaren, lila; VERIFIED och vilken sort, grön; körningsprotokollet; ett värde och sedan ett avstånd, blå. Bredvid varje steg från det andra och framåt står en liten streckad etikett: källa, period, sida, datum. emittentens rapportbolagets egen rapport, dateradläst från sidansiffra, period, källa, sidnummerkälla · periodsida · datuminförd som UNVERIFIEDangiven siffra, ej kontrollerad änkälla · periodsida · datumåterläst av ägarenmot sidan som anges bredvidkälla · periodsida · datumVERIFIED, och vilken sortmärkt · tvärdokument · samma sidakälla · periodsida · datumkörningsprotokolletåtta deklarationer, annars inget värdekälla · periodsida · datumett värde, sedan avståndsidan visar hur långt kursen ärkälla · periodsida · datummärkningen följer siffran och skrivs ut bredvid denen siffra utan märkning, eller för fel period, är DATA SAKNAS
Ett tals väg. Det kommer in som overifierat, läses tillbaka av en människa, och först då bär det en verifieringsmärkning som säger vilken sorts kontroll det klarade. Dess ursprung följer med ända till sidan.

Fyra ställen där en siffra kan bo

  • Körningsdatabasen. En rad per bolag och nattkörning: kursen, de uträknade siffrorna, utlåtandekoderna, blockeringarna. Ingenting läser tillbaka den ännu; den finns för att samla på sig, så att historiken kan rekonstrueras senare.11vss/store.py.
  • Grunddatalagret. Varje redovisningsperiod som någonsin hämtats för ett bolag, sparad för gott. Ett kvartal ersätter aldrig ett år. Ett lager som rensade gamla perioder skulle göra det omöjligt att återskapa en gammal värdering.22Beslut E49: lagret behåller varje period det någonsin har hämtat. Beslut E17: ett kvartal ersätter aldrig ett år.
  • Screenerns ögonblicksbilder. En liten databas per screeningkörning, med råa dagliga kurser, aldrig uträknade siffror, plus listan över bolag, avvisningarna och en hämtningsstatus per bolag. De fyra senaste kursbilderna sparas; varje rangordning sparas för alltid, eftersom varje framtida jämförelse vilar på den.33vss/snapshot.py; lagringstiden beskrivs i projektbeskrivningen §6.5.
  • Ägarens fil. Statusar, nivåer, värden, stopp, anteckningar och handinmatade siffror. Spårad under versionshantering, på ägarens beslut, så att beslutens historik finns i filens historik.44README om config/watchlist.yaml, spårad sedan 2026-08-25.

Körningsprotokollet: åtta deklarationer eller ingenting

En värdering är inte ett tal. Den är ett tal plus allt som avgjordes för att få fram det. Så innan ett värde får skrivas ut måste körningsprotokollet för den värderingen deklarera åtta saker: vilket antal aktier som användes och per vilket datum; hur aktiebaserad ersättning behandlades; var bolaget bokför sin ränta, och därmed vad "fritt kassaflöde" betyder för det; varje post i bryggan från värdet på hela verksamheten till värdet på dess aktier; aritmetikens konventioner; diskonteringsräntan med sitt ankare och tillväxttakten med den bedömning den kom från; de tre as-of-datumen och kursdatumet; och ursprunget för varje indata.55vss/runrecord.py: 'EN KÖRNING UTAN KOMPLETT PROTOKOLL SKRIVER INTE UT ETT VERKLIGT VÄRDE. Inte \'skriver ut ett med en varning\'.'

Varför att vägra slår att fortsätta

Det rimligt klingande sättet, som är fel

Sju av de åtta deklarationerna är på plats. Aktieantalet finns men datumet det angavs saknas. Skriv ändå ut värdet, med en anmärkning: "aktieantalets datum okänt". Ägaren kommer att se anmärkningen.

Vad koden gör

Värderingen kastar ett fel och skriver inte ut något värde för det bolaget. Rapporten säger vilken deklaration som saknas. De andra bolagen i samma körning påverkas inte: ett bolags saknade deklaration är det bolagets DATA SAKNAS, aldrig en orsak att stoppa körningen för de övriga.

Anmärkningen skulle läsas första gången och inte den tionde. Ett tal på en sida är ett tal; förbehållet bredvid är dekoration, och dekoration ignoreras. Det enda förbehåll som inte går att ignorera är att talet saknas. Därför vägrar registret, och vägran är en rad i rapporten som säger vad du ska gå och leta efter.

Det finns två nivåer av vägran, och det är värt att vara exakt. En felaktig eller saknad siffra för ett bolag försämrar det bolagets rad och inget annat; nattkörningen är byggd så att ett enskilt bolag aldrig kan bryta den. En korrupt ägarfil, en felformad post eller en handskriven köpkurs, stoppar hela körningen innan den börjar, högljutt, eftersom en körning på en korrupt fil skulle skriva korrupta rader i registret för varje bolag.66Körningsledaren fångar fel per bolag och fortsätter ('ett bolag bryter aldrig körningen'); konfigurationsläsaren låter hela körningen misslyckas vid en felformad post eller en proveniensmotsägelse.

Kontrollerad, okontrollerad, saknad, inte där

En siffras verifieringsstatus följer med den. Den kommer in okontrollerad. En människa läser tillbaka den mot sidan som anges bredvid och markerar den som kontrollerad, och markeringen anger vilken sorts kontroll: mot tillsynsmyndighetens strukturerade data, över två skilda dokument, eller mot samma sida den kom från. Där en siffra eftersöktes i en fullständig rapport och inte finns, säger registret det, vilket är något annat än en nolla och något annat än saknad.77Verifieringssorter: beslut E40 och vss/manual.py. Ej redovisad: beslut E85. En nolla kräver ett underlag: beslut E25.

Att två oberoende avläsningar stämmer överens är det som gör en siffra till ägarens. Där två avläsningar skiljer sig åt extraheras siffran på nytt innan någon eskalerar den, eftersom den första frågan om en avvikelse är om den ena avläsningen helt enkelt var fel.88Beslut E104.

Att avbryta en screening på grund av ett hål

Screenern har ett ställe där den stannar i stället för att fortsätta: när en kvartalsjämförelse den behöver inte kan bildas för att ett kvartal saknas, bryter den körningen i stället för att slå ut ett bolag på ett hål. Ett test av fallande omsättning som underkänner ett bolag för ett kvartal som leverantören inte levererade vore precis det tvåsidiga felet från kapitel 9, i stor skala.99vss/filters.py, omsättningsledet: en jämförelse som kvartalen inte kan bilda 'bryter körningen i stället för att slå ut på ett hål'.

Beslut
En värdering skriver ut ett värde bara med ett komplett protokoll om åtta deklarationer; annars skriver den ut ingenting för det bolaget och säger vad som saknas. Ett enskilt bolags fel stoppar aldrig körningen; en korrupt ägarfil stoppar den innan den börjar.
Varför
Ett förbehåll bredvid ett tal läses en gång. Ett saknat tal läses varje gång.
Kostnad
Bolag står värderade till ingenting så länge en deklaration saknas, och rapporten blir längre av att förklara varför. Ägaren lägger kvällar på att leta aktieantalsdatum.

Källor för det här kapitlet

  1. Registret, körningsprotokollet och lagret — läst ur det här repot: vss/store.py; vss/runrecord.py; vss/snapshot.py; vss/manual.py; vss/runner.py; reference/FRAMEWORK-EDITS.md E17, E25, E40, E49, E85, E104

Den långsamma vägen, gjord uthärdlig. Byggd 2026-09-13 ur repot som det såg ut den dagen. BOLAG A och BOLAG B är påhittade; inget bolag, ingen kurs och inget innehav förekommer på den här sajten. Inte finansiell rådgivning: en privatinvesterares metod, delad som den är.