Aller au contenu

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.