Aller au contenu

PD-299 — Scénarios de tests contractuels

1. Références

  • Spécification : PD-299-specification.md
  • Epic : EPIC-XX

2. Matrice de couverture

ID Invariant ID Critère ID Test Couverture Commentaire
INV-299-01 CA-299-01 TC-NOM-01, TC-NR-01 Oui Vérifie exactement 45 tests contractuels sharing.
INV-299-02 CA-299-02 TC-NOM-02, TC-NR-01 Oui Vérifie la couverture src/sharing/ dans [80,100].
INV-299-03 CA-299-03 TC-NOM-03, TC-ERR-02, TC-NEG-06 Oui CTA visible uniquement si propriétaire valide.
INV-299-04 CA-299-04 TC-NOM-04, TC-ERR-03, TC-ERR-04, TC-NEG-02 Oui Header Authorization requis et valide, regex durcie sans CR/LF.
INV-299-05 CA-299-05 TC-NOM-05, TC-ERR-05, TC-NEG-01 Oui Allowlist metadata stricte, rejet hors schéma.
INV-299-06 CA-299-06 TC-NOM-06, TC-ERR-06, TC-NEG-03 Oui Fallback maskIp exact et fail-closed.
INV-299-07 CA-299-07 TC-NOM-07, TC-ERR-07 Oui Blocage hors ligne sur toutes actions sharing.
INV-299-08 CA-299-08 TC-NOM-08, TC-ERR-02 Oui useProofShares jamais appelé avec proof_id vide/undefined.
INV-299-09 CA-299-16 TC-NOM-18, TC-ERR-12 Oui Validation A8 uniquement si preuve PO+LEGAL signée, horodatée, traçable Jira.
INV-299-10 CA-299-09 TC-NOM-09, TC-ERR-09 Oui Exécution de 6c.bis après 6c avec traçabilité.
INV-299-11 CA-299-09 TC-NOM-10, TC-ERR-09 Oui Blocage step 7 si point cross-module manquant.
INV-299-12 CA-299-10 TC-NOM-11, TC-ERR-08, TC-NR-03, TC-NEG-09 Oui Cap Gate 8 forcé à 6.0 exact, comptage sur *.{test,spec}.{ts,tsx}.
INV-299-13 CA-299-11 TC-NOM-12, TC-ERR-08, TC-NR-03 Oui Transition forcée CHECKING -> NON_CONFORME, même si moyenne >= 7.
INV-299-14 CA-299-12 TC-NOM-13, TC-ERR-11, TC-NR-04 Oui Prompt companion enrichi depuis source canonique avec source_story_id.
INV-299-15 CA-299-13 TC-NOM-14, TC-NR-06 Oui Présence de la règle telemetry dans learnings universels.
INV-299-16 CA-299-14 TC-NOM-15, TC-NR-06 Oui Bloc obligatoire 6a “Données résolues” présent et traçable.
INV-299-17 CA-299-15 TC-NOM-16, TC-NOM-17, TC-ERR-10, TC-ERR-15, TC-NR-05 Oui Détection plan→spec bloque UNRATIFIED et rejette kind invalide explicitement.
INV-299-18 TC-NOM-19, TC-NOM-20, TC-NOM-21, TC-ERR-14, TC-NR-07, TC-NR-08 Oui FSM Gate 8 fermée, scope explicite, réévaluation séquentielle non atomique.

3. Scénarios de test – Flux nominaux

TEST-ID: TC-NOM-01
Référence spec: F-299-01, INV-299-01, CA-299-01

GIVEN
  - Révision candidate figée
  - Module cible: src/sharing/
  - Référentiel PD-298-tests figé
WHEN
  - Le contrôle contractuel de présence des tests sharing est exécuté
THEN
  - Le nombre de cas de test contractuels détectés est exactement 45
AND
  - Aucun cas manquant et aucun cas additionnel hors référentiel n’est détecté
TEST-ID: TC-NOM-02
Référence spec: F-299-01, INV-299-02, CA-299-02

GIVEN
  - Révision candidate figée
  - Scope coverage limité à src/sharing/
WHEN
  - Le calcul de couverture du module sharing est exécuté
THEN
  - La couverture mesurée est >= 80%
AND
  - La couverture mesurée est <= 100%
