Det levande tillståndet och registret: två minnen i ett operativsystem för företaget

Ett stilla arkivrum sett från sidan: en arkivarie vid ett ståbord med en enda surfplatta som visar en abstrakt blågrå liggare, bakom honom långa rader av identiska grå arkivlådor under en tunn blå LED-linje, morgonljus från ett högt fönster

En kreditcontroller öppnar godkännandekorgen. En agent har föreslagit att en spärrad order släpps: kunden betalade två förfallna fakturor i morse, det öppna saldot ligger nu inom gränsen, förslaget hänvisar till båda betalningarna. Hon godkänner. Tre månader senare bestrider kunden en avgift, och revisorn ställer en enkel fråga: vad visste systemet klockan 09:14 den dagen, och vem beslutade?

Modulerna kan svara på den första halvan bara om ingenting har skrivits över sedan dess. Betalningstabellen visar dagens saldo, inte morgonens. Ordern visar sin nuvarande status, inte den som agenten såg. Själva förslaget är borta ur korgen eftersom det blev verkställt. Ett system där agenter föreslår och människor godkänner fattar beslut i en takt där “vi rekonstruerar det” slutar vara ett svar. Det behöver ett andra minne.

Varför modulernas lager inte kan vara det enda minnet

Lagret under modulerna är byggt för en sak: att ändra företagets nuvarande tillstånd på ett säkert sätt. En order, ett lås, en transaktion, index inställda för att hitta en enda rad snabbt. Det är precis vad det ska vara, och ingenting här föreslår att det ersätts.

Superintelligensen ställer andra frågor till samma data, och var och en av dem belastar det lagret.

Läsning i stor skala. Ett förslag om en kund läser tusentals rader över order, fakturor, betalningar och reklamationer. En modell som bedömer leveransrisk för hela orderboken läser miljoner. Läsningar av den storleken konkurrerar med de transaktioner lagret finns för att skydda.

Historik. Lagret håller det som är sant nu. De flesta frågor en agent får handlar om förändring: vad gränsen var när ordern togs emot, hur länge den här leverantören har halkat efter, om kundens marginal har fallit tre kvartal i rad. Ett lager som skriver över kan inte svara; ett minne som behåller versioner kan.

Hela företaget på en gång. Ordern finns i handel, reklamationen i kundservice, pallen i lagret, stoppet i driften. I ett operativsystem delar de datamodell, vilket är hela poängen med systemet. De delar ändå inte en bekväm plats att läsa alltihop på en gång utan att röra de tabeller som modulerna skriver till.

Vad agenten såg. Ett förslag går att försvara bara om den data det byggde på kan visas senare, exakt som den var. Det kräver en ögonblicksbild, inte ett aktuellt värde.

Hurukans svar är två minnen under en ontologi: det levande tillståndet, som modulerna ändrar sekund för sekund, och registret, en oföränderlig, versionerad historik över varje händelse, varje förslag och varje beslut. Datalagret som rymmer båda är under uppbyggnad; det som följer är hur det utformas.

Vad registret är gjort av

Registret är inte en produkt. Det är tre beslut, vart och ett fattat en gång.

Filformaten är tegelstenarna. Varje händelse och varje ögonblicksbild av en tabell skrivs till filer i ett öppet format. Rader som färdas mellan moduler och kopplingar går som Apache Avro, där schemat följer med datan och kompatibiliteten mellan skrivare och läsare är en formell regel. Data som ligger stilla och läses kolumnvis går som Apache Parquet, där en fråga om två kolumner över miljontals rader rör två kolumner. Vilket format som tjänar vilket jobb är ämnet för Parquet och Avro: händelsen mellan modulerna och registret som superintelligensen läser.

Ett tabellformat är ritningen. Filer för sig är en hög. Ett tabellformat — Delta Lake, Apache Iceberg, Apache Hudi, Apache Paimon — håller de metadata som säger vilka filer som utgör en tabell i ett givet ögonblick, vilket schema den har och hur den har ändrats. Eftersom filerna själva aldrig redigeras förblir varje version av tabellen läsbar: därifrån kommer tidsresan (time travel), och med den svaret på “vad såg agenten klockan 09:14”. Valet mellan dem är ett val om revisionsspåret, och det görs i Revisionsspåret är en tabell: Delta Lake, Iceberg eller Hudi.

