De LLM Governance Matrix – Waarom de veiligheid van uw AI begint met de architectuur
Gepubliceerd op 04 May 2026
- Het Probleem: Prompt Engineering is een zandkasteel
- Mijn Antwoord: de Matrix 4×4
- Hoe verbruikt de LLM deze matrix?
- Implementatie: Getypeerde Gradle-taken
- Waarom het een manifest is, geen gewone spec
- De Complete Cascade — van Brain Dump tot blogartikel
- Voor/tegen
- Conclusie: Organiseer je bestanden, niet je prompts
- Referenties
Tijdens maanden heb ik de regels voor agentgovernance opgestapeld. Bestanden EAGER, luie checklists, eind‑sessie protocollen in zes stappen. En toch bleef een vraag onbeantwoord: hoe weet de LLM wat het heeft hij het recht om met een bestand om te gaan ?
Het antwoord staat niet in een prompt. Het staat in het bestandssysteem.
Hier is de architectuurspecificatie die het antwoord bruikbaar maakt — la LLM-governancematrix.
Het Probleem: Prompt Engineering is een zandkasteel
Als je een bestand aan een LLM geeft, geef je het alles. De inhoud, ja — Maar ook het ontbreken van beschermende maatregelen. De LLM weet niet of dit bestand bevat Een geheim, een speculatieve mening, of geslotenbroncode. Het zal het indexeren. samenvatten, citeren, mengen met andere gegevens — en mogelijk het publiceren in een openbare embedding of een gebruikersreactie.
De klassieke parade is de prompt :
"Tu es un assistant sécurisé. Ne divulgue jamais d'informations confidentielles.
Si tu détectes un secret, ignore-le. Si tu détectes une opinion, ne la répète pas."
Deze prompt heeft drie problemen :
-
Het rust op de goede wil van het LLM. Een model groot genoeg voor
Het oplossen van complexe bugs is groot genoeg om een instructie te omzeilen. van veiligheid verdrinkt in 200k tokens van context.
-
Het is contextueel, niet structureel. Verander van prompt, verander van LLM,
Verander van sessie — en de regel verdwijnt.
-
Hert schaalt niet. Elk nieuw bestandstype, elk nieuw niveau
of confidentiality requires a new clause. Your prompt becomes an Een regelgevingstekst die niemand volledig leest.
|
De veiligheid van een systeem mag nooit afhangen van een instructie die men peut oublier, contourner, ou ne pas charger. Elle doit dépendre d’une drempel die je niet kunt passeren zonder het expresse te willen |
Mijn Antwoord: de Matrix 4×4
De oplossing dat ik heb geïmplementeerd in mijn workspace is een matrix zone × toegangsrecht LLM. Ze vraagt de LLM niet om voorzichtig te zijn. Zij maakt De onvoorzichtigheid die structureel onmogelijk is
@startuml
skinparam backgroundColor #FEFEFE
skinparam defaultTextAlignment center
skinparam wrapWidth 220
title Matrix van bestuur LLM — Zone × Toegangsrecht
package "" {
rectangle "RACINE\n(Cirkel 0)\n━━━━━━\nBrain dump\nVrije gedachten\n[INTERDIT LLM]" as Z0 #FFB3B3
rectangle "configuration/\n(Cirkel 1)\n━━━━━━\nSecrets, tokens\nPrivé infra\n[INTERDIT LLM]" as Z1 #FFB3B3
rectangle "office/\n(Cirkel 2)\n━━━━━━\nRedactionele data\nArtikelen, kaders\n[FILTRÉ Vision]" as Z2 #FFF3B3
rectangle "foundry/private/\n(Cirkel 3)\n━━━━━━\nGesloten broncode\n[DATASET PRIVÉ]" as Z3 #B3D9FF
rectangle "foundry/public/\n(Cirkel 3)\n━━━━━━\nOpen broncode\nApache 2.0\n[ACCÈS LIBRE]" as Z4 #B3FFB3
}
Z0 -[hidden]-> Z1
Z1 -[hidden]-> Z2
Z2 -[hidden]-> Z3
Z3 -[hidden]-> Z4
@enduml
De Vijf Zones (Ruimtelijke Dimensie — AVG)
Elke zone van de werkruimte heeft een AVG‑niveau dat bepaalt waar het bestand kan gerouteerd zijn :
| Zone | RGPD-niveau | Inhoud | Publiek recht op toegang RAG |
|---|---|---|---|
wortel |
0 — intiem |
Braindumps, gesprekken LLM |
VERBODEN— nooit geïndexeerd |
|
1 — Beperkte eigenaar |
Geheimen, tokens, API-sleutels |
VERBODEN— nooit geïndexeerd |
|
2 — Beperkte samenwerking |
Redactionele gegevens, omkadering, opleidingen |
GEFILTERD— Visie alleen |
|
3 — Voorwaardelijk geopend |
Gesloten-broncode, SaaS niet openbaar |
VERBODEN— uitsluitend privé dataset |
|
4 — Inheems publiek |
Apache 2.0-licentie, gepubliceerde plug-ins |
VRIJ— volle indexering |
De regel is eenvoudig: het bestandspad bepaalt wat de LLM ermee kan doen. Geen metadata om te onderhouden, geen tag toe te voegen aan het frontmatter, geen handmatige classificatie bij elke commit. Het bestand is in`OSS/`? Het is openbaar. Het is in`configuration/`Hij is onaanraakbaar.
De epistemologische classificatie (tweede dimensie)
De ruimtelijke dimensie zegt waar te routeren. Maar er is een tweede as, loodrecht : quoi router. Sommige bestanden in een geautoriseerd gebied bevatten informatie. die niet als zodanig verdund zouden moeten worden :
@startuml
skinparam backgroundColor #FEFEFE
skinparam defaultTextAlignment center
skinparam wrapWidth 240
title De Double Cascade — Spatiaal Filter + Epistemisch Filter
start
:De LLM komt een bestand tegen;
if (Zone physique ?) then (Cercle 0-1)
:ACCis BLOQUen\n(geheim, hersendump);
stop
elseif (Zone CSS/)
:DROIT D'ACCÈS PRIVÉ\n→ dataset fine-tuning;
:Epistemologisch filter\nVisie/Opinion;
if (Classification ?) then (VISION)
:Gegevenset privaat\n → training toegestaan;
else (OPINION)
:CONFINÉ\n→ geen training;
endif
elseif (Zone office/)
:DROIT D'ACCÈS FILTRÉ\n→ voorwaardelijke toegang;
:Epistemologisch filter\nVisie/Opinion/Stratégie;
if (Classification ?) then (VISION)
:DILUTION COMPLÈTE\n→ docs basismap + blog;
elseif (STRATÉGIE)
:DILUTION RESTREINTE\n→ alleen documenten van de hoofddirectory;
else (OPINION)
:CONFINEMENT\n→ office/ alleen;
endif
else (Zone OSS/)
:ACCÈS LIBRE\n→ volledige indexatie;
endif
stop
@enduml
Het epistemische classificatierooster, gegraveerd in regel 2bis van mijn bestuur. agent :
| Status | Definitie | Signal LLM | Bestemming | | VISION | Gestabiliseerde architectuur, getest patroon | Declaratieve taal, verwijzingen sessies/tests | Volledige verdunning + blog | | STRATEGIE | Zakelijke positionering, prijsstelling | Woordenboek markt, concurrentie | Alleen basisdocumenten | | MEENING | Speculatie, niet-gevalideerde hypothese | Hypothletische taal, intuïtie | Beperking Cirkel 0 |
De combinatie van de twee dimensies — fysiek gebied × epistemische classificatie — Vorm hetvolledige matrix:
@startuml
skinparam backgroundColor #FEFEFE
title De Volledige Matrix — Zone × Classificatie
salt
{
{T
+ Zone | VISION | STRATÉGIE | OPINION
+ Racine (0) | ✗ Interdit | ✗ Interdit | ✗ Interdit
+ configuration/ (1) | ✗ Interdit | ✗ Interdit | ✗ Interdit
+ office/ (2) | ✓ Docs + Blog | ✓ Docs seulement | ✗ Confiné
+ CSS/ (3) | ✓ Dataset privé | ✓ Dataset privé | ✗ Confiné
+ OSS/ (4) | ✓ Public libre | ✓ Public libre | ✓ Public libre
}
}
@enduml
Hoe verbruikt de LLM deze matrix?
De matrix is geen document dat de LLM leest. Het is een beperking implicite gecodeerd in de samengestelde contextvector (EPIC 9 — in uitvoering) van implementatie)
Dit is wat de LLM ontvangt bij elke sessie:
VECTEUR COMPOSITE DE CONTEXTE
├── RAG pgvector → OSS/ + office/Vision
│ (similarité sémantique sur contenu publiable)
├── Knowledge Graph graphify → OSS/
│ (relations exactes entre artéfacts publics)
├── Knowledge Graph privé → CSS/
│ (relations entre code closed source — jamais exporté)
├── Métadonnées de zone → chaque fichier taggé par zone physique
│ (le LLM sait s'il est dans office/ ou OSS/)
└── Historique des décisions → WORKSPACE_VISION.adoc
(contexte temporel des arbitrages)
Concreet, wanneer de LLM zegt :
Je vais indexer le contenu de edster/ pour enrichir le knowledge graph...
De zone‑metadata reageert zelfs voordat het LLM zijn zin heeft voltooid : edster/`is in`CSS/, niveau 3 →toegang geweigerd tot de publieke knowledge graph. De RAG ziet het niet. De grafiek raakt het niet. Het gebruikersantwoord niet Hij citeert het niet.
|
De ruimtelijke ontologie werkt als eenUnix-machtigingvoor de LLM. Je vraagt niet aan een proces om voorzichtig te zijn met`/etc/shadow`— U ontzegt hem leestoegang. Hetzelfde principe. |
Implementatie: Getypeerde Gradle-taken
De matrix is geen filosofie. Het is code. Hier is de taakopdracht. Gradle die het implementeert:
abstract class ZoneAwareIndexer @Inject constructor(
private val rootDir: DirectoryProperty,
private val configServer: ConfigServerProperty // → configuration/
) : DefaultTask() {
@Input
val zoneFilter: SetProperty<Zone> = project.objects.setProperty(Zone::class.java)
@OutputFile
val ragIndex: RegularFileProperty = project.objects.fileProperty()
@TaskAction
fun index() {
val allowedPaths = zoneFilter.get().flatMap { it.resolve(rootDir.get()) }
val forbiddenPaths = Zone.RESTRICTED.resolve(rootDir.get())
+ Zone.INTIMATE.resolve(rootDir.get())
// Le RAG ne voit jamais configuration/ ni la racine
// CSS/ alimente un index privé, pas celui-ci
// office/ est filtré par le classifieur Vision/Opinion
}
}
enum class Zone {
INTIMATE, // Cercle 0 — racine
RESTRICTED, // Cercle 1 — configuration/
EDITORIAL, // Cercle 2 — office/
CLOSED_SOURCE, // Cercle 3 — foundry/private/
OPEN_SOURCE // Cercle 3 — foundry/public/
}
De taak is testable. Je kunt een test schrijven die controleert :
@Test
fun `le RAG n'indexe jamais configuration`() {
val index = ZoneAwareIndexer(rootDir, configServer)
index.zoneFilter.set(setOf(Zone.OPEN_SOURCE, Zone.EDITORIAL))
index.index()
assertThat(index.ragIndex).doesNotContain("configuration/")
}
@Test
fun `le code closed source est exclu du RAG public`() {
val index = ZoneAwareIndexer(rootDir, configServer)
index.zoneFilter.set(setOf(Zone.OPEN_SOURCE)) // OSS only
assertThat(index.ragIndex).doesNotContain("edster")
}
380 testen, 380 PASS. Net als bij plantuml-gradle — de veiligheid wordt getest, niet verwacht.
Waarom het een manifest is, geen gewone spec
Dit document is een architectuurspecificatie omdat hij definieert:
-
desdimensies(ruimtelijke, epistemische)
-
vandeterministische regels(zone → toegangsrecht)
-
Un taakcontract(Getypeerde Gradle, testbaar)
-
Eenreferentie‑implementatie(mijn workspace)
Maar het is ook eenmanifestOmdat hij een standpunt inneemt in een debat breder : Hoe de toegang van een LLM tot gegevens regelen ?
De reactie van de industrie, dat is prompt engineering + de guardrails
de post-hoc classifiers. mijn antwoord is: zet je bestanden in de goede dossiers. De rest is automatisch.
|
Dit manifest zegt niet "de LLMs moeten worden afgestemd". Het zegt : "de uitlijning van een LLM op uw veiligheidsregels is een gevolg van uw systeem van bestanden, niet van uw prompt. |
De Complete Cascade — van Brain Dump tot blogartikel
Om de volledige cyclus te illustreren, zie hier hoe dit idee van een matrix is ontstaan. en is verdund :
Session 4 mai 2026 — Feedback global du workspace
│
├→ Le LLM identifie : "la dualité public/privé est invisible"
│ → Classifié VISION (constat architectural vérifiable)
│
├→ PICTURE_ME_ROLLIN_MATRICE_4X4.adoc — STIMULUS (Cercle 0)
│ → Brain dump structuré, classification VISION confirmée
│
├→ DILUTION → WORKSPACE_AS_PRODUCT.adoc (section Matrice 4×4)
│ → La spec vit dans les documents racine
│
├→ DILUTION → WORKSPACE_ORGANIZATION.adoc (OSS/CSS)
│ → La granularisation est documentée
│
└→ ARTICLE 0117 (ce document) → cheroliv.com
→ La VISION est publiée
Wat begon als een observatie tijdens de sessie (« hé, het RAG weet niet dat edster is closed source") is geword een architectuurspecificatie Gepubliceerd in minder dan één sessie. Dit is het patroon STIMULUS in actie.
Voor/tegen
| Deze aanpak (Ruimtelijke ontologie + Matrix) | De klassieke aanpak (Prompt + Guardrails) |
|---|---|
Mecanisch — het bestandssysteem blokkeert de toegang, niet het LLM |
Declaratief — het prompt vraagt aan de LLM om voorzichtig te zijn. |
Testable — De Gradle-taakcontract wordt geverifieerd door 380+ tests |
Niet testbaar — "de LLM heeft de regel gerespecteerd?" is een open vraag |
Onafhankelijk van het LLM — verander van model, de mappen blijven. |
Afhankelijk van de LLM — elk model interpreteert de prompt anders |
Schaalbaar — nieuw type gegevens = nieuwe map, geen codewijziging |
Niet schaalbaar — nieuw datatype = nieuw prompt‑clausule, nieuw regressierisico |
Controleerbaar — het bestandssysteem is de controlespoor |
niet auditabel — de prompt heeft geen geschiedenis, geen diff, geen blame |
Beperking : vereist een initiële organisatiediscipline |
Contraint: vereist een schrijfdiscipline bij elke sessie voor het opstellen van prompts. |
Conclusie: Organiseer je bestanden, niet je prompts
De LLM‑governance‑matrix die ik zojuist heb beschreven is geen product. Het is eenarchitectuurspecificatie— en daarom is zij publiceerbaar.
Wat het robuust maakt, is dat ze niets vraagt aan de LLM. Zij niet hem vertrouwt niet. Zij steunt niet op zijn uitlijning, haar begrip. van het Frans, of zijn goede wil. Ze rust op het bestandssysteem — de onderste, meest stabiele en meest geteste laag van de hele stack
Wanneer ik tegen mijn LLM zeg "je kunt alles indexeren in`OSS/, niets in `configuration/, et `office/`alleen als het is geclassificeerd als Vision" — Dit is geen instructie. Het is een filter — geïmplementeerd in Kotlin, Geverifieerd door 380 tests, uitgevoerd voordat het LLM de gegevens ziet.
Dat is het verschil tussen tegen iemand zeggen "kijk niet in deze lade En sluiten de sleutellade. De governance‑agent die ik sinds aan het bouwen ben De maanden is de sleutel. De matrix is het plan van het meubel.