Aller au contenu

PD-280-specification-review

Constatations d'audit contractuel

Type : Contradiction
Référence : PD-280-specification.md §4 INV-280-02-status-coherence ; §5.1 "Regle de coherence supplementaire" ; §7 CA-04 ; PD-280-tests.md TC-NOM-02 + TC-NEG-04
Description : Le critère "DONE ssi tous les linkResults sont non-null" autorise implicitement PENDING (valeur non-null), alors que la règle complémentaire et les tests imposent explicitement qu'en DONE aucun PENDING n'est permis.
Impact : Contrat non univoque sur l'état final, risque d'implémentations tierces divergentes et verdicts de conformité incohérents.
Gravité : Bloquant


Type : Contradiction
Référence : PD-280-specification.md §4 INV-280-02-status-coherence ; §5.1 (null public vs PENDING interne) ; §8 SCN-280-03 ; PD-280-tests.md TC-NOM-01 + TC-NOM-03
Description : Le document mélange deux représentations d'un maillon "en cours" (null côté API publique et PENDING côté résultat maillon) sans frontière contractuelle explicite entre observable API et état interne.
Impact : Ambiguïté d'oracle de test et risque de faux négatifs/faux positifs lors d'audits black-box vs white-box.
Gravité : Majeur


Type : Contradiction
Référence : PD-280-specification.md §2 "Exclu" ("Toute regle non testable est hors perimetre") ; §4 INV-280-08-envelope-encryption ; §7 CA-09 ; PD-280-tests.md §9 "Règles non testables"
Description : La spec exclut les règles non testables, mais contient des exigences reconnues non testables a priori (HSM/KMS managé, validation documentaire avec autorité non définie).
Impact : Inacceptabilité formelle du périmètre contractuel (présence d'exigences hors critères de vérifiabilité annoncés).
Gravité : Bloquant


Type : Contradiction
Référence : Note contextuelle ("domaine legal-compliance ... ignorer la note Prolog") ; PD-280-specification.md §4 INV-280-08-envelope-encryption ("Invariants constitutionnel crypto/crypto-proof") ; PD-280-tests.md TC-NEG-08
Description : Le cadrage domaine exclut le contexte crypto-proof, mais la spec/tests intègrent un invariant et des tests de sécurité crypto at-rest dépendants d'un périmètre infra/crypto.
Impact : Frontière de périmètre contradictoire, risque de rejet de gate pour non-concordance domaine vs exigences.
Gravité : Majeur


Type : Ambiguïté
Référence : PD-280-specification.md §4 INV-280-03-pending-fields ; §8 SCN-280-01 ; PD-280-tests.md TC-NOM-01
Description : "présents uniquement si verificationStatus = PENDING" ne précise pas explicitement si les deux champs sont obligatoires dans tous les cas PENDING ou seulement autorisés. Les tests nominaux les exigent, mais l'énoncé d'invariant reste interprétable.
Impact : Divergence possible entre implémentation minimale (champs optionnels) et validation contractuelle (champs requis).
Gravité : Majeur


Type : Ambiguïté
Référence : PD-280-specification.md §5.3 ("DONE terminal de cycle", "nouvelle verification = nouveau cycle explicite") ; §9 H-280-03 ; PD-280-tests.md TC-INV-06
Description : L'identifiant et la matérialisation d'un "cycle de verification" ne sont pas définis contractuellement (bornes, clé de corrélation, observable d'appartenance au même cycle).
Impact : Interprétation variable de la règle DONE -> PENDING interdite, rendant les assertions de monotonie potentiellement non reproductibles.
Gravité : Majeur


Type : Incohérence Spec↔Tests
Référence : PD-280-tests.md §2 matrice (TC-INV-05, TC-INV-06, TC-INV-08) ; §3-4 (détail des scénarios)
Description : Plusieurs tests référencés dans la matrice de couverture n'ont pas de scénario Given/When/Then détaillé dans le document (au moins TC-INV-05, TC-INV-06, TC-INV-08).
Impact : Preuve de couverture non auditables "a priori" pour des invariants non négociables.
Gravité : Bloquant


Type : Incohérence Spec↔Tests
Référence : PD-280-tests.md §2 matrice (INV-280-08 / CA-08 couverture "Partielle") ; §10 verdict ("tous les invariants et critères ont une couverture de test définie")
Description : Le verdict agrégé affirme une couverture définie de tous invariants/critères alors que la matrice signale explicitement des couvertures partielles sur des axes critiques.
Impact : Signal de conformité contradictoire, difficulté à statuer GO/RESERVE de manière objective.
Gravité : Majeur


Type : Incohérence Spec↔Tests
Référence : PD-280-specification.md §5.1 (nextCheckAfterSeconds hors bornes en sortie => rejet 500) ; §5.2 ("valeur clamp dans [1,86400]") ; PD-280-tests.md TC-NEG-05 ("500 ou clamp")
Description : Le comportement attendu hors borne n'est pas univoque (rejet vs clamp), et le test accepte deux oracles concurrents.
Impact : Non-déterminisme contractuel des tests de bornes ; impossible d'établir une conformité binaire stable.
Gravité : Bloquant


Type : Incohérence Spec↔Tests
Référence : PD-280-tests.md TC-NOM-01 (journal d'audit corrélé obligatoire) ; PD-280-specification.md (absence de critère explicite équivalent en CA/ERR sur ce point)
Description : Le test nominal impose une exigence d'auditabilité détaillée non contractualisée comme critère d'acceptation explicite dans la spec canonique.
Impact : Risque de rejet pour exigence hors contrat principal (sur-spécification côté tests).
Gravité : Majeur


Type : Non testable
Référence : PD-280-specification.md §7 CA-09 ; §10.2 point 1 + point 3 ; PD-280-tests.md §9 (CA-09 partiel)
Description : La validation de "Diff documentaire validée" n'est pas testable contractuellement en absence d'autorité d'approbation et de politique de versionnement API formalisée.
Impact : Critère d'acceptation non décidabilité "a priori".
Gravité : Majeur


Type : Non testable
Référence : PD-280-specification.md §4 INV-280-08 ; PD-280-tests.md §9 (HSM/KMS externe non testable QA)
Description : La vérification exhaustive "aucun secret en clair en base" dépend d'accès infra/stockage non garantis dans l'environnement de test contractuel.
Impact : Invariant non démontrable dans le cadre standard d'audit tiers.
Gravité : Majeur


Type : Hypothèse dangereuse
Référence : PD-280-specification.md §5.2 (TTL/SLA), §5.3 (transitions monotones), §5.5 (aucune contrainte additionnelle d'atomicité) ; PD-280-tests.md TC-NOM-05
Description : Les transitions temporelles (PENDING -> INDETERMINATE puis clôture potentielle du job) supposent implicitement un ordre d'évaluation stable et une horloge cohérente, sans garde contractuelle explicite en cas de concurrence.
Impact : Risque de comportements de bord (état final divergent selon interleaving), compromettant reproductibilité des tests et auditabilité des transitions.
Gravité : Majeur


Type : Risque sécu/conformité
Référence : PD-280-specification.md §6 ERR-280-03/04 ("trace obligatoire") ; PD-280-tests.md §8 (journal d'audit, export probatoire)
Description : L'obligation de traçabilité est exprimée, mais sans contrat explicite sur le contenu minimal, la conservation et l'exploitabilité probatoire des traces.
Impact : Risque de conformité/audit (preuves insuffisantes ou non opposables malgré présence de logs).
Gravité : Majeur


Type : Incohérence Spec↔Tests
Référence : PD-280-specification.md §5.2 (bornes min/max de pendingResolutionTtl: 1h..30j) ; PD-280-tests.md (absence de scénario explicite de bornes min/max pendingResolutionTtl)
Description : Le critère CA-10 couvre les bornes temporelles, mais les scénarios détaillés ne démontrent explicitement que l'expiration TTL et les bornes nextCheckAfterSeconds, pas les bornes min/max de configuration TTL elles-mêmes.
Impact : Preuve de testabilité incomplète sur une partie du contrat temporel.
Gravité : Mineur