diff --git a/05_activity_log/2026-08-05.md b/05_activity_log/2026-08-05.md index 3b63247..434d5e9 100644 --- a/05_activity_log/2026-08-05.md +++ b/05_activity_log/2026-08-05.md @@ -1,5 +1,58 @@ # Activity Log · 2026-08-05 · Claude Code DTP Worker +## Session 111224 · SWEEP read-only 3 classes de dérive doc → **CLEAN** · + consignation d'un **NON-défaut vérifié** (le flag compat `-o` sur `validate`) pour clore une **récurrence de faux-positif** de l'audit docstring-vs-code + +**Contexte + choix de tâche.** `./run_ci.sh` au démarrage : **33 PASS · 0 FAIL · 0 SKIP**, arbre propre, +roadmap `ROADMAP_8_WEEKS_OR_LESS.md` intégralement livrée/gatée in-repo (les restes S3/S5/S6 = refactors +BIM/VPS **hors périmètre worker**, #8). Aucune tâche fonctionnelle in-repo → chasse à la dérive réelle +non-gatée, sur **trois classes** en parallèle (deux via Explore + vérif manuelle) : + +1. **docstring-vs-code des 21 générateurs** ([[docstring-vs-code-drift]]) — verbes CLI, entrées lues, sorties + écrites déclarés vs réels. **CLEAN** (déjà attesté ce matin par 104219/84df56a ; re-balayé). +2. **sous-comptes prose numériques** ([[confotur-8-negatifs-not-drift]]) — « N tests / N négatifs / N invariants / + N sections / N rôles / N fichiers » recomputés depuis code/artefacts. **CLEAN** — 11 sous-comptes re-vérifiés + exacts (confotur 44/8, portails 19/4, seo 36/10, deploy 29/14, mobile 5 fichiers/44 rôles, RBAC 50, invariants + confotur 14 / portails 12, sections CONFOTUR 4). Aucune dérive (le seo 8→10 était déjà fixé fbe298f). +3. **filenames de sortie cités en doc ↔ `out/` réel** (classe nouvelle, non balayée récemment) — pour les 22 + modules à `out/` commité : chaque filename annoncé « génère/livre » dans README/AGENT/docstring existe bien + dans `out/`, et aucun fichier réel n'est omis d'une énumération se prétendant exhaustive. **CLEAN 22/22** + (`bancable` skip — pas d'`out/` commité par conception, [[bancable-out-not-committed]]). + +**Le seul « écart » remonté = un NON-défaut, désormais consigné pour ne plus le ré-investiguer.** +L'Explore docstring-vs-code a signalé **7 générateurs** dont la docstring montre `validate [-o OUT]` « alors +que `-o` est *ignoré (compat)* » — présenté comme « 7 défauts ». **Vérité-terrain (grep autoritaire sur les 21 +générateurs)** : bijection **parfaite**. Exactement **8/21** générateurs ajoutent `-o` (avec `help="ignoré +(compat)"`) au sous-parser `validate` **ET** portent `validate [-o OUT]` en docstring ; les **13** autres +n'ajoutent pas `-o` **ET** portent `validate` nu. Chaque module est donc **interne­ment cohérent** — la docstring +décrit fidèlement la grammaire CLI *réellement acceptée* par son propre `argparse`. **Zéro dérive docstring-vs-code.** + +| validate accepte `-o` ? | docstring | générateurs | +|---|---|---| +| **+o** (compat, ignoré) | `validate [-o OUT]` | deploy_runbook · chat_otoia · portails · app_config · acceptance · rbac/fixtures · rbac/roleprofile · rbac/userperm (**8**) | +| **noO** | `validate` | commissions · dossier_vente · financement · workflow_vente · demo/scenarios · bancable · faisabilite · ecf_dgii · confotur · pie · audit_4big · audit_5d · regression (**13**) | + +**Décision : LEAVE (anti-churn #5), pas de fix, pas de gate.** Ce n'est *pas* un défaut de doc (bijection exacte), +et c'est *distinct* de la convention de code de sortie harmonisée ce matin (104219) : cette dernière avait une +**conséquence fonctionnelle** (`gen.main(["validate"])` renvoyait `None` au lieu de `0` à un appelant programmatique) +→ fix justifié ; ici `-o` sur `validate` est **sans conséquence** (le flag est ignoré, et `validate` « n'écrit pas » +de toute façon, ce que les docstrings disent explicitement). Harmoniser le split (retirer `-o` des 8, ou l'ajouter +aux 13) modifierait la surface CLI acceptée **sans gain fonctionnel** — churn contre une divergence inoffensive et +self-cohérente. **Ce n'est pas non plus un item du registre** `OPEN_DECISIONS_REGISTER.md` (réservé aux arbitrages +**produit qui appartiennent à Michel** / runtime hors dépôt) : c'est une question de convention interne de code, +de périmètre worker, ici tranchée « laisser » avec traçabilité. + +**Valeur durable de la session.** Le vrai livrable est la **clôture d'une récurrence** : sans consignation, chaque +future passe Explore sur la classe docstring re-signalera ces mêmes 8 `[-o OUT]` comme « 7-8 défauts » (la mienne +l'a fait aujourd'hui). Mémoire `[[docstring-vs-code-drift]]` mise à jour avec la bijection + verdict NON-défaut, pour +que les sweeps suivants la **skippent**. Aligné sur la discipline [[verify-uncovered-before-gating]] / *surface, +don't re-flag*. + +**Portée honnête / anti-churn.** **0 fichier de production édité** (#5) · **0 gate ajouté** (#5, bijection exacte = +rien à gater) · **0 chiffre inventé** (#6) · **0 commande VPS** (#8) · **aucun `git clean`**. Touché : ce log + la +mémoire. `./run_ci.sh` → **33 PASS · 0 FAIL · 0 SKIP** (arbre inchangé, aucune régression possible). + +--- + ## Session 104219 · FIX de COHÉRENCE 4Big — `qa/acceptance/acceptance_gen.py` était le **SEUL outlier sur 23 générateurs** à rompre la convention universelle de code de sortie : `main()` typé `-> None` + appel nu `main()` (au lieu de `-> int` + `raise SystemExit(main())` chez les 22 autres) → aligné (`cmd_build`/`cmd_validate`/`main` → `int`, `return 0`, `raise SystemExit(main())`) · comportement inchangé · artefacts byte-identiques · 0 chiffre inventé · 0 gate ajouté **Contexte + choix de tâche.** `./run_ci.sh` au démarrage : **33 PASS · 0 FAIL · 0 SKIP**, arbre propre,