ia_dev/.cursor/agents/change-to-all-branches.md
Nicolas Cantu 046f32c995 Cursor rules and agents: project context, execution root, absolute paths
**Motivations:**
- Unify project/branch and config path at start and end of each agent.
- Ensure scripts from parent repo run with correct cwd; avoid dependency on current directory.

**Root causes:**
- Agents did not consistently indicate project (from ../ai_project_id) and branch.
- Scripts (deploy/, gitea-issues/) were invoked with relative paths, assuming arbitrary cwd.

**Correctifs:**
- Contexte projet in rules and cloture-evolution: config/docs in projects/<id> (absolute path), id from slug (../ai_project_id).
- Execution root for scripts: absolute path /home/desk/code/lecoffre_ng_test; all script invocations use cd <root> && ./ia_dev/deploy/... or ./ia_dev/gitea-issues/...

**Evolutions:**
- Each agent recalls project context at start; script-invoking agents use absolute root in examples.

**Pages affectées:**
- .cursor/rules/rules.mdc, .cursor/rules/cloture-evolution.mdc
- .cursor/agents/*.md (evol, fix, fix-search, fix-lint, code, docupdate, push-by-script, deploy-by-script, branch-align-by-script-from-test, change-to-all-branches, gitea-issues-process)
2026-03-12 22:50:48 +01:00

3.1 KiB
Raw Blame History

name model description
change-to-all-branches inherit Uniquement en test, lance /push-by-script puis deploy/change-to-all-branches.sh (alignement + déploiement test).

Contexte projet : La configuration et la documentation du projet sont dans projects/<id>/ (chemin absolu : /home/desk/code/lecoffre_ng_test/ia_dev/projects/<id>). L'identifiant <id> vient du slug (contenu du fichier ../ai_project_id). Rappeler ce chemin en début d'exécution.

Rôle de lagent : vérifier que la branche locale est test (sinon retour 1), fournir le message de commit (via /push-by-script), lancer le script, contrôler la sortie et le code de retour. Rôle du script : exécution déterministe (vérif branche test, branch-align.sh test, deploy.sh test --import-v1 --skipSetupHost --no-sync-origin ; log dans logs/ par défaut).

Focus qualité et résolution de problèmes :

  • Qualité : Ne lancer le script qu'après un push-by-script réussi (message structuré, CHANGELOG à jour, build OK). En cas d'échec de push-by-script, traiter la cause (message manquant, build en échec, etc.) avant de continuer.

  • Résolution de problèmes : Si change-to-all-branches.sh échoue (alignement ou déploiement), analyser la sortie pour identifier la cause ; rapporter la cause et la résolution à apporter. Ne pas relancer sans avoir corrigé ou sans instruction utilisateur.

  • Logs et corrections : Vérifier la sortie du script et le fichier logs/deploy_*.log produit par deploy.sh. En cas d'échec, identifier la cause à partir de ces logs, appliquer les corrections (code, config, doc), committer et pousser les changements via push-by-script si nécessaire, puis relancer le script jusqu'à succès ou blocage nécessitant instruction utilisateur.

Avant d'exécuter un script du projet :

  1. Lire le fichier du script avec l'outil de lecture (ex. deploy/change-to-all-branches.sh).
  2. Présenter à l'utilisateur un résumé de ce que le script va faire : étapes principales, options utilisées, effets attendus.
  3. Lancer le script uniquement après cette présentation.

Si la branche locale actuelle n'est pas test, retourner 1.

Uniquement en test (branche git), exécuter dans l'ordre :

  1. /push-by-script — pousse directement sur la branche test distante (pas de pull request). Message de commit fourni par l'agent.
  2. Exécuter depuis la racine projet (chemin absolu) : cd /home/desk/code/lecoffre_ng_test && ./ia_dev/deploy/change-to-all-branches.sh — aligne origin/test, origin/pprod, origin/prod sur le SHA de test, puis déploie l'environnement test (deploy.sh avec --import-v1 --skipSetupHost --no-sync-origin ; log dans logs/ par défaut). Push direct uniquement ; aucun script ni agent ne crée de pull request.

Retourner 0 en cas de succès. En cas d'échec d'une étape : consulter les logs (sortie du script, logs/deploy_*.log), identifier la cause, appliquer les corrections, mettre à jour git (push-by-script) si des fichiers ont été modifiés, puis relancer. S'arrêter uniquement si la correction n'est pas possible sans instruction utilisateur.