Skip to content

💡 [REQUEST] - Documenter les règles agent récurrentes dans AGENTS.md #2708

Description

@shikanime

Description

Les mêmes règles sont répétées oralement à chaque session d'agent travaillant dans ce dépôt ; elles ne sont consignées nulle part. AGENTS.md est le point d'entrée des agents (créé par #1937) mais décrit seulement la structure et les commandes : chaque nouvelle session réapprend ces règles — ou les viole avant correction.

Règles concernées (chacune trace à une correction réelle en revue ou en CI) :

  • Pas de cast as (ni as any) pour resserrer un type inconnu ou optionnel : utiliser un type guard par if, et inclure l'identifiant fautif dans le message d'erreur.
  • La configuration des services passe par l'injection (@Inject(xxxConfigFactory.KEY) + ConfigType), jamais process.env dans un service.
  • Les helpers retournent de nouveaux objets, sans muter leurs entrĂ©es.
  • apps/server est gelĂ© : rĂ©fĂ©rence de lecture uniquement ; apps/server-nestjs est la seule cible modifiable.
  • ParitĂ© de migration : chaque eventEmitter.emitAsync('<entity>.<verb>') doit avoir un consommateur @OnEvent → capturePluginResult, sinon les synchronisations Keycloak/GitLab s'arrĂŞtent silencieusement Ă  la bascule.
  • Prisma : deleteMany/updateMany avec un filtre indĂ©fini touche toutes les lignes — toujours filtrer par identifiant concret ; les clĂ©s Ă©trangères ProjectRole/Repository ne cascadent pas.
  • Tests dĂ©terministes : un tirage faker ne doit jamais pouvoir traverser un seuil de branche (fenĂŞtre Ă©pinglĂ©e), sinon CI instable.
  • Specs unitaires avec mockDeep pour Prisma/config, pas d'appels au niveau describe ; specs e2e dans test/*.e2e-spec.ts gated sur describe.runIf(Boolean(process.env.E2E)).
  • Corriger Ă  la source partagĂ©e oĂą passent tous les appelants, pas un guard dupliquĂ© chez chaque appelant.
  • Ne pas dĂ©clarer terminĂ© sans avoir exĂ©cutĂ© les gates (pnpm lint, vitest ciblĂ©).

PRs liées

Exemples simples

  • Revue de PR : casts as any retirĂ©s dans sonarqube.service.spec.ts conformĂ©ment Ă  la règle.
  • CI instable : faker.date.past({ years: 2 }) tirait parfois sous le seuil de rotation de 250 jours — le test Ă©chouait environ une fois sur trois.
  • e2e : une spec exĂ©cutĂ©e hors gate Ă©choue faute de Postgres/Keycloak locaux.

Spécifications techniques

Ajouter à AGENTS.md une section « Agent rules » (anglais, comme le reste du fichier) regroupant les règles ci-dessus, placée après « Conventions ».

Définition du fini

  • La section règles est prĂ©sente dans AGENTS.md
  • Chaque règle trace Ă  une correction rĂ©elle documentĂ©e
  • La documentation liĂ©e a Ă©tĂ© ajoutĂ©e

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions