PD-273 — Confrontation Gate 5 (AMBIGUITY v1)¶
Analyse des écarts identifiés par P1¶
Écart 1 — Tests d'erreur ERR-273-* non implémentables (P1: BLOQUANT)¶
Verdict P2 : FAUX POSITIF — Hors périmètre plan
Les codes ERR-273-* sont des conventions de la spec pour catégoriser les cas d'erreur. Ce sont des observables de test, pas du code à implémenter. Le plan implémente la correction des 3 checks Prolog. Les codes ERR sont utilisés dans les scénarios de tests GWT pour nommer les résultats d'échec — ils correspondent au verdict PARTIEL ou KO du rapport Prolog. Aucune tâche d'implémentation de codes d'erreur structurés n'est nécessaire car le moteur Prolog retourne déjà des statuts (ok/ko/partiel) par check.
Écart 2 — Détection runs incomplets (P1: BLOQUANT)¶
Verdict P2 : FAUX POSITIF — Hors périmètre plan
Le test TC-ERR-273-04 est un test contractuel de la SPEC, pas une fonctionnalité à implémenter. La détection des runs incomplets est une propriété intrinsèque de run_audit. dans SWI-Prolog : si l'exécution est interrompue, le rapport est incomplet par construction. Le plan n'a pas à implémenter un mécanisme de détection — c'est un comportement natif du moteur Prolog.
Écart 3 — INV-273-07 couvert "par construction" (P1: MAJEUR)¶
Verdict P2 : FAUX POSITIF
INV-273-07 stipule "aucune règle non testable n'est admise". Dans le contexte PD-273, toutes les règles sont des checks Prolog — par définition testables automatiquement. Le "par construction" est correct : le périmètre est 3 checks Prolog, tous testables.
Écart 4 — Hypothèse extract-facts.py (P1: MAJEUR)¶
Verdict P2 : PARTIELLEMENT VALIDE — Reclassé MINEUR
L'observation est pertinente mais la mitigation est déjà dans le plan (section 7 Risques : "Vérifier les 24 checks après chaque modification"). De plus, TASK-6 est spécifiquement le test de non-régression. Le risque est documenté et mitigé.
Écart 5 — Versions Python/SWI-Prolog (P1: MAJEUR)¶
Verdict P2 : FAUX POSITIF
extract-facts.py et SWI-Prolog sont déjà utilisés dans l'infrastructure existante (PV-ENV-001, PV-PRE-001 les utilisent déjà). Les versions sont implicitement celles de l'environnement existant. Pas une ambiguïté du plan.
Écart 6 — Race condition extract-facts.py (P1: MAJEUR)¶
Verdict P2 : FAUX POSITIF
extract-facts.py est un script de développement exécuté manuellement ou en CI séquentiel. Il n'y a pas d'exécution concurrente. Ce n'est pas un service backend en production.
Écart 7 — Variables CI SWI-Prolog (P1: MINEUR)¶
Verdict P2 : FAUX POSITIF
SWI-Prolog est déjà installé dans l'environnement CI (2 normes l'utilisent déjà). Pas besoin de documenter ce qui existe déjà.
Écart 8 — Effets de bord des modifications (P1: MAJEUR)¶
Verdict P2 : FAUX POSITIF
TASK-6 (run Prolog complet 24/24) est spécifiquement le test de non-régression et de détection des effets de bord. L'ordre d'exécution (section 6) place TASK-6 en dernier justement pour vérifier l'absence d'effets de bord.
Synthèse de la confrontation¶
| # | Écart P1 | Gravité P1 | Verdict P2 | Gravité finale |
|---|---|---|---|---|
| 1 | Tests ERR-273-* | BLOQUANT | FAUX POSITIF | - |
| 2 | Runs incomplets | BLOQUANT | FAUX POSITIF | - |
| 3 | INV-273-07 par construction | MAJEUR | FAUX POSITIF | - |
| 4 | Hypothèse extract-facts | MAJEUR | PARTIELLEMENT VALIDE | MINEUR |
| 5 | Versions Python/Prolog | MAJEUR | FAUX POSITIF | - |
| 6 | Race condition | MAJEUR | FAUX POSITIF | - |
| 7 | Variables CI | MINEUR | FAUX POSITIF | - |
| 8 | Effets de bord | MAJEUR | FAUX POSITIF | - |
Écarts confirmés : 0 BLOQUANT, 0 MAJEUR, 1 MINEUR Faux positifs : ⅞
Conclusion : La review P1 a appliqué une grille de lecture "projet logiciel classique" à un plan de modification de conformité formelle (fichiers Prolog + script Python). Les "codes d'erreur" et "détection de runs incomplets" sont des constructions de la spec pour la testabilité, pas des features à implémenter. Le plan est conforme et implémentable.