9b502e67fe
CI / Contraintes NON-NÉGOCIABLES (CLAUDE.md) (push) Has been cancelled
CI / Validation JSON (schémas Faisabilité) (push) Has been cancelled
CI / Qualité documentaire (liens + 4Big) (push) Has been cancelled
CI / Reproductibilité des artefacts out/ (build == commité) (push) Has been cancelled
CI / Fraîcheur matrice de régression (run == commité) (push) Has been cancelled
CI / Intégrité du câblage CI (gate agrège tout · gates statiques verrouillés) (push) Has been cancelled
CI / Intégrité des chiffres du README (valeur == artefact cité · (push) Has been cancelled
CI / Publiciste · parser + schéma + generator (unittest) (push) Has been cancelled
CI / RBAC · 50 rôles + schéma (unittest) (push) Has been cancelled
CI / Faisabilité · générateur 4 volets + round-trip (unittest) (push) Has been cancelled
CI / RBAC · fixtures ERPNext (Role + Custom DocPerm) (push) Has been cancelled
CI / RBAC · plan User Permission (row-level) (push) Has been cancelled
CI / RBAC · Role Profile (bundles par portail) (push) Has been cancelled
CI / RBAC · run-book d'application unifié (agrégat 3 volets) (push) Has been cancelled
CI / Faisabilité · dossier bancable trilingue FR/EN/ES (push) Has been cancelled
CI / CRM · workflow vente ERPNext (lead → CONFOTUR) (push) Has been cancelled
CI / CRM · DocType porteur OTO Dossier Vente (push) Has been cancelled
CI / CRM · barème commissions vendeurs (push) Has been cancelled
CI / CRM · Financement Bancaire (gate hypothécaire RD) (push) Has been cancelled
CI / Fiscal · e-CF DGII (Compupar) (push) Has been cancelled
CI / Frontend · Workspaces 5 portails rôle (push) Has been cancelled
CI / Legal · DocType CONFOTUR Application (push) Has been cancelled
CI / QA · Audit 5D conformité (push) Has been cancelled
CI / SEO · mots-clés trilingues + schema.org + hreflang (push) Has been cancelled
CI / Chat OTOIA · montage par portail (Custom Block) (push) Has been cancelled
CI / QA · Audit 4Big (95+/100 sur 100% deliverables) (push) Has been cancelled
CI / Démo · Scénarios (run-sheet P07 banquier / P05 client) (push) Has been cancelled
CI / QA · Matrice de régression exhaustive (Sprint 8) (push) Has been cancelled
CI / DevOps · Run-book de déploiement VPS unifié (Sprint 8) (push) Has been cancelled
CI / QA · Matrice d'acceptation / traçabilité MVP (Sprint 8) (push) Has been cancelled
CI / Mobile · config app Expo/EAS (navigation par rôle) (push) Has been cancelled
CI / E2E baseline Playwright (manuel) (push) Has been cancelled
CI / Gate qualité (agrégat) (push) Has been cancelled
81 lines
3.6 KiB
Markdown
81 lines
3.6 KiB
Markdown
# 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`** — **23/23** 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.**
|