From 332afede0e88542afe7ac23c2cf2aac936ec7806 Mon Sep 17 00:00:00 2001 From: Ralph Mayola Date: Sun, 23 Aug 2026 17:44:39 +0200 Subject: [PATCH] Plan : corriger deux defauts releves a l'auto-relecture MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit dossier_donnees() etait utilise par app.py sans figurer dans le contrat Systeme — l'implementation Windows aurait pu l'omettre et ne casser qu'a l'execution. Et les comptes de tests annonces ne s'additionnaient pas depuis 80. Co-Authored-By: Claude Opus 5 (1M context) --- .../plans/2026-08-23-zonza-etape1-contrats.md | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/docs/superpowers/plans/2026-08-23-zonza-etape1-contrats.md b/docs/superpowers/plans/2026-08-23-zonza-etape1-contrats.md index 15bda13..9e9f3f9 100644 --- a/docs/superpowers/plans/2026-08-23-zonza-etape1-contrats.md +++ b/docs/superpowers/plans/2026-08-23-zonza-etape1-contrats.md @@ -68,7 +68,7 @@ from contrats import Overlay, Systeme, Transcripteur (Transcripteur, ["warmup", "transcrire"]), (Overlay, ["show", "hide", "set_level", "set_status", "rearmer_garde"]), (Systeme, ["jouer_son", "modificateurs_enfonces", "raccourci_defaut", - "chemin_log", "acquerir_verrou_instance"]), + "chemin_log", "dossier_donnees", "acquerir_verrou_instance"]), ]) def test_le_contrat_declare_exactement_ses_methodes(contrat, methodes): declarees = [n for n, _ in inspect.getmembers(contrat, inspect.isfunction) @@ -144,6 +144,9 @@ class Systeme(Protocol): def chemin_log(self) -> str: """Chemin absolu du journal.""" + def dossier_donnees(self) -> str: + """Dossier des données de l'application (verrou d'instance, réglages).""" + def acquerir_verrou_instance(self, chemin: str): """Verrou exclusif non bloquant ; rend le fichier, ou None s'il est pris.""" ``` @@ -186,7 +189,7 @@ from systeme import choisir_systeme def test_la_fabrique_rend_une_implementation_complete(): s = choisir_systeme() for methode in ("jouer_son", "modificateurs_enfonces", "raccourci_defaut", - "chemin_log", "acquerir_verrou_instance"): + "chemin_log", "dossier_donnees", "acquerir_verrou_instance"): assert callable(getattr(s, methode)), f"{methode} manque" @@ -312,7 +315,7 @@ et, dans chaque test, remplacer `acquire_single_instance_lock(...)` par `choisir - [ ] **Step 6 : Lancer toute la suite** Run: `.venv/bin/python -m pytest -q` -Expected: PASS — 85 tests (80 + 5 nouveaux) +Expected: PASS — **89 tests** (80 au depart, +4 en tache 1, +5 ici) - [ ] **Step 7 : Commit** @@ -519,7 +522,7 @@ def classe_overlay_pour(plateforme=None): - [ ] **Step 5 : Lancer toute la suite** Run: `.venv/bin/python -m pytest -q` -Expected: PASS — 94 tests +Expected: PASS — **91 tests** (+2 pour l'interface) - [ ] **Step 6 : Commit** @@ -674,6 +677,7 @@ class FauxSysteme: def modificateurs_enfonces(self): return False def raccourci_defaut(self): return "++d" def chemin_log(self): return "/tmp/zonza-test.log" + def dossier_donnees(self): return "/tmp/zonza-test" def acquerir_verrou_instance(self, chemin): return object() @@ -694,7 +698,7 @@ Le contrôleur appelle `transcrire`, non plus `transcribe` : renommer l'appel da - [ ] **Step 5 : Lancer toute la suite** Run: `.venv/bin/python -m pytest -q` -Expected: PASS — 95 tests +Expected: PASS — **92 tests** (+1 pour la garde d'imports) - [ ] **Step 6 : Commit** @@ -773,7 +777,7 @@ Et dans `_start_hotkey`, lire le raccourci depuis le système : - [ ] **Step 3 : Lancer toute la suite** Run: `.venv/bin/python -m pytest -q` -Expected: PASS — 95 tests +Expected: PASS — **92 tests** - [ ] **Step 4 : Reconstruire et vérifier le cdhash** @@ -811,7 +815,7 @@ git push origin main ## Vérification finale de l'étape -- [ ] `.venv/bin/python -m pytest -q` → 95 tests verts +- [ ] `.venv/bin/python -m pytest -q` → **92 tests verts** (80 au depart, +12) - [ ] `codesign -dvvv /Applications/Zonza.app | grep CDHash` → identique à avant l'étape - [ ] `[diag] accessibilité accordée : True` dans le journal - [ ] une dictée réelle produit `[texte]` puis `[collage] ok`