En katalog säger var sanningen finns. Något måste hålla pekaren till den aktuella versionen av varje tabell och avgöra vem som får läsa den. Den katalogen, inte filerna, är där suveränitet vinns eller förloras. Den körs på infrastruktur som företaget väljer, och lagret för säkerhet och suveränitet behandlar den som en del av företagets eget bestånd.

Hur en händelse färdas

En modul ändrar det levande tillståndet: en betalning bokförs. Samma ändring publiceras som en händelse under ett kontrakt — ett namngivet schema med en version. Ett flöde landar händelsen i registret som en ny fil under tabellens metadata, inom den fördröjning verksamheten har bett om. Nattlig räcker för en marginalrapport. Minuter behövs för ett kreditbeslut. Sekunder behövs för en arbetskö på verkstadsgolvet, och sekunder kostar mer än minuter, vilket är skälet till att nivån är ett beslut och inte ett standardvärde.

Registret skrivs i en riktning. Agenter och superintelligensen läser det, tillsammans med ontologin som talar om för dem vad en “spärrad order” eller en “leverantör som halkar efter” betyder. De skriver inte till det direkt. En agents utdata är ett förslag som landar i godkännandekorgen; en människa godkänner; modulen ändrar det levande tillståndet; ändringen publiceras som en händelse; händelsen landar i registret. Beslutsloggen är själv en tabell i registret, med förslaget, dess källor, den som godkände och tidpunkten.

Vad agenten såg, och vem som beslutade

Den loopen är det som gör revisorns fråga besvarbar. Registret klockan 09:14 är en version av tabellerna, inte en rekonstruktion. Förslaget är en rad med identifierarna för de rader det läste. Godkännandet är en rad med en persons namn. Ingenting i kedjan beror på att någon minns.

Samma egenskap tjänar de som bygger systemet. När en ny version av en agent utvärderas kan en dags händelser spelas upp ur registret mot den och dess förslag jämföras med dem människor faktiskt godkände. Registret är utvärderingsmängden.

Agenter bygger datalagret, under godkännande

Hurukan byggs och utökas av agenter, och datalagret är inget undantag. En agent utarbetar flödet som landar en ny händelsetyp. En agent föreslår schemaändringen när en modul får ett nytt fält, och kompatibilitetskontrollen mot registret över scheman körs innan någon läser förslaget. En agent planerar komprimeringen av små filer och utgången av gamla ögonblicksbilder. Vart och ett av dessa är ett förslag med en diff och ett testresultat, och en människa godkänner det. Godkännandet registreras som vilket annat som helst.

Det som stannar hos människor är det som inte kan ångras eller inte kan härledas: kontraktet mellan moduler, bevarandet av historik och raderingen av en persons data, valet av format och katalog, och varje uppgradering av en tabells protokoll som skulle stänga ute en äldre läsare.

Registret du kan ta med dig

Varje del av registret finns i ett format som andra motorer läser. Om företaget lämnar, lämnar det med sin historik: filerna, tabellmetadatan och katalogen, på sin egen infrastruktur. Där företaget redan har verktyg som läser ett visst format — ett Microsoft-bestånd, ett dotterbolag på Snowflake — kan samma filer exponeras i det formatet utan kopia, vilket är ämnet för Ett register, läsbart för verktygen du redan har. Och där domänagenter behöver det levande tillståndet snarare än historiken — arbetskön, lagret, godkännandekorgen — håller ett tabellformat byggt för strömmar det tillståndet läsbart utan att fråga modulernas lager, vilket är argumentet för Paimon.

Ett test du kan göra i dag

Ta ett beslut som ditt företag fattade förra kvartalet på grundval av en rapport: en kreditgräns, en påfyllning, ett pris. Försök ta fram datan exakt som den var dagen för beslutet, och namnet på den som fattade det. Räkna timmarna. Den siffran är kostnaden för att ha ett enda minne, och det är det registret finns för.