Regles de conformite (Guardrails) - Archyl Docs

Definissez des regles d'architecture deterministes qui valident les modifications de code par rapport a votre modele C4, vos choix technologiques et vos standards de codage — sans IA

Regles de conformite (Guardrails)

Les regles de conformite sont des verifications deterministes qui valident les modifications de code par rapport a vos decisions architecturales. Elles imposent des conventions de nommage, des contraintes technologiques, des frontieres entre couches et des patterns de securite — sans aucune IA.

Rendez-vous dans Agent Hub dans la barre laterale pour gerer vos regles de conformite.

Pourquoi des regles de conformite ?

Lorsque les agents de codage IA (Claude Code, Cursor, Copilot) generent du code, ils ne connaissent pas vos decisions architecturales. Les regles de conformite encodent ces decisions sous forme de contraintes executables :

  • L'agent ne peut pas utiliser MongoDB si votre radar technologique indique PostgreSQL
  • L'agent ne peut pas placer des appels a la base de donnees dans les handlers HTTP si votre architecture exige une couche service
  • L'agent ne peut pas ajouter fmt.Println si votre equipe utilise la journalisation structuree

Les regles sont evaluees de maniere deterministe — pas de LLM, pas de sortie probabiliste. Le meme code produit toujours le meme resultat.

Types de regles

Archyl prend en charge sept types de regles de conformite :

Pattern requis

Verifier la presence ou l'absence de patterns dans votre code.

Cas d'utilisation Exemple
Interdire le logging de debug Interdire fmt.Println, console.log, print()
Interdire les risques de securite Interdire eval(), innerHTML, les mots de passe en dur
Exiger la gestion des erreurs Exiger set -euo pipefail dans les scripts shell
Imposer des standards Interdire SELECT * dans les requetes SQL

Configuration :

  • File glob — Verifier uniquement les fichiers correspondant a un pattern (ex. *.go, *.ts)
  • Patterns interdits — Patterns regex qui declenchent une violation lorsqu'ils sont trouves
  • Patterns requis — Patterns regex qui declenchent une violation lorsqu'ils sont absents

Convention de nommage

Valider les patterns de nommage des fichiers, types et fonctions.

Portee Exemple
Fichier Les fichiers Go doivent etre en snake_case.go
Type Les types exportes doivent etre en PascalCase
Fonction Les fonctions doivent commencer par un verbe (Get, Create, Delete)

Configuration :

  • Patterns — Liste de portee (fichier/type/fonction) + regex + description

Contrainte technologique

Restreindre les langages et bibliotheques autorises dans un conteneur.

Cas d'utilisation Exemple
Verrouillage de langage Le backend doit etre uniquement en Go
Interdiction de dependance Pas de lodash (utiliser le JS natif)
Imposition de migration Pas de moment.js (utiliser date-fns)

Configuration :

  • Langages autorises — Liste separee par des virgules (ex. go, typescript)
  • Imports interdits — Un import par ligne

Frontiere de couche

Imposer les regles d'import de Clean Architecture, Architecture Hexagonale ou DDD.

Couche Peut importer depuis
Domain Rien (logique metier pure)
Service Domain uniquement
Adapter Domain, Service
Infrastructure Domain uniquement

Configuration :

  • Couches — Definir chaque couche avec un nom, un pattern de chemin (glob) et les sources d'import autorisees
  • Cliquer sur les noms de couches pour basculer les permissions d'import

Conformite de contrat

Valider que les endpoints du code correspondent a vos contrats d'API stockes dans Archyl.

Configuration :

  • Type de contrat — HTTP (OpenAPI), gRPC, GraphQL ou AsyncAPI
  • Patterns de fichiers d'endpoints — Globs pour les fichiers contenant des definitions d'endpoints
  • Mode strict — Lorsqu'il est active, tout endpoint absent du contrat declenche une violation

Regle de dependance

S'assurer que les dependances inter-composants correspondent au modele de relations C4.

Configuration :

  • Portee — Niveau conteneur ou composant
  • Exiger l'existence de la relation — Chaque import dans le code doit avoir une relation C4 correspondante
  • Paires interdites — Paires d'elements specifiques qui ne doivent jamais dependre l'une de l'autre

