Aller au contenu

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.