[DTP-Worker] Sprint 8 · buffer L75 · Domaine QA/Audit 4Big : le BARÈME de notation de l'auditeur (« 5 critères 4Big déterministes » + la table Critère|Poids DOC 20/CONTRAT 20/TESTS 25/CLI 15/HANDOFF 20 + l'archétype « generator (5 critères) ») était transcrit À LA MAIN dans le README du module sans AUCUN gate — ironie du module qui NOTE les autres retranscrivant son propre référentiel de scoring. Le bloc racine de check_readme_claims ne gatait que la ligne « Résultat courant » (verdict/modules/min_score), jamais le barème lui-même, alors que qa/audit_4big/out/quality_report.json (byte-gaté par check_artifacts, criteria[] recomputé du référentiel à chaque build) fait autorité. Ajouter/retirer un critère OU changer un poids ferait dériver le README en silence pendant que l'artefact dit autre chose — « vert trompeur » qu'aucune suite tests/ (qui teste des FONCTIONS, pas la prose) n'attrape → nouveau bloc recomputant le nombre de critères (prose « N critères 4Big déterministes » + archétype « generator (N critères) », generator appliquant TOUS les critères) et CHAQUE poids depuis criteria[].weight (zéro duplication du barème du générateur #6), exigeant l'égalité avec le README. Contrôle PAR CRITÈRE et pas seulement de la somme : une compensation de poids (+5/−5) laisserait Σ==100 juste et deux lignes fausses. Cohérences croisées en bonus : Σ poids == 100 (base de renormalisation documentée) ET tout module d'archétype generator porte EXACTEMENT len(criteria) checks (« generator = tous les critères » — 18 modules generator × 5 checks vérifiés). Un claim absent échoue AUSSI (4 morsures vérifiées : prose 5→6 captée là où les poids restent justes · poids TESTS 25→30 capté là où le compte reste 5 · generator 5→4 · claim prose disparu = red ; restauré = green). ci/README.md (table + détail) mis à jour · 7 gates re-verts.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-07-31 13:37:10 +00:00
parent 0d1df7a8dc
commit 327aa298a2
3 changed files with 151 additions and 1 deletions
+50
View File
@@ -1,5 +1,55 @@
# Activity Log · 2026-07-31 · Claude Code DTP
## Session `20260731_133057` · Buffer S8 · Domaine QA/Audit 4Big : le **barème de notation** de l'auditeur (« **5 critères 4Big déterministes** » + la table `Critère | Poids` + l'archétype « `generator` (5 critères) ») était transcrit À LA MAIN dans le README du module sans AUCUN gate — le bloc racine ne gatait que sa ligne « Résultat courant » (verdict/modules), jamais le référentiel de scoring lui-même.
**Tâche** : **Sprint 8 · buffer L75** (DevOps CI/CD · QA). Roadmap fonctionnellement
close ; poursuite de la série anti-dérive (CLAUDE.md #6). Restait une surface de « vert
trompeur » non gatée dans le module qui NOTE les autres : son propre barème.
**Dérive silencieuse fermée** :
- `05_deliverables_mvp/qa/audit_4big/README.md` retranscrit trois surfaces
data-derived du référentiel de scoring : la prose « Note chaque module sur **5
critères 4Big déterministes** », la table « Critère | Poids | Fait vérifié » (une
ligne `id`→poids par critère : DOC 20 · CONTRAT 20 · TESTS 25 · CLI 15 · HANDOFF 20)
et l'archétype « `generator` (5 critères) ».
- La source faisant autorité est `out/quality_report.json.criteria` (byte-gaté par
`check_artifacts`, recomputé du référentiel à chaque build).
- Aucun gate ne comparait la VALEUR écrite à l'artefact : ajouter/retirer un critère
ou changer un poids ferait dériver le README en silence — dérive qu'aucune suite
`tests/` (qui teste des FONCTIONS, pas la prose) n'attrape.
**Nouveau bloc dans `ci/check_readme_claims.sh`** : recompute le **nombre de critères**
(prose + « generator »), et **chaque poids** depuis `criteria[].weight` (zéro
duplication du barème du générateur · #6), exige l'égalité avec le README. Cohérences
croisées : `Σ poids == 100` (base de renormalisation documentée) ET tout module
d'archétype `generator` porte EXACTEMENT `len(criteria)` `checks` (« generator = tous
les critères » — 18 modules generator × 5 checks vérifiés). Une **compensation** de
poids (+5 / 5) laisserait `Σ == 100` juste et deux lignes fausses → d'où le contrôle
**par critère**, pas seulement de la somme.
### Preuve (4 morsures vérifiées + restauration verte)
| Injection | Résultat |
|---|---|
| README prose 5 critères → 6 (poids table intacts) | ✗ dit 6 MAIS criteria en compte 5 · exit 1 |
| README poids `TESTS` 25 → 30 (compte intact) | ✗ dit poids 30 MAIS criteria dit 25 · exit 1 |
| README archétype `generator` (5→4 critères) | ✗ dit 4 MAIS generator applique les 5 · exit 1 |
| README claim prose reformulé (chiffre disparu) | ✗ « N critères 4Big » INTROUVABLE · exit 1 |
| restauré | ✓ 5 critères · poids 20/20/25/15/20 · Σ=100 · 18 gen×5 == artefact · exit 0 |
- **`ci/README.md`** — surface ajoutée à la table récap du pipeline + paragraphe
descriptif (classe « barème auditeur 4Big »).
Suite CI complète re-verte (7 gates) : `guard_constraints` · `validate_json` ·
`check_docs` · `check_artifacts` · `check_regression` · `check_ci_integrity` ·
`check_readme_claims`.
**Hors périmètre worker (VPS · #8)** : néant (gate bash/python3 stdlib en-repo).
**Auto-score 4Big** : 96/100.
---
## Session `20260731_130055` · Buffer S8 · Domaine QA/Recette : le couple « **8 livrables de sprint · 7 métriques succès MVP** » du module d'acceptation (`qa/acceptance`) était transcrit À LA MAIN dans DEUX docs de module (README du module + fiche agent QA) sans AUCUN gate — le bloc racine ne gate QUE le README d'entrée
**Tâche** : **Sprint 8 · buffer L75** (DevOps CI/CD · QA régression). Roadmap