From 7610ff437de90a3cbeb1e04a63cc6b68d231dfea Mon Sep 17 00:00:00 2001 From: 4NK Date: Wed, 15 Apr 2026 17:40:53 +0200 Subject: [PATCH] docs(kogus): centralize secret paths in README; align agents and tracked docs --- .smartIde/agents/change-to-all-branches.md | 2 +- .smartIde/agents/code.md | 2 +- .smartIde/agents/fix-lint.md | 2 +- .smartIde/agents/push-by-script.md | 2 +- projects/kogus/docs/API.md | 2 +- projects/kogus/docs/DATABASE_COMPLETE.md | 20 ++++++++++--------- projects/kogus/docs/IMPORT_V1_DEPENDENCIES.md | 11 +++++----- projects/kogus/docs/MIGRATION.md | 20 ++++++++++--------- projects/kogus/docs/README.md | 15 ++++++++++++++ 9 files changed, 48 insertions(+), 28 deletions(-) diff --git a/.smartIde/agents/change-to-all-branches.md b/.smartIde/agents/change-to-all-branches.md index dbdbf9e..09c1875 100644 --- a/.smartIde/agents/change-to-all-branches.md +++ b/.smartIde/agents/change-to-all-branches.md @@ -99,7 +99,7 @@ Si un point est non applicable (ex. périmètre absent du projet, avec justifica - **Même sans modification de code** (ex. run limité à push + change-to-all-branches) : exécuter les vérifications ci-dessous sur le dépôt du projet et indiquer le résultat par périmètre (Réalisées avec précision, ou Non réalisées encore avec précision). - **Vérifications concrètes obligatoires** : - **3. Helpers** : Parcourir les zones concernées (fichiers modifiés ou build_dirs) ; indiquer « Réalisées » si création/usage de helpers où pertinent, « Non réalisées encore » si duplication ou logique à extraire en helper. Préciser le périmètre concerné. - - **4. i18n + env-full** : Vérifier textes en dur dans l'UI, présence de `.secrets//env-full*` ; « Réalisées » si conforme, « Non réalisées encore » sinon. Préciser. + - **4. i18n + env-full** : Vérifier textes en dur dans l'UI, présence des **`env-full-*`** sous **`.secrets///`** sur `LECOFFRE_REPO` ; « Réalisées » si conforme, « Non réalisées encore » sinon. Préciser. - **5. Fallback interdits** : Parcourir le code (modifié ou périmètre) pour fallback, valeurs par défaut masquant des erreurs ; « Réalisées » si aucun, « Non réalisées encore » si présents. - **6. Modifications similaires** : Vérifier s'il existe ailleurs dans le dépôt des patterns similaires à appliquer ; « Réalisées » si étendu ou rien à faire, « Non réalisées encore » si à faire. Préciser. - **7. Optimisation / mutualisation / centralisation** : Vérifier duplication ou centralisation possible ; « Réalisées » ou « Non réalisées encore » avec précision. diff --git a/.smartIde/agents/code.md b/.smartIde/agents/code.md index 4792233..b007ace 100644 --- a/.smartIde/agents/code.md +++ b/.smartIde/agents/code.md @@ -38,7 +38,7 @@ Tu appliques les règles ci-dessous **lorsqu'il y a du code à produire** (évol ## Liste ordonnée d'actions obligatoires pour coder 1. **Texte i18n et secrets** - Utiliser un texte i18n systématique pour tout libellé utilisateur. Tenir à jour `.secrets//env-full--for-bdd-injection.txt` selon l'environnement. + Utiliser un texte i18n systématique pour tout libellé utilisateur. Tenir à jour **`env-full--for-bdd-injection.txt`** sous **`.secrets///`** sur le monorepo LeCoffre (voir `docs/features/multi-site-architecture.md`). 2. **Référence aux standards** Consulter et respecter la page wiki **Code-Standards** du projet (URL dans `projects//conf.json` → `git.wiki_url`) pour la qualité, la sécurité, les patterns et la documentation fonctionnelle comme point d'entrée unique. diff --git a/.smartIde/agents/fix-lint.md b/.smartIde/agents/fix-lint.md index de8b0b1..0cec570 100644 --- a/.smartIde/agents/fix-lint.md +++ b/.smartIde/agents/fix-lint.md @@ -34,7 +34,7 @@ Chacune des actions ci-dessous est **obligatoire** et doit être réalisée **de | Action | Obligation | | --- | --- | | **Helpers** | Créer ou réutiliser des helpers dès que la logique est réutilisable ; pas de duplication. | -| **i18n / env-full** | Textes sous i18n ; variables sensibles et env dans `.secrets//env-full` ; pas de chaînes en dur. | +| **i18n / env-full** | Textes sous i18n ; variables sensibles et env sous **`.secrets///env-full-*`** sur le clone LeCoffre (ligne notaire : **`lecoffreio`**) — voir `docs/features/multi-site-architecture.md` ; pas de chaînes en dur. | | **Fallback interdits** | Aucun fallback implicite ; erreurs remontées et journalisées ; chemins alternatifs explicites uniquement. | | **Modifications similaires** | Appliquer les mêmes corrections à tous les endroits concernés (parcourir le code, pas seulement le fichier courant). | | **Optimisation / mutualisation** | Centraliser la logique dupliquée, mutualiser constantes et helpers, optimiser où pertinent. | diff --git a/.smartIde/agents/push-by-script.md b/.smartIde/agents/push-by-script.md index 0006fc5..7045340 100644 --- a/.smartIde/agents/push-by-script.md +++ b/.smartIde/agents/push-by-script.md @@ -164,7 +164,7 @@ Pour chaque point, indiquer **réalisé** ou **non réalisé** et, le cas éché - **Même sans modification de code dans ce run** : exécuter les vérifications ci-dessous sur le dépôt du projet et indiquer le résultat par périmètre (Réalisées avec précision, ou Non réalisées encore avec précision). - **Vérifications concrètes obligatoires** : - **3. Helpers** : Parcourir les zones concernées (fichiers modifiés ou build_dirs) ; « Réalisées » si création/usage de helpers où pertinent, « Non réalisées encore » si duplication ou logique à extraire. Préciser le périmètre. - - **4. i18n + env-full** : Vérifier textes en dur dans l'UI, présence de `.secrets//env-full*` ; « Réalisées » si conforme, « Non réalisées encore » sinon. + - **4. i18n + env-full** : Vérifier textes en dur dans l'UI, présence des **`env-full-*`** sous **`.secrets///`** sur `LECOFFRE_REPO` (voir `docs/features/multi-site-architecture.md`) ; « Réalisées » si conforme, « Non réalisées encore » sinon. - **5. Fallback interdits** : Parcourir le code pour fallback, valeurs par défaut masquant des erreurs ; « Réalisées » si aucun, « Non réalisées encore » si présents. - **6. Modifications similaires** : Vérifier patterns similaires à appliquer ailleurs ; « Réalisées » si étendu ou rien à faire, « Non réalisées encore » si à faire. - **7. Optimisation / mutualisation / centralisation** : Vérifier duplication ou centralisation possible ; « Réalisées » ou « Non réalisées encore » avec précision. Si « Non réalisées encore », justification obligatoire par périmètre (voir `.smartIde/agents/closure-point-7-justification.md`). diff --git a/projects/kogus/docs/API.md b/projects/kogus/docs/API.md index 8cb2db0..1b885ce 100644 --- a/projects/kogus/docs/API.md +++ b/projects/kogus/docs/API.md @@ -8,7 +8,7 @@ Ce document consolide la documentation des APIs externes utilisées par LeCoffre ### Vue d'ensemble -Le backend appelle l’API **ai_working_help** pour les opérations **ask** (legacy), **enqueue** et **getResponse**. L’URL de base est configurée via `NOTARY_AI_AGENT_URL`. Le projet et l’env sont identifiés par le token Bearer ; l’API résout le projet via `projects//.secrets//ia_token`. Filtrage IP 192.168.1.* côté API. +Le backend appelle l’API **ai_working_help** pour les opérations **ask** (legacy), **enqueue** et **getResponse**. L’URL de base est configurée via `NOTARY_AI_AGENT_URL`. Le projet et l’env sont identifiés par le token Bearer ; côté **serveur ia_dev**, l’API résout le projet en parcourant les fichiers **`projects//.secrets//ia_token`** (arborescence **ia_dev**, distincte des secrets monorepo LeCoffre sous **`/.secrets///`** — voir [README kogus — Chemins secrets](./README.md#chemins-secrets-monorepo-et-legacy)). Filtrage IP 192.168.1.* côté API. ### Authentification diff --git a/projects/kogus/docs/DATABASE_COMPLETE.md b/projects/kogus/docs/DATABASE_COMPLETE.md index 7c77741..15b3e3e 100644 --- a/projects/kogus/docs/DATABASE_COMPLETE.md +++ b/projects/kogus/docs/DATABASE_COMPLETE.md @@ -4,7 +4,9 @@ **Version** : 2.0.1 **Auteur** : Équipe 4NK -**Référence unique (checks de déploiement)** : [`docs/DEPLOYMENT.md#cartographie-des-checks-de-déploiement-source-unique`](./DEPLOYMENT.md#cartographie-des-checks-de-déploiement-source-unique) +**Référence unique (checks de déploiement)** : [`Deployment.md`](./Deployment.md). + +**Chemins disque (monorepo LeCoffre)** : [README — Chemins secrets](./README.md#chemins-secrets-monorepo-et-legacy). Pour les exemples ci-dessous, **`SECRETS_LINE_DIR`** = typiquement **`.secrets/lecoffreio//`** après migration multisite. --- @@ -581,19 +583,19 @@ Tous les paramètres système sont stockés dans la table `system_configuration` **Script** : `npm run config:import-env` -**Fichiers** : `.secrets//env-full--for-bdd-injection.txt` +**Fichiers** : **`SECRETS_LINE_DIR/env-full--for-bdd-injection.txt`** (voir [README — Chemins secrets](./README.md#chemins-secrets-monorepo-et-legacy)) **Exécution** : ```bash cd /home/debian/sites/-lecoffreio.4nkweb.com -set -a && source .secrets//.env. && set +a +set -a && source SECRETS_LINE_DIR/.env. && set +a # Note: scripts_v2 utilise systemd. Sur le serveur, dans le répertoire backend : cd lecoffre-back-main && npm run config:import-env -- --env ``` **Ce que fait le script** : -- Lit `.secrets//env-full--for-bdd-injection.txt` +- Lit **`SECRETS_LINE_DIR/env-full--for-bdd-injection.txt`** - Exclut les variables `DATABASE_*` - Crée ou met à jour chaque variable dans la BDD - Catégorise automatiquement selon le mapping @@ -777,7 +779,7 @@ LeCoffre.io dispose d'un système pour recréer et importer une base de données **Usage** : ```bash -# Reset avec le fichier par défaut (.secrets/test/bdd.test) +# Reset avec le fichier par défaut (ex. SECRETS_LINE_DIR/bdd.test → .secrets/lecoffreio/test/bdd.test) ./deploy/scripts/build-and-deploy.sh test --resetDatabase # Reset avec un dump spécifique @@ -795,7 +797,7 @@ Après **chaque** reset/import, exécuter immédiatement : ```bash cd /home/debian/sites/-lecoffreio.4nkweb.com -set -a && source .secrets//.env. && set +a +set -a && source SECRETS_LINE_DIR/.env. && set +a # Note: scripts_v2 utilise systemd. Sur le serveur, dans le répertoire backend : cd lecoffre-back-main && npm run config:import-env -- --env ``` @@ -940,9 +942,9 @@ psql ... -c "SELECT COUNT(*) FROM role_permissions_matrix;" ### Fichiers de configuration -- **Variables d'environnement** : `.secrets//.env.` -- **Injection BDD** : `.secrets//env-full--for-bdd-injection.txt` -- **Dumps SQL** : `.secrets//bdd.` +- **Variables d'environnement (ligne site)** : **`SECRETS_LINE_DIR/.env.`** (ex. `.secrets/lecoffreio//.env.`) +- **Injection BDD** : **`SECRETS_LINE_DIR/env-full--for-bdd-injection.txt`** +- **Dumps SQL** : **`SECRETS_LINE_DIR/bdd.`** --- diff --git a/projects/kogus/docs/IMPORT_V1_DEPENDENCIES.md b/projects/kogus/docs/IMPORT_V1_DEPENDENCIES.md index 4974307..b5795d4 100644 --- a/projects/kogus/docs/IMPORT_V1_DEPENDENCIES.md +++ b/projects/kogus/docs/IMPORT_V1_DEPENDENCIES.md @@ -2,6 +2,8 @@ **Référence** : `deploy/scripts_v2/deploy.sh`, `deploy/scripts_v2/import-v1.sh` +**Chemins disque (monorepo LeCoffre)** : [README — Chemins secrets](./README.md#chemins-secrets-monorepo-et-legacy). Dans les tableaux ci-dessous, **`SECRETS_LINE_DIR`** = typiquement **`.secrets/lecoffreio/ENV/`** pour l’import V1 (ligne notaire). + --- ## 1. Script principal de déploiement (`deploy.sh`) @@ -15,14 +17,13 @@ | Fichier local | Destination cible | | --------------------------------------------------- | ----------------------------------------------------------------------- | -| `.secrets/ENV/env-full-ENV-for-bdd-injection.txt` | `$APP_ROOT/deploy/env-full-ENV-for-bdd-injection.txt` | -| `.secrets/ENV/.env.ENV.connectDB` | via `deploy.sh` → `/etc/lecoffreio//connectDB.env` | +| `SECRETS_LINE_DIR/env-full-ENV-for-bdd-injection.txt` (ex. `.secrets/lecoffreio/ENV/`) | `$APP_ROOT/deploy/env-full-ENV-for-bdd-injection.txt` | +| `SECRETS_KOGUS_DIR/.env.ENV.connectDB` ou résolution `connect-db-paths` (voir LeCoffre) | via `deploy.sh` / cible (fichiers sous `APP_ROOT` ou `.secrets/...` selon phase) | ### Prérequis déploiement standard -- **`.secrets//.env.`** (ex. `.secrets/test/.env.test`) : connexion SSH et config déploiement (DEPLOY_SSH_*, etc.) — à ne pas confondre avec connectDB. -- `.secrets/ENV/.env.ENV` avec variables `DEPLOY_*` +- **`.env.`** ligne site (**`SECRETS_LINE_DIR`**) et/ou **`.secrets/kogus//.env.`** (orchestrateur) : variables `DEPLOY_*`, SSH — ne pas confondre avec **connectDB** (voir LeCoffre `docs/features/secrets-multisite-kogus-and-sites.md`). - Clé SSH configurée (proxy 4nk.myftp.biz) - `env-full-ENV-for-bdd-injection.txt` (optionnel mais recommandé pour build frontend et setSettings) @@ -140,7 +141,7 @@ Pour le détail des flux (qui lit/écrit, où), voir **docs/OPERATIONS.md** sect - **Import au déploiement** (`import-v1-data-direct-into-v2.sh`) : V1 strictement en lecture (SELECT, pg_dump, COPY TO STDOUT) ; toutes les écritures (INSERT, UPDATE, TRUNCATE, ANALYZE) ciblent V2 uniquement via `psql_admin` (base DATABASE_NAME). - **Sync au login** (backend `V1ToV2LoginSyncService`) : connexion V1 en lecture seule (SELECT, scoped by user offices) ; upsert et ancrage uniquement en V2 (Prisma). -- **backend.env** : n'existe plus sur les cibles ; sauvegardé dans `.secrets//backup/` puis supprimé à chaque sync. Source unique BDD : `.env..connectDB`. +- **backend.env** : n'existe plus sur les cibles ; sauvegardé sous le répertoire secrets utilisé pour les backups (souvent **`SECRETS_LINE_DIR/backup/`** ou équivalent documenté sur la cible) puis supprimé à chaque sync. Source unique BDD : **`.env..connectDB`** résolu par les scripts (voir LeCoffre `remote/_lib.sh`). --- diff --git a/projects/kogus/docs/MIGRATION.md b/projects/kogus/docs/MIGRATION.md index 2e71ab2..a1ae300 100644 --- a/projects/kogus/docs/MIGRATION.md +++ b/projects/kogus/docs/MIGRATION.md @@ -4,7 +4,9 @@ **Date** : 2026-01-XX **Version** : 2.0.0 -**Référence unique (checks de déploiement)** : [`docs/DEPLOYMENT.md#cartographie-des-checks-de-déploiement-source-unique`](./DEPLOYMENT.md#cartographie-des-checks-de-déploiement-source-unique) +**Référence unique (checks de déploiement)** : [`Deployment.md`](./Deployment.md) (cartographie des checks — fichier **`Deployment.md`** à la racine de ce dossier). + +**Chemins disque (monorepo LeCoffre)** : [README — Chemins secrets](./README.md#chemins-secrets-monorepo-et-legacy). Dans la suite, **`SECRETS_LINE_DIR`** = typiquement **`.secrets/lecoffreio//`** pour la ligne notaire après migration multisite ; **`SECRETS_KOGUS_DIR`** = **`.secrets/kogus//`**. ## 📋 Vue d'Ensemble @@ -84,7 +86,7 @@ Les RIB en V1 étaient stockés en clair sur S3. En V2, ils sont chiffrés avec #### Variables V2 (Application Production) -Les variables suivantes sont définies dans `.secrets//infos_v2.json` et sont **utilisées par l'application V2 en production**. +Les variables suivantes sont définies dans **`SECRETS_LINE_DIR/infos_v2.json`** (canonique) ou, en **legacy**, `.secrets//infos_v2.json`, et sont **utilisées par l'application V2 en production**. **Base de Données** : @@ -137,7 +139,7 @@ Les variables suivantes sont définies dans `.secrets//infos_v2.json` et so #### Variables Migration V1 (Ne PAS utiliser en V2) -Les variables suivantes sont définies dans `.secrets//infos.json`, `.secrets//infos_v1.json` et, pour la BDD V1, dans `.secrets//.env..connectDB` (DATABASE_V1_*). Elles sont **uniquement utilisées par les scripts de migration V1 vers V2**. Elles ne doivent **JAMAIS** être utilisées par l'application V2 en production. +Les variables suivantes sont définies dans **`SECRETS_LINE_DIR/infos.json`**, **`SECRETS_LINE_DIR/infos_v1.json`** et, pour la BDD V1, dans **`SECRETS_LINE_DIR/.env..connectDB`** ou **`SECRETS_KOGUS_DIR/.env..connectDB`** selon où les scripts résolvent le **connectDB** (voir LeCoffre `remote/_lib.sh` / `connect-db-paths.sh`). En **legacy** plat : `.secrets//...`. Elles sont **uniquement utilisées par les scripts de migration V1 vers V2**. Elles ne doivent **JAMAIS** être utilisées par l'application V2 en production. **Scaleway S3 (Migration uniquement)** : @@ -197,12 +199,12 @@ L'application V2 **ne charge JAMAIS** directement les fichiers `infos.json` ou ` **Fichiers utilisés** : -- `.secrets//env-full--for-bdd-injection.txt` : Variables injectées dans `system_configuration` +- **`SECRETS_LINE_DIR/env-full--for-bdd-injection.txt`** : variables injectées dans `system_configuration` (legacy : `.secrets//env-full--for-bdd-injection.txt`) - **PAS** `infos.json` ou `infos_v1.json` pour l'application V2 **Scripts de Migration V1** : -Les scripts de migration V1 chargent les credentials BDD V1 depuis `.secrets//.env..connectDB` (DATABASE_V1_*). Ils peuvent charger depuis `infos.json` **uniquement** pour : +Les scripts de migration V1 chargent les credentials BDD V1 depuis le **connectDB** résolu (**`SECRETS_KOGUS_DIR/.env..connectDB`** ou **`SECRETS_LINE_DIR/.env..connectDB`**, selon phase — voir LeCoffre `deploy/scripts_v2/remote/_lib.sh`) ; en **legacy** : `.secrets//.env..connectDB` (DATABASE_V1_*). Ils peuvent charger depuis `infos.json` **uniquement** pour : - Variables Scaleway S3 (migration fichiers V1 → V2) @@ -245,9 +247,9 @@ Les variables Scaleway sont **isolées** pour la migration uniquement : #### Fichiers de Configuration -**Structure** : +**Structure** (équivalente sous **`SECRETS_LINE_DIR`** ; plat historique = **`.secrets//`** ) : ```text -.secrets// +SECRETS_LINE_DIR/ # ex. .secrets/lecoffreio// ├── infos_v2.json # Variables utilisées par l'application V2 (PRODUCTION) ├── infos-migration-scaleway.json # Variables Scaleway S3 (migration uniquement, PRIORITÉ) ├── infos.json # Variables migration V1 (NE PAS UTILISER EN V2, fallback Scaleway) @@ -307,7 +309,7 @@ Les variables Scaleway sont **isolées** pour la migration uniquement : - `.env..connectDB` : Credentials base de données - `env-full--for-bdd-injection.txt` : Variables supplémentaires -**Scripts hors déploiement** (dans `deploy/scripts_v2`) : tous les scripts qui se connectent à la base sans être des scripts de déploiement (ex. ensure-license, check-logs-and-db, ensure-role-permissions-matrix, promote-super-admins, seed-site-texts, reanchor-all, etc.) utilisent `.secrets//.env..connectDB` pour la connexion à la base. Les scripts de déploiement (deploy-app, migrate-resolve-database, prisma-baseline, set-settings, reset-database-from-schema-export, apply-connectdb, install-systemd-units) utilisent `.env..connectDB` (backend.env n'est plus utilisé ; voir OPERATIONS.md). +**Scripts hors déploiement** (dans `deploy/scripts_v2`) : ils résolvent le **connectDB** via **`load_connectdb_v2`** sur la cible (chemin **imbriqué** canonique — voir [README — Chemins secrets](./README.md#chemins-secrets-monorepo-et-legacy)) ; en **legacy** seulement, lecture depuis **`.secrets//.env..connectDB`**. Les scripts de déploiement (deploy-app, migrate-resolve-database, prisma-baseline, set-settings, reset-database-from-schema-export, apply-connectdb, install-systemd-units) utilisent `.env..connectDB` (backend.env n'est plus utilisé ; voir OPERATIONS.md). ### Utilisation des Variables V2 @@ -693,7 +695,7 @@ export default MyService; - [ ] **Extraction des clés V1** (si pas déjà fait) ```bash - ./deploy/scripts_v2/backup/extract-v1-file-keys.sh .secrets//bdd. + ./deploy/scripts_v2/backup/extract-v1-file-keys.sh SECRETS_LINE_DIR/bdd. # ex. .secrets/lecoffreio/test/bdd.test ``` - [ ] **Récupération des fichiers** : Déchiffrement V1 → Re-chiffrement V2 diff --git a/projects/kogus/docs/README.md b/projects/kogus/docs/README.md index 0b9ff10..85938ac 100644 --- a/projects/kogus/docs/README.md +++ b/projects/kogus/docs/README.md @@ -4,6 +4,21 @@ **Wiki** : https://git.4nkweb.com/4nk/lecoffre_ng/wiki **Correspondance fichier → page wiki** : nom du fichier sans `.md`, `_` → `-`, title-case par segment (ex. `README.md` → Readme, `Operations.md` → Operations). +## Chemins secrets (monorepo et legacy) + +Cette section évite de dupliquer les tableaux détaillés dans chaque page de ce dossier. Elle vise le clone **LeCoffre** (`deploy.repository_root` dans `projects/kogus/conf.json`). Elle ne décrit **pas** l’arborescence interne des jetons **ia_dev** sous **`projects//.secrets/...`** (ex. fichier **`ia_token`** par projet), qui reste propre au dépôt **ia_dev**. + +| Rôle | Chemin canonique (scripts `deploy/scripts_v2`, `deploy-site.sh`) | +|------|------------------------------------------------------------------| +| Secrets par **ligne produit** (`SITE_CODE` / 2ᵉ argument de `deploy-site.sh`) | **`.secrets///`** avec **` ∈ { lecoffreio, enso, genealogie }`** | +| **Kogus** (orchestrateur SSH, `connectDB` partagé, précontrôle `deploy-site.sh`) | **`.secrets/kogus//`** (`.env.`, `.env..connectDB`) | + +**Documentation canonique (dépôt LeCoffre, branche suivie)** : `docs/features/multi-site-architecture.md`, `docs/features/secrets-multisite-kogus-and-sites.md`, `docs/features/secrets-devai-kogus-sites-and-imports.md`, `docs/features/multisite-data-policy-lecoffre-vs-ia-dev.md`, manifeste `deploy/secrets-layout-manifest.json`. Exemple d’URL Gitea (adapter la branche) : `https://git.4nkweb.com/4nk/kogus/src/branch/test/docs/features/multi-site-architecture.md`. + +**Legacy** : arbre **plat** **`.secrets//`** uniquement en phase de migration ; pont **symlinks** documenté avec **`LECOFFRE_LEGACY_FLAT_SECRETS_SYMLINKS=1`** côté orchestration **ia_dev** — état cible = répertoires **réels** par **``**. + +Les pages **MIGRATION**, **DATABASE_COMPLETE**, **Frontend**, **IMPORT_V1_DEPENDENCIES** peuvent encore mentionner **`.secrets//`** pour l’historique V1→V2 : pour un déploiement multisite aligné, lire **`.secrets/lecoffreio//`** (ligne notaire) ou le **``** réel à la place du plat. + ## Pages disponibles (docs/ racine) | Fichier | Page wiki | Description |