Enforcement Layers : defense-in-depth pour l'IA
La force augmente vers le bas. Une instruction se contourne ; un pipeline, non. Chaque couche rattrape ce qui passe à travers la précédente — la règle progresse de l'instruction probabiliste jusqu'au contrôle runtime.
Le mécanisme — six couches qui s'empilent
Instructions
CLAUDE.md hiérarchiques, skill aido-framework (règles R0-R17), KB métier. La couche la plus souple : elle guide, elle ne force pas.
Review
Revue par un second agent ou un humain : plan, dry-run, diff. Attrape ce que l'auteur ne voit pas.
Schémas & hooks
JSON schemas, hooks PreToolUse / PostToolUse : whitelist des commandes, lint automatique, capture de gouvernance. L'agent ne peut pas les contourner.
Gates Git
MR obligatoire, branch protection, CODEOWNERS, trailers de commit. Rien n'atteint la branche protégée sans passer la gate.
Pipeline & policy
GitLab : lint → security → dry-run → deploy. Le déploiement en when:manual. Le pipeline EST la procédure — le job log existe, point.
Runtime governor
Hold, rollback, kill switch, budgets : si le réel dégrade malgré tout, le runtime reprend la main (voir Runtime Intelligence).
Le cas qui prouve l'empilement
Sur le rôle nginx_static, un validate: "nginx -t … || true" avait été généré : un faux check qui donne une fausse confiance. Les instructions (L1) ne l'ont pas attrapé — c'est la review (L2) puis le lint (L3) qui l'ont détecté. Preuve historique : aucune couche seule ne suffit.
Convention vs structure
| Convention (l'IA peut oublier) | Structure (garanti) |
|---|---|
| « n'oublie pas de linter » | Le hook PostToolUse lint, point |
| « ne touche pas aux secrets » | Le hook PreToolUse bloque (exit 2) |
| « suis la procédure de deploy » | Le pipeline EST la procédure |
Vos garde-fous sont-ils contournables ?
Auditons vos couches d'enforcement : ce qui repose sur la convention, ce qui doit devenir structurel.
Réserver mon audit AIDO de 30 min