[DTP-Worker 20260802_223614] Sprint 8 · buffer · Dérive doc-vs-CODE réelle : docstring q4lib/builder.py « 17 modules » périmé (17→22)
Sweep docstring-vs-CODE des sous-paquets lib/ (nouveau périmètre vs les générateurs de tête déjà balayés). Concordance quasi totale — UNE dérive réelle : le docstring d'en-tête de qa/audit_4big/q4lib/builder.py annonçait « les 17 modules atteignent >= 95/100 » alors que l'artefact commité out/quality_report.json porte totals.modules = 22 (tous PASS). Le compte a grandi 17->22 au fil des livrables gatés. Preuve d'antériorité : ci/check_readme_claims.sh l.414-417 documente CETTE dérive exacte — « 17/17 SAISI À LA MAIN … PÉRIMÉ … (17 -> 22) » — et re-calcule le compte du README de l'auditeur (désormais 22/22), MAIS le gate ne couvre pas le docstring du module (les docstrings ne sont pas count-checkés · classe docstring-vs-code-drift). Le même « 17 » gaté dans le README a survécu, non gaté, dans le docstring de prod. Correction anti-re-dérive : pas de substitution « 22 » (re-dériverait au module #23) ; reformulé en énonçant la RÈGLE réelle du builder (verdict = coverage.ok AND not below => TOUS les modules audités >= 95/100), + note que le compte est DÉRIVÉ (len(modules) == totals.modules). Aligné fix-vs-gate (décrire depuis l'autorité = le code). Zéro module · zéro gate (#5) · un seul fichier de prod touché (docstring seul, zéro logique) · run_ci.sh 30 PASS · README module gaté déjà à 22/22 (concordant). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2078,3 +2078,42 @@ fantôme ; docstring/help `demo_scenario_gen` omettant `run_sheet.md`). Chaque a
|
||||
seuls des fichiers de doc/log touchés). **Zéro nouveau module · zéro gate ajouté (#5) ·
|
||||
zéro fichier de production modifié** (reporting + vérification pure). Aucune commande
|
||||
touchant au VPS (#8) · aucun `git clean` (#interdits).
|
||||
|
||||
---
|
||||
|
||||
## Session `20260802_223614` — Dérive doc-vs-CODE réelle : docstring `q4lib/builder.py` « 17 modules » périmé (17 → 22)
|
||||
|
||||
**Contexte.** Reprise buffer Sprint 8, veille saturée. CI vert d'entrée
|
||||
(`./run_ci.sh` → **30 PASS · 0 FAIL · 0 SKIP**). Roadmap intégralement livrée.
|
||||
|
||||
**Analyse — sweep docstring-vs-CODE des `lib/` submodules (classe RÉCURRENTE, non close).**
|
||||
Les sessions précédentes avaient balayé les **déclarations de sortie** des 22 générateurs
|
||||
de tête. Nouveau périmètre ce jour : les **docstrings de module** des sous-paquets `lib/`
|
||||
(là où la vraie dérive du parser publiciste vivait). Extraction AST de tous les docstrings
|
||||
mentionnant des I/O (Sources lues / Entrées / Sortie / fallback / §), confrontés au code.
|
||||
**Résultat : concordance quasi totale** — parser publiciste propre (6 sources lues = 6 lues
|
||||
dans `parse_projet`/`_sources_presentes`), tous les builders/deps/frappe fidèles.
|
||||
|
||||
**UNE dérive réelle trouvée.** Docstring `qa/audit_4big/q4lib/builder.py` l.4 :
|
||||
« (b) les **17** modules atteignent ≥ 95/100 ». Or l'artefact commité
|
||||
`out/quality_report.json` porte `totals.modules = **22**` · `coverage.ci_modules_count = 22`
|
||||
· `pass = 22`. **Preuve d'antériorité de la dérive :** le gate `ci/check_readme_claims.sh`
|
||||
l.414-417 la documente noir sur blanc — « 17/17 modules SAISI À LA MAIN … PÉRIMÉ en silence
|
||||
quand des modules ont été ajoutés (17 → 22) ». Le gate **recalcule** le compte du *README*
|
||||
de l'auditeur (désormais « 22/22 » l.68) — mais le **docstring du module** est resté hors
|
||||
couverture (les docstrings ne sont ni link- ni count-checkés · cf. mémoire
|
||||
`docstring-vs-code-drift`). Le même « 17 » gaté dans le README avait survécu, non gaté, dans
|
||||
le docstring de production.
|
||||
|
||||
**Correction — honnête ET anti-re-dérive (pas de substitution d'un compte magique).**
|
||||
Le verdict réel du builder est `PASS ssi coverage.ok AND not below` — le nombre de modules
|
||||
est **DÉRIVÉ** (`len(modules)`), jamais figé. Remplacer « 17 » par « 22 » ne ferait que
|
||||
re-dériver au module #23. Reformulé en énonçant la **RÈGLE** : « TOUS les modules audités
|
||||
atteignent ≥ 95/100 (aucun sous le seuil) », + note explicite que le compte est dérivé
|
||||
(`len(modules)` == `totals.modules`, 17 → 22 à ce jour) et ne se retouche pas ici. Aligné
|
||||
sur l'éthos `fix-vs-gate` (ne pas empiler un gate N+1 ; décrire depuis l'autorité = le code).
|
||||
|
||||
**Vérifications.** `./run_ci.sh` → **30 PASS · 0 FAIL · 0 SKIP** (inchangé — docstring seul,
|
||||
zéro changement de logique). README module gaté déjà à **22/22** (concordant). **Zéro nouveau
|
||||
module · zéro gate ajouté (#5) · un seul fichier de production touché (docstring)**. Aucune
|
||||
commande VPS (#8) · aucun `git clean`.
|
||||
|
||||
Reference in New Issue
Block a user