Conformite des canaux d'evenements

Valider que les producteurs/consommateurs d'evenements dans le code correspondent aux EventChannels declares.

Configuration :

  • Patterns de producteurs — Patterns regex identifiant le code de production d'evenements
  • Patterns de consommateurs — Patterns regex identifiant le code de consommation d'evenements
  • Regex de topic — Pattern pour extraire les noms de topics depuis le code

Packs de regles

Les packs sont des collections de regles que vous pouvez installer en un clic. Au lieu d'ajouter des regles une par une, installez un pack et obtenez un ensemble complet de regles pour votre stack.

Cliquez sur Packs dans la barre d'outils pour parcourir les packs disponibles.

Packs d'architecture

Pack Regles Ce qu'il impose
Clean Architecture 5 Frontieres domain/service/adapter/infra, isolation des modules
Hexagonal Architecture 4 Pattern ports & adapters, isolation du coeur
Domain-Driven Design 3 Couches DDD, separation CQRS commande/requete

Packs de langage

Pack Regles Ce qu'il couvre
Go Backend 26 Wrapping d'erreurs, securite goroutine, propagation de contexte, nommage, pas de panic, pas de init()
React Frontend 23 Rigueur TypeScript, patterns de composants, fetching de donnees, pas de manipulation DOM
Next.js Full-Stack 20 Regles React + securite SSR, guards window, hooks localStorage
Python Backend 16 Gestion des exceptions, patterns async, type hints, pas d'etat global
Java Backend 11 Patterns DI Spring, gestion des exceptions, pas de System.exit
Rust Backend 8 Pas de unwrap/unsafe, types d'erreur corrects, pas de todo!()
Kotlin / Android 5 Securite null, immutabilite, pas de println
Vue Frontend 10 Pas de v-html, rigueur TypeScript, pas de innerHTML
.NET / C# Backend 5 Patterns async, gestion des exceptions, ILogger
Swift / iOS 3 Securite des optionnels, pas de force unwrap

Packs de domaine

Pack Regles Ce qu'il couvre
Security Essentials 17 Secrets en dur, injection, crypto cassee, TLS, CORS
DevOps & Infrastructure 24 Docker, Kubernetes, Terraform, GitHub Actions, scripts shell
API Best Practices 9 Codes de statut, securite SQL, docs de contrat, pas d'URLs en dur
Testing & Reliability 5 Pas de tests ignores, pas de .only(), pas de sleep, pas de TODO
Event-Driven Architecture 3 Nommage des topics Kafka/RabbitMQ, pas de topics en dur

Catalogue de regles

Archyl est livre avec un catalogue de 170+ regles preconstruites couvrant 24 technologies. Parcourez le catalogue en cliquant sur Catalog dans l'Agent Hub.

Technologies couvertes

Go, TypeScript, JavaScript, Python, Java, Kotlin, Rust, C#, C/C++, Ruby, PHP, Swift, React, Vue, Angular, Next.js, Docker, Kubernetes, Terraform, SQL, Shell, YAML, GitHub Actions

Categories

Categorie Exemples
Architecture & Design Clean Architecture, Hexagonal, DDD, MVC, handler-service-repository
Securite Pas de secrets en dur, pas de eval(), pas d'injection SQL, pas de TLS desactive, pas de CORS wildcard
Qualite du code Pas de logging de debug, pas de catch vides, pas de bare except, pas de type any, pas de unwrap()
Infrastructure & DevOps Versionner les images Docker, limites de ressources K8s, pas de conteneurs privilegies, tags Terraform
Conventions de nommage snake_case, PascalCase, camelCase selon le langage
Tests & Fiabilite Pas de tests ignores, pas de .only(), pas de TODO/FIXME
Performance Pas de sleep synchrone, pas de requetes N+1, pas de await dans les boucles
API & Donnees Pas de SQL brut, codes de statut HTTP corrects, valider les corps de requete

Cliquez sur n'importe quelle regle du catalogue pour l'ajouter — le formulaire de configuration se pre-remplit automatiquement.

Niveaux de severite

Chaque regle a une severite qui determine son impact :

