Beslisrecords, vier van tien. Een architectuurbeslissing per stuk, uit een beheerst AI-agentplatform dat ik als prototype ontwierp en bouwde voor de Nederlandse lokale overheid.
De situatie
Een leverancier publiceerde een in-process governance-library voor agents: een policy engine, trust scoring voor tools en content, een kill switch, een auditlog. Goede namen, een serieuze leverancier, en de voor de hand liggende vraag van iedereen die naar het platform keek was waarom ik mijn eigen beleids- en bewijscomponenten bouwde terwijl dit bestond.
Dus ik las het. Niet de marketingpagina, de code en de documentatie. Drie dingen vielen op.
De afdwinging is een functieaanroep. De code die beheerst wordt, roept de library aan om te vragen of een actie is toegestaan. Niets in de library, en niets in de runtime, dwingt af dat die aanroep plaatsvindt of merkt op dat hij uitbleef. Een agent harness die vergeet hem aan te roepen, of is aangepast om dat niet te doen, is simpelweg onbeheerst, zonder dat iemand het merkt.
Haar records hebben de verkeerde vorm voor mijn bewijsregister. Ze beschrijven wat de library zag, niet wat het platform besliste, en ze worden geschreven door hetzelfde proces dat beheerst wordt.
En volgens haar eigen documentatie is ze fail-open als er geen beleid geladen is. Dat is het tegenovergestelde van de fail-closed-regel waar ik me voor de beleidsdienst van het platform al aan had gecommitteerd.
De beslissing
De library mag worden gebruikt, uitsluitend binnen componenten in eigendom van het platform, en nooit als afdwingpunt.
In eigendom van het platform betekent: CI-checks die op componenten draaien vóór toelating, toolservers die het platform zelf host, en de agent harness die het platform meelevert. Op die plekken leveren de trust scoring en beleidsevaluatie van de library signalen op. De signalen gaan het record in en de invoer in van de eigen beleidsdienst van het platform, die de gezaghebbende beslissing neemt.
Drie gevolgen volgen daaruit en ik heb ze expliciet opgeschreven. De output van de library bestaat uit signalen, geen beslissingen. Het “approved” van de library is geen aan een actie gebonden goedkeuring; de goedkeuringsdienst van het platform is het enige dat een menselijk ja bindt aan een specifieke actie op een specifieke planrevisie. En het adopteren van de library levert geen compliance op. Een component die haar gebruikt is daarmee niet beheerst. Ze wordt beheerst door de kernel-controls, en de library is een sensor erbij.
HAL weigerde de luiken te openen omdat hij de zeggenschap over de luiken had. Een governancebibliotheek binnen het agentproces is HAL die Dave beleefd vraagt of hij ze alsjeblieft niet wil openen.
Wat ik afwees, en waarom
Haar gebruiken als de policy engine van het platform. Ze is in-process, dus ze deelt het lot en de rechten van de code die ze beheerst. Haar recordvorm draagt de run, principal en planrevisie niet die het bewijsregister nodig heeft. En ze is fail-open wanneer ze niet geconfigureerd is. Elk daarvan afzonderlijk zou diskwalificerend zijn geweest; samen is de zaak beklonken.
Haar volledig afwijzen. Dat was mijn eerste reactie na het lezen van de fail-open-standaard, en het was een overcorrectie. De trust-scoring-heuristieken zijn behoorlijk en ik had geen betere. Een nuttig signaal weggooien omdat het geen control is, is dezelfde categoriefout als een signaal behandelen als control, in de andere richting.
De beslissing uitstellen. Deze wil ik markeren, want uitstel ziet er verantwoord uit en is hoe de fout er daadwerkelijk insluipt. Als ik de vraag open had gelaten, had het volgende architectuurdiagram een vakje “governance” gehad met de naam van de library erin, en zes maanden later zou iemand dat diagram hebben aangehaald als de reden dat het platform compliant was. Uitstel is niet neutraal. Een beslissing die niet genomen wordt, wordt genomen door wie het volgende plaatje tekent.
Wat het kost
Twee typen afdwingrecords in het bewijsregister. Omdat de library haar eigen records schrijft en het platform de zijne, moet elk stuk bewijs nu zeggen welke beslissing gezaghebbend was. Ik heb daar een veld voor toegevoegd en een regel dat een library-record alleen nooit aan een bewijsvereiste voldoet. Het is een kleine schemawijziging met een grote uitleglast elke keer dat iemand het register leest.
Een afhankelijkheid van preview-kwaliteit. De library had geen stabiele release toen ik haar adopteerde. Dat betekent een versie vastpinnen, letten op brekende wijzigingen, en accepteren dat een signaalbron tussen versies haar scoring kan veranderen. Voor een prototype is dat te dragen. Voor productie zou het een nieuwe beslissing vergen.
Wat het niet doet
Het maakt de harness niet veilig. De harness moet de library nog steeds aanroepen, en het enige dat dat betrouwbaar maakt is dat het platform de harness in eigendom heeft en test dat de aanroep plaatsvindt. Een harness van een derde partij die dezelfde library gebruikt, krijgt die garantie niet.
De eigen beleidsdienst van het platform is gebouwd en is fail-closed. De integratie van de signalen van de library daarin is ontworpen en deels aangesloten. De CI-check die zou opmerken dat een component van het platform de aanroep weglaat, is voorgesteld, niet gebouwd.
Als je een ding meeneemt
Stel voor elke governance-afhankelijkheid in je stack een vraag: wat gebeurt er als de beheerste code haar niet aanroept? Als het antwoord is “niets gebeurt en niets merkt het”, heb je een signaalbron. Label haar als zodanig, in je diagrammen, voordat iemand anders haar als control labelt.
Jen hield het Internet op haar bureau en het gebouw merkte er niets van. Een governancebibliotheek die de agent mag negeren is hetzelfde doosje, met hetzelfde lampje, en hetzelfde effect op het gebouw.
Verwijzingen
De knipogen en citaten in dit stuk, met hun herkomst:
- 2001: A Space Odyssey (1968): “I’m sorry, Dave. I’m afraid I can’t do that.”
- The IT Crowd, “The Speech” (2008): Moss and Roy hand Jen “the Internet”, a small black box with a blinking light.
- #Beslisrecords
- #AI-governance
- #Architectuur

Rutger Hemrika
AI-strategie en -governance voor sectorsoftware. Schrijft vanuit bouwen, niet vanuit slides; elke claim draagt een bewijsniveau.