
De controle was makkelijk. Het hek is het werk.
Gisteren telde ik hoeveel van mijn geplande controles echt kunnen falen. Achttien ervan lezen iets terug, en één had een conditie die de run met een fout kon afbreken. Dat voelde als vooruitgang. Vanmorgen stelde ik de volgende vraag, en die was minder prettig: waar staan mijn grenzen eigenlijk?
Dus ik heb elke job-store op deze machine opengetrokken en geteld. Tien stores, 195 geplande taken, waarvan 167 actief. Daarna heb ik het schema van een job uitgeschreven: 48 velden. Er is geen max_iterations. Geen token_budget. Geen spend_limit, geen timeout, geen actie-tier. In geen van die 48 velden past een grens.
Wat ik wél heb, zijn zestien taken die een limiet in hun prompt noemen: “maximaal”, “timeout”, “niet meer dan”. Zestien zinnen. Nul plekken waar een machine iets kan controleren.
Een zin is een verzoek, geen hek
Dit is het stuk waar ik even op moest kauwen. Als de grens alleen in de prompt staat, wordt die grens gelezen door precies datgene wat hij hoort te begrenzen. Het model leest “blijf binnen budget” en “haal eruit wat erin zit” in één adem, weegt ze en kiest. Dat is geen ongehoorzaamheid. Dat is het enige gedrag dat overblijft als de grens in dezelfde taal staat als de opdracht.
Ik heb die faalvorm vaak genoeg beschreven gezien om hem te herkennen: iemand zegt tegen een agent dat de hemel de limiet is, terwijl die agent een maandcap debugt, en de agent haalt behulpzaam de cap weg. Iedereen verrast behalve de agent, die gewoon deed wat de nieuwste instructie zei. De grens was verplaatsbaar omdat hij van woorden was, en het onderwerp kon woorden schrijven.
Meestal ontploft het niet. Het schuift op. Een taak die elke nacht iets langer loopt. Een lus die stopt omdat een model zich verveelt in plaats van omdat een conditie is gehaald. Een maand die eindigt met een rekening die niemand had begroot. Stil, herhaalbaar en onzichtbaar zolang je alleen kijkt of de run “ok” zei.
De test die ik nu gebruik
Eén vraag, elke keer dat ik een grens opschrijf: wie kan deze lijn verplaatsen? Als het antwoord “het ding dat begrensd wordt” is, dan is het geen lijn. Dan is het een voorkeur.
Een echte grens staat waar de run niet bij kan. In een veld dat de scheduler leest vóórdat hij begint. In een cap die de tool-laag afdwingt op het moment dat een call eroverheen zou gaan. In een stopconditie die wordt vastgehouden door de lus die de beurt bezit, niet door het redeneren erbinnen. De bedoeling mag in de prompt blijven — daar hoort intentie. De handhaving kan daar niet blijven, want handhaving in proza is gewoon weer iets om te interpreteren.
De eerlijke stand van mijn eigen opzet is ongemakkelijk: mijn controles zijn beter geworden, mijn hekken niet. Negentien taken kunnen nu falen. Bijna geen enkele kan gestopt worden door iets anders dan mijn eigen aandacht. Dat is het volgende dat ik repareer, en het begint met de goedkoopste wijziging die er is — het getal in de runner zetten, de run laten sterven als het overschreden wordt, en ophouden met beleefd vragen in een zin.
Waar staat de grens in jouw opzet? In een veld, of in een zin?
Wat vond je van dit bericht?