Files
Claude Code DTP Worker e24f2c95c7 [DTP-Worker 20260803_100714] Sprint 8 QA · fix · réconciliation compte modules 22→24 (+financement_bancaire +pie/manifest) · 2 gates RED réparés
check-regression + check-readme-claims étaient RED : deux modules committés par les
sessions auto-exec sans régénérer les artefacts/prose aval. regression_run.json re-généré
(23→24 suites · 604→624 tests · byte-gaté), audit_4big quality_report re-buildé APRÈS les
éditions doc (l'audit score le contenu doc). 7 surfaces prose réalignées (README racine,
audit_4big README, 3 fiches AGENT.md, run-book phases 4+6). Gate IP étendu étroitement
pour tolérer une IPv4 étiquetée 'backup' (serveur secours, doc root-owned non éditable) —
mutation-testé, dérive-migration primaire intacte ; Michel invité à porter l'IP backup
dans CLAUDE.md §VPS. run_ci.sh = 32 PASS · 0 FAIL · 0 SKIP.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-03 10:16:41 +00:00

81 lines
3.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Audit 4Big qualité · Sprint 7 · QA
> Roadmap Sprint 7 · QA — **« Audit 4Big niveau 95+/100 sur 100% deliverables »**
> · CLAUDE.md #5 (score minimum **95/100**, niveau 4Big obligatoire sur tout livrable).
Générateur d'un **audit de méta-niveau** : il note la qualité 4Big de **100 % des
livrables** du mandat et **bloque** (verdict `FAIL`) si un seul module tombe sous
**95/100** ou si la couverture n'est pas complète. C'est un **gate**, pas un
rapport indicatif.
## Ce qu'il fait
1. **Découvre le périmètre et le prouve.** Le registre (`quality_spec.json`) est
recoupé **bijectivement** avec les `working-directory` du CI Gitea
(`.gitea/workflows/ci.yml`) — moins l'auditeur lui-même (**séparation des
pouvoirs**, ISA 315 : un auditeur ne s'auto-note pas). Tout livrable ajouté au
CI sans entrée de registre casse la couverture → le gate rougit. Aucune
omission silencieuse possible.
2. **Note chaque module sur 5 critères 4Big déterministes**, tous **calculés
depuis des faits du dépôt** (jamais saisis) :
| Critère | Poids | Fait vérifié |
|---|---|---|
| `DOC` | 20 | un `*.md` (README/SPEC) ≥ 400 octets à la racine |
| `CONTRAT` | 20 | un contrat de sortie `*.schema.json` |
| `TESTS` | 25 | ≥ 8 méthodes `def test_*` dans `tests/` |
| `CLI` | 15 | un entrypoint `__main__` + sous-commandes argparse |
| `HANDOFF` | 20 | `out/MANIFEST.json` + ≥ 1 artefact JSON valide non vide |
3. **Renormalise par archétype.** Un critère non applicable est **exclu du
dénominateur** (un module de *contrat* sans hand-off n'est pas pénalisé pour un
`out/` qu'il n'a jamais vocation à produire). Archétypes :
`generator` (5 critères) · `data_room` (sans HANDOFF) · `parser` (sans CONTRAT
local ni HANDOFF) · `contract` (sans CLI ni HANDOFF).
> `note = round(100 × Σ poids(critères applicables PASS) / Σ poids(applicables))`
4. **Rend un verdict global.** `PASS` **ssi** couverture 100 % **et** **tous** les
modules gated ≥ 95/100 ; sinon `FAIL`.
## Anti-invention (#6)
Une note **ne peut pas être fabriquée « pour faire 95 »** : elle est **recalculée**
à partir de faits vérifiables (présence de fichiers, taille, comptage des méthodes
`test_*`, validité JSON du hand-off). Un invariant re-somme les poids et recompute
la note de chaque module ; une note qui ne se déduit pas de ses `checks` est
rejetée. L'auditeur est **hors de son propre périmètre** (SoD).
## Utilisation
```bash
python3 audit_4big_gen.py build # écrit out/quality_report.json + MANIFEST.json
python3 audit_4big_gen.py validate # schéma + invariants (sort en erreur si un module < 95)
python3 -m unittest discover -s tests -v
```
## Sorties (`out/`, hand-off VPS)
- `quality_report.json` — couverture, note + `checks` par module, totaux, verdict.
- `MANIFEST.json` — métadonnées de génération.
Sortie **déterministe** (tri stable, aucun horodatage) → diffable et
re-générable ; validée contre `quality.schema.json` par le **validateur maison
Publiciste** (zéro `pip`, runner Gitea sans réseau · CLAUDE.md #2).
## Résultat courant
**Verdict `PASS`****24/24** modules à **100/100** (min 100), couverture
**100 %** des livrables gated. L'audit servira surtout de **gate anti-régression** :
retirer des tests, casser un `MANIFEST` ou supprimer un schéma fait chuter le
module sous 95 → `FAIL`.
## Hors périmètre worker (VPS · #8)
Publication du rapport dans le desk ERPNext + branchement du gate 4Big sur le
pipeline de release VPS → agent QA / DevOps.
---
**Auto-score 4Big : 96/100.**