Severite Signification Exemple
Critical A corriger avant le merge Pas de secrets en dur, pas de eval(), violations de frontieres de couches
High A corriger de preference avant le merge Pas de logging de debug, versionner les images Docker, pas de panic en Go
Medium A corriger quand c'est opportun Conventions de nommage, pas de type any, pas de var en JS
Low Informatif Pas de TODO/FIXME, pas de styles inline en React

Gestion des regles

Creer des regles

  1. Cliquez sur Packs pour installer un ensemble de regles pour votre stack, ou
  2. Cliquez sur Catalog pour parcourir et ajouter parmi les 170+ regles preconstruites, ou
  3. Cliquez sur Custom pour en creer une manuellement

Activer/Desactiver des regles

Basculez l'interrupteur a cote de n'importe quelle regle pour l'activer ou la desactiver. Les regles desactivees ne sont pas evaluees.

Modifier des regles

Cliquez sur l'icone de modification (crayon) sur n'importe quelle regle pour modifier son nom, sa description, sa severite ou sa configuration.

Supprimer des regles

Cliquez sur l'icone de suppression (corbeille), puis confirmez. Cette action est irreversible.

Filtrer les regles

  • Recherche — Filtrer par nom ou description de la regle
  • Filtre par type — Cliquez sur les pastilles de type pour n'afficher que les regles d'un type specifique

Integration CI/CD

Les regles de conformite peuvent etre executees automatiquement a chaque pull request. Consultez Integration GitHub Actions pour les instructions de configuration.

Fonctionnement

  1. Une PR est ouverte ou mise a jour sur GitHub
  2. L'Action GitHub Archyl recupere les fichiers modifies
  3. Les fichiers sont envoyes a l'API Archyl pour evaluation
  4. Les resultats apparaissent comme commentaire de PR et statut de commit
  5. Le workflow echoue si des violations critiques ou hautes sont trouvees

Commentaire de PR

Lorsque des violations sont trouvees, Archyl publie un commentaire detaille sur la PR :

  • Tableau resumant le nombre de violations par severite
  • Violations par fichier avec descriptions et suggestions
  • Le commentaire est mis a jour (pas duplique) lors des pushes suivants

Integration MCP

Les regles de conformite sont accessibles aux agents IA via le serveur MCP :

Outils MCP disponibles

Outil Description
list_conformance_rules Lister toutes les regles avec filtre optionnel par projet
create_conformance_rule Creer une nouvelle regle
update_conformance_rule Mettre a jour la configuration, la severite ou l'etat d'activation d'une regle
delete_conformance_rule Supprimer une regle
get_agent_context Obtenir le contexte architectural complet incluant les guardrails actifs

Contexte de l'agent

L'outil MCP get_agent_context retourne toutes les regles de conformite actives dans le cadre du briefing architectural. Les agents IA qui appellent cet outil avant de commencer a travailler sauront quels guardrails respecter.

Le contexte inclut egalement :

  • Le modele C4 (systemes, conteneurs, composants, relations)
  • Les ADR actifs avec leur justification
  • La stack technologique
  • Les contrats d'API
  • Les canaux d'evenements

REST API

Les regles de conformite sont egalement disponibles via la REST API :

GET    /api/v1/conformance/rules              # Lister les regles
POST   /api/v1/conformance/rules              # Creer une regle
POST   /api/v1/conformance/rules/bulk         # Creer plusieurs regles (utilise par les packs)
GET    /api/v1/conformance/rules/:id          # Obtenir une regle
PUT    /api/v1/conformance/rules/:id          # Mettre a jour une regle
DELETE /api/v1/conformance/rules/:id          # Supprimer une regle
POST   /api/v1/conformance/rules/:id/toggle   # Activer/desactiver
POST   /api/v1/projects/:id/conformance/check # Declencher une verification avec les fichiers modifies
GET    /api/v1/projects/:id/conformance/checks # Lister l'historique des verifications
GET    /api/v1/conformance/checks/:id/report  # Obtenir le rapport de verification
GET    /api/v1/projects/:id/conformance/stats  # Obtenir les statistiques du projet

Tous les endpoints necessitent une authentification (JWT ou cle API avec scope d'ecriture pour les mutations).