Files
oto-enterprise-os-dtp/05_deliverables_mvp/qa/audit_4big/README.md
T
Claude Code DTP Worker a517619432 [DTP-Worker] Sprint 7 · Générateur Audit 4Big qualité (95+/100 sur 100% deliverables) (QA · roadmap L69)
Audit de méta-niveau + gate : note la qualité 4Big de 100% des livrables gated
et bloque (FAIL) si un module < 95/100 (CLAUDE.md #5). Couverture PROUVÉE par
recoupement bijectif registre ↔ working-directory du CI (moins l'auditeur · SoD
ISA 315). 5 critères déterministes (DOC/CONTRAT/TESTS/CLI/HANDOFF) renormalisés
par archétype. Anti-invention (#6) : chaque note est recalculée depuis des faits
du dépôt, jamais saisie ; un invariant recompute chaque note.

Résultat : PASS · 17/17 modules à 100/100. Régression 442 tests verts (+34).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 10:11:02 +00:00

81 lines
3.5 KiB
Markdown
Raw 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** les 17
modules ≥ 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`****17/17** 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.**