TEST-ID: TC-NOM-03
Référence spec: F-299-02, INV-299-03, CA-299-03, D-299-05

GIVEN
  - Cas A: ownerUserId == currentUser.id (UUID v4 valides)
  - Cas B: ownerUserId != currentUser.id
WHEN
  - L’écran preuve est rendu
THEN
  - Cas A: le CTA “Partager” est visible
  - Cas B: le CTA “Partager” est absent
AND
  - Aucun fallback permissif ne rend le CTA visible en Cas B
TEST-ID: TC-NOM-04
Référence spec: F-299-03, INV-299-04, CA-299-04, D-299-06, D-299-07

GIVEN
  - auth_access_token valide (sans espace)
  - Action sharing déclenchée (create/revoke/list/detail/events)
WHEN
  - La requête réseau sharing est préparée puis émise
THEN
  - Le header Authorization respecte ^Bearer [ ]+[!-~]+$
AND
  - La valeur du token du header correspond exactement au token d’auth courant
TEST-ID: TC-NOM-05
Référence spec: F-299-04, INV-299-05, D-299-08, D-299-09

GIVEN
  - telemetry_action valide (ex: share_create)
  - telemetry_metadata = {}
WHEN
  - logShareEvent est invoqué
THEN
  - L’événement est accepté
AND
  - Le payload logué ne contient aucune clé hors allowlist
TEST-ID: TC-NOM-06
Référence spec: F-299-05, INV-299-06, CA-299-06, D-299-10, D-299-11

GIVEN
  - ip_input invalide déterministe: "999.999.999.999"
WHEN
  - maskIp(ip_input) est exécuté
THEN
  - La sortie vaut exactement "IP masquée indisponible"
AND
  - La sortie ne contient aucun fragment de l’entrée brute
TEST-ID: TC-NOM-07
Référence spec: F-299-06, INV-299-07, CA-299-07, D-299-12

GIVEN
  - netinfo_is_connected=false
WHEN
  - L’utilisateur tente create/revoke/load sharing
THEN
  - L’action est refusée avec message explicite
AND
  - Aucun appel API sharing n’est émis
TEST-ID: TC-NOM-08
Référence spec: INV-299-08, CA-299-08, D-299-13

GIVEN
  - Cas A: proof_id UUID v4 valide
  - Cas B: proof_id undefined
WHEN
  - L’écran détail sharing est initialisé
THEN
  - Cas A: useProofShares est invoqué avec un proof_id valide
  - Cas B: useProofShares n’est pas invoqué
AND
  - Cas B produit un rejet explicite de l’action
TEST-ID: TC-NOM-09
Référence spec: F-299-07, INV-299-10, D-299-16, D-299-17, D-299-22

GIVEN
  - Plan contenant 2 cross_module_point_path valides
  - Diff contenant les 2 chemins exacts
WHEN
  - /gov-impl exécute step 6c puis 6c.bis
THEN
  - Step 7 est autorisé
AND
  - Le journal d’audit trace l’ordre 6c puis 6c.bis avec correlation_id valide
TEST-ID: TC-NOM-10
Référence spec: F-299-07, INV-299-11, CA-299-09, ERR-299-09

GIVEN
  - Plan contenant 2 cross_module_point_path valides
  - Diff ne contenant qu’un seul chemin
WHEN
  - 6c.bis compare plan vs diff
THEN
  - La transition vers step 7 est refusée
AND
  - Le motif de blocage mentionne explicitement le chemin manquant
TEST-ID: TC-NOM-11
Référence spec: F-299-08, INV-299-12, CA-299-10, D-299-14, D-299-15

GIVEN
  - Gate 8 en état CHECKING
  - project_code=app
  - test_file_count=0 (comptage sur glob *.{test,spec}.{ts,tsx})
  - Cas A: raw test_coverage_score=8.7
  - Cas B: raw test_coverage_score=4.2
WHEN
  - Le pré-verdict Gate 8 est exécuté
THEN
  - Cas A: test_coverage_score final est exactement 6.0
  - Cas B: test_coverage_score final est exactement 6.0
AND
  - Le rapport de scoring mentionne le forçage exact cap zéro test (pas de min)
TEST-ID: TC-NOM-12
Référence spec: F-299-08, INV-299-13, CA-299-11, §5.4

GIVEN
  - Conditions de zéro test satisfaites (INV-299-12)
  - La moyenne arithmétique des autres critères est >= 7.0
