[DTP-Worker] Sprint 8 · buffer L75 · « Vert trompeur » ironique : le README de l'auditeur 4Big (le module qui COMPTE les modules) figeait son propre total à la main « 17/17 modules » alors que quality_report.json en dit 22 — non gaté (check_readme_claims ne couvrait que le README d'entrée, pas ce README de module ; auditeur auto-exclu SoD ⇒ 0 signal) → 17→22 + règle L38 rendue count-free + bloc gate recomputant verdict/pass/modules/min_score depuis totals (2 morsures)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-07-31 07:07:23 +00:00
parent 402727411d
commit 9038417db8
3 changed files with 97 additions and 3 deletions
+58
View File
@@ -1,5 +1,63 @@
# Activity Log · 2026-07-31 · Claude Code DTP
## Session `20260731_070019` · Buffer S8 · « Vert trompeur » ironique : le README de l'auditeur 4Big — le module qui COMPTE les modules — figeait son PROPRE total à la main (« 17/17 modules ») alors que son artefact `quality_report.json` en dit 22 ; ungated
**Tâche** : **Sprint 8 · buffer L75** (DevOps CI/CD · QA régression). Roadmap
fonctionnellement close (22/22 modules · 564 tests · 7 gates verts au démarrage).
Poursuite de la série anti-dérive (CLAUDE.md #6). Les sessions précédentes ont gaté les
comptes agrégés/par-suite des **docs d'entrée** (README racine, fiches QA/Backend, tables
« Tests »). Recherche du même faux-vert **hors de ce périmètre** : audit des comptes
`N modules` / `N/N` dans les **README de module** (pas seulement l'entrée + les fiches).
### Défaut trouvé — 2 comptes vivants « 17 » périmés dans `qa/audit_4big/README.md`
- **`05_deliverables_mvp/qa/audit_4big/README.md:68`** (« Résultat courant ») :
« **Verdict `PASS`****17/17** modules à **100/100** » — compte **vivant saisi à la
main**, périmé (17 → 22 au fil des ajouts de modules). **Ironie complète** : c'est le
README du module qui **COMPTE les modules** ; son propre artefact faisant autorité
`qa/audit_4big/out/quality_report.json` (`totals.modules`) dit **22** depuis longtemps.
- **`…/README.md:38`** (règle du verdict global) : « `PASS` **ssi** couverture 100 % **et**
les **17** modules ≥ 95/100 » — la **règle** (« TOUS les modules ≥ 95 ») ne dépend pas
d'un compte ; le « 17 » n'était qu'une **surface de dérive** de plus.
- **Pourquoi non gaté** : `check_readme_claims` recomputait `22/22` pour le **README
d'entrée** (racine) mais ne couvrait **pas** ce README **de module**. `check_docs` ne
valide que les liens ; l'auditeur s'**auto-exclut** (SoD) donc son propre `out/` ne
reflète pas l'édition de son README → aucun signal.
### Fix (2 volets · CLAUDE.md #4 — corriger + supprimer la surface + garder)
1. **`README.md:38`** : retrait du compte figé → « **tous** les modules gated ≥ 95/100 »
(la règle, count-free ⇒ **zéro surface de dérive**, précédent `050007`/`053011`).
2. **`README.md:68`** : `17/17`**22/22** (compte courant, désormais gaté).
3. **`ci/check_readme_claims.sh`** : nouveau bloc qui **RECALCULE** verdict + `pass/modules/
min_score` depuis `quality_report.json` (`totals`, déjà chargé dans `q`/`qv` · zéro
duplication) et exige l'égalité avec ce que « Résultat courant » **écrit**. Un claim
absent échoue AUSSI. Header du gate mis à jour (doc couverte).
### Preuves de morsure
- **Bite 1** (valeur périmée) : réinjecté `17/17` ⇒ gate **exit 1** `✗ … dit PASS/17/17/100
MAIS quality_report dit PASS/22/22/100 → régénérer le README`.
- **Bite 2** (claim disparu) : reformulé sans le motif ⇒ **exit 1** `✗ … claim INTROUVABLE`.
- **Restauré** ⇒ **exit 0**.
### Vérifs
| Contrôle | Résultat |
|---|---|
| 7 gates (`guard`/`json`/`docs`/`artifacts`/`regression`/`ci_integrity`/`readme_claims`) | ✅ exit 0 |
| `check_artifacts` (rebuild + égalité byte des `out/`) | ✅ (auditeur **auto-exclu** SoD ⇒ `quality_report.json` **byte-identique** ; 0 régénération) |
| Matrice de régression | **564/22 · PASS** inchangée (README édité, aucun `tests/`) |
| Résidu `17` vivant repo-wide | **aucun** (seul restant = daily_report `2026-07-30` point-in-time, conservé) |
| Diff | 2 fichiers · +39/3 · 0 untracked |
**Anti-invention (#6)** : rien inventé — le gate **recompute** la vérité depuis `totals`
au lieu de figer un compteur ; le `22/22` du README **découle** de l'artefact.
**Hors périmètre worker (VPS · #8)** : néant (doc + gate bash/stdlib en-repo).
**Auto-score 4Big** : 96/100.
---
## Session `20260731_053011` · Buffer S8 · Comptes vivants « 551 tests » périmés DANS la machinerie CI elle-même (`.gitea/workflows/ci.yml` + `ci/check_regression.sh` + `ci/check_readme_claims.sh`) — non couverts par aucun gate
**Tâche** : **Sprint 8 · buffer L75** (DevOps CI/CD · QA régression). Roadmap