Aloitetaan siitä osasta, joka katoaa helpoimmin muuta lukiessa: rahaa ei otettu. Yhtäkään lompakkoa ei veloitettu kahdesti, yhtäkään korttia ei veloitettu, eikä yhtäkään tilauskiintiötä kulutettu työhön, jota ei koskaan tapahtunut.
Rikki oli numero ruudulla. Joillakin tileillä oman tilisivusi kulutuserittely näytti liikaa — pahimmalla mittaamallamme tilillä 2,4-kertaisesti sen kirjanpidon, jota sen pitäisi tiivistää. Kirjanpito oli koko ajan oikein. Samoin kuukausikatot, jotka luetaan aivan muualta. Kyse oli näyttövirheestä, se on korjattu, ja tässä on sen syy.
Avain, joka etsi jotain mitä kukaan ei ollut kirjoittanut
Työ, joka syntyy jostakin tekemästäsi — päivittäisen kulutuskoosteen päivitys, suositusbonuksen kirjaus, ilmoituksen jakelu — ei tapahdu pyyntösi sisällä. Pyyntö kirjoittaa viestin, ja taustakuluttaja poimii sen hetkeä myöhemmin; juuri tämä estää hidasta sivuvaikutusta hidastamasta nopeaa sivua.
Tämän järjestelyn vaara on tehdä sama työ kahdesti, sillä välittäjä toimittaa mielellään saman viestin uudelleen häiriön jälkeen. Puolustus on saapuneet-kansio: ennen käsittelyä kuluttaja varaa viestin kirjoittamalla rivin, joka kantaa kyseisen viestin avaimen, ja yksilöivä indeksi tekee toisesta varauksesta mahdottoman.
Meidän varauksemme perustui pariin — vuokralainen, jolle viesti kuului, sekä viestiavain — ja tätä paria haettiin viestin kuoren kantamaa vuokralaistunnusta vasten, joka on täytetty.
Varausrivit eivät kantaneet vuokralaistunnusta lainkaan. Jokainen oli tyhjä, ja oli ollut sitä alusta asti. Entiteetin oma dokumentaatio väitti juuri näillä sanoilla, että kehys leimaa sen lisäyksen yhteydessä. Se ei koskaan tehnyt niin. Tuotannossa mitattuna löytöpäivänä: kaikki 3 344 saapuneet-riviä tyhjiä, kun taas tuottavalla puolella 1 174 rivistä 1 451:stä kantoi todellista vuokralaista — juuri siksi kukaan ei epäillyt lukevaa puolta.
Haku siis pyysi (vuokralainen, avain), tallennettu rivi oli (ei mitään, avain), eivätkä ne voineet koskaan täsmätä.
Mikään ei epäonnistunut, ja juuri siksi tämä jatkui viikkoja
Haku, joka ei voi koskaan täsmätä, kuulostaa siltä, että sen pitäisi heittää virhe ensimmäisellä yrityksellä. Se teki päinvastoin.
Varaus päätti, että viesti on uusi. Lisäys osui sitten yksilöivään indeksiin ja hylättiin kaksoiskappaleena — aivan oikein, sillä rivi oli jo siellä. Varahaara nappasi hylkäyksen ja luki sen hyväntahtoisesti: jokin toinen toimitus on varmaankin varannut tämän, täällä ei ole tekemistä. Kuori jäi tilaan "vielä käsiteltävänä", ja koska se oli vielä käsiteltävänä, seuraava toimitus poimi sen ja teki työn uudelleen.
Jokainen kuluttaja käsitteli omaa ruuhkaansa uudelleen noin neljänkymmenenviiden sekunnin välein, loputtomiin. Kaksikymmentäkuusi teki niin. Yksi tuotantorivi valmistui 333 tuntia saapumisensa jälkeen — ja oli valmistunut yhä uudelleen suurimman osan tuosta ajasta.
Mitä se todella rikkoi
Noista kahdestakymmenestäkuudesta kuluttajasta neljä kerryttää sen sijaan että ylikirjoittaisi. Nuo neljä ovat laskutusprojektiot, joita kulutussivu lukee, ja siellä asia tuli pintaan.
Niillä oli nimenomainen suojaus juuri tätä vastaan, kirjoitettu elokuisen tapauksen jälkeen, jossa yksi ainoa tapahtuma sovellettiin mittariin yhdeksän kertaa. Suojaus merkitsee rivin onnistuneeksi ennen käsittelyä, jotta uudelleentoimitus löytää merkin ja pysähtyy. Merkki kirjoitettiin joka kerta oikein. Seuraava varaus etsi sitä sitten samalla rikkinäisellä avaimella eikä löytänyt. Takuu oli ollut tyhjä julkaisupäivästään lähtien.
Se, mihin tämä ei koskenut, kannattaa luetella täsmällisesti, sillä "laskutusprojektio" kuulostaa hälyttävältä, kun tosiasiat eivät ole:
- Kirjanpito oli oikein. Jokainen tekoälykutsu kirjoittaa tasan yhden laskutustietueen omalla hintatilannekuvallaan, eikä mikään tällä polulla kirjoita niitä.
- Yksikään lompakko ei liikkunut. Saldot tulevat kirjanpidosta, ei koskaan koosteesta.
- Yksikään katto ei liikkunut. Budjettivahti lukee erillistä laskuria, ja se on ainoa totuuden lähde sille, paljonko olet käyttänyt tässä kuussa. Ketään ei katkaistu liian aikaisin paisutetun luvun takia, eikä kukaan päässyt läpi, jonka ei olisi pitänyt.
Ainoa asia, joka lukee kyseistä koostetta, on oman tilisivusi kulutushistoria — summasi ja erittely siitä, mihin se meni. Tämä on koko vaikutussäde, ja se koostui liian suuresta lukemasta.
Puolisko, jota kukaan ei katsonut
Sama rikkinäinen haku istui toisessakin paikassa: polulla, joka ajetaan viestin epäonnistuessa. Siellä se ei koskaan löytänyt riviä, jota sen piti päivittää, ja suoraan sen alla istui haara kommentilla "käytännössä saavuttamaton" — joka palautti jokaisella epäonnistumisella "tämä epäonnistuminen on lopullinen".
Niinpä uudelleenyrityslaskuri ei koskaan edennyt eikä yksikään myrkyllinen viesti päätynyt koskaan kuolleiden kirjeiden jonoon. Kokonainen virheenkäsittelykerros oli pois päältä, sellaisen kommentin takana, joka kertoi jokaiselle lukijalle, ettei täällä ole mitään tarkistettavaa.
Korjaus
Molemmat haut avautuvat nyt viestiavaimella kuluttajaryhmän sisällä, mikä on se, mitä yksilöivä indeksi joka tapauksessa pakottaa. Viestiavaimet johdetaan ne tuottaneen kohteen tunnisteesta, joten ne eivät rakenteellisesti voi törmätä vuokralaisten välillä.
Leimaamista väittänyt dokumentaatio korjattiin, ei poistettu. Juuri tuo lause oli ansa, ja sen poistaminen ei olisi jättänyt jäljelle mitään, mikä kertoisi jonkun vihdoin tarkistaneen.
Yhdeksän testiä naulaa käytöksen. Kuusi niistä kaatuu vanhaa koodia vasten, minkä varmistimme laittamalla vanhan koodin takaisin.
Siivous jälkikäteen
Paisuneet rivit korjaavat itsensä. Työntekijä rakentaa päiväkoosteet kirjanpidosta uudelleen tunnin välein, kahden päivän ikkunassa. Se oli käynyt koko ajan ja hävinnyt: kerran tunnissa neljänkymmenenviiden sekunnin välein uudelleen soveltavaa kuluttajaa vastaan ei ole reilu kilpajuoksu.
Kun kuluttaja ei enää aja uudelleen, työntekijä voittaa. Ne kaksi päivää, jotka olivat vielä tuossa ikkunassa, rakennettiin kirjanpidosta uudelleen heti korjauksen mentyä tuotantoon. Kaksi aiempaa päivää oli jo pudonnut ikkunan ulkopuolelle, ja niille jää oma tilimme sekä yksi merkityksetön ero muualla — joten jätimme ne, sen sijaan että olisimme leventäneet tuotannon ikkunaa sen perässä. Tämä tuntui paremmalta kuin vihjata, että siivous oli täydellinen.
Mitä tästä jäi käteen
Kaksoiskappaleiden karsinta-avaimen on heijastettava sitä, mitä indeksi todella pakottaa, ei sitä, mitä koodi uskoo kirjoitetun. Tämän avaimen kaksi puoliskoa saivat syötteensä eri kentistä, eikä kumpaakaan ollut koskaan mitattu toista vasten. Nyt molemmat on, ja testi, joka sen todistaa, muuttuu punaiseksi sitä versiota vasten, joka oli väärin.