WHEN
  - La transition FSM est évaluée
THEN
  - La transition appliquée est CHECKING -> NON_CONFORME
AND
  - Aucune transition CHECKING -> GO ou CHECKING -> RESERVE n’est autorisée
TEST-ID: TC-NOM-13
Référence spec: F-299-09, INV-299-14, CA-299-12, D-299-18, D-299-19

GIVEN
  - companion_story_id valide
  - Fichier source canonique <story_source_id>-specification.md disponible
  - Sections "## 4. Invariants" et "## Arbitrages — Vérification formelle post-step 1" présentes
WHEN
  - assemble-prompt construit le reviewer prompt
THEN
  - Le bloc stable inclut arbitrages PO et invariants source
  - Le bloc inclut source_story_id traçable
AND
  - L’addition de contexte companion est <= 2 KiB
TEST-ID: TC-NOM-14
Référence spec: INV-299-15, CA-299-13

GIVEN
  - Fichier learnings-universal.md disponible
WHEN
  - Le contrôle documentaire telemetry est exécuté
THEN
  - La règle "allowlist Zod stricte" est présente
AND
  - Une interdiction explicite de "Record<string, unknown>" est détectée
TEST-ID: TC-NOM-15
Référence spec: INV-299-16, CA-299-14

GIVEN
  - Template "6a Decomposition.md" disponible
WHEN
  - Le contrôle de sections obligatoires est exécuté
THEN
  - Le bloc "Données résolues (pré-implémentation)" est présent
AND
  - Le bloc contient un champ de source humaine explicite
TEST-ID: TC-NOM-16
Référence spec: F-299-10, INV-299-17, CA-299-15, D-299-20

GIVEN
  - detect-plan-extensions retourne >=1 item UNRATIFIED
  - Tous les items ont kind valide ∈ {endpoint,header,timeout}
WHEN
  - /gov-check-plan phase 4 est exécuté
THEN
  - Gate 5 est bloquée
AND
  - Une ratification PO est exigée dans le motif de blocage
TEST-ID: TC-NOM-17
Référence spec: F-299-10, INV-299-17, D-299-20

GIVEN
  - detect-plan-extensions retourne uniquement des items RATIFIED
  - Tous les kinds sont valides
WHEN
  - /gov-check-plan phase 4 est exécuté
THEN
  - Gate 5 est autorisée
AND
  - Le rapport indique 0 extension UNRATIFIED
TEST-ID: TC-NOM-18
Référence spec: F-299-11, INV-299-09, CA-299-16, D-299-21

GIVEN
  - legal_validation_entry contient ARB-7, ARB-8, RGPD-90J
  - Pour chaque text_id: approvals.PO et approvals.LEGAL présents
  - Chaque approval contient approver_id (email ou Jira username), approved_at ISO8601, jira_comment_id
WHEN
  - La validation de clôture A8 est exécutée
THEN
  - A8 est marquée conforme
AND
  - L’artefact probatoire relie text_id, approver_id, rôles, timestamps et jira_comment_id
TEST-ID: TC-NOM-19
Référence spec: INV-299-18, §5.4 (FSM Gate 8)

GIVEN
  - FSM Gate 8 initialisée dans chacun des états non terminaux
WHEN
  - Chaque transition explicitement AUTORISÉE en §5.4 est demandée
THEN
  - Chaque transition autorisée est acceptée vers l’état attendu
AND
  - Chaque changement d’état est journalisé avec timestamp et raison
TEST-ID: TC-NOM-20
Référence spec: INV-299-18, §5.4 (États terminaux Gate 8)

GIVEN
  - FSM Gate 8 en état GO, puis RESERVE, puis ESCALADE
WHEN
  - Une transition sortante quelconque est demandée
THEN
  - La transition est rejetée dans les 3 cas
AND
  - L’état reste inchangé (état terminal)
TEST-ID: TC-NOM-21
Référence spec: INV-299-18, §5.4 (Comportement NON_CONFORME -> PENDING)

GIVEN
  - FSM Gate 8 en état NON_CONFORME
  - Re-gate demandé (transition NON_CONFORME -> PENDING)
  - Échec sur le premier check séquentiel (zéro-test)
  - Les autres critères arithmétiques seraient compatibles GO
