Synthese des audits de verification formelle — ProbatioVault¶
| Date | 2026-03-01 |
| Normes auditees | 9 |
| Source des faits | extract-facts.py — 2384 faits (1869 ts-morph AST + 225 migration + 17 terraform + 281 test + 35 document + 4 derived) |
| Generateur | generate-audit-report.py v2 + verify-norm.sh |
1. Vue d'ensemble¶
| Norme | Verdict | TLA+ | Prolog | Alloy | Z-lint | Completeness |
|---|---|---|---|---|---|---|
| PV Anchor | CONFORME | PASS (36 906 etats) | 35/35 | PASS | PASS (8) | PASS |
| PV Audit | CONFORME | PASS (5 663 935 etats) | 25/25 | PASS | PASS (7) | PASS |
| PV Proof | CONFORME | PASS (77 356 821 etats) | 28/28 | PASS | PASS (6) | PASS |
| PV Envelope | CONFORME | PASS (1 053 781 etats) | 24/24 | PASS | PASS (34) | PASS |
| PV PRE | CONFORME | PASS (41 414 etats) | 27/27 | PASS | PASS (37) | PASS |
| NF Z42-013 | PARTIEL | ERROR (tua, bornes reduites) | 18/18 + 8 KO completude | PASS | PASS (42) | 2/10 |
| ISO 14641 | NON CONFORME | FAIL (ASSUME) | 19/19 + 6 KO completude | PASS | PASS (44) | 2/8 |
| RFC 3161 | CONFORME | PASS (2 421 985 etats) | 22/22 + 3 KO completude | PASS | PASS (38) | 3/6 |
| RFC 5054 | CONFORME | PASS (63 012 etats) | 15/15 | PASS | PASS (30) | PASS |
Legende : - CONFORME = aucun echec bloquant sur les 4 formalismes. - PARTIEL = TLA+ non concluant (erreur outil) mais Prolog/Alloy/Z-lint conformes. - NON CONFORME = au moins 1 formalisme bloquant en echec (ASSUME false).
2. Resultats par couche formelle¶
2.1 TLA+ — Model checking (TLC)¶
7/9 PASS, 1 FAIL (ASSUME false), 1 ERROR (outil tue — espace d'etats trop grand malgre bornes reduites).
| Norme | Module ancre | Etats explores | Etats distincts | Profondeur | Duree | Resultat |
|---|---|---|---|---|---|---|
| PV Proof | _AnchoredFacts_PROOF.tla | 77 356 821 | 5 303 953 | 13 | 41s | PASS |
| PV Audit | _AnchoredFacts_AUDIT.tla | 5 663 935 | 645 711 | 5 | 4s | PASS |
| RFC 3161 | _AnchoredFacts_RFC.tla | 2 421 985 | 365 312 | 16 | 1s | PASS |
| PV Envelope | _AnchoredFacts_ENV.tla | 1 053 781 | 124 177 | 14 | 1s | PASS |
| RFC 5054 | _AnchoredFacts_SRP.tla | 63 012 | 23 280 | 11 | <1s | PASS |
| PV PRE | _AnchoredFacts_PRE.tla | 41 414 | 6 041 | 5 | <1s | PASS |
| PV Anchor | _AnchoredFacts_ANCHOR.tla | 36 906 | 9 293 | 5 | <1s | PASS |
| ISO 14641 | _AnchoredFacts_ISO.tla | — | — | — | <1s | FAIL |
| NF Z42-013 | _AnchoredFacts_NF.tla | >1 571 886 161 | >245 607 459 | >1638823 | tue | ERROR |
Total etats explores (hors NF Z42-013) : 86 637 854
Cause du FAIL ISO 14641 : Violation ASSUME a la ligne 22 (AnchorAssume_States). Le modele declare l'etat RESTITUTED que le code n'implemente pas encore.
| Norme | Etat manquant | Story associee |
|---|---|---|
| ISO 14641 | RESTITUTED | PD-279 |
Cause de l'ERROR NF Z42-013 : Le modele a un espace d'etats combinatoire (journal × attestations × copies × integrite × horloge) qui depasse les capacites locales meme avec les bornes reduites (MAX_DOCS=1, MAX_JOURNAL_ENTRIES=2, MAX_INTEGRITY_AGE=2, MAX_ITERATIONS=2). Le processus TLC a ete tue apres >10 min et 1.5 milliard d'etats explores. Les 3 autres formalismes (Prolog, Alloy, Z-lint) sont tous PASS pour cette norme.
2.2 Alloy — Verification structurelle (SAT)¶
9/9 PASS. Aucun contre-exemple sur aucune norme. Les modules d'ancrage (_AnchoredFacts_*.als) passent egalement.
2.3 Z Notation — Lint structurel¶
9/9 PASS complet (PD-281 : discrimination state machine vs classification eliminant les faux positifs).
| Norme | Checks structurels | Checks ancrage | Echecs | Detail |
|---|---|---|---|---|
| ISO 14641 | PASS (44) | PASS | 0 | — |
| NF Z42-013 | PASS (42) | PASS | 0 | — |
| RFC 3161 | PASS (38) | PASS | 0 | — |
| PV PRE | PASS (37) | PASS | 0 | — |
| PV Envelope | PASS (34) | PASS | 0 | — |
| RFC 5054 | PASS (30) | PASS | 0 | — |
| PV Anchor | PASS (8) | PASS | 0 | — |
| PV Audit | PASS (7) | PASS | 0 | — |
| PV Proof | PASS (6) | PASS | 0 | — |
2.4 Prolog — Conformite (faits reels du code)¶
9/9 conformes au niveau compliance (tous les checks bloquants passent).
| Norme | OK | KO | Total | Taux |
|---|---|---|---|---|
| PV Anchor | 35 | 0 | 35 | 100% |
| PV Proof | 28 | 0 | 28 | 100% |
| PV PRE | 27 | 0 | 27 | 100% |
| PV Audit | 25 | 0 | 25 | 100% |
| PV Envelope | 24 | 0 | 24 | 100% |
| RFC 3161 | 22 | 0 | 22 | 100% |
| ISO 14641 | 19 | 0 | 19 | 100% |
| NF Z42-013 | 18 | 0 | 18 | 100% |
| RFC 5054 | 15 | 0 | 15 | 100% |
| Total | 213 | 0 | 213 | 100% |
2.5 Prolog — Completude (ecarts normatifs, non bloquant)¶
| Norme | OK | Ecarts | Details |
|---|---|---|---|
| NF Z42-013 | 2 | 8 | PD-250/251/252/254/255/256/258/259/261 |
| ISO 14641 | 2 | 6 | PD-251/252/255/257/260/261 |
| RFC 3161 | 3 | 3 | Revocation periodique, ERA, Trusted List |
| RFC 5054 | PASS | 0 | — |
| PV Anchor | PASS | 0 | — |
| PV Audit | PASS | 0 | — |
| PV Envelope | PASS | 0 | — |
| PV PRE | PASS | 0 | — |
| PV Proof | PASS | 0 | — |
3. Analyse des ecarts¶
3.1 Ecart TLA+ ISO 14641 (1 norme)¶
La violation ASSUME est un etat defini dans le modele TLA+ mais pas encore implemente dans le code (RESTITUTED). Le mecanisme d'ancrage fonctionne correctement — il detecte exactement ce qu'il doit detecter.
Story de remediation : PD-279 (RESTITUTED)
3.2 Limitation TLA+ NF Z42-013¶
Le modele NF Z42-013 est intrinsiquement combinatoire : le produit cartesien des variables d'etat (journal, attestations, copies geographiques, derniere verification d'integrite, horloge) produit un espace d'etats qui depasse la capacite de verification locale. Les bornes ont ete reduites de MAX_JOURNAL_ENTRIES=4, MAX_INTEGRITY_AGE=4, MAX_ITERATIONS=3 a MAX_JOURNAL_ENTRIES=2, MAX_INTEGRITY_AGE=2, MAX_ITERATIONS=2, mais l'espace reste trop grand.
Mitigation : Les 3 autres formalismes (Prolog 18/18, Alloy PASS, Z-lint 42/42) fournissent une couverture suffisante pour cette norme. Une refactorisation du modele TLA+ (decomposition en sous-modules, symmetrie reduction) est envisageable pour un run futur.
3.3 Ecarts Z-lint¶
Aucun ecart Z-lint. PD-281 a elimine les faux positifs par discrimination state machine (status) vs classification (event_type, envelope_type, document_category, validation_status).
3.4 Ecarts Completude (non bloquants)¶
Les ecarts de completude NF/ISO sont des documents de gouvernance manquants (PAE, RACI, retention policy, etc.) qui ne sont pas du code mais de la documentation organisationnelle. Traces dans les stories PD-249 a PD-261.
4. Metriques globales¶
| Metrique | Valeur |
|---|---|
| Faits extraits du code reel | 2384 |
| — ts-morph AST | 1869 (78.4%) |
| — migrations | 225 (9.4%) |
| — tests | 281 (11.8%) |
| — terraform | 17 (0.7%) |
| — documents | 35 (1.5%) |
| — derives | 4 (0.2%) |
| Total checks compliance | 213/213 PASS (100%) |
| Total checks completude | 17 ecarts normatifs (non bloquants) |
| Etats TLA+ explores | 86 637 854 (hors NF Z42-013) |
| Norme TLA+ la plus complexe | PV Proof (77 356 821 etats, 41s) |
| Assertions Alloy | 9/9 PASS |
| Z-lint | 9/9 PASS complet |
5. Historique¶
| Date | Changement | Impact |
|---|---|---|
| 2026-03-01 (soir) | Regeneration complete — PV Proof desormais PASS, bornes NF Z42-013 reduites | 7/9 TLA+ PASS (vs 6/9), 213 checks Prolog (vs 202), 2384 faits (vs 2275) |
| 2026-03-01 (matin) | 10 anomalies pipeline corrigees (PD-281), Z-lint 9/9 PASS | 6/9 TLA+ PASS (vs 0/9), Z-lint 0 faux positifs |
| 2026-02-28 | Premier audit complet | Baseline initiale |
6. Conclusion¶
6.1 Etat de conformite¶
| Categorie | Statut |
|---|---|
| Normes externes RFC (3161, 5054) | 2/2 CONFORME |
| Normes externes archivage (ISO 14641) | 0/1 CONFORME (etat TLA+ manquant : RESTITUTED) |
| Normes externes archivage (NF Z42-013) | PARTIEL (TLA+ non concluant, Prolog/Alloy/Z-lint OK) |
| Normes internes PV (Anchor, Audit, Envelope, PRE, Proof) | 5/5 CONFORME |
| Design (Alloy) | 9/9 PASS |
| Model checking (TLA+) | 7/9 PASS |
| Implementation (Prolog) | 100% global (213/213) |
6.2 Ameliorations depuis dernier audit (01/03 matin)¶
- PV Proof TLA+ : FAIL (ASSUME) → PASS (77M etats explores, PD-280 implemente)
- Prolog compliance : 202/202 → 213/213 (nouveaux checks ajoutes)
- Faits extraits : 2275 → 2384 (+109 faits, extraction enrichie)
- PV Completude : ecarts PV Anchor/Audit/Proof → PASS (tous les 5 protocoles PV complets)
Rapport genere le 2026-03-01. Rapports detailles par norme : docs/normes/<slug>/formal/AUDIT-REPORT.md.