diff --git a/.smartIde/agents/change-to-all-branches.md b/.smartIde/agents/change-to-all-branches.md index d83b5ae..77c3680 100644 --- a/.smartIde/agents/change-to-all-branches.md +++ b/.smartIde/agents/change-to-all-branches.md @@ -43,6 +43,8 @@ En tant qu'agent, avant de solliciter l'ia, regarde ce que tu peux scripter (imp **Rôle de l’agent :** 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`, orchestrateur ou `deploy.sh test --no-sync-origin` ; flags métier uniquement via `$SECRETS_BASE/test/deploy.conf` ; journalisation toujours `./logs/deploy_*.log`). Préparation OS cible : agent **`/setup-host`** + `deploy/scripts_v2/run-setup-host.sh`, pas `deploy.sh`. +**Projet lecoffreio :** si le script enchaîne **`deploy/scripts_v2`**, appliquer le contrat multisite (**`SITE_CODE`** / **`deploy-site.sh`** / **`deploy-lecoffre-all-sites.sh`**, secrets **`.secrets///`**) décrit dans **`repository_root/docs/features/multi-site-architecture.md`** et **`repository_root/.cursor/agents/agent-paths-registry.md`** §3 bis (les agents Cursor du dépôt applicatif sont sous **`.cursor/agents/`**, pas **`.smartIde`**). + **Branche applicative test-first (obligatoire) :** Toute correction de code, configuration ou documentation dans le **dépôt applicatif** (`repository_root` dans `projects//conf.json`) pendant l’exécution de cet agent doit être réalisée sur la branche locale **test**. Avant toute modification : si le dépôt applicatif n’est pas sur **test**, exécuter **`git checkout test`** (ou équivalent validé projet). **Interdit** : committer un correctif **uniquement** sur **pprod** ou **prod** depuis cet agent. Si l’échec ou le contexte provient d’une phase **pprod**/**prod** (correctifs identifiés après déploiement ou analyse sur ces branches), appliquer la procédure **Corrections découvertes sur pprod ou prod** dans `.smartIde/agents/deploy-pprod-or-prod.md` : correctifs sur **test**, puis **rejouer** le workflow complet depuis l’étape 2 de cet agent dans ce flux (**`/change-to-all-branches`** inclus dans **`/deploy-pprod-or-prod`**), sans court-circuiter l’alignement **test → pprod → prod**. **Focus qualité et résolution de problèmes :** diff --git a/.smartIde/agents/deploy-by-script.md b/.smartIde/agents/deploy-by-script.md index 2f831dd..7218e87 100644 --- a/.smartIde/agents/deploy-by-script.md +++ b/.smartIde/agents/deploy-by-script.md @@ -31,7 +31,11 @@ En tant qu'agent, avant de solliciter l'ia, regarde ce que tu peux scripter (imp **Documentation** : La doc des projets gérés est dans **`projects//docs`** ; la doc ia_dev est dans **`projects/ia_dev/docs`**. -**`deploy.host_stays_on_test: true` dans `projects//conf.json` (ex. lecoffreio / LeCoffre) :** le clone applicatif (`repository_root`) reste sur la branche Git locale **`test`** pour les déploiements **pprod**/**prod** via **`deploy-by-script-to.sh`**. L’environnement cible est l’**argument** du script. Le `deploy.sh` du dépôt aligne les remotes / **worktree** (ex. **`git push lecoffre_ng test:`** pour LeCoffre) — pas de **`git checkout pprod`**/**`prod`** sur le poste. Vérifier **`test`** aligné avec le remote attendu. Doc applicative : **`deploy/README.md`** ; agents LeCoffre : **`LECOFFRE_REPO/.smartIde/agents/deploy-by-script.md`**. +**`deploy.host_stays_on_test: true` dans `projects//conf.json` (ex. lecoffreio / LeCoffre) :** le clone applicatif (`repository_root`) reste sur la branche Git locale **`test`** pour les déploiements **pprod**/**prod** via **`deploy-by-script-to.sh`**. L’environnement cible est l’**argument** du script. Le `deploy.sh` du dépôt aligne les remotes / **worktree** (ex. **`git push lecoffre_ng test:`** pour LeCoffre) — pas de **`git checkout pprod`**/**`prod`** sur le poste. Vérifier **`test`** aligné avec le remote attendu. Doc applicative : **`deploy/README.md`** ; agents Cursor du dépôt LeCoffre : **`repository_root/.cursor/agents/deploy-by-script.md`** (pas **`.smartIde`** sur le dépôt applicatif). + +## Multisite — projet **lecoffreio** + +Lorsque le playbook appelle **`repository_root/deploy/scripts_v2/`**, respecter la boucle **`SITE_CODE`** (**`notary`**, **`enso`**, **`genealogie`**) ou **`deploy-site.sh`** / **`deploy-lecoffre-all-sites.sh`** ; **`deploy-by-script-to`** ne positionne pas **`SITE_CODE`**. Secrets : **`.secrets///`**. Source normative : **`repository_root/docs/features/multi-site-architecture.md`** ; **`repository_root/.cursor/agents/agent-paths-registry.md`** §3 bis ; § **Multisite** dans **`repository_root/.cursor/agents/deploy-pprod-or-prod.md`**. Cet agent lance le déploiement vers l’**environnement passé au script** (ex. `./deploy/deploy-by-script-to.sh test|pprod|prod`) via **scripts_v2**. **Si `deploy.host_stays_on_test` est absent ou false :** en pratique la branche locale du dépôt applicatif correspond souvent à l’env cible pour **pprod**/**prod**. **Rôle de l’agent :** vérifier le contexte (si **`host_stays_on_test`** : branche locale = **test** ; sinon : cohérence branche / env selon le projet), lancer le script, contrôler la sortie et le code de retour, synthèse et clôture. **Rôle du script :** exécution et orchestration sûre (suivi branches, sync, log, déploiement). @@ -50,7 +54,7 @@ Cet agent lance le déploiement vers l’**environnement passé au script** (ex. **Horodatage et contexte** : appliquer intégralement le bloc défini dans `.smartIde/rules/cloture-evolution.mdc` (début et fin d'exécution, lancement et retour des sub-agents). **Avant d'exécuter un script du projet :** -1. Lire le fichier du script avec l'outil de lecture (ex. `deploy/scripts_v2/deploy.sh`). +1. Lire le fichier du script avec l'outil de lecture (ex. `deploy/scripts_v2/deploy.sh` ; pour **lecoffreio**, lire aussi **`deploy-site.sh`** / **`deploy-lecoffre-all-sites.sh`** si le flux les utilise). 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. diff --git a/.smartIde/agents/deploy-pprod-or-prod.md b/.smartIde/agents/deploy-pprod-or-prod.md index 6a78afc..6e50785 100644 --- a/.smartIde/agents/deploy-pprod-or-prod.md +++ b/.smartIde/agents/deploy-pprod-or-prod.md @@ -70,6 +70,10 @@ Si l’utilisateur ou un autre processus **a** déjà aligné / poussé : **le s 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 l’exception si évolution du fichier sans étape 2. Cocher : **« Corrections pprod/prod : si applicable, faites sur test puis workflow rejoué depuis étape 2 (aucun correctif applicatif « seulement pprod/prod ») »**. 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 »**. +## Multisite — projet **lecoffreio** + +Quand **`repository_root`** est le monorepo LeCoffre et **`deploy-by-script-to`** enchaîne **`deploy/scripts_v2/`**, l’orchestration doit couvrir **`notary`**, **`enso`**, **`genealogie`** (**`SITE_CODE`** ou **`deploy-site.sh`** / **`deploy-lecoffre-all-sites.sh`**) ; **`deploy-by-script-to`** ne définit pas **`SITE_CODE`**. Secrets : **`.secrets///`**. Doc : **`repository_root/docs/features/multi-site-architecture.md`** ; **`repository_root/.cursor/agents/agent-paths-registry.md`** §3 bis ; **`repository_root/.cursor/agents/deploy-pprod-or-prod.md`** § Multisite. + ## 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. @@ -82,7 +86,7 @@ Cocher explicitement : **« Ordre anti-duplication : respecté (pas de `/push-by 3. **Lancer le script deploy-by-script-to** avec l’environnement 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] `. - **`deploy.host_stays_on_test: true`** dans `projects//conf.json` (LeCoffre : **true** dans `projects/lecoffreio/conf.json`) : le clone applicatif reste sur **`test`** ; `deploy-by-script-to.sh` ne fait **pas** de `checkout` **pprod**/**prod** ni `reset --hard` sur ces branches ; le `deploy.sh` du dépôt aligne les remotes / **worktree** (voir **`deploy/README.md`** du dépôt applicatif). - - **Sinon :** le script fait en général : passage dans le dépôt du projet, `checkout` sur la branche paramètre, vérification que `.secrets/` existe, `reset --hard` sur **`origin/`**, déploiement (orchestrateur ou `deploy.sh`), puis **`checkout test`**. + - **Sinon :** le script fait en général : passage dans le dépôt du projet, `checkout` sur la branche paramètre, vérification que la base secrets attendue par le projet existe (**lecoffreio** : imbriquée **`.secrets///`**, voir **`repository_root/docs/features/multi-site-architecture.md`** — le seul plat **`.secrets//`** n’est pas le contrat nominal multisite), `reset --hard` sur **`origin/`**, déploiement (orchestrateur ou `deploy.sh`), puis **`checkout test`**. - **Si KO :** Analyser la sortie et les logs, identifier la cause. **Ne pas** se limiter à corriger sur la branche **pprod**/**prod** : retour **test**, corrections, puis **rejouer depuis l’étape 2** (**`/change-to-all-branches`** puis **`deploy-by-script-to`**) jusqu'à succès (section **Corrections découvertes sur pprod ou prod**). - **Si OK :** Passer à l'étape 4. diff --git a/.smartIde/agents/setup-host.md b/.smartIde/agents/setup-host.md index 47fdab5..7d61557 100644 --- a/.smartIde/agents/setup-host.md +++ b/.smartIde/agents/setup-host.md @@ -23,7 +23,7 @@ is_background: false 4. **Invocation** : depuis la racine du dépôt projet (`cd "$(jq -r '.deploy.repository_root' conf.json)"` ou équivalent) : - `bash deploy/scripts_v2/run-setup-host.sh ` - L’environnement doit être passé explicitement (pas de valeur par défaut métier). -5. **Secrets** : le script charge `.secrets//.env.` via `SECRETS_BASE` / `repo-and-secrets.sh` comme `deploy.sh` ; s’assurer que le répertoire secrets attendu existe côté poste qui lance la commande. +5. **Secrets** : **`run-setup-host.sh`** résout le répertoire d’env via **`lecoffre_secrets_env_dir_for_read`** (layout **`.secrets///`** pour LeCoffre, comme **`deploy.sh`** / **`connect-db-paths.sh`**) ; s’assurer que **`SITE_CODE`** ou les trois branches **`notary`**, **`enso`**, **`genealogie`** sont peuplées selon le projet — voir **`repository_root/docs/features/multi-site-architecture.md`** pour **lecoffreio**. 6. **Sortie** : ne pas masquer stdout/stderr ; en échec, relire les messages sudo / SSH. 7. **Clôture** : appliquer `.smartIde/rules/cloture-evolution.mdc` en fin d’exécution agent (horodatage, questions 3–11 selon périmètre touché).