WHEN
  - La réévaluation est exécutée
THEN
  - L’ordre PENDING -> CHECKING puis check zéro-test est respecté
AND
  - Le premier échec maintient NON_CONFORME sans validation atomique globale

4. Scénarios de test – Cas d’erreur

TEST-ID: TC-ERR-01
Référence spec: ERR-299-01, D-299-01

GIVEN
  - story_id invalide: "pd-299"
WHEN
  - Le traitement est soumis
THEN
  - Rejet immédiat du traitement
AND
  - Aucun effet secondaire (pas de transition, pas d’écriture)
TEST-ID: TC-ERR-02
Référence spec: ERR-299-02, D-299-03, D-299-13, INV-299-03, INV-299-08

GIVEN
  - proof_id absent ou invalide
WHEN
  - L’écran preuve/sharing est chargé
THEN
  - CTA partage absent ou action rejetée
AND
  - Aucun appel hook/API avec proof_id vide/undefined
TEST-ID: TC-ERR-03
Référence spec: ERR-299-03, D-299-06, INV-299-04

GIVEN
  - auth_access_token absent ou invalide
WHEN
  - Une action sharing est demandée
THEN
  - L’appel est annulé
AND
  - Une erreur d’auth explicite est exposée
TEST-ID: TC-ERR-04
Référence spec: ERR-299-04, D-299-07, INV-299-04

