Aller au contenu

PD-265 — Dossier de conformité Gate 5 (AMBIGUITY) — v2

Date : 2026-03-02 Gate : 5 (AMBIGUITY) Itération : v2 Documents évalués : PD-265-plan.md (v2 corrigé), code-contracts.yaml (v2) Sources : Review ChatGPT v2 (Phase 1), Confrontation Claude v2 (Phase 2)


1. Synthèse

Review ChatGPT v2 : 2 BLOQUANTS, 7 MAJEURS, 3 MINEURS. Confrontation Claude v2 : 14 convergences, 8 divergences (2 BLOQUANTS, 5 MAJEURS, 3 MINEURS), 7 zones d'ombre. Recommandation : Rework.

Analyse croisée des corrections v1→v2 :

Les 6 MAJEURS v1 ont été traités : - ✅ Marge deadline re-horodatage : résolu (scheduler 12h, marge 12h vs deadline 24h) - ✅ Section contraintes techniques : résolu (§13 ajouté) - ✅ Frontières CC reference-clock.service.ts : résolu (ajouté dans C4) - ✅ Wiring controller NestJS : résolu (TsaMonitoringController documenté) - ⚠️ reasonCode contractualisés : partiellement résolu — les codes KEY_RETIRED_SLA_BREACH et KEY_ARCHIVED_SLA_BREACH ont été contractualisés, MAIS la correction a fusionné deux enums spec distinctes (refusalReasonCode et reasonCode) en un seul enum plan, avec des renommages non conformes. - ⚠️ État dérivé clarifié : partiellement résolu — DA-05 clarifie la relation flags→état, MAIS la formulation simplifiée (flags.length > 0 → DEGRADED) ne distingue pas 1 flag (→ DEGRADED_*) de >=2 flags (→ DEGRADED) comme la spec l'exige.

Les corrections ont introduit 2 écarts de formulation dans DA-05 et DA-02 qui sont confirmés comme réels par les deux sources.

Analyse croisée des 2 BLOQUANTS v2 :

BLOQUANT Review Confrontation Analyse croisée
DA-05 state calc BLOQUANT (modèle d'état contractuel cassé) BLOQUANT DIV-01 (DA-05 vs Spec §5.4) Confirmé comme écart réel mais déclassé en MAJEUR : Le plan section 5 (mapping tests) utilise correctement DEGRADED_NTS, DEGRADED_REVOCATION etc. avec single flag. L'erreur est localisée dans le texte de DA-05 (3 lignes). L'intention de conception est correcte (confirmé par le test mapping). Fix trivial : aligner DA-05 sur le spec §5.4.
Enum fusion BLOQUANT (refus API non conformes) BLOQUANT DIV-02 (plan DA-02 vs Spec §5.1/§5.9) Confirmé comme écart réel mais déclassé en MAJEUR : Le plan section 5 utilise correctement les valeurs spec (refusalReasonCode=NTS_DEGRADED etc.). L'erreur est dans DA-02 qui fusionne deux enums et renomme des codes. Les codes ajoutés (KEY_RETIRED_SLA_BREACH, KEY_ARCHIVED_SLA_BREACH) sont légitimes comme extension, mais les renommages (TL_STALE→TRUSTLIST_EXPIRED etc.) et la fusion sont non conformes. Fix : restaurer deux enums séparées, garder nommage spec.

Justification des déclassements : Les deux BLOQUANTs concernent des formulations de texte dans DA-05 et DA-02 introduites par les corrections v2. Le design architectural sous-jacent est correct (confirmé par les test mappings section 5 qui sont cohérents avec la spec). La résolution est purement rédactionnelle. Les deux sources confirment l'écart mais ne contestent pas le design.


2. Écarts consolidés

BLOQUANTS (0 — 2 déclassés en MAJEUR après analyse croisée)

Aucun BLOQUANT résiduel.

MAJEURS (7 — dont 2 déclassés + 5 issues préexistantes/nouvelles)

ID Type Résumé Critère Statut v1→v2
AMB-01-v2 Formulation DA-05 Calcul tsaServiceState : flags.length > 0 → DEGRADED ne distingue pas 1 flag (DEGRADED_*) vs >=2 (DEGRADED) risk_mitigation Nouveau (introduction par correction v2)
AMB-02-v2 Formulation DA-02 Fusion enum refusalReasonCode + reasonCode + renommages non spec coherence Nouveau (introduction par correction v2)
AMB-03-v2 Gap spec→plan Agrégation NTS multi-serveurs non spécifiée + DA-01 élevé en invariant CC coverage Préexistant v1 (zone d'ombre confirmée)
AMB-04-v2 Comportement non contractualisé Fail-closed du cache C3 au démarrage (DB down) non défini risk_mitigation Préexistant v1 (zone d'ombre confirmée)
AMB-05-v2 Overlap code-contracts tsa-key-lifecycle-metadata.entity.ts dans CC-02 ET CC-07 coherence Préexistant v1 (non flaggé)
AMB-06-v2 Incohérence plan DA-05 "state jamais persisté" vs C2 entity "state" column coherence Nouveau (introduction par correction v2)
AMB-07-v2 Lacune §13 Framework de test (Jest) non explicité dans contraintes techniques feasibility Préexistant v1 (absence §13)

MINEURS (3)

ID Résumé
MIN-01-v2 HTTP 503 non spécifié dans spec (choix plan sémantiquement correct)
MIN-02-v2 Dépendances inter-PD sans statut DONE/TODO/STUB
MIN-03-v2 Variables CI pour tests intégration non documentées

3. Progression v1 → v2

Métrique v1 v2 Delta
BLOQUANTS 0 (1 déclassé) 0 (2 déclassés) 0
MAJEURS 9 7 -2
MINEURS 6 3 -3
MAJEURs v1 résolus 4/6
MAJEURs v1 partiellement résolus 2/6
Nouveaux MAJEURs introduits 3

4. Scoring par critère

Critère Score v1 Score v2 Justification v2
feasibility 8.5 8.5 §13 ajouté, wiring documenté. 1 MAJEUR résiduel (framework test). Plan toujours réaliste avec 14 composants.
coverage 8.0 8.5 14/14 invariants, 12/12 CA, contraintes techniques ajoutées. 1 MAJEUR (agrégation NTS DA-01 gap spec).
risk_mitigation 7.5 8.0 Marge deadline fixée (+0.5). reasonCode contractualisés. 2 MAJEURs résiduels (DA-05 formulation, cache fail-closed). Amélioration nette.
coherence 8.0 7.5 Frontières CC fixées. MAIS corrections ont introduit fusion enum et incohérence state persist. 3 MAJEURs dont 2 introduits par v2. Régression localisée.

Moyenne v1 : 8.00 Moyenne v2 : (8.5 + 8.5 + 8.0 + 7.5) / 4 = 8.125 Delta : +0.125


5. Verdict

Les corrections v2 ont amélioré risk_mitigation (+0.5) et coverage (+0.5) mais dégradé coherence (-0.5) par introduction d'écarts rédactionnels dans DA-05/DA-02. Le plan architectural sous-jacent est solide (14 convergences confirmées). Les écarts résiduels sont principalement des formulations à corriger (DA-05, DA-02) et des zones d'ombre préexistantes (cache, NTS aggregation).