[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) ·
|
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
|
zéro fichier de production modifié** (reporting + vérification pure). Aucune commande
|
||||||
touchant au VPS (#8) · aucun `git clean` (#interdits).
|
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`.
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
"""Assemblage déterministe du rapport d'audit 4Big.
|
"""Assemblage déterministe du rapport d'audit 4Big.
|
||||||
|
|
||||||
Verdict global = PASS ssi (a) la couverture est bijective vs le CI (100% des
|
Verdict global = PASS ssi (a) la couverture est bijective vs le CI (100% des
|
||||||
livrables gated, hors auditeur) ET (b) les 17 modules atteignent ≥ 95/100.
|
livrables gated, hors auditeur) ET (b) TOUS les modules audités atteignent
|
||||||
Sinon FAIL — l'audit est un GATE, pas un rapport indicatif.
|
≥ 95/100 (aucun sous le seuil). Sinon FAIL — l'audit est un GATE, pas un rapport
|
||||||
|
indicatif. Le nombre de modules est DÉRIVÉ (`len(modules)` == `totals.modules`),
|
||||||
|
jamais figé ici : il croît quand un livrable est gated (17 → 22 à ce jour) sans
|
||||||
|
retoucher ce docstring.
|
||||||
|
|
||||||
Aucune date/horodatage → build reproductible + diffable (gate CI stable).
|
Aucune date/horodatage → build reproductible + diffable (gate CI stable).
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user