- README reécrit : tiers free/pro/full + modèle clé API + multi-instance - Sync agents/ (57 agents, kernel-isolation validated) - Sync scripts/ BSI-v3 (file-lock, preflight, human-gate, brain-status) - KERNEL.md v0.7.0 — zones + délégation + rendering + isolation - brain-compose.yml v0.7.0 — rendering mode + kerneluser - workflows/ — template + brain-engine exemple - locks/.gitkeep + claims/.gitkeep - helloWorld : RAG boot tier full only (bsi-rag retiré du template)
4.4 KiB
Review agent : pm2 — v1
⚠️ Ce fichier concerne la QUALITÉ DE L'AGENT, pas les tests du code applicatif. Tests code → voir
projet/src/__tests__/et Jest/Vitest.
Contexte de la review
| Info | Valeur |
|---|---|
| Agent reviewé | pm2 |
| Version | v1 |
| Date | 2026-03-13 |
| Projet testé | Super-OAuth |
| Cas soumis | Configurer ecosystem.config.js + déploiement prod (reload 0-downtime + startup + save) |
Output brut de l'agent
L'agent a fourni (depuis pm2.md au démarrage) :
- Un ecosystem.config.js template avec
instances: 1,exec_modenon spécifié (fork par défaut) - Un pattern CI/CD avec
pm2 reload super-oauthprésenté comme "0 downtime" - La commande
npm ci --omit=devdans le deploy pattern CI/CD
Adapté pour Super-OAuth en session :
ecosystem.config.jscréé avecinstances: 2, exec_mode: 'cluster'(correction de l'agent)ci.ymlpatché :pm2 reload super-oauth --update-envremplace le TODO- env_production (au lieu de env) pour distinguer les environnements
Évaluation
✅ Ce qui a bien fonctionné
- Chemin VPS correct (
/home/tetardtek/github/Super-OAuth) — ancré dans les sources watch: falsedocumenté avec le pourquoimax_memory_restartadapté au VPS Tetardtekautorestart: trueinclus sans qu'on le demande- Distinction
pm2 reloadvspm2 restartmentionnée - Commande
pm2 startup+pm2 savecorrectement séquencée
❌ Ce qui manquait ou était incorrect
-
0-downtime mensonger en mode fork — L'agent dit "reload = 0 downtime" mais c'est faux avec
instances: 1et fork mode. Un reload en fork = arrêt puis redémarrage = downtime. Le vrai 0-downtime nécessiteexec_mode: 'cluster'+instances >= 2. -
envvsenv_production— Le template utiliseenvau lieu deenv_production. La bonne pratique pm2 est d'utiliser des blocs nommés (env_production,env_staging) et de démarrer avec--env production. Avecenv, les variables s'appliquent à tous les environnements. -
Duplication des variables d'env — Le template met
PORT: 3000dans l'ecosystem config. Si le.envcontient déjà PORT, c'est une source de désynchronisation silencieuse. L'agent ne prévient pas de ce risque. -
npm civsnpm ci --omit=dev— Le deploy pattern CI/CD de l'agent utilise--omit=dev, mais le vraici.ymlSuper-OAuth fait justenpm ci. L'agent devrait aligner sur la réalité du projet ou expliciter le trade-off (taille node_modules en prod). -
Pas de
--update-envsurpm2 reload— Sans ce flag, pm2 ne recharge pas les variables d'environnement au reload. Critique si le.enva changé entre deux déploiements. -
Premier déploiement vs reload — L'agent mentionne le cas mais sans la commande de détection. Comment savoir si pm2 connaît déjà le process ? Il manque la pattern de guard :
pm2 list | grep super-oauth || pm2 start ecosystem.config.js --env production.
⚠️ Anti-hallucination respectée ?
- A dit "Information manquante" quand nécessaire
- N'a pas inventé de commandes/chemins/métriques
- Niveau de confiance explicite si incertain — absent sur la question "reload = 0 downtime" qui est présentée comme un fait alors que c'est conditionnel
📐 Périmètre respecté ?
- N'a pas débordé sur d'autres domaines
- A bien délégué ce qui ne le concernait pas (Apache, CI/CD complet)
Gaps identifiés → à corriger dans l'agent
| Gap | Correction proposée | Priorité |
|---|---|---|
instances: 1 + fork présenté comme 0-downtime |
Documenter explicitement que 0-downtime = cluster mode + instances >= 2. Mettre à jour le template. | haute |
env au lieu de env_production |
Changer le template — utiliser env_production + noter pm2 start --env production |
haute |
Pas de --update-env sur reload |
Ajouter pm2 reload <name> --update-env partout où reload est mentionné |
haute |
| Duplication PORT dans ecosystem | Avertir : ne mettre que NODE_ENV dans env_production, les secrets viennent du .env |
moyenne |
| Guard premier déploiement | Ajouter pattern de détection : pm2 list | grep <name> || pm2 start ... |
moyenne |
npm ci --omit=dev vs npm ci |
Aligner sur réalité projet ou documenter le trade-off explicitement | basse |
Action
- Gaps reportés dans
agents/pm2.mdchangelog - Recruiter invoqué pour améliorer l'agent
- v2 planifiée