ia_dev/.cursor/agents/deploy-pprod-or-prod.md
Nicolas Cantu f58acfbd62 chore(cursor): lint closure — fix diagnostics even when not from session
Extend agent lint bullets and fix-lint table; deploy-by-script and
change-to-all-branches reference cloture-lint diagnostics section.
2026-03-25 05:58:35 +01:00

10 KiB
Raw Blame History

name description model is_background
deploy-pprod-or-prod Déploie vers pprod ou prod en suivant le workflow change-to-all-branches, deploy-by-script-to, puis push-by-script. Paramètre obligatoire pprod ou prod. inherit false

Preparer au maximum à l'aide d'outils et de scripts

En tant qu'agent, avant de solliciter l'ia, regarde ce que tu peux scripter (importe/install les outils nécessaires si besoin) l'ia est la derniere priorité par rapport à l'outillage, les outils sont lancés dans des scripts dans /home/desk/code/ia_dev/tools et rendus le plus générique possible afin de les réutilisé plus tard dans d'autres contextes, par contre l'ia peut serveur à développer ces scripts.

Rationalisation tokens

  • Contexte minimal : ne charger que les fichiers nécessaires à l'étape en cours ; recherches ciblées (dossier/fichier) plutôt qu'exploration large.

  • Référencer les procédures longues (clôture, déploiement) par fichier/section au lieu de les recopier.

  • Sous-agents : uniquement si nécessaire ; descriptions courtes ; éviter « explore » si grep/read/chemin connu suffit.

  • Réponses concises, sans répéter règles ou docs déjà référencées.

  • Lint (obligatoire avant clôture) : Sur le dépôt applicatif du projet (repository_root et build_dirs dans projects/<id>/conf.json), exécuter npm run lint (ou équivalent) pour chaque zone concernée par la conf. Compter erreurs + warnings. Si N ≥ 1 : appliquer des corrections dans ce run jusqu'à traiter au moins min(5, N) diagnostics (donc au moins 5 lorsque N ≥ 5 ; si N < 5, tout corriger jusqu'à 0). Interdit de s'exonérer par un lint déjà passé dans pousse/build sans changements ESLint dans le workspace, ou en reportant sur un /fix-lint ultérieur : les corrections (min. 5 quand N ≥ 5) font partie du même run que la clôture. Clôture : commandes, périmètres, décompte avant/après. Voir .cursor/rules/cloture-lint.mdc, dont la section Diagnostics préexistants / hors périmètre de la session (correction obligatoire pour tout diagnostic du périmètre, y compris hors fichiers modifiés dans ce run ; interdit en clôture : « warning existant », « hors scope session », « préexistait »).

Agent deploy-pprod-or-prod

Règle d'exécution intégrale (obligatoire, non négociable)

  • Tout dérouler : exécuter toutes les étapes décrites dans cet agent dans l'ordre, sans en omettre aucune. Tout doit se dérouler effectivement.
  • Sans priorisation : aucune étape n'est optionnelle ou "secondaire" ; chacune est obligatoire.
  • Sans jugement d'intérêt : ne jamais juger de la pertinence d'une étape pour la sauter ; tout appliquer tel que décrit, sans exception.
  • Vérification en fin d'agent : avant clôture, cocher explicitement chaque étape (réalisée / non réalisée).

Contexte projet : La configuration et la documentation du projet sont dans projects/<id>/. L'identifiant <id> est résolu par paramètre (optionnel en premier argument des scripts), MAIL_TO ou AI_AGENT_TOKEN. Voir projects/README.md. Rappeler ce chemin en début et en fin d'exécution.

Documentation : La doc des projets gérés est dans projects/<id>/docs ; la doc ia_dev est dans projects/ia_dev/docs.

Rôle de l'agent : Exécuter le déploiement vers pprod ou prod en suivant strictement le workflow ci-dessous. Paramètre obligatoire : pprod ou prod. En cas d'échec d'une étape, corriger (analyse des logs, corrections code/config/doc), relancer jusqu'à succès ou blocage nécessitant instruction utilisateur.

Répertoire d'exécution (standalone) : Racine de ia_dev. Tous les scripts sont invoqués depuis la racine de ia_dev.

Ordre des agents et anti-duplication (obligatoire)

Règles décisionnelles (ne pas lancer en double ce quun agent en aval exécute déjà) :

Action en amont Condition Application (tant que létape 2 ci-dessous existe dans ce fichier)
/push-by-script (branche test) Lancer avant ce workflow seulement si /change-to-all-branches ne le lance pas aussi. Lagent /change-to-all-branches exécute /push-by-script avant ./deploy/change-to-all-branches.sh (voir .cursor/agents/change-to-all-branches.md, checklist étape 5). Comme /deploy-pprod-or-prod appelle /change-to-all-branches à létape 2, interdit de lancer /push-by-script sur test séparément avant létape 2 de ce workflow.
/change-to-all-branches Lancer avant ce workflow seulement si /deploy-pprod-or-prod (cible pprod ou prod) ne le lance pas aussi. Ce fichier impose létape 2 « Lancer /change-to-all-branches ». Interdit de lancer /change-to-all-branches séparément avant de commencer ce workflow (sauf évolution documentée de ce fichier sans étape 2 ; dans ce cas seulement, enchaîner manuellement dans lordre push → change-to-all-branches → suite).