GIVEN
  - authorization_header invalide (ex: "Bearer 
X-Test:1")
WHEN
  - Une requête sharing est préparée
THEN
  - La requête n’est pas émise
AND
  - Le rejet est tracé avec motif "authorization_header invalid"
TEST-ID: TC-ERR-05
Référence spec: ERR-299-05, D-299-09, INV-299-05, CA-299-05

GIVEN
  - telemetry_metadata = {"recipientEmail":"x@example.com"}
WHEN
  - logShareEvent est invoqué
THEN
  - Une erreur de validation (Zod) est levée
AND
  - Aucun événement telemetry n’est logué
TEST-ID: TC-ERR-06
Référence spec: ERR-299-06, D-299-10, D-299-11, INV-299-06

GIVEN
  - ip_input invalide: "invalid_ip"
WHEN
  - maskIp est exécuté
THEN
  - Retour exact "IP masquée indisponible"
AND
  - Aucune restitution d’IP brute
TEST-ID: TC-ERR-07
Référence spec: ERR-299-07, D-299-12, INV-299-07

GIVEN
  - netinfo_is_connected=null
WHEN
  - Une action sharing est déclenchée
THEN
  - Action bloquée avec message explicite
AND
  - Zéro appel sortant sharing
TEST-ID: TC-ERR-08
Référence spec: ERR-299-08, D-299-14, D-299-15, INV-299-12, INV-299-13

GIVEN
  - project_code=backend
  - test_file_count=0 (glob *.{test,spec}.{ts,tsx})
  - raw test_coverage_score=2.3
WHEN
  - Gate 8 CHECKING est exécuté
THEN
  - test_coverage est forcé à 6.0
  - Transition CHECKING -> NON_CONFORME appliquée
AND
  - Aucun verdict GO/RESERVE n’est possible
TEST-ID: TC-ERR-09
Référence spec: ERR-299-09, D-299-16, D-299-17, INV-299-11

GIVEN
  - Au moins un cross_module_point_path absent du git diff
WHEN
  - Contrôle 6c.bis est exécuté
THEN
  - Step 7 est bloqué
AND
  - Le rapport liste précisément les points manquants
TEST-ID: TC-ERR-10
Référence spec: ERR-299-10, D-299-20, INV-299-17

GIVEN
  - extension_items contient au moins un status=UNRATIFIED
  - Tous les kinds sont valides
WHEN
  - /gov-check-plan phase 4 s’exécute
THEN
  - Gate 5 est bloquée
AND
  - La sortie exige explicitement une ratification PO
TEST-ID: TC-ERR-11
Référence spec: ERR-299-11, D-299-18, D-299-19, INV-299-14

GIVEN
  - story companion déclarée sans source canonique exploitable
  - Sections source invariants/arbitrages absentes
WHEN
  - Construction du reviewer prompt
THEN
  - Prompt companion rejeté
AND
  - Motif de rejet: source companion indisponible/incomplète
TEST-ID: TC-ERR-12
Référence spec: ERR-299-12, D-299-21, INV-299-09

GIVEN
  - Artefact A8 incomplet (text_id manquant, ou approval PO/LEGAL manquante, ou approver_id/approved_at/jira_comment_id manquant)
WHEN
  - Vérification de clôture A8
THEN
  - A8 non validé
AND
  - Le rapport indique précisément les entrées manquantes
TEST-ID: TC-ERR-13
Référence spec: ERR-299-13, F-299-08

GIVEN
  - project_code=ia-governance
  - test_file_count=0
WHEN
  - Gate 8 CHECKING est exécuté
THEN
  - La règle cap zéro-test (6.0) n’est pas appliquée
AND
  - Le verdict suit uniquement le scoring arithmétique standard
TEST-ID: TC-ERR-14
Référence spec: ERR-299-14, INV-299-18, §5.4

GIVEN
  - FSM Gate 8 dans un état quelconque
WHEN
  - Une transition non listée en §5.4 est demandée
THEN
  - La transition est rejetée
AND
  - L’état courant reste inchangé
TEST-ID: TC-ERR-15
Référence spec: ERR-299-15, D-299-20, INV-299-17

GIVEN
  - plan_extension_item.kind="cookie" (hors enum)
WHEN
  - Validation de sortie de detect-plan-extensions
THEN
  - Le check est rejeté explicitement
AND
  - Gate 5 est bloquée avec erreur "invalid plan_extension_item.kind"

5. Tests d’invariants (non négociables)

Invariant Test(s) dédiés Observable Commentaire
INV-299-01 TC-NOM-01, TC-NR-01 count(test_cases)=45 Seuil exact, pas de tolérance.
INV-299-02 TC-NOM-02, TC-NR-01 coverage(src/sharing/)>=80 Bornes contractuelles contrôlées.
INV-299-03 TC-NOM-03, TC-ERR-02 Visibilité CTA conditionnée à D-299-05 Black-box UI déterministe.
INV-299-04 TC-NOM-04, TC-ERR-03, TC-ERR-04 Header Authorization présent/valide Contrôle réseau strict sans CR/LF.
INV-299-05 TC-NOM-05, TC-ERR-05 Rejet Zod hors allowlist Zéro PII en telemetry.
INV-299-06 TC-NOM-06, TC-ERR-06 Retour exact D-299-11 Assertion stricte de chaîne.
INV-299-07 TC-NOM-07, TC-ERR-07 Blocage offline + message Vérifie fail-closed.
INV-299-08 TC-NOM-08, TC-ERR-02 Absence de useProofShares(undefined) Traces d’appel hook.
INV-299-09 TC-NOM-18, TC-ERR-12 Preuve PO+LEGAL signée et traçable Jira Validation A8 objectivable.
INV-299-10 TC-NOM-09 6c.bis exécuté après 6c Ordre de contrôles auditables.
INV-299-11 TC-NOM-10, TC-ERR-09 Step 7 bloqué si fichier manquant Tolérance = 0.
INV-299-12 TC-NOM-11, TC-ERR-08, TC-NEG-09 test_coverage=6.0 forcé exactement Règle déterministe app/backend avec glob de comptage explicite.
INV-299-13 TC-NOM-12, TC-ERR-08 CHECKING->NON_CONFORME forcé Empêche bypass GO/RESERVE même si moyenne >=7.
INV-299-14 TC-NOM-13, TC-ERR-11 Bloc source canonique companion présent Vérifie présence, sections et traçabilité source_story_id.
INV-299-15 TC-NOM-14, TC-NR-06 Règle telemetry détectable Contrôle documentaire obligatoire.
INV-299-16 TC-NOM-15, TC-NR-06 Bloc 6a “Données résolues” présent Traçabilité source humaine.
INV-299-17 TC-NOM-16, TC-NOM-17, TC-ERR-10, TC-ERR-15 Blocage Gate 5 si UNRATIFIED ou kind invalide Ratification PO requise, rejet explicite.
INV-299-18 TC-NOM-19, TC-NOM-20, TC-NOM-21, TC-ERR-14 Rejet transitions hors table + réapplication séquentielle FSM Gate 8 fermée et non atomique sur re-gate.

6. Tests de non-régression

Test ID Objet Observable Commentaire
TC-NR-01 Stabilité qualification sharing (A1) 45 tests et coverage>=80 maintenus après rerun Détecte régression sur comptage/couverture.
TC-NR-02 Guard propriétaire cross-module CTA reste strictement lié à D-299-05 après évolutions écran preuve Évite réouverture de partage hors propriété.
TC-NR-03 Déterminisme Gate 8 zéro test Avec raw élevé ou bas, score final reste 6.0 et verdict NON_CONFORME Valide forçage exact et priorité de la règle cap.
TC-NR-04 Injection companion stable Bloc arbitrages/invariants source toujours présent après update template prompt Réduit faux positifs Pattern 3.
TC-NR-05 Détection plan→spec Toute présence d’un UNRATIFIED ou d’un kind invalide bloque toujours Gate 5 Préserve garde-fou Pattern ½.
TC-NR-06 Règles documentaires gouvernance Règle telemetry (learnings) et bloc 6a restent présents après synchronisation docs Prévient dérive documentaire.
TC-NR-07 Fermeture FSM Gate 8 États terminaux restent sans sortie après cycles de re-gate Auditabilité durable.
TC-NR-08 Réapplication séquentielle NON_CONFORME->PENDING Le premier check en échec maintient NON_CONFORME, sans évaluation atomique globale Prévient régression de logique d’ordre §5.4.

7. Tests négatifs et adversariaux

Test ID Entrée invalide / abus Résultat attendu Observable
TC-NEG-01 metadata avec PII + clés non autorisées (recipientEmail, ip) Rejet Zod, aucun log émis Erreur validation + compteur logs inchangé
TC-NEG-02 Header avec espaces non conformes ou CR/LF ("Bearer abc def", `"Bearer
X-Test:1"`) Header invalide, requête non émise Trace réseau vide + motif invalid header
TC-NEG-03 ip_input contenant caractères hors format ("<script>") Fallback exact D-299-11 Sortie exacte, aucune donnée brute
TC-NEG-04 companion_injected_block > 2 KiB Prompt invalide/rejeté Motif de rejet "size limit exceeded"
TC-NEG-05 plan_extension_item.kind="cookie" Rejet explicite du check + blocage Gate 5 Rapport d’erreur invalid plan_extension_item.kind
TC-NEG-06 ownerUserId UUID invalide CTA caché Snapshot UI sans CTA
TC-NEG-07 Liste extensions mixte RATIFIED + UNRATIFIED Gate 5 bloquée Décision blocage + item fautif listé
TC-NEG-08 Demande de transition terminale GO->CHECKING Rejet strict État GO inchangé
TC-NEG-09 Module contenant uniquement foo.spec.tsx test_file_count=1, cap zéro-test non déclenché Rapport de comptage du glob *.{test,spec}.{ts,tsx}

8. Observabilité requise pour les tests

  • État système : état FSM Gate 8 courant/précédent, décision Gate 5/Gate 8, statut step 7.
  • Réponse API : présence/validité des headers, annulation d’appel, code d’erreur explicite.
  • Journal d’audit : enregistrement horodaté des contrôles 6c/6c.bis, detect-plan-extensions, transitions FSM, motifs de blocage.
  • Journal d’audit corrélé : chaque entrée inclut story_id, project_code, correlation_id (D-299-22), timestamp ISO8601.
  • Preuve Legal A8 : chaque approbation expose text_id, approver_role, approver_id, approved_at, jira_comment_id.
  • Export probatoire : bundle regroupant rapport coverage sharing, comptage tests, traces Gate 8, rapport 6c.bis, rapport plan→spec, artefact A8 PO+LEGAL.

9. Points hors périmètre vérification automatique

Point hors périmètre vérification automatique Raison Impact
Validité juridique substantielle des contenus ARB-7 / ARB-8 / RGPD-90j Le système vérifie la preuve d’approbation humaine, pas l’analyse juridique de fond Majeur
Intention réelle des approbateurs (au-delà de la trace Jira) La non-répudiation couverte est minimale (traçabilité Atlassian), pas une preuve cryptographique d’intention Majeur
Pertinence métier des arbitrages PO et décisions de ratification L’automatisation vérifie présence, format et traçabilité, pas la qualité métier du choix Majeur

10. Verdict QA

  • Testable avec réserves documentées (3 points hors périmètre vérification automatique listés en §9).