From 3e5be1b1f9474f9381c583de0f8ea1a6a2d7f76d Mon Sep 17 00:00:00 2001 From: Guy Corbaz Date: Fri, 9 Oct 2026 06:33:28 +0200 Subject: [PATCH 01/14] =?UTF-8?q?chore(story/15-13a-mariadb-non-publiee):?= =?UTF-8?q?=20planification=20report=C3=A9e=20sur=20main=20(fiches,=20prom?= =?UTF-8?q?pts,=20registre=20par=20union)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- .../15-13-mariadb-et-sauvegarde.md | 183 ++++ .../15-13-validate-prompt-p1.md | 35 + .../15-13-validate-prompt-p2.md | 35 + .../15-13-validate-prompt-p3.md | 35 + ...-non-publiee-mots-de-passe-obligatoires.md | 950 ++++++++++++++++++ .../15-13a-validate-prompt-p4.md | 35 + .../15-13a-validate-prompt-p5-ciblee.md | 42 + ...13b-sauvegarde-avant-import-persistante.md | 794 +++++++++++++++ .../15-13b-validate-prompt-p4.md | 35 + .../15-13b-validate-prompt-p5.md | 35 + .../epic-15-choix-autonomes.md | 182 ++++ 11 files changed, 2361 insertions(+) create mode 100644 _bmad-output/implementation-artifacts/15-13-mariadb-et-sauvegarde.md create mode 100644 _bmad-output/implementation-artifacts/15-13-validate-prompt-p1.md create mode 100644 _bmad-output/implementation-artifacts/15-13-validate-prompt-p2.md create mode 100644 _bmad-output/implementation-artifacts/15-13-validate-prompt-p3.md create mode 100644 _bmad-output/implementation-artifacts/15-13a-mariadb-non-publiee-mots-de-passe-obligatoires.md create mode 100644 _bmad-output/implementation-artifacts/15-13a-validate-prompt-p4.md create mode 100644 _bmad-output/implementation-artifacts/15-13a-validate-prompt-p5-ciblee.md create mode 100644 _bmad-output/implementation-artifacts/15-13b-sauvegarde-avant-import-persistante.md create mode 100644 _bmad-output/implementation-artifacts/15-13b-validate-prompt-p4.md create mode 100644 _bmad-output/implementation-artifacts/15-13b-validate-prompt-p5.md diff --git a/_bmad-output/implementation-artifacts/15-13-mariadb-et-sauvegarde.md b/_bmad-output/implementation-artifacts/15-13-mariadb-et-sauvegarde.md new file mode 100644 index 00000000..66fd687d --- /dev/null +++ b/_bmad-output/implementation-artifacts/15-13-mariadb-et-sauvegarde.md @@ -0,0 +1,183 @@ +# Story 15.13 : MariaDB et sauvegarde avant import — fiche index, découpée en 15-13a et 15-13b + +Status: split + + + +**Issues** : #551 (fermée par la **15-13a**), #552 et #576 (fermées par la **15-13b**) ; `refs #558` +(15-13b), `refs #577` (15-13a) ; #575 et #554 citées, hors périmètre. + +## Découpage + +**La couture** : #551 (MariaDB : port, mots de passe, avertissement, indice 1045 — tout ce qui touche la +base et son accès) d'un côté ; #552 et #576 (la sauvegarde pré-import : son dossier, son mode, le message de +son échec) de l'autre. #576 ne se sépare pas de #552 : elle naît du nouveau défaut `/data/backup`, qui fait +de l'échec d'écriture le cas nominal hors Docker (C-15-13-9). Aucune des deux fiches n'appelle ce que +l'autre ajoute ; elles touchent les **mêmes fichiers** (`docker-compose.yml`, `.env.example`, `config.rs`, +`configuration_transmise.rs`, `admin-manual.tex` § *Passer à la 0.13.0*, `DOCKER_START.md`, +`CHANGELOG.md` `[0.13.0]`) à des endroits distincts. + +| fiche | contenu | issues | modules de code | dépend de | +|---|---|---|---|---| +| **15-13a** — `15-13a-mariadb-non-publiee-mots-de-passe-obligatoires.md` | port de MariaDB non publié ; `${MARIADB_*_PASSWORD:?…}` (refus nommé de Compose, vérifié en CI dans les deux sens) ; `.env.example` sans `kesh_dev` ; avertissement au démarrage (mot de passe publié **ou gabarit du manuel**, F-P3-3) ; indice sur le 1045 ; `configuration_transmise.rs` (service `mariadb`, scission de l'interpolation, `VALEURS_COMPOSEES`) ; manuel (ports, étape `.env`, hex, paragraphe MariaDB de la mise à jour, changement de mot de passe, `exec mariadb`, dépannage), brochure, `DOCKER_START.md`, retrait d'`init-demo.sh`, `docs/ci.md` ; CHANGELOG **Sécurité** #551 et **Retiré** | **closes #551**, refs #577 | `config`, `main` (2) | 15-11a, 15-11b (mergées) | +| **15-13b** — `15-13b-sauvegarde-avant-import-persistante.md` | défaut `/data/backup` (`config::env_nonempty` inchangé), montage fixe `./backup` des deux compose, fichier `0600` sans écrasement, dossier `0700` ; variante `AdminPreImportBackupFailed`, `avant_sauvegarde` et le tri des 17 sites `AdminFullImportFailed` de `routes/admin.rs` ; quatre locales ; recettes hors Docker (AC 16, élargi aux modes `cargo run` documentés) ; `.gitignore` (motifs **ancrés**, R3-1) et `.dockerignore` ; rapatriement pour restaurer ; manuel (sauvegarde) ; CHANGELOG **Corrigé** #552, #576 et **Sécurité** (dossiers ignorés) | **closes #552**, **closes #576**, refs #558 | `config`, `routes/admin`, `errors`, catalogues `kesh-i18n` (4) | 15-11a, 15-11b (mergées) | + +**Ordre suggéré** : 15-13a, puis 15-13b — #551 est P2 (sécurité), #552 et #576 P3. L'ordre inverse est +possible : la seule conséquence est le **recompte des gestes** du paragraphe « Pour qui garde son fichier +compose » (`admin-manual.tex:1793`) et de `CHANGELOG.md:46`, que fait la fiche mergée en second. Nombres, +par fichier (`docker-compose.yml` / `docker-compose.prod.yml`) : aujourd'hui 2 / 2 ; 15-13a seule 4 / 2 ; +15-13b seule 3 / 3 ; les deux 5 / 3. + +**Si une seule est mergée au tag v0.13.0** — chaque fiche ne réécrit que ce que **son** changement rend +faux, si bien que l'autre partie du CHANGELOG et du manuel reste vraie : +- **15-13a seule** : CHANGELOG `[0.13.0]` avec l'entrée **Sécurité** #551, la rubrique **Retiré** + (`init-demo.sh`), quatre phrases de `:46` réécrites et `:52` corrigée ; la phrase « la sauvegarde + pré-import reste dans `/tmp` » reste (vraie). Manuel : parties MariaDB ; les « défaut `/tmp` » + (`:757`, `:1664`, `:1699`) restent (vrais). +- **15-13b seule** : CHANGELOG avec les entrées **Corrigé** #552 et #576, la **Sécurité** « dossiers + montés ignorés », la phrase `/tmp` et le décompte des gestes de `:46` réécrits ; les trois autres phrases + de `:46` restent (vraies tant que les mots de passe ont un défaut). Manuel : parties sauvegarde. #551 + reste ouverte, et la release ne peut pas se dire « MariaDB fermée ». + +### Recompte aux deux bornes + +Borne basse : la fiche unique au commit **8a9bcd27** (comptes vérifiés par la lentille R de la P3). +Borne haute : les deux fiches filles de ce commit, recomptées par `grep` (`'^[0-9]+\. \*\*'` pour les AC, +`'^- \[ \] \*\*T'` pour les tâches, `grep -oE '\*\*M[0-9]+\*\*' | sort -u` pour les mutations, `'^| '` pour +les tableaux). + +| Objet | Fiche unique (8a9bcd27) | 15-13a | 15-13b | Écart expliqué | +|---|---|---|---|---| +| AC (numéros) | 16 | 11 (1–6, 10–14) | 10 (7–16) | 5 numéros partagés (10–14), sous-points répartis : 11 + 10 − 5 = 16, aucun perdu | +| Tâches | 11 (T0–T10) | 11 | 9 (sans T4, T7) | T4 (CI) et T7 (recette MariaDB) propres à la 15-13a ; les autres scindées | +| Lignes de test | 19 (18 Rust + 1 CI) | 9 (8 + CI) | 11 | 9 + 11 = 20 : **+1**, la ligne **3a** (`valeurs`, ci-dessous) | +| Fonctions de test Rust | 19 (15 neuves, 4 complétées) | 8 (7 neuves, 1 complétée) | 12 (8 neuves, 4 complétées) | 20 = 19 **+ `valeurs`**, modifiée par le resserrement de `VALEURS_COMPOSEES` mais jamais comptée (constat du remédiateur : M5 rougit `valeurs`, non `transmission` ni le test 1) | +| Mutations | 40 (M1–M40) | 22 | 20 | 42 = 40 + **M41** (R3-1, 15-13b) + **M42** (F-P3-3, 15-13a) ; aucune en double (`sort -u` sur l'union → 42, de M1 à M42 sans trou) | +| Tableau des cas | 11 lignes | 10 | 3 | 13 = 11 + 2 lignes scindées (« compose gardé », « image ancienne ») | +| Inventaire | 57 lignes | 47 | 36 | totaux recomptés aux deux bornes (`grep -c '^| '` sur chaque tableau, en-tête exclu) ; la ventilation ligne à ligne écrite ici au découpage (« 29 passées entières… → 36 + 28 ») **ne se refaisait pas** (R4-7 de la validation P4 de la 15-13a : 29 + 6 ≠ 36) et est retirée. Depuis la validation P4 : 48 (15-13a) et 41 (15-13b), détail au Change Log de chaque fille | +| Angles morts | 12 | 4 | 8 | aucun perdu ; celui du gabarit réécrit (root seul, tracé par issue) | +| Modules de code | 5 | 2 | 4 | `config` dans les deux ; union = 5 | + +## Change Log + +- 2026-10-09 — Spécification (agent de spécification, Opus 5.5, en autonomie). 14 AC, 11 tâches (T0–T10), + 13 lignes de test (13 fonctions Rust dont 10 neuves, 1 étape CI), 27 mutations ; choix C-15-13-1 à C-15-13-7. Issues à ouvrir signalées à + l'orchestrateur : section Synology du manuel (pré-script et aperçu sans service `mariadb`, nom de volume + faux) ; message `error-admin-full-import-failed` faux quand l'écriture de la sauvegarde échoue. + *(Ouvertes depuis : **#575** et **#576**.)* +- 2026-10-09 — **Remédiation de la validation P1** (agent remédiateur, Opus 5.5, en autonomie). Passe P1 : + deux lentilles Opus 5.5 en contexte frais — R (auditeur d'acceptation) **0 CRITICAL / 0 HIGH / 4 MEDIUM / + 12 LOW**, F (adversaire plein périmètre) **0 / 0 / 7 MEDIUM / 8 LOW** ; doublons R-1 = F1, R-3 = F6, + R-2 ≈ F4 — soit **8 MEDIUM distincts** ; 20 LOW, dont 17 distincts (L1 = F8, L2 = F9, L4 = F10). Tous remédiés : + - **#576 absorbée** (F7, décision de l'orchestrateur, C-15-13-9) : AC 15 (variante + `AdminPreImportBackupFailed`, `avant_sauvegarde` à l'appel, quatre locales et repli Rust) et AC 16 + (recettes `cargo run` du dépôt — `CLAUDE.md`, une ligne ; `docs/testing.md`) ; la PR porte + `closes #576`. + - **Sauvegarde `0600` gardée, rapatriement au manuel** (R-2/F4, décision de l'orchestrateur, C-15-13-8) : + AC 9, 11 e, T0, ligne « restaurer après un import raté », angle mort ACL Synology. + - **Contrôle de fin de mise à jour par connexion à la base** (F3, décision de l'orchestrateur, + C-15-13-10) : AC 11 f, T7 ; lignes « root neuf sans `ALTER USER` » et « gabarit littéral » (R-4) au + tableau des cas ; « aucun cas ne casse en silence » réécrit. + - **YAML du message `:?`** (R-1/F1) et **scission `:?`/`?`** (F2, M28-M29) : AC 2 c, 10 a, 10 d, + C-15-13-12. + - **Inventaire recompté** (R-3/F6) : grep du T9 rejoué au `HEAD` (83 fichiers, chacun trié), plus + `MARIADB_` et `cargo run -p kesh-api` ; `init-demo.sh` résolu (AC 12 b, C-15-13-11) ; numéros de + ligne corrigés (`docker-compose.dev.yml:15`, `:54`, `:56-59` ; `ci.yml:55` ; `release.yml:26` ; + `admin-manual.tex:1761-1776`, `:1746`). + - **Propagation** (F5) : AC 13 c étendu aux quatre phrases de `CHANGELOG.md:46` ; AC 11 f à l'encadré + `:1761-1776` (refus de Compose affiché au terminal). + - LOW : `percent-encoding` (L1/F8) ; deux fonctions pour l'indice 1045 et repli `(using password` + (L2/F9) ; `write_backup_file` nommée (L3) ; hôte du test 8 mesuré au T0 (L4/F10) ; contrôles PDF + rendus discriminants, vérifiés rouges sur le PDF aplati d'avant (L5) ; #575/#576 cités (L7) ; recettes + de dev (L8, avec F7) ; nom de volume `_kesh-mariadb-data` (L9) ; limite root au CHANGELOG + (L10) ; `VALEURS_COMPOSEES` resserré (L11) ; textes « trois » (L12) ; fichier partiel supprimé (F11) ; + commentaire `admin.rs:475-477` (F12) ; Compose nomme une variable à la fois (F13) ; ordre existant → + neuf (F14) ; jetons fantômes au manuel et pré-script Synology à joindre à #575 (F15) ; `cd` du script + de sauvegarde (AC 11 h). + - **Recompte** (depuis la fiche) : **16 AC** (14 → 16), **11 tâches** (T0–T10), **18 lignes de test** + (13 → 18) portant **18 fonctions Rust** (14 neuves, 4 existantes complétées) dans un fichier neuf et cinq + existants, plus 1 étape CI ; **37 mutations** (M1–M37, 27 → 37). **Modules** : 5 (`config`, `main`, + `routes/admin`, `errors`, catalogues `kesh-i18n`) — seuil de découpage atteint, non franchi. + - **Signal de découpage** (D5) : la passe P1 est la première, aucune comparaison de sévérité n'est + possible ; le décompte de modules passe de 3 à 5 par l'absorption de #576 — déclaré au Project Lead + via l'orchestrateur. +- 2026-10-09 — **Remédiation de la validation P2** (agent remédiateur, Opus 5.5, en autonomie). Passe P2 : + deux lentilles **Sonnet** en contexte frais — R (regression hunter) **0 CRITICAL / 0 HIGH / 3 MEDIUM / + 7 LOW**, F (adversaire plein périmètre) **0 / 0 / 4 MEDIUM / 8 LOW** ; doublon R2-3 = F4 — soit **6 MEDIUM + distincts** ; 15 LOW, dont 14 distincts (le cas `umask 077` de R2-10 = F12). **Trend** : P1 (Opus 5.5) + 8 MEDIUM distincts → P2 (Sonnet) 6 MEDIUM distincts ; 0 CRITICAL/HIGH aux deux passes. Tous remédiés : + - **`init-demo.sh` retiré** (F2, décision de l'orchestrateur, C-15-13-13, qui remplace C-15-13-11) : + redondant avec la démonstration semée par l'application (`seed-demo` → `kesh_seed`), appelé par + personne (`git grep`) ; AC 12 b réécrit, T6/T7, CHANGELOG « Retiré », inventaire. + - **Test 16** (R2-1) : l'interdit est la **parenthèse entière** de l'ancienne promesse, par locale, avec + assertion de montage (l'interdit figure dans l'ancien texte de sa locale) ; vérifié par `grep -cF` + qu'aucune négation naturelle de l'AC 15 c ne le contient ; AC 15 c dit que la négation est la forme + attendue ; mutation M38. + - **Registres réalignés** (R2-2) : `sprint-status.yaml` (lignes 1 et 359) et la fiche d'epic (`:29-35`) + — 16 AC, 19 fonctions, 40 mutations, 5 modules, C-15-13-1 à 15, `closes #551 #552 #576`, #575/#576. + - **Brochure** (R2-3/F4) : AC 11 m, T5, inventaire ; T9 gagne un grep **par la valeur** du geste de + démarrage (`docker[ -]compose( -f …)? up`) sur `docs`, `website`, `README.md`, `DOCKER_START.md` — + sites triés à l'inventaire (`website/` : aucune commande sur `docker-compose.yml`). + - **Dossiers montés hors du dépôt** (F1, C-15-13-14) : AC 8 e, propagé par le symptôme à `./inbox` et + `./documents` ; test 19 dérivé de `MONTAGES`, mutations M39-M40. + - **`DOCKER_START.md:134-137`** (F3) : AC 12 a-bis — diagnostic du 1045 d'abord, `down -v` réservé à une + installation sans données. + - LOW : numéros de ligne (`admin-manual.tex:1667-1672`, `errors.rs:448-452`, `admin.rs:467-470` ajouté, + C-15-13-5 rectifié `:573` par ajout) (R2-4, R2-6) ; AC 16 c complété (`password-recovery.spec.ts:16`, + `global-setup.ts:34`) (R2-5) ; C-15-13-7 renvoie à C-15-13-9 par ajout (R2-7) ; manuel par **fragment** + `:?`, pas de ligne `DATABASE_URL` entière (76 caractères) (R2-8) ; contrôle des placeholders précédé de + `config -q && echo 'compose lisible'` (R2-9) ; fichier partiel nommé par le `warn!`, angle mort (R2-10) ; + `SELECT CURRENT_USER()`, compte relevé pour `127.0.0.1` et le nom du service, commandes coupées par `\` + (F5) ; `docs/ci.md` « 4 jobs » → 3, le job `e2e` fantôme laissé à une issue (F6, C-15-13-15) ; helper + `lancer_binaire` dans `tests/common/binaire.rs` (F7) ; refus de Compose sur toute sous-commande, mesuré + au T0 (F8) ; portée exacte de l'AC 16 et date de la recette du `CLAUDE.md` (F9) ; motifs PDF à + apostrophe et `--` validés sur le PDF neuf (F10) ; forme du `mariadb-dump` et de la restauration aux + Dev Notes, rejouées au T7 (F11) ; message du test 11 qui nomme l'umask (F12) ; angle mort SELinux. + - **Recompte** (depuis la fiche, `grep`) : **16 AC**, **11 tâches** (T0–T10), **19 lignes de test** (18 + → 19) portant **19 fonctions Rust** (15 neuves, 4 existantes complétées) dans un fichier neuf et cinq + existants, plus 1 étape CI et un module d'aide de test ; **40 mutations** (M1–M40, 37 → 40, aucun trou + ni doublon). **Modules de code** : 5 (`config`, `main`, `routes/admin`, `errors`, catalogues + `kesh-i18n`) — inchangé : la remédiation n'ajoute que des fichiers d'exclusion, de documentation, un + helper de test et un retrait de script ; la convention de décompte est désormais écrite (§ *Règle de + découpage*). + - **Signal de découpage** (D5) : sévérité égale (MEDIUM → MEDIUM). Les six MEDIUM sont **distincts** de + ceux de la P1 ; deux naissent de la remédiation P1 (R2-1 : test 16 ; R2-2 : registres non propagés) et + un en est aggravé (F2 : `init-demo.sh` rendu opérant) ; trois sont des sites d'origine que l'inventaire + avait manqués (brochure, `.gitignore`, `DOCKER_START.md:134`). Aucun défaut ne revient sous une autre + forme : pas de recyclage, seuil de modules non franchi — pas de découpage, signal déclaré au Project + Lead via l'orchestrateur. +- 2026-10-09 — **Validation P3 et découpage** (agent remédiateur, Opus 5.5, en autonomie). Passe P3 : deux + lentilles **Opus 5.5** en contexte frais (prompt `15-13-validate-prompt-p3.md`) — R (regression hunter) + **0 CRITICAL / 0 HIGH / 2 MEDIUM / 8 LOW**, F (adversaire plein périmètre) **0 / 0 / 3 MEDIUM / 8 LOW** ; + aucun doublon MEDIUM — soit **5 MEDIUM distincts** ; 16 LOW, dont 14 distincts (R3-3 = F-P3-4 : #577 ; + F-P3-7 contenu dans R3-6). **Trend** : P1 (Opus 5.5 ×2) 8 MEDIUM distincts → P2 (Sonnet ×2) 6 → P3 (Opus 5.5 + ×2) 5 ; 0 CRITICAL/HIGH aux trois passes. + - **Signal D5 de recyclage, deuxième passe consécutive** : en P2, deux MEDIUM nés de la remédiation P1 + (R2-1, R2-2) ; en P3, trois nés de la remédiation P2 — **R3-1** (correctif de F1 : le test 19 admettait + le motif non ancré que C-15-13-14 écarte, et `backup/` masque `frontend/src/routes/(app)/admin/backup/`, + versionné), **R3-2** (correctif de F2 : le grep de vérification du retrait d'`init-demo.sh` contredit + l'entrée de CHANGELOG exigée), **F-P3-2** (correctif de R2-9 non propagé à `CHANGELOG.md:52`). Selon + l'amendement D5 (rétrospective de l'Epic 25), c'est la forme qui découpe : défauts nés du correctif + précédent. **Décision de l'orchestrateur : découpage** (C-15-13-16) selon la couture #551 / #552-#576. + - **Répartition** : § *Découpage* ci-dessus ; recompte aux deux bornes écrit. Numérotation de la fiche + unique conservée dans les deux filles (AC, tests, mutations, tâches) pour la traçabilité. + - **Remédiation** (détail dans le Change Log de chaque fille) : 15-13a — R3-2, F-P3-1 (partie MariaDB), + F-P3-2, F-P3-3 (C-15-13-17, avertissement du mot de passe applicatif gabarit, M42 ; angle mort root + gabarit → issue à ouvrir par l'orchestrateur), LOW R3-3/F-P3-4, R3-4, R3-5, R3-6 (partie a), R3-7, + R3-8, F-P3-6, F-P3-8, F-P3-9 ; 15-13b — R3-1 (C-15-13-19, M41), F-P3-1 (partie sauvegarde), LOW R3-6 + (partie b)/F-P3-7, R3-9, F-P3-5, F-P3-10, F-P3-11. **R3-10** (`sprint-status.yaml`) : en-tête `(27)` + rétabli dans sa forme d'origine, entrée `(28)` ajoutée. Rectificatifs du registre (C-15-13-13 : `DELETE` + à `:70-75` ; C-15-13-14 : homonyme réel et ancrage ; C-15-13-15 : #577) : C-15-13-20. + - **Constats du remédiateur, hors rapports** : M5 et `VALEURS_COMPOSEES` relèvent du test `valeurs` + (famille (V)), non de `transmission` — ligne 3a de la 15-13a, fonction `valeurs` comptée ; grep + `MARIADB_` (axe non exercé par la lentille R de la P3) rejoué : quatre homonymes (`retry.rs:57`, `:106`, + `reconciliation.rs:1129`, `:1136`) entrés à l'inventaire de la 15-13a. +- 2026-10-09 — **Validation P4 des deux filles** (agent remédiateur, Opus 5.5). Deux lentilles **Sonnet** par + fille : 15-13a **1 MEDIUM** distinct (R4-1 = F1), 15-13b **4 MEDIUM** distincts (R4-2 = F-P4-1) ; 0 + CRITICAL/HIGH. Remédiation dans chaque fille (Change Log) ; choix C-15-13-21 à C-15-13-26. Ici : ligne + « Inventaire » du recompte réduite aux totaux (R4-7). diff --git a/_bmad-output/implementation-artifacts/15-13-validate-prompt-p1.md b/_bmad-output/implementation-artifacts/15-13-validate-prompt-p1.md new file mode 100644 index 00000000..9ec0549e --- /dev/null +++ b/_bmad-output/implementation-artifacts/15-13-validate-prompt-p1.md @@ -0,0 +1,35 @@ +# Prompt — validation P1 de la spec, Story 15-13 + +*Versionné le 2026-10-09. Deux lentilles (Opus), contexte frais chacune, en lecture seule. Rotation (décision D6 de la +rétro 25) : passes complètes Sonnet ↔ Opus ; Haiku réservé à une passe ciblée de fin de boucle.* + +Dépôt `/home/gcorbaz/devel/kesh-15-13`, branche `story/15-13-mariadb-et-sauvegarde`. **Fiche** : `_bmad-output/implementation-artifacts/15-13-mariadb-et-sauvegarde.md`. C'est la première passe : la fiche n'a pas encore été remédiée. +Issues, par `gh api repos/guycorbaz/kesh/issues/N` (et `/comments`) — `gh issue view` échoue ici : #551, #552 (et #558 pour le contexte). +Choix autonomes : `_bmad-output/implementation-artifacts/epic-15-choix-autonomes.md`. Règles : `CLAUDE.md`. Code de référence : la branche elle-même (`de285ea8` + la fiche). Choix C-15-13-1 à 7 ; ce que la 15-11a (compose, `${KESH_X:-}`, refus des gabarits) et la 15-11b (`config::env_nonempty`, test lexical) ont livré. Issues voisines ouvertes à la spécification : #575, #576. **Axes prioritaires** : (1) la procédure de mise à jour et le tableau des cas des Dev Notes — aucun cas ne casse en silence, le texte ne pousse jamais à écrire un mot de passe NEUF dans `.env` ; (2) la syntaxe `${VAR:?message}` (message sans `}` ni `$`, accents) et l'étape CI dont la vérification négative doit réellement échouer ; (3) la faisabilité de l'indice sur l'erreur 1045 (ce que rend `MySqlPoolOptions::connect` en sqlx 0.8 — lis `~/.cargo/registry/src/*/sqlx-mysql-0.8*`) ; (4) le test 0600 et l'umask, la mutation M11 ; (5) l'inventaire des sites non résolus, à rejouer avec le grep du T9 ; (6) le manuel et son PDF aplati, largeurs de lignes. +Aucun code de la story n'est encore écrit. + +## Lentilles + +- **R — Auditeur d'acceptation** : applique `.claude/skills/bmad-create-story/checklist.md`. Chaque phrase des issues couverte par un AC testable, chaque AC par une tâche, chaque tâche par un test ; implémentable sans deviner (fonctions, fichiers, codes d'erreur, clés i18n 4 locales, replis Svelte) ; faits cités revérifiés au code (`grep -nF`) ; recompte des AC et tâches. +- **F — Full-scope adversary** : la conception elle-même. Les chemins de code qui écrivent ou lisent ce que la story + change (inventorier les sites NON résolus, pas énumérer ceux qui marchent) ; transactions, verrous, ordre des + contrôles ; tests existants qui changeront de sens ; frontend qui lit les codes ou champs touchés (`grep -rn` dans + `frontend/src`) ; i18n 4 locales et replis ; le **manuel** (`docs/manual/fr/*.tex` **et le PDF aplati** : + `pdftotext docs/manual/fr/user-manual.pdf - | tr '\n' ' ' | tr -s ' '` vers `target/gate-logs/`) ; + `docs/api-external.md` ; CHANGELOG ; la règle de découpage (§ « Règle de splitting préventif », amendement D5). + +## Ce que tu rends + +Findings numérotés avec sévérité (CRITICAL/HIGH/MEDIUM/LOW), `fichier:ligne` (fiche et code), **preuve** (commande et +sortie, ou code cité relu), correction proposée. Pour tout finding affirmant qu'un code est absent ou présent : la +sortie d'un `grep -nF`. ⛔ **La liste des axes exercés ET non exercés** — un « 0 finding » sans elle ne compte pas. +⛔ **Écris ton rapport complet** dans `target/gate-logs/15-13-p1-.md` (R ou F ; autorisé), et rends +comme dernier message **seulement** : ce chemin, le bilan par sévérité, et une ligne par finding MEDIUM ou plus. + +## Interdits + +⛔ N'écris aucun fichier du dépôt hors `target/gate-logs/` ; aucune commande qui écrit dans le dépôt ou dans une +base : `scripts/*` (dont `scripts/prepare-release.sh`), `make`, `latexmk`, `git commit`/`add`/`checkout`/`stash`, +`sqlx`, `cargo test`/`nextest`/`build`, `npm run`, `npx`, `gh issue create`/`comment`/`edit`, aucune requête SQL +d'écriture. Autorisés : lecture, `grep`, `sed -n`, `git log`/`show`/`diff`, `gh api` en lecture, `pdftotext` +vers `target/gate-logs/`. diff --git a/_bmad-output/implementation-artifacts/15-13-validate-prompt-p2.md b/_bmad-output/implementation-artifacts/15-13-validate-prompt-p2.md new file mode 100644 index 00000000..e073be6d --- /dev/null +++ b/_bmad-output/implementation-artifacts/15-13-validate-prompt-p2.md @@ -0,0 +1,35 @@ +# Prompt — validation P2 de la spec, Story 15-13 + +*Versionné le 2026-10-09. Deux lentilles (Sonnet), contexte frais chacune, en lecture seule. Rotation (décision D6 de la +rétro 25) : passes complètes Sonnet ↔ Opus ; Haiku réservé à une passe ciblée de fin de boucle.* + +Dépôt `/home/gcorbaz/devel/kesh-15-13`, branche `story/15-13-mariadb-et-sauvegarde`. **Fiche** : `_bmad-output/implementation-artifacts/15-13-mariadb-et-sauvegarde.md`. La dernière remédiation est le commit `07e168e1` (`git show 07e168e1`) — lis le Change Log de la fiche. +Issues, par `gh api repos/guycorbaz/kesh/issues/N` (et `/comments`) — `gh issue view` échoue ici : #551, #552, #576 (et #558, #575 pour le contexte). +Choix autonomes : `_bmad-output/implementation-artifacts/epic-15-choix-autonomes.md`. Règles : `CLAUDE.md`. Code de référence : la branche elle-même (`de285ea8` + la fiche). Choix C-15-13-1 à 12. **Axes prioritaires** : (1) le tri pré/post-sauvegarde des 17 sites `AdminFullImportFailed` (`routes/admin.rs`) — chaque site rangé du bon côté, aucun oublié ; (2) la faisabilité du test 17 (dossier de sauvegarde pointé sur un fichier existant) et de chaque test neuf ; (3) le décompte de modules, au seuil de cinq : recompte-le toi-même ; (4) les commandes du contrôle de fin de mise à jour (connexion TCP avec les anciens puis les nouveaux mots de passe) contre le comportement de l'image `mariadb:10.11` (comptes `root@localhost`/`root@%`, authentification par socket) ; (5) le message `:?` et `config -q` ; (6) `init-demo.sh` et ses risques ; (7) la cohérence des numéros de ligne ; (8) la ligne de `CLAUDE.md` modifiée — seule la recette doit changer ; (9) le manuel et son PDF aplati. +Aucun code de la story n'est encore écrit. + +## Lentilles + +- **R — Regression hunter** : la dernière remédiation (`git show 07e168e1`) a-t-elle introduit des défauts ? Contradictions entre AC, tâches, Dev Notes et choix du registre ; frontière avec les fiches sœurs ; faits recopiés sans vérification (numéros de ligne, fonctions, codes, clés i18n) — revérifie-les au code (`grep -nF`) ; recompte des AC et tâches ; implémentable sans deviner ? +- **F — Full-scope adversary** : la conception elle-même. Les chemins de code qui écrivent ou lisent ce que la story + change (inventorier les sites NON résolus, pas énumérer ceux qui marchent) ; transactions, verrous, ordre des + contrôles ; tests existants qui changeront de sens ; frontend qui lit les codes ou champs touchés (`grep -rn` dans + `frontend/src`) ; i18n 4 locales et replis ; le **manuel** (`docs/manual/fr/*.tex` **et le PDF aplati** : + `pdftotext docs/manual/fr/user-manual.pdf - | tr '\n' ' ' | tr -s ' '` vers `target/gate-logs/`) ; + `docs/api-external.md` ; CHANGELOG ; la règle de découpage (§ « Règle de splitting préventif », amendement D5). + +## Ce que tu rends + +Findings numérotés avec sévérité (CRITICAL/HIGH/MEDIUM/LOW), `fichier:ligne` (fiche et code), **preuve** (commande et +sortie, ou code cité relu), correction proposée. Pour tout finding affirmant qu'un code est absent ou présent : la +sortie d'un `grep -nF`. ⛔ **La liste des axes exercés ET non exercés** — un « 0 finding » sans elle ne compte pas. +⛔ **Écris ton rapport complet** dans `target/gate-logs/15-13-p2-.md` (R ou F ; autorisé), et rends +comme dernier message **seulement** : ce chemin, le bilan par sévérité, et une ligne par finding MEDIUM ou plus. + +## Interdits + +⛔ N'écris aucun fichier du dépôt hors `target/gate-logs/` ; aucune commande qui écrit dans le dépôt ou dans une +base : `scripts/*` (dont `scripts/prepare-release.sh`), `make`, `latexmk`, `git commit`/`add`/`checkout`/`stash`, +`sqlx`, `cargo test`/`nextest`/`build`, `npm run`, `npx`, `gh issue create`/`comment`/`edit`, aucune requête SQL +d'écriture. Autorisés : lecture, `grep`, `sed -n`, `git log`/`show`/`diff`, `gh api` en lecture, `pdftotext` +vers `target/gate-logs/`. diff --git a/_bmad-output/implementation-artifacts/15-13-validate-prompt-p3.md b/_bmad-output/implementation-artifacts/15-13-validate-prompt-p3.md new file mode 100644 index 00000000..841578d6 --- /dev/null +++ b/_bmad-output/implementation-artifacts/15-13-validate-prompt-p3.md @@ -0,0 +1,35 @@ +# Prompt — validation P3 de la spec, Story 15-13 + +*Versionné le 2026-10-09. Deux lentilles (Opus), contexte frais chacune, en lecture seule. Rotation (décision D6 de la +rétro 25) : passes complètes Sonnet ↔ Opus ; Haiku réservé à une passe ciblée de fin de boucle.* + +Dépôt `/home/gcorbaz/devel/kesh-15-13`, branche `story/15-13-mariadb-et-sauvegarde`. **Fiche** : `_bmad-output/implementation-artifacts/15-13-mariadb-et-sauvegarde.md`. La dernière remédiation est le commit `f1eb6469` (`git show f1eb6469`) — lis le Change Log de la fiche. +Issues, par `gh api repos/guycorbaz/kesh/issues/N` (et `/comments`) — `gh issue view` échoue ici : #551, #552, #576 (contexte : #558, #575, #577). +Choix autonomes : `_bmad-output/implementation-artifacts/epic-15-choix-autonomes.md`. Règles : `CLAUDE.md`. Code de référence : la branche elle-même (`de285ea8` + la fiche). Choix C-15-13-1 à 15. Issue #577 ouverte par l'orchestrateur après la P2 (la CI n'a aucun job E2E ; `docs/ci.md` en décrit un) : la fiche doit la citer au T4 au lieu de « issue à ouvrir ». **Axes prioritaires** : les alinéas neufs AC 8 e (`backup/`, `inbox/`, `documents/` dans `.gitignore` et `.dockerignore`), AC 11 m (brochure), AC 12 a-bis (`DOCKER_START.md`, 1045 avant `down -v`) ; le retrait d'`init-demo.sh` (C-15-13-13) : vraiment sans appelant, vraiment redondant avec `seed-demo`, et sa doc retirée partout ; le test 19 et le helper `tests/common/binaire.rs` (`lancer_binaire`) — peuvent-ils passer à vide ? ; le test 16 et l'interdit par phrase entière dans les 4 locales ; l'inventaire élargi (rejoue les greps du T9) ; la cohérence fiche / `sprint-status.yaml` / fiche d'epic / registre ; le manuel et la brochure, PDF aplatis. Signal D5 déclaré en P2 (8 → 6 MEDIUM distincts, deux nés de la remédiation P1) : si cette passe trouve un défaut qui revient sous une autre forme, dis-le explicitement. +Aucun code de la story n'est encore écrit. + +## Lentilles + +- **R — Regression hunter** : la dernière remédiation (`git show f1eb6469`) a-t-elle introduit des défauts ? Contradictions entre AC, tâches, Dev Notes et choix du registre ; frontière avec les fiches sœurs ; faits recopiés sans vérification (numéros de ligne, fonctions, codes, clés i18n) — revérifie-les au code (`grep -nF`) ; recompte des AC et tâches ; implémentable sans deviner ? +- **F — Full-scope adversary** : la conception elle-même. Les chemins de code qui écrivent ou lisent ce que la story + change (inventorier les sites NON résolus, pas énumérer ceux qui marchent) ; transactions, verrous, ordre des + contrôles ; tests existants qui changeront de sens ; frontend qui lit les codes ou champs touchés (`grep -rn` dans + `frontend/src`) ; i18n 4 locales et replis ; le **manuel** (`docs/manual/fr/*.tex` **et le PDF aplati** : + `pdftotext docs/manual/fr/user-manual.pdf - | tr '\n' ' ' | tr -s ' '` vers `target/gate-logs/`) ; + `docs/api-external.md` ; CHANGELOG ; la règle de découpage (§ « Règle de splitting préventif », amendement D5). + +## Ce que tu rends + +Findings numérotés avec sévérité (CRITICAL/HIGH/MEDIUM/LOW), `fichier:ligne` (fiche et code), **preuve** (commande et +sortie, ou code cité relu), correction proposée. Pour tout finding affirmant qu'un code est absent ou présent : la +sortie d'un `grep -nF`. ⛔ **La liste des axes exercés ET non exercés** — un « 0 finding » sans elle ne compte pas. +⛔ **Écris ton rapport complet** dans `target/gate-logs/15-13-p3-.md` (R ou F ; autorisé), et rends +comme dernier message **seulement** : ce chemin, le bilan par sévérité, et une ligne par finding MEDIUM ou plus. + +## Interdits + +⛔ N'écris aucun fichier du dépôt hors `target/gate-logs/` ; aucune commande qui écrit dans le dépôt ou dans une +base : `scripts/*` (dont `scripts/prepare-release.sh`), `make`, `latexmk`, `git commit`/`add`/`checkout`/`stash`, +`sqlx`, `cargo test`/`nextest`/`build`, `npm run`, `npx`, `gh issue create`/`comment`/`edit`, aucune requête SQL +d'écriture. Autorisés : lecture, `grep`, `sed -n`, `git log`/`show`/`diff`, `gh api` en lecture, `pdftotext` +vers `target/gate-logs/`. diff --git a/_bmad-output/implementation-artifacts/15-13a-mariadb-non-publiee-mots-de-passe-obligatoires.md b/_bmad-output/implementation-artifacts/15-13a-mariadb-non-publiee-mots-de-passe-obligatoires.md new file mode 100644 index 00000000..b0523cd4 --- /dev/null +++ b/_bmad-output/implementation-artifacts/15-13a-mariadb-non-publiee-mots-de-passe-obligatoires.md @@ -0,0 +1,950 @@ +# Story 15.13a : MariaDB n'est plus publiée, et ses mots de passe sont obligatoires + +Status: ready-for-dev + + + +**Issues** : **ferme #551**. La PR porte `closes #551` (mot-clé dans le titre ou le corps : le dépôt merge en +squash) ; les commits intermédiaires portent `refs #551`. **`refs #577`** : la story corrige le décompte +« 4 jobs » de `docs/ci.md` et y renvoie à #577 (job `e2e` décrit mais absent de `ci.yml`, smoke E2E annoncé +par le `CLAUDE.md`), **sans** la fermer. **#575** (section Synology du manuel) reste hors story : citée, pas +fermée. **#554** (mot de passe admin de `docker-compose.dev.yml`) : citée. L'angle mort « mot de passe root +resté au gabarit » est tracé par l'issue que l'orchestrateur ouvre (§ *Angles morts* ; numéro à reporter +avant le développement). + +**Dépendances** : après la **15-11a** et la **15-11b** (mergées dans `de285ea8`). **Indépendante de la 15-13b +en code** : aucune des deux n'appelle ce que l'autre ajoute. Elles touchent en revanche les **mêmes +fichiers**, à des endroits distincts : `docker-compose.yml`, `.env.example`, `crates/kesh-api/src/config.rs`, +`crates/kesh-api/tests/configuration_transmise.rs`, `docs/manual/fr/admin-manual.tex` (§ *Passer à la +0.13.0*), `DOCKER_START.md`, `CHANGELOG.md` `[0.13.0]` — et les **PDF versionnés** `admin-manual.pdf` et +`marketing-brochure.pdf`, que les deux régénèrent. La seconde mergée rebase et **recompte les gestes** +du paragraphe « Pour qui garde son fichier compose » (AC 11 f ; sa fiche dit les nombres) ; un conflit sur +un PDF ne se rebase pas : on fusionne les `.tex`, puis on **régénère** les PDF (`make fr`) et on rejoue les +contrôles aplatis des **deux** fiches (R4-3 de la validation P4). **Ordre suggéré : +15-13a d'abord** — #551 est P2 (sécurité), #552 et #576 P3 ; et le helper `lancer_binaire` (T3) ne concerne +qu'elle. **Coordination** avec la **15-7b3** (non mergée), qui corrige les `docker compose logs kesh` du +manuel (§ *Dépannage*) : cette story ne touche pas ces lignes (AC 11 j). Release visée : **v0.13.0** — la +section du manuel « Passer à la 0.13.0 » et l'entrée `[0.13.0]` du CHANGELOG sont **complétées**, pas +doublées. + +**Si la 15-13a est mergée seule** (la 15-13b non encore mergée au tag) : le CHANGELOG `[0.13.0]` porte +l'entrée **Sécurité** #551 (AC 13 a), la rubrique **Retiré** `init-demo.sh` (AC 13 b), et `CHANGELOG.md:46` +a ses quatre phrases MariaDB réécrites (AC 13 c) ; la phrase « la sauvegarde pré-import reste dans `/tmp` » +**reste vraie** et n'est pas touchée. Le manuel porte les parties MariaDB ; ses mentions « défaut `/tmp` » +(`:757`, `:1664`, `:1699`) restent vraies. Le paragraphe « Pour qui garde son fichier compose » compte +**quatre** gestes pour `docker-compose.yml` et **deux** pour `docker-compose.prod.yml` (AC 11 f). + +## Story + +En tant qu'**exploitant d'une installation Kesh** (serveur Docker avec `docker-compose.yml`, ou NAS +Synology), +je veux que **la base comptable ne soit pas joignable depuis le réseau, et qu'elle ne soit pas protégée par +des mots de passe publiés dans le dépôt**, +afin de **ne pas exposer mes livres à toute machine du réseau local**. + +## Le défaut, établi au sol le 2026-10-09 + +Faits revérifiés au code (`grep -nF`, worktree `kesh-15-13`, `HEAD` = `de285ea8`) : + +### #551 — MariaDB publiée sur toutes les interfaces, avec des mots de passe publiés + +| Site | Contenu | Effet | +|---|---|---| +| `docker-compose.yml:13` | `- "3306:3306"` sous `services.mariadb.ports` | MariaDB écoute sur **toutes** les interfaces de l'hôte | +| `docker-compose.yml:8` | `MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD:-kesh_dev_root}` | mot de passe root par défaut, publié | +| `docker-compose.yml:11` | `MARIADB_PASSWORD: ${MARIADB_PASSWORD:-kesh_dev}` | mot de passe applicatif par défaut, publié | +| `docker-compose.yml:53` | `DATABASE_URL: mysql://${MARIADB_USER:-kesh}:${MARIADB_PASSWORD:-kesh_dev}@mariadb:3306/…` | Kesh se connecte avec ce même défaut | +| `.env.example:336`, `:339` | `MARIADB_ROOT_PASSWORD=kesh_dev_root`, `MARIADB_PASSWORD=kesh_dev` — **lignes actives** | même un `.env` copié du gabarit, comme le prescrit le manuel (`admin-manual.tex:228-231`), pose les défauts publiés | +| `.env.example:328-334` | bloc intitulé « Service MariaDB bundled (**DEV ONLY** — docker-compose.yml + docker-compose.dev.yml) » | faux deux fois : `docker-compose.yml` est la **méthode d'installation recommandée** du manuel (`admin-manual.tex:204-224`), et `docker-compose.dev.yml` ne lit pas ces variables (mots de passe écrits en dur, `docker-compose.dev.yml:56-59`) | + +Le service `kesh-api` atteint MariaDB par le réseau interne de Compose (`kesh-network`, hôte `mariadb`) : +**la publication du port n'a aucun rôle dans le fonctionnement**. Aucune commande du manuel n'utilise le +port publié : toutes passent par `docker compose exec` (`admin-manual.tex:1460`, `:1511`, `:1578`, +`:2216` ; `DOCKER_START.md:102`). + +⚠️ **Un port publié par Docker contourne le pare-feu de l'hôte.** Docker insère ses propres règles +`iptables` (chaîne `DOCKER`) avant celles d'UFW : le pare-feu que recommande le manuel +(`admin-manual.tex:1998-2009`, `ufw default deny incoming`) **ne protège pas** un port publié en +`"3306:3306"` (documentation Docker, *Packet filtering and firewalls*, § « Docker and ufw »). L'exploitant +qui a suivi le manuel à la lettre croit sa base fermée ; elle ne l'est pas. + +`docker-compose.prod.yml` (installation Synology du manuel) **n'a pas de service MariaDB** — la base est +fournie par l'exploitant (`DATABASE_URL` de `.env`) : #551 ne le concerne pas, hormis la consigne de +génération du mot de passe (ci-dessous). + +**Défaut voisin, même sujet, trouvé en spécifiant** : le manuel fait générer le mot de passe MariaDB de +l'installation Synology par `openssl rand -base64 32` (`admin-manual.tex:546`), « repris dans +`DATABASE_URL` ». Une sortie base64 contient `/` avec une probabilité d'environ 1 − (63/64)^43 ≈ 49 % ; +dans une URL, `/` termine l'autorité — `mysql://kesh:ab/cd@hote:3306/kesh` ne se lit plus comme +l'identifiant `ab/cd`. Une installation sur deux suivant le manuel obtient une `DATABASE_URL` +inexploitable. **Traité ici** (AC 11 c, C-15-13-5) : `openssl rand -hex 32`. + +**Défaut voisin, trouvé en validation P3** (F-P3-3) : le manuel fait recopier à l'étape 3 +`MARIADB_PASSWORD=` (`admin-manual.tex:254`) et, pour Synology, +`DATABASE_URL=mysql://kesh:@mariadb:3306/kesh` (`:259`). Recopiées telles quelles, ces +chaînes deviennent le mot de passe applicatif — **imprimé dans le PDF distribué**, donc publié au même titre +que `kesh_dev`. Kesh le voit (il lit `DATABASE_URL`) et dispose déjà du prédicat qui le reconnaît +(`is_template_placeholder`, `config.rs:1405`, écrit par la 15-11a pour les gabarits du manuel). **Traité ici** +(AC 5 a-bis, C-15-13-17). + +## Acceptance Criteria + +*(Numérotation de la fiche unique 15-13 conservée ; les AC 7, 8, 9, 15 et 16 sont dans la 15-13b, et les +sous-points des AC 10 à 14 qui portent sur la sauvegarde aussi.)* + +### Volet A — MariaDB (#551) + +1. **Le port de MariaDB n'est plus publié par `docker-compose.yml`.** + (a) Le service `mariadb` de `docker-compose.yml` ne porte **aucune** clé `ports:` — ni `"3306:3306"`, ni + `"127.0.0.1:3306:3306"` (C-15-13-1). + (b) Un commentaire YAML à l'endroit de l'ancienne clé dit : pourquoi le port n'est pas publié (Kesh + passe par le réseau interne ; un port publié contourne UFW) ; comment accéder à la base + (`docker compose exec mariadb mariadb -u kesh -p`) ; et, **pour un dépannage ponctuel seulement**, la + forme à décommenter, liée au **loopback** (`- "127.0.0.1:3306:3306"`), jamais la forme sans adresse. + (c) `kesh-api` continue d'atteindre MariaDB par `mariadb:3306` sur `kesh-network` (inchangé). + +2. **Les deux mots de passe MariaDB n'ont plus de valeur par défaut dans `docker-compose.yml` : leur + absence fait refuser le démarrage par Compose, avec un message qui nomme la variable.** + (a) `services.mariadb.environment` : `MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD:?}` et + `MARIADB_PASSWORD: ${MARIADB_PASSWORD:?}`. + (b) La `DATABASE_URL` composée de `kesh-api` (`docker-compose.yml:53`) interpole + `${MARIADB_PASSWORD:?}` — **même message** qu'en (a) ; `MARIADB_USER` et `MARIADB_DATABASE` + gardent `:-kesh` (ce ne sont pas des secrets). + (c) (C-15-13-12.) Le `` ne contient ni `}` ni `$` (la syntaxe de Compose s'arrête au premier `}`), et il + doit laisser le **YAML** lisible : les valeurs de `docker-compose.yml:8`, `:11` et `:53` sont des + scalaires **non cités**, où `": "` termine la clé (« mapping values are not allowed here ») et `" #"` + ouvre un commentaire. Deux formes admises, **tranchées au T0** et écrites au Dev Agent Record : + (c1) message **sans** `": "` ni `" #"`, valeur non citée ; (c2) valeur entière entre **guillemets + doubles** (`"${MARIADB_PASSWORD:?…}"`), message sans `"` ni `\` — les guillemets simples sont exclus + par l'apostrophe de « d'administration ». Le message dit d'abord le cas **existant**, puis le cas neuf + (l'ordre inverse inviterait à écrire une valeur neuve sur une base existante) : « à poser dans .env. + Installation existante, reprendre la valeur avec laquelle la base a été créée, jamais une neuve + (manuel d'administration, Passer à la 0.13.0) ». Ses accents sont conservés si le T0 montre que + Compose les restitue tels quels ; sinon, message sans accents, et la mesure est écrite au Dev Agent + Record. Compose ne nomme qu'**une** variable manquante à la fois (la première qu'il rencontre) : le + manuel le dit (AC 11 j). + (d) **Aucun jeton `kesh_dev`** (donc ni `kesh_dev` ni `kesh_dev_root`) dans `docker-compose.yml`, + `docker-compose.prod.yml` ni `.env.example` — commentaires compris. + +3. **`.env.example` cesse de poser les mots de passe publiés.** + (a) Le bloc `Service MariaDB bundled (DEV ONLY …)` (`.env.example:328-339`) est réécrit : il sert + `docker-compose.yml` — l'installation autonome, MariaDB comprise —, pas « le développement » ; + `docker-compose.prod.yml` et `docker-compose.dev.yml` ne le lisent pas (dire pourquoi en une ligne + chacun). + (b) `MARIADB_ROOT_PASSWORD` et `MARIADB_PASSWORD` y sont des lignes **commentées** (`#MARIADB_…=`), + **sans valeur** — un `.env` copié tel quel fait donc refuser le démarrage par Compose (AC 2), au lieu + de créer une base aux identifiants publiés. `MARIADB_DATABASE=kesh` et `MARIADB_USER=kesh` restent + des lignes actives. + (c) Le commentaire du bloc dit, **dans cet ordre** : d'abord, **installation existante** — reprendre + la valeur avec laquelle la base a été créée, jamais une neuve (renvoi au manuel, § *Passer à la + 0.13.0*) ; **ces deux valeurs ne sont lues par MariaDB qu'à la création de la base** — les changer + dans `.env` ensuite ne change pas le mot de passe enregistré et fait échouer la connexion de Kesh + (renvoi au manuel, procédure de changement) ; ensuite seulement, **installation neuve** — générer + chaque mot de passe par `openssl rand -hex 32` (hexadécimal : un mot de passe base64 peut contenir + `/`, qui casse `DATABASE_URL`). Décommenter une ligne **sans** y écrire de valeur fait refuser Compose + (forme `:?`, AC 10 a) : le dire. + (d) Le gabarit `DATABASE_URL=` (`.env.example:47`, pour `docker-compose.prod.yml`) n'est pas + modifié, mais son commentaire dit de prendre un mot de passe hexadécimal (même raison). + +4. **Le refus de Compose est exercé en CI, dans les deux sens.** L'étape « Validate compose files » du job + `docker-build` (`.github/workflows/ci.yml:242-245`) : + (a) valide `docker-compose.yml` **avec** des valeurs factices + (`MARIADB_ROOT_PASSWORD=ci MARIADB_PASSWORD=ci docker compose -f docker-compose.yml config -q`) — sans + elles, l'étape actuelle échouerait désormais ; + (b) exige que la même commande **sans** ces variables (`env -u MARIADB_ROOT_PASSWORD -u MARIADB_PASSWORD`) + **échoue**, et que sa sortie d'erreur nomme `MARIADB_ROOT_PASSWORD` ou `MARIADB_PASSWORD` ; + (c) valide `docker-compose.prod.yml` comme aujourd'hui ; + (d) (C-15-13-15, rectifié par C-15-13-20.) Son commentaire d'en-tête est mis à jour (il dit aujourd'hui « les variables obligatoires non + posées ne font qu'avertir », faux pour `docker-compose.yml`), et `docs/ci.md` (`:12`, `:117`) dit les + deux sens du contrôle ; son décompte « 4 jobs » (`:9-10`), faux, devient « 3 jobs » (T4). + +5. **Kesh avertit fortement au démarrage quand le mot de passe de `DATABASE_URL` est un mot de passe + publié.** (C-15-13-2 : avertir, pas refuser ; C-15-13-17 pour le gabarit.) + (a) `Config::from_env` extrait le mot de passe de `DATABASE_URL` (URL analysée par la crate `url`, + dont `Url::password()` rend la forme **encodée** ; **décodé** par `percent_encoding::percent_decode_str` + puis **`decode_utf8_lossy()`** — pas par `form_urlencoded`, qui décode `+` en espace ; pas par + `decode_utf8()`, dont l'`Err` sur des octets non UTF-8 (`%FF`) inviterait un `?` ou un `unwrap` qui + ferait échouer ou paniquer le démarrage, contraire au (b) : une valeur non UTF-8 n'est ni publiée ni + gabarit, et sa forme décodée avec `U+FFFD` ne déclenche rien, C-15-13-22) et, s'il figure dans la liste fermée + `MOTS_DE_PASSE_PUBLIES = ["kesh_dev", "kesh_dev_root"]` (comparaison exacte, sensible à la casse), + émet **un** `tracing::warn!` qui dit : le mot de passe est publié dans le dépôt Kesh ; acceptable pour + le développement seulement ; renvoi au manuel (§ *Passer à la 0.13.0*, changement du mot de passe). + Le message **ne contient pas** le mot de passe ni l'URL (mutation M43). + (a-bis) **Gabarit du manuel** (F-P3-3, C-15-13-17) : le même contrôle émet **un** `tracing::warn!` quand + le mot de passe **décodé** satisfait `is_template_placeholder` (`config.rs:1405` — réemploi, pas de + second prédicat : DRY). Message **distinct** de (a), pour que l'exploitant sache quoi faire : le mot + de passe de `DATABASE_URL` est un **placeholder de gabarit** (par exemple une valeur entre chevrons `<…>` + recopiée du manuel — le prédicat reconnaît aussi `generate_me`, `config.rs:1391`, R4-5) ; il + protège la base comme un mot de passe publié ; le changer par la procédure du manuel (§ *Changer un + mot de passe MariaDB*, AC 11 g — `ALTER USER` d'abord, `.env` ensuite). Même règle : ni le mot de + passe, ni l'URL (M43). Un même mot de passe ne peut satisfaire (a) et (a-bis) à la fois (aucun élément de la + liste n'est entre chevrons) : un seul avertissement au plus. + (b) Kesh **démarre quand même** : aucun `ConfigError` neuf. Une URL illisible, sans mot de passe ou + au mot de passe hors liste et non gabarit n'émet rien de ce chef. Une URL qui ne s'analyse pas (mot de + passe contenant `/`, `?` ou `#` non encodés : l'autorité est tronquée) n'émet rien non plus — c'est le + cas de l'ancien `openssl rand -base64 32` du manuel, que l'AC 11 c remplace. + (c) La lecture de `DATABASE_URL` reste celle d'aujourd'hui (`env_nonempty`) : **aucune** lecture + d'environnement neuve (le test (L) de `configuration_transmise.rs` reste vert sans nouvelle entrée + d'`EMPLACEMENTS_AUTORISES`). + (d) Le doc-comment d'`is_template_placeholder` (`config.rs:1403-1404`, « Sert aux contrôles de + `KESH_JWT_SECRET` et de `KESH_ADMIN_PASSWORD` ») nomme le troisième appelant. + +6. **Un refus d'authentification de MariaDB au démarrage est expliqué, pas seulement rapporté.** + (a) Quand la connexion initiale (`main.rs:71-89`) échoue sur l'erreur MariaDB **1045** (*Access + denied*), le message d'erreur journalisé ajoute un **indice** : « MariaDB refuse l'identifiant de + DATABASE_URL. Avec docker-compose.yml : MARIADB_PASSWORD n'est lu qu'à la création de la base — + changer sa valeur dans .env ne change pas le mot de passe enregistré (manuel d'administration, Passer à + la 0.13.0). » L'erreur d'origine reste dans le message ; le processus sort toujours en code 1. Ni le + message ni l'indice ne citent `database_url` ni son mot de passe (mutation M44, test 10). + (b) L'indice vient de **deux** fonctions publiques de `kesh-api` (`config.rs`) — `main.rs` ne fait + que les composer : l'**extraction** `numero_erreur_mariadb(&sqlx::Error) -> Option` + (`as_database_error()?.try_downcast_ref::()?.number()`, forme déjà employée + `routes/reconciliation.rs:1136` et `kesh-db/src/retry.rs:106`), et la **décision** + `indice_connexion(Option) -> Option<&'static str>`, pure. La séparation tient à un fait : + `MySqlDatabaseError` n'a pas de constructeur public (`sqlx-mysql-0.8.6/src/error.rs:11`, + `pub(super) ErrPacket`), si bien qu'un test unitaire ne peut pas fabriquer l'erreur d'entrée ; + l'extraction est couverte par le test 10 (binaire réel), la décision par le test 9. Toute autre + erreur (hôte injoignable, base absente : 1049, droits sur la base : 1044) ne donne pas d'indice. + (c) **Mesure d'abord (T0)** : que `MySqlPoolOptions::connect` rende bien une `sqlx::Error::Database` + dont le numéro MariaDB vaut 1045 pour un mauvais mot de passe. Lu à la source en validation P1 : + `sqlx-core-0.8.6` ne rejoue que `ConnectionRefused` et les erreurs `is_transient_in_connect_phase()` + (`pool/inner.rs:346-383`), que `sqlx-mysql` ne redéfinit pas — le 1045 doit donc sortir + immédiatement en `Error::Database`. Si la mesure le contredit, la reconnaissance se fait sur ce qu'elle + montre ; un repli **textuel** exige `(using password` et non `Access denied`, qui attraperait aussi le + 1044 (*Access denied for user … to database*). La mesure est écrite au Dev Agent Record. + +### Volet C — le garde-fou et la documentation (parties MariaDB) + +10. **`configuration_transmise.rs` garde ces décisions.** *(Le sous-point (c), montage de la sauvegarde, et + la partie « trois montages » de (e) sont dans la 15-13b.)* + (a) **MariaDB** : un contrôle neuf lit le service `mariadb` de `docker-compose.yml` (extraction + généralisée de `service_kesh_api` en `service(source, nom)`, DRY ; le `Service` gagne la présence de la + clé `ports:`) et rougit si : la clé `ports:` est présente ; `MARIADB_ROOT_PASSWORD` ou + `MARIADB_PASSWORD` n'est pas de la forme `${NOM:?…}` sur **elle-même**. **La variante + `Interpolation::Obligatoire` est scindée** (`configuration_transmise.rs:541-564`, et le bras de `match` + de `controle_valeur`, `:626`, qui ne compile plus après la scission — R4-2) : `ObligatoireNonVide` + (`:?`, refuse une variable absente **ou vide**) et `ObligatoireSiAbsente` (`?`, ne refuse qu'une + variable absente). Le contrôle exige la première : avec `?`, la ligne `#MARIADB_PASSWORD=` du gabarit + décommentée **sans valeur** — le geste le plus naturel — ferait démarrer Compose avec un mot de passe + vide. **La `DATABASE_URL` de `kesh-api`** n'est **pas** contrôlée par ce test neuf : elle l'est par la + famille (V) existante (`controle_valeur`, `configuration_transmise.rs:572-663`, test `valeurs`), en + **resserrant** le motif de `VALEURS_COMPOSEES` (`:169-174`) de `${MARIADB_` à `${MARIADB_PASSWORD:?` — + pas par un second contrôle sur la même valeur (DRY). La valeur est lue **après** l'analyse YAML : une + valeur citée (forme c2 de l'AC 2 c) arrive sans ses guillemets. + (b) **Mots de passe publiés** : aucun des trois fichiers distribués (`docker-compose.yml`, + `docker-compose.prod.yml`, `.env.example`) ne contient `kesh_dev` (recherche de sous-chaîne, qui couvre + `kesh_dev_root`) ; dans `.env.example`, toute ligne d'affectation de `MARIADB_ROOT_PASSWORD` ou de + `MARIADB_PASSWORD` est commentée (même extracteur `lignes_affectation` que (E)). + (d) **Auto-test (S)** : des sources synthétiques exercent le contrôle (a) — refusées : clé `ports:` + présente ; `${MARIADB_PASSWORD:-x}` ; `${MARIADB_PASSWORD}` ; `${MARIADB_PASSWORD?m}` (forme `?`) ; + acceptées : `${MARIADB_ROOT_PASSWORD:?m}` et la même valeur **citée** (`"${MARIADB_ROOT_PASSWORD:?m}"`). + (e) L'en-tête du fichier (`//!`) dit ce que le test établit désormais du service `mariadb`, et + l'angle mort qui reste : `docker-compose.dev.yml` non contraint (inchangé). + +11. **Le manuel d'administration dit vrai, et le PDF aussi** (parties MariaDB). `docs/manual/fr/admin-manual.tex` : + (a) **Ports réseau** (`:162-177`) et **Référence des ports** (`:2354-2364`) : MariaDB 3306 — « non + publié par les compose fournis (réseau interne Docker) » ; l'avertissement dit qu'un port publié par + Docker **contourne UFW**. + (b) **Étape 3 — `.env`** (`:229-270`) : mots de passe MariaDB par `openssl rand -hex 32` ; sans eux, + Compose refuse de démarrer en nommant la variable ; ils ne sont lus qu'à la **création** de la base. + La phrase « pour les mots de passe MariaDB, rien ne la refuse — choisissez-les vous-même » est + corrigée : Compose refuse l'absence ; une valeur gabarit `<…>` est acceptée par Compose et par + MariaDB — **Kesh avertit au démarrage** quand le mot de passe **applicatif** l'est (AC 5 a-bis), + **rien** ne signale un mot de passe **root** gabarit (Kesh ne le voit pas : angle mort) — le dire. Et, + au même endroit : une base **déjà créée** avec la chaîne gabarit littérale (l'étape 3 actuelle, + `admin-manual.tex:253-254`, fait recopier `MARIADB_ROOT_PASSWORD=`) garde ce mot de + passe ; on ne le remplace **pas** dans `.env` — ce serait un 1045 —, on le change par la procédure de + l'AC 11 g (`ALTER USER` d'abord, `.env` ensuite). La relecture des valeurs entre chevrons que + prescrit la procédure de mise à jour (`:1746`, « vérifier les placeholders de `.env` ») nomme ces deux + lignes — c'est le seul signal pour le mot de passe root. + (c) **Synology, étape 2** (`:546`) : `openssl rand -hex 32 # → mot de passe MariaDB` au lieu de + `-base64 32` (raison : `/` dans `DATABASE_URL`). + (d) **`sec:env-vars`** — note MariaDB (`:689-694`) complétée (obligatoires avec `docker-compose.yml`, + lues à la création seulement). **Les dix tableaux de `sec:env-vars` restent sans `Overfull \hbox`** + (acquis de la 15-11a). *(La ligne `KESH_ADMIN_BACKUP_DIR` et le paragraphe des montages : 15-13b.)* + (f) **`sec:maj-0-13`** (`:1757-1841`) — le paragraphe **MariaDB** (pour `docker-compose.yml`) ; le + paragraphe **sauvegarde** est dans la 15-13b. Détail en Dev Notes, § *La mise à jour d'une + installation existante* : re-télécharger le compose suffit pour le port ; `.env` sans + `MARIADB_ROOT_PASSWORD` / `MARIADB_PASSWORD` → refus nommé de Compose, et il faut alors y écrire **la + valeur avec laquelle la base a été créée** (pour qui n'en avait jamais posé : les anciennes valeurs + par défaut, `kesh_dev_root` et `kesh_dev`, écrites **au manuel seulement**), **jamais une valeur + neuve** ; puis changer ces mots de passe par la procédure donnée (AC 11 g) ; **contrôle de fin de mise + à jour sur la base, pas sur `.env`** (C-15-13-10) : une connexion avec les **anciens** mots de passe + publiés doit être **refusée** (1045), une connexion avec ceux de `.env` doit réussir — pour `root` + et pour `kesh`, en TCP pour que l'authentification par socket ne fausse pas la mesure, par exemple + `sudo docker compose exec mariadb mariadb --protocol=TCP -h 127.0.0.1 -uroot -pkesh_dev_root -e 'SELECT CURRENT_USER()'` + (refus attendu) et + `sudo docker compose exec mariadb sh -c 'mariadb --protocol=TCP -h 127.0.0.1 -uroot -p"$MARIADB_ROOT_PASSWORD" -e "SELECT CURRENT_USER()"'` + (succès attendu) — `SELECT CURRENT_USER()` plutôt que `SELECT 1` : le résultat dit **quel compte** + a répondu (`root@localhost` ou `root@%`, selon que le serveur résout `127.0.0.1` — l'image pose + peut-être `skip-name-resolve`, non vérifié) ; le manuel dit ce que le contrôle couvre, et l'AC 11 g + traite de toute façon **chaque** compte `root` listé. Ces commandes dépassent 76 caractères : au + manuel, elles sont coupées par `\` en fin de ligne (AC 11 k) — y compris **à l'intérieur** des + apostrophes de `sh -c '…'`, où la barre suivie d'un saut de ligne est transmise à `sh`, qui la lit + comme une continuation ; forme exacte, comportement de `root@localhost`, et compte rendu par + `CURRENT_USER()` pour `-h 127.0.0.1` **et** pour `-h mariadb` **mesurés au T7** ; une + vérification `docker compose config | grep kesh_dev` ne lit que `.env` et resterait muette alors que + la base garde `kesh_dev_root` (F3 de la validation P1). Puis **lancer une fois à la main** le script + de sauvegarde (§ *Sauvegarde*) après toute mise à jour ou tout changement de mot de passe : c'est + le seul moyen de voir qu'un mot de passe root changé dans `.env` sans `ALTER USER` le fait échouer. + **Pour qui garde son compose — le paragraphe `:1793`** (F-P3-1, C-15-13-18) : son titre « Pour qui garde son + fichier compose : **deux gestes**. » et sa phrase d'ouverture « Sous `environment:` du service + `kesh-api` : » deviennent faux — les gestes de cette story ne sont pas sous `environment:` de + `kesh-api`. Le titre perd son décompte global ; le paragraphe donne le décompte **par fichier**, + recompté à l'écriture sur l'état de la branche : avec la 15-13a seule, **quatre** gestes pour + `docker-compose.yml` (les deux de la 15-11a ; retirer `ports:` de `mariadb` ; remplacer les fragments + de mot de passe) et **deux** pour `docker-compose.prod.yml` (inchangé) ; si la 15-13b est déjà mergée, + **cinq** et **trois** (elle ajoute le montage `./backup` aux deux). Les gestes neufs sont écrits + **dans** ce paragraphe, chacun avec le fichier qu'il concerne : retirer `ports:` de `mariadb` ; + **un remplacement de fragment** — `:-kesh_dev_root` et `:-kesh_dev` (trois occurrences : + `MARIADB_ROOT_PASSWORD`, `MARIADB_PASSWORD`, `DATABASE_URL`) deviennent `:?` suivi d'un message ; le + manuel recommande de **recopier** ces lignes depuis le compose re-téléchargé et ne reproduit **pas** la + ligne `DATABASE_URL` entière ni le message long de l'AC 2 c, qui dépasseraient les 76 caractères de + l'AC 11 k ; il montre le fragment, par exemple `${MARIADB_PASSWORD:?à poser dans .env}`. Contrôle + écrit après les gestes : `docker compose config` ne montre **aucune** entrée `ports` sous le service + `mariadb` (graphie de la forme longue relevée au T0). Puis avertissement « Kesh avertit au démarrage » + (AC 5) et « indice 1045 » (AC 6). **Le refus de Compose frappe toute sous-commande**, pas seulement + `pull` et `up -d` : Compose interpole le fichier entier au chargement, si bien que + `docker compose ps`, `logs`, `exec`, `stop` et `down` refusent aussi tant que `.env` n'est pas + complété — l'exploitant ne peut alors ni diagnostiquer ni arrêter proprement, et le script de + sauvegarde lancé par `cron` échoue dès que `.env` perd une des deux lignes ; le manuel le dit (mesuré + au T0 par `docker compose ps` sur la copie sans `.env`). **Le contrôle des placeholders** + (`:1780-1786`, `sudo docker compose config | grep -iE …`, « la commande doit rester muette ») devient + trompeur : quand Compose refuse, `grep` ne reçoit rien et reste muet — muet comme un succès. La + procédure pose donc les deux mots de passe **avant** ce contrôle, et le fait précéder de + `sudo docker compose config -q && echo 'compose lisible'`, dont la seconde moitié **doit** + s'afficher : sans elle, le silence du `grep` ne prouve rien (même correction au CHANGELOG, AC 13 d). + **Propagation dans l'encadré `:1761-1776`** : la liste « Refus de démarrer » + (`:1764`, qui renvoie à `docker compose logs kesh-api`) ne reçoit **pas** le refus de Compose tel + quel — il s'affiche **au terminal** de la commande lancée, et aucun conteneur ne démarre : + il est écrit à part, comme un refus distinct de ceux de Kesh ; le paragraphe « Un `.env` copié du + gabarit sans modification » (`:1775`) devient faux — un `.env` copié du **nouveau** gabarit fait + refuser Compose (mots de passe commentés), un `.env` copié d'un **ancien** gabarit fait émettre + l'avertissement de l'AC 5 —, et son « sauf » est complété. Le manuel fait partie du corpus du + contrôle (F) de `configuration_transmise.rs` (`:899-920`) : ne nommer **aucun** jeton `KESH_…` + inexistant, pas même pour dire qu'il n'existe pas. + (g) **Changer un mot de passe MariaDB** (sous-section neuve, dans `sec:maj-0-13` ou juste après, + `\label{sec:mariadb-mdp}`) : lister les comptes (`SELECT user, host FROM mysql.user;`), `ALTER USER` + pour `kesh` et pour **chaque** compte `root` listé, **puis** `.env`, **puis** + `docker compose up -d` ; la recette est **rejouée** sur un conteneur jetable (T7) avant d'être écrite. + C'est le renvoi de l'avertissement de l'AC 5 a-bis. **Hygiène et fenêtre** (F7 de la validation P4, + C-15-13-23) : le nouveau mot de passe n'apparaît **ni dans l'historique du shell** (il n'est jamais + tapé en clair : engendré dans une variable, `NEW=$(openssl rand -hex 32)`) **ni dans la liste des + processus de l'hôte** (l'`ALTER USER` atteint `mariadb` par l'**entrée standard** — document en ligne + `<_kesh-mariadb-data` (préfixe du projet Compose). + (a-bis) **« Base de données ne s'initialise pas »** (`DOCKER_START.md:134-137`) prescrit aujourd'hui + `docker compose down -v` puis `docker compose up --build`. Après la story, la cause la plus probable + d'une base « qui ne démarre pas » sur une installation existante est un **1045** — mot de passe neuf + écrit dans `.env` alors que MariaDB garde celui de la création (§ *La mise à jour d'une installation + existante*) — et `down -v` le « résout » en **supprimant le volume**, c'est-à-dire les livres. Le + paragraphe est réécrit : **diagnostic d'abord** (`docker compose logs kesh-api` et + `docker compose logs mariadb` ; un 1045 ou l'indice de l'AC 6 = mot de passe → revenir à la valeur + d'origine, renvoi au manuel § *Passer à la 0.13.0* ; un refus de Compose nommant une variable → la + poser dans `.env`) ; `down -v` n'y figure plus que pour une installation **sans données à conserver**, + avec l'avertissement qu'il supprime le volume de la base, **définitivement**. `DOCKER_START.md:78` + (« Arrêter et supprimer les données », `down -v` explicite) reste tel quel : il dit ce qu'il fait. + (b) **`init-demo.sh` est supprimé du dépôt** (C-15-13-13, qui remplace C-15-13-11). Il visait par + défaut le conteneur `kesh-mariadb` de `docker-compose.yml` avec `kesh_dev` en dur (`:20`, `:23`, + `:69`), et la correction de la P1 (identifiant lu dans le conteneur) le rendait **opérant** sur toute + installation conforme : ses `DELETE` successifs (`:70-75`, commentaire `:70`), sans transaction ni + confirmation, auraient vidé `users` et `onboarding_state` avant que `DELETE FROM companies` n'échoue + sur les 25 clés étrangères `ON DELETE RESTRICT` d'une base peuplée (F2 de la validation P2). Il est + **redondant** : la démonstration est semée par l'application elle-même + (`POST /api/v1/onboarding/seed-demo`, `routes/onboarding.rs:177-190`, qui appelle + `kesh_seed::seed_demo` — plan comptable complet par les repositories, exercice, `is_demo`, + réinitialisation par `reset_demo`), alors que le script écrit en SQL brut dix comptes sans rôle ni + exercice et un administrateur `admin`/`admin123`. **Personne ne l'appelle** : `git grep -n init-demo` + hors `_bmad-output` ne rend que le fichier lui-même (aucun script, aucune CI, aucune documentation, ni + `README.md`, ni `DOCKER_START.md`, ni manuel, ni site). Le retrait supprime le risque au lieu de le + borner ; l'historique git le garde. **Vérifié après coup** par + `git grep -n init-demo -- . ':(exclude)_bmad-output' ':(exclude)CHANGELOG.md'` → vide : le CHANGELOG + est exclu parce que l'AC 13 b y **exige** la mention du retrait (R3-2) ; cette ligne entre à + l'inventaire comme résolue, voulue. + +13. **CHANGELOG `[0.13.0]`** (parties MariaDB). + (a) **Sécurité** — entrée #551 : MariaDB n'est plus publiée ; plus de mots de passe par défaut ; + `.env.example` ne les pose plus ; avertissement au démarrage (mot de passe publié **ou** gabarit du + manuel recopié, AC 5) ; **action requise** (re-télécharger le compose ; sans les deux variables, + Compose refuse de démarrer en les nommant ; y écrire les valeurs d'origine, jamais des neuves, puis + les changer selon le manuel ; outils qui se connectaient au port 3306 de l'hôte → + `docker compose exec mariadb`). Et la consigne hexadécimale pour la `DATABASE_URL` de Synology. Elle + dit aussi la limite : Kesh ne voit pas le mot de passe **root** — un `kesh_dev_root` recopié d'un + ancien `.env`, ou un root resté au gabarit `<…>`, ne déclenche aucun avertissement ; seuls le contrôle + de fin de mise à jour du manuel (connexion refusée avec l'ancien mot de passe, AC 11 f) et la relecture + des chevrons de `.env` le montrent. + (b) Rubrique **Retiré** : `init-demo.sh` (démonstration semée par l'écran d'accueil ; AC 12 b). Aucune + version du `CHANGELOG.md` ne porte encore cette rubrique (F7 de la validation P4) ; elle est légitime : + *Removed* est l'une des six rubriques de Keep a Changelog 1.1.0, que l'en-tête du fichier déclare suivre + (vérifié le 2026-10-09 sur `keepachangelog.com/fr/1.1.0/` : *Added*, *Changed*, *Deprecated*, + *Removed*, *Fixed*, *Security* — la page française garde les intitulés anglais) ; le fichier en traduit + les intitulés (Ajouté, Modifié, Corrigé, Sécurité), « Retiré » traduit *Removed*. Elle se place entre + « Modifié » et « Corrigé », dans l'ordre de la convention. *(Les + entrées #552, #576 et « dossiers montés ignorés » : 15-13b.)* + (c) **Propagation** : `CHANGELOG.md:46` porte **cinq** phrases que la 15-13 rend fausses (F-P3-1 : la + fiche unique en comptait quatre, « deux gestes » lui avait échappé) ; **quatre** relèvent de la + 15-13a, toutes réécrites : « le manuel d'administration décrit les **deux gestes** » (le décompte + par fichier de l'AC 11 f — quatre pour `docker-compose.yml`, deux pour `docker-compose.prod.yml`, ou + cinq et trois si la 15-13b est mergée — ou un renvoi sans nombre) ; « Kesh **refuse de démarrer** + si … » (la liste omet le refus de **Compose**, qui s'affiche au terminal — le dire à part, comme au + manuel) ; « Une variable que `.env` ne pose pas, ou laisse vide, prend son défaut sans + avertissement » (faux pour `MARIADB_ROOT_PASSWORD` et `MARIADB_PASSWORD` avec `docker-compose.yml` ; + la fin de la phrase, « — la sauvegarde pré-import reste dans `/tmp` », relève de la 15-13b et reste + vraie tant qu'elle n'est pas mergée) ; « Un `.env` copié du gabarit sans modification ne change rien + d'autre que le refus du placeholder du secret JWT » (un `.env` copié du **nouveau** gabarit fait + refuser Compose ; d'un **ancien**, il fait émettre l'avertissement de l'AC 5). + (d) **Propagation (F-P3-2)** : `CHANGELOG.md:52` (entrée #557, rubrique **Sécurité**) recopie le + contrôle des placeholders `sudo docker compose config | grep -iE …` avec « doit rester muette » — + le piège corrigé au manuel à l'AC 11 f (muet quand Compose refuse). Il est remplacé comme au manuel : + les deux mots de passe MariaDB posés d'abord, puis `sudo docker compose config -q && echo 'compose + lisible'`, dont la seconde moitié doit s'afficher, puis le `grep` — ou un simple renvoi au manuel + (§ *Passer à la 0.13.0*) sans recopier la commande ; le choix est écrit au Dev Agent Record. + +14. **Inventaire des sites non résolus tenu** (§ *Inventaire* des Dev Notes) : à la fin du développement, + chaque site de l'inventaire est soit résolu par un AC, soit écrit comme angle mort, et les greps de + contrôle (T9) ne trouvent **aucun** site hors de l'inventaire. + +## Tasks / Subtasks + +- [ ] **T0 — Mesures avant d'écrire** (AC 2 c, 6 c, 11 f, 11 j, 11 l ; test 8) + - [ ] `docker compose -f docker-compose.yml config -q` sur une copie du compose portant le message de + l'AC 2 c, **sous ses deux formes** (c1 non citée, c2 entre guillemets doubles), **avec** les deux + variables posées (le fichier doit se lire : c'est ce que le YAML casserait) puis **sans** elles : + relever le message exact (accents restitués ?), la forme retenue, et **laquelle des deux + variables Compose nomme en premier** quand les deux manquent — version de Compose au Dev Agent + Record. Sur la même copie sans les variables : `docker compose ps` (et `logs`) refusent-ils aussi + (AC 11 f) ? Relever. Sur la copie **avec** les variables : graphie de `docker compose config` pour + un service sans `ports` et pour un service qui en a (forme longue `published:`), pour le contrôle + écrit de l'AC 11 f. + - [ ] Erreur `sqlx` d'un mauvais mot de passe sur la MariaDB de dev (base du worktree, **jamais** le + conteneur `kesh-mariadb-dev` redémarré) : variante d'`sqlx::Error`, numéro 1045 joignable ou non. + - [ ] Durée de l'échec de connexion du test 8 : hôte `kesh-15-13.invalid` (échec de résolution, non + rejoué par `sqlx`) contre `127.0.0.1:1` (`ConnectionRefused`, rejoué jusqu'à + `db_connect_timeout` = 10 s, `config.rs:639`) ; retenir le premier s'il échoue vite **et** produit + « Base de données indisponible », sinon le second, durée écrite. + - [ ] `make fr` sur l'état d'avant : garder le `.log` (référence des `Overfull`) et le PDF aplati + (référence des contrôles de l'AC 11 l, chacun **rouge** dessus). +- [ ] **T1 — Compose, gabarit** (AC 1, 2, 3) + - [ ] `docker-compose.yml` : `ports:` de `mariadb` retiré + commentaire ; trois `:?` (forme du T0). + - [ ] `.env.example` : bloc MariaDB réécrit (ordre de l'AC 3 c), lignes commentées ; commentaire + `DATABASE_URL` (hex). + - [ ] `grep -rnF kesh_dev docker-compose.yml docker-compose.prod.yml .env.example` → vide. +- [ ] **T2 — Code** (AC 5, 6) + - [ ] `config.rs` : `MOTS_DE_PASSE_PUBLIES` + avertissement (a) **et** avertissement gabarit (a-bis) par + `is_template_placeholder` (doc-comment complété, AC 5 d) — crates `url` **et** `percent-encoding` + en dépendances directes de `kesh-api` (`url` ne réexporte pas `percent_encoding` ; toutes deux + déjà au `Cargo.lock`, `url` 2.5.8 et `percent-encoding` 2.3.2 : aucun paquet neuf) ; + `numero_erreur_mariadb` et `indice_connexion` (AC 6 b). + - [ ] `main.rs:82-87` : le message d'erreur ajoute l'indice quand la composition des deux fonctions en + rend un. +- [ ] **T3 — Tests Rust** (AC 5, 6, 10) — voir § *Tests et mutations*. Dans + `configuration_transmise.rs` : scission d'`Interpolation::Obligatoire`, `VALEURS_COMPOSEES` + resserré (AC 10 a, test `valeurs`). Le lancement du binaire est factorisé (DRY) : + `sortie_du_binaire_sans_configuration` (`configuration_transmise.rs:2232`, privée) devient un appel + d'un helper `lancer_binaire(env: &[(&str, &str)]) -> std::process::Output` (répertoire temporaire + courant, `env_clear`, `NO_COLOR=1`, puis les couples donnés) posé dans + `crates/kesh-api/tests/common/binaire.rs` et inclus par `#[path = "common/binaire.rs"] mod binaire;` + dans `configuration_transmise.rs` et `demarrage_mariadb.rs` — **pas** par `mod common;`, qui + tirerait dans ces deux binaires l'amorce de base de `common/mod.rs` qu'ils n'utilisent pas. + **Le helper ne fait aucune assertion** (F-P3-9) : chaque appelant pose la sienne — + `sortie_du_binaire_sans_configuration` garde son `!sortie.status.success()` + (`configuration_transmise.rs:2232-2254`), les tests 8 et 10 posent « code de sortie ≠ 0 ». +- [ ] **T4 — CI** (AC 4) : `.github/workflows/ci.yml` et `docs/ci.md` — dont le « 4 jobs (`backend`, + `frontend`, `e2e`, `docker-build`) » de `docs/ci.md:9-10` (ligne 9 : pull request ; ligne 10 : + « mêmes 4 jobs » au push), faux (`ci.yml` n'en a que trois : `backend:` `:21`, `frontend:` `:189`, + `docker-build:` `:233` ; aucun job `e2e`), corrigé en « 3 jobs (`backend`, `frontend`, + `docker-build`) » dans le même patch que `:12` et `:117`. Le même symptôme, grepé par la valeur + (`grep -n e2e docs/ci.md`), court ailleurs dans le fichier : `:23` (schéma), `:30` (tableau des + jobs), `:131`, `:164`, `:186`, `:210` décrivent un job `e2e` absent de `ci.yml` (`:66`, + `npm run test:e2e`, est une recette locale et reste juste) — défaut **antérieur** à la story, hors de + son sujet : ces lignes ne sont pas réécrites ; une phrase sous `:10` dit que les sections qui + décrivent `e2e` ne correspondent à aucun job de `ci.yml` et renvoie à **#577** (le `CLAUDE.md` + affirme lui aussi un smoke E2E en CI que `ci.yml` ne porte pas — même issue, `CLAUDE.md` non modifié + ici). +- [ ] **T5 — Manuel et brochure** (AC 11) : sites (a)–(d), (f)–(h), (j) et (m), puis `make fr` (trois + PDF), contrôles (k)–(m). +- [ ] **T6 — `DOCKER_START.md`, retrait d'`init-demo.sh`, CHANGELOG** (AC 12, 13) — `git rm init-demo.sh`. +- [ ] **T7 — Recette de changement de mot de passe rejouée** (AC 11 f-h) sur un **conteneur MariaDB + jetable** (`docker run --rm -d --name kesh-15-13-recette mariadb:10.11`, sans port publié, réseau + jetable, **jamais** `kesh-mariadb-dev`) : initialisé avec `kesh_dev`/`kesh_dev_root`, recette + appliquée ; **contrôle de fin de mise à jour** de l'AC 11 f rejoué tel qu'il sera écrit (forme + coupée par `\`) — connexion avec les anciens mots de passe **refusée**, avec ceux de + l'environnement **acceptée**, pour `root` et `kesh` ; `SELECT CURRENT_USER()` relevé pour + `-h 127.0.0.1` **et** pour `-h ` (quel compte `root` répond dans chaque + cas : `root@localhost` ou `root@%`) ; comportement de `root@localhost` par socket relevé + (l'authentification `unix_socket` laisserait-elle entrer `root` avec un mauvais mot de passe ? d'où + `--protocol=TCP`) ; `healthcheck.sh --connect --innodb_initialized` toujours vert ; **dump puis + restauration** dans la forme du § *Forme du script de sauvegarde* (une table témoin créée, dumpée, + supprimée, restaurée, relue) ; effet de `up -d kesh-api` (forme nommée, `admin-manual.tex:1747-1748`) + sur le service `mariadb` relevé ; conteneur supprimé. Commandes et sorties au Dev Agent Record. +- [ ] **T8 — Mutations** : chacune appliquée, test rouge relevé, fichier restauré **et touché** + (`touch`, mémoire « mutation restaurée, binaire périmé ») ; tableau au Dev Agent Record. +- [ ] **T9 — Propagation et inventaire** (AC 14) — exclusions communes + `--exclude-dir={target,node_modules,.git,_bmad-output,_bmad,.claude,.svelte-kit}` (les skills BMAD de + `.claude/` et `_bmad/` portent des `docker-compose up` étrangers au dépôt) : + (1) `grep -rnIE "3306|kesh_dev|exec (-T )?db\b|base64 32|init-demo|down -v|(compose|décrit les)[^.]{0,20}deux gestes|doit rester muet" …` + — chaque résultat est dans l'inventaire (résolu ou angle mort), sinon il y entre. Le jeton du décompte + des gestes est **restreint** (validation P4, R4-1/F1) : `deux gestes` seul rendait six homonymes sans + rapport (`CLAUDE.md:760`, `crates/kesh-api/src/routes/users.rs:334`, + `crates/kesh-api/tests/users_e2e.rs:560`, `crates/kesh-db/src/repositories/invoice_settlements.rs:395`, + `docs/manual/fr/user-manual.tex:1309`, `frontend/tests/e2e/invoice-unvalidate.spec.ts:67`) ; la forme + restreinte, rejouée à `c702b7d5`, ne rend que `CHANGELOG.md:46` et `admin-manual.tex:1793`, les deux + sites traités. Le grep entier, rejoué au même commit, ne rend aucun site hors de l'inventaire + ci-dessous ; + (2) `grep -rn "MARIADB_" …` (même exclusions) ; + (3) un grep **par la valeur** du geste de démarrage, que les jetons ci-dessus ne voient pas (c'est par + là que la brochure avait échappé à l'inventaire), **sur tout le dépôt** et non plus sur une liste de + fichiers (F-P3-6 : `CHANGELOG.md`, `.env.example` et les commentaires des compose y échappaient) : + `grep -rnE "docker[ -]compose( -f [^ ]+)? up" …` (les `.tex` et le HTML ; les PDF par leur aplati) — + chaque site qui démarre `docker-compose.yml` doit soit venir **après** la pose des deux mots de passe, + soit les nommer, soit être trié comme assumé ; + (4) `grep -rnE "config \| grep|config \\\\$" …` puis lecture de la ligne suivante : tout contrôle + « doit rester muet » qui suit un `docker compose config` est précédé du `config -q && echo` (AC 11 f, + 13 d). +- [ ] **T10 — Gates** : `scripts/test-fast.sh` complet (base du worktree remise à zéro avant — + `DROP`/`CREATE` de **ses** bases, jamais un redémarrage du conteneur), frontend non touché (gate + frontend tout de même, CLAUDE.md), **E2E complet au dernier commit de code** (D7) ; la story ne + touche aucune migration (exception `kesh-db` sans objet). + +## Tests et mutations + +Périmètre : tests **neufs ou modifiés** par la 15-13a, de `de285ea8` au commit de développement. +Numérotation de la fiche unique conservée ; la ligne **3a** est neuve (validation P3, ci-dessous). + +| # | Test (fichier) | Établit | Mutation qui le rend rouge | +|---|---|---|---| +| 1 | `mariadb` (nouveau `#[test]`, `configuration_transmise.rs`) | AC 10 a | **M1** remettre `ports: ["3306:3306"]` au service `mariadb` · **M2** remettre `"127.0.0.1:3306:3306"` actif · **M3** `MARIADB_PASSWORD: ${MARIADB_PASSWORD:-kesh_dev}` · **M4** `${MARIADB_ROOT_PASSWORD}` (sans `?`) · **M28** `MARIADB_PASSWORD: ${MARIADB_PASSWORD?m}` (forme `?`, qui laisse passer une ligne vide) | +| 2 | `mots_de_passe_publies` (nouveau, même fichier) | AC 10 b | **M6** ligne active `MARIADB_PASSWORD=kesh_dev` dans `.env.example` · **M7** `kesh_dev_root` dans un **commentaire** de `docker-compose.yml` · **M8** `MARIADB_ROOT_PASSWORD=x` décommentée (valeur quelconque) | +| 3a | `valeurs` (existant, `configuration_transmise.rs:1743`, famille (V) — `VALEURS_COMPOSEES` resserré à `${MARIADB_PASSWORD:?`) | AC 10 a (`DATABASE_URL`) | **M5** `DATABASE_URL` en `${MARIADB_PASSWORD:-x}` seulement | +| 4 | `s_service_mariadb` (nouveau, (S)) — sources refusées et acceptées de l'AC 10 d, dont la valeur **citée** | AC 10 d | **M12** le contrôle accepte `DefautSiVide` comme forme obligatoire · **M13** le contrôle ignore la clé `ports:` · **M29** l'analyseur range `?` avec `:?` (scission annulée) | +| 7 | `from_env_warns_on_published_database_password` (nouveau, `config.rs`, capture `from_env_with_logs`) — cas `kesh_dev`, `kesh_dev_root`, `kesh%5Fdev` (décodé) → avertissement (a) ; **gabarits** : `mysql://kesh:%3Cmot%20de%20passe%20utilisateur%20applicatif%3E@h/kesh` (encodé) **et** la même URL non encodée, telle que Compose la compose depuis `.env` (`mysql://kesh:@h/kesh`), et `mysql://kesh:%3CMARIADB_PASSWORD%3E@h/kesh` → avertissement (a-bis), **distinct** de (a) — la forme non encodée **s'analyse** : établi à la source en validation P4 (`url` 2.5.8, `parser.rs:880-952`, `parse_userinfo` encode l'espace, `<` et `>` par le jeu `USERINFO`, `:20-37` ; `Url::password()` rend `%3Cmot%20de%20passe…%3E`, que le décodage restitue), cas **positif ferme**, sans repli ; **témoins** : `mysql://kesh_dev:fort@…` (l'utilisateur, pas le mot de passe), `Kesh_Dev` (casse), `a%3Cb%3Ec` (chevrons **intérieurs**, admis par le prédicat), `%FF` (octet non UTF-8 : ni panique ni avertissement, AC 5 a), mot de passe fort, URL sans mot de passe → aucun avertissement ; **aucun message capturé ne contient le mot de passe ni l'URL** (pour chaque cas averti, sous ses formes encodée et décodée) | AC 5 a, a-bis, b | **M16** avertissement (a) retiré · **M17** comparaison sur l'utilisateur · **M18** sans décodage pour cent · **M19** comparaison insensible à la casse · **M42** appel d'`is_template_placeholder` retiré (seule la liste reste) · **M43** l'avertissement (a) ou (a-bis) interpole le mot de passe décodé (F6 de la validation P4) | +| 8 | `mot_de_passe_publie_avertit_au_demarrage` (nouveau, lance le binaire comme `rust_log_vide_vaut_info` : `DATABASE_URL=mysql://kesh:kesh_dev@/kesh` — `kesh-15-13.invalid` si l'échec est immédiat, sinon `127.0.0.1:1` et ses ≈ 10 s —, `KESH_JWT_SECRET` valide, `KESH_HOST=127.0.0.1` ; le binaire sort en échec de connexion) — fichier neuf `crates/kesh-api/tests/demarrage_mariadb.rs`, lancement par le helper `lancer_binaire` (T3) ; assertions : l'avertissement est dans la sortie, **code de sortie ≠ 0** | AC 5 (câblage) | **M20** l'avertissement émis hors de `from_env` (fonction non appelée) — assertion de montage : la sortie contient « Base de données indisponible » | +| 9 | `indice_connexion_refusee` (nouveau, unitaire, `config.rs`) — la décision pure `indice_connexion` : `Some(1045)` → indice ; `Some(1049)`, `Some(1044)`, `None` → rien | AC 6 b | **M21** 1044 au lieu de 1045 · **M22** indice pour toute erreur | +| 10 | `mauvais_mot_de_passe_donne_l_indice` (nouveau, `demarrage_mariadb.rs`) — lance le binaire avec **les mêmes variables que le test 8** (`KESH_JWT_SECRET` valide, `KESH_HOST=127.0.0.1` : `Config::from_env` exige le secret, `config.rs:646`, **avant** la connexion, `main.rs:63-69`) et la `DATABASE_URL` des tests (`DATABASE_URL` de l'environnement, **obligatoire** : panique explicite si absente, pas de saut silencieux) dont le mot de passe est remplacé par `mauvais-15-13` ; la sortie contient l'erreur d'origine **et** l'indice ; code de sortie ≠ 0 ; la sortie ne contient **pas** `mauvais-15-13` (ni l'indice ni le message ne citent l'URL ou son mot de passe) ; **assertion de montage** : la sortie ne contient **pas** « Erreur de configuration » (sinon le binaire n'a jamais tenté la connexion) — couvre l'**extraction** `numero_erreur_mariadb` | AC 6 a-b | **M23** `main.rs` n'appelle pas la fonction d'indice · **M44** le message d'échec de connexion interpole `config.database_url` | +| 13 | Étape CI « Validate compose files » (shell, `ci.yml`) | AC 4 | **M27** remettre `:-kesh_dev_root` → la vérification négative (b) échoue (rejouée en local au T8 avec le même script) | + +**Décompte** (recompté sur le tableau) : 9 lignes — 8 côté Rust, qui portent **8 fonctions de test** (7 +neuves : lignes 1, 2, 4, 7, 8, 9, 10 ; 1 existante modifiée : ligne 3a, `valeurs`), dans un fichier neuf +(`demarrage_mariadb.rs`) et deux existants (`configuration_transmise.rs`, `config.rs`) — plus 1 étape CI, et +un module d'aide de test neuf (`tests/common/binaire.rs`, aucun test ; `sortie_du_binaire_sans_configuration` +refactorée, non comptée : ce n'est pas un test) ; **24 mutations** (M1–M8, M12, M13, M16–M23, M27–M29, +M42–M44), toutes attendues rouges. **M43** et **M44** (validation P4, F6) gardent la seule propriété de +sécurité des AC 5 et 6 qu'aucune mutation ne gardait : ni mot de passe ni URL dans un journal. **Ligne 3a** (validation P3, constat du remédiateur) : la fiche unique +rangeait le resserrement de `VALEURS_COMPOSEES` sous le test `transmission` et M5 sous le test 1 ; or +`VALEURS_COMPOSEES` n'est lu que par `controle_valeur` (`configuration_transmise.rs:592-603`), appelé par +`controle_valeurs` (`:763`) et le test `valeurs` (`:1743`, famille (V)) — c'est `valeurs` que M5 rougit. + +Le test **(L)** (`garde_lecture_du_code`) et **(E)** (`env_example`) doivent rester verts **sans +modification** de leurs listes : la story n'ajoute aucune lecture d'environnement ni aucune variable. + +## Dev Notes + +### Ce que la story change, et ce qu'elle préserve + +- **Code** : deux modules de `kesh-api` — `config` (avertissements, fonctions d'indice, tests) et `main` + (un appel dans un message d'erreur). Aucune migration ; `kesh-db` non touché ; frontend non touché. +- **Préservé** : le réseau `kesh-network` ; `docker-compose.dev.yml` (pile de dev, mots de passe en dur, + port en loopback) ; `docker-compose.prod.yml` (aucune modification de cette story) ; la transmission des + variables de la 15-11a. + +### Pourquoi refuser par Compose et seulement avertir dans Kesh (C-15-13-2) + +Kesh ne voit pas `MARIADB_ROOT_PASSWORD` (non transmise, et ne doit pas l'être : C71 interdit `env_file`). +Il ne voit que `DATABASE_URL`. Refuser `kesh_dev` dans Kesh casserait la pile de développement +(`docker-compose.dev.yml:15` compose `mysql://kesh:kesh_dev@mariadb:3306/kesh`), le montage E2E local et +la documentation de test (`docs/testing.md`, `crates/*/README.md`, `CLAUDE.md`) — tous sur `kesh_dev`. +`KESH_TEST_MODE` ne permet pas de distinguer : `docker-compose.dev.yml` lie `0.0.0.0` et +`TestModeWithPublicBind` l'interdit. D'où le partage : + +- **le refus** est porté par Compose, là où vit le défaut : sans les variables, rien ne démarre, et le + message nomme la variable ; +- **l'avertissement** est porté par Kesh, pour les `.env` existants qui recopient les anciennes valeurs du + gabarit (`.env.example:336-339` jusqu'à la 0.12.1) — le port n'étant plus publié, le risque restant est + celui d'un conteneur du même réseau ; l'avertissement le dit. Le mot de passe **root**, que Kesh ne voit + pas, n'est couvert que par le contrôle de fin de mise à jour du manuel, qui se connecte **à la base** + avec les anciens mots de passe (AC 11 f, C-15-13-10) — un `grep` sur `docker compose config` ne lirait + que `.env`, et resterait muet quand `.env` porte une valeur neuve alors que la base garde l'ancienne. + +**Valeur gabarit (`<…>`)** — *rectifié en validation P3 (F-P3-3, C-15-13-17)* : la fiche unique la disait +« hors de portée de Kesh pour la même raison ». C'était faux pour le mot de passe **applicatif** : Kesh le +lit dans `DATABASE_URL`, et le prédicat `is_template_placeholder` existe. Il est donc **averti** (AC 5 a-bis), +pas refusé — même raison qu'en (a) : un mot de passe faible n'empêche pas de démarrer, et l'avertissement +suffit à le faire voir. La raison « Kesh ne voit pas root » ne vaut que pour **root** : un root gabarit reste +un angle mort, tracé par l'issue **#578** (§ *Angles morts*). + +### La mise à jour d'une installation existante — les cas, un par un + +Pour `docker-compose.yml` (MariaDB comprise). MariaDB **n'applique `MARIADB_*_PASSWORD` qu'à +l'initialisation d'un dossier de données vide** : ensuite, ces variables sont ignorées et seule la base +fait foi. C'est le piège central. *(Les cas propres à la sauvegarde — compose gardé sans montage, image +ancienne, restauration après un import raté — sont dans la 15-13b.)* + +| État de l'installation avant mise à jour | Après re-téléchargement du compose 0.13.0 | Ce que dit le manuel | +|---|---|---| +| `.env` copié d'un ancien gabarit : `MARIADB_PASSWORD=kesh_dev` actif | démarre ; port fermé ; **avertissement** Kesh au démarrage ; le contrôle de fin de mise à jour (connexion avec `kesh_dev` **acceptée**) le montre | changer les deux mots de passe (procédure AC 11 g) | +| `.env` sans les lignes (s'appuyait sur les défauts du compose) | **Compose refuse** : `required variable MARIADB_PASSWORD is missing a value: …` | écrire `MARIADB_ROOT_PASSWORD=kesh_dev_root` et `MARIADB_PASSWORD=kesh_dev` (les valeurs d'**origine**), démarrer, puis changer (AC 11 g) | +| `.env` avec des mots de passe propres posés **avant** la première initialisation | aucun changement | rien | +| base créée avec la chaîne gabarit **littérale** du manuel (``, ``, `admin-manual.tex:253-254`) | démarre ; **avertissement** Kesh (AC 5 a-bis) pour le mot de passe **applicatif** ; **aucun message** pour root (Kesh ne le voit pas) | **ne pas** toucher `.env` ; changer les deux mots de passe par la procédure (AC 11 b, 11 g) ; root gabarit : seule la relecture des chevrons de `.env` le montre | +| l'exploitant écrit une valeur **neuve** de `MARIADB_PASSWORD` dans `.env` sans `ALTER USER` | Kesh sort sur **1045** — avec l'**indice** de l'AC 6 | revenir à l'ancienne valeur, puis la procédure | +| l'exploitant écrit une valeur **neuve** de `MARIADB_ROOT_PASSWORD` dans `.env` sans `ALTER USER` (cas probable : Compose la nomme absente, et qui n'en avait jamais posé « en met une forte ») | **rien ne rougit** : Kesh n'utilise pas root, le healthcheck passe par le compte `healthcheck` de l'image (`docker-compose.yml:19`) ; root garde `kesh_dev_root` dans la base ; **la sauvegarde nocturne échoue** (le script lit `$MARIADB_ROOT_PASSWORD` dans le conteneur), dans un journal que personne ne lit | **détection** : le contrôle de fin de mise à jour (connexion root avec `kesh_dev_root` **acceptée**, avec la valeur de `.env` **refusée**) et le lancement du script à la main (AC 11 f) ; remède : revenir à l'ancienne valeur, puis la procédure | +| ligne `#MARIADB_PASSWORD=` du nouveau gabarit décommentée **sans valeur** | **Compose refuse** (forme `:?`, qui refuse le vide — d'où la scission de l'AC 10 a) | écrire la valeur d'origine | +| outil de l'hôte connecté à `127.0.0.1:3306` ou `IP:3306` (client SQL, script de sauvegarde) | refusé (port non publié) | `docker compose exec mariadb …` ; dépannage ponctuel : décommenter la ligne loopback | +| compose **gardé** (non re-téléchargé) | port toujours publié, défauts toujours là ; avertissement si `kesh_dev` ou gabarit | les gestes du paragraphe « Pour qui garde son fichier compose » (AC 11 f) | +| compose neuf, **image ancienne** (oubli du `pull`) | pas d'avertissement ni d'indice (image 0.12.x) | le manuel impose `docker compose pull` avant `up -d` (déjà écrit, 15-11a) | + +**Deux cas ne se signalent par aucun message** et ne sont vus que par un geste prescrit : le mot de passe +root neuf écrit sans `ALTER USER` (sauvegarde nocturne en échec) et le mot de passe **root** resté sur une +chaîne gabarit. Le manuel fait voir le premier par le **contrôle de fin de mise à jour** — connexion à la +base avec les anciens mots de passe, refus attendu — et par le **lancement manuel du script de sauvegarde** +(AC 11 f) ; le second, par la relecture des valeurs entre chevrons de `.env` que la procédure de mise à +jour prescrit déjà (« vérifier les placeholders », `admin-manual.tex:1746`) et que l'AC 11 b étend aux deux +mots de passe MariaDB. Toutes les autres pannes ont un message (Compose ou Kesh), et toute exposition +résiduelle un avertissement ou ce contrôle — dont, depuis la validation P3, le mot de passe **applicatif** +gabarit (AC 5 a-bis). *(La version de la fiche unique avant la P1 affirmait qu'« aucun de ces cas ne +casse en silence » : le tableau était incomplet — F3 et R-4 de la validation P1. Celle d'avant la P3 +rangeait le gabarit applicatif parmi les cas silencieux : F-P3-3.)* + +`docker-compose.prod.yml` (Synology, MariaDB externe) : cette story n'y change rien (le montage `./backup` +est de la 15-13b). La MariaDB de Package Center relève de DSM ; le manuel peut rappeler de vérifier qu'elle +n'écoute pas sur le réseau sans nécessité, sans recette (angle mort). + +### Le refus de Compose, mesuré en CI dans les deux sens (AC 4) + +`docker compose config -q` sans `.env` **échouera** sur `docker-compose.yml` dès l'AC 2 : l'étape actuelle +(`ci.yml:242-245`) rougirait. La corriger en lui donnant des valeurs ne suffit pas — il faut aussi +**exiger l'échec** sans elles, sinon le retour d'un défaut (`:-kesh_dev`) ne se verrait nulle part hors du +test Rust. Esquisse : + +```sh +MARIADB_ROOT_PASSWORD=ci MARIADB_PASSWORD=ci docker compose -f docker-compose.yml config -q +if env -u MARIADB_ROOT_PASSWORD -u MARIADB_PASSWORD \ + docker compose -f docker-compose.yml config -q 2> refus.txt; then + echo "docker-compose.yml doit refuser l'absence des mots de passe MariaDB"; exit 1 +fi +grep -qE 'MARIADB_(ROOT_)?PASSWORD' refus.txt +docker compose -f docker-compose.prod.yml config -q +``` + +Le runner n'a pas de `.env` à la racine (le dépôt n'en versionne pas : `git ls-files | grep '^\.env'` → +`.env.example` seul) ; vérifier en T0 qu'aucun `.env` local ne fausse la mesure locale (le déplacer le +temps du T8, ou lancer depuis une copie). + +### Forme du script de sauvegarde (AC 11 h) + +Le script quotidien (`admin-manual.tex:1446-1479`) passe la commande **entière** à `sh -c` entre +apostrophes, pour que `$MARIADB_ROOT_PASSWORD` soit lu **dans le conteneur** ; chaque ligne tient en 76 +caractères (AC 11 k). Forme de référence, à rejouer au T7 avant d'être écrite : + +```sh +COMPOSE_DIR="/chemin/du/compose" # répertoire de docker-compose.yml +cd "${COMPOSE_DIR}" + +docker compose exec -T mariadb sh -c \ + 'mariadb-dump --single-transaction --routines --triggers \ + --events --add-drop-database --databases kesh \ + -u root -p"$MARIADB_ROOT_PASSWORD"' \ + | gzip > "${BACKUP_FILE}" +``` + +La barre oblique **à l'intérieur** des apostrophes n'est pas lue par le shell de l'hôte : elle est +transmise à `sh`, qui lit la barre suivie d'un saut de ligne comme une continuation. La restauration +(`:1511-1512`) prend la même forme, l'entrée standard traversant `sh` : +`zcat .sql.gz | docker compose exec -T mariadb sh -c 'mariadb -u root -p"$MARIADB_ROOT_PASSWORD"'` +(coupée par `\` au manuel). `-T` est obligatoire dans les deux sens (pas de pseudo-terminal dans un tube). +Au T7, le conteneur jetable est lancé par `docker run` et non par Compose : la même commande intérieure +passe par `docker exec -i kesh-15-13-recette sh -c '…'` — c'est la commande **intérieure** qui est +validée, la forme `docker compose exec` restant celle du manuel. + +### Forme de la recette de changement (AC 11 g) + +Forme de référence, à rejouer au T7 (sur le conteneur jetable, par `docker exec -i`) avant d'être écrite — +la mesure fixe la forme finale ; les exigences, elles, sont celles de l'AC 11 g (C-15-13-23) : + +```sh +cd /chemin/du/compose +sudo docker compose stop kesh-api +NEW=$(openssl rand -hex 32) # jamais tapé : absent de l'historique +sudo docker compose exec -T mariadb \ + sh -c 'mariadb -uroot -p"$MARIADB_ROOT_PASSWORD"' <`), `:328-339` | gabarit | résolu (AC 3) | +| `.github/workflows/ci.yml:55`, `:57`, `:64`, `:93` ; `release.yml:26`, `:28`, `:70`, `:94` | MariaDB de service du runner (`3306:3306`, `kesh_dev`, `kesh_root`) | **assumé** (runner éphémère, non distribué) | +| `.github/workflows/ci.yml:242-245` | validation des compose | résolu (AC 4) | +| `docs/ci.md:9-10`, `:12`, `:117` | doc de la CI (dont « 4 jobs », faux) | résolu (AC 4 d, T4) | +| `docs/ci.md:23`, `:30`, `:131`, `:164`, `:186`, `:210` | job `e2e` décrit, absent de `ci.yml` | **assumé, NON résolu** — défaut antérieur, hors sujet ; une phrase de renvoi sous `:10` vers **#577** (T4) | +| `crates/kesh-api/src/config.rs` — 34 URL `mysql://test:test@localhost:3306/test`, dont `:1485` | URL factices des tests | **assumé** (n'émettent pas l'avertissement : mot de passe `test`, ni publié ni gabarit) | +| `crates/kesh-api/src/config.rs:1398-1405` (`is_template_placeholder` et son doc-comment) | prédicat réemployé | résolu (AC 5 a-bis, d) | +| `crates/kesh-api/src/main.rs:82-87` | message d'échec de connexion | résolu (AC 6) | +| `crates/kesh-api/src/routes/reconciliation.rs:1129`, `:1136` ; `crates/kesh-db/src/retry.rs:57`, `:106` | constantes `MARIADB_SAVEPOINT_DOES_NOT_EXIST`, `MARIADB_DEADLOCK_ERROR_CODE` (grep `MARIADB_`, rejoué en remédiation P3 : absentes de l'inventaire jusque-là) | **assumé** — homonymes (codes d'erreur), forme citée par l'AC 6 b | +| `crates/kesh-api/tests/*_e2e.rs` (58 lignes `mysql://test:test@localhost:3306/test`, 2 `mysql://stub:stub@127.0.0.1:3306/stub`), `tests/health_endpoint.rs:36`, `tests/spa_resilience.rs:46` | URL de test | **assumé** (base de test, mot de passe non publié) | +| `crates/kesh-api/tests/configuration_transmise.rs:169-174` | `VALEURS_COMPOSEES` | résolu (AC 10 a, motif resserré, test `valeurs`) | +| `crates/kesh-api/tests/configuration_transmise.rs:190-193`, `:456` | `MARIADB` (variables d'hôte du service MariaDB), message de (E) | inchangé, voulu | +| `crates/kesh-api/tests/configuration_transmise.rs:541-564`, `:626`, `:2232-2254` | `Interpolation::Obligatoire` (définition, analyse, bras de `controle_valeur`) ; `sortie_du_binaire_sans_configuration` | résolu (AC 10 a ; T3) | +| `crates/kesh-api/src/middleware/auth.rs:234`, `:242` | URL factice `mysql://stub:stub@127.0.0.1:3306/stub` d'un test | **assumé** (test, `connect_lazy`) | +| `crates/kesh-api/README.md:169`, `:172`, `crates/kesh-db/README.md:34`, `:46`, `:53`, `:64`, `docs/testing.md:27`, `:29`, `:43`, `:53`, `:99`, `:100`, `:161`, `:171`, `:284`, `:302`, `scripts/test-fast.sh:33`, `scripts/regen-test-schema.sh:72`, `scripts/seed-dev-db.sql:8`, `:10`, `scripts/mariadb-init/01-dev-grants.sql:10`, `CLAUDE.md:179`, `:504`, `README.md:180`, `frontend/DEBUGGING-KF007.md:16` | recettes de dev et de test sur `kesh_dev` / `kesh_root` / `127.0.0.1:3306`, et démarrage de la pile de dev (`docker compose -f docker-compose.dev.yml up -d mariadb` : `crates/kesh-db/README.md:34`, `docs/testing.md:99`, `:161`) | **assumé** (base de dev jetable `docker-compose.dev.yml`, ou service MariaDB de la CI) | +| `init-demo.sh` (fichier entier, dont `:20`, `:23`, `:59`, `:69`, `:70-75`) | script de démonstration sur `kesh-mariadb` + `kesh_dev`, `DELETE` sans transaction | résolu **par retrait** (AC 12 b, C-15-13-13) | +| `.svelte-kit/ambient.d.ts:42-45`, `:240-243` (versionné) | noms `MARIADB_*` d'un environnement de build, sans valeur | **assumé** (fichier engendré, aucun secret) | +| `DOCKER_START.md:6`, `:12-13`, `:102`, `:146` | prérequis, phrase « Kesh refuse » sans `.env`, accès, volume | résolu (AC 12 a) | +| `DOCKER_START.md:134-137` | « Base de données ne s'initialise pas » → `down -v`, `up --build` | résolu (AC 12 a-bis) | +| `DOCKER_START.md:78` | « Arrêter et supprimer les données » (`down -v` explicite) | **assumé** — dit ce qu'il fait | +| `DOCKER_START.md:27`, `:37`, `:41`, `:86`, `:96`, `:132` | `docker compose up` (`:41` : `up -d` tire l'image publiée) | résolu par l'étape `.env` de l'AC 12 a (les deux mots de passe posés avant) | +| `docs/manual/fr/marketing-brochure.tex:542` + `marketing-brochure.pdf` | « `docker compose up -d`, une fois `KESH_JWT_SECRET` généré » | résolu (AC 11 m) | +| `docs/manual/fr/admin-manual.tex` — 21 lignes du `.tex` portent `docker compose up` (`grep -cE "docker[ -]compose( -f [^ ]+)? up"` → 21 : `:227`, `:275`, `:578`, … `:2247`), 21 occurrences aussi au PDF aplati | démarrage | **assumé** — `:227` est de la prose de l'étape 2 (« `docker compose up -d` la télécharge »), sans geste de démarrage ; les vingt autres sont postérieures à l'étape `.env` (`:229-270`), qui pose les mots de passe (AC 11 b), ou propres à Synology (`docker-compose.prod.yml`, sans MariaDB) — F2 de la validation P4 | +| `README.md:77`, `website/index.html:189` | `docker compose -f docker-compose.dev.yml up -d` | **assumé** — pile de dev ; aucun autre `docker compose up` sur `website/` (`grep -rniE "docker[ -]compose" website` : trois mentions sans commande) | +| `.env.example:19`, `:297` | commentaires « `docker compose up -d` après une modification » ; avertissement de Compose sur `$` | **assumé** — le gabarit pose les mots de passe dans son bloc MariaDB (AC 3), qu'un `up` suit | +| `docker-compose.yml:31-35`, `:49` (commentaires : l'image publiée est tirée ; `up -d` après une modification de `.env`) ; `docker-compose.prod.yml:12`, `:34`, `:53`, `:69` | `docker compose up` en commentaire | **assumé** — `docker-compose.yml` : le refus nommé de Compose dit ce qui manque ; `docker-compose.prod.yml` : sans MariaDB | +| `docs/kesh-specifications.txt:579`, `:1603`, `:1638`, `:1972`, `:2002`, `:2334` (**NFR-DEPLOY-1**, « une seule commande `docker-compose up` »), `:2629`, `:3153` | spécification historique | **assumé** — document de spécification, non réécrit ; NFR-DEPLOY-1 n'est plus vrai depuis la 15-11a (`.env` obligatoire) et l'est encore moins ici : signalé à l'orchestrateur | +| `admin-manual.tex:171`, `:176`, `:2362` | ports | résolu (AC 11 a) | +| `admin-manual.tex:240-259`, `:1746` | étape `.env`, placeholders | résolu (AC 11 b) | +| `admin-manual.tex:546` | `base64` → `hex` | résolu (AC 11 c) | +| `admin-manual.tex:689-694` | note MariaDB de `sec:env-vars` | résolu (AC 11 d) | +| `admin-manual.tex:1780-1786` | contrôle des placeholders muet quand Compose refuse | résolu (AC 11 f) | +| `admin-manual.tex:1460`, `:1469`, `:1511-1512`, `:2216` | `exec db`, `-p"${…}"` | résolu (AC 11 h) | +| `admin-manual.tex:1757-1841`, dont l'encadré `:1761-1776` (hors `:1773`, 15-13b) | mise à jour 0.13.0 — parties MariaDB | résolu (AC 11 f, g) | +| `admin-manual.tex:1793` (« Pour qui garde son fichier compose : deux gestes. » et « Sous `environment:` du service `kesh-api` : ») | décompte des gestes faux | résolu (AC 11 f, F-P3-1) | +| `admin-manual.tex:1747-1748` (`pull kesh-api`, `up -d kesh-api` de la procédure standard) | le service `mariadb` est-il recréé par un `up -d` nommant `kesh-api` ? | **assumé** — le § 0.13.0 prescrit `docker compose up -d` sans nom de service (déjà écrit) ; l'effet de la forme nommée est relevé au T7 | +| `admin-manual.tex:2192-2199` | dépannage | résolu (AC 11 j) ; `:2189` (`logs kesh`) laissé à la 15-7b3 | +| `admin-manual.tex:1578-1581` (pré-script Hyper Backup : `exec -T mariadb` et `grep MARIADB_ROOT_PASSWORD .env`) et `:573` (aperçu Container Manager listant `mariadb`) | **section Synology, dont le compose (`docker-compose.prod.yml`) n'a pas de service `mariadb`** | **assumé, NON résolu** — défaut antérieur à la story, **#575** (P3). Aggravé par l'AC 3 b : avec `#MARIADB_ROOT_PASSWORD=` commentée **et** une ligne active, `grep … \| cut -d= -f2` rend deux lignes — à joindre à #575 | +| `admin-manual.tex:1744` (« volume `kesh_db_data` ») et `:1422` (`/var/lib/docker/volumes/kesh_db_data`) | nom de volume faux (réel : `_kesh-mariadb-data`) | **assumé, NON résolu** — **#575** | +| `CHANGELOG.md:46` — quatre phrases (« deux gestes », « Kesh refuse de démarrer », « défaut sans avertissement », « `.env` copié du gabarit ») | rendues fausses | résolu (AC 13 c) | +| `CHANGELOG.md:48` | « après `git pull`, `docker compose up -d` tire … » (clone) | **assumé** — même section `[0.13.0]` que l'entrée #551, qui dit le refus de Compose et les mots de passe à poser (AC 13 a) | +| `CHANGELOG.md:52` | contrôle des placeholders « doit rester muette » | résolu (AC 13 d, F-P3-2) | +| `CHANGELOG.md` — rubrique **Retiré** de `[0.13.0]`, ligne `init-demo.sh` (créée par l'AC 13 b) | mention du retrait | résolu, **voulue** (exclue du grep de l'AC 12 b) | +| `CHANGELOG.md:653`, `:655` | entrées de versions antérieures (port 3000, `cargo run`) | **assumé** — historique, ne se réécrit pas | +| `docker-compose.yml` `kesh-api` `ports: "80:80"` (toutes interfaces) | port de l'application | **assumé** — hors #551 (accès LAN voulu sans reverse proxy) ; non traité | +| `admin-manual.tex:959` (`CREATE USER 'kesh'@'%' IDENTIFIED BY 'mot_de_passe_fort';`, initialisation manuelle hors Docker) | littéral imprimé dans le PDF distribué (F3 de la validation P4) | **assumé** — installation hors Docker, hors #551 ; non couvert par la liste fermée (§ *Angles morts*) | + +**Décompte** : 48 lignes (recompté par `awk` sur le tableau — `grep -c '^| '` rend 49, en-tête compris ; +le séparateur commence par `|---` et n'est pas compté). 47 à la validation P4, plus la ligne `:959` (F3) ; les +sites de F1 (`docs/testing.md:171`, `:284`, `:302`, `CLAUDE.md:179`) enrichissent une ligne existante. + +### Angles morts assumés (écrits, non traités) + +- **Mot de passe root resté au gabarit** (`MARIADB_ROOT_PASSWORD=` recopié de l'étape 3) + : accepté par Compose et par MariaDB ; Kesh ne voit pas root (C71) — aucun avertissement possible. Seule + la relecture des chevrons de `.env` prescrite par la procédure de mise à jour (AC 11 b) le montre. Le + mot de passe **applicatif** gabarit, lui, est averti (AC 5 a-bis, C-15-13-17). Hérité de la 15-11a + (F4-5), dont le propriétaire était « #551 » : #551 traite le **défaut publié** ; le root gabarit est + tracé par l'issue **#578** (ouverte le 2026-10-09 ; § *Issue Tracking Rule* : pas de suivi local). +- **Mot de passe root** — `kesh_dev_root` recopié d'un ancien `.env`, ou valeur neuve écrite dans `.env` + sans `ALTER USER` : invisible de Kesh et du healthcheck ; seuls le contrôle de fin de mise à jour du + manuel (connexion à la base) et le lancement manuel du script de sauvegarde le montrent (AC 11 f, + C-15-13-10). Le CHANGELOG le dit (AC 13 a). +- **Compose de Synology Container Manager** : `${VAR:?msg}` non mesurable depuis le poste ; la recette de + la v0.13.0 sur le NAS le confirmera — mais le NAS de Guy suit l'installation Synology + (`docker-compose.prod.yml`, sans MariaDB) : cette story ne le concerne pas. +- **`docker-compose.dev.yml`** : non contraint par le test (inchangé depuis la 15-11a) ; #554 ouverte pour + son mot de passe admin. +- **Portée de la liste fermée `MOTS_DE_PASSE_PUBLIES`** (F3 de la validation P4) : elle ne couvre que les + valeurs que Kesh a lui-même **distribuées comme défaut** d'une installation (`docker-compose.yml`, + `.env.example`). D'autres littéraux du dépôt sont publiés au même titre sans y entrer : `kesh_root` + (MariaDB de service de la CI, `ci.yml:64`, `:93`, `release.yml:70`, `:94` ; `frontend/DEBUGGING-KF007.md:16`) + — runner éphémère, jamais un défaut d'installation ; `mot_de_passe_fort` (`admin-manual.tex:959`, + initialisation hors Docker) — exemple d'une procédure manuelle, que Kesh n'a jamais posé de lui-même. + Choix écrit, non traité. + +### Règle de découpage + +**Un crate, deux modules de code** — `kesh-api::config` et `kesh-api::main` —, plus des tests +(`configuration_transmise.rs` étendu, `demarrage_mariadb.rs` neuf, module d'aide `tests/common/binaire.rs`) +et des fichiers de configuration, de CI et de documentation (`docker-compose.yml`, `.env.example`, +`ci.yml`, `docs/ci.md`, `init-demo.sh` — **supprimé** —, manuel et brochure + PDF, `DOCKER_START.md`, +`CHANGELOG.md`). Convention de décompte (celle de la fiche unique) : le seuil compte les **modules de +code** au sens du `CLAUDE.md` ; tests, configuration, CI, scripts et documentation n'y entrent pas. Seuil +(« plus de 5 ») loin d'être atteint. + +### Références + +- Fiche index `15-13-mariadb-et-sauvegarde.md` (découpage, recompte, Change Log des validations P1 à P3) ; + fiche unique complète au commit **8a9bcd27**. +- Issues #551, #577 (renvoi de `docs/ci.md`), #575 (section Synology, hors story), #554 ; #578 (root + gabarit). +- Rapports de validation (non versionnés) : `target/gate-logs/15-13-p{1,2,3}-{R,F}.md` ; prompts + `15-13-validate-prompt-p{1,2,3}.md`. +- `_bmad-output/implementation-artifacts/15-11a-compose-transmet-la-configuration.md` — § *Angles morts* + (`#551`, F4-5), AC 12 (conventions du manuel : 76/70 caractères, `make fr`, contrôle aplati, + `Overfull` des dix tableaux), AC 16 (`is_template_placeholder`, #557). +- `crates/kesh-api/tests/configuration_transmise.rs` — `VALEURS_COMPOSEES` (`:169-174`), `controle_valeur` + (`:572-663`), test `valeurs` (`:1743`), `sortie_du_binaire_sans_configuration` (`:2232`). +- Documentation Docker : *Packet filtering and firewalls* — « Docker and ufw » (ports publiés hors UFW) ; + image officielle `mariadb` — variables `MARIADB_*` lues à l'initialisation d'un datadir vide seulement. +- CLAUDE.md : § *Test Locally First* (E2E au dernier commit de code, D7), § *Propagation post-patch*, § + *Recompter ses propres comptes rendus*, § *Le prompt d'une passe doit NOMMER le manuel*, § *Issue + Tracking Rule* (mots-clés sur la PR). + +## Dev Agent Record + +### Agent Model Used + +### Debug Log References + +### Completion Notes List + +### File List + +## Change Log + +- 2026-10-09 — **Création par découpage de la 15-13, et remédiation de la validation P3** (agent remédiateur, + Opus 5.5, en autonomie). Historique de la fiche unique (spécification, validations P1 et P2) : Change Log + de la fiche index. **Trend** de la fiche unique : P1 (Opus 5.5 ×2) 8 MEDIUM distincts → P2 (Sonnet ×2) 6 + → P3 (Opus 5.5 ×2 : R 2 MEDIUM / 8 LOW, F 3 MEDIUM / 8 LOW, aucun doublon) **5 MEDIUM distincts** ; 0 + CRITICAL/HIGH aux trois passes. **Signal D5 de recyclage** levé deux passes de suite (P2 : deux MEDIUM nés + de la P1 ; P3 : R3-1, R3-2 et F-P3-2 nés de la P2) → **découpage** décidé par l'orchestrateur + (C-15-13-16) selon la couture #551 / #552-#576. + - **Reçu de la 15-13** : AC 1 à 6, 10 a/b/d/e (partie MariaDB), 11 a/b/c/d (note MariaDB)/f (paragraphe + MariaDB)/g/h/j/k/l (contrôles MariaDB)/m, 12 a/a-bis/b, 13 a/b (Retiré)/c (phrases MariaDB), 14 ; T0 + (mesures Compose, `sqlx`, hôte du test 8, `make fr`), T1 (compose, gabarit), T2 (`config`, `main`), T3, + T4, T5, T6 (`DOCKER_START.md`, `init-demo.sh`, CHANGELOG), T7, T8, T9, T10 ; tests 1, 2, 4, 7, 8, 9, + 10, 13 ; mutations M1–M8, M12, M13, M16–M23, M27–M29 ; dix lignes du tableau des cas (deux scindées) ; + quatre angles morts. + - **Remédiation P3 appliquée ici** : **R3-2** (AC 12 b : grep qui exclut `CHANGELOG.md`, ligne de + CHANGELOG à l'inventaire) ; **F-P3-1** (AC 11 f et 13 c : « deux gestes » → décompte par fichier, cinq + phrases à `CHANGELOG.md:46` dont quatre ici ; contrôle négatif au PDF) ; **F-P3-2** (AC 13 d, + `CHANGELOG.md:52`, inventaire, grep (4) du T9) ; **F-P3-3** (décision de l'orchestrateur, C-15-13-17 : + AC 5 a-bis et d, test 7 étendu, **M42**, AC 11 b, 13 a, tableau des cas, Dev Notes rectifiées, angle + mort root gabarit tracé par issue) ; LOW **R3-3/F-P3-4** (#577 au T4, à l'inventaire, aux Issues), + **R3-4** (`docs/ci.md:9-10`), **R3-5** (`:210`), **R3-6** (sites du grep par la valeur triés : + `docs/kesh-specifications.txt`, `docs/testing.md:99`, `:161`, `DOCKER_START.md:41`, `:137`), + **R3-7** (`init-demo.sh:70-75`), **R3-8** (test 10 : `KESH_JWT_SECRET`, assertion « Erreur de + configuration »), **F-P3-6** (grep par la valeur sur tout le dépôt : `CHANGELOG.md`, `.env.example`, + commentaires des compose triés), **F-P3-8** (`DOCKER_START.md:12-13`), **F-P3-9** (helper sans + assertion, code ≠ 0 aux tests 8 et 10). + - **Constats du remédiateur** : M5 et le resserrement de `VALEURS_COMPOSEES` relevaient du test + `valeurs` (famille (V)), non de `transmission` ni du test 1 — **ligne 3a** neuve, AC 10 a précisé ; + grep `MARIADB_` (axe non exercé par les deux lentilles P3) rejoué : `retry.rs:57`, `:106` et + `reconciliation.rs:1129`, `:1136` ajoutés (homonymes) ; `crates/kesh-db/README.md:34` ajouté. + - **Recompte** (depuis cette fiche) : **11 AC** (numéros 1–6, 10–14 de la fiche unique), **11 tâches** + (T0–T10), **9 lignes de test** portant **8 fonctions Rust** (7 neuves, 1 existante modifiée) + 1 étape + CI ; **22 mutations** (M1–M8, M12, M13, M16–M23, M27–M29, M42) ; **10 lignes** au tableau des cas ; + **47 lignes** d'inventaire ; **4 angles morts** ; **2 modules de code**. +- 2026-10-09 — **Remédiation de la validation P4** (agent remédiateur, Opus 5.5, en autonomie). Passe P4 : + deux lentilles **Sonnet** en contexte frais (prompt `15-13a-validate-prompt-p4.md`) — R (regression + hunter) **0 CRITICAL / 0 HIGH / 1 MEDIUM / 7 LOW**, F (adversaire plein périmètre) **0 / 0 / 0 / 7 LOW** + (dont une vérification positive, F5) ; R4-1 = F1 (même défaut, vu MEDIUM par R, LOW par F) — soit + **1 MEDIUM distinct**. **Trend** (fiche unique puis 15-13a) : P1 (Opus 5.5 ×2) 8 MEDIUM distincts → P2 + (Sonnet ×2) 6 → P3 (Opus 5.5 ×2) 5 → découpage → P4 (Sonnet ×2) **1** ; 0 CRITICAL/HIGH aux quatre + passes. Le MEDIUM a deux moitiés : un trou d'inventaire d'**origine** (les quatre recettes de dev + rendues par `3306|kesh_dev`, jetons présents dès la fiche unique) et un jeton trop large **né de la + remédiation P3** (`deux gestes`, ajouté au grep au commit `a847f369` pour F-P3-1 — vérifié par + `git log -S`). Sévérité en baisse (5 → 1), aucun défaut de code : la boucle converge ; le résidu né de la + P3 est signalé à l'orchestrateur. + - **MEDIUM R4-1/F1** : inventaire complété (`docs/testing.md:171`, `:284`, `:302`, `CLAUDE.md:179`, dans + la ligne des recettes de dev, assumées) ; jeton `deux gestes` du T9 (1) restreint à + `(compose|décrit les)[^.]{0,20}deux gestes`, les six homonymes nommés ; grep (1) rejoué entier à + `c702b7d5` : aucun site hors inventaire. + - **LOW** : **F2** (`admin-manual.tex:227` est de la prose ; métrique « 21 » précisée : lignes du `.tex`, + autant au PDF aplati) ; **F3** (ligne d'inventaire `:959` ; angle mort « portée de la liste fermée », + `kesh_root` trié) ; **F4** (`decode_utf8_lossy()` tranché, témoin `%FF` au test 7, C-15-13-22) ; + **R4-4/F5** (forme non encodée établie à la source : cas positif ferme, repli retiré) ; **F6** (**M43** + au test 7, **M44** au test 10 avec l'assertion « pas de `mauvais-15-13` ») ; **F7** (recette de + changement : nouveau mot de passe ni dans l'historique ni dans `ps`, `stop kesh-api` d'abord, forme de + référence en Dev Notes, C-15-13-23 ; rubrique « Retiré » justifiée par Keep a Changelog 1.1.0, + vérifié en ligne) ; **R4-2** (`configuration_transmise.rs:626` nommé) ; **R4-3** (PDF versionnés : + régénérer après fusion, pas rebaser) ; **R4-5** (message « placeholder de gabarit », `generate_me`) ; + **R4-6** (en-tête des choix aligné sur le corps, citations ajoutées aux AC 2 c, 4 d, 11 f) ; **R4-7** + (fiche index : ventilation de l'inventaire retirée, totaux seuls). + - **Règle changée** : aucune règle métier. Précisions de contrat : décodage `lossy` (AC 5 a), propriété + « ni mot de passe ni URL » désormais gardée par mutation, exigences d'hygiène de la recette (AC 11 g). + - **Recompte** (depuis cette fiche, `grep`) : **11 AC**, **11 tâches**, **9 lignes de test** portant + **8 fonctions Rust** (7 neuves, 1 existante modifiée) + 1 étape CI ; **24 mutations** (M1–M8, M12, M13, + M16–M23, M27–M29, M42–M44 ; `sort -u` → 24) ; **10 lignes** au tableau des cas ; **48 lignes** + d'inventaire ; **5 angles morts** ; **2 modules de code** (inchangé). + +- **2026-10-09 — validation P5 ciblée (Haiku, prompt `15-13a-validate-prompt-p5-ciblee.md`)** : rapport + `target/gate-logs/15-13a-p5-ciblee.md`, **0 finding**, cinq axes déclarés exercés. Axe repris par + l'orchestrateur : le grep restreint du T9 (1) rejoué ne rend que `CHANGELOG.md:46` et + `admin-manual.tex:1793`, conformément à la fiche ; la recette `ALTER USER` passe bien par + `docker compose exec -T mariadb sh -c`. **Validation close.** Trend (15-13 puis 15-13a) : P1 8 MEDIUM → + P2 6 → P3 5 (découpage, C-15-13-16) → P4 1 → P5 ciblée 0. Modèles : Opus ×2, Sonnet ×2, Opus ×2, + Sonnet ×2, Haiku (ciblée). Signal D5 déclaré en P2 et P3 (recyclage), suivi d'un découpage en P3. diff --git a/_bmad-output/implementation-artifacts/15-13a-validate-prompt-p4.md b/_bmad-output/implementation-artifacts/15-13a-validate-prompt-p4.md new file mode 100644 index 00000000..dd5759c7 --- /dev/null +++ b/_bmad-output/implementation-artifacts/15-13a-validate-prompt-p4.md @@ -0,0 +1,35 @@ +# Prompt — validation P4 de la spec, Story 15-13a + +*Versionné le 2026-10-09. Deux lentilles (Sonnet), contexte frais chacune, en lecture seule. Rotation (décision D6 de la +rétro 25) : passes complètes Sonnet ↔ Opus ; Haiku réservé à une passe ciblée de fin de boucle.* + +Dépôt `/home/gcorbaz/devel/kesh-15-13`, branche `story/15-13-mariadb-et-sauvegarde`. **Fiche** : `_bmad-output/implementation-artifacts/15-13a-mariadb-non-publiee-mots-de-passe-obligatoires.md`. La dernière remédiation est le commit `a847f369` (`git show a847f369`) — lis le Change Log de la fiche. +Issues, par `gh api repos/guycorbaz/kesh/issues/N` (et `/comments`) — `gh issue view` échoue ici : #551 (contexte #577, #578). +Choix autonomes : `_bmad-output/implementation-artifacts/epic-15-choix-autonomes.md`. Règles : `CLAUDE.md`. Code de référence : la branche elle-même (`de285ea8` + les fiches). **La 15-13 vient d'être découpée (C-15-13-16)** : index `15-13-mariadb-et-sauvegarde.md` (historique des passes P1-P3 ; version complète au commit `8a9bcd27`), sous-fiches `15-13a-mariadb-non-publiee-mots-de-passe-obligatoires.md` et `15-13b-sauvegarde-avant-import-persistante.md` — relis les deux pour la frontière. Choix C-15-13-1 à 20. Vérifie que rien n'est perdu au découpage (contre `git show 8a9bcd27:_bmad-output/implementation-artifacts/15-13-mariadb-et-sauvegarde.md`), et que chaque sous-fiche est vraie si elle est mergée SEULE (CHANGELOG `[0.13.0]`, manuel, tableau des gestes). **Axes prioritaires** : AC 5 a-bis (avertissement du mot de passe applicatif gabarit via `is_template_placeholder`) et le test 7 avec des URL non encodées — le parsing de `DATABASE_URL` les accepte-t-il (lis le code de `config.rs` et la crate `url`) ? ; la réattribution de M5 au test `valeurs` ; le décompte des gestes (`admin-manual.tex:1793`, `CHANGELOG.md:46`, `:52`) ; les 47 lignes d'inventaire, à rejouer par les quatre greps du T9 ; la procédure de mise à jour et le tableau des cas ; le manuel et la brochure, PDF aplatis. +Aucun code de la story n'est encore écrit. + +## Lentilles + +- **R — Regression hunter** : la dernière remédiation (`git show a847f369`) a-t-elle introduit des défauts ? Contradictions entre AC, tâches, Dev Notes et choix du registre ; frontière avec les fiches sœurs ; faits recopiés sans vérification (numéros de ligne, fonctions, codes, clés i18n) — revérifie-les au code (`grep -nF`) ; recompte des AC et tâches ; implémentable sans deviner ? +- **F — Full-scope adversary** : la conception elle-même. Les chemins de code qui écrivent ou lisent ce que la story + change (inventorier les sites NON résolus, pas énumérer ceux qui marchent) ; transactions, verrous, ordre des + contrôles ; tests existants qui changeront de sens ; frontend qui lit les codes ou champs touchés (`grep -rn` dans + `frontend/src`) ; i18n 4 locales et replis ; le **manuel** (`docs/manual/fr/*.tex` **et le PDF aplati** : + `pdftotext docs/manual/fr/user-manual.pdf - | tr '\n' ' ' | tr -s ' '` vers `target/gate-logs/`) ; + `docs/api-external.md` ; CHANGELOG ; la règle de découpage (§ « Règle de splitting préventif », amendement D5). + +## Ce que tu rends + +Findings numérotés avec sévérité (CRITICAL/HIGH/MEDIUM/LOW), `fichier:ligne` (fiche et code), **preuve** (commande et +sortie, ou code cité relu), correction proposée. Pour tout finding affirmant qu'un code est absent ou présent : la +sortie d'un `grep -nF`. ⛔ **La liste des axes exercés ET non exercés** — un « 0 finding » sans elle ne compte pas. +⛔ **Écris ton rapport complet** dans `target/gate-logs/15-13a-p4-.md` (R ou F ; autorisé), et rends +comme dernier message **seulement** : ce chemin, le bilan par sévérité, et une ligne par finding MEDIUM ou plus. + +## Interdits + +⛔ N'écris aucun fichier du dépôt hors `target/gate-logs/` ; aucune commande qui écrit dans le dépôt ou dans une +base : `scripts/*` (dont `scripts/prepare-release.sh`), `make`, `latexmk`, `git commit`/`add`/`checkout`/`stash`, +`sqlx`, `cargo test`/`nextest`/`build`, `npm run`, `npx`, `gh issue create`/`comment`/`edit`, aucune requête SQL +d'écriture. Autorisés : lecture, `grep`, `sed -n`, `git log`/`show`/`diff`, `gh api` en lecture, `pdftotext` +vers `target/gate-logs/`. diff --git a/_bmad-output/implementation-artifacts/15-13a-validate-prompt-p5-ciblee.md b/_bmad-output/implementation-artifacts/15-13a-validate-prompt-p5-ciblee.md new file mode 100644 index 00000000..922d215e --- /dev/null +++ b/_bmad-output/implementation-artifacts/15-13a-validate-prompt-p5-ciblee.md @@ -0,0 +1,42 @@ +# Prompt — validation P5 ciblée de la spec, Story 15-13a + +*Versionné le 2026-10-09. Passe ciblée (CLAUDE.md § « La passe ciblée ») : une seule lentille (Haiku), contexte +frais, en lecture seule, braquée sur la seule remédiation P4 de la fiche 15-13a. Aucune règle métier n'a changé.* + +Worktree `/home/gcorbaz/devel/kesh-15-13`, branche `story/15-13-mariadb-et-sauvegarde`. **Objet** : +`git show 3ebedca9 -- _bmad-output/implementation-artifacts/15-13a-mariadb-non-publiee-mots-de-passe-obligatoires.md` +(lis ce diff ; ouvre la fiche autour des hunks). Rapports remédiés : `target/gate-logs/15-13a-p4-{R,F}.md`. +Choix C-15-13-22, C-15-13-23. + +⚠️ **La story n'est pas développée** : tu relis une SPÉCIFICATION. Un test, un texte, une mutation ou une +constante que la fiche prescrit et qui n'existe pas encore dans le code n'est PAS un défaut. Un défaut est une +contradiction, une prescription inexécutable, un fait cité faux, ou un site oublié. + +## Lentille unique — chasseur de régressions de la remédiation + +1. **Grep restreint du T9 (1)** `(compose|décrit les)[^.]{0,20}deux gestes` : rejoue-le + (`git grep -nE "…" -- . ':(exclude)_bmad-output'`) et compare au texte de la fiche (seuls `CHANGELOG.md:46` + et `admin-manual.tex:1793` attendus). Rejoue aussi le grep (1) entier du T9 : un site manque-t-il à + l'inventaire (48 lignes) ? +2. **`decode_utf8_lossy()` (C-15-13-22)** et le témoin `%FF` du test 7 : cohérent avec l'AC 5 (b) (le démarrage + n'échoue pas) ? La crate `url`/`percent-encoding` fournit-elle bien ce décodage (lis + `~/.cargo/registry/src/*/percent-encoding-*/src/lib.rs`) ? +3. **M43, M44** : chacune fait-elle rougir le test qu'elle vise, telle qu'écrite ? +4. **Recette `ALTER USER` (C-15-13-23)** : le mot de passe n'apparaît-il vraiment ni dans l'historique du shell + ni dans `ps` (variable lue au clavier, puis entrée standard) ? La recette est-elle exécutable telle quelle + (`docker compose exec -T`, guillemets) ? +5. **Recomptes** (11 AC, 11 tâches, 9 lignes de test, 24 mutations, 10 cas, 48 lignes d'inventaire, 5 angles + morts, 2 modules). + +## Ce que tu rends + +Findings numérotés (CRITICAL/HIGH/MEDIUM/LOW), `fichier:ligne`, **preuve** (sortie de `grep -nF` ; code relu cité), +correction proposée. ⛔ **Liste des axes exercés ET non exercés** — un « 0 » sans elle ne compte pas. Rapport +complet dans `target/gate-logs/15-13a-p5-ciblee.md` ; dernier message : le chemin, le bilan, une ligne par MEDIUM+. + +## Interdits + +⛔ N'écris aucun fichier hors `target/gate-logs/`. Aucune commande qui écrit dans le dépôt ou dans une base, ni qui +compile ou exécute des tests : `scripts/*` (dont `scripts/prepare-release.sh`), `make`, `latexmk`, `docker`, +`git commit`/`add`/`checkout`/`stash`, `sqlx`, `cargo`, `npm`, `npx`, `gh issue create`/`comment`/`edit`, SQL +d'écriture. Autorisés : lecture, `grep`, `sed -n`, `git log`/`show`/`diff`/`grep`, lecture de `~/.cargo/registry/src/`. diff --git a/_bmad-output/implementation-artifacts/15-13b-sauvegarde-avant-import-persistante.md b/_bmad-output/implementation-artifacts/15-13b-sauvegarde-avant-import-persistante.md new file mode 100644 index 00000000..860079f3 --- /dev/null +++ b/_bmad-output/implementation-artifacts/15-13b-sauvegarde-avant-import-persistante.md @@ -0,0 +1,794 @@ +# Story 15.13b : la sauvegarde prise avant un import survit au redémarrage, et son échec est annoncé tel quel + +Status: ready-for-dev + + + +**Issues** : **ferme #552 et #576**. La PR porte `closes #552` **et** `closes #576` (mots-clés dans le titre +ou le corps de la PR : le dépôt merge en squash) ; les commits intermédiaires portent `refs #552` / +`refs #576`. **`refs #558`** seulement (dossiers d'hôte configurables : cette story n'en ajoute aucun, +C-15-13-3). + +#576 a été absorbée en validation P1 de la fiche unique (C-15-13-9) : avec le défaut `/data/backup`, +l'échec d'écriture de la sauvegarde devient le cas **nominal** de toute instance lancée hors Docker (montage +E2E, développement), et le message affiché promettait alors une sauvegarde qui n'existe pas. C'est pourquoi +#552 et #576 ne se séparent pas : livrer le nouveau défaut sans le nouveau message rendrait le message faux +dans le cas courant. + +**Dépendances** : après la **15-11a** et la **15-11b** (mergées dans `de285ea8`) — la variable +`KESH_ADMIN_BACKUP_DIR` est déjà transmise par les deux compose en `${KESH_ADMIN_BACKUP_DIR:-}`, lue par +`config::env_nonempty`, et le test `configuration_transmise.rs` garde la forme de cette transmission et les +trois montages de `kesh-api`. **Indépendante de la 15-13a en code** : aucune des deux n'appelle ce que +l'autre ajoute. Elles touchent les **mêmes fichiers**, à des endroits distincts : `docker-compose.yml`, +`.env.example`, `crates/kesh-api/src/config.rs`, `crates/kesh-api/tests/configuration_transmise.rs`, +`docs/manual/fr/admin-manual.tex` (§ *Passer à la 0.13.0*), `DOCKER_START.md`, `CHANGELOG.md` `[0.13.0]` — +et les **PDF versionnés** `admin-manual.pdf` et `marketing-brochure.pdf`, que les deux régénèrent. +La seconde mergée rebase et **recompte les gestes** du paragraphe « Pour qui garde son fichier compose » +(AC 11 f) ; un conflit sur un PDF ne se rebase pas : on fusionne les `.tex`, puis on **régénère** les PDF +(`make fr`) et on rejoue les contrôles aplatis des **deux** fiches (R4-3 de la validation P4 de la 15-13a). **Ordre suggéré : après la 15-13a** (#551 est P2, sécurité ; #552 et #576 P3) ; l'ordre inverse +est possible sans autre effet que le recompte. Release visée : **v0.13.0**, la même que la 15-11a — la +section du manuel « Passer à la 0.13.0 » et l'entrée `[0.13.0]` du CHANGELOG sont **complétées**, pas +doublées. + +**Si la 15-13b est mergée seule** (la 15-13a non encore mergée au tag) : le CHANGELOG `[0.13.0]` porte les +entrées **Corrigé** #552 et #576 et l'entrée **Sécurité** « dossiers montés ignorés » (AC 13 b) ; à +`CHANGELOG.md:46`, la fin de phrase « — la sauvegarde pré-import reste dans `/tmp` » et le décompte des +gestes sont réécrits (AC 13 c) ; les autres phrases de `:46` restent vraies (elles ne deviennent fausses +qu'avec la 15-13a). Le manuel porte les parties sauvegarde ; le paragraphe « Pour qui garde son fichier +compose » compte **trois** gestes pour chaque compose (les deux de la 15-11a, plus le montage `./backup`). + +## Story + +En tant qu'**exploitant d'une installation Kesh** (NAS Synology ou serveur Docker), +je veux que **la sauvegarde de sécurité prise avant un import d'installation soit écrite sur un dossier qui +survit au conteneur, et que l'échec de cette sauvegarde soit annoncé comme tel**, +afin de **pouvoir revenir en arrière après un import raté — y compris après le redémarrage qui suit souvent +l'échec —, et de ne jamais croire à une sauvegarde qui n'existe pas**. + +## Le défaut, établi au sol le 2026-10-09 + +Faits revérifiés au code (`grep -nF`, worktree `kesh-15-13`, `HEAD` = `de285ea8`) : + +### #552 — la sauvegarde pré-import vit dans `/tmp` du conteneur + +| Site | Contenu | +|---|---| +| `crates/kesh-api/src/config.rs:946-947` | `let admin_backup_dir = env_nonempty("KESH_ADMIN_BACKUP_DIR").unwrap_or_else(\|\| "/tmp".to_string());` | +| `crates/kesh-api/src/config.rs:250-256` | doc-comment du champ : « défaut `/tmp`. Créé s'il n'existe pas. La purge est à la charge de l'opérateur. » | +| `crates/kesh-api/src/config.rs:939-945` | commentaire de lecture (« Défaut `/tmp` ») | +| `crates/kesh-api/src/routes/admin.rs:259-261` | `build_keshbackup` puis `write_pre_import_backup(&state.config.admin_backup_dir, …)` **sous le verrou**, avant le restore | +| `crates/kesh-api/src/routes/admin.rs:471-495` | `create_dir_all(dir)` puis `tokio::fs::write(path, bytes)` — **mode par défaut** (umask du processus : `0644` sous l'umask `022` de l'image) | +| `docker-compose.yml:121`, `docker-compose.prod.yml:151` | `KESH_ADMIN_BACKUP_DIR: ${KESH_ADMIN_BACKUP_DIR:-}` — transmise (15-11a), **aucun montage** ne lui correspond | +| `.env.example:179-182` | « Défaut /tmp (absente ou vide) — PERDU au redémarrage du conteneur ; monter un volume persistant. » puis `#KESH_ADMIN_BACKUP_DIR=/data/backup` — **aucun compose ne monte `/data/backup`** | +| `admin-manual.tex:757`, `:1664`, `:1699` | « défaut `/tmp` » ×3 | +| `CHANGELOG.md:46` | « la sauvegarde pré-import reste dans `/tmp` » | + +Le conteneur `kesh-api` tourne en **root** (le `Dockerfile` n'a pas d'instruction `USER`), son système de +fichiers est éphémère : la sauvegarde disparaît à toute **recréation** du conteneur — `docker compose up -d` +après une modification de `.env` ou du compose, mise à jour de l'image —, c'est-à-dire précisément au +moment où l'on en a besoin après un import raté. Le fichier est un **secret** (condensés des mots de passe, +jetons de session : `admin-manual.tex:1654`) : le rendre persistant sur l'hôte impose de ne pas le +laisser lisible par tous (AC 9, C-15-13-4). + +### #576 — un échec d'écriture de la sauvegarde est annoncé comme une sauvegarde réussie + +| Site | Contenu | +|---|---| +| `crates/kesh-i18n/locales/*/messages.ftl` (`fr-CH:1478`, `de-CH:1407`, `en-CH:1407`, `it-CH:1407`) | `error-admin-full-import-failed` : « L'état précédent a été préservé (**un backup automatique a été créé** avant l'opération) » | +| `crates/kesh-api/src/errors.rs:1819-1828` | `AppError::AdminFullImportFailed` → 500, `ADMIN_FULL_IMPORT_FAILED`, cette clé — repli Rust « Échec de l'import de l'installation. L'état précédent a été préservé. » | +| `crates/kesh-api/src/routes/admin.rs:473`, `:487` | l'échec de création du dossier ou d'écriture du fichier rend **cette même** variante | +| `crates/kesh-api/src/routes/admin.rs:236`, `:240`, `:246` ; `admin_backup/import.rs:204` (via `check_schema_compat`, appelé `admin.rs:172`) | échecs **antérieurs** à la sauvegarde, même variante, même message | +| `crates/kesh-api/src/admin_backup/export.rs:103-105` (`map_db` → `AdminFullExportFailed`), appelé par `build_keshbackup` (`admin.rs:259`) | échec de lecture de la base pendant la sauvegarde : message « l'**export** n'a pas pu être généré », alors que l'utilisateur importait | + +Le frontend affiche le `message` du corps pour un 500 (`AdminRestorePanel.svelte:82-84`) : aucun code client +ne dépend de `ADMIN_FULL_IMPORT_FAILED` (`grep -rn ADMIN_FULL_IMPORT frontend/src` → vide). Les échecs +**postérieurs** à l'écriture (`admin.rs:283` à `:462`, douze sites) disent vrai : la sauvegarde existe et la +transaction est annulée. + +## Acceptance Criteria + +*(Numérotation de la fiche unique 15-13 conservée ; les AC 1 à 6 sont dans la 15-13a, et les sous-points +des AC 10 à 14 qui portent sur MariaDB aussi.)* + +### Volet B — la sauvegarde pré-import (#552) + +7. **Le défaut du code devient `/data/backup`.** (C-15-13-3.) + (a) `config.rs:946-947` : `KESH_ADMIN_BACKUP_DIR` absente, vide ou blanche → `/data/backup` (au lieu de + `/tmp`), par une constante nommée **publique** (`pub const DEFAULT_ADMIN_BACKUP_DIR`, `kesh_api::config`) + — pas de littéral dupliqué dans le code. **La valeur est liée par deux tests** (R4-1 de la validation P4, + C-15-13-24) : le test 6 b la compare au **littéral** `"/data/backup"` (le seul littéral côté test, + voulu : c'est la valeur dont tout #552 dépend), et le test 3 exige qu'elle soit la **cible** d'une + entrée de `MONTAGES` — donc d'un montage des deux compose (contrôle `transmission`). Une constante + changée en `/data/backups` ou en `/tmp` rougit les deux ; comparée à elle-même seulement, elle + dériverait au vert, et la sauvegarde retournerait sans signal dans le conteneur. + (b) Doc-comment du champ (`config.rs:250-256`) et commentaire de lecture (`:939-945`) mis à jour : + défaut `/data/backup`, monté par les compose distribués sur `./backup` ; **hors Docker**, poser la + variable sur un dossier inscriptible (sinon l'import est refusé avant toute suppression, la création + du dossier échouant, avec le message de l'AC 15). Les recettes du dépôt qui lancent un backend hors + Docker posent la variable (AC 16). + (c) Les constructeurs de test (`config.rs:508`, `:1508`) **gardent** `/tmp` : ce sont des + configurations de test, pas le défaut. + +8. **Les deux compose distribués montent `./backup` sur `/data/backup`.** + (a) `docker-compose.yml` et `docker-compose.prod.yml` : une entrée de `volumes:` du service `kesh-api`, + **fixe** dans les deux (`- ./backup:/data/backup`), avec un commentaire : sauvegarde de sécurité prise + avant chaque import d'installation ; **secret** ; dans le périmètre de sauvegarde du dossier du compose + (Hyper Backup) ; à purger par l'exploitant. Aucune variable `KESH_*_HOST_DIR` neuve (C-15-13-3, #558). + (b) `KESH_ADMIN_BACKUP_DIR: ${KESH_ADMIN_BACKUP_DIR:-}` **inchangé** dans les deux compose — le défaut + reste celui du code (C75), les couples de la liste `AJOUTS` du test restent. + (c) `.env.example:179-182` : commentaire réécrit (défaut `/data/backup`, monté sur `./backup` par les + compose fournis ; une autre valeur doit être un chemin **monté**, sans quoi la sauvegarde retourne dans + le système de fichiers éphémère du conteneur ; hors Docker, un dossier inscriptible) ; la ligne + d'exemple reste `#KESH_ADMIN_BACKUP_DIR=/data/backup`. Les deux phrases qui **énumèrent** les montages + fixes de `docker-compose.prod.yml` — `.env.example:208-210` (bloc des chemins d'hôte) et `:241-242` + (`KESH_LOG_HOST_DIR`), « ses montages sont fixes — `./inbox`, `./documents`, `./log` » — deviennent + incomplètes avec le quatrième : elles gagnent « et `./backup` (sauvegarde pré-import, sans variable + d'hôte) » (F-P4-3 de la validation P4). Le paragraphe du mode `cargo run` natif du même + gabarit (`.env.example:77-82`, « (d) Dev `cargo run` natif (hors Docker) sur Linux non-root », qui + pose `KESH_PORT`) gagne la même mention : hors Docker, `KESH_ADMIN_BACKUP_DIR` sur un dossier + inscriptible (F-P3-5). + (d) `docker-compose.dev.yml` n'est **pas** modifié (pile de développement non distribuée ; le conteneur + y crée `/data/backup` dans son système de fichiers — comportement de développement assumé). + (e) **Les dossiers d'hôte montés par défaut restent hors du dépôt et du contexte de build.** + `docker compose up` se lance depuis un clone (`DOCKER_START.md:27`, `:37`) : `./backup` y est créé au + premier import, et un `git add -A` y versionnerait une sauvegarde complète — un **secret**. Le symptôme + vaut pour chaque source de montage par défaut, pas pour `./backup` seul : `./inbox` et `./documents` + (justificatifs) ne sont pas ignorés non plus (`git check-ignore` muet, seul `log/` l'est, `.gitignore:34`). + Donc, **pour chaque entrée de `MONTAGES`** (sources `./log`, `./inbox`, `./documents`, `./backup`) : + `.gitignore` porte la ligne **ancrée** `//` et `.dockerignore` la ligne `/` — soit, + ajoutées, `/inbox/`, `/documents/`, `/backup/` au premier, `log/`, `inbox/`, `documents/`, `backup/` au + second (C-15-13-14, rectifié par C-15-13-20 ; C-15-13-19). **Le motif non ancré est refusé** (R3-1) : `backup/` dans `.gitignore` ignore aussi + `frontend/src/routes/(app)/admin/backup/`, **versionné** (`+page.svelte`, `+page.ts` — l'écran même de + la sauvegarde) — tout fichier neuf de cette route serait ignoré **en silence** (mesuré en validation P3 : + `git -c core.excludesFile= check-ignore -v --no-index "frontend/src/routes/(app)/admin/backup/nouveau.ts"` + → ignoré ; avec `/backup/` → non ignoré). **Une seule tolérance, nommée** : la ligne `log/` existante + (`.gitignore:34`) est gardée telle quelle — `git ls-files | grep -E '(^|/)log/'` → 0 (aucun dossier + `log` versionné nulle part dans le dépôt), si bien qu'elle ne masque rien aujourd'hui, et l'ancrer + ferait réapparaître dans `git status` les `log/` que des outils de dev créeraient sous les crates ; un + `log/` versionné ajouté demain serait masqué — risque écrit, accepté. `.dockerignore` n'est pas + concerné par l'ancrage : ses motifs sont relatifs à la racine du contexte (`backup/` ≡ `/backup`). + `git ls-files` ne rend aucun fichier sous ces quatre dossiers **à la racine** (rejoué en validation P4 + au `HEAD` `c702b7d5` : `git ls-files | grep -E '(^|/)(log|inbox|documents|backup)/'` ne rend que + `frontend/src/routes/(app)/admin/backup/+page.svelte` et `+page.ts`, hors racine) : aucune ligne ancrée + ne masque de contenu versionné. Garde : test 19. + +9. **La sauvegarde est créée en mode `0600`, et jamais par-dessus un fichier existant.** (C-15-13-4, + C-15-13-8.) + (a) `write_pre_import_backup` (`routes/admin.rs:471`) garde le choix du nom (inchangé) et délègue + l'écriture à une fonction factorisée **sur un chemin donné**, `write_backup_file(path: &Path, bytes: + &[u8]) -> Result<(), AppError>` (privée au module, appelée par les tests 11 et 12). **Écriture par + fichier temporaire, puis renommage** (F-P4-6 de la validation P4, décision de l'orchestrateur, + C-15-13-21) : elle crée `.partial` — **même dossier**, donc même système de fichiers — par + `tokio::fs::OpenOptions` avec `create_new(true)` et, sous `#[cfg(unix)]`, `mode(0o600)` ; écrit les + octets, `sync_all` ; puis **renomme** `.partial` en `` (`tokio::fs::rename`, atomique sur un + même système de fichiers). Un arrêt pendant l'écriture — client déconnecté (hyper abandonne le futur du + handler à un `.await`), OOM, `docker stop` — ne laisse donc qu'un `.partial`, **jamais un fichier nommé + comme une sauvegarde**. **Refus d'écraser** : `rename` remplace une cible existante sur Unix ; la + fonction vérifie donc, avant le renommage, que `` n'existe pas (`tokio::fs::try_exists`) et, sinon, + échoue (`.partial` supprimé au mieux). La fenêtre entre la vérification et le renommage n'est pas + fermée — le nom est unique par construction (horodatage, pid, compteur) et un second écrivain du même nom + serait déjà un défaut : angle mort écrit. Le journal `info` « backup pré-import écrit » suit le renommage + réussi. Si `write_all`, `sync_all` ou `rename` échoue, le `.partial` est supprimé au mieux + (`remove_file`, échec journalisé en `warn!` sans masquer l'erreur d'origine) ; si `remove_file` échoue à + son tour, le `warn!` **nomme le chemin** du `.partial` et dit qu'il n'est pas une sauvegarde valide. + Dans tous ces cas, le message de l'AC 15 c (« aucune sauvegarde n'a été créée ») reste **vrai** : aucun + fichier ne porte le nom d'une sauvegarde. Le doc-comment de `write_pre_import_backup` + (`routes/admin.rs:467-470`) dit le mode `0600`, l'écriture par `.partial` et renommage, le refus + d'écraser et la variante d'erreur. + (b) Le dossier, quand Kesh le crée, l'est en `0o700` (`tokio::fs::DirBuilder`, `recursive(true)`, + `mode(0o700)` sous `#[cfg(unix)]`) ; un dossier **existant** (le montage de l'hôte) n'est pas modifié. + (c) Une erreur rend `AppError::AdminPreImportBackupFailed` (AC 15) avec le détail actuel + (« création répertoire backup '…' : … », « écriture backup '…' : … ») : aucun import sans sauvegarde + réussie (DC5 inchangé). + (d) Le commentaire `routes/admin.rs:475-477` (« le backup pré-import est pris avant le verrou FOR + UPDATE ») est **faux** — il est pris sous le verrou (`:226-261`) — et corrigé au passage. + +### Volet C — le garde-fou et la documentation (parties sauvegarde) + +10. **`configuration_transmise.rs` garde ces décisions.** *(Les sous-points (a), (b) et la partie MariaDB + de (d) et (e) sont dans la 15-13a.)* + (c) **Montage de la sauvegarde** : `MONTAGES` gagne l'entrée `("/data/backup", "./backup", "./backup")` ; + le contrôle de `docker-compose.yml` exige l'**égalité** quand la source attendue ne commence pas par + `${` (aujourd'hui `starts_with` : `./backups` passerait) — les trois entrées existantes gardent le + préfixe `${KESH_…_HOST_DIR:-`. Le message de refus pour `docker-compose.prod.yml` reste celui de #558. + **La comparaison est extraite en fonction pure** (F-P4-2 de la validation P4, C-15-13-24) : + `source_conforme(compose: Compose, source: &str, attendue_y: &str, exacte_p: &str) -> bool` — pour `Y`, + `starts_with(attendue_y)` si `attendue_y` commence par `${`, égalité sinon ; pour `P`, égalité —, que la + boucle de `controle_transmission` (`configuration_transmise.rs:509-519`) appelle. Sans elle, la règle + d'égalité vit dans une boucle que l'auto-test (S) n'atteint pas, et rien ne la garde : les vrais + compose portent `./backup`, que `starts_with("./backup")` accepte aussi. + **Lien avec le défaut du code** (R4-1, C-15-13-24) : le test `transmission` exige en outre qu'une + entrée de `MONTAGES` ait pour cible `kesh_api::config::DEFAULT_ADMIN_BACKUP_DIR` (AC 7 a). + (d) **Auto-test (S)** : `s_sources_de_montage` exerce `source_conforme` — pour `Y` avec + `attendue_y = "./backup"` : `./backup` **accepté**, `./backups` (préfixe) **refusé**, + `${X:-./backup}` refusé ; pour `Y` avec `attendue_y = "${KESH_INBOX_HOST_DIR:-"` : + `${KESH_INBOX_HOST_DIR:-./inbox}` accepté ; pour `P` : `./backup` accepté, `./backups` refusé. Le cas + `./backups` en `Y` est celui que **M14** (retour à `starts_with` pour toutes les entrées) fait passer : + il rougit sous M14, ce que rien ne faisait avant la validation P4. + (e) Les textes qui comptent « trois » montages deviennent faux avec le quatrième : doc de `MONTAGES` + (« Les trois montages », `:196`), doc de `sources_montages` (« des trois montages », `:378` ; « l'une + des trois », `:379`) — `grep -n "trois" configuration_transmise.rs` rend exactement ces trois lignes au + `HEAD` `de285ea8`. + +11. **Le manuel d'administration dit vrai, et le PDF aussi** (parties sauvegarde). `docs/manual/fr/admin-manual.tex` : + (d) **`sec:env-vars`** : ligne `KESH_ADMIN_BACKUP_DIR` (`:757`) — défaut `/data/backup` (monté sur + `./backup`) ; **hors Docker : poser la variable sur un dossier inscriptible** (F-P3-5, comme les lignes + voisines `KESH_STATIC_DIR` et `KESH_LOCALES_DIR`, `:703-704`). Le paragraphe des montages d'hôte + (`:807-822`) dit que `./backup` est monté par les deux compose, **sans** variable d'hôte — dont la + phrase `:812` (« montages sont fixes — `./inbox`, `./documents`, `./log` »), qui énumère les montages + de `docker-compose.prod.yml` et gagne `./backup` (F-P4-3) ; le tableau `:819-821` (variables d'hôte) + n'a pas de ligne à gagner, `./backup` n'ayant pas de variable. **Les dix + tableaux de `sec:env-vars` restent sans `Overfull \hbox`** (acquis de la 15-11a). Le paragraphe du mode + `cargo run` natif (`:194`, « Mode `cargo run` natif (hors Docker) sur Linux non-root », qui pose + `KESH_PORT`) gagne une incise : hors Docker, `KESH_ADMIN_BACKUP_DIR` sur un dossier inscriptible, sans + quoi tout import est refusé (AC 15). + (e) **`sec:backup-ui-keshbackup`** (`:1664`, `:1667-1672`, `:1699`) : la sauvegarde de sécurité est + dans le dossier `backup/` du répertoire du compose (`/volume1/docker/kesh/backup` sur Synology), + nommée `kesh-pre-import--….keshbackup`, **créée en mode `0600`, propriétaire `root`** (le + conteneur tourne en root) — sur Synology, les ACL du dossier partagé peuvent s'y ajouter : limite non + mesurée, écrite comme telle ; c'est un **secret** ; purge à la charge de l'exploitant. **Restaurer + depuis elle** (C-15-13-8) : l'import se fait par le navigateur, et ni File Station, ni un partage SMB, + ni un `scp` sans `sudo` ne lisent un fichier `root` en `0600` ; le manuel donne donc le geste de + rapatriement, en SSH : + `sudo cp backup/kesh-pre-import-<…>.keshbackup /volume1//`, puis + `sudo chown /volume1//kesh-pre-import-<…>.keshbackup`, l'import par l'écran, + puis **la suppression de la copie** (secret) — geste **rejoué au T0** sur un conteneur jetable. La + liste « L'import refuse le fichier et préserve l'installation si » (titre `:1667`, liste `:1668-1672` — + **pas** `:1676-1690`, qui est la liste « Trois propriétés » des reprises de données) gagne l'entrée de + l'AC 15 : la sauvegarde de sécurité ne peut pas être écrite (dossier non inscriptible, disque plein) + — le message le dit, aucune sauvegarde n'est créée, rien n'est supprimé. Le défaut `/tmp` disparaît + de `:1664` et de `:1699`. **Fichier `.partial`** (AC 9 a, C-15-13-21) : le manuel dit qu'un + `kesh-pre-import-….keshbackup.partial` est une écriture interrompue, **pas** une sauvegarde, et qu'il + peut être supprimé. **Forme du rapatriement** (F-P4-8) : le bloc `sudo cp` / `sudo chown` est + introduit par « depuis le répertoire du compose » (le chemin `backup/…` est relatif) et posé dans un + `lstlisting` ordinaire (76 caractères), **pas** dans un `keshwarning` (70) : la ligne + `sudo chown /volume1//kesh-pre-import-<…>.keshbackup` en mesure 74 ; si la mise + en page l'exige ailleurs, elle est coupée par `\`. **Ouverture de la section** (`:1643`, « sans accès + SSH ni ligne de commande ») : vraie pour l'export et l'import par l'écran, mais la section reçoit + désormais un geste en SSH ; une phrase la précise — la sauvegarde de sécurité **pré-import** fait + exception, son rapatriement demande un accès SSH (voir plus bas) — (F-P4-7). Le tableau `:1712` + (« restauration self-service sans SSH ») et `website/roadmap.html:231` (« SSH-free migration and + restore ») parlent de l'export/import par l'écran et restent vrais : assumés, à l'inventaire. + (f) **`sec:maj-0-13`** (`:1757-1841`) — le paragraphe **sauvegarde** ; le paragraphe MariaDB est dans + la 15-13a. Re-télécharger le compose suffit pour le montage. **Pour qui garde son compose — le + paragraphe `:1793`** (F-P3-1, C-15-13-18) : le geste « ajouter le montage `./backup` » (sous `volumes:` de + `kesh-api`, **pas** sous `environment:` : la phrase d'ouverture « Sous `environment:` du service + `kesh-api` : » devient fausse et est réécrite) y est écrit, pour les deux compose, avec sa ligne de + contrôle sur la **cible du montage**, pas sur le chemin : `docker compose config | grep -c 'target: /data/backup'` + → 1 (graphie de la forme longue relevée au T0 ; si elle diffère, le motif suit la mesure, écrite au Dev + Agent Record). Le motif `/data/backup` seul ne discrimine pas : `docker compose config` imprime aussi + l'environnement, et un `.env` qui a décommenté `#KESH_ADMIN_BACKUP_DIR=/data/backup` (`.env.example:182` + — le public même de ce geste) fait sortir `KESH_ADMIN_BACKUP_DIR: /data/backup` **sans** montage + (R4-2/F-P4-1 de la validation P4). Le T0 vérifie le contrôle **rouge** (0) sur un compose sans le + montage avec cette variable posée. Le titre « Pour qui garde son fichier compose : **deux + gestes**. » perd son décompte global ; le paragraphe donne le décompte **par fichier**, recompté à + l'écriture sur l'état de la branche : avec la 15-13b seule, **trois** gestes pour chacun des deux + compose (les deux de la 15-11a, plus le montage) ; si la 15-13a est déjà mergée, **cinq** pour + `docker-compose.yml` et **trois** pour `docker-compose.prod.yml`. **Effets sans refus** (`:1773`) — + `KESH_ADMIN_BACKUP_DIR (un chemin non monté fait écrire dans le conteneur)` reste vrai ; y ajouter, + **conditionné au compose** (F-P3-1) : **avec le compose de la 0.13.0**, sans la ligne, la sauvegarde + va désormais dans `./backup` ; **avec un compose gardé** sans le montage, elle va dans `/data/backup` + **du conteneur** — éphémère, **comme avant** (le manuel n'écrit pas `/tmp` à cet endroit : la cellule + `:1773` commence par `KESH_ADMIN_BACKUP_DIR`, et un `/tmp` à moins de 90 caractères rougirait le contrôle + négatif `BACKUP_DIR.{0,90}/tmp` de l'AC 11 l — R4-7 ; l'ancien `/tmp` n'est nommé qu'au CHANGELOG, + AC 13 c). Le manuel fait partie du corpus du contrôle (F) de + `configuration_transmise.rs` (`:899-920`) : ne nommer **aucun** jeton `KESH_…` inexistant, pas même pour + dire qu'il n'existe pas (« aucune variable `KESH_BACKUP_…` » rougirait en fantôme). + (i) **Stratégie recommandée** (`:1417-1425`) : le dossier `./backup` est dans le périmètre du dossier + du compose ; il contient des secrets. + (k) Toute ligne de commande neuve dans un encadré `keshwarning` tient en **70 caractères** au plus, en + `keshnote`/`lstlisting` ordinaire en **76** (mesure de la 15-11a). + (l) **PDF régénéré** (`make fr` dans `docs/manual/`), contrôlé **aplati** + (`pdftotext admin-manual.pdf - | tr '\n' ' ' | tr -s ' '`, ligatures normalisées comme à la 15-11a). + Contrôles **discriminants** — chacun rouge sur le PDF d'avant (relevé au T0) : **positifs** — + `/data/backup` ; `sudo cp backup/` et `kesh-pre-import` (rapatriement — `sudo chown` figure déjà deux + fois au PDF d'avant et ne discrimine pas) ; tous vérifiés **absents** du PDF aplati à `468ce610` + (`target/gate-logs/15-13-p1-R-admin-plat.txt`) en remédiation P1 ; `keshbackup.partial` et + `target: /data/backup` (vérifiés absents, en remédiation P4, de + `target/gate-logs/15-13b-p4-F-admin-manual-plat.txt` : `grep -c partial` → 0) ; **négatifs** — + `grep -E 'BACKUP_DIR.{0,90}/tmp'` vide (la cellule du tableau, `:757`, que `défaut /tmp` ne voit pas) ; + `défaut /tmp` absent ; `deux gestes` absent (présent **une** fois au PDF d'avant, relevé en validation + P3 — discriminant). Au `.log`, aucun `Overfull \hbox` **nouveau** (comparé au `.log` d'avant, relevé au + T0). + (n) **Brochure** (`docs/manual/fr/marketing-brochure.tex:398`, « Export / import complet + d'installation (`.keshbackup`) pour migration ou restauration **sans accès SSH** ») **relue** au T5 + (F-P3-11) : la promesse reste vraie pour un `.keshbackup` exporté par le navigateur ; la sauvegarde de + sécurité **pré-import**, elle, ne se restaure qu'après un rapatriement en SSH (C-15-13-8). Laisser la + ligne telle quelle ou la nuancer — le choix et sa raison au Dev Agent Record ; si elle change, le PDF + de la brochure est régénéré par le même `make fr`. + +12. **`DOCKER_START.md`** (partie sauvegarde). + (a') Une ligne sur le dossier `./backup` : sauvegarde de sécurité prise avant un import, **secret**, + ignorée de git (AC 8 e), à purger. *(Le reste de l'AC 12 — prérequis, étape `.env`, accès à la base, + volume, « Base de données ne s'initialise pas », retrait d'`init-demo.sh` — est dans la 15-13a.)* + +13. **CHANGELOG `[0.13.0]`** (parties sauvegarde). + (b) **Corrigé** — entrée #552 : la sauvegarde prise avant un import va dans `./backup`, survit au + conteneur, créée en mode `0600` ; la restaurer demande de la rapatrier (manuel) ; hors Docker, + `KESH_ADMIN_BACKUP_DIR` à poser. Entrée #576 : un import dont la sauvegarde n'a pas pu être écrite + le dit, au lieu d'annoncer une sauvegarde qui n'existe pas. Rubrique **Sécurité** : les dossiers montés + par défaut (`backup`, `inbox`, `documents`, `log`) sont ignorés de git et du contexte de build (AC 8 e). + *(La rubrique **Retiré** `init-demo.sh` : 15-13a.)* + (c) **Propagation** : `CHANGELOG.md:46` porte **cinq** phrases que la 15-13 rend fausses (F-P3-1) ; + **deux** relèvent de la 15-13b, réécrites : « — la sauvegarde pré-import reste dans `/tmp` » (avec le + compose de la 0.13.0, elle va dans `./backup` ; avec un compose gardé sans le montage, dans + `/data/backup` du conteneur, éphémère) ; « le manuel d'administration décrit les **deux gestes** » (le + décompte par fichier de l'AC 11 f — trois et trois, ou cinq et trois si la 15-13a est mergée — ou un + renvoi sans nombre). Les trois autres (refus de Compose, défaut sans avertissement des mots de passe, + `.env` copié du gabarit) sont de la 15-13a. + **Et `CHANGELOG.md:44`** (entrée #550 de `[0.13.0]`, F-P4-3 de la validation P4) : « **Inchangé** : avec + `docker-compose.prod.yml`, les montages restent `./documents`, `./inbox`, `./log` » devient faux dans la + même version — la phrase gagne « ; la 0.13.0 y ajoute `./backup` (sauvegarde pré-import, #552) ». + +14. **Inventaire des sites non résolus tenu** (§ *Inventaire* des Dev Notes) : à la fin du développement, + chaque site de l'inventaire est soit résolu par un AC, soit écrit comme angle mort, et les greps de + contrôle (T9) ne trouvent **aucun** site hors de l'inventaire. + +### Volet D — le message d'un import refusé avant la sauvegarde (#576) et les recettes hors Docker + +15. **Un import qui échoue avant que la sauvegarde soit sur disque le dit, sans promettre de copie.** + (C-15-13-9.) + (a) Variante neuve `AppError::AdminPreImportBackupFailed(String)` (`errors.rs`) : HTTP 500, code + `ADMIN_PRE_IMPORT_BACKUP_FAILED`, clé `error-admin-pre-import-backup-failed`, détail journalisé et + jamais exposé (comme `AdminFullImportFailed`). Elle couvre **tout** échec antérieur à l'écriture + réussie du fichier : `routes/admin.rs:236`, `:240`, `:246` (transaction, verrou), `:473`, `:487` + (dossier, fichier — et `write_backup_file` de l'AC 9). Le doc-comment de `AdminFullImportFailed` + (`errors.rs:448-452`, « backup pré-import impossible ») est corrigé : elle ne couvre plus que les + échecs **postérieurs** à la sauvegarde (`admin.rs:283` à `:462`, douze sites, inchangés). + (b) Les deux sites qui naissent **hors** du module — `check_schema_compat` (`admin_backup/import.rs:204`, + appelé `admin.rs:172`) et `build_keshbackup` (`map_db` → `AdminFullExportFailed`, + `admin_backup/export.rs:103-105`, appelé `admin.rs:259`) — sont convertis **à l'appel**, dans + `routes/admin.rs`, par une fonction pure `avant_sauvegarde(AppError) -> AppError` qui change + `AdminFullImportFailed` et `AdminFullExportFailed` en `AdminPreImportBackupFailed` et rend toute autre + variante telle quelle (`ImportSchemaMismatch` reste un 400). `admin_backup` n'est pas modifié. + (c) Texte, **quatre locales** (`fr-CH`, `de-CH`, `en-CH`, `it-CH`) et **repli Rust** de `errors.rs` + (rendu quand aucun catalogue n'est chargé) : l'import a échoué **avant** la sauvegarde de sécurité ou + pendant son écriture ; **aucune sauvegarde n'a été créée** ; **rien n'a été supprimé** ; vérifier les + journaux du serveur, puis réessayer — **sans orienter vers une seule cause** (F-P4-5 de la validation P4, + C-15-13-25) : sur les cinq sites antérieurs à l'écriture, trois sont des pannes de **base** (transaction, + verrou, lecture du schéma ou des données), deux du **dossier** ; le texte nomme donc les deux pistes, à + égalité (« dossier de sauvegarde inscriptible, base de données accessible »), ou n'en nomme aucune. La + **négation** est la + forme attendue (« aucune sauvegarde n'a été créée », « Es wurde keine Sicherung erstellt », « No backup + was created », « Non è stato creato alcun backup ») : le test 16 n'interdit pas les mots « créé » / + « erstellt » / « created » / « creato », il interdit la **promesse** de l'ancien texte — la phrase + intérieure de sa parenthèse, **sans** les parenthèses, par locale (liste au test 16) : un texte neuf qui + reprendrait la promesse sans ses parenthèses rougit aussi (R3-9). Le texte de + `error-admin-full-import-failed` (après la sauvegarde) **ne change pas** : il dit vrai dans tous les + cas qu'il couvre désormais. Le repli Rust d'`AdminFullImportFailed` gagne « une sauvegarde de + sécurité a été écrite » pour que les deux replis se distinguent. **La négation est exigée, pas + seulement l'absence de la promesse** (F-P4-4) : le test 16 vérifie que le texte de chaque locale + **contient** sa négation (les quatre formulations ci-dessus, à la lettre) — un texte neuf « Échec de + l'import. » ne dirait plus qu'aucune copie n'existe, ce qui est l'objet de #576 ; le test 15 vérifie de + même que le repli Rust contient « aucune sauvegarde n'a été créée ». + (d) Frontend **non touché** : un 500 affiche le `message` du corps (`AdminRestorePanel.svelte:82-84`), + aucun code client ne lit `ADMIN_FULL_IMPORT_FAILED`. Le test de parité des catalogues + (`kesh-i18n/src/loader.rs:729-800`) reste vert sans entrée neuve dans `dette-parite-connue.txt`. + (e) Manuel : la liste des refus de `sec:backup-ui-keshbackup` (AC 11 e). + +16. **Les recettes du dépôt qui lancent un backend hors Docker posent `KESH_ADMIN_BACKUP_DIR`.** + Avec le défaut `/data/backup`, une instance lancée par `cargo run` sous un utilisateur ordinaire + refuse tout import (AC 15). Ce site est **invisible** du grep du T9 : c'est l'**absence** de la + variable qui le crée (§ *Inventorier les sites NON RÉSOLUS* du CLAUDE.md). **Portée exacte** : aucune + spec Playwright n'importe d'installation (`grep -rliE "keshbackup|full-import|admin/restore" + frontend/tests` → vide, rejoué en remédiation P2) ; la suite E2E ne + rencontre donc jamais le défaut. Ces recettes servent à qui lance, sur le backend qu'elles démarrent, + un import **à la main** par le navigateur (recette manuelle de Guy, développement) — c'est pour lui que + la variable est posée, pas pour la suite. Recettes recensées par **deux** greps (F-P3-5 : le premier, + par la formulation, ne voyait pas les modes `cargo run` documentés pour l'exploitant) : + `grep -rn "cargo run -p kesh-api" --exclude-dir={target,node_modules,.git,_bmad-output,_bmad,.claude,.svelte-kit} .` + puis `grep -rn "cargo run" …` (mêmes exclusions), et tri : + (a) **`CLAUDE.md`** § *E2E (Playwright)*, montage local (`:174-182`) : **deux** modifications, et + aucune autre (fichier d'instructions) — l'ajout de `KESH_ADMIN_BACKUP_DIR=target/kesh-backup` à la + ligne de commande de la recette, et, à `:174` (« Le montage qui marche, vérifié le 2026-08-04 »), + la mention que la commande a changé depuis : « vérifié le 2026-08-04 ; `KESH_ADMIN_BACKUP_DIR` ajoutée + le (15-13b), recette rejouée au T10 » — une date de vérification ne reste pas accolée à une + commande qui n'est plus celle qui a tourné. Le Dev Agent Record dit que c'est la recette **modifiée** + qui a tourné au T10. Cette recette a une copie **hors dépôt**, dans la mémoire de travail de + l'orchestrateur (F-P4-8 a) : la story ne la touche pas ; l'orchestrateur réalignera sa mémoire ; + (b) **`docs/testing.md`** : recette minimale (`:161-173`, qui crée déjà `/tmp/kesh-e2e/{inbox,documents}` + → ajouter `backup` au `mkdir -p` et `KESH_ADMIN_BACKUP_DIR=/tmp/kesh-e2e/backup`), recettes de + récupération de mot de passe (`:278-286`) et d'envoi d'e-mails (`:296-304`) — **toutes trois avec la même + valeur absolue** `KESH_ADMIN_BACKUP_DIR=/tmp/kesh-e2e/backup` (R4-8 de la validation P4) : la recette de + `:296-304` se lance depuis un autre répertoire (`KESH_STATIC_DIR=../frontend/build`), où un chemin + relatif pointerait ailleurs ; Kesh crée le dossier s'il manque (AC 9 b) ; + (b') **modes `cargo run` documentés pour l'exploitant** (F-P3-5) : `admin-manual.tex:194` (AC 11 d), + `.env.example:77-82` (AC 8 c), `README.md:90` (« en mode `cargo run` natif sur Linux non-root, lancer + le backend avec `KESH_PORT` … ») — chacun gagne la mention de `KESH_ADMIN_BACKUP_DIR` ; + (c) **assumés**, avec leur raison : `frontend/playwright.config.ts:18` (commentaire qui renvoie à + `docs/testing.md`) ; `frontend/DEBUGGING-KF007.md:17` (note de débogage historique, KF-007 close) ; + `docs/known-failures.md:119` (archivé, ne se modifie plus) ; `crates/kesh-db/README.md:57` et + `docs/testing.md:32` (citent `cargo run` sans le lancer) ; + `frontend/tests/e2e/password-recovery.spec.ts:16` (commentaire de recette **partielle** — la + `DATABASE_URL` y est élidée en `"mysql://..."` — dont la forme complète est `docs/testing.md:278-286`, + résolue en (b) ; le modifier toucherait le frontend, que l'AC 15 d laisse intact) ; + `frontend/tests/e2e/global-setup.ts:34` (message d'erreur « ex: cargo run -p kesh-api » : un + exemple, pas une recette) ; et ce que rend le second grep sans être une recette de backend : + `DOCKER_START.md:131`, `.env.example:32`, `:186`, `:249`, `docker-compose.dev.yml:2`, + `frontend/vite.config.ts:20`, `admin-manual.tex:668`, `:1315`, `docs/testing.md:61`, + `CHANGELOG.md:655` (mentions du mode, sans recette de lancement) ; `scripts/prepare-release.sh:109`, + `crates/kesh-db/src/post_restore.rs:1168`, `crates/kesh-db/tests/test_schema_guard.rs:548`, + `CLAUDE.md:798`, `docs/kesh-specifications.txt:1110` (autres binaires — exemple `kesh-db`, CLI + `kesh-seed` — ou prose). **`scripts/`** : aucun script ne lance de backend (`grep -rln "cargo run\|kesh-api" + scripts/` → `prepare-release.sh`, qui lance un exemple `kesh-db`, et `audit-tenant-scoping.py`, qui + n'en lance aucun). **CI** : `release.yml:91-101` lance l'image publiée (conteneur root, `/data/backup` + inscriptible) sans import ; `ci.yml` ne lance aucun backend. + +## Tasks / Subtasks + +- [ ] **T0 — Mesures avant d'écrire** (AC 11 e, 11 f, 11 l) + - [ ] Rapatriement de la sauvegarde (AC 11 e) rejoué sur un **conteneur jetable** : un conteneur root + écrit un fichier `0600` dans un dossier monté de l'hôte ; vérifier qu'il est illisible de + l'utilisateur, que `sudo cp` + `sudo chown` le rendent lisible, puis supprimer copie et dossier. + - [ ] Graphie de `docker compose config` pour un montage (forme longue `target: /data/backup`), pour la + ligne de contrôle de l'AC 11 f ; puis le contrôle **rouge** : sur une copie du compose **sans** le + montage, avec `KESH_ADMIN_BACKUP_DIR=/data/backup` posé dans l'environnement, + `docker compose config | grep -c 'target: /data/backup'` → **0** (alors que `grep -c '/data/backup'` + rend 1 : la ligne d'environnement) — R4-2/F-P4-1 de la validation P4. + - [ ] `make fr` sur l'état d'avant : garder le `.log` (référence des `Overfull`) et le PDF aplati + (référence des contrôles de l'AC 11 l, chacun **rouge** dessus). +- [ ] **T1 — Compose, gabarit, fichiers d'exclusion** (AC 8) + - [ ] `docker-compose.yml` et `docker-compose.prod.yml` : montage `./backup` + commentaire (rien d'autre + dans `docker-compose.prod.yml`). + - [ ] `.gitignore` (`/inbox/`, `/documents/`, `/backup/` — **ancrés**) et `.dockerignore` (`log/`, + `inbox/`, `documents/`, `backup/`) — AC 8 e ; `git ls-files` sous ces dossiers à la racine → vide ; + `git check-ignore -v --no-index "frontend/src/routes/(app)/admin/backup/+page.svelte"` → **non** + ignoré (sans `--no-index`, git ne rapporte jamais un fichier suivi : le contrôle ne pourrait pas + rougir — R4-3 de la validation P4 ; avec `backup/` non ancré, la même commande le rend ignoré). + - [ ] `.env.example` : commentaire `KESH_ADMIN_BACKUP_DIR` (`:179-182`), paragraphe (d) du mode + `cargo run` natif (`:77-82`), et les deux énumérations des montages fixes (`:208-210`, `:241-242`, + AC 8 c). +- [ ] **T2 — Code** (AC 7, 9, 15) + - [ ] `config.rs` : `pub const DEFAULT_ADMIN_BACKUP_DIR`, doc-comments. + - [ ] `routes/admin.rs` : `write_backup_file` (`.partial` en `create_new` + `0o600`, `sync_all`, refus si + le nom final existe, `rename` ; `.partial` supprimé au mieux en cas d'échec) ; dossier créé en `0o700` ; commentaire `:475-477` corrigé ; sites + antérieurs à la sauvegarde sur `AdminPreImportBackupFailed` ; `avant_sauvegarde` aux appels de + `check_schema_compat` et `build_keshbackup`. + - [ ] `errors.rs` : variante `AdminPreImportBackupFailed`, son bras de réponse et son repli ; doc et + repli d'`AdminFullImportFailed` (AC 15 a, c). + - [ ] `crates/kesh-i18n/locales/{fr-CH,de-CH,en-CH,it-CH}/messages.ftl` : clé + `error-admin-pre-import-backup-failed`, à côté de `error-admin-full-import-failed`. +- [ ] **T3 — Tests Rust** (AC 7, 8 e, 9, 10 c-e, 15) — voir § *Tests et mutations*. Dans + `configuration_transmise.rs` : quatrième entrée de `MONTAGES`, fonction pure `source_conforme` (égalité + exacte pour une source sans `${`), lien `DEFAULT_ADMIN_BACKUP_DIR` ↔ cible de `MONTAGES`, textes + « trois » mis à jour (AC 10 c, e) ; test 19 (AC 8 e). +- [ ] **T5 — Manuel et brochure** (AC 11) : sites (d) (ligne `KESH_ADMIN_BACKUP_DIR`, montages, `:194`), + (e), (f) (paragraphe sauvegarde, `:1773`, `:1793`), (i), puis relecture de la brochure (n) ; + `make fr` (trois PDF), contrôles (k)–(l). +- [ ] **T6 — `DOCKER_START.md`, recettes, CHANGELOG** (AC 12 a', 13, 16) — `CLAUDE.md` : la ligne de + commande de la recette et la mention de date de `:174` (AC 16 a), rien d'autre ; CHANGELOG `:44` + (montages de `docker-compose.prod.yml`) et `:46` (AC 13 c). +- [ ] **T8 — Mutations** : chacune appliquée, test rouge relevé, fichier restauré **et touché** + (`touch`, mémoire « mutation restaurée, binaire périmé ») ; tableau au Dev Agent Record. +- [ ] **T9 — Propagation et inventaire** (AC 14) — exclusions communes + `--exclude-dir={target,node_modules,.git,_bmad-output,_bmad,.claude,.svelte-kit}` : + (1) `grep -rnIE "BACKUP_DIR|pré-import|pre-import|admin-full-import-failed|AdminFullImportFailed|/tmp|(compose|décrit les)[^.]{0,20}deux gestes|backup/" …` + — chaque résultat est dans l'inventaire (résolu ou angle mort), sinon il y entre (le jeton `/tmp` + est large : trier les seuls sites qui parlent de la sauvegarde, les autres en bloc par fichier). Le + jeton des gestes est **restreint** comme dans la 15-13a (R4-4 de la validation P4 : `deux gestes` + seul rendait six homonymes sans rapport — `CLAUDE.md:760`, `routes/users.rs:334`, + `tests/users_e2e.rs:560`, `invoice_settlements.rs:395`, `user-manual.tex:1309`, + `invoice-unvalidate.spec.ts:67`) ; la forme restreinte ne rend que `CHANGELOG.md:46` et + `admin-manual.tex:1793` ; + (2) les deux greps de l'AC 16 (`cargo run -p kesh-api`, puis `cargo run`) ; + (3) `git ls-files | grep -E '(^|/)(log|inbox|documents|backup)/'` → seuls des fichiers hors de la + racine (aujourd'hui : `frontend/src/routes/(app)/admin/backup/`), qu'aucune ligne ancrée ne masque ; + (4) **par la valeur des montages** (F-P4-3 de la validation P4 : les greps (1) à (3) cherchent le + sujet, et ne voient pas une phrase qui **énumère** les montages sans nommer la sauvegarde) : + `grep -rnIE '\./(inbox|documents|log)\b' …` — tout site qui énumère les montages de + `docker-compose.prod.yml` (ou de `kesh-api`) en entier gagne `./backup`, les autres sont triés + (inventaire, ligne « grep (4) »). +- [ ] **T10 — Gates** : `scripts/test-fast.sh` complet (base du worktree remise à zéro avant — + `DROP`/`CREATE` de **ses** bases, jamais un redémarrage du conteneur), frontend non touché (gate + frontend tout de même, CLAUDE.md), **E2E complet au dernier commit de code** (D7), lancé avec la + recette corrigée de l'AC 16 ; la story ne touche aucune migration (exception `kesh-db` sans objet). + +*(T4 — CI — et T7 — recette MariaDB sur conteneur jetable — sont de la 15-13a.)* + +## Tests et mutations + +Périmètre : tests **neufs ou modifiés** par la 15-13b, de `de285ea8` au commit de développement. +Numérotation de la fiche unique conservée. + +| # | Test (fichier) | Établit | Mutation qui le rend rouge | +|---|---|---|---| +| 3 | `transmission` (existant, `configuration_transmise.rs:1733`, `MONTAGES` étendu, contrôle par `source_conforme` ; **et** : une entrée de `MONTAGES` a pour cible `kesh_api::config::DEFAULT_ADMIN_BACKUP_DIR`, R4-1) | AC 7 a, 8 a, 10 c | **M9** retirer `./backup:/data/backup` de `docker-compose.prod.yml` · **M10** `./backups:/data/backup` dans `docker-compose.yml` · **M11** `${KESH_BACKUP_HOST_DIR:-./backup}:/data/backup` dans `docker-compose.yml` (rouge aussi au (F) : fantôme) · **M15** (aussi au test 6 b) | +| 5 | `s_sources_de_montage` (existant, complété) — exerce la fonction pure `source_conforme` (AC 10 d) : en `Y` avec `"./backup"`, `./backup` accepté et `./backups` **refusé** ; en `Y` avec un préfixe `${…:-`, la source variable acceptée ; en `P`, égalité | AC 10 c-d | **M14** `source_conforme` revient à `starts_with` pour toutes les entrées (le cas `./backups` en `Y` passe) | +| 6 | `from_env_empty_or_blank_vars_take_code_default_silently` (existant, `config.rs:1648`, assertion par la constante — 6 a) + `from_env_absent_backup_dir_takes_data_backup` (nouveau — 6 b, assertion sur le **littéral** `"/data/backup"`, seul littéral voulu côté test : il fixe la valeur dont #552 dépend) | AC 7 | **M15** **valeur de la constante** `DEFAULT_ADMIN_BACKUP_DIR` changée en `"/tmp"` (geste naturel : 6 a, qui compare la constante à elle-même, reste vert ; 6 b et le test 3 rougissent) | +| 11 | `write_pre_import_backup_en_0600` (nouveau, `#[cfg(unix)]`, `mod tests` neuf de `routes/admin.rs`, `tempfile`) — `write_pre_import_backup` sur un sous-dossier absent d'un `TempDir` : dossier créé en `0700`, fichier en `0600`, contenu identique ; **assertions de montage** : un fichier témoin écrit par `std::fs::write` dans le même dossier n'est **pas** en `0600`, **et** un dossier témoin créé par `std::fs::create_dir` à côté n'est **pas** en `0700` (R4-9 de la validation P4 : sans ce second témoin, M25 passe sous umask `077`) — sinon l'umask rend le test non discriminant : échec explicite, dont le message **nomme la cause** (« umask de l'environnement trop restrictif (077 ?) : le test ne peut pas distinguer le mode posé par le code »), et non un défaut du code ; sous l'umask `022` du poste de dev et de la CI, sans effet. Après l'écriture, aucun `.partial` ne reste dans le dossier | AC 9 a-b | **M24** `.mode(0o600)` retiré · **M25** `DirBuilder` sans `mode` (dossier en `0755`) | +| 12 | `write_backup_file_n_ecrase_pas` (nouveau, même module) — `write_backup_file` sur un chemin final **déjà occupé** échoue en `AppError::AdminPreImportBackupFailed`, le fichier existant garde son contenu, et aucun `.partial` ne reste ; **+** `write_backup_file_passe_par_un_partiel` (nouveau, même module, C-15-13-21) — un `.partial` **préexistant** (écriture interrompue) fait échouer l'appel en `AdminPreImportBackupFailed`, et le nom final **n'existe pas** après l'échec : le nom de la sauvegarde n'apparaît qu'au terme d'une écriture complète passée par le `.partial` | AC 9 a, 9 c | **M26** vérification d'existence du nom final retirée (le `rename` écrase) · **M36** `write_backup_file` rend `AdminFullImportFailed` · **M46** écrire directement le nom final, sans `.partial` (le second test rougit : l'appel réussit, le nom final existe) | +| 14 | `avant_sauvegarde_convertit_les_echecs_anterieurs` (nouveau, unitaire, `routes/admin.rs`) — `AdminFullImportFailed` et `AdminFullExportFailed` → `AdminPreImportBackupFailed`, détail conservé ; `ImportSchemaMismatch` et `InvalidBackupStructure` rendus tels quels | AC 15 b | **M30** `avant_sauvegarde` rend l'erreur telle quelle · **M31** `avant_sauvegarde` convertit toute variante (un 400 devient un 500) | +| 15 | `pre_import_backup_failed_maps_to_500_without_promise` (nouveau, `errors.rs`, repli Rust — aucun catalogue n'est chargé dans les tests de la bibliothèque, `init_error_i18n` n'y est jamais appelé) — 500, `ADMIN_PRE_IMPORT_BACKUP_FAILED`, message sans le détail et sans promesse de sauvegarde, et qui **contient** « aucune sauvegarde n'a été créée » (F-P4-4) ; **témoin** : `AdminFullImportFailed` rend `ADMIN_FULL_IMPORT_FAILED` et un repli **différent** | AC 15 a, c | **M32** le bras de la variante neuve rend le code et la clé d'`AdminFullImportFailed` | +| 16 | `catalogues_distinguent_l_echec_de_sauvegarde` (nouveau, `errors.rs`, `I18nBundle::load` sur `concat!(env!("CARGO_MANIFEST_DIR"), "/../kesh-i18n/locales")` — chemin indépendant du répertoire courant (F-P3-10) —, **sans** toucher au catalogue global) — pour chacune des quatre locales : `error-admin-pre-import-backup-failed` ≠ `error-admin-full-import-failed` de la même locale ; hors `fr-CH`, ≠ le texte `fr-CH` (sinon `format` est retombé sur le français, `loader.rs:116-121`) ; ne contient pas la **promesse** de l'ancien texte, phrase intérieure de sa parenthèse **sans les parenthèses** (R3-9) : `un backup automatique a été créé avant l'opération`, `vor dem Vorgang wurde automatisch ein Backup erstellt`, `an automatic backup was created before the operation`, `prima dell'operazione è stato creato un backup automatico` — **pas** des sous-chaînes que la négation prescrite contient (`a été créé` est préfixe de « n'a été créée ») ; **assertion de montage** : chaque interdit figure dans `error-admin-full-import-failed` de **sa** locale (texte inchangé), faute de quoi l'interdit est une coquille et le test passe à vide. Vérifié en remédiation P3 : `grep -cF` de chaque interdit (sans parenthèses) → 1 dans le `messages.ftl` de sa locale (`fr-CH:1478`, `de-CH`/`en-CH`/`it-CH:1407`), et dans aucun autre ; `printf '%s' "" \| grep -cF -- ""` → 0 pour les vingt couples (quatre formulations de l'AC 15 c et « Non è stato creato un backup automatico », contre les quatre interdits) ; **et** (F-P4-4 de la validation P4) chaque texte neuf **contient** la négation de sa locale, à la lettre (`aucune sauvegarde n'a été créée`, `Es wurde keine Sicherung erstellt`, `No backup was created`, `Non è stato creato alcun backup`) | AC 15 c | **M33** texte `de-CH` remplacé par celui d'`error-admin-full-import-failed` · **M34** clé retirée d'`it-CH` (rouge aussi à `parity_between_locales`) · **M38** texte `fr-CH` neuf qui recopie la parenthèse de l'ancien · **M45** texte `fr-CH` neuf réduit à « Échec de l'import. » (sans négation ni promesse) | +| 17 | `full_import_refuses_when_backup_cannot_be_written` (nouveau, `admin_full_import_e2e.rs`) — `admin_backup_dir` = chemin d'un **fichier** existant (la création du dossier échoue même sous root : en CI comme en local) ; `spawn_app` factorisé en `spawn_app_with(pool, config)` (DRY) ; 500, `ADMIN_PRE_IMPORT_BACKUP_FAILED`, message = repli (ce binaire n'appelle pas `init_error_i18n`) ; installation intacte (société et administrateur d'origine, comme le test 18) | AC 15 a, 9 c | **M35** `admin.rs:473` (création du dossier) rend `AdminFullImportFailed` | +| 18 | `full_import_rolls_back_on_insert_failure` (existant, `admin_full_import_e2e.rs:559-605`, complété) — échec **après** la sauvegarde : code `ADMIN_FULL_IMPORT_FAILED` | AC 15 a | **M37** `admin.rs:291` (`restore :`) rend `AdminPreImportBackupFailed` | +| 19 | `montages_hors_du_depot` (nouveau, `configuration_transmise.rs`) — pour **chaque** entrée de `MONTAGES`, le dossier de sa source `docker-compose.prod.yml` (`./x` → `x`) a sa ligne dans `.gitignore` sous la forme **ancrée** `/x/` — **seule tolérance** : `log`, pour qui `log/` (ligne existante, `.gitignore:34`) est admise, la liste des tolérances étant une constante qui ne compte que `log` (assertion) — et dans `.dockerignore` (`x/`) ; la liste est **dérivée** de `MONTAGES`, pas recopiée (un cinquième montage ajouté demain est contrôlé sans retouche) ; **assertion de montage** : `MONTAGES` compte **au moins** quatre entrées, dont celle de cible `/data/backup` (R4-5 de la validation P4, C-15-13-26 : un compte exact obligerait à retoucher le test au cinquième montage, contre la phrase précédente), et chaque ligne est cherchée **entière** (après `trim`), pas en sous-chaîne (`log/` ne doit pas satisfaire `/backup/`, ni `backup/` satisfaire `/backup/`) | AC 8 e | **M39** retirer `/backup/` de `.gitignore` · **M40** retirer `backup/` de `.dockerignore` · **M41** `/backup/` remplacé par `backup/` (non ancré) dans `.gitignore` (R3-1) | + +**Décompte** (recompté sur le tableau) : 11 lignes, toutes côté Rust, qui portent **13 fonctions de test** +(9 neuves : lignes 6 b, 11, 12 ×2, 14, 15, 16, 17, 19 ; 4 existantes complétées : lignes 3, 5, 6 a, 18), dans +cinq fichiers existants (`configuration_transmise.rs`, `config.rs`, `routes/admin.rs`, `errors.rs`, +`admin_full_import_e2e.rs`) ; **22 mutations** (M9–M11, M14, M15, M24–M26, M30–M41, M45, M46), toutes +attendues rouges. M11 rougit **deux** familles ((T) et (F)), M15 et M34 deux tests chacune : attendu, le +relever. **M26** change de sens avec l'écriture par `.partial` : `create_new` porte désormais sur le +`.partial`, et c'est la vérification d'existence du nom final qui empêche l'écrasement. Non couverts par +un test, écrits comme angles morts : les sites `admin.rs:236`, `:240`, `:246` (panne de base avant la +sauvegarde, non injectable sans abstraction) et la suppression du `.partial` de l'AC 9 a après un échec de +`write_all`, `sync_all` ou `rename` (non injectable) — y compris l'échec de cette suppression (`.partial` +laissé, nommé par le `warn!`). + +Le test **(L)** (`garde_lecture_du_code`) et **(E)** (`env_example`) doivent rester verts **sans +modification** de leurs listes : la story n'ajoute aucune lecture d'environnement ni aucune variable. + +## Dev Notes + +### Ce que la story change, et ce qu'elle préserve + +- **Code** : trois modules de `kesh-api` — `config` (défaut, tests), `routes/admin` (écriture du fichier, + `avant_sauvegarde`), `errors` (variante de #576) — et les catalogues de `kesh-i18n` (une clé, quatre + locales). Aucune migration ; `kesh-db` non touché ; `admin_backup` non touché (AC 15 b) ; frontend non + touché (AC 15 d) ; les textes de l'écran de restauration disent « côté serveur », sans chemin — + `messages.ftl:1453`, `:1458` — et restent vrais. +- **Préservé** : DC5 (« jamais d'import sans backup réussi ») ; le texte d'`error-admin-full-import-failed` + (vrai pour tout ce qu'il couvre désormais) ; l'ordre verrou → sauvegarde → restore + (`routes/admin.rs:226-261`) ; le nom du fichier ; la réponse JSON (`backupCreated`) ; la transmission de + `KESH_ADMIN_BACKUP_DIR` en `${…:-}` (C75) ; les trois montages existants (C83, #558) ; + `docker-compose.dev.yml`. + +### La mise à jour d'une installation existante — les cas propres à la sauvegarde + +*(Les cas MariaDB sont dans la 15-13a.)* + +| État de l'installation avant mise à jour | Après la mise à jour | Ce que dit le manuel | +|---|---|---| +| compose **gardé** (non re-téléchargé), image 0.13.0 | sauvegarde dans `/data/backup` **non monté** (éphémère, comme avant) | le geste « ajouter le montage `./backup` » du paragraphe « Pour qui garde son fichier compose » (AC 11 f) ; l'« Effet sans refus » conditionné au compose le dit | +| compose neuf, **image ancienne** (oubli du `pull`) | sauvegarde toujours dans `/tmp` (défaut 0.12.x) | le manuel impose `docker compose pull` avant `up -d` (déjà écrit, 15-11a) | +| **restaurer après un import raté** (le cas même de #552) | la sauvegarde est dans `./backup`, `root` `0600` : illisible de File Station, de SMB et d'un `scp` sans `sudo` | rapatriement en SSH (`sudo cp` puis `sudo chown` vers un dossier partagé), import par l'écran, suppression de la copie (AC 11 e, C-15-13-8) | + +`docker-compose.prod.yml` (Synology, MariaDB externe) : seul change le montage `./backup`, créé par Docker +au premier `up -d` dans `/volume1/docker/kesh/` (propriétaire `root`, dans le périmètre Hyper Backup du +dossier du compose — `admin-manual.tex:1555`). + +### Pourquoi `/data/backup`, singulier, et un montage fixe (C-15-13-3) + +- Le gabarit propose **déjà** `#KESH_ADMIN_BACKUP_DIR=/data/backup` (`.env.example:182`) : un exploitant + qui l'a décommenté écrit déjà dans `/data/backup`. Monter **ce** chemin le rend persistant sans qu'il + ait rien à changer ; `/data/backups` (pluriel) aurait laissé ce cas dans le conteneur. +- Défaut **dans le code** (comme `/data/documents`, `/data/inbox`, `config.rs:951-957`) plutôt qu'un défaut + de déploiement dans le compose : C75 (le défaut vit dans le code, le compose transmet `${…:-}`) ; et un + compose **tiers** qui monte `/data` profite du changement. +- Montage **fixe** dans les deux compose : une variable d'hôte neuve relèverait de #558 (procédure de + déplacement, périmètre de sauvegarde) ; le test (F) rougirait d'ailleurs sur tout `KESH_*` inconnu. +- Hors Docker, `/data/backup` n'est pas inscriptible par un utilisateur ordinaire : l'import est alors + refusé **avant** toute suppression (`create_dir_all` échoue, `AdminPreImportBackupFailed` — dont le + message le dit désormais, AC 15), sans perte ; les recettes du dépôt et les modes `cargo run` documentés + posent la variable (AC 16). Le défaut `/tmp` d'avant ne protégeait pas mieux un serveur dont `/tmp` est + un tmpfs. + +### Pourquoi `0600` (C-15-13-4), et ce que cela coûte (C-15-13-8) + +Dans `/tmp` du conteneur, le fichier mourait avec lui ; sur l'hôte, il vit — dans un dossier que Docker +crée `root:root` en `0755`, et, sur `docker-compose.yml`, à côté de dossiers que le manuel invite à +partager en SMB. Le `.keshbackup` contient les condensés des mots de passe et les jetons de session +(`admin-manual.tex:1654`). `0600` (et `0700` pour un dossier que Kesh crée) est le minimum qu'impose +le changement de durée de vie. Refus d'écraser : le nom est unique (horodatage, pid, compteur) ; un +écrasement serait un défaut, autant qu'il échoue. **Persistant, un fichier interrompu en cours d'écriture +le devient aussi** (F-P4-6) : écrit sous son nom final, il serait indiscernable d'une sauvegarde valide +jusqu'à l'import, qui le refuserait en « corrompu » (SHA-256) au moment même où l'on en a besoin. D'où +l'écriture sous `.partial` puis le renommage (C-15-13-21) : seul un fichier complet et synchronisé porte le +nom d'une sauvegarde. + +Le prix est le rapatriement : un fichier `root` en `0600` ne se télécharge ni par File Station ni par SMB. +Il est **assumé** (C-15-13-8, décision de l'orchestrateur) plutôt qu'un mode plus large : la sauvegarde +contient toute la comptabilité et ses secrets, et le geste `sudo cp` + `sudo chown` tient en deux lignes +du manuel, rejouées au T0. Sur Synology, les ACL du dossier partagé `/volume1/docker` peuvent s'ajouter aux +droits POSIX : l'effet réel n'est pas mesuré depuis le poste, le manuel le dit (angle mort). + +### Inventaire fermé des sites — parties sauvegarde + +Greps de constitution : ceux du T9. Constitué à partir de l'inventaire de la fiche unique (57 lignes, +réparties entre les deux sous-fiches : § *Découpage* de la fiche index), puis complété des sites trouvés en +validation P3. **Résolu** = un AC le traite ; **assumé** = angle mort écrit. + +| Site | Sujet | Sort | +|---|---|---| +| `docker-compose.yml` `volumes:` de `kesh-api` ; `docker-compose.prod.yml` idem | montage sauvegarde | résolu (AC 8) | +| `docker-compose.yml:121`, `docker-compose.prod.yml:151` (`KESH_ADMIN_BACKUP_DIR: ${…:-}`) | transmission | inchangé, voulu (AC 8 b) | +| `.env.example:179-182` | gabarit, commentaire du défaut | résolu (AC 8 c) | +| `.env.example:77-82` | mode `cargo run` natif (hors Docker) | résolu (AC 8 c, F-P3-5) | +| `.env.example:208-210`, `:241-242` (« ses montages sont fixes — `./inbox`, `./documents`, `./log` ») | énumération des montages de `docker-compose.prod.yml` | résolu (AC 8 c, F-P4-3) | +| `CHANGELOG.md:44` (« **Inchangé** : … les montages restent `./documents`, `./inbox`, `./log` ») | énumération des montages, entrée #550 de `[0.13.0]` | résolu (AC 13 c, F-P4-3) | +| grep (4) du T9, reste : `docker-compose.yml:127-143`, `docker-compose.prod.yml:112-168` (commentaires et montages un par un), `docker-compose.dev.yml:34`, `.env.example:216`, `:237`, `:244`, `:263`, `:266`, `CHANGELOG.md:46` (« revient à `./documents` »), `:674`, `crates/kesh-api/tests/configuration_transmise.rs:200-205`, `:367`, `docs/kesh-specifications.txt:1739`, `admin-manual.tex:819-821`, `:837`, `:853`, `:884`, `:898`, `:1421`, `:1516`, `:1555`, `:1778` | un montage nommé seul, ou une variable d'hôte — aucune énumération de **tous** les montages | **assumé** — restent vrais avec le quatrième (`:1421`, `:1555` : périmètre de sauvegarde, AC 11 i ; `:200-205` : `MONTAGES`, résolu par l'AC 10 c ; `:819-821` : tableau des variables d'hôte, sans ligne pour `./backup`, AC 11 d) | +| `.github/workflows/release.yml:91-101` | lance l'image publiée (root, `/data/backup` inscriptible), sans import | **assumé** (AC 16) | +| `.gitignore` (seul `log/`, `:34`), `.dockerignore` (aucun) | dossiers montés par défaut (`./backup`, `./inbox`, `./documents`, `./log`) non ignorés dans un clone | résolu (AC 8 e, test 19) ; `log/` non ancré : tolérance nommée | +| `frontend/src/routes/(app)/admin/backup/+page.svelte`, `+page.ts` (versionnés) | homonyme du dossier `backup` | **assumé** — protégé par l'ancrage `/backup/` (AC 8 e, M41) | +| `crates/kesh-api/src/config.rs:250-256`, `:939-947`, `:1643-1661` | défaut `/tmp` | résolu (AC 7) | +| `crates/kesh-api/src/config.rs:508`, `:1508` | `/tmp` des constructeurs de test | **assumé**, voulu (AC 7 c) | +| `crates/kesh-api/src/config.rs:1586`, `:1601`, `:1748`, `:1769` | `KESH_ADMIN_BACKUP_DIR` comme variable témoin des tests (`reset_env`, `VIDE_EGALE_DEFAUT`, `env_nonempty`) | **assumé** — restent vrais, aucune valeur `/tmp` | +| `crates/kesh-api/src/routes/admin.rs:259-261`, `:471-495` | écriture | résolu (AC 9) | +| `crates/kesh-api/src/routes/admin.rs:475-477` | commentaire faux (« avant le verrou ») | résolu (AC 9 d) | +| `crates/kesh-api/src/routes/admin.rs:42`, `:129-130`, `:174`, `:219`, `:227`, `:481`, `:492` | doc et journal « backup pré-import » | **assumé** — restent vrais (`:481` est le nom du fichier, inchangé) | +| `crates/kesh-api/src/routes/admin.rs:467-470` | doc de `write_pre_import_backup` (« Échec d'écriture → 500 ») | résolu (AC 9 a : mode `0600`, refus d'écraser, variante d'erreur) | +| `crates/kesh-api/src/routes/admin.rs:236`, `:240`, `:246`, `:473`, `:487` ; `:172`, `:259` (appels) | échecs antérieurs à la sauvegarde | résolu (AC 15 a-b) | +| `crates/kesh-api/src/routes/admin.rs:283` à `:462` (douze sites `AdminFullImportFailed`) | échecs postérieurs | **inchangé, voulu** (AC 15 a) | +| `crates/kesh-api/src/errors.rs:448-452`, `:1819-1828` | variante et message de #576 | résolu (AC 15 a, c) | +| `crates/kesh-api/src/admin_backup/import.rs:204`, `admin_backup/export.rs:103-105` | variantes nées hors du module | résolu **à l'appel** (AC 15 b) ; fichiers non modifiés | +| `crates/kesh-api/src/admin_backup/export.rs:5` | doc « backup pré-import » | **assumé** — reste vrai | +| `crates/kesh-i18n/locales/*/messages.ftl` — `error-admin-full-import-failed` (`fr-CH:1478`, autres `:1407`) | message de #576 | résolu (AC 15 c) | +| `crates/kesh-api/src/routes/admin.rs:72-110` (`stream_via_tempfile`, `std::env::temp_dir()`) | fichier temporaire de l'**export** | **assumé** : temporaire par nature, supprimé après envoi | +| `crates/kesh-db/src/post_restore.rs:591`, `crates/kesh-db/tests/post_restore_transactionality.rs:8`, `crates/kesh-api/tests/admin_full_import_e2e.rs:704` | `AdminFullImportFailed` du rejeu des backfills, **postérieur** à la sauvegarde (R3-6, F-P3-7) | **inchangé, voulu** — échecs postérieurs, le message reste vrai ; `kesh-db` non touché | +| `crates/kesh-api/tests/configuration_transmise.rs:153-154` (`AJOUTS`), `:196`, `:199-207` (`MONTAGES`), `:378-379` | transmission ; montages ; textes « trois » | `:153-154` inchangé, voulu (AC 8 b) ; `:196`, `:199-207`, `:378-379` résolus (AC 10 c, e) | +| `CLAUDE.md:178-182`, `docs/testing.md:161-173`, `:278-286`, `:296-304` | recettes `cargo run -p kesh-api` sans `KESH_ADMIN_BACKUP_DIR` | résolu (AC 16 a-b) | +| `admin-manual.tex:194`, `README.md:90` | modes `cargo run` natif documentés pour l'exploitant | résolu (AC 16 b', 11 d) | +| `frontend/playwright.config.ts:18`, `frontend/DEBUGGING-KF007.md:17`, `docs/known-failures.md:119`, `crates/kesh-db/README.md:57`, `docs/testing.md:32` | autres mentions de `cargo run -p kesh-api` | **assumé** (AC 16 c) | +| `frontend/tests/e2e/password-recovery.spec.ts:16`, `frontend/tests/e2e/global-setup.ts:34` | `cargo run -p kesh-api` | **assumé** (AC 16 c) | +| `DOCKER_START.md:131`, `.env.example:32`, `:186`, `:249`, `docker-compose.dev.yml:2`, `frontend/vite.config.ts:20`, `admin-manual.tex:668`, `:1315`, `docs/testing.md:61`, `CHANGELOG.md:655` | mentions du mode `cargo run`, sans recette de lancement (second grep de l'AC 16) | **assumé** (AC 16 c) | +| `scripts/prepare-release.sh:109`, `crates/kesh-db/src/post_restore.rs:1168`, `crates/kesh-db/tests/test_schema_guard.rs:548`, `CLAUDE.md:798`, `docs/kesh-specifications.txt:1110` | `cargo run` d'autres binaires, ou prose | **assumé** (AC 16 c) | +| `DOCKER_START.md` — section « dossiers » (ligne neuve) | `./backup` | résolu (AC 12 a') | +| `admin-manual.tex:757`, `:807-822` (dont `:812`, énumération des montages fixes) | `sec:env-vars` (ligne `KESH_ADMIN_BACKUP_DIR`, montages) | résolu (AC 11 d, F-P4-3) | +| `admin-manual.tex:1643` (« sans accès SSH ni ligne de commande », ouverture de `sec:backup-ui-keshbackup`) | contradiction avec le rapatriement en SSH de la même section | résolu (AC 11 e, F-P4-7 : phrase d'exception) | +| `admin-manual.tex:1712` (« restauration self-service sans SSH »), `website/roadmap.html:231` (« SSH-free migration and restore ») | promesse de l'export/import par l'écran | **assumé** — vraie pour un `.keshbackup` exporté ; la sauvegarde pré-import en fait exception, dite à `:1643` (F-P4-7) | +| `admin-manual.tex:1417-1425`, `:1664`, `:1667-1672`, `:1699` | sauvegarde | résolu (AC 11 e, i) | +| `admin-manual.tex:1452-1477`, `:2312-2317` (`BACKUP_DIR` du script de sauvegarde) | homonyme : variable de shell, pas de Kesh | **assumé** — hors sujet (le `cd` et `exec db` du même script : 15-13a, AC 11 h) | +| `admin-manual.tex:1757-1841` — paragraphe sauvegarde, `:1773` (« Effets sans refus »), `:1793` (« deux gestes », « Sous `environment:` ») | mise à jour 0.13.0 — parties sauvegarde | résolu (AC 11 f) | +| `docs/manual/fr/marketing-brochure.tex:398` | « restauration sans accès SSH » | relu (AC 11 n) — vrai pour un `.keshbackup` exporté ; décision au Dev Agent Record | +| `CHANGELOG.md:46` — « — la sauvegarde pré-import reste dans `/tmp` » et « deux gestes » | rendues fausses | résolu (AC 13 c) | + +**Décompte** : 41 lignes (recompté sur le tableau — `grep -c '^| '` rend 42, en-tête compris ; le +séparateur commence par `|---` et n'est pas compté) : 36 à la validation P4, plus cinq (F-P4-3 : `.env.example`, +`CHANGELOG.md:44`, reste du grep (4) ; F-P4-7 : `:1643`, `:1712`/`roadmap.html`) ; `:812` enrichit une ligne +existante. + +### Angles morts assumés (écrits, non traités) + +- **ACL Synology** sur `/volume1/docker/kesh/backup` : peuvent élargir ou restreindre l'accès au fichier + `0600` ; non mesurées depuis le poste (AC 11 e). +- **Échecs antérieurs à la sauvegarde sans test** : `routes/admin.rs:236`, `:240`, `:246` (panne de base + avant le verrou) et la suppression du `.partial` de l'AC 9 a — non injectables sans abstraction ; + relus en revue, écrits ici. +- **`.partial` non supprimé** : si l'écriture échoue après la création **et** que `remove_file` échoue à + son tour — ou si le processus est arrêté pendant l'écriture —, un `….keshbackup.partial` reste dans le + dossier de sauvegarde ; il ne porte pas le nom d'une sauvegarde, le message « aucune sauvegarde n'a été + créée » reste vrai, le `warn!` nomme le chemin, et le manuel dit qu'un `.partial` peut être supprimé + (AC 9 a, 11 e, C-15-13-21). Suppression non injectable, non testée. +- **Fenêtre entre la vérification du nom final et le renommage** : non fermée (`rename` remplace une cible + existante sur Unix ; `renameat2(RENAME_NOREPLACE)` n'est pas dans `std`, et un `hard_link` sans écrasement + dépend du système de fichiers du montage) ; sans portée pratique — le nom est unique par construction, et + un second écrivain du même nom serait déjà un défaut (C-15-13-21). +- **Durabilité du renommage** : le dossier n'est pas synchronisé après `rename` ; une coupure de courant + juste après pourrait perdre l'entrée du dossier — le fichier était complet et synchronisé, seul le nom + serait en cause. Non traité. +- **SELinux** : le montage `./backup` n'a pas de suffixe `:z` (les trois montages existants non plus) ; + sur un hôte SELinux en mode `enforcing`, l'écriture pourrait être refusée — l'import le dirait alors + (AC 15). Non mesuré. +- **Purge des sauvegardes** : à la charge de l'exploitant (inchangé) ; elles sont désormais persistantes, + donc elles s'accumulent — une par import, de la taille de la base. Le manuel le dit ; pas de rotation. +- **Emplacement non communiqué à l'écran** : la réponse de l'import ne porte pas le nom du fichier + (`backupCreated` seulement) ; écarté (C-15-13-6). +- **Contrôle au démarrage du dossier de sauvegarde** (un `warn!` si `/data/backup` n'est pas + inscriptible) : écarté (C-15-13-9) — le message de l'AC 15 dit la cause au moment où elle compte, et les + recettes hors Docker posent la variable (AC 16). +- **Montage d'hôte `./backup` créé `root:root` `0755`** : l'exploitant qui le veut fermé fait + `chmod 700 backup` (manuel) ; les fichiers sont `0600` de toute façon. + +### Règle de découpage + +**Deux crates, quatre modules de code** — `kesh-api::config` (le défaut seulement), `kesh-api::routes::admin`, +`kesh-api::errors` et les catalogues de `kesh-i18n` (`locales/*/messages.ftl`, un seul module métier +quelle que soit la locale) —, plus des tests (`configuration_transmise.rs` étendu, +`admin_full_import_e2e.rs`) et des fichiers de configuration et de documentation (`docker-compose.yml`, +`docker-compose.prod.yml`, `.env.example`, `.gitignore`, `.dockerignore`, `CLAUDE.md` — la recette et sa +date —, `docs/testing.md`, `README.md`, manuel (+ PDF, brochure relue), `DOCKER_START.md`, `CHANGELOG.md`). +Convention de décompte (celle de la fiche unique) : le seuil compte les **modules de code** au sens du +`CLAUDE.md`. Seuil (« plus de 5 ») non atteint. `admin_backup` **n'est pas** touché : ses deux variantes sont +converties à l'appel (AC 15 b), précisément pour ne pas ouvrir un module de plus. + +### Références + +- Fiche index `15-13-mariadb-et-sauvegarde.md` (découpage, recompte, Change Log des validations P1 à P3) ; + fiche unique complète au commit **8a9bcd27**. +- Issues #552, #576 (absorbée en validation P1), #558 (cahier des charges hérité, trois commentaires). +- Rapports de validation (non versionnés) : `target/gate-logs/15-13-p{1,2,3}-{R,F}.md` ; prompts + `15-13-validate-prompt-p{1,2,3}.md`. +- `_bmad-output/implementation-artifacts/15-11a-compose-transmet-la-configuration.md` — § *Angles morts* + (`#552`), AC 12 (conventions du manuel : 76/70 caractères, `make fr`, contrôle aplati, `Overfull` des + dix tableaux). +- `_bmad-output/implementation-artifacts/15-11b-lecture-unique-des-variables.md` — `env_nonempty`, test + (L). +- `crates/kesh-api/tests/configuration_transmise.rs` — `MONTAGES` (doc `:196-198`, `const` `:199-207`), `controle_transmission` + (`:443-533`), test `transmission` (`:1733`), `s_sources_de_montage` (`:1969`). +- CLAUDE.md : § *Test Locally First* (E2E au dernier commit de code, D7), § *Propagation post-patch*, § + *Recompter ses propres comptes rendus*, § *Le prompt d'une passe doit NOMMER le manuel*, § *Inventorier + les sites NON RÉSOLUS*, § *Issue Tracking Rule* (mots-clés sur la PR). + +## Dev Agent Record + +### Agent Model Used + +### Debug Log References + +### Completion Notes List + +### File List + +## Change Log + +- 2026-10-09 — **Création par découpage de la 15-13, et remédiation de la validation P3** (agent remédiateur, + Opus 5.5, en autonomie). Historique de la fiche unique (spécification, validations P1 et P2) : Change Log + de la fiche index. **Trend** de la fiche unique : P1 (Opus 5.5 ×2) 8 MEDIUM distincts → P2 (Sonnet ×2) 6 + → P3 (Opus 5.5 ×2 : R 2 MEDIUM / 8 LOW, F 3 MEDIUM / 8 LOW, aucun doublon) **5 MEDIUM distincts** ; 0 + CRITICAL/HIGH aux trois passes. **Signal D5 de recyclage** levé deux passes de suite (P2 : deux MEDIUM nés + de la P1 ; P3 : R3-1, R3-2 et F-P3-2 nés de la P2) → **découpage** décidé par l'orchestrateur + (C-15-13-16) selon la couture #551 / #552-#576. + - **Reçu de la 15-13** : AC 7, 8, 9, 10 c/d (montage)/e (« trois »), 11 d (ligne `KESH_ADMIN_BACKUP_DIR`, + montages)/e/f (paragraphe sauvegarde)/i/k/l (contrôles sauvegarde), 12 a (ligne `./backup`, devenue + 12 a'), 13 b (#552, #576, Sécurité)/c (phrase `/tmp`), 14, 15, 16 ; T0 (rapatriement, `make fr`), T1 + (montages, exclusions, gabarit), T2 (`config`, `routes/admin`, `errors`, catalogues), T3, T5, T6 + (recettes, CHANGELOG), T8, T9, T10 ; tests 3, 5, 6, 11, 12, 14 à 19 ; mutations M9–M11, M14, M15, + M24–M26, M30–M40 ; trois lignes du tableau des cas (deux scindées) ; huit angles morts. + - **Remédiation P3 appliquée ici** : **R3-1** (AC 8 e : motifs **ancrés** `/inbox/`, `/documents/`, + `/backup/`, tolérance nommée pour `log/` et sa justification ; test 19 qui l'exige ; **M41** ; homonyme + `frontend/src/routes/(app)/admin/backup/` à l'inventaire et à C-15-13-14) ; **F-P3-1** (AC 11 f et + 13 c : « deux gestes » → décompte par fichier ; « sans la ligne → `./backup` » conditionné au compose + 0.13.0 ; contrôle négatif au PDF) ; LOW **R3-6/F-P3-7** (`post_restore.rs:591`, + `post_restore_transactionality.rs:8`, `admin_full_import_e2e.rs:704` à l'inventaire), **R3-9** (test + 16 : interdits sans les parenthèses, revérifiés par `grep -cF` sur les quatre catalogues et les vingt + couples de négations), **F-P3-5** (modes hors Docker : AC 11 d, `admin-manual.tex:194`, + `.env.example:77-82`, `README.md:90` ; AC 16 étendu au grep `cargo run` sans `-p`, sites triés), + **F-P3-10** (`CARGO_MANIFEST_DIR`), **F-P3-11** (brochure `:398`, AC 11 n). + - **Recompte** (depuis cette fiche) : **10 AC** (numéros 7–16 de la fiche unique), **9 tâches** (T0–T3, + T5, T6, T8–T10), **11 lignes de test** portant **12 fonctions Rust** (8 neuves, 4 existantes + complétées) ; **20 mutations** (M9–M11, M14, M15, M24–M26, M30–M41) ; **3 lignes** au tableau des cas ; **36 + lignes** d'inventaire ; **8 angles morts** ; **4 modules de code**. +- 2026-10-09 — **Remédiation de la validation P4** (agent remédiateur, Opus 5.5, en autonomie). Passe P4 : + deux lentilles **Sonnet** en contexte frais (prompt `15-13b-validate-prompt-p4.md`) — R (regression + hunter) **0 CRITICAL / 0 HIGH / 2 MEDIUM / 8 LOW**, F (adversaire plein périmètre) **0 / 0 / 3 MEDIUM / + 5 LOW** ; R4-2 = F-P4-1 — soit **4 MEDIUM distincts**. **Trend** (fiche unique puis 15-13b) : P1 (Opus 5.5 + ×2) 8 MEDIUM distincts → P2 (Sonnet ×2) 6 → P3 (Opus 5.5 ×2) 5 → découpage → P4 (Sonnet ×2) **4** ; + 0 CRITICAL/HIGH aux quatre passes. **Signal D5** (sévérité égale, MEDIUM → MEDIUM) **déclaré au Project + Lead via l'orchestrateur** : les quatre MEDIUM sont distincts de ceux de la P3 ; **trois** sont d'origine + — R4-1 (constante liée à rien, `DEFAULT_ADMIN_BACKUP_DIR` depuis la spécification `d023c019`), F-P4-2 (M14 + sans test, depuis `d023c019`), F-P4-3 (trou d'inventaire) — mais **un naît de la remédiation P3** : + la ligne de contrôle `docker compose config | grep -c '/data/backup'` de R4-2/F-P4-1 apparaît au commit + `a847f369` (vérifié par `git log -S`), écrite pour F-P3-1. C'est la forme qui découpe selon + l'amendement D5 ; elle est ici **isolée** (un défaut sur quatre, dans un texte du manuel, non dans le + code) et la fiche est déjà issue d'un découpage, à quatre modules : pas de nouveau découpage proposé par + le remédiateur — l'arbitrage revient à l'orchestrateur. + - **MEDIUM** : **R4-1** (constante `pub`, liée au littéral par le test 6 b et à la cible de `MONTAGES` + par le test 3 ; M15 réécrite « valeur de la constante », rouge à deux tests ; C-15-13-24) ; + **R4-2/F-P4-1** (contrôle de l'AC 11 f sur `target: /data/backup` ; T0 : cas « variable posée, + montage absent → 0 ») ; **F-P4-2** (fonction pure `source_conforme`, exercée par (S) avec `./backups` + refusé ; M14 désormais rouge ; C-15-13-24) ; **F-P4-3** (`.env.example:208-210`, `:241-242`, + `CHANGELOG.md:44`, `admin-manual.tex:812` à l'inventaire et aux AC 8 c, 11 d, 13 c, tâches T1, T6 ; + grep (4) du T9 **par la valeur** `\./(inbox|documents|log)\b` rejoué à `c702b7d5`, chaque site trié). + - **Décision de l'orchestrateur** (F-P4-6, C-15-13-21) : écriture sous `.partial` (`0600`, même dossier), + `sync_all`, puis `rename` ; refus d'écraser par vérification du nom final ; test + `write_backup_file_passe_par_un_partiel` et **M46** ; manuel : un `.partial` peut être supprimé ; + angles morts « `.partial` non supprimé », « fenêtre vérification → renommage », « durabilité du + renommage ». + - **LOW** : **F-P4-4** (négation exigée aux tests 15 et 16, **M45**) ; **F-P4-5** (texte qui ne + privilégie pas le dossier : deux pistes à égalité ou aucune, C-15-13-25) ; **F-P4-7** (`:1643` reçoit + une phrase d'exception ; `:1712` et `website/roadmap.html:231` assumés) ; **F-P4-8** (« depuis le + répertoire du compose », `lstlisting` à 76 caractères pour la ligne `sudo chown` de 74 ; copie de la + recette hors dépôt : l'orchestrateur réalignera sa mémoire) ; **R4-3** (`--no-index` au T1) ; **R4-4** + (jeton `deux gestes` restreint) ; **R4-5** (test 19 : « au moins quatre ») ; **R4-6** (= F-P4-2) ; + **R4-7** (« comme avant » au manuel, `/tmp` au seul CHANGELOG) ; **R4-8** (valeur absolue + `/tmp/kesh-e2e/backup` pour les trois recettes de `docs/testing.md`) ; **R4-9** (dossier témoin d'umask + au test 11) ; **R4-10** (références `:196-198`/`:199-207`, `ls-files` rejoué à `c702b7d5`, + supersession de « cinq modules » de C-15-13-9 dans C-15-13-26). + - **Règles changées** : (1) **l'écriture de la sauvegarde** passe par `.partial` + renommage (AC 9 a) — + le refus d'écraser change de mécanisme (vérification du nom final, M26 réécrite) ; (2) **le texte de + #576** n'oriente plus vers le seul dossier (AC 15 c) ; (3) **le défaut `/data/backup`** est désormais + lié par test au littéral et au montage (AC 7 a). Les deux premières touchent la production : une passe + P5 **complète** est recommandée, non une passe ciblée. + - **Recompte** (depuis cette fiche, `grep`) : **10 AC**, **9 tâches**, **11 lignes de test** portant + **13 fonctions Rust** (9 neuves, 4 existantes complétées) ; **22 mutations** (M9–M11, M14, M15, + M24–M26, M30–M41, M45, M46 ; `sort -u` → 22) ; **3 lignes** au tableau des cas ; **41 lignes** + d'inventaire ; **10 angles morts** ; **4 modules de code** (inchangé : `config`, `routes/admin`, + `errors`, catalogues `kesh-i18n`). Union avec la 15-13a : 46 mutations, M1 à M46 sans trou ni doublon. diff --git a/_bmad-output/implementation-artifacts/15-13b-validate-prompt-p4.md b/_bmad-output/implementation-artifacts/15-13b-validate-prompt-p4.md new file mode 100644 index 00000000..e9859ff1 --- /dev/null +++ b/_bmad-output/implementation-artifacts/15-13b-validate-prompt-p4.md @@ -0,0 +1,35 @@ +# Prompt — validation P4 de la spec, Story 15-13b + +*Versionné le 2026-10-09. Deux lentilles (Sonnet), contexte frais chacune, en lecture seule. Rotation (décision D6 de la +rétro 25) : passes complètes Sonnet ↔ Opus ; Haiku réservé à une passe ciblée de fin de boucle.* + +Dépôt `/home/gcorbaz/devel/kesh-15-13`, branche `story/15-13-mariadb-et-sauvegarde`. **Fiche** : `_bmad-output/implementation-artifacts/15-13b-sauvegarde-avant-import-persistante.md`. La dernière remédiation est le commit `a847f369` (`git show a847f369`) — lis le Change Log de la fiche. +Issues, par `gh api repos/guycorbaz/kesh/issues/N` (et `/comments`) — `gh issue view` échoue ici : #552, #576. +Choix autonomes : `_bmad-output/implementation-artifacts/epic-15-choix-autonomes.md`. Règles : `CLAUDE.md`. Code de référence : la branche elle-même (`de285ea8` + les fiches). **La 15-13 vient d'être découpée (C-15-13-16)** : index `15-13-mariadb-et-sauvegarde.md` (historique des passes P1-P3 ; version complète au commit `8a9bcd27`), sous-fiches `15-13a-mariadb-non-publiee-mots-de-passe-obligatoires.md` et `15-13b-sauvegarde-avant-import-persistante.md` — relis les deux pour la frontière. Choix C-15-13-1 à 20. Vérifie que rien n'est perdu au découpage (contre `git show 8a9bcd27:_bmad-output/implementation-artifacts/15-13-mariadb-et-sauvegarde.md`), et que chaque sous-fiche est vraie si elle est mergée SEULE (CHANGELOG `[0.13.0]`, manuel, tableau des gestes). **Axes prioritaires** : AC 8 e et le test 19 (motifs ANCRÉS `/backup/`, `/inbox/`, `/documents/`, tolérance `log/`, M41 ; `frontend/src/routes/(app)/admin/backup/` versionné) ; le tri pré/post-sauvegarde des 17 sites `AdminFullImportFailed` et la variante `AdminPreImportBackupFailed` ; l'AC 16 élargie au grep `cargo run` et les sites triés « assumés » ; l'« effet sans refus » conditionné au compose 0.13.0 ; le rapatriement `sudo cp` pour restaurer ; le test 16 (interdit de la promesse) ; le manuel, PDF aplati. +Aucun code de la story n'est encore écrit. + +## Lentilles + +- **R — Regression hunter** : la dernière remédiation (`git show a847f369`) a-t-elle introduit des défauts ? Contradictions entre AC, tâches, Dev Notes et choix du registre ; frontière avec les fiches sœurs ; faits recopiés sans vérification (numéros de ligne, fonctions, codes, clés i18n) — revérifie-les au code (`grep -nF`) ; recompte des AC et tâches ; implémentable sans deviner ? +- **F — Full-scope adversary** : la conception elle-même. Les chemins de code qui écrivent ou lisent ce que la story + change (inventorier les sites NON résolus, pas énumérer ceux qui marchent) ; transactions, verrous, ordre des + contrôles ; tests existants qui changeront de sens ; frontend qui lit les codes ou champs touchés (`grep -rn` dans + `frontend/src`) ; i18n 4 locales et replis ; le **manuel** (`docs/manual/fr/*.tex` **et le PDF aplati** : + `pdftotext docs/manual/fr/user-manual.pdf - | tr '\n' ' ' | tr -s ' '` vers `target/gate-logs/`) ; + `docs/api-external.md` ; CHANGELOG ; la règle de découpage (§ « Règle de splitting préventif », amendement D5). + +## Ce que tu rends + +Findings numérotés avec sévérité (CRITICAL/HIGH/MEDIUM/LOW), `fichier:ligne` (fiche et code), **preuve** (commande et +sortie, ou code cité relu), correction proposée. Pour tout finding affirmant qu'un code est absent ou présent : la +sortie d'un `grep -nF`. ⛔ **La liste des axes exercés ET non exercés** — un « 0 finding » sans elle ne compte pas. +⛔ **Écris ton rapport complet** dans `target/gate-logs/15-13b-p4-.md` (R ou F ; autorisé), et rends +comme dernier message **seulement** : ce chemin, le bilan par sévérité, et une ligne par finding MEDIUM ou plus. + +## Interdits + +⛔ N'écris aucun fichier du dépôt hors `target/gate-logs/` ; aucune commande qui écrit dans le dépôt ou dans une +base : `scripts/*` (dont `scripts/prepare-release.sh`), `make`, `latexmk`, `git commit`/`add`/`checkout`/`stash`, +`sqlx`, `cargo test`/`nextest`/`build`, `npm run`, `npx`, `gh issue create`/`comment`/`edit`, aucune requête SQL +d'écriture. Autorisés : lecture, `grep`, `sed -n`, `git log`/`show`/`diff`, `gh api` en lecture, `pdftotext` +vers `target/gate-logs/`. diff --git a/_bmad-output/implementation-artifacts/15-13b-validate-prompt-p5.md b/_bmad-output/implementation-artifacts/15-13b-validate-prompt-p5.md new file mode 100644 index 00000000..ac6c27a1 --- /dev/null +++ b/_bmad-output/implementation-artifacts/15-13b-validate-prompt-p5.md @@ -0,0 +1,35 @@ +# Prompt — validation P5 de la spec, Story 15-13b + +*Versionné le 2026-10-09. Deux lentilles (Opus), contexte frais chacune, en lecture seule. Rotation (décision D6 de la +rétro 25) : passes complètes Sonnet ↔ Opus ; Haiku réservé à une passe ciblée de fin de boucle.* + +Dépôt `/home/gcorbaz/devel/kesh-15-13`, branche `story/15-13-mariadb-et-sauvegarde`. **Fiche** : `_bmad-output/implementation-artifacts/15-13b-sauvegarde-avant-import-persistante.md`. La dernière remédiation est le commit `3ebedca9` (`git show 3ebedca9`) — lis le Change Log de la fiche. +Issues, par `gh api repos/guycorbaz/kesh/issues/N` (et `/comments`) — `gh issue view` échoue ici : #552, #576. +Choix autonomes : `_bmad-output/implementation-artifacts/epic-15-choix-autonomes.md`. Règles : `CLAUDE.md`. Code de référence : la branche elle-même (`de285ea8` + les fiches). Index `15-13-mariadb-et-sauvegarde.md`, sœur `15-13a-…`. Choix C-15-13-1 à 26. **Signal D5** : un MEDIUM de P4 (R4-2/F-P4-1) était né de la remédiation P3 ; l'orchestrateur n'a pas redécoupé (défaut isolé dans un texte, fiche déjà issue d'un découpage) — si cette passe trouve un défaut né de la remédiation P4, dis-le explicitement. **Axes prioritaires** : l'écriture par `.partial` puis `sync_all` puis `rename` (C-15-13-21) — atomicité, refus d'écraser (vérification du nom final avant `rename`, fenêtre écrite en angle mort), le `.partial` laissé en cas d'échec, test `write_backup_file_passe_par_un_partiel` et M46/M26 ; le texte de #576 (C-15-13-25) dans les 4 locales et le repli Rust ; la liaison de `DEFAULT_ADMIN_BACKUP_DIR` au littéral et au montage (tests 3 et 6 b, M15) ; `source_conforme` et M14 ; le contrôle `target: /data/backup` ; l'inventaire (grep (4) par la valeur) ; le manuel et son PDF aplati. +Aucun code de la story n'est encore écrit. + +## Lentilles + +- **R — Regression hunter** : la dernière remédiation (`git show 3ebedca9`) a-t-elle introduit des défauts ? Contradictions entre AC, tâches, Dev Notes et choix du registre ; frontière avec les fiches sœurs ; faits recopiés sans vérification (numéros de ligne, fonctions, codes, clés i18n) — revérifie-les au code (`grep -nF`) ; recompte des AC et tâches ; implémentable sans deviner ? +- **F — Full-scope adversary** : la conception elle-même. Les chemins de code qui écrivent ou lisent ce que la story + change (inventorier les sites NON résolus, pas énumérer ceux qui marchent) ; transactions, verrous, ordre des + contrôles ; tests existants qui changeront de sens ; frontend qui lit les codes ou champs touchés (`grep -rn` dans + `frontend/src`) ; i18n 4 locales et replis ; le **manuel** (`docs/manual/fr/*.tex` **et le PDF aplati** : + `pdftotext docs/manual/fr/user-manual.pdf - | tr '\n' ' ' | tr -s ' '` vers `target/gate-logs/`) ; + `docs/api-external.md` ; CHANGELOG ; la règle de découpage (§ « Règle de splitting préventif », amendement D5). + +## Ce que tu rends + +Findings numérotés avec sévérité (CRITICAL/HIGH/MEDIUM/LOW), `fichier:ligne` (fiche et code), **preuve** (commande et +sortie, ou code cité relu), correction proposée. Pour tout finding affirmant qu'un code est absent ou présent : la +sortie d'un `grep -nF`. ⛔ **La liste des axes exercés ET non exercés** — un « 0 finding » sans elle ne compte pas. +⛔ **Écris ton rapport complet** dans `target/gate-logs/15-13b-p5-.md` (R ou F ; autorisé), et rends +comme dernier message **seulement** : ce chemin, le bilan par sévérité, et une ligne par finding MEDIUM ou plus. + +## Interdits + +⛔ N'écris aucun fichier du dépôt hors `target/gate-logs/` ; aucune commande qui écrit dans le dépôt ou dans une +base : `scripts/*` (dont `scripts/prepare-release.sh`), `make`, `latexmk`, `git commit`/`add`/`checkout`/`stash`, +`sqlx`, `cargo test`/`nextest`/`build`, `npm run`, `npx`, `gh issue create`/`comment`/`edit`, aucune requête SQL +d'écriture. Autorisés : lecture, `grep`, `sed -n`, `git log`/`show`/`diff`, `gh api` en lecture, `pdftotext` +vers `target/gate-logs/`. diff --git a/_bmad-output/implementation-artifacts/epic-15-choix-autonomes.md b/_bmad-output/implementation-artifacts/epic-15-choix-autonomes.md index ffaf5ace..a436c8be 100644 --- a/_bmad-output/implementation-artifacts/epic-15-choix-autonomes.md +++ b/_bmad-output/implementation-artifacts/epic-15-choix-autonomes.md @@ -5366,4 +5366,186 @@ l'import (#458–#461). - **Écartées** : réécrire le message (B-1) dans cette story — hors consigne, et l'issue #569 couvre la famille ; ajouter le `case 'LATER_FISCAL_YEAR_CLOSED'` au `switch` (E-3) — code de composant pour un comportement déjà correct. + +## C-15-13-1 — 15-13 (spécification) : le port de MariaDB n'est plus publié du tout, pas même en loopback + +- **Contexte** : `docker-compose.yml:13` publie `"3306:3306"` sur toutes les interfaces (#551). `kesh-api` atteint MariaDB par le réseau interne de Compose ; aucune commande du manuel n'emploie le port publié (toutes passent par `docker compose exec`). Un port publié par Docker contourne UFW, que le manuel recommande (`admin-manual.tex:1998-2009`). +- **Retenu** : aucune clé `ports:` au service `mariadb` ; un commentaire donne la forme loopback (`127.0.0.1:3306:3306`) à décommenter pour un dépannage ponctuel ; le test `configuration_transmise.rs` rougit sur toute clé `ports:` de `mariadb`. +- **Écartées** : `"127.0.0.1:3306:3306"` actif (inutile au fonctionnement, et une ouverture que personne n'a demandée) ; garder `3306:3306` en avertissant (l'issue est un P2 de sécurité). +- **Réversible** : oui (une ligne à décommenter). + +## C-15-13-2 — 15-13 (spécification) : les mots de passe MariaDB sont exigés par Compose (`${VAR:?message}`) ; Kesh avertit, sans refuser, sur un mot de passe publié + +- **Contexte** : défauts `kesh_dev_root` / `kesh_dev` dans `docker-compose.yml` (`:8`, `:11`, `:53`) et lignes **actives** de `.env.example` (`:336`, `:339`). Kesh ne voit pas le mot de passe root (non transmis, C71) ; refuser `kesh_dev` dans Kesh casserait `docker-compose.dev.yml`, le montage E2E et toutes les recettes de test, qui l'emploient ; `KESH_TEST_MODE` ne distingue pas (`TestModeWithPublicBind` interdit le mode test sur la pile de dev). +- **Retenu** : `${MARIADB_ROOT_PASSWORD:?…}` et `${MARIADB_PASSWORD:?…}` (y compris dans la `DATABASE_URL` composée) — Compose refuse de démarrer en nommant la variable ; lignes du gabarit commentées et sans valeur ; avertissement Kesh au démarrage si le mot de passe de `DATABASE_URL` est `kesh_dev` ou `kesh_dev_root` ; indice explicite sur l'erreur 1045 (le piège de la mise à jour : MariaDB ne lit `MARIADB_PASSWORD` qu'à la création de la base) ; CI qui exige le refus sans les variables. Le manuel écrit les anciennes valeurs (pour qu'une installation qui s'y appuyait redémarre à l'identique avant de les changer) ; les fichiers distribués n'en portent plus aucune trace. +- **Écartées** : refus Kesh de `kesh_dev` (casse la pile de dev et la CI) ; placeholder `` actif pour les mots de passe MariaDB (la base s'initialiserait avec le gabarit, et `<`, espace, `:` cassent la `DATABASE_URL` composée) ; message de refus qui inviterait à « choisir » un mot de passe (une valeur neuve dans `.env` sur une base déjà créée = panne 1045). +- **Réversible** : oui. + +## C-15-13-3 — 15-13 (spécification) : sauvegarde pré-import par défaut dans `/data/backup`, montée en dur sur `./backup` par les deux compose + +- **Contexte** : `KESH_ADMIN_BACKUP_DIR` vaut `/tmp` par défaut (`config.rs:947`), transmise en `${…:-}` sans aucun montage (#552). Le gabarit suggère déjà `#KESH_ADMIN_BACKUP_DIR=/data/backup`, que rien ne monte. +- **Retenu** : défaut du code `/data/backup` (constante nommée), comme `/data/documents` et `/data/inbox` ; montage fixe `./backup:/data/backup` dans `docker-compose.yml` et `docker-compose.prod.yml` ; transmission `${KESH_ADMIN_BACKUP_DIR:-}` inchangée (C75, liste `AJOUTS` intacte) ; `MONTAGES` du test étendu, égalité exigée pour une source fixe. Singulier, pour que l'exploitant qui a décommenté la suggestion du gabarit soit couvert sans rien changer. +- **Écartées** : défaut de déploiement dans le compose (`${KESH_ADMIN_BACKUP_DIR:-/data/backup}`, contraire à C75 et sans effet pour un compose tiers) ; ranger les sauvegardes sous `/data/documents` ou `/var/log/kesh` (dossiers que le manuel invite à partager en SMB, et le fichier est un secret) ; variable d'hôte `KESH_BACKUP_HOST_DIR` (relève de #558) ; `/data/backups` au pluriel (laisserait dans le conteneur l'exploitant qui a suivi le gabarit). +- **Réversible** : oui (aucune donnée déplacée : l'ancien emplacement mourait avec le conteneur). + +## C-15-13-4 — 15-13 (spécification) : la sauvegarde pré-import est écrite en `0600`, sans écrasement, dossier créé en `0700` + +- **Contexte** : rendre la sauvegarde persistante sur l'hôte change sa durée de vie ; le `.keshbackup` contient condensés de mots de passe et jetons de session ; le dossier d'hôte créé par Docker est `root:root` `0755`, et `tokio::fs::write` crée le fichier selon l'umask (`0644`). +- **Retenu** : `OpenOptions` avec `create_new(true)` et `mode(0o600)` (unix), `sync_all` avant le journal ; `DirBuilder` récursif en `0o700` quand Kesh crée le dossier ; un dossier existant n'est pas modifié. Test avec assertion de montage sur l'umask. +- **Écartées** : chiffrer la sauvegarde (changement de format, hors périmètre) ; `chmod` du dossier de l'hôte par Kesh (il appartient à l'exploitant). +- **Réversible** : oui. + +## C-15-13-5 — 15-13 (spécification) : périmètre du manuel — `openssl rand -hex 32` pour MariaDB, `exec db` corrigé, section Synology laissée à une issue + +- **Contexte** : le manuel fait générer le mot de passe MariaDB de Synology en `openssl rand -base64 32` (`admin-manual.tex:546`), repris dans `DATABASE_URL` — `/` y apparaît une fois sur deux et casse l'URL. Trois commandes visent un service `db` qui n'existe pas (`:1460`, `:1511`, `:2216`) avec un `-p"${MARIADB_ROOT_PASSWORD}"` que rien ne pose. La section Synology (pré-script Hyper Backup `:1578`, aperçu Container Manager `:571`) suppose un service `mariadb` que `docker-compose.prod.yml` n'a pas ; le nom de volume `kesh_db_data` (`:1422`, `:1744`) est faux. +- **Retenu** : traités ici, parce qu'ils sont le sujet même de la story (accès à MariaDB, mot de passe MariaDB) : `hex` partout pour MariaDB ; `exec mariadb` avec le mot de passe lu dans le conteneur. **Non traités**, signalés pour une issue P3 : la section Synology sans service `mariadb`, le nom de volume. +- **Écartées** : réécrire la section Synology (autre sujet, autre installation, risque de déborder) ; laisser `base64` (défaut actif sur l'installation de référence). +- **Réversible** : oui (texte). +- **Rectificatif** (validation P2, 2026-10-09) : l'aperçu Container Manager est à `admin-manual.tex:573`, non `:571`. + +## C-15-13-6 — 15-13 (spécification) : l'emplacement de la sauvegarde n'est pas renvoyé par l'API ni affiché à l'écran + +- **Contexte** : #552 demande que « le manuel dise où les trouver ». La réponse de l'import ne porte que `backupCreated`. +- **Retenu** : le manuel dit l'emplacement (`./backup` du dossier du compose, nom de fichier) ; ni l'API ni l'écran ne changent. +- **Écartées** : ajouter le nom du fichier à la réponse et l'afficher (frontend, i18n ×4, contrat d'API : trois modules de plus pour une information que l'exploitant trouve au manuel ; un chemin du conteneur affiché à l'écran serait d'ailleurs trompeur — ce n'est pas celui de l'hôte). +- **Réversible** : oui. + +## C-15-13-7 — 15-13 (spécification) : une seule story pour #551 et #552, pas de découpage ; ligne du registre et paragraphe de la fiche d'epic + +- **Contexte** : règle de découpage préventif (plus de cinq modules). Les deux issues touchent les mêmes fichiers (compose, gabarit, test `configuration_transmise.rs`, manuel § « Passer à la 0.13.0 », CHANGELOG `[0.13.0]`). Le worktree part d'`origin/main` (`de285ea8`), où la fiche d'epic ne porte pas encore le paragraphe « Story 15-13 — à spécifier » écrit sur la branche de planification du dépôt principal. +- **Retenu** : une story, trois modules de code dans un crate (`config`, `main`, `routes/admin`) — même décompte que la 15-11a ; ligne `15-13-mariadb-et-sauvegarde: ready-for-dev` (convention « en validation » de l'epic) ajoutée après la 15-11b ; paragraphe « Story 15-13 » ajouté à la fiche d'epic après celui de la 15-11 — à fusionner par union avec la branche de planification. +- **Écartées** : deux stories (#551 / #552), qui doubleraient les conflits sur les mêmes sections sans réduire le risque. +- **Réversible** : oui (planification). +- **Décompte supersédé** (ajout de la validation P2, 2026-10-09) : « trois modules » ne vaut plus depuis l'absorption de #576 ; le décompte en vigueur est celui de **C-15-13-9** (cinq modules, seuil atteint, non franchi). La décision « pas de découpage » tient sur ce nouveau décompte. + +## C-15-13-8 — 15-13 (validation P1) : la sauvegarde pré-import reste en `0600` ; le manuel donne le geste de rapatriement + +- **Contexte** : R-2 / F4 de la validation P1. L'import se fait par le navigateur ; un fichier `root` en `0600` sur l'hôte ne se lit ni par File Station, ni par SMB, ni par un `scp` sans `sudo`. La procédure « restaurer depuis la sauvegarde = l'importer par le même écran » échouait au moment où l'on en a besoin. L'affirmation « lisible du seul propriétaire » n'était pas mesurée sur Synology (ACL du dossier partagé). +- **Retenu** (décision de l'orchestrateur) : le mode `0600` reste — la sauvegarde contient toute la comptabilité et ses secrets ; le manuel donne le rapatriement en SSH (`sudo cp` vers un dossier partagé, `sudo chown`, import, suppression de la copie), rejoué sur un conteneur jetable au T0 ; « créé en mode `0600`, propriétaire `root` », avec la limite ACL écrite non mesurée ; le tableau des cas gagne « restaurer après un import raté ». +- **Écartées** : un mode `0640`/`0644` ou un `chown` vers un utilisateur de l'hôte (élargit l'accès à un secret, et l'UID de l'exploitant n'est pas connu du conteneur) ; renvoyer le fichier par l'API (C-15-13-6). +- **Réversible** : oui (mode et texte du manuel). + +## C-15-13-9 — 15-13 (validation P1) : #576 absorbée — variante `AdminPreImportBackupFailed`, conversion à l'appel, cinq modules + +- **Contexte** : F7 de la validation P1. Avec le défaut `/data/backup`, toute instance lancée hors Docker (montage E2E du dépôt, développement) refuse chaque import, et le message affiché annonçait « un backup automatique a été créé ». La story faisait de ce message faux le cas nominal. L'orchestrateur a décidé que la story ferme #576. +- **Retenu** : une variante neuve (500, code `ADMIN_PRE_IMPORT_BACKUP_FAILED`, clé `error-admin-pre-import-backup-failed`, quatre locales et repli Rust) pour **tout** échec antérieur à l'écriture réussie — y compris transaction et verrou, dont le message mentait aussi ; les deux variantes nées dans `admin_backup` (`check_schema_compat`, `build_keshbackup`) converties **à l'appel** par une fonction pure `avant_sauvegarde`, pour ne pas toucher `admin_backup` ; le texte d'`error-admin-full-import-failed` inchangé (il dit vrai pour les douze sites postérieurs). Les recettes `cargo run` du dépôt posent `KESH_ADMIN_BACKUP_DIR` (`CLAUDE.md` : la seule ligne de commande, `docs/testing.md`). Décompte : cinq modules (`config`, `main`, `routes/admin`, `errors`, catalogues `kesh-i18n`) — seuil atteint, non franchi. +- **Écartées** : modifier `admin_backup/import.rs` et `export.rs` (sixième module, seuil franchi) ; un champ « étape » dans `AdminFullImportFailed` (même texte pour deux vérités différentes, à trier par le client) ; un contrôle du dossier au démarrage (`warn!`) — le message dit la cause au moment où elle compte, et un dossier monté tardivement le ferait mentir ; une story séparée pour #576 (elle naît du changement de défaut de #552, la séparer laisserait la 15-13 livrer un message faux). +- **Réversible** : oui (une variante et une clé). + +## C-15-13-10 — 15-13 (validation P1) : le contrôle de fin de mise à jour se connecte à la base avec les anciens mots de passe + +- **Contexte** : F3 de la validation P1. La vérification prévue (`docker compose config | grep kesh_dev`) ne lit que `.env` : un mot de passe root neuf écrit sans `ALTER USER` la rend muette alors que la base garde `kesh_dev_root`, et fait échouer la sauvegarde nocturne sans que rien ne rougisse (Kesh n'utilise pas root, le healthcheck passe par le compte `healthcheck`). La phrase « aucun de ces cas ne casse en silence » était fausse. +- **Retenu** (décision de l'orchestrateur) : connexion avec les **anciens** mots de passe publiés → refus attendu ; avec ceux de `.env` → succès ; pour `root` et `kesh`, en TCP (`--protocol=TCP -h 127.0.0.1`) pour que l'authentification par socket de `root@localhost` ne fausse pas la mesure — forme exacte rejouée au T7. Plus : lancer une fois à la main le script de sauvegarde après toute mise à jour ou tout changement de mot de passe. Le tableau des cas gagne la ligne « root neuf sans `ALTER USER` » et la conclusion est réécrite (deux cas silencieux nommés, avec leur geste de détection). +- **Écartées** : garder le `grep` (faux négatif sur le cas même qu'il devait couvrir) ; transmettre `MARIADB_ROOT_PASSWORD` à Kesh pour qu'il vérifie (C71 : pas d'`env_file`, et Kesh n'a pas à connaître root). +- **Réversible** : oui (texte du manuel). + +## C-15-13-11 — 15-13 (validation P1) : `init-demo.sh` lit l'identifiant MariaDB dans le conteneur + +- **Contexte** : R-3 / F6. `init-demo.sh` (versionné) vise par défaut `kesh-mariadb`, le conteneur de `docker-compose.yml`, avec `kesh_dev` en dur : après la story, il échoue en 1045 sur toute installation conforme ; c'était aussi le dernier outil distribué qui supposait le mot de passe publié. L'inventaire « fermé » l'avait omis. +- **Retenu** : `docker exec -i "$CONTAINER" sh -c 'mariadb -u "$MARIADB_USER" -p"$MARIADB_PASSWORD" "$MARIADB_DATABASE"'` — les deux compose à service MariaDB posent ces variables dans le conteneur ; en-tête qui dit le caractère destructif et l'administrateur de démonstration ; vérifié contre le conteneur jetable du T7 (jamais `kesh-mariadb-dev`, dont la base `kesh` est partagée). +- **Écartées** : le marquer « développement seulement » sur `kesh-mariadb-dev` (il resterait faux pour sa cible par défaut) ; le supprimer (outil documenté par son en-tête, décision de produit hors story). +- **Réversible** : oui. +- **Remplacé** (validation P2, 2026-10-09) : par **C-15-13-13** — le script est retiré du dépôt ; la lecture de l'identifiant dans le conteneur le rendait opérant, sans transaction ni confirmation, sur toute installation conforme. + +## C-15-13-12 — 15-13 (validation P1) : forme du message `:?` et scission de l'interpolation obligatoire + +- **Contexte** : R-1 / F1 et F2. Le message prescrit contenait `": "`, qui rend les deux compose invalides en YAML (scalaire non cité) ; et le test confondait `${VAR:?}` (refuse le vide) et `${VAR?}` (ne refuse que l'absence), si bien qu'une ligne `MARIADB_PASSWORD=` vide passait. +- **Retenu** : deux formes admises — message sans `": "` ni `" #"`, ou valeur entière entre guillemets doubles —, tranchées au T0 par `docker compose config -q` **avec** les variables posées ; message qui dit d'abord le cas existant, puis le neuf ; `Interpolation::Obligatoire` scindée en `ObligatoireNonVide` / `ObligatoireSiAbsente`, la première exigée (mutations M28, M29) ; contrôle de la `DATABASE_URL` par resserrement du motif de `VALEURS_COMPOSEES` (DRY). +- **Écartées** : guillemets simples (l'apostrophe de « d'administration ») ; un message sans indication pour l'installation existante (il pousserait à écrire une valeur neuve). +- **Réversible** : oui. + +## C-15-13-13 — 15-13 (validation P2) : `init-demo.sh` est retiré du dépôt, pas corrigé + +- **Contexte** : F2 de la validation P2. La correction de la P1 (C-15-13-11 : identifiant lu dans le conteneur) rendait le script **opérant** sur toute installation conforme ; or il enchaîne des `DELETE` (`init-demo.sh:57-62`) sans transaction ni confirmation, et sur une base peuplée `DELETE FROM companies` échoue sur les 25 clés étrangères `ON DELETE RESTRICT` **après** que `users` et `onboarding_state` ont été vidés. L'orchestrateur a demandé de vérifier d'abord s'il est redondant. +- **Constat** : redondant. La démonstration est semée par l'application (`POST /api/v1/onboarding/seed-demo`, `routes/onboarding.rs:177-190` → `kesh_seed::seed_demo` : plan comptable par les repositories, exercice, `is_demo`, réinitialisation par `kesh_seed::reset_demo`). Le script écrit en SQL brut dix comptes sans rôle, sans exercice, et un administrateur `admin`/`admin123`. `git grep -n init-demo` hors `_bmad-output` ne rend que le fichier lui-même : aucun script, aucune CI, aucune documentation ne l'appelle (dernier commit qui le touche : `b63dc4e1`, Story 7-1). +- **Retenu** : `git rm init-demo.sh` (AC 12 b) ; entrée « Retiré » au CHANGELOG ; le T7 ne le lance plus ; inventaire « résolu par retrait ». +- **Écartées** : le garder en le durcissant (refus si la base porte des données, `START TRANSACTION`, test T7 sur un conteneur peuplé) — maintient un second chemin de démonstration, hors des repositories, que rien n'appelle et qui dérive du schéma à chaque migration ; le garder tel que la P1 l'avait corrigé (risque F2 entier). +- **Réversible** : oui (l'historique git garde le fichier). + +## C-15-13-14 — 15-13 (validation P2) : les dossiers montés par défaut sont ignorés de git et du contexte de build, contrôle dérivé de `MONTAGES` + +- **Contexte** : F1 de la validation P2. `docker compose up` se lance depuis un clone ; `./backup` y apparaît au premier import et contient un secret. Grepé par la valeur, le symptôme vaut aussi pour `./inbox` et `./documents` (justificatifs) : seul `log/` est dans `.gitignore`, aucun des quatre dans `.dockerignore`. +- **Retenu** : `.gitignore` gagne `/inbox/`, `/documents/`, `/backup/` (ancrés à la racine ; `log/` gardé tel quel) ; `.dockerignore` gagne `log/`, `inbox/`, `documents/`, `backup/`. Un test (`montages_hors_du_depot`, test 19) **dérive** la liste des dossiers des sources de `MONTAGES` (colonne `docker-compose.prod.yml`), si bien qu'un montage ajouté demain est contrôlé sans retouche ; mutations M39, M40. `git ls-files` sous ces dossiers : 0 (aucun contenu masqué). +- **Écartées** : `backup/` seul (laisse le même défaut sur deux dossiers voisins — propagation par le symptôme, `CLAUDE.md`) ; motifs non ancrés (`documents/` masquerait tout sous-dossier homonyme du dépôt). +- **Réversible** : oui. + +## C-15-13-15 — 15-13 (validation P2) : `docs/ci.md` — le décompte des jobs est corrigé, la description d'un job `e2e` inexistant est laissée à une issue + +- **Contexte** : F6 de la validation P2. `docs/ci.md:9-10` annonce « 4 jobs (`backend`, `frontend`, `e2e`, `docker-build`) » ; `ci.yml` en a trois. Grepé par la valeur, le job `e2e` est décrit aussi à `:23`, `:30`, `:131`, `:164`, `:186`, et le `CLAUDE.md` affirme un smoke E2E en CI que `ci.yml` ne porte pas. +- **Retenu** : la story corrige `:9-10` (à une ligne de `:12`, qu'elle réécrit déjà) et ajoute sous `:10` une phrase de renvoi vers une issue que l'orchestrateur ouvre ; les autres lignes et le `CLAUDE.md` restent (défaut antérieur, hors du sujet de #551/#552/#576, et la recette du `CLAUDE.md` est la seule ligne que la story y touche). +- **Écartées** : réécrire toute la description de la CI (hors sujet, et elle dépend d'une décision — rétablir le job ou retirer sa description) ; ne rien toucher (la story réécrit `:12` à côté d'un décompte qu'elle saurait faux). +- **Réversible** : oui. + +## C-15-13-16 — 15-13 (validation P3) : découpage en 15-13a (MariaDB, #551) et 15-13b (sauvegarde, #552 et #576) + +- **Contexte** : validation P3 (deux lentilles Opus 5.5) : 5 MEDIUM distincts, dont trois nés de la remédiation P2 (R3-1, R3-2, F-P3-2), après deux nés de la remédiation P1 en P2. Signal D5 de recyclage levé deux passes de suite — la forme qui découpe selon l'amendement D5 de la rétrospective de l'Epic 25. +- **Retenu** (décision de l'orchestrateur) : deux fiches filles selon la couture naturelle — **15-13a** « MariaDB non publiée, mots de passe obligatoires » (`closes #551`, refs #577 ; modules `config`, `main`) et **15-13b** « sauvegarde avant import persistante » (`closes #552`, `closes #576`, refs #558 ; modules `config`, `routes/admin`, `errors`, catalogues `kesh-i18n`) ; `15-13-mariadb-et-sauvegarde.md` devient fiche index (`split`), la version complète restant au commit `8a9bcd27`. Numérotation de la fiche unique conservée dans les filles (AC, tests, mutations, tâches) ; recompte aux deux bornes écrit dans l'index. Ordre suggéré : 15-13a d'abord (#551 P2) ; chaque fille ne réécrit que ce que son changement rend faux, si bien qu'une seule mergée au tag laisse un CHANGELOG et un manuel vrais ; la seconde recompte les gestes de `admin-manual.tex:1793` et de `CHANGELOG.md:46`. +- **Écartées** : une troisième fiche pour #576 (elle naît du défaut `/data/backup` : la séparer de #552 laisserait un message faux dans le cas nominal hors Docker, C-15-13-9) ; une coupe « code / documentation » (chaque moitié ne serait ni livrable ni testable seule) ; continuer sans découper (troisième recyclage probable : les défauts naissent désormais dans les ajouts de la passe précédente). +- **Réversible** : oui (planification ; les deux fiches se refondent par simple concaténation, la numérotation étant commune). + +## C-15-13-17 — 15-13a (validation P3) : Kesh avertit aussi pour un mot de passe applicatif resté au gabarit du manuel + +- **Contexte** : F-P3-3. Le manuel fait recopier `MARIADB_PASSWORD=` (`admin-manual.tex:254`) et `DATABASE_URL=mysql://kesh:@…` (`:259`) ; recopiées telles quelles, ces chaînes — imprimées dans le PDF distribué — deviennent le mot de passe applicatif. La fiche les disait « hors de portée de Kesh pour la même raison » que root ; c'est faux : Kesh lit `DATABASE_URL`, et `is_template_placeholder` (`config.rs:1405`, 15-11a) existe. +- **Retenu** (décision de l'orchestrateur) : AC 5 a-bis — un `warn!` **distinct** quand le mot de passe décodé satisfait `is_template_placeholder` (réemploi, DRY), renvoi à la procédure de changement (AC 11 g) ; test 7 étendu (formes encodée et non encodée, chevrons intérieurs en témoin), mutation **M42** ; doc-comment du prédicat complété ; tableau des cas et Dev Notes rectifiés. Le **root** gabarit reste un angle mort (Kesh ne voit pas root, C71), tracé par une issue que l'orchestrateur ouvre. +- **Écartées** : refuser le démarrage (même raison que C-15-13-2 : un mot de passe faible n'empêche pas de fonctionner, et le refus casserait des installations existantes sans gain sur root) ; un message commun avec `kesh_dev` (l'exploitant ne saurait pas que la valeur vient du manuel) ; un second prédicat propre aux mots de passe (duplication). +- **Réversible** : oui. + +## C-15-13-18 — 15-13a et 15-13b (validation P3) : les gestes « pour qui garde son compose » se comptent par fichier ; le contrôle des placeholders du CHANGELOG suit le manuel + +- **Contexte** : F-P3-1 et F-P3-2. `admin-manual.tex:1793` (« Pour qui garde son fichier compose : deux gestes. », puis « Sous `environment:` du service `kesh-api` : ») et `CHANGELOG.md:46` (« décrit les deux gestes ») deviennent faux : la 15-13 ajoute des gestes hors d'`environment:`, différents selon le fichier. `CHANGELOG.md:52` recopie le `docker compose config | grep` « doit rester muette », piège corrigé au manuel en P2 (R2-9) mais non propagé. +- **Retenu** : le titre perd son décompte global ; le paragraphe donne le nombre **par fichier**, recompté par la fille mergée en second (aujourd'hui 2 / 2 ; 15-13a seule 4 / 2 ; 15-13b seule 3 / 3 ; les deux 5 / 3), chaque geste écrit avec son fichier et une ligne de contrôle ; `deux gestes` devient un contrôle négatif du PDF aplati. `CHANGELOG.md:52` reçoit la même forme que le manuel (mots de passe d'abord, `config -q && echo 'compose lisible'`) ou un renvoi au manuel — choix laissé au développement, écrit au Dev Agent Record. Les « Effets sans refus » de la sauvegarde sont conditionnés au compose (0.13.0 : `./backup` ; compose gardé : `/data/backup` du conteneur, éphémère). +- **Écartées** : un nombre unique (faux pour l'un des deux fichiers) ; garder « deux gestes » en ajoutant un troisième paragraphe (le titre resterait faux) ; supprimer la commande du CHANGELOG sans renvoi (perte de l'action requise). +- **Réversible** : oui (texte). + +## C-15-13-19 — 15-13b (validation P3) : motifs ancrés dans `.gitignore`, une seule tolérance nommée (`log/`) + +- **Contexte** : R3-1. Le test 19 admettait `x/` aussi bien que `/x/` pour toute entrée de `MONTAGES`, alors que C-15-13-14 écarte les motifs non ancrés. Mesuré : `backup/` ignore `frontend/src/routes/(app)/admin/backup/` (versionné : l'écran de la sauvegarde) — tout fichier neuf de cette route serait ignoré en silence ; `/backup/` non. +- **Retenu** : `.gitignore` exige `/x/` ; **seule** tolérance, une constante qui ne compte que `log` : la ligne `log/` existante (`.gitignore:34`) — aucun dossier `log` versionné nulle part (`git ls-files | grep -E '(^|/)log/'` → 0), et l'ancrer ferait réapparaître des `log/` d'outils de dev sous les crates ; un `log/` versionné ajouté demain serait masqué : risque écrit. Mutation **M41** (`/backup/` → `backup/`). `.dockerignore` inchangé dans sa forme (motifs relatifs à la racine du contexte). +- **Écartées** : ancrer aussi `log/` (change un comportement existant hors du sujet de la story) ; tolérer `x/` pour tous (le défaut mesuré). +- **Réversible** : oui. + +## C-15-13-20 — 15-13 (validation P3) : rectificatifs de C-15-13-13, C-15-13-14 et C-15-13-15 ; attribution de M5 + +- **Rectificatifs** (les entrées d'origine ne sont pas réécrites) : **C-15-13-13** — les `DELETE` d'`init-demo.sh` sont à `:70-75` (commentaire `:70`, instructions `:71-75`), non `:57-62` (`check_container()`, `:55-63`) — R3-7. **C-15-13-14** — l'homonyme réel d'un motif non ancré est `frontend/src/routes/(app)/admin/backup/` (versionné), non un hypothétique `documents/` ; la décision d'ancrer est tenue par C-15-13-19 — R3-1. **C-15-13-15** — l'issue à laquelle renvoie `docs/ci.md` existe : **#577** ; la liste des lignes qui décrivent le job `e2e` absent compte aussi `:210` — R3-3/F-P3-4, R3-5. +- **Attribution de M5** (constat du remédiateur) : `VALEURS_COMPOSEES` n'est lu que par `controle_valeur` (`configuration_transmise.rs:592-603`), donc par le test `valeurs` (famille (V), `:1743`) ; la fiche unique rangeait son resserrement sous `transmission` et M5 sous le test 1. Retenu : ligne 3a de la 15-13a (`valeurs`, existant modifié) porte M5 ; le décompte des fonctions passe de 19 à 20 (fonction modifiée jamais comptée). Écarté : faire porter le contrôle de la `DATABASE_URL` par le test neuf `mariadb` (second contrôle sur la même valeur, contraire au DRY de l'AC 10 a). +- **Réversible** : oui. + +## C-15-13-21 — 15-13b (validation P4) : la sauvegarde pré-import s'écrit sous `.partial`, puis est renommée + +- **Contexte** : F-P4-6. `write_backup_file` créait le fichier au nom final puis écrivait : un client déconnecté (hyper abandonne le futur du handler), un OOM ou un `docker stop` en cours d'écriture laissaient un `kesh-pre-import-….keshbackup` tronqué — désormais **persistant**, de même nom qu'une sauvegarde valide, et refusé en « corrompu » à l'import, au moment même où l'on en a besoin. +- **Retenu** (décision de l'orchestrateur) : écriture dans `.partial` du **même dossier** (`create_new`, `0600`), `sync_all`, puis `rename` vers le nom final (atomique sur un même système de fichiers) ; un arrêt pendant l'écriture ne laisse qu'un `.partial`, jamais un fichier nommé comme une sauvegarde. `rename` remplaçant une cible existante sur Unix, le refus d'écraser passe par une vérification du nom final avant le renommage (`try_exists`) ; la fenêtre entre les deux reste ouverte, sans portée pratique (nom unique par construction) — angle mort écrit. Test `write_backup_file_passe_par_un_partiel` (un `.partial` préexistant fait échouer l'appel, le nom final n'apparaît pas) ; mutation **M46** « écrire directement le nom final » ; M26 réécrite (« vérification du nom final retirée »). Le manuel dit qu'un `.partial` est une écriture interrompue et peut être supprimé. +- **Écartées** : écrire au nom final et documenter l'angle mort (le fichier mentirait sur sa nature) ; `hard_link` sans écrasement puis suppression du `.partial` (atomique, mais dépend du système de fichiers du montage — NAS, SMB) ; `renameat2(RENAME_NOREPLACE)` (hors `std`, Linux seulement). +- **Réversible** : oui (une fonction privée). + +## C-15-13-22 — 15-13a (validation P4) : le mot de passe de `DATABASE_URL` est décodé par `decode_utf8_lossy`, et sa non-divulgation est gardée par mutation + +- **Contexte** : F4 et F6. `percent_decode_str` rend un `PercentDecode` ; `decode_utf8()` renvoie une erreur sur des octets non UTF-8 (`%FF`), qu'un `?` ou un `unwrap` transformerait en échec ou en panique du démarrage — contraire à l'AC 5 b (« aucun `ConfigError` neuf »). Et la propriété « ni le mot de passe ni l'URL dans le journal » n'était gardée par aucune mutation. +- **Retenu** : `decode_utf8_lossy()` (une valeur non UTF-8 n'est ni publiée ni gabarit ; sa forme décodée ne déclenche rien) ; témoin `%FF` au test 7 ; **M43** (l'avertissement interpole le mot de passe décodé, rouge au test 7) et **M44** (le message d'échec de connexion interpole `database_url`, rouge au test 10, qui exige l'absence de `mauvais-15-13` dans la sortie). La forme non encodée du gabarit, établie à la source (`url` 2.5.8), devient un cas positif ferme du test 7 ; le repli conditionnel est retiré. +- **Écartées** : `decode_utf8()` avec gestion explicite de l'erreur (même effet, une branche de plus à tester) ; garder le repli du test 7 (branche morte qui laisse croire à une incertitude levée). +- **Réversible** : oui. + +## C-15-13-23 — 15-13a (validation P4) : la recette de changement de mot de passe MariaDB n'expose pas le nouveau mot de passe, et commence par arrêter Kesh ; la rubrique « Retiré » du CHANGELOG est légitime + +- **Contexte** : F7. La recette (`ALTER USER`, puis `.env`, puis `up -d`) ne disait pas comment le nouveau mot de passe atteint la requête : tapé en ligne de commande, il resterait dans l'historique du shell et dans la liste des processus de l'hôte, alors que toute la story lit les mots de passe dans le conteneur. Entre l'`ALTER USER kesh` et le `up -d`, les connexions neuves de Kesh échouent en 1045. Annexe : la rubrique « Retiré » n'existe dans aucune version du CHANGELOG. +- **Retenu** : nouveau mot de passe engendré dans une variable (`NEW=$(openssl rand -hex 32)`, jamais tapé), transmis à `mariadb` par l'entrée standard (document en ligne), reporté dans `.env` à l'éditeur ; la recette commence par `docker compose stop kesh-api` ; forme de référence en Dev Notes, forme finale fixée au T7. Rubrique « Retiré » gardée : *Removed* est l'une des six rubriques de Keep a Changelog 1.1.0 (vérifié en ligne le 2026-10-09), que l'en-tête du CHANGELOG déclare suivre en traduisant les intitulés. +- **Écartées** : `sed -i` pour écrire `.env` (le mot de passe passerait un instant dans les arguments de `sed`) ; laisser la forme au seul T7 (l'exigence d'hygiène doit être écrite avant la mesure, sinon la mesure ne la vérifie pas) ; ranger le retrait d'`init-demo.sh` sous « Modifié » (moins exact). +- **Réversible** : oui (texte du manuel et du CHANGELOG). + +## C-15-13-24 — 15-13b (validation P4) : le défaut `/data/backup` est lié par test au littéral et au montage ; la comparaison des sources de montage devient une fonction pure + +- **Contexte** : R4-1 et F-P4-2. `DEFAULT_ADMIN_BACKUP_DIR` n'était comparée qu'à elle-même : changée en `/data/backups`, elle laissait tous les tests verts et la sauvegarde retournait dans le conteneur ; M15, appliquée à la valeur de la constante, restait verte. La règle d'égalité des sources de montage vivait dans la boucle de `controle_transmission`, que l'auto-test (S) n'atteint pas : M14 n'avait aucun test capable de rougir. +- **Retenu** : constante `pub` ; le test 6 b la compare au **littéral** `"/data/backup"` (le seul littéral voulu côté test), le test `transmission` exige qu'elle soit la cible d'une entrée de `MONTAGES` (donc d'un montage des compose) ; M15 réécrite « valeur de la constante changée en `/tmp` », rouge aux tests 3 et 6 b. Fonction pure `source_conforme(compose, source, attendue_y, exacte_p) -> bool`, appelée par la boucle et exercée par (S) avec `./backups` refusé en `Y` — rouge sous M14. +- **Écartées** : faire porter le lien par le test 19 (il traite d'exclusion git, pas de montage) ; construire des `Service` synthétiques pour atteindre la boucle (plus lourd, même garantie). +- **Réversible** : oui. + +## C-15-13-25 — 15-13b (validation P4) : le message de #576 n'oriente pas vers le seul dossier, et sa négation est exigée par test + +- **Contexte** : F-P4-5 et F-P4-4. Trois des cinq échecs antérieurs à l'écriture sont des pannes de base (transaction, verrou, lecture du schéma ou des données) ; un texte « dossier de sauvegarde inscriptible ? » oriente vers une fausse piste. Et les tests 15/16 n'exigeaient que l'absence de l'ancienne promesse : un texte « Échec de l'import. » passait, sans plus dire qu'aucune copie n'existe — l'objet même de #576. +- **Retenu** : texte qui nomme les deux pistes à égalité (« dossier de sauvegarde inscriptible, base de données accessible ») ou aucune ; code et variante inchangés. Les tests 15 et 16 exigent la négation (« aucune sauvegarde n'a été créée » et ses trois traductions, à la lettre) ; mutation **M45**. +- **Écartées** : deux variantes et deux textes (dossier / base) — un module de plus à toucher pour un tri que les journaux font déjà ; un code d'erreur neuf pour la base (même raison). +- **Réversible** : oui (quatre catalogues et un repli). + +## C-15-13-26 — 15-13 (validation P4) : rectificatifs de C-15-13-9 et de C-15-13-14 + +- **Rectificatifs** (les entrées d'origine ne sont pas réécrites) : **C-15-13-9** — « cinq modules » ne vaut plus depuis le découpage (C-15-13-16) : la 15-13a en compte deux (`config`, `main`), la 15-13b quatre (`config`, `routes/admin`, `errors`, catalogues `kesh-i18n`) — R4-10 de la validation P4 de la 15-13b. **C-15-13-14** — « un montage ajouté demain est contrôlé sans retouche » n'était vrai que si l'assertion de montage du test 19 ne fixait pas le nombre d'entrées : elle exige désormais « au moins quatre », dont `/data/backup` (R4-5). **Inventaire de la 15-13a** — la ventilation « 29 + 6 → 36 » de la fiche index ne se refaisait pas ; seuls les totaux sont gardés (R4-7). - **Réversible** : oui. From 77870ff87a59bcc7e8bde6b23704e83d8f22604a Mon Sep 17 00:00:00 2001 From: Guy Corbaz Date: Fri, 9 Oct 2026 06:39:07 +0200 Subject: [PATCH 02/14] =?UTF-8?q?docs(15-13a):=20T0=20=E2=80=94=20mesures?= =?UTF-8?q?=20Compose,=20sqlx=20et=20manuel=20;=20ordre=20et=20sous-comman?= =?UTF-8?q?des=20du=20refus=20de=20Compose=20relev=C3=A9s=20(refs=20#551)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- ...-non-publiee-mots-de-passe-obligatoires.md | 34 +++++++++++++++++++ .../epic-15-choix-autonomes.md | 7 ++++ .../sprint-status.yaml | 3 ++ 3 files changed, 44 insertions(+) diff --git a/_bmad-output/implementation-artifacts/15-13a-mariadb-non-publiee-mots-de-passe-obligatoires.md b/_bmad-output/implementation-artifacts/15-13a-mariadb-non-publiee-mots-de-passe-obligatoires.md index b0523cd4..93d80741 100644 --- a/_bmad-output/implementation-artifacts/15-13a-mariadb-non-publiee-mots-de-passe-obligatoires.md +++ b/_bmad-output/implementation-artifacts/15-13a-mariadb-non-publiee-mots-de-passe-obligatoires.md @@ -948,3 +948,37 @@ code** au sens du `CLAUDE.md` ; tests, configuration, CI, scripts et documentati `docker compose exec -T mariadb sh -c`. **Validation close.** Trend (15-13 puis 15-13a) : P1 8 MEDIUM → P2 6 → P3 5 (découpage, C-15-13-16) → P4 1 → P5 ciblée 0. Modèles : Opus ×2, Sonnet ×2, Opus ×2, Sonnet ×2, Haiku (ciblée). Signal D5 déclaré en P2 et P3 (recyclage), suivi d'un découpage en P3. + +- **2026-10-09 — T0 du développement** (agent de développement, Opus 5.5, worktree `kesh-15-13a`, base + `200f5e79` + planification `08816686`). Fiche relue contre le code : les numéros de `config.rs`, `main.rs`, + `configuration_transmise.rs`, `docker-compose.yml`, `.env.example` et `ci.yml` sont en place ; ceux du + manuel sont décalés de **+3** après la 15-7a2 à partir du script de sauvegarde (`exec -T db` `:1463`, + `:1514` ; `exec db` `:2219` ; « deux gestes » `:1796` ; référence des ports `:2365`) — relocalisés par le + texte. `sprint-status.yaml` : 15-13 (`split`), 15-13a (`in-progress`), 15-13b (`ready-for-dev`) ajoutées + (absentes de `main`). Mesures (détail au Dev Agent Record) : + - **Message `:?`** (Docker Compose **2.40.3**) : les deux formes c1 (non citée) et c2 (citée) se lisent + avec les variables posées (`config -q` → 0) ; sans elles, code 1 et message restitué **avec ses + accents**. **Forme retenue : c1** (valeurs non citées, comme les lignes voisines). + - **Écart à la fiche — ordre** : la variable nommée **n'est pas stable** : sur 12 lancements, + `MARIADB_ROOT_PASSWORD` 5, `MARIADB_PASSWORD` 3, `DATABASE_URL` de `kesh-api` 4 (forme c1). L'AC 11 j + (« corriger la première, la seconde apparaît au lancement suivant ») est écrit comme : une variable à + la fois, pas toujours la même — poser les deux (C-15-13a-1). + - **Écart à la fiche — sous-commandes** : sur un projet jetable en marche, sans les variables, + `config`, `pull`, `up -d` refusent (code 1) ; `ps`, `logs`, `exec -T mariadb true`, `stop` **passent** + (code 0). L'AC 11 f (« le refus frappe toute sous-commande », « le script de sauvegarde lancé par + `cron` échoue ») est donc écrit selon la mesure (C-15-13a-1). Aucune règle ni AC changé sur le fond : + le manuel dit vrai, ce que l'AC demandait. + - **Graphie de `docker compose config`** : un service avec `ports` donne la forme longue + (`ports:` / `- mode: ingress` / `host_ip:` / `target:` / `published: "…"`) ; le service `mariadb` + sans `ports` n'en montre aucune (`grep -c ports` sur son bloc → 0). + - **`sqlx`, mauvais mot de passe** (MariaDB 10.11.16 jetable) : `connect` rend immédiatement (0 ms) + `Database(MySqlDatabaseError { code: Some("28000"), number: 1045, … "(using password: YES)" })` ; + l'extraction `as_database_error()?.try_downcast_ref::()?.number()` rend + `Some(1045)`. Base absente pour un compte sans droit : **1044**. Pas de repli textuel nécessaire. + - **Hôte du test 8** : `kesh-15-13.invalid` échoue en **16 ms** (`Io`, résolution) ; `127.0.0.1:1` + attend **10 000 ms** (`PoolTimedOut`). Retenu : `kesh-15-13.invalid`. + - **`make admin brochure` d'avant** : référence `target/gate-logs/15-13a-t0/` (`.log` : 55 lignes + `Overfull` au manuel d'administration ; aplatis). Contrôles de l'AC 11 l sur l'aplati d'avant : + `openssl rand -hex 32 # → mot de passe MariaDB` 0, `MARIADB_ROOT_PASSWORD"'` 0, `--protocol=TCP` 0, + `CURRENT_USER()` 0, `compose lisible` 0 ; `deux gestes` 1 ; `exec (-T )?db` 3 ; brochure `MARIADB` 0. + - **`.env` local** : absent du worktree (aucune mesure faussée). diff --git a/_bmad-output/implementation-artifacts/epic-15-choix-autonomes.md b/_bmad-output/implementation-artifacts/epic-15-choix-autonomes.md index a436c8be..a52c0e6a 100644 --- a/_bmad-output/implementation-artifacts/epic-15-choix-autonomes.md +++ b/_bmad-output/implementation-artifacts/epic-15-choix-autonomes.md @@ -5549,3 +5549,10 @@ l'import (#458–#461). - **Rectificatifs** (les entrées d'origine ne sont pas réécrites) : **C-15-13-9** — « cinq modules » ne vaut plus depuis le découpage (C-15-13-16) : la 15-13a en compte deux (`config`, `main`), la 15-13b quatre (`config`, `routes/admin`, `errors`, catalogues `kesh-i18n`) — R4-10 de la validation P4 de la 15-13b. **C-15-13-14** — « un montage ajouté demain est contrôlé sans retouche » n'était vrai que si l'assertion de montage du test 19 ne fixait pas le nombre d'entrées : elle exige désormais « au moins quatre », dont `/data/backup` (R4-5). **Inventaire de la 15-13a** — la ventilation « 29 + 6 → 36 » de la fiche index ne se refaisait pas ; seuls les totaux sont gardés (R4-7). - **Réversible** : oui. + +## C-15-13a-1 — 15-13a (T0) : le manuel dit le refus de Compose tel qu'il est mesuré — `config`, `pull` et `up` refusent, `ps`, `logs`, `exec`, `stop` restent utilisables, et la variable nommée change d'un lancement à l'autre + +- **Contexte** : l'AC 11 f affirmait, sous réserve de mesure au T0, que « le refus de Compose frappe toute sous-commande » (`ps`, `logs`, `exec`, `stop`, `down`) et que le script de sauvegarde lancé par `cron` échoue dès que `.env` perd une des deux lignes ; l'AC 11 j, que Compose nomme « la première » variable et que « la seconde apparaît au lancement suivant ». Mesuré le 2026-10-09 (Docker Compose 2.40.3, projet jetable `kesh1513a-t0`, service `mariadb` en marche, `env -u MARIADB_ROOT_PASSWORD -u MARIADB_PASSWORD`) : `config`, `pull`, `up -d` et `up -d kesh-api` sortent en code 1 avec `required variable … is missing a value` ; `ps`, `logs`, `exec -T mariadb true` et `stop` sortent en 0 et font leur travail. Et, sur 12 lancements de la même commande, la variable nommée varie : `MARIADB_ROOT_PASSWORD`, `MARIADB_PASSWORD` ou `DATABASE_URL` (de `kesh-api`, qui nomme `MARIADB_PASSWORD`) — ordre non déterministe. +- **Retenu** : le manuel, le CHANGELOG et `DOCKER_START.md` disent la mesure — refus de `config`, `pull`, `up` ; `ps`, `logs`, `exec`, `stop` encore utilisables avec la version mesurée (diagnostic et arrêt possibles ; le script de sauvegarde, qui passe par `exec`, ne dépend pas de `.env`, il lit le mot de passe dans le conteneur) ; Compose nomme **une** variable à la fois, **pas toujours la même** : poser les deux avant de relancer. La version mesurée est nommée, faute de pouvoir garantir les autres. +- **Écartées** : écrire l'affirmation de la fiche (fausse sur la version mesurée) ; ne rien dire des sous-commandes (l'exploitant face au refus doit savoir s'il peut encore diagnostiquer). +- **Réversible** : oui (texte). La règle (refus par Compose, avertissement par Kesh) n'est pas touchée : seul le constat documentaire change. diff --git a/_bmad-output/implementation-artifacts/sprint-status.yaml b/_bmad-output/implementation-artifacts/sprint-status.yaml index a172930b..1d8bc412 100644 --- a/_bmad-output/implementation-artifacts/sprint-status.yaml +++ b/_bmad-output/implementation-artifacts/sprint-status.yaml @@ -374,6 +374,9 @@ development_status: 15-12-cloture-dans-l-ordre: split # 2026-10-09 DÉCOUPÉE à la remédiation de la validation P2 (Sonnet ×2 : R 2 MEDIUM / 5 LOW, F 3 MEDIUM / 8 LOW → 0 C / 0 H / 4 MEDIUM / 10 LOW distincts ; F3 + R3 : la dérogation au découpage ne relevait pas de l'exception codifiée, la dépendance A/B n'était pas à sens unique — décision de l'orchestrateur, C107) en 15-12a (l'ordre, refs #543) + 15-12b (le filet, closes #543). Fiche devenue index ; version complète au commit dae3a618. Remédiation P2 portée dans les deux fiches (C108-C112). Historique : 2026-10-08 — closes #543 (P1). SPÉCIFIÉE (C89), EN VALIDATION. Clôture refusée tant qu'un exercice antérieur est ouvert (409 EARLIER_FISCAL_YEAR_OPEN), création refusée sous un exercice postérieur clos, filet LATER_FISCAL_YEAR_CLOSED généralisé aux deux points de passage du journal (create_in_tx_inner sans verrou, delete_in_tx sans condition — la dévalidation), lot de rapprochement, bandeau d'état hérité et bouton désactivé à l'écran des exercices. 23 AC, T0-T13. Dérogation au découpage (8 modules), coupe de repli 15-12a/15-12b. 2026-10-09 VALIDATION P1 (Opus ×2) : 1 HIGH / 4 MEDIUM / 14 LOW distincts, aucun recyclé, tous remédiés (C100 : preuve du filet refondue, tests de concurrence ordonnés, cycle clôture/contre-passation, réparation dans l'ordre LIFO, inventaire doc par recherche) ; dérogation recomptée (11 modules) et réargumentée, repli élargi au premier défaut recyclé. Prochaine : P2 complète (Sonnet). 15-12a-cloture-dans-l-ordre: done # 2026-10-09 — refs #543 (la 15-12b fermera l'issue). DONE : revue de code close (P1 Sonnet ×3 2 MEDIUM d'origine → P2 ciblée Haiku 0) ; rebasée sur de285ea8 (15-7a1, 15-11b) ; gates sur l'état rebasé : backend 2934/2934, Vitest 1095/1095, E2E 244 / 7 KF-029 + 2 KF-045 du matin + xss-token-protection:82 (montage, rejouée verte). Développement : mutations (i) (ii) (iv) (viii) (ix) (x) (xi) tuées, (iii) observée. (worktree kesh-15-12a, branche story/15-12a-cloture-dans-l-ordre). Validation close (P4 Sonnet ×2 : 0 au-dessus de LOW ; 15 des 16 LOW appliqués en T0, tous sauf R7 — fiche 15-1a, à l'orchestrateur). Invariant I : clôture refusée tant qu'un antérieur est ouvert (409 EARLIER_FISCAL_YEAR_OPEN), création refusée sous un postérieur clos (400 LATER_FISCAL_YEAR_CLOSED, message propre à la création — C-15-12a-1), antérieurs verrouillés un par un par clé primaire puis relecture verrouillante (C119), clôture et création rejouées. Ordre : 15-12a → 15-12b → 15-1a-i → 15-1a-ii. 15-12b-filet-sous-un-bilan-clos: done # 2026-10-09 — closes #543 (P1). DONE : revue de code close (P1 Sonnet ×3 : 0 au-dessus de LOW, 16 LOW traités sans ligne de production ; B-1 = E-1 suivi par #569 ; C-15-12b-4) ; rebasée sur 200f5e79 (15-7a2) ; gates sur l'état rebasé : backend 2993/2993, Vitest 1116/1116, E2E 246 / 7 KF-029 + 2 KF-045 + 1 pollution rejouée verte. DÉVELOPPÉE (worktree kesh-15-12b) : gates backend 2970/2970, Vitest 1115/1115, E2E 245 / 7 KF-029 + 2 KF-045 ; mutations (v) (vi) (vii-a) (vii-b) tuées ; choix C-15-12b-1 à 3. Historique : Créée au découpage de la 15-12 (C107), EN VALIDATION. ⛔ DÉPEND de 15-12a. Filet LATER_FISCAL_YEAR_CLOSED aux deux points de passage du journal (create_in_tx_inner sans verrou, delete_in_tx sans condition — la dévalidation), inventaire fermé des écrivains, lot de rapprochement aux trois voies dont accept_one_rule (C108), bandeau d'état hérité et réparation LIFO, autres écrans, prédicteurs d'annulation en angle mort (C120). 11 AC (numéros d'origine), 9 tâches ; 10 modules (dérogation écrite, C121). Avant la 15-1a de préférence (delete_in_tx partagé, C112 ; précédence C117). P3 (Opus ×2) remédiée le 2026-10-09. Prochaine : P4 ciblée (une lentille) sur le diff de la remédiation P3. + 15-13-mariadb-et-sauvegarde: split # 2026-10-09 DÉCOUPÉE après la validation P3 (signal D5 de recyclage levé deux passes de suite, C-15-13-16) en 15-13a (#551, MariaDB) + 15-13b (#552, #576, sauvegarde). Fiche devenue index ; fiche unique au commit 8a9bcd27. + 15-13a-mariadb-non-publiee-mots-de-passe-obligatoires: in-progress # 2026-10-09 — closes #551 (P2, sécurité), refs #577. Validation close (P1 8 MEDIUM → P2 6 → P3 5 → découpage → P4 1 → P5 ciblée 0). EN DÉVELOPPEMENT (worktree kesh-15-13a, branche story/15-13a-mariadb-non-publiee) ; T0 fait (C-15-13a-1). + 15-13b-sauvegarde-avant-import-persistante: ready-for-dev # 2026-10-09 — #552, #576. Créée au découpage de la 15-13 (C-15-13-16) ; indépendante de la 15-13a en code, mêmes fichiers (rebase et recompte des gestes du manuel). epic-15-retrospective: optional # --- v0.2 : Epics ajoutés au scoping 2026-06-04 (cf. _bmad-output/planning-artifacts/epic-17.md) --- # Ordre d'exécution v0.2 : E17 (infra) DÉMARRE, puis E11 TVA, E16 Facturation, E12, E13, E14, E15. From cffe516a2e57c5da498c720597a6b0406d519517 Mon Sep 17 00:00:00 2001 From: Guy Corbaz Date: Fri, 9 Oct 2026 06:39:41 +0200 Subject: [PATCH 03/14] =?UTF-8?q?feat(15-13a):=20MariaDB=20non=20publi?= =?UTF-8?q?=C3=A9e,=20mots=20de=20passe=20obligatoires=20dans=20docker-com?= =?UTF-8?q?pose.yml,=20gabarit=20sans=20mot=20de=20passe=20publi=C3=A9=20(?= =?UTF-8?q?refs=20#551)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- .env.example | 34 ++++++++++++++++++++++++++-------- docker-compose.yml | 20 +++++++++++++++----- 2 files changed, 41 insertions(+), 13 deletions(-) diff --git a/.env.example b/.env.example index e8c762f3..c2de54f6 100644 --- a/.env.example +++ b/.env.example @@ -44,6 +44,9 @@ # du service MariaDB sur le réseau Docker externe `frontend` (cf. docker-compose.prod.yml). # Si MariaDB tourne sur l'hôte NAS via Package Center DSM et que le réseau # Docker n'a pas accès direct, utiliser l'IP LAN du NAS au lieu du hostname. +# Mot de passe : le générer en HEXADÉCIMAL (`openssl rand -hex 32`) — une sortie +# base64 peut contenir `/`, qui termine l'identifiant dans une URL et rend +# DATABASE_URL inexploitable. DATABASE_URL=@:3306/kesh> # --- Application --- @@ -324,16 +327,31 @@ RUST_LOG=info # KESH_PRODUCTION_RESET= # ============================================================================= -# Service MariaDB bundled (DEV ONLY — docker-compose.yml + docker-compose.dev.yml) +# Service MariaDB intégré (docker-compose.yml — installation autonome) # ============================================================================= # -# Ces variables sont consommées par les composes dev (`docker-compose.yml` et -# `docker-compose.dev.yml`) qui démarrent un service MariaDB en sidecar pour -# le développement local. **PAS UTILISÉES par docker-compose.prod.yml** — -# en prod, MariaDB est fournie par l'utilisateur (Package Center DSM ou -# autre) et configurée via `DATABASE_URL` ci-dessus. +# Lues par `docker-compose.yml`, qui démarre Kesh ET sa base MariaDB. +# `docker-compose.prod.yml` ne les lit pas : il n'a pas de service MariaDB (la +# base est fournie par l'exploitant, cf. DATABASE_URL ci-dessus). +# `docker-compose.dev.yml` ne les lit pas : ses mots de passe de développement +# sont écrits en dur dans le fichier. +# +# 1. INSTALLATION EXISTANTE (mise à jour) : reprendre la valeur avec laquelle la +# base a été créée, JAMAIS une neuve (manuel d'administration, § Passer à la +# 0.13.0). MariaDB ne lit ces deux valeurs qu'à la CRÉATION de la base : les +# changer ici ensuite ne change pas le mot de passe enregistré, et Kesh +# échoue à se connecter (erreur 1045). Pour changer un mot de passe : +# manuel d'administration, § Changer un mot de passe MariaDB. +# 2. INSTALLATION NEUVE : générer chaque mot de passe par +# openssl rand -hex 32 +# (hexadécimal : un mot de passe base64 peut contenir `/`, qui casse une +# DATABASE_URL), décommenter la ligne et y écrire la valeur. +# +# Sans ces deux lignes, Compose refuse de démarrer en nommant la variable. +# Décommentée SANS valeur (`MARIADB_PASSWORD=`), une ligne fait aussi refuser +# Compose : une valeur vide n'est pas un mot de passe. -MARIADB_ROOT_PASSWORD=kesh_dev_root +#MARIADB_ROOT_PASSWORD= MARIADB_DATABASE=kesh MARIADB_USER=kesh -MARIADB_PASSWORD=kesh_dev +#MARIADB_PASSWORD= diff --git a/docker-compose.yml b/docker-compose.yml index 40a24dc6..9039b66e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,12 +5,22 @@ services: container_name: kesh-mariadb restart: unless-stopped environment: - MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD:-kesh_dev_root} + # Mots de passe OBLIGATOIRES (`:?`) : sans eux dans `.env`, Compose refuse + # de démarrer en nommant la variable. MariaDB ne les lit qu'à la CRÉATION + # de la base : les changer ensuite dans `.env` ne change pas le mot de + # passe enregistré (manuel d'administration, § Passer à la 0.13.0). + MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD:?à poser dans .env. Installation existante, reprendre la valeur avec laquelle la base a été créée, jamais une neuve (manuel d'administration, Passer à la 0.13.0)} MARIADB_DATABASE: ${MARIADB_DATABASE:-kesh} MARIADB_USER: ${MARIADB_USER:-kesh} - MARIADB_PASSWORD: ${MARIADB_PASSWORD:-kesh_dev} - ports: - - "3306:3306" + MARIADB_PASSWORD: ${MARIADB_PASSWORD:?à poser dans .env. Installation existante, reprendre la valeur avec laquelle la base a été créée, jamais une neuve (manuel d'administration, Passer à la 0.13.0)} + # Port 3306 NON publié : Kesh atteint MariaDB par le réseau interne + # `kesh-network` (hôte `mariadb`). Un port publié par Docker contourne le + # pare-feu de l'hôte (UFW) et ouvrirait la base à tout le réseau. + # Accès à la base : `docker compose exec mariadb mariadb -u kesh -p`. + # Dépannage ponctuel SEULEMENT — décommenter, lié au loopback, jamais sans + # adresse, puis recommenter : + # ports: + # - "127.0.0.1:3306:3306" volumes: - kesh-mariadb-data:/var/lib/mysql networks: @@ -50,7 +60,7 @@ services: # ne relit pas `.env`). # # Base de données — correspond au service mariadb ci-dessus - DATABASE_URL: mysql://${MARIADB_USER:-kesh}:${MARIADB_PASSWORD:-kesh_dev}@mariadb:3306/${MARIADB_DATABASE:-kesh} + DATABASE_URL: mysql://${MARIADB_USER:-kesh}:${MARIADB_PASSWORD:?à poser dans .env. Installation existante, reprendre la valeur avec laquelle la base a été créée, jamais une neuve (manuel d'administration, Passer à la 0.13.0)}@mariadb:3306/${MARIADB_DATABASE:-kesh} # Application KESH_PORT: ${KESH_PORT:-80} From ea144df9d429a9e638d6283c8beea3589ba8d052 Mon Sep 17 00:00:00 2001 From: Guy Corbaz Date: Fri, 9 Oct 2026 06:41:48 +0200 Subject: [PATCH 04/14] =?UTF-8?q?feat(15-13a):=20avertissement=20au=20d?= =?UTF-8?q?=C3=A9marrage=20pour=20un=20mot=20de=20passe=20publi=C3=A9=20ou?= =?UTF-8?q?=20gabarit=20dans=20DATABASE=5FURL,=20indice=20sur=20le=20refus?= =?UTF-8?q?=201045=20(refs=20#551)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- Cargo.lock | 2 + crates/kesh-api/Cargo.toml | 7 +++ crates/kesh-api/src/config.rs | 105 +++++++++++++++++++++++++++++++++- crates/kesh-api/src/main.rs | 14 ++++- 4 files changed, 125 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 917a500e..78e83d8b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1986,6 +1986,7 @@ dependencies = [ "kesh-seed", "lettre", "pdfium-render", + "percent-encoding", "proc-macro2", "quote", "reqwest", @@ -2008,6 +2009,7 @@ dependencies = [ "tracing-appender", "tracing-subscriber", "unicode-normalization", + "url", "uuid", "yaml-rust2", "zip", diff --git a/crates/kesh-api/Cargo.toml b/crates/kesh-api/Cargo.toml index f12e1554..f7527fe9 100644 --- a/crates/kesh-api/Cargo.toml +++ b/crates/kesh-api/Cargo.toml @@ -69,6 +69,13 @@ lettre = { version = "0.11", default-features = false, features = [ "builder", ] } +# Story 15-13a (#551) — lecture du mot de passe de `DATABASE_URL` pour +# l'avertissement « mot de passe publié / gabarit ». `url` rend le mot de passe +# encodé ; `percent-encoding` le décode (`url` ne le réexporte pas). Toutes deux +# déjà au Cargo.lock (dépendances transitives) : aucun paquet neuf. +url = "2" +percent-encoding = "2" + [dev-dependencies] tower = { version = "0.5", features = ["util"] } http-body-util = "0.1" diff --git a/crates/kesh-api/src/config.rs b/crates/kesh-api/src/config.rs index 49110b00..aa83df27 100644 --- a/crates/kesh-api/src/config.rs +++ b/crates/kesh-api/src/config.rs @@ -575,6 +575,12 @@ impl Config { let database_url = env_nonempty("DATABASE_URL") .ok_or_else(|| ConfigError::MissingVar("DATABASE_URL".into()))?; + // Story 15-13a (#551) : un mot de passe publié dans le dépôt, ou un + // gabarit du manuel recopié, protège la base comme aucun mot de passe. + // Avertir, jamais refuser (C-15-13-2) : la pile de dev et les tests + // tournent sur `kesh_dev`. + avertir_mot_de_passe_base(&database_url); + let port = match env_nonempty("KESH_PORT") { Some(val) => match val.parse::() { Ok(0) => { @@ -1385,6 +1391,101 @@ pub fn env_nonempty(name: &str) -> Option { } } +/// Mots de passe MariaDB que Kesh a lui-même **distribués comme défaut** d'une +/// installation (`docker-compose.yml` et `.env.example` jusqu'à la 0.12.1) : +/// publiés dans le dépôt, donc connus de tous. Liste fermée, comparaison +/// exacte et sensible à la casse. Story 15-13a (#551). +/// +/// Angle mort assumé : d'autres littéraux du dépôt (`kesh_root` de la CI, +/// exemples du manuel hors Docker) n'y entrent pas — ils n'ont jamais été le +/// défaut d'une installation. +pub const MOTS_DE_PASSE_PUBLIES: &[&str] = &["kesh_dev", "kesh_dev_root"]; + +/// Avertissement émis quand le mot de passe de `DATABASE_URL` figure dans +/// [`MOTS_DE_PASSE_PUBLIES`]. Ne cite ni le mot de passe ni l'URL. +pub const AVERTISSEMENT_MOT_DE_PASSE_PUBLIE: &str = "Le mot de passe de DATABASE_URL est un mot de passe publié dans le dépôt Kesh (ancienne valeur par défaut) : acceptable pour le développement seulement. Le changer — manuel d'administration, § Passer à la 0.13.0 et § Changer un mot de passe MariaDB."; + +/// Avertissement émis quand le mot de passe de `DATABASE_URL` est un +/// placeholder de gabarit (cf. [`is_template_placeholder`]). Distinct de +/// [`AVERTISSEMENT_MOT_DE_PASSE_PUBLIE`] : le remède n'est pas le même. Ne cite +/// ni le mot de passe ni l'URL. +pub const AVERTISSEMENT_MOT_DE_PASSE_GABARIT: &str = "Le mot de passe de DATABASE_URL est un placeholder de gabarit (par exemple une valeur entre chevrons <…> recopiée du manuel) : il protège la base comme un mot de passe publié. Le changer — manuel d'administration, § Changer un mot de passe MariaDB (ALTER USER d'abord, .env ensuite)."; + +/// Ce que le contrôle du mot de passe de `DATABASE_URL` reconnaît. +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +enum MotDePasseBase { + /// Une entrée de [`MOTS_DE_PASSE_PUBLIES`]. + Publie, + /// Un placeholder de gabarit ([`is_template_placeholder`]). + Gabarit, +} + +/// Qualifie le mot de passe de `database_url`. +/// +/// L'URL est analysée par `url` ; [`url::Url::password`] rend la forme +/// **encodée**, décodée ici par `percent_decode_str` puis +/// `decode_utf8_lossy` — pas par `form_urlencoded` (qui lirait `+` comme un +/// espace), pas par `decode_utf8` (dont l'erreur sur `%FF` inviterait à faire +/// échouer le démarrage : une valeur non UTF-8 n'est ni publiée ni gabarit, et +/// sa forme décodée avec `U+FFFD` ne déclenche rien). +/// +/// `None` pour une URL qui ne s'analyse pas (mot de passe contenant `/`, `?` +/// ou `#` non encodés : l'autorité est tronquée), sans mot de passe, ou au mot +/// de passe ni publié ni gabarit. Aucune des listes n'est entre chevrons : un +/// même mot de passe ne peut être les deux. +fn qualifier_mot_de_passe_base(database_url: &str) -> Option { + let url = url::Url::parse(database_url).ok()?; + let encode = url.password()?; + let decode = percent_encoding::percent_decode_str(encode).decode_utf8_lossy(); + if MOTS_DE_PASSE_PUBLIES.contains(&decode.as_ref()) { + Some(MotDePasseBase::Publie) + } else if is_template_placeholder(&decode) { + Some(MotDePasseBase::Gabarit) + } else { + None + } +} + +/// Émet au plus **un** `tracing::warn!` selon [`qualifier_mot_de_passe_base`]. +/// N'empêche jamais le démarrage (AC 5 b de la Story 15-13a). +fn avertir_mot_de_passe_base(database_url: &str) { + match qualifier_mot_de_passe_base(database_url) { + Some(MotDePasseBase::Publie) => tracing::warn!("{}", AVERTISSEMENT_MOT_DE_PASSE_PUBLIE), + Some(MotDePasseBase::Gabarit) => { + tracing::warn!("{}", AVERTISSEMENT_MOT_DE_PASSE_GABARIT) + } + None => {} + } +} + +/// Numéro d'erreur MariaDB **1045** : *Access denied for user … (using +/// password: …)* — l'identifiant est refusé. +pub const MARIADB_ACCES_REFUSE: u16 = 1045; + +/// Indice ajouté au message d'échec de connexion initiale quand MariaDB refuse +/// l'identifiant (1045). Ne cite ni `DATABASE_URL` ni son mot de passe. +pub const INDICE_ACCES_REFUSE: &str = "Indice : MariaDB refuse l'identifiant de DATABASE_URL. Avec docker-compose.yml : MARIADB_PASSWORD n'est lu qu'à la création de la base — changer sa valeur dans .env ne change pas le mot de passe enregistré (manuel d'administration, Passer à la 0.13.0)."; + +/// Extrait le numéro d'erreur MariaDB d'une erreur `sqlx`, s'il y en a un +/// (`Error::Database` d'origine MySQL/MariaDB). Story 15-13a (#551). +/// +/// Séparée de [`indice_connexion`] parce que `MySqlDatabaseError` n'a pas de +/// constructeur public : seul un binaire réel (test `demarrage_mariadb`) peut +/// exercer l'extraction ; la décision, pure, se teste seule. +pub fn numero_erreur_mariadb(erreur: &sqlx::Error) -> Option { + erreur + .as_database_error()? + .try_downcast_ref::() + .map(|e| e.number()) +} + +/// Indice à joindre au message d'échec de connexion, selon le numéro d'erreur +/// MariaDB : [`INDICE_ACCES_REFUSE`] pour 1045, rien sinon (1044 — droits sur +/// la base —, 1049 — base absente —, erreur réseau). Pure. +pub fn indice_connexion(numero: Option) -> Option<&'static str> { + (numero == Some(MARIADB_ACCES_REFUSE)).then_some(INDICE_ACCES_REFUSE) +} + /// Sous-chaînes (en minuscules) qui signalent un placeholder du gabarit /// `.env.example` resté tel quel — comparées au texte passé par /// `to_ascii_lowercase`. Story 15-11a (#557). @@ -1401,7 +1502,9 @@ const TEMPLATE_PLACEHOLDERS: &[&str] = &["generate_me"]; /// Le trim est local au contrôle : il ne présume pas de la lecture (depuis la /// Story 15-11b, `env_nonempty` trime déjà les deux secrets), et `" "` doit /// être refusé quand même. Sert aux contrôles de -/// `KESH_JWT_SECRET` et de `KESH_ADMIN_PASSWORD` dans [`Config::from_env`]. +/// `KESH_JWT_SECRET` et de `KESH_ADMIN_PASSWORD` dans [`Config::from_env`], +/// et à l'avertissement sur le mot de passe de `DATABASE_URL` +/// ([`qualifier_mot_de_passe_base`], Story 15-13a). fn is_template_placeholder(value: &str) -> bool { let lower = value.to_ascii_lowercase(); if TEMPLATE_PLACEHOLDERS.iter().any(|p| lower.contains(p)) { diff --git a/crates/kesh-api/src/main.rs b/crates/kesh-api/src/main.rs index 6fdb14d0..6fa76a38 100644 --- a/crates/kesh-api/src/main.rs +++ b/crates/kesh-api/src/main.rs @@ -80,9 +80,19 @@ async fn main() { pool } Err(e) => { + // Story 15-13a (#551) : un 1045 (identifiant refusé) reçoit un + // indice — le piège le plus probable après la 0.13.0 est un mot de + // passe neuf écrit dans `.env` alors que MariaDB garde celui de la + // création. Ni le message ni l'indice ne citent l'URL. + let indice = kesh_api::config::indice_connexion( + kesh_api::config::numero_erreur_mariadb(&e), + ) + .map(|i| format!(" — {i}")) + .unwrap_or_default(); tracing::error!( - "Base de données indisponible au démarrage — l'authentification ne peut pas fonctionner sans DB. Arrêt. Erreur : {}", - e + "Base de données indisponible au démarrage — l'authentification ne peut pas fonctionner sans DB. Arrêt. Erreur : {}{}", + e, + indice ); std::process::exit(1); } From d607b59cf7e82719e466feee496ecab711869093 Mon Sep 17 00:00:00 2001 From: Guy Corbaz Date: Fri, 9 Oct 2026 06:53:54 +0200 Subject: [PATCH 05/14] =?UTF-8?q?test(15-13a):=20contr=C3=B4le=20(M)=20du?= =?UTF-8?q?=20service=20mariadb,=20mots=20de=20passe=20publi=C3=A9s,=20ave?= =?UTF-8?q?rtissement=20et=20indice=201045=20au=20binaire=20r=C3=A9el=20;?= =?UTF-8?q?=20Interpolation::Obligatoire=20scind=C3=A9e,=20helper=20lancer?= =?UTF-8?q?=5Fbinaire=20(refs=20#551)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- crates/kesh-api/src/config.rs | 91 ++++++ crates/kesh-api/src/main.rs | 9 +- crates/kesh-api/tests/common/binaire.rs | 34 +++ .../kesh-api/tests/configuration_transmise.rs | 261 +++++++++++++++--- crates/kesh-api/tests/demarrage_mariadb.rs | 84 ++++++ 5 files changed, 440 insertions(+), 39 deletions(-) create mode 100644 crates/kesh-api/tests/common/binaire.rs create mode 100644 crates/kesh-api/tests/demarrage_mariadb.rs diff --git a/crates/kesh-api/src/config.rs b/crates/kesh-api/src/config.rs index aa83df27..4c189530 100644 --- a/crates/kesh-api/src/config.rs +++ b/crates/kesh-api/src/config.rs @@ -3537,3 +3537,94 @@ mod smtp_config_tests { assert_eq!(config.smtp_host.as_deref(), Some("fd00::25")); } } + +/// Story 15-13a (#551) — avertissement sur le mot de passe de `DATABASE_URL` +/// et indice du refus 1045. +#[cfg(test)] +mod mot_de_passe_base_tests { + use super::tests::{env_lock, from_env_with}; + use super::*; + + /// Compte les deux avertissements dans `logs`. + fn compte(logs: &str) -> (usize, usize) { + ( + logs.matches(AVERTISSEMENT_MOT_DE_PASSE_PUBLIE).count(), + logs.matches(AVERTISSEMENT_MOT_DE_PASSE_GABARIT).count(), + ) + } + + /// Test 7 de la fiche — AC 5 a, a-bis, b. Chaque cas averti l'est **une** + /// fois, par le bon message ; les témoins ne déclenchent rien ; aucun + /// message capturé ne contient le mot de passe (formes encodée et décodée) + /// ni l'URL ; `from_env` réussit toujours. + #[test] + fn from_env_warns_on_published_database_password() { + // (URL, mot de passe encodé, mot de passe décodé) + let publies = [ + ("mysql://kesh:kesh_dev@h/kesh", "kesh_dev", "kesh_dev"), + ( + "mysql://kesh:kesh_dev_root@h/kesh", + "kesh_dev_root", + "kesh_dev_root", + ), + ("mysql://kesh:kesh%5Fdev@h/kesh", "kesh%5Fdev", "kesh_dev"), + ]; + let gabarits = [ + ( + "mysql://kesh:%3Cmot%20de%20passe%20utilisateur%20applicatif%3E@h/kesh", + "%3Cmot%20de%20passe%20utilisateur%20applicatif%3E", + "", + ), + // Forme non encodée, telle que Compose la compose depuis `.env` : + // `url` encode l'espace et les chevrons de l'identifiant. + ( + "mysql://kesh:@h/kesh", + "%3Cmot%20de%20passe%20utilisateur%20applicatif%3E", + "", + ), + ( + "mysql://kesh:%3CMARIADB_PASSWORD%3E@h/kesh", + "%3CMARIADB_PASSWORD%3E", + "", + ), + ]; + let temoins = [ + "mysql://kesh_dev:fort-7f3a9c2e@h/kesh", // l'utilisateur, pas le mot de passe + "mysql://kesh:Kesh_Dev@h/kesh", // casse + "mysql://kesh:a%3Cb%3Ec@h/kesh", // chevrons intérieurs + "mysql://kesh:%FF@h/kesh", // octet non UTF-8 + "mysql://kesh:9f2c4e7a1b3d5f60@h/kesh", // mot de passe fort + "mysql://kesh@h/kesh", // sans mot de passe + ]; + + let _guard = env_lock(); + for (attendu, cas) in [((1, 0), &publies[..]), ((0, 1), &gabarits[..])] { + for (url, encode, decode) in cas { + let (result, logs) = from_env_with(&[("DATABASE_URL", url)]); + assert!(result.is_ok(), "{url} : Kesh démarre quand même"); + assert_eq!(compte(&logs), attendu, "{url} : logs = {logs}"); + for interdit in [*url, *encode, *decode] { + assert!( + !logs.contains(interdit), + "{url} : le journal cite « {interdit} » : {logs}" + ); + } + } + } + for url in temoins { + let (result, logs) = from_env_with(&[("DATABASE_URL", url)]); + assert!(result.is_ok(), "{url} : Kesh démarre"); + assert_eq!(compte(&logs), (0, 0), "{url} : logs = {logs}"); + } + } + + /// Test 9 de la fiche — AC 6 b : la décision pure. + #[test] + fn indice_connexion_refusee() { + assert_eq!(indice_connexion(Some(1045)), Some(INDICE_ACCES_REFUSE)); + for autre in [Some(1049), Some(1044), None] { + assert_eq!(indice_connexion(autre), None, "{autre:?}"); + } + assert!(!INDICE_ACCES_REFUSE.contains("mysql://")); + } +} diff --git a/crates/kesh-api/src/main.rs b/crates/kesh-api/src/main.rs index 6fa76a38..8fbecbe2 100644 --- a/crates/kesh-api/src/main.rs +++ b/crates/kesh-api/src/main.rs @@ -84,11 +84,10 @@ async fn main() { // indice — le piège le plus probable après la 0.13.0 est un mot de // passe neuf écrit dans `.env` alors que MariaDB garde celui de la // création. Ni le message ni l'indice ne citent l'URL. - let indice = kesh_api::config::indice_connexion( - kesh_api::config::numero_erreur_mariadb(&e), - ) - .map(|i| format!(" — {i}")) - .unwrap_or_default(); + let indice = + kesh_api::config::indice_connexion(kesh_api::config::numero_erreur_mariadb(&e)) + .map(|i| format!(" — {i}")) + .unwrap_or_default(); tracing::error!( "Base de données indisponible au démarrage — l'authentification ne peut pas fonctionner sans DB. Arrêt. Erreur : {}{}", e, diff --git a/crates/kesh-api/tests/common/binaire.rs b/crates/kesh-api/tests/common/binaire.rs new file mode 100644 index 00000000..14f61a87 --- /dev/null +++ b/crates/kesh-api/tests/common/binaire.rs @@ -0,0 +1,34 @@ +//! Lancement du binaire `kesh-api` dans un environnement maîtrisé — Story +//! 15-13a (factorisé de `configuration_transmise.rs`). +//! +//! Inclus par `#[path = "common/binaire.rs"] mod binaire;` — **pas** par +//! `mod common;`, qui tirerait l'amorce de base de `common/mod.rs` dans des +//! binaires de test qui ne l'emploient pas. +//! +//! Le helper ne fait **aucune** assertion : chaque appelant pose la sienne +//! (code de sortie, contenu de la sortie). + +/// Lance `kesh-api` dans un répertoire temporaire (aucun `.env` à charger), +/// avec un environnement **vidé** (`env_clear`), `NO_COLOR=1`, puis les +/// couples `env` dans l'ordre donné. Attend la fin du processus. +pub fn lancer_binaire(env: &[(&str, &str)]) -> std::process::Output { + let dir = tempfile::tempdir().expect("répertoire temporaire"); + let mut commande = std::process::Command::new(env!("CARGO_BIN_EXE_kesh-api")); + commande + .current_dir(dir.path()) + .env_clear() + .env("NO_COLOR", "1"); + for (cle, valeur) in env { + commande.env(cle, valeur); + } + commande.output().expect("lancement du binaire kesh-api") +} + +/// Sortie complète d'un lancement (stdout puis stderr), en texte. +pub fn texte(sortie: &std::process::Output) -> String { + format!( + "{}{}", + String::from_utf8_lossy(&sortie.stdout), + String::from_utf8_lossy(&sortie.stderr) + ) +} diff --git a/crates/kesh-api/tests/configuration_transmise.rs b/crates/kesh-api/tests/configuration_transmise.rs index fa6f693a..361fbeda 100644 --- a/crates/kesh-api/tests/configuration_transmise.rs +++ b/crates/kesh-api/tests/configuration_transmise.rs @@ -30,6 +30,13 @@ //! catalogues i18n, du manuel français **et des littéraux de chaîne du code //! de production** (doc-comments, macros, attributs compris) nomme une //! variable connue. +//! - **(M) Service MariaDB** (15-13a, #551) — le service `mariadb` de +//! `docker-compose.yml` ne publie aucun port (pas de clé `ports:`) et ses +//! deux mots de passe sont de la forme `${NOM:?…}` (obligatoires, vide +//! refusé) ; la `DATABASE_URL` composée de `kesh-api` exige +//! `${MARIADB_PASSWORD:?` (famille (V), [`VALEURS_COMPOSEES`]) ; aucun +//! fichier distribué ne porte `kesh_dev`, et les mots de passe MariaDB de +//! `.env.example` sont des lignes commentées. //! - **(S) Auto-test** des extracteurs sur des sources synthétiques. //! //! # Ce qu'elle n'établit PAS (angles morts écrits) @@ -49,7 +56,10 @@ //! (`rust_log_vide_vaut_info`). //! `TMPDIR` (`std::env::temp_dir()`) est inventorié mais non compté dans //! l'ensemble lu. `docker-compose.dev.yml` (pile de développement, non -//! distribuée) n'est pas contraint. +//! distribuée) n'est pas contraint — ni par (T), ni par (M) : ses mots de +//! passe de développement et son port en loopback y restent. (M) ne voit pas +//! un mot de passe **root** posé dans `.env` sur une valeur gabarit `<…>` +//! (issue #578). //! //! L'analyseur YAML (`yaml-rust2`) ne connaît pas les clés de fusion //! (`<<: *ancre`) : une forme non reconnue fait **rougir**, jamais passer. La @@ -61,6 +71,9 @@ use std::path::{Path, PathBuf}; use yaml_rust2::{Yaml, YamlLoader}; +#[path = "common/binaire.rs"] +mod binaire; + // --------------------------------------------------------------------------- // Listes fermées // --------------------------------------------------------------------------- @@ -168,8 +181,10 @@ const AJOUTS: &[(&str, Compose)] = &[ /// valeur contient l'interpolation annoncée. const VALEURS_COMPOSEES: &[(&str, Compose, &str)] = &[ // `docker-compose.yml` compose l'URL depuis les `MARIADB_*` de son - // service MariaDB : la ligne `DATABASE_URL` de `.env` y est ignorée. - ("DATABASE_URL", Compose::Y, "${MARIADB_"), + // service MariaDB : la ligne `DATABASE_URL` de `.env` y est ignorée. Le + // mot de passe y est OBLIGATOIRE et non vide (Story 15-13a, #551) : aucun + // défaut publié ne doit pouvoir s'y glisser. + ("DATABASE_URL", Compose::Y, "${MARIADB_PASSWORD:?"), ]; /// Variables de `.env.example` que le code ne lit pas, utilisées par les @@ -258,9 +273,12 @@ enum ValeurEnv { NonReconnue(String), } -/// Le service `kesh-api` d'un compose, tel que ce test le lit. +/// Un service d'un compose (`kesh-api`, ou `mariadb` depuis la Story 15-13a), +/// tel que ce test le lit. #[derive(Debug, Default)] struct Service { + /// Clé `ports:` présente (quelle qu'en soit la forme). Story 15-13a. + ports: bool, /// Entrées de `environment:`, dans l'ordre. environnement: Vec<(String, ValeurEnv)>, /// `env_file` présent. @@ -293,23 +311,25 @@ fn scalaire(y: &Yaml) -> Option { } } -/// Analyse un compose et rend son service `kesh-api`, ou les raisons pour +/// Analyse un compose et rend son service `nom`, ou les raisons pour /// lesquelles il ne se lit pas (forme non reconnue : rouge, jamais ignorée). -fn service_kesh_api(source: &str) -> Result> { +/// Généralisée de `service_kesh_api` à la Story 15-13a (service `mariadb`). +fn service(source: &str, nom: &str) -> Result> { let docs = YamlLoader::load_from_str(source).map_err(|e| vec![format!("YAML invalide : {e}")])?; let doc = docs .first() .ok_or_else(|| vec!["document YAML vide".to_string()])?; - let svc = &doc["services"]["kesh-api"]; + let svc = &doc["services"][nom]; let Some(hash) = svc.as_hash() else { - return Err(vec!["service `kesh-api` introuvable".to_string()]); + return Err(vec![format!("service `{nom}` introuvable")]); }; let mut erreurs = Vec::new(); let mut out = Service::default(); for (k, v) in hash { match k.as_str() { Some("env_file") => out.env_file = true, + Some("ports") => out.ports = true, Some("image") => out.image = scalaire(v), Some("volumes") => match v { Yaml::Array(a) => out.volumes = a.clone(), @@ -538,8 +558,11 @@ enum Interpolation<'a> { DefautSiVide(&'a str, &'a str), /// `${NOM-défaut}` DefautSiAbsente(&'a str, &'a str), - /// `${NOM:?message}` ou `${NOM?message}` - Obligatoire(&'a str), + /// `${NOM:?message}` : refuse une variable absente **ou vide**. + ObligatoireNonVide(&'a str), + /// `${NOM?message}` : ne refuse qu'une variable **absente** — une ligne + /// `NOM=` vide passe. Scindée de la précédente à la Story 15-13a. + ObligatoireSiAbsente(&'a str), } fn interpolation(valeur: &str) -> Option> { @@ -560,8 +583,10 @@ fn interpolation(valeur: &str) -> Option> { Some(Interpolation::DefautSiVide(nom, d)) } else if let Some(d) = reste.strip_prefix('-') { Some(Interpolation::DefautSiAbsente(nom, d)) - } else if reste.starts_with(":?") || reste.starts_with('?') { - Some(Interpolation::Obligatoire(nom)) + } else if reste.starts_with(":?") { + Some(Interpolation::ObligatoireNonVide(nom)) + } else if reste.starts_with('?') { + Some(Interpolation::ObligatoireSiAbsente(nom)) } else { None } @@ -623,7 +648,8 @@ fn controle_valeur(compose: Compose, cle: &str, valeur: &ValeurEnv) -> Option n, + | Interpolation::ObligatoireNonVide(n) + | Interpolation::ObligatoireSiAbsente(n) => n, }; if nom != cle { return Some(format!( @@ -662,6 +688,93 @@ fn controle_valeur(compose: Compose, cle: &str, valeur: &ValeurEnv) -> Option Vec { + let svc = match service(source, "mariadb") { + Ok(s) => s, + Err(e) => return e, + }; + let mut erreurs = Vec::new(); + if svc.ports { + erreurs.push( + "service `mariadb` : clé `ports:` présente — le port de la base ne doit pas être publié \ + (Kesh passe par le réseau interne ; un port publié contourne UFW)" + .to_string(), + ); + } + for cle in MOTS_DE_PASSE_MARIADB { + let ok = match svc.valeur(cle) { + Some(ValeurEnv::Scalaire(v)) => { + matches!(interpolation(v), Some(Interpolation::ObligatoireNonVide(n)) if n == *cle) + } + _ => false, + }; + if !ok { + erreurs.push(format!( + "service `mariadb` : `{cle}` doit être de la forme `${{{cle}:?message}}` (obligatoire, \ + non vide, sans défaut), trouvé {:?}", + svc.valeur(cle) + )); + } + } + erreurs +} + +/// (M) Aucun fichier distribué ne porte [`MOT_DE_PASSE_PUBLIE`] (recherche de +/// sous-chaîne, commentaires compris) ; dans `.env.example`, toute ligne +/// d'affectation d'un mot de passe MariaDB est commentée. `fichiers` : +/// (nom, contenu). +fn controle_mots_de_passe_publies(fichiers: &[(&str, &str)]) -> Vec { + let mut erreurs = Vec::new(); + for (nom, contenu) in fichiers { + for (i, ligne) in contenu.lines().enumerate() { + if ligne.contains(MOT_DE_PASSE_PUBLIE) { + erreurs.push(format!( + "{nom}:{} : mot de passe publié `{MOT_DE_PASSE_PUBLIE}`", + i + 1 + )); + } + } + if *nom == ".env.example" { + for (i, var, commentee) in lignes_affectation(contenu) { + if MOTS_DE_PASSE_MARIADB.contains(&var.as_str()) && !commentee { + erreurs.push(format!( + ".env.example:{} : `{var}` doit rester commentée et sans valeur (un `.env` copié \ + du gabarit fait alors refuser Compose)", + i + 1 + )); + } + } + } + } + erreurs +} + /// Lignes d'affectation de `.env.example` : `^#?\s*[A-Z][A-Z0-9_]*=`. Rend /// (index de ligne, nom, commentée). fn lignes_affectation(source: &str) -> Vec<(usize, String, bool)> { @@ -1685,9 +1798,9 @@ fn corpus_code() -> Vec<(String, String)> { fn services() -> (Service, Service, String) { let y_source = lire(Compose::Y.fichier()); let p_source = lire(Compose::P.fichier()); - let y = service_kesh_api(&y_source).unwrap_or_else(|e| panic!("docker-compose.yml : {e:?}")); - let p = - service_kesh_api(&p_source).unwrap_or_else(|e| panic!("docker-compose.prod.yml : {e:?}")); + let y = service(&y_source, "kesh-api").unwrap_or_else(|e| panic!("docker-compose.yml : {e:?}")); + let p = service(&p_source, "kesh-api") + .unwrap_or_else(|e| panic!("docker-compose.prod.yml : {e:?}")); (y, p, y_source) } @@ -1756,6 +1869,38 @@ fn env_example() { ); } +/// Test 1 de la fiche 15-13a — (M) le service `mariadb` de +/// `docker-compose.yml`. +#[test] +fn mariadb() { + echouer_si( + controle_service_mariadb(&lire(Compose::Y.fichier())), + "(M) service mariadb", + ); +} + +/// Test 2 de la fiche 15-13a — (M) aucun mot de passe publié dans les +/// fichiers distribués ; mots de passe MariaDB commentés dans le gabarit. +#[test] +fn mots_de_passe_publies() { + let contenus: Vec<(&str, String)> = FICHIERS_DISTRIBUES.iter().map(|f| (*f, lire(f))).collect(); + let fichiers: Vec<(&str, &str)> = contenus.iter().map(|(n, c)| (*n, c.as_str())).collect(); + // Assertion de montage : le gabarit porte bien les deux lignes commentées. + let gabarit = &contenus[2].1; + for cle in MOTS_DE_PASSE_MARIADB { + assert!( + lignes_affectation(gabarit) + .iter() + .any(|(_, v, c)| v == cle && *c), + "montage : `#{cle}=` attendue dans .env.example" + ); + } + echouer_si( + controle_mots_de_passe_publies(&fichiers), + "(M) mots de passe publiés", + ); +} + #[test] fn fantomes() { let mut corpus = corpus_texte(); @@ -1777,7 +1922,7 @@ fn lectures() { fn svc(env_yaml: &str) -> Service { let source = format!("services:\n kesh-api:\n environment:\n{env_yaml}"); - service_kesh_api(&source).expect("YAML synthétique valide") + service(&source, "kesh-api").expect("YAML synthétique valide") } fn valeur_de(env_yaml: &str, cle: &str, compose: Compose) -> Option { @@ -1793,6 +1938,63 @@ fn s_liste_et_dictionnaire_rendent_les_memes_cles() { assert_eq!(d.valeur("KESH_PORT"), l.valeur("KESH_PORT")); } +/// Test 4 de la fiche 15-13a — (S) le contrôle (M) du service `mariadb` sur +/// des sources synthétiques. +#[test] +fn s_service_mariadb() { + let source = |root: &str, mdp: &str, ports: &str| { + format!( + "services:\n mariadb:\n environment:\n MARIADB_ROOT_PASSWORD: {root}\n \ + MARIADB_PASSWORD: {mdp}\n{ports}" + ) + }; + let ok_root = "${MARIADB_ROOT_PASSWORD:?m}"; + let ok_mdp = "${MARIADB_PASSWORD:?m}"; + // Acceptées : forme `:?` nue, et citée (les guillemets tombent à l'analyse). + assert_eq!( + controle_service_mariadb(&source(ok_root, ok_mdp, "")), + Vec::::new() + ); + assert_eq!( + controle_service_mariadb(&source(&format!("\"{ok_root}\""), ok_mdp, "")), + Vec::::new() + ); + // Refusées. + for (cas, src) in [ + ( + "ports", + source( + ok_root, + ok_mdp, + " ports:\n - \"127.0.0.1:3306:3306\"\n", + ), + ), + ("défaut", source(ok_root, "${MARIADB_PASSWORD:-x}", "")), + ("simple", source(ok_root, "${MARIADB_PASSWORD}", "")), + ("forme ?", source(ok_root, "${MARIADB_PASSWORD?m}", "")), + ( + "autre variable", + source(ok_root, "${MARIADB_ROOT_PASSWORD:?m}", ""), + ), + ("littéral", source(ok_root, "kesh_dev", "")), + ] { + assert_eq!( + controle_service_mariadb(&src).len(), + 1, + "{cas} doit rougir une fois : {src}" + ); + } + // Mots de passe publiés : commentaire compris, ligne active refusée. + let rouge = + controle_mots_de_passe_publies(&[("docker-compose.yml", "# ancien : kesh_dev_root\n")]); + assert_eq!(rouge.len(), 1, "{rouge:?}"); + let rouge = controle_mots_de_passe_publies(&[( + ".env.example", + "MARIADB_ROOT_PASSWORD=x\n#MARIADB_PASSWORD=\n", + )]); + assert_eq!(rouge.len(), 1, "{rouge:?}"); +} + #[test] fn s_cle_sans_valeur_rougit_en_dictionnaire_et_en_liste() { assert!(valeur_de(" KESH_SMTP_PORT:\n", "KESH_SMTP_PORT", Compose::P).is_some()); @@ -1977,7 +2179,7 @@ fn s_sources_de_montage() { ); assert_eq!(source_montage("./a:/data/inboxe", "/data/inbox"), None); let longue = "services:\n kesh-api:\n volumes:\n - type: bind\n source: ./a\n target: /data/inbox\n"; - let s = service_kesh_api(longue).expect("YAML valide"); + let s = service(longue, "kesh-api").expect("YAML valide"); assert!( sources_montages(&s).is_err(), "une forme longue doit rougir" @@ -2230,26 +2432,17 @@ fn s_fantomes_du_code() { /// invalide fait rejouer un avertissement (`warn`) par `main` après /// l'installation de l'abonné. Rend la sortie complète (stdout + stderr). fn sortie_du_binaire_sans_configuration(rust_log: &str) -> String { - let dir = tempfile::tempdir().expect("répertoire temporaire"); - let sortie = std::process::Command::new(env!("CARGO_BIN_EXE_kesh-api")) - .current_dir(dir.path()) - .env_clear() - .env("RUST_LOG", rust_log) - .env("NO_COLOR", "1") - .env("DATABASE_URL", "") - .env("KESH_JWT_SECRET", "") - .env("KESH_LOG_FILE_ROTATION", "inconnue") - .output() - .expect("lancement du binaire kesh-api"); + let sortie = binaire::lancer_binaire(&[ + ("RUST_LOG", rust_log), + ("DATABASE_URL", ""), + ("KESH_JWT_SECRET", ""), + ("KESH_LOG_FILE_ROTATION", "inconnue"), + ]); assert!( !sortie.status.success(), "le binaire doit refuser de démarrer sans configuration" ); - format!( - "{}{}", - String::from_utf8_lossy(&sortie.stdout), - String::from_utf8_lossy(&sortie.stderr) - ) + binaire::texte(&sortie) } /// `RUST_LOG=""` vaut une absence : le niveau `info` s'applique, et diff --git a/crates/kesh-api/tests/demarrage_mariadb.rs b/crates/kesh-api/tests/demarrage_mariadb.rs new file mode 100644 index 00000000..d1359898 --- /dev/null +++ b/crates/kesh-api/tests/demarrage_mariadb.rs @@ -0,0 +1,84 @@ +//! Démarrage face à MariaDB — Story 15-13a (#551). +//! +//! Lance le binaire réel : c'est le seul moyen d'établir (1) que +//! l'avertissement sur un mot de passe publié est bien émis par le chemin de +//! démarrage (`Config::from_env` appelé par `main`), et (2) que l'extraction +//! du numéro d'erreur MariaDB (`numero_erreur_mariadb`) fonctionne sur une +//! vraie `sqlx::Error` — `MySqlDatabaseError` n'a pas de constructeur public. + +#[path = "common/binaire.rs"] +mod binaire; + +use kesh_api::config::{AVERTISSEMENT_MOT_DE_PASSE_PUBLIE, INDICE_ACCES_REFUSE}; + +/// Secret JWT valide (≥ 32 octets, ni `change-me` ni gabarit) : sans lui, +/// `Config::from_env` refuse AVANT toute connexion. +const SECRET: &str = "0123456789abcdef0123456789abcdef-15-13a"; + +/// Test 8 de la fiche — AC 5 (câblage). Hôte `.invalid` : échec de résolution +/// immédiat (mesuré au T0 : 16 ms), non rejoué par `sqlx`. +#[test] +fn mot_de_passe_publie_avertit_au_demarrage() { + let sortie = binaire::lancer_binaire(&[ + ( + "DATABASE_URL", + "mysql://kesh:kesh_dev@kesh-15-13.invalid/kesh", + ), + ("KESH_JWT_SECRET", SECRET), + ("KESH_HOST", "127.0.0.1"), + ]); + let texte = binaire::texte(&sortie); + assert!( + !sortie.status.success(), + "échec de connexion attendu : {texte}" + ); + // Assertion de montage : le binaire est allé jusqu'à la connexion. + assert!( + texte.contains("Base de données indisponible"), + "la connexion doit avoir été tentée : {texte}" + ); + assert!( + texte.contains(AVERTISSEMENT_MOT_DE_PASSE_PUBLIE), + "avertissement « mot de passe publié » attendu : {texte}" + ); +} + +/// Test 10 de la fiche — AC 6 a-b. La `DATABASE_URL` des tests (obligatoire) +/// avec un mauvais mot de passe : MariaDB répond 1045, le message porte +/// l'erreur d'origine et l'indice, sans citer le mot de passe. +#[test] +fn mauvais_mot_de_passe_donne_l_indice() { + let base = std::env::var("DATABASE_URL") + .expect("DATABASE_URL obligatoire pour ce test (MariaDB de test) — pas de saut silencieux"); + let mut url = url::Url::parse(&base).expect("DATABASE_URL des tests lisible"); + let mauvais = "mauvais-15-13"; + url.set_password(Some(mauvais)) + .expect("mot de passe posable"); + let sortie = binaire::lancer_binaire(&[ + ("DATABASE_URL", url.as_str()), + ("KESH_JWT_SECRET", SECRET), + ("KESH_HOST", "127.0.0.1"), + ]); + let texte = binaire::texte(&sortie); + assert!( + !sortie.status.success(), + "échec de connexion attendu : {texte}" + ); + // Assertion de montage : la configuration a été acceptée. + assert!( + !texte.contains("Erreur de configuration"), + "le binaire doit avoir tenté la connexion : {texte}" + ); + assert!( + texte.contains("1045"), + "erreur d'origine (1045) attendue : {texte}" + ); + assert!( + texte.contains(INDICE_ACCES_REFUSE), + "indice du refus 1045 attendu : {texte}" + ); + assert!( + !texte.contains(mauvais), + "la sortie ne doit pas citer le mot de passe : {texte}" + ); +} From c7d5794536ef9425fe73a0d48d796a95d6915708 Mon Sep 17 00:00:00 2001 From: Guy Corbaz Date: Fri, 9 Oct 2026 07:36:23 +0200 Subject: [PATCH 06/14] =?UTF-8?q?ci(15-13a):=20docker-compose.yml=20valid?= =?UTF-8?q?=C3=A9=20avec=20mots=20de=20passe=20factices,=20refus=20exig?= =?UTF-8?q?=C3=A9=20sans=20eux=20et=20pour=20chacun=20seul=20;=20docs/ci.m?= =?UTF-8?q?d=20=E2=80=94=203=20jobs,=20renvoi=20=C3=A0=20#577=20(refs=20#5?= =?UTF-8?q?51,=20refs=20#577)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- .github/workflows/ci.yml | 30 +++++++++++++++++-- .../epic-15-choix-autonomes.md | 7 +++++ docs/ci.md | 10 ++++--- 3 files changed, 40 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6527032b..08d4b15c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -237,11 +237,35 @@ jobs: steps: - uses: actions/checkout@v4 # Story 15-11a (#550) — validation des deux compose distribués par Compose - # lui-même (clé inconnue ou en double, interpolation mal formée). Sans - # `.env` : les variables obligatoires non posées ne font qu'avertir. + # lui-même (clé inconnue ou en double, interpolation mal formée). + # Story 15-13a (#551) — `docker-compose.yml` exige ses deux mots de passe + # MariaDB (`${…:?…}`) : validé AVEC des valeurs factices, puis le refus + # SANS elles est exigé (sortie en échec, variable nommée). Chaque + # variable est aussi retirée SEULE, l'autre posée : le retour d'un défaut + # publié sur une seule des deux ferait rougir cette étape (sinon le refus + # sur l'autre le masquerait). `docker-compose.prod.yml` n'a pas de + # variable obligatoire de cette forme : validé sans `.env`. - name: Validate compose files run: | - docker compose -f docker-compose.yml config -q + MARIADB_ROOT_PASSWORD=ci MARIADB_PASSWORD=ci \ + docker compose -f docker-compose.yml config -q + if env -u MARIADB_ROOT_PASSWORD -u MARIADB_PASSWORD \ + docker compose -f docker-compose.yml config -q 2> refus.txt; then + echo "docker-compose.yml doit refuser l'absence des mots de passe MariaDB" + exit 1 + fi + cat refus.txt + grep -qE 'MARIADB_(ROOT_)?PASSWORD' refus.txt + for paire in MARIADB_ROOT_PASSWORD:MARIADB_PASSWORD \ + MARIADB_PASSWORD:MARIADB_ROOT_PASSWORD; do + absente="${paire%%:*}"; posee="${paire#*:}" + if env -u MARIADB_ROOT_PASSWORD -u MARIADB_PASSWORD "$posee=ci" \ + docker compose -f docker-compose.yml config -q 2> refus.txt; then + echo "docker-compose.yml doit refuser l'absence de $absente" + exit 1 + fi + grep -q "required variable $absente is missing" refus.txt + done docker compose -f docker-compose.prod.yml config -q - uses: docker/setup-buildx-action@v3 - name: Build image (no push) diff --git a/_bmad-output/implementation-artifacts/epic-15-choix-autonomes.md b/_bmad-output/implementation-artifacts/epic-15-choix-autonomes.md index a52c0e6a..51428531 100644 --- a/_bmad-output/implementation-artifacts/epic-15-choix-autonomes.md +++ b/_bmad-output/implementation-artifacts/epic-15-choix-autonomes.md @@ -5556,3 +5556,10 @@ l'import (#458–#461). - **Retenu** : le manuel, le CHANGELOG et `DOCKER_START.md` disent la mesure — refus de `config`, `pull`, `up` ; `ps`, `logs`, `exec`, `stop` encore utilisables avec la version mesurée (diagnostic et arrêt possibles ; le script de sauvegarde, qui passe par `exec`, ne dépend pas de `.env`, il lit le mot de passe dans le conteneur) ; Compose nomme **une** variable à la fois, **pas toujours la même** : poser les deux avant de relancer. La version mesurée est nommée, faute de pouvoir garantir les autres. - **Écartées** : écrire l'affirmation de la fiche (fausse sur la version mesurée) ; ne rien dire des sous-commandes (l'exploitant face au refus doit savoir s'il peut encore diagnostiquer). - **Réversible** : oui (texte). La règle (refus par Compose, avertissement par Kesh) n'est pas touchée : seul le constat documentaire change. + +## C-15-13a-2 — 15-13a (T4/T8) : l'étape CI retire aussi chaque mot de passe MariaDB SEUL, l'autre posé + +- **Contexte** : l'AC 4 b exige que `docker compose config -q` **sans les deux** variables échoue en nommant l'une d'elles. Jouée localement, la mutation **M27** de la fiche (« remettre `:-kesh_dev_root` ») **survit** à cette forme : `MARIADB_PASSWORD` reste obligatoire, Compose refuse en la nommant, et l'étape passe — le retour du défaut publié de root ne se voit pas en CI. +- **Retenu** : l'étape garde la vérification de l'AC 4 b et ajoute une boucle : pour chaque variable, retirer les deux puis poser **l'autre** ; Compose doit refuser **en nommant celle qui manque** (`required variable is missing`). M27 rougit (rejouée sous `bash -eo pipefail` sur une copie). Reste vert, à dessein, le retour d'un défaut sur le seul `MARIADB_PASSWORD` du service `mariadb` : la `DATABASE_URL` de `kesh-api` exige encore la variable, Compose refuse toujours son absence — aucun changement de comportement ; le test Rust `mariadb` le voit. +- **Écartées** : s'en tenir à l'esquisse de la fiche (M27 survit) ; ne compter que sur le test Rust (l'AC 4 veut le refus exercé par Compose lui-même). +- **Réversible** : oui. diff --git a/docs/ci.md b/docs/ci.md index 8e604dfb..2591689f 100644 --- a/docs/ci.md +++ b/docs/ci.md @@ -6,10 +6,12 @@ Documentation de la pipeline GitHub Actions définie dans `.github/workflows/ci. La pipeline `ci.yml` se déclenche sur : -- **Pull request** vers `main` → 4 jobs (`backend`, `frontend`, `e2e`, `docker-build`) -- **Push** sur `main` (= merge de PR) → mêmes 4 jobs +- **Pull request** vers `main` → 3 jobs (`backend`, `frontend`, `docker-build`) +- **Push** sur `main` (= merge de PR) → mêmes 3 jobs -Aucune image Docker n'est publiée sur push `main` — la publication n'a lieu **que** sur push de tag `v*.*.*` (via `release.yml`). Le job `docker-build` du `ci.yml` valide les deux compose distribués (`docker compose config -q` sur `docker-compose.yml` et `docker-compose.prod.yml` — clé inconnue ou en double, interpolation mal formée) puis build l'image en mode sanity (sans push) pour valider que le `Dockerfile` compile. +⚠️ Les sections de ce document qui décrivent un job `e2e` (schéma, tableau des jobs, timeouts, migrations, mode test) ne correspondent à **aucun** job de `ci.yml` : il n'en a que trois. Défaut antérieur, suivi par l'issue #577 (qui vise aussi le smoke E2E annoncé par le `CLAUDE.md`). + +Aucune image Docker n'est publiée sur push `main` — la publication n'a lieu **que** sur push de tag `v*.*.*` (via `release.yml`). Le job `docker-build` du `ci.yml` valide les deux compose distribués (`docker compose config -q` sur `docker-compose.yml` et `docker-compose.prod.yml` — clé inconnue ou en double, interpolation mal formée) — `docker-compose.yml` dans les **deux sens** : il doit se lire avec des mots de passe MariaDB factices, et **refuser** sans eux en nommant `MARIADB_ROOT_PASSWORD` ou `MARIADB_PASSWORD` (Story 15-13a, #551) — puis build l'image en mode sanity (sans push) pour valider que le `Dockerfile` compile. La pipeline `release.yml` se déclenche **uniquement** sur push de tag `v*.*.*` et publie une image Docker Hub SemVer + une GitHub Release. @@ -114,7 +116,7 @@ La publication d'images Docker se fait **uniquement** sur push de tag SemVer `v* | `:{version}` (ex `:0.1.0`) | push tag `v*.*.*` | `release.yml/docker` | Immuable — release SemVer | | `:latest` | push tag `v*.*.*` | `release.yml/docker` | Mutable — toujours la dernière release SemVer | -Le job `docker-build` du `ci.yml` valide d'abord les deux compose distribués (`docker compose config -q`), puis build l'image en mode sanity (sans push) sur chaque PR/push afin de détecter au plus tôt toute régression du `Dockerfile`. L'image est jetée à la fin du runner. La **liste** des variables transmises par les compose est gardée par le test Rust `configuration_transmise` (job `backend`, Story 15-11a). +Le job `docker-build` du `ci.yml` valide d'abord les deux compose distribués (`docker compose config -q` ; pour `docker-compose.yml`, avec des mots de passe MariaDB factices, puis l'échec **exigé** sans eux), puis build l'image en mode sanity (sans push) sur chaque PR/push afin de détecter au plus tôt toute régression du `Dockerfile`. L'image est jetée à la fin du runner. La **liste** des variables transmises par les compose est gardée par le test Rust `configuration_transmise` (job `backend`, Story 15-11a). ### Rotation des secrets Docker Hub From 8f1ea2cc300aa486188d4ee6ffb38fdfa30681d9 Mon Sep 17 00:00:00 2001 From: Guy Corbaz Date: Fri, 9 Oct 2026 07:44:07 +0200 Subject: [PATCH 07/14] =?UTF-8?q?docs(15-13a):=20manuel=20d'administration?= =?UTF-8?q?=20=E2=80=94=20port=20MariaDB=20non=20publi=C3=A9,=20mots=20de?= =?UTF-8?q?=20passe=20obligatoires,=20recette=20de=20changement=20et=20con?= =?UTF-8?q?tr=C3=B4le=20de=20fin=20rejou=C3=A9s=20au=20T7,=20sauvegarde=20?= =?UTF-8?q?par=20sh=20-c=20;=20brochure=20;=20PDF=20r=C3=A9g=C3=A9n=C3=A9r?= =?UTF-8?q?=C3=A9s=20(refs=20#551)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- docs/manual/fr/admin-manual.pdf | Bin 354928 -> 376712 bytes docs/manual/fr/admin-manual.tex | 174 ++++++++++++++++++++------ docs/manual/fr/marketing-brochure.pdf | Bin 51462 -> 52028 bytes docs/manual/fr/marketing-brochure.tex | 2 +- 4 files changed, 138 insertions(+), 38 deletions(-) diff --git a/docs/manual/fr/admin-manual.pdf b/docs/manual/fr/admin-manual.pdf index e098386b12ec2e82e96c549d1e421bc7466c7b82..b4a65951d2ff5179d916e48f0944432aee0522d5 100644 GIT binary patch delta 265337 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

SgFyuU-#y^tfj@~7_F@Wa;AE~f$iy*)be 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

i8vE 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 z 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 delta 244031 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

HXjnJI`&5!YL{cGKemWq3v}V=|=urWf%J@7C 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. Sans secret, Kesh refuse de démarrer, y compris avec \keshpath{docker-compose.yml}, dont le défaut \texttt{change-me…} est refusé à dessein ; le placeholder \texttt{} laissé tel quel est refusé depuis la 0.13.0. Les variables \texttt{KESH\_ADMIN\_*} restent optionnelles (onboarding \keshpath{/setup}). Avec \keshpath{docker-compose.yml}, \texttt{DATABASE\_URL} est \textbf{composée} des \texttt{MARIADB\_*} par le compose : la ligne \texttt{DATABASE\_URL} de \keshpath{.env} y est ignorée (elle sert \keshpath{docker-compose.prod.yml}). -Remplacez chaque valeur entre chevrons \texttt{<…>} : recopiée telle quelle, elle fait refuser le démarrage (depuis la 0.13.0) pour \texttt{KESH\_JWT\_SECRET} et \texttt{KESH\_ADMIN\_PASSWORD} ; pour les mots de passe MariaDB, rien ne la refuse — choisissez-les vous-même. +Remplacez chaque valeur entre chevrons \texttt{<…>} : recopiée telle quelle, elle fait refuser le démarrage (depuis la 0.13.0) pour \texttt{KESH\_JWT\_SECRET} et \texttt{KESH\_ADMIN\_PASSWORD}. + +\textbf{Les deux mots de passe MariaDB sont obligatoires avec \keshpath{docker-compose.yml}} (depuis la 0.13.0) : générez chacun par \keshcommand{openssl rand -hex 32} --- en hexadécimal, car une sortie base64 peut contenir \texttt{/}, qui casse une \texttt{DATABASE\_URL}. Sans eux, \textbf{Compose refuse de démarrer}, au terminal, en nommant la variable manquante --- une seule à la fois, pas toujours la même : posez les deux avant de relancer. Une valeur entre chevrons recopiée, en revanche, est acceptée par Compose et par MariaDB : Kesh \textbf{avertit au démarrage} quand c'est le mot de passe applicatif (\texttt{MARIADB\_PASSWORD}, qu'il lit dans \texttt{DATABASE\_URL}) ; \textbf{rien ne signale un mot de passe root resté au gabarit} --- Kesh ne le voit pas. Relisez ces deux lignes. + +\textbf{MariaDB ne lit ces deux valeurs qu'à la création de la base} (premier démarrage, volume vide) : les changer ensuite dans \keshpath{.env} ne change pas le mot de passe enregistré, et Kesh échoue alors à se connecter (erreur 1045). Une base \textbf{déjà créée} avec la chaîne gabarit littérale --- \texttt{} ou \texttt{}, recopiées d'une version antérieure de ce manuel --- garde ce mot de passe : ne le remplacez pas dans \keshpath{.env}, changez-le par la procédure du \S\ref{sec:mariadb-mdp} (\texttt{ALTER USER} d'abord, \keshpath{.env} ensuite). \begin{lstlisting}[language=bash] # Secret JWT — générer avec : openssl rand -hex 32 (minimum 32 octets) @@ -249,13 +255,15 @@ \subsubsection{Étape 3 — Créer le fichier \texttt{.env}} # KESH_ADMIN_USERNAME=admin # KESH_ADMIN_PASSWORD= -# Mot de passe DB (conteneur MariaDB) -MARIADB_ROOT_PASSWORD= -MARIADB_PASSWORD= +# Mots de passe MariaDB : OBLIGATOIRES avec docker-compose.yml, lus à +# la création de la base seulement. Chacun : openssl rand -hex 32 +MARIADB_ROOT_PASSWORD= +MARIADB_PASSWORD= MARIADB_DATABASE=kesh MARIADB_USER=kesh -# URL de connexion DB (service MariaDB nommé "mariadb" dans docker-compose) +# URL de connexion DB : pour docker-compose.prod.yml seulement +# (docker-compose.yml la compose lui-même). Mot de passe hexadécimal. DATABASE_URL=mysql://kesh:@mariadb:3306/kesh \end{lstlisting} @@ -543,7 +551,8 @@ \subsubsection{Étape 2 — Récupérer docker-compose.yml et .env} # Secrets obligatoires : KESH_JWT_SECRET, DATABASE_URL (et les mots de # passe de votre MariaDB) -- ils DOIVENT remplacer les placeholders de .env openssl rand -hex 32 # → KESH_JWT_SECRET -openssl rand -base64 32 # → mot de passe MariaDB (repris dans DATABASE_URL) +openssl rand -hex 32 # → mot de passe MariaDB (repris dans DATABASE_URL) +# hexadécimal : un « / » de base64 casserait DATABASE_URL # Optionnel : sans KESH_ADMIN_PASSWORD, l'administrateur se crée à l'écran # /setup ; si vous décommentez la ligne, remplacez son placeholder openssl rand -base64 24 # → KESH_ADMIN_PASSWORD @@ -689,8 +698,13 @@ \subsection{Variables d'environnement complètes}\label{sec:env-vars} \begin{sloppypar} \emph{Note} — \texttt{MARIADB\_ROOT\_PASSWORD}, \texttt{MARIADB\_USER}, \texttt{MARIADB\_PASSWORD}, \texttt{MARIADB\_DATABASE} ne sont pas lues par -\texttt{kesh-api} : elles configurent le \textbf{conteneur MariaDB} dans -\texttt{docker-compose}. \texttt{DATABASE\_URL} doit rester cohérente avec elles. +\texttt{kesh-api} : elles configurent le \textbf{conteneur MariaDB} de +\keshpath{docker-compose.yml}, qui en compose \texttt{DATABASE\_URL}. Les deux +mots de passe y sont \textbf{obligatoires} (sans eux, Compose refuse de +démarrer) et ne sont lus par MariaDB qu'à la \textbf{création} de la base --- +pour les changer : \S\ref{sec:mariadb-mdp}. \keshpath{docker-compose.prod.yml} +ne les lit pas : \texttt{DATABASE\_URL} y vient de \keshpath{.env} (mot de passe +hexadécimal). \end{sloppypar} \paragraph{Serveur \& réseau.}\mbox{}\\ @@ -1441,9 +1455,9 @@ \subsection{Les PDF des factures émises}\label{sec:pdf-factures-sauvegarde} \textbf{Un fichier altéré} (empreinte différente de celle enregistrée) n'est \textbf{jamais servi} : le téléchargement répond une erreur serveur et la journalise. Le refigeage le refuse aussi (\texttt{409 INVOICE\_PDF\_INTEGRITY}) : un fichier altéré se \textbf{diagnostique}, il ne se recouvre pas. Restaurer \texttt{\{empreinte\}.pdf} depuis la sauvegarde ; à défaut, \textbf{écarter} le fichier altéré (le déplacer hors du répertoire), ce qui ramène au cas du fichier manquant, puis refiger. \end{keshwarning} -\subsection{Script de sauvegarde mariadb-dump} +\subsection{Script de sauvegarde mariadb-dump}\label{sec:script-sauvegarde} -Voici un script bash de référence à exécuter via cron quotidien : +Voici un script bash de référence à exécuter via cron quotidien. Il lit le mot de passe root \textbf{dans le conteneur} (la commande entière passe à \keshcommand{sh -c} entre apostrophes) : il n'a besoin d'aucune variable posée dans la crontab. \texttt{cron} ne le lance pas depuis le répertoire du compose : \texttt{COMPOSE\_DIR} le lui donne. \begin{lstlisting}[language=bash] #!/bin/bash @@ -1452,24 +1466,20 @@ \subsection{Script de sauvegarde mariadb-dump} set -euo pipefail +COMPOSE_DIR="/opt/kesh" # répertoire de docker-compose.yml BACKUP_DIR="/var/backups/kesh" RETENTION_DAYS=30 TIMESTAMP=$(date +%Y%m%d_%H%M%S) BACKUP_FILE="${BACKUP_DIR}/kesh_${TIMESTAMP}.sql.gz" mkdir -p "${BACKUP_DIR}" +cd "${COMPOSE_DIR}" -# Dump avec gzip et stockage hash SHA-256 -docker compose exec -T db \ - mariadb-dump \ - --single-transaction \ - --routines \ - --triggers \ - --events \ - --add-drop-database \ - --databases kesh \ - -u root \ - -p"${MARIADB_ROOT_PASSWORD}" \ +# Dump gzip et hash SHA-256 ; mot de passe root lu dans le conteneur +docker compose exec -T mariadb sh -c \ + 'mariadb-dump --single-transaction --routines --triggers \ + --events --add-drop-database --databases kesh \ + -u root -p"$MARIADB_ROOT_PASSWORD"' \ | gzip > "${BACKUP_FILE}" # Hash SHA-256 pour verification ulterieure (OLICo Art. 9 al. 1.b ch. 1) @@ -1488,6 +1498,10 @@ \subsection{Script de sauvegarde mariadb-dump} 0 2 * * * /usr/local/bin/kesh-backup.sh >> /var/log/kesh-backup.log 2>&1 \end{lstlisting} +\begin{keshwarning} +\textbf{Lancez le script une fois à la main} après son installation, après toute mise à jour et après tout changement de mot de passe MariaDB : un échec la nuit ne s'écrit que dans \keshpath{/var/log/kesh-backup.log}, que personne ne lit. C'est en particulier le seul signal d'un mot de passe root changé dans \keshpath{.env} sans \texttt{ALTER USER} (\S\ref{sec:mariadb-mdp}). +\end{keshwarning} + \subsection{Stockage offsite} Synchroniser les sauvegardes vers un stockage distant (S3, Backblaze B2, Wasabi, Hetzner Storage Box, OVH C14, etc.) : @@ -1510,9 +1524,12 @@ \subsection{Restauration depuis sauvegarde} # 2. Arreter Kesh (pas la DB) docker compose stop kesh-api -# 3. Restaurer la base -zcat kesh_20260520_020000.sql.gz | docker compose exec -T db \ - mariadb -u root -p"${MARIADB_ROOT_PASSWORD}" +# 3. Restaurer la base (depuis le repertoire du compose ; mot de passe +# root lu dans le conteneur) +cd /opt/kesh +zcat /var/backups/kesh/kesh_20260520_020000.sql.gz \ + | docker compose exec -T mariadb \ + sh -c 'mariadb -u root -p"$MARIADB_ROOT_PASSWORD"' # 4. Restaurer le repertoire des documents (PDF des factures emises, # justificatifs) depuis SA sauvegarde, prise en meme temps que le dump @@ -1757,7 +1774,7 @@ \subsection{Procédure de mise à jour standard} \begin{enumerate} \item \textbf{Sauvegarder} la base de données et le volume \texttt{kesh\_db\_data} (cf. section précédente). \item \textbf{Lire le changelog} de la nouvelle version pour identifier les breaking changes éventuels et les migrations nécessaires. - \item \textbf{Mettre à jour le fichier compose} --- \textbf{obligatoire pour passer à la 0.13.0} (\S\ref{sec:maj-0-13}) : re-télécharger le compose et y reporter ses adaptations locales, puis vérifier les placeholders de \keshpath{.env}. Pour les versions suivantes : selon le changelog (nouvelles variables, changement d'image). + \item \textbf{Mettre à jour le fichier compose} --- \textbf{obligatoire pour passer à la 0.13.0} (\S\ref{sec:maj-0-13}) : re-télécharger le compose et y reporter ses adaptations locales, puis vérifier les placeholders de \keshpath{.env} --- dont les lignes \texttt{MARIADB\_ROOT\_PASSWORD} et \texttt{MARIADB\_PASSWORD} : une valeur entre chevrons y est acceptée par Compose, et pour root rien d'autre ne la signale. Pour les versions suivantes : selon le changelog (nouvelles variables, changement d'image). \item \textbf{Tirer la nouvelle image} : \keshcommand{docker compose pull kesh-api}. \item \textbf{Redémarrer} : \keshcommand{docker compose up -d kesh-api}. \item \textbf{Vérifier} les logs : \keshcommand{docker compose logs -f kesh-api} pour s'assurer que les migrations DB se sont bien déroulées. @@ -1775,37 +1792,46 @@ \subsubsection{Passer à la 0.13.0 : le compose et le fichier \texttt{.env}}\lab \begin{keshwarning} \textbf{Relisez votre \keshpath{.env} avant de mettre à jour : des lignes jusqu'ici sans effet le deviennent.} +\textbf{Refus de Compose} (\keshpath{docker-compose.yml}), \textbf{avant} Kesh : sans \texttt{MARIADB\_ROOT\_PASSWORD} ou \texttt{MARIADB\_PASSWORD} dans \keshpath{.env}, ou vide, la commande s'arrête \textbf{au terminal} en nommant la variable (\texttt{required variable … is missing a value}) et aucun conteneur ne démarre --- voir le paragraphe \emph{MariaDB} ci-dessous. + \textbf{Refus de démarrer} --- le message nomme la variable (\keshcommand{docker compose logs kesh-api}) : \begin{itemize} \item \texttt{KESH\_SMTP\_TLS} ou \texttt{KESH\_FEATURE\_FORGOT\_PASSWORD} d'une valeur autre que \texttt{true}/\texttt{false}/\texttt{1}/\texttt{0} (espaces de tête et de fin ignorés), sur les deux compose --- même sans le mot de passe oublié pour \texttt{KESH\_SMTP\_TLS} ; \item \texttt{KESH\_COOKIE\_SECURE} d'une valeur autre que \texttt{true}/\texttt{false}/\texttt{1}/\texttt{0} (espaces de tête et de fin ignorés), sur \keshpath{docker-compose.prod.yml}, où il était ignoré ; \item \texttt{KESH\_FEATURE\_FORGOT\_PASSWORD=true} avec l'une des cinq \texttt{KESH\_SMTP\_HOST}/\texttt{\_USER}/\texttt{\_PASSWORD}/\texttt{\_FROM}, \texttt{KESH\_PUBLIC\_BASE\_URL} absente, un \texttt{KESH\_SMTP\_FROM} mal formé (« Nom ») ou un \texttt{KESH\_SMTP\_HOST} au format \texttt{hôte:port} ; \item \texttt{KESH\_FEATURE\_FORGOT\_PASSWORD=true} avec une configuration SMTP complète dont le mailer ne se construit pas (adresse \texttt{KESH\_SMTP\_FROM} refusée, échec de l'initialisation STARTTLS) : « le build du mailer SMTP a échoué … abandon » (sans le mot de passe oublié, le même échec rend seulement l'envoi de factures indisponible) ; - \item \texttt{KESH\_JWT\_SECRET} resté au placeholder du gabarit ou à une valeur entre chevrons ; \texttt{KESH\_ADMIN\_PASSWORD} décommenté sans remplacer le sien, ou recopié d'un exemple de ce manuel (\texttt{}, \texttt{}). + \item \texttt{KESH\_JWT\_SECRET} resté au placeholder du gabarit ou à une valeur entre chevrons ; \texttt{KESH\_ADMIN\_PASSWORD} décommenté sans remplacer le sien, ou recopié d'un exemple de ce manuel (\texttt{}, \texttt{}) ; + \item \texttt{MARIADB\_PASSWORD} changé dans \keshpath{.env} sans \texttt{ALTER USER} : « Base de données indisponible … 1045 … », suivi d'un indice (\S\ref{sec:mariadb-mdp}). \end{itemize} \textbf{Effets sans refus} : \texttt{KESH\_PRODUCTION\_RESET} posé lors d'une ancienne démonstration réautorise, \textbf{sur une installation restée en démonstration}, la réinitialisation, qui vide toutes les données de la société ; les quatre \texttt{KESH\_SMTP\_HOST}/\texttt{\_USER}/\texttt{\_PASSWORD}/\texttt{\_FROM} posées « pour plus tard » activent l'envoi de factures par e-mail, et avec \texttt{KESH\_FEATURE\_FORGOT\_PASSWORD=true} (et \texttt{KESH\_PUBLIC\_BASE\_URL}) la réinitialisation du mot de passe par e-mail --- quiconque connaît l'adresse d'un utilisateur peut alors demander un lien ; \texttt{KESH\_COOKIE\_SECURE=false} sur \keshpath{docker-compose.prod.yml} émet des cookies sans \texttt{Secure} ; \texttt{KESH\_ADMIN\_BACKUP\_DIR} (un chemin non monté fait écrire dans le conteneur) ; \texttt{KESH\_LANG} ; \texttt{KESH\_PASSWORD\_MIN\_LENGTH} sur \keshpath{docker-compose.yml} s'applique côté serveur, alors que trois écrans gardent 12 en dur : au-dessous de 12, les écrans refusent quand même ; au-dessus, l'écran accepte et le serveur refuse ; une ligne \texttt{KESH\_LOG\_FILE\_PATH=} \textbf{vide} désactive désormais le journal fichier ; et plus généralement toute ligne décommentée de ces seize variables. -\textbf{Un \keshpath{.env} copié du gabarit sans modification} ne change pas de comportement --- les seules lignes actives du gabarit parmi ces variables valent leur défaut (\texttt{KESH\_LANG=fr}, \texttt{KESH\_PASSWORD\_MIN\_LENGTH=12}, \texttt{KESH\_BANK\_IMPORT\_MAX\_MB=10}, \texttt{KESH\_COOKIE\_SECURE=true}) --- \textbf{sauf} le secret JWT laissé au placeholder, désormais refusé. Un \texttt{KESH\_ADMIN\_PASSWORD} absent ou vide ne change rien avec \keshpath{docker-compose.prod.yml}, et cesse de faire refuser le démarrage avec \keshpath{docker-compose.yml}. +\textbf{Un \keshpath{.env} copié du gabarit sans modification} ne change pas de comportement --- les seules lignes actives du gabarit parmi ces variables valent leur défaut (\texttt{KESH\_LANG=fr}, \texttt{KESH\_PASSWORD\_MIN\_LENGTH=12}, \texttt{KESH\_BANK\_IMPORT\_MAX\_MB=10}, \texttt{KESH\_COOKIE\_SECURE=true}) --- \textbf{sauf} le secret JWT laissé au placeholder, désormais refusé, \textbf{et} les mots de passe MariaDB avec \keshpath{docker-compose.yml} : copié du gabarit \textbf{0.13.0}, où ils sont commentés et sans valeur, il fait refuser Compose ; copié d'un gabarit \textbf{antérieur}, qui posait \texttt{kesh\_dev}, il fait émettre à Kesh l'avertissement « mot de passe publié ». Un \texttt{KESH\_ADMIN\_PASSWORD} absent ou vide ne change rien avec \keshpath{docker-compose.prod.yml}, et cesse de faire refuser le démarrage avec \keshpath{docker-compose.yml}. \end{keshwarning} \textbf{Voie recommandée : re-télécharger le compose} --- \keshpath{docker-compose.yml}, ou, sur Synology, \keshpath{docker-compose.prod.yml} enregistré sous \keshpath{docker-compose.yml} (\S\ref{sec:synology}) --- \textbf{et y reporter vos seules adaptations locales} (port \texttt{8080:80}, réseau, chemins des montages). Un montage modifié à la main et non reporté revient à \keshpath{./documents} (ou \keshpath{./inbox}, \keshpath{./log}) : justificatifs et PDF paraissent alors disparus --- ils sont toujours dans l'ancien dossier. Les commandes s'exécutent depuis le répertoire du compose (\keshpath{/volume1/docker/kesh} sur Synology) ; avec un autre nom de fichier, ajoutez \keshcommand{-f } à chaque commande \keshcommand{docker compose}. Puis \keshcommand{docker compose pull} \textbf{avant} \keshcommand{docker compose up -d}. +\paragraph{MariaDB (\keshpath{docker-compose.yml}) : port fermé, mots de passe obligatoires.}\mbox{}\\ +\begin{sloppypar} +Le compose 0.13.0 ne publie plus le port 3306 de MariaDB --- le re-télécharger suffit à le fermer ; un outil de l'hôte qui s'y connectait passe désormais par \keshcommand{docker compose exec mariadb …} --- et n'a plus de mots de passe MariaDB par défaut. Avec un \keshpath{.env} sans \texttt{MARIADB\_ROOT\_PASSWORD} ou sans \texttt{MARIADB\_PASSWORD}, \textbf{Compose refuse} \keshcommand{config}, \keshcommand{pull} et \keshcommand{up} en nommant la variable, au terminal ; \keshcommand{ps}, \keshcommand{logs}, \keshcommand{exec} et \keshcommand{stop} restent utilisables (mesuré avec Docker Compose 2.40), de quoi diagnostiquer et arrêter. Écrivez alors dans \keshpath{.env} \textbf{la valeur avec laquelle la base a été créée, jamais une neuve} : si vous n'en aviez jamais posé, ce sont les anciennes valeurs par défaut, \texttt{MARIADB\_ROOT\_PASSWORD=kesh\_dev\_root} et \texttt{MARIADB\_PASSWORD=kesh\_dev}. Une valeur neuve ne change pas le mot de passe enregistré : pour \texttt{MARIADB\_PASSWORD}, Kesh échoue à se connecter (erreur 1045, avec un indice) ; pour \texttt{MARIADB\_ROOT\_PASSWORD}, \textbf{rien ne le signale}, mais la sauvegarde nocturne échoue. Démarrez, puis \textbf{changez ces mots de passe} par la procédure du \S\ref{sec:mariadb-mdp} : publiés dans le dépôt Kesh, ils ne protègent rien --- Kesh avertit au démarrage tant que celui de \texttt{DATABASE\_URL} vaut \texttt{kesh\_dev} ou une valeur gabarit \texttt{<…>}. Terminez par le \textbf{contrôle de fin de mise à jour} ci-dessous. +\end{sloppypar} + \begin{sloppypar} -\textbf{Vérifier les placeholders} (Kesh 0.13.0 refuse de démarrer si \texttt{KESH\_JWT\_SECRET} ou \texttt{KESH\_ADMIN\_PASSWORD} est resté au placeholder \texttt{} du gabarit ou à une valeur entre chevrons \texttt{<…>}). Le contrôle se demande à Compose lui-même, le compose final en place --- Compose lit \keshpath{.env} à sa façon (\texttt{export}, espaces autour de \texttt{=}, guillemets, fins de ligne Windows), qu'aucun \texttt{grep} sur \keshpath{.env} n'imite sûrement : +\textbf{Vérifier les placeholders} (Kesh 0.13.0 refuse de démarrer si \texttt{KESH\_JWT\_SECRET} ou \texttt{KESH\_ADMIN\_PASSWORD} est resté au placeholder \texttt{} du gabarit ou à une valeur entre chevrons \texttt{<…>}). Le contrôle se demande à Compose lui-même, le compose final en place --- Compose lit \keshpath{.env} à sa façon (\texttt{export}, espaces autour de \texttt{=}, guillemets, fins de ligne Windows), qu'aucun \texttt{grep} sur \keshpath{.env} n'imite sûrement. Les deux mots de passe MariaDB posés (paragraphe précédent), demandez d'abord à Compose s'il lit le fichier, puis cherchez les placeholders : \end{sloppypar} \begin{lstlisting}[language=bash] +sudo docker compose config -q && echo 'compose lisible' sudo docker compose config \ | grep -iE 'KESH_(JWT_SECRET|ADMIN_PASSWORD): .? *(<|.*generate_me)' \end{lstlisting} \begin{sloppypar} -La commande doit rester \textbf{muette}. Dans le cas qu'elle détecte, elle affiche la ligne trouvée --- un placeholder, non un secret. Elle est un sur-ensemble du refus de Kesh (une valeur qui commence par \texttt{<} sans finir par \texttt{>} y apparaît aussi, que Kesh accepte). Si elle montre \texttt{KESH\_JWT\_SECRET} : générez le secret (\keshcommand{openssl rand -hex 32}) \textbf{avant} le \keshcommand{up -d} --- les sessions ouvertes sont alors perdues, chacun se reconnecte. Si elle montre \texttt{KESH\_ADMIN\_PASSWORD} : choisissez un vrai mot de passe ($\geq$ 12 caractères) ou recommentez la ligne (onboarding \keshpath{/setup} sur une base vide, sans effet sur une base qui a déjà un administrateur). Faute de quoi Kesh refuse de démarrer. +La première commande \textbf{doit} afficher \texttt{compose lisible} : si Compose refuse le fichier, la seconde ne reçoit rien et reste muette --- muette comme un succès. La seconde doit rester \textbf{muette}. Dans le cas qu'elle détecte, elle affiche la ligne trouvée --- un placeholder, non un secret. Elle est un sur-ensemble du refus de Kesh (une valeur qui commence par \texttt{<} sans finir par \texttt{>} y apparaît aussi, que Kesh accepte). Si elle montre \texttt{KESH\_JWT\_SECRET} : générez le secret (\keshcommand{openssl rand -hex 32}) \textbf{avant} le \keshcommand{up -d} --- les sessions ouvertes sont alors perdues, chacun se reconnecte. Si elle montre \texttt{KESH\_ADMIN\_PASSWORD} : choisissez un vrai mot de passe ($\geq$ 12 caractères) ou recommentez la ligne (onboarding \keshpath{/setup} sur une base vide, sans effet sur une base qui a déjà un administrateur). Faute de quoi Kesh refuse de démarrer. Ce contrôle ne voit pas les mots de passe MariaDB : relisez à l'éditeur les lignes \texttt{MARIADB\_ROOT\_PASSWORD} et \texttt{MARIADB\_PASSWORD} de \keshpath{.env} --- pour un root resté au gabarit \texttt{<…>}, c'est le seul signal. \end{sloppypar} -\paragraph{Pour qui garde son fichier compose : deux gestes.}\mbox{}\\ -Sous \texttt{environment:} du service \texttt{kesh-api} : +\paragraph{Pour qui garde son fichier compose.}\mbox{}\\ +Quatre gestes pour \keshpath{docker-compose.yml}, deux pour \keshpath{docker-compose.prod.yml}. Les deux premiers, dans les deux fichiers, sous \texttt{environment:} du service \texttt{kesh-api} : \begin{enumerate} \item \textbf{ajouter} les lignes \textbf{nouvelles}, et elles seules --- pour \keshpath{docker-compose.yml} : \begin{lstlisting}[language=bash] @@ -1846,9 +1872,76 @@ \subsubsection{Passer à la 0.13.0 : le compose et le fichier \texttt{.env}}\lab KESH_ADMIN_PASSWORD: ${KESH_ADMIN_PASSWORD:-} KESH_LOG_FILE_PATH: ${KESH_LOG_FILE_PATH-/var/log/kesh/kesh.log} \end{lstlisting} + \item \begin{sloppypar}\keshpath{docker-compose.yml} seulement, service \texttt{mariadb} : \textbf{retirer} la clé \texttt{ports:} et sa ligne \texttt{- "3306:3306"} ;\end{sloppypar} + \item \begin{sloppypar}\keshpath{docker-compose.yml} seulement : \textbf{remplacer} les fragments \texttt{:-kesh\_dev\_root} et \texttt{:-kesh\_dev} --- trois occurrences : \texttt{MARIADB\_ROOT\_PASSWORD} et \texttt{MARIADB\_PASSWORD} du service \texttt{mariadb}, \texttt{DATABASE\_URL} de \texttt{kesh-api} --- par \texttt{:?} suivi d'un message, par exemple :\end{sloppypar} +\begin{lstlisting}[language=bash] + MARIADB_PASSWORD: ${MARIADB_PASSWORD:?à poser dans .env} +\end{lstlisting} + Le plus sûr est de recopier ces trois lignes depuis le compose re-téléchargé. \end{enumerate} \begin{sloppypar} -Puis \keshcommand{docker compose config -q} (qui refuse une clé en double), vérifier que \keshcommand{docker compose config} montre \texttt{KESH\_SMTP\_HOST} et \texttt{KESH\_PRODUCTION\_RESET}, et \keshcommand{docker compose up -d}. +Puis \keshcommand{docker compose config -q} (qui refuse une clé en double, et l'absence des deux mots de passe MariaDB), vérifier que \keshcommand{docker compose config} montre \texttt{KESH\_SMTP\_HOST} et \texttt{KESH\_PRODUCTION\_RESET}, et \textbf{aucune} entrée \texttt{ports} sous le service \texttt{mariadb} (Compose l'écrirait sous sa forme développée, \texttt{published: "3306"}), et \keshcommand{docker compose up -d}. +\end{sloppypar} + +\paragraph{Contrôle de fin de mise à jour (MariaDB, \keshpath{docker-compose.yml}).}\mbox{}\\ +Il se fait \textbf{sur la base}, pas sur \keshpath{.env} : un \keshcommand{grep} sur \keshcommand{docker compose config} ne lit que \keshpath{.env}, et resterait muet alors que la base garde l'ancien mot de passe. Une fois les mots de passe changés (\S\ref{sec:mariadb-mdp}) et \keshcommand{docker compose up -d} passé : + +\begin{lstlisting}[language=bash] +# Anciens mots de passe publiés : chaque commande doit être REFUSÉE (1045) +sudo docker compose exec -T mariadb mariadb -uroot -pkesh_dev_root \ + -e 'SELECT CURRENT_USER()' +sudo docker compose exec -T mariadb mariadb --protocol=TCP \ + -h 127.0.0.1 -uroot -pkesh_dev_root -e 'SELECT CURRENT_USER()' +sudo docker compose exec -T mariadb mariadb --protocol=TCP \ + -h 127.0.0.1 -ukesh -pkesh_dev -e 'SELECT CURRENT_USER()' +# Mots de passe de .env, lus dans le conteneur : chaque commande RÉUSSIT +sudo docker compose exec -T mariadb sh -c 'mariadb -uroot \ + -p"$MARIADB_ROOT_PASSWORD" -e "SELECT CURRENT_USER()"' +sudo docker compose exec -T mariadb sh -c 'mariadb --protocol=TCP \ + -h 127.0.0.1 -uroot -p"$MARIADB_ROOT_PASSWORD" \ + -e "SELECT CURRENT_USER()"' +sudo docker compose exec -T mariadb sh -c 'mariadb --protocol=TCP \ + -h 127.0.0.1 -ukesh -p"$MARIADB_PASSWORD" -e "SELECT CURRENT_USER()"' +\end{lstlisting} + +\begin{sloppypar} +Les trois premières doivent échouer (\texttt{ERROR 1045}), les trois dernières afficher le compte qui a répondu. Sans \texttt{-{}-protocol=TCP}, la connexion passe par le socket et atteint le compte \texttt{root@localhost} ; en TCP vers \texttt{127.0.0.1}, le compte \texttt{root@\%} (le serveur ne résout pas les noms) --- MariaDB exige le mot de passe dans les deux cas (mesuré, MariaDB 10.11). D'où les deux contrôles de root. Puis \textbf{lancez une fois à la main le script de sauvegarde} (\S\ref{sec:script-sauvegarde}) : c'est le seul moyen de voir qu'un mot de passe root changé dans \keshpath{.env} sans \texttt{ALTER USER} le fait échouer. +\end{sloppypar} + +\subsubsection{Changer un mot de passe MariaDB}\label{sec:mariadb-mdp} + +\begin{sloppypar} +Avec \keshpath{docker-compose.yml}. MariaDB ne relit pas \texttt{MARIADB\_ROOT\_PASSWORD} ni \texttt{MARIADB\_PASSWORD} après la création de la base : on change le mot de passe \textbf{dans la base} d'abord (\texttt{ALTER USER}), \textbf{puis} dans \keshpath{.env}, \textbf{puis} on recrée les conteneurs. L'ordre inverse produit un refus 1045 de Kesh, ou une sauvegarde en échec pour root. Lister d'abord les comptes : +\end{sloppypar} + +\begin{lstlisting}[language=bash] +cd /opt/kesh # répertoire du compose +sudo docker compose exec -T mariadb sh -c \ + 'mariadb -uroot -p"$MARIADB_ROOT_PASSWORD" \ + -e "SELECT user, host FROM mysql.user"' +\end{lstlisting} + +L'image MariaDB crée deux comptes \texttt{root} (\texttt{root@localhost} et \texttt{root@\%}) et le compte \texttt{kesh@\%} ; il faut une ligne \texttt{ALTER USER} par compte \texttt{root} listé. Puis : + +\begin{lstlisting}[language=bash] +cd /opt/kesh +sudo docker compose stop kesh-api +NEW_ROOT=$(openssl rand -hex 32) # jamais tapés : absents de +NEW_KESH=$(openssl rand -hex 32) # l'historique du shell +sudo docker compose exec -T mariadb \ + sh -c 'mariadb -uroot -p"$MARIADB_ROOT_PASSWORD"' <xh>ogToNVC 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 VjqNca1XfNqUU*7M2_;GR{{d7n1a1HT delta 9245 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

-e9k~@Ov|Dv|2Shwh~xBP4%d*ar9E) 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 Date: Fri, 9 Oct 2026 07:45:13 +0200 Subject: [PATCH 08/14] =?UTF-8?q?docs(15-13a):=20DOCKER=5FSTART.md=20sans?= =?UTF-8?q?=20port=203306=20ni=20kesh=5Fdev,=20diagnostic=20avant=20down?= =?UTF-8?q?=20-v=20;=20init-demo.sh=20retir=C3=A9=20;=20CHANGELOG=200.13.0?= =?UTF-8?q?=20=E2=80=94=20S=C3=A9curit=C3=A9=20#551,=20Retir=C3=A9,=20prop?= =?UTF-8?q?agation=20(refs=20#551)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 12 +++- DOCKER_START.md | 51 ++++++++++--- init-demo.sh | 188 ------------------------------------------------ 3 files changed, 52 insertions(+), 199 deletions(-) delete mode 100755 init-demo.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b9f2315..3d2d76b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,10 @@ Le contenu est rédigé en français à destination des **fiduciaires, PME, ind - **Clôture et création d'un exercice : deux refus neufs pour une intégration par clé d'API ([#543](https://github.com/guycorbaz/kesh/issues/543)).** `POST /api/v1/fiscal-years/{id}/close` rend **`409 EARLIER_FISCAL_YEAR_OPEN`** (nouveau) tant qu'un exercice antérieur est ouvert — `details.fiscalYearId` / `fiscalYearName` nomment le plus ancien, à clôturer d'abord ; une intégration qui clôturait hors d'ordre reçoit désormais ce refus (la clôture est ouverte aux clés, rôle Comptable et plus). `POST /api/v1/fiscal-years` rend **`400 LATER_FISCAL_YEAR_CLOSED`** si un exercice postérieur à la date de début demandée est clôturé, avec un message propre à la création. Les deux routes rejouent un interblocage transitoire. Détail : `docs/api-external.md`. +### Retiré + +- **`init-demo.sh`** ([#551](https://github.com/guycorbaz/kesh/issues/551)). Ce script visait par défaut le conteneur MariaDB de `docker-compose.yml` avec l'ancien mot de passe publié, et ses suppressions successives, sans transaction ni confirmation, auraient vidé une partie d'une base peuplée. La démonstration se sème depuis l'écran d'accueil de Kesh. + ### Corrigé - **Les exercices se clôturent dans l'ordre : un bilan clos ne change plus en silence ([#543](https://github.com/guycorbaz/kesh/issues/543)).** Le bilan est cumulatif depuis l'origine : toute écriture d'un exercice figure dans le bilan des suivants. Or on pouvait clôturer un exercice en laissant ouvert un exercice antérieur — ou créer un exercice antérieur à un exercice clôturé —, puis écrire dans cet exercice ouvert : le bilan clos changeait sans que rien ne le signale. **La clôture est désormais refusée tant qu'un exercice antérieur est ouvert** : à l'écran, le bouton **Clôturer** est désactivé et son infobulle nomme l'exercice à clôturer d'abord. **La création d'un exercice est refusée** si un exercice postérieur est déjà clôturé. Avec la réouverture, qui allait déjà du plus récent vers l'ancien, aucun exercice ouvert ne peut plus précéder un exercice clôturé **à partir d'une installation saine**. Le refus de modifier ou de supprimer une écriture sous un exercice postérieur clos dit maintenant comment s'en sortir — rouvrir les exercices clôturés **en commençant par le plus récent**, et non celui qu'il nomme, que la réouverture refuserait. ⚠️ Une installation mise à jour ou une sauvegarde restaurée peut porter cet état, hérité d'une version antérieure. **Plus rien ne s'enregistre alors dans l'exercice ouvert concerné** : ni saisie, ni validation, règlement, solde ou dévalidation d'une facture, ni avoir, facture fournisseur, paiement, lot de paiement, soldes de départ ou rapprochement — chacun de ces gestes changerait le bilan clos ; le refus nomme l'exercice clôturé. Une contre-passation — et donc toute annulation, qui en porte une — est datée **du jour** : elle reste possible, et n'est refusée que si l'exercice du jour est lui-même suivi d'un exercice clôturé. **L'écran *Exercices comptables* signale l'état** par un bandeau, visible de tous les rôles, qui dit comment rétablir l'ordre : clôturer l'exercice ouvert le plus ancien si ses comptes sont arrêtés, puis les suivants ; sinon, faire rouvrir les exercices clôturés **en commençant par le plus récent**. L'import accepte toujours une telle sauvegarde. ⚠️ **Limites** : l'écran des soldes de départ et les annulations de règlement ou de rapprochement annoncent le geste possible et le refus ne vient qu'au clic ([#568](https://github.com/guycorbaz/kesh/issues/568)). *(API : `400 LATER_FISCAL_YEAR_CLOSED` sur toute route qui écrit au journal, `details.fiscalYearId` / `fiscalYearName` ; dans `failed[]` de `POST /reconciliation/accept`, sans bloquer le reste du lot. Le message de ce refus couvre désormais la saisie.)* @@ -55,14 +59,18 @@ Le contenu est rédigé en français à destination des **fiduciaires, PME, ind - **La configuration posée dans `.env` atteint enfin Kesh ([#550](https://github.com/guycorbaz/kesh/issues/550)).** Les deux compose fournis ne transmettaient au conteneur que les variables listées sous `environment:` — Docker Compose lit `.env` pour remplir le compose, il ne le transmet pas. Seize variables que `.env.example` proposait de régler restaient donc **sans effet, sans aucun message** : les e-mails sortants (`KESH_SMTP_*`, `KESH_PUBLIC_BASE_URL`), le mot de passe oublié par e-mail, la sortie de la démonstration, la langue, la longueur minimale des mots de passe, les plafonds d'import et de sauvegarde, et les cookies `Secure` avec `docker-compose.prod.yml`. Elles sont désormais toutes transmises, et un test empêche qu'un compose en oublie une. Le message de démarrage qui renvoyait à une variable inexistante (`KESH_ADMIN_` + `RESET`) nomme le vrai recours (`KESH_ADMIN_USERNAME` / `KESH_ADMIN_PASSWORD`). `docker-compose.yml` s'installe seul : il désigne l'image publiée au lieu d'exiger les sources. Un `.env` sans `KESH_ADMIN_PASSWORD` ne fait plus refuser le démarrage avec `docker-compose.yml`, ni avertir Compose avec `docker-compose.prod.yml` : l'onboarding `/setup` recommandé par le manuel fonctionne, et le retrait des variables après un break-glass aussi. `KESH_JWT_SECRET` reste obligatoire. **Inchangé** : avec `docker-compose.prod.yml`, les montages restent `./documents`, `./inbox`, `./log`, et les `KESH_*_HOST_DIR` y sont sans effet ([#558](https://github.com/guycorbaz/kesh/issues/558)). - ⚠️ **Action requise sur une installation existante.** La nouvelle image seule ne corrige rien : le défaut est dans le fichier compose que vous détenez, et le compose de la 0.13.0 s'emploie avec l'image 0.13.0. **Re-téléchargez le compose** et reportez-y vos seules adaptations locales (port, réseau, **chemins des montages** — un montage modifié à la main et non reporté revient à `./documents`, et justificatifs et PDF paraissent disparus : ils sont toujours dans l'ancien dossier), puis **`docker compose pull`** et **`docker compose up -d`**. Pour qui garde son fichier, le manuel d'administration décrit les **deux gestes** (§ *Passer à la 0.13.0*). **Relisez votre `.env` avant de mettre à jour** : des lignes jusqu'ici sans effet le deviennent. Kesh **refuse de démarrer** si `KESH_SMTP_TLS` ou `KESH_FEATURE_FORGOT_PASSWORD` portent une valeur autre que `true`/`false`/`1`/`0`, si `KESH_COOKIE_SECURE` en porte une avec `docker-compose.prod.yml`, si le mot de passe oublié est activé avec un SMTP incomplet ou mal formé, ou si, activé, le mailer SMTP ne se construit pas, ou encore si `KESH_JWT_SECRET` ou `KESH_ADMIN_PASSWORD` est resté à un placeholder (cf. **Sécurité**) — le message nomme la variable (`docker compose logs kesh-api`). Sans refus : `KESH_PRODUCTION_RESET` réautorise la réinitialisation **d'une installation restée en démonstration** ; les quatre `KESH_SMTP_HOST`/`_USER`/`_PASSWORD`/`_FROM` posées activent l'envoi de factures, et avec `KESH_FEATURE_FORGOT_PASSWORD=true` la réinitialisation du mot de passe par e-mail ; `KESH_COOKIE_SECURE` agit enfin avec `docker-compose.prod.yml`, de même que `KESH_ADMIN_BACKUP_DIR`, `KESH_LANG`… ; une ligne `KESH_LOG_FILE_PATH=` vide désactive désormais le journal fichier. Une valeur qui contient `$` se met entre apostrophes simples (`KESH_SMTP_PASSWORD='pa$word'`), sinon elle est tronquée. Une variable que `.env` ne pose pas, ou laisse vide, prend son défaut sans avertissement — la sauvegarde pré-import reste dans `/tmp`. Un `.env` copié du gabarit sans modification ne change rien d'autre que le refus du placeholder du secret JWT. + ⚠️ **Action requise sur une installation existante.** La nouvelle image seule ne corrige rien : le défaut est dans le fichier compose que vous détenez, et le compose de la 0.13.0 s'emploie avec l'image 0.13.0. **Re-téléchargez le compose** et reportez-y vos seules adaptations locales (port, réseau, **chemins des montages** — un montage modifié à la main et non reporté revient à `./documents`, et justificatifs et PDF paraissent disparus : ils sont toujours dans l'ancien dossier), puis **`docker compose pull`** et **`docker compose up -d`**. Pour qui garde son fichier, le manuel d'administration décrit les gestes, fichier par fichier (§ *Passer à la 0.13.0*). **Relisez votre `.env` avant de mettre à jour** : des lignes jusqu'ici sans effet le deviennent. Avec `docker-compose.yml`, c'est d'abord **Compose** qui refuse, au terminal et avant tout démarrage, si `MARIADB_ROOT_PASSWORD` ou `MARIADB_PASSWORD` manque à `.env` (cf. **Sécurité**, [#551](https://github.com/guycorbaz/kesh/issues/551)). Kesh **refuse de démarrer** si `KESH_SMTP_TLS` ou `KESH_FEATURE_FORGOT_PASSWORD` portent une valeur autre que `true`/`false`/`1`/`0`, si `KESH_COOKIE_SECURE` en porte une avec `docker-compose.prod.yml`, si le mot de passe oublié est activé avec un SMTP incomplet ou mal formé, ou si, activé, le mailer SMTP ne se construit pas, ou encore si `KESH_JWT_SECRET` ou `KESH_ADMIN_PASSWORD` est resté à un placeholder (cf. **Sécurité**) — le message nomme la variable (`docker compose logs kesh-api`). Sans refus : `KESH_PRODUCTION_RESET` réautorise la réinitialisation **d'une installation restée en démonstration** ; les quatre `KESH_SMTP_HOST`/`_USER`/`_PASSWORD`/`_FROM` posées activent l'envoi de factures, et avec `KESH_FEATURE_FORGOT_PASSWORD=true` la réinitialisation du mot de passe par e-mail ; `KESH_COOKIE_SECURE` agit enfin avec `docker-compose.prod.yml`, de même que `KESH_ADMIN_BACKUP_DIR`, `KESH_LANG`… ; une ligne `KESH_LOG_FILE_PATH=` vide désactive désormais le journal fichier. Une valeur qui contient `$` se met entre apostrophes simples (`KESH_SMTP_PASSWORD='pa$word'`), sinon elle est tronquée. Une variable que `.env` ne pose pas, ou laisse vide, prend son défaut sans avertissement — hormis, avec `docker-compose.yml`, `MARIADB_ROOT_PASSWORD` et `MARIADB_PASSWORD`, désormais obligatoires — ; la sauvegarde pré-import reste dans `/tmp`. Un `.env` copié du gabarit sans modification ne change rien d'autre que le refus du placeholder du secret JWT et, avec `docker-compose.yml`, le sort des mots de passe MariaDB : copié du gabarit 0.13.0, où ils sont commentés, il fait refuser Compose ; copié d'un gabarit antérieur, qui posait `kesh_dev`, il fait émettre à Kesh l'avertissement « mot de passe publié ». **Exploitant de `docker-compose.yml` qui construit depuis un clone** : après `git pull`, `docker compose up -d` **tire** `gcorbaz/kesh:latest` au lieu de construire les sources — `docker compose up -d --build` pour construire, et `docker compose pull kesh-api` pour revenir à l'image publiée après un build local qui l'a étiquetée `latest`. ### Sécurité -- **Le secret JWT et le mot de passe admin laissés au placeholder du gabarit, ou à un gabarit entre chevrons du manuel, sont refusés au démarrage ([#557](https://github.com/guycorbaz/kesh/issues/557)).** Jusqu'ici, `KESH_JWT_SECRET=` recopié tel quel de `.env.example` était **accepté** : les jetons de session étaient signés avec un secret publié dans le dépôt. De même, `KESH_ADMIN_PASSWORD=` décommenté tel quel, ou `KESH_ADMIN_PASSWORD=` recopié du manuel, créait sur une base vide un administrateur au mot de passe publié. Toute valeur qui contient `GENERATE_ME` (sans égard à la casse) ou qui est de la forme `<…>` est désormais refusée pour ces deux variables, avant le contrôle de longueur. **Action pour une installation existante**, avant la mise à jour, le compose final en place : la vérification du manuel d'administration (§ *Passer à la 0.13.0*), `sudo docker compose config | grep -iE 'KESH_(JWT_SECRET|ADMIN_PASSWORD): .? *(<|.*generate_me)'`, doit rester muette. Si elle montre `KESH_JWT_SECRET`, remplacez la valeur par la sortie de `openssl rand -hex 32` (toutes les sessions ouvertes sont invalidées, chacun se reconnecte) ; si elle montre `KESH_ADMIN_PASSWORD`, choisissez un vrai mot de passe ou recommentez la ligne — **et**, si l'administrateur a été créé avec ce placeholder, **changez son mot de passe** dans Kesh (le refus au démarrage ne change pas un compte déjà créé). Puis `docker compose up -d`. Sans cette action, Kesh 0.13.0 refuse de démarrer, avec un message qui nomme la variable. +- **Le secret JWT et le mot de passe admin laissés au placeholder du gabarit, ou à un gabarit entre chevrons du manuel, sont refusés au démarrage ([#557](https://github.com/guycorbaz/kesh/issues/557)).** Jusqu'ici, `KESH_JWT_SECRET=` recopié tel quel de `.env.example` était **accepté** : les jetons de session étaient signés avec un secret publié dans le dépôt. De même, `KESH_ADMIN_PASSWORD=` décommenté tel quel, ou `KESH_ADMIN_PASSWORD=` recopié du manuel, créait sur une base vide un administrateur au mot de passe publié. Toute valeur qui contient `GENERATE_ME` (sans égard à la casse) ou qui est de la forme `<…>` est désormais refusée pour ces deux variables, avant le contrôle de longueur. **Action pour une installation existante**, avant la mise à jour, le compose final en place et, avec `docker-compose.yml`, les deux mots de passe MariaDB posés (entrée suivante) : `sudo docker compose config -q && echo 'compose lisible'` doit afficher `compose lisible` — si Compose refuse le fichier, la vérification qui suit ne reçoit rien et reste muette comme un succès —, puis la vérification du manuel d'administration (§ *Passer à la 0.13.0*), `sudo docker compose config | grep -iE 'KESH_(JWT_SECRET|ADMIN_PASSWORD): .? *(<|.*generate_me)'`, doit rester muette. Si elle montre `KESH_JWT_SECRET`, remplacez la valeur par la sortie de `openssl rand -hex 32` (toutes les sessions ouvertes sont invalidées, chacun se reconnecte) ; si elle montre `KESH_ADMIN_PASSWORD`, choisissez un vrai mot de passe ou recommentez la ligne — **et**, si l'administrateur a été créé avec ce placeholder, **changez son mot de passe** dans Kesh (le refus au démarrage ne change pas un compte déjà créé). Puis `docker compose up -d`. Sans cette action, Kesh 0.13.0 refuse de démarrer, avec un message qui nomme la variable. + + +- **MariaDB n'est plus joignable depuis le réseau, et n'a plus de mots de passe publiés ([#551](https://github.com/guycorbaz/kesh/issues/551)).** `docker-compose.yml` publiait le port 3306 de MariaDB sur **toutes** les interfaces de l'hôte, avec des mots de passe par défaut écrits dans le dépôt (`kesh_dev_root` pour root, `kesh_dev` pour Kesh) — et un port publié par Docker **contourne le pare-feu de l'hôte** (UFW) : le pare-feu recommandé par le manuel ne le fermait pas. Le port n'est plus publié (Kesh passe par le réseau interne de Docker) ; `MARIADB_ROOT_PASSWORD` et `MARIADB_PASSWORD` n'ont plus de défaut : sans eux, Compose refuse de démarrer en nommant la variable ; `.env.example` ne les pose plus (lignes commentées). Kesh **avertit au démarrage** quand le mot de passe de `DATABASE_URL` est un mot de passe publié (`kesh_dev`, `kesh_dev_root`) ou un gabarit `<…>` recopié du manuel, et un refus d'identifiant de MariaDB (erreur 1045) est désormais suivi d'un **indice**. Le manuel fait générer le mot de passe MariaDB de l'installation Synology en hexadécimal (`openssl rand -hex 32`) : la sortie base64 qu'il prescrivait contenait une fois sur deux un `/`, qui rendait la `DATABASE_URL` inexploitable. + ⚠️ **Action requise** (`docker-compose.yml`) : re-téléchargez le compose. Sans les deux variables, Compose refuse de démarrer en les nommant — écrivez-y **les valeurs avec lesquelles la base a été créée, jamais des neuves** (pour qui n'en avait jamais posé : les anciens défauts), car MariaDB ne relit pas ces variables après la création de la base ; puis **changez ces mots de passe** selon le manuel d'administration (§ *Changer un mot de passe MariaDB* : `ALTER USER` d'abord, `.env` ensuite). Un outil de l'hôte qui se connectait au port 3306 passe désormais par `docker compose exec mariadb`. **Limite** : Kesh ne voit pas le mot de passe **root** — un `kesh_dev_root` recopié d'un ancien `.env`, ou un root resté au gabarit `<…>`, ne déclenche aucun avertissement ; seuls le contrôle de fin de mise à jour du manuel (connexion à la base refusée avec l'ancien mot de passe) et la relecture des chevrons de `.env` le montrent. Le script de sauvegarde du manuel lit désormais le mot de passe root dans le conteneur (`sh -c`) et vise le service `mariadb` (il nommait un service `db` inexistant) : lancez-le une fois à la main après la mise à jour. --- ## [0.12.1] — 2026-10-07 diff --git a/DOCKER_START.md b/DOCKER_START.md index c97b2d0d..b554b274 100644 --- a/DOCKER_START.md +++ b/DOCKER_START.md @@ -3,23 +3,33 @@ ## Prérequis - Docker & Docker Compose installés -- Port 80 et 3306 disponibles sur la machine hôte +- Port 80 disponible sur la machine hôte (MariaDB n'est pas publiée : Kesh + l'atteint par le réseau interne de Docker) ## Démarrage rapide ### 1. Préparer `.env` (obligatoire) -Sans `.env`, Kesh refuse de démarrer : le secret JWT par défaut de -`docker-compose.yml` (`change-me…`) est refusé à dessein. +Sans `.env`, c'est d'abord **Compose** qui refuse, au terminal, en nommant +`MARIADB_ROOT_PASSWORD` ou `MARIADB_PASSWORD` (une seule à la fois, pas toujours +la même) : depuis la 0.13.0, `docker-compose.yml` n'a plus de mots de passe +MariaDB par défaut. Ensuite seulement, Kesh refuse le secret JWT par défaut de +`docker-compose.yml` (`change-me…`), à dessein. ```bash cp .env.example .env -# Remplacer dans .env la valeur de KESH_JWT_SECRET par la sortie de : +# Dans .env, remplacer la valeur de KESH_JWT_SECRET, puis décommenter +# MARIADB_ROOT_PASSWORD et MARIADB_PASSWORD et leur donner une valeur — +# chacune la sortie d'une commande : openssl rand -hex 32 ``` Le placeholder `` recopié tel quel est refusé au démarrage -(depuis la 0.13.0). +(depuis la 0.13.0). Les deux mots de passe MariaDB ne sont lus qu'à la +**création** de la base : les changer ensuite dans `.env` ne change pas le mot +de passe enregistré (manuel d'administration, § *Changer un mot de passe +MariaDB*). Hexadécimal : une sortie base64 peut contenir `/`, qui casse une +`DATABASE_URL`. ### 2. Lancer les containers @@ -99,9 +109,12 @@ docker compose up -d --build kesh-api ### Accéder à la base de données ```bash -docker compose exec mariadb mysql -u kesh -pkesh_dev -D kesh +docker compose exec mariadb mariadb -u kesh -p -D kesh ``` +Le mot de passe (`MARIADB_PASSWORD` de `.env`) est demandé. Le port 3306 n'est +pas publié sur l'hôte : un port publié par Docker contourne le pare-feu (UFW). + ### Voir les volumes créés ```bash @@ -131,10 +144,28 @@ Cf. `.env.example` section "Conflit port 80" et le manuel admin section (macvlan IP dédiée, dev `cargo run` natif sur Linux non-root, etc.). Puis appliquez : `docker compose up -d`. -### Base de données ne s'initialise pas +### Base de données ne démarre pas, ou Kesh ne s'y connecte pas + +Diagnostic d'abord : +```bash +docker compose logs kesh-api +docker compose logs mariadb +``` + +- **Erreur 1045** (« Access denied ») ou l'**indice** de Kesh sur + `MARIADB_PASSWORD` : le mot de passe de `.env` n'est pas celui avec lequel la + base a été créée — MariaDB ne relit pas `.env`. Revenir à la valeur + d'origine (manuel d'administration, § *Passer à la 0.13.0*), puis changer le + mot de passe par la procédure du manuel (`ALTER USER` d'abord). +- **Compose refuse en nommant une variable** (`required variable … is missing + a value`) : la poser dans `.env`. + +⛔ `docker compose down -v` **supprime le volume de la base, définitivement** — +les livres avec. Ne l'employer que sur une installation **sans données à +conserver**, pour repartir d'une base vide : ```bash docker compose down -v -docker compose up --build +docker compose up -d ``` ## Notes @@ -143,4 +174,6 @@ docker compose up --build - Runtime: Debian Bookworm Slim - Rust: 1.85 (build stage uniquement) - Node.js: 22 (build stage uniquement) -- Les données sont persistées dans le volume `mariadb_data` +- Les données sont persistées dans le volume `kesh-mariadb-data` du compose, + que `docker volume ls` affiche `_kesh-mariadb-data` (préfixe du + projet Compose, par défaut le nom du répertoire) diff --git a/init-demo.sh b/init-demo.sh deleted file mode 100755 index ce7ba451..00000000 --- a/init-demo.sh +++ /dev/null @@ -1,188 +0,0 @@ -#!/bin/bash - -# ============================================================================ -# init-demo.sh — Initialize Kesh demo instance via database seeding -# ============================================================================ -# -# Creates a fully initialized demo company with: -# - Company with all accounts (PME chart) -# - Admin user (admin / admin123) -# - Onboarding state marked as complete -# - Company invoice settings configured -# -# Usage: -# ./init-demo.sh # Use default database -# ./init-demo.sh custom-container # Use specific container name - -set -e # Exit on error - -# Configuration -CONTAINER="${1:-kesh-mariadb}" -DB_NAME="kesh" -DB_USER="kesh" -DB_PASS="kesh_dev" - -# Argon2id hash for password "admin123" (matching test_fixtures.rs) -ADMIN_PASSWORD_HASH='$argon2id$v=19$m=19456,t=2,p=1$wDaFUbAJuozHKhQshibCHw$T/DeYTKABHDpW7JM5MoiQciUad5Eb81Cfvh0aUvi2Z4' - -# Colors for output -GREEN='\033[0;32m' -BLUE='\033[0;34m' -YELLOW='\033[1;33m' -RED='\033[0;31m' -NC='\033[0m' # No Color - -# ============================================================================ -# Functions -# ============================================================================ - -log_info() { - echo -e "${BLUE}ℹ ${1}${NC}" -} - -log_success() { - echo -e "${GREEN}✓ ${1}${NC}" -} - -log_warning() { - echo -e "${YELLOW}⚠ ${1}${NC}" -} - -log_error() { - echo -e "${RED}✗ ${1}${NC}" -} - -check_container() { - log_info "Checking database container..." - if ! docker ps | grep -q "$CONTAINER"; then - log_error "Container '$CONTAINER' is not running" - log_info "Start with: docker compose up -d" - exit 1 - fi - log_success "Container is running" -} - -seed_database() { - log_info "Seeding database with demo company..." - - # Use sed to replace the hash placeholder in the SQL - cat <<'EOSQL' | sed "s|\$ADMIN_PASSWORD_HASH|$ADMIN_PASSWORD_HASH|" | docker exec -i "$CONTAINER" mariadb -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" --- Delete existing data (if any) to ensure clean state -DELETE FROM company_invoice_settings WHERE company_id IN (SELECT id FROM companies); -DELETE FROM onboarding_state; -DELETE FROM users WHERE company_id IN (SELECT id FROM companies); -DELETE FROM accounts WHERE company_id IN (SELECT id FROM companies); -DELETE FROM companies; - --- Create company -INSERT INTO companies (name, address, org_type, accounting_language, instance_language, version, created_at, updated_at) -VALUES ('Demo Company', 'Demo Address', 'Independant', 'FR', 'FR', 1, NOW(), NOW()); - -SET @company_id = LAST_INSERT_ID(); - --- Create onboarding state (marked as complete, demo mode) -INSERT INTO onboarding_state (singleton, step_completed, is_demo, ui_mode, version, created_at, updated_at) -VALUES (TRUE, 3, TRUE, 'guided', 1, NOW(), NOW()); - --- Create accounts (PME chart) -INSERT INTO accounts (company_id, number, name, account_type, active, version, created_at, updated_at) -VALUES - (@company_id, '1000', 'Caisse', 'Asset', 1, 1, NOW(), NOW()), - (@company_id, '1100', 'Créances', 'Asset', 1, 1, NOW(), NOW()), - (@company_id, '1200', 'Stocks', 'Asset', 1, 1, NOW(), NOW()), - (@company_id, '1300', 'Matériel', 'Asset', 1, 1, NOW(), NOW()), - (@company_id, '2000', 'Dettes', 'Liability', 1, 1, NOW(), NOW()), - (@company_id, '2100', 'Crédits', 'Liability', 1, 1, NOW(), NOW()), - (@company_id, '3000', 'Ventes', 'Revenue', 1, 1, NOW(), NOW()), - (@company_id, '4000', 'Charges', 'Expense', 1, 1, NOW(), NOW()), - (@company_id, '4100', 'Personnel', 'Expense', 1, 1, NOW(), NOW()), - (@company_id, '4200', 'Autres charges', 'Expense', 1, 1, NOW(), NOW()); - --- Create admin user with Argon2 hash -INSERT INTO users (company_id, username, password_hash, role, active, version, created_at, updated_at) -SELECT - @company_id, - 'admin', - '$ADMIN_PASSWORD_HASH', - 'Admin', - 1, - 1, - NOW(), - NOW(); - --- Create company_invoice_settings with default accounts -INSERT INTO company_invoice_settings ( - company_id, - invoice_number_format, - default_receivable_account_id, - default_revenue_account_id, - default_sales_journal, - journal_entry_description_template, - version, - created_at, - updated_at -) -SELECT - @company_id, - 'F-{YEAR}-{SEQ:04}', - (SELECT id FROM accounts WHERE company_id = @company_id AND number = '1100' LIMIT 1), - (SELECT id FROM accounts WHERE company_id = @company_id AND number = '3000' LIMIT 1), - 'Ventes', - '{YEAR}-{INVOICE_NUMBER}', - 1, - NOW(), - NOW(); - --- Verify data was created -SELECT 'Demo company created' as status; -SELECT COUNT(*) as account_count FROM accounts WHERE company_id = @company_id; -SELECT username FROM users WHERE company_id = @company_id; -EOSQL - - log_success "Database seeded successfully" -} - -test_api() { - log_info "Testing API access..." - - local health=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:3000/health) - if [ "$health" = "200" ]; then - log_success "API is healthy" - return 0 - else - log_warning "API health check returned: $health" - return 1 - fi -} - -# ============================================================================ -# Main -# ============================================================================ - -echo "" -echo "╔════════════════════════════════════════════════════════════╗" -echo "║ Kesh — Initialize Demo Instance ║" -echo "╚════════════════════════════════════════════════════════════╝" -echo "" - -check_container -echo "" - -seed_database -echo "" - -test_api -echo "" - -# Final summary -echo "╔════════════════════════════════════════════════════════════╗" -echo "║ ✓ Demo initialization complete! ║" -echo "╚════════════════════════════════════════════════════════════╝" -echo "" -echo "Login credentials:" -echo " Username: ${BLUE}admin${NC}" -echo " Password: ${BLUE}admin123${NC}" -echo "" -echo "Access the application:" -echo " ${BLUE}http://localhost:3000${NC}" -echo "" From 9a1825f9ca805c71c27d4da9b67f015bd884846f Mon Sep 17 00:00:00 2001 From: Guy Corbaz Date: Fri, 9 Oct 2026 08:03:19 +0200 Subject: [PATCH 09/14] =?UTF-8?q?docs(15-13a):=20Dev=20Agent=20Record,=20g?= =?UTF-8?q?ates=20r=C3=A9els,=20statut=20review=20(refs=20#551)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- ...-non-publiee-mots-de-passe-obligatoires.md | 183 ++++++++++++++++-- .../sprint-status.yaml | 2 +- 2 files changed, 163 insertions(+), 22 deletions(-) diff --git a/_bmad-output/implementation-artifacts/15-13a-mariadb-non-publiee-mots-de-passe-obligatoires.md b/_bmad-output/implementation-artifacts/15-13a-mariadb-non-publiee-mots-de-passe-obligatoires.md index 93d80741..0d79187a 100644 --- a/_bmad-output/implementation-artifacts/15-13a-mariadb-non-publiee-mots-de-passe-obligatoires.md +++ b/_bmad-output/implementation-artifacts/15-13a-mariadb-non-publiee-mots-de-passe-obligatoires.md @@ -1,6 +1,6 @@ # Story 15.13a : MariaDB n'est plus publiée, et ses mots de passe sont obligatoires -Status: ready-for-dev +Status: review J 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℞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 z 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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

ac?Lg;CJC4z8*G&z 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