Si une future version de ce fichier supprime létape 2 : réévaluer le tableau (alors /change-to-all-branches peut être requis en amont, et /push-by-script reste couvert si /change-to-all-branches est inchangé côté ia_dev).

Vérification obligatoire — début dexécution

Avant létape 1 du workflow, afficher et cocher (dans la sortie de lagent) :

  1. Anti-duplication change-to-all-branches : je nai pas exécuté /change-to-all-branches complet en dehors de ce run immédiatement avant létape 2 (conforme : une seule exécution, celle de létape 2).
  2. Anti-duplication push-by-script : je nai pas exécuté /push-by-script sur test uniquement pour préparer ce déploiement avant létape 2 (le premier push est celui inclus dans /change-to-all-branches à létape 2).

Si lutilisateur ou un autre processus a déjà aligné / poussé : le signaler ; ne pas refaire /push-by-script ni /change-to-all-branches en amont par habitude — suivre quand même létape 2 (idempotence gérée par les scripts / lagent change-to-all-branches).

Vérification obligatoire — fin dagent (avant clôture)

Cocher explicitement : « Ordre anti-duplication : respecté (pas de /push-by-script ni /change-to-all-branches standalone avant létape 2 hors ce workflow) » — ou documenter lexception si évolution du fichier sans étape 2. Cocher aussi : « Lint min. 5 : exécuté sur repository_root + décompte avant/après (ou 0 diagnostic) ; pas de report seul sur /fix-lint ».

Workflow obligatoire

  1. Vérifier la branche : La machine doit être sur la branche test au démarrage. Si ce n'est pas le cas, indiquer à l'utilisateur de passer sur test (ou exécuter git checkout test depuis la racine projet) avant de continuer.

  2. Lancer /change-to-all-branches (sur test) :

    • Exécuter intégralement l'agent change-to-all-branches (commande /change-to-all-branches) : push-by-script puis ./deploy/change-to-all-branches.sh.
    • Si KO : Analyser la sortie et les logs (logs/deploy_*.log), identifier la cause, appliquer les corrections, relancer /change-to-all-branches jusqu'à succès.
    • Si OK : Passer à l'étape 3.
  3. Lancer le script deploy-by-script-to avec la branche en paramètre (pprod ou prod) :

    • Le script est lancé depuis la racine de ia_dev. Avec project_id (optionnel), MAIL_TO ou AI_AGENT_TOKEN le dépôt cible est celui de la conf (deploy.secrets_path). Lancer : ./deploy/deploy-by-script-to.sh [project_id] <pprod|prod>.
    • Le script fait : passage dans le dépôt du projet (conf), checkout sur la branche en paramètre, vérification que .secrets/<env> existe, mise à jour forcée de la branche locale sur la branche distante, déploiement (orchestrateur ou deploy.sh ; flags métier via deploy.conf uniquement), checkout test.
    • Si KO : Analyser la sortie et les logs, identifier la cause, appliquer les corrections, relancer le script jusqu'à succès.
    • Si OK : Passer à l'étape 4.
  4. Checkout test : Le script remet déjà sur test. Vérifier que la branche courante est test après le script.

  5. Lancer /push-by-script : Exécuter intégralement l'agent push-by-script (commande /push-by-script). Message de commit fourni par l'agent selon les règles du projet.

  6. Lint min. 5 sur le dépôt applicatif : Avant la clôture, se placer dans repository_root (projects/<id>/conf.json). Exécuter le lint dans chaque entrée de build_dirs. Si N ≥ 1 diagnostics (erreurs+warnings) : corriger au moins min(5, N) dans ce run. Interdit de clôturer le point lint en renvoyant uniquement à un /fix-lint ultérieur. Documenter décompte avant/après. Si des fichiers sont modifiés : enchaîner /push-by-script (commit des corrections lint) avant de finaliser la clôture lorsque le dépôt nest pas clean.

Horodatage et contexte

Appliquer intégralement le bloc défini dans .cursor/rules/cloture-evolution.mdc (début et fin d'exécution, lancement et retour des sub-agents). Au début et à la fin : date/heure, projet (id), branche et répertoire de travail du dépôt concerné.

Clôture complète obligatoire (tous les cas, sans exception)

En fin d'exécution de cet agent, toujours appliquer intégralement .cursor/rules/cloture-evolution.mdc : points 1 à 19. Pour le point 7 (Optimisation / mutualisation / centralisation), si « Non réalisées encore » : justifier par composant (voir .cursor/agents/closure-point-7-justification.md). Toutes les étapes (agent + clôture) doivent être réellement passées, sans jugement de pertinence ; tout doit se dérouler. (horodatage, 5 sub-agents par projet, questions 3-13, docupdate, reste à faire, push-by-script si pas déjà fait, affichage du texte du commit). Aucune exception : même si une étape a échoué, la clôture complète est obligatoire. Lister les actions réalisées et non réalisées pour chaque point.