Aller au contenu



build · gpt-5.3-codex 

PD-282 — Rapport de confrontation (Étape N)

Ce rapport est produit par l'orchestrateur Claude avant chaque gate PMO.
Il confronte les documents produits pour identifier convergences, divergences et zones d'ombre.

1. Sources confrontées

  • PD-282-specification.md — Spécification contractuelle (Étape 1)
  • PD-282-tests.md — Scénarios de tests contractuels (Étape 2)
  • PD-282-review-phase1.md (contenu fourni: “PD-282 — Specification Review”, 2026-03-02) — Revue pré-gate (Phase 1)

2. Convergences

  • Les trois documents convergent sur le socle fonctionnel principal: envelopeSeal obligatoire, exclusion de envelopeSeal du payload signé (JCS), intégrité “1 octet modifié => invalidation”, immutabilité post-scellement, terminalité SEALED (Spec INV-282-01/02/03/08/09/10 ; Tests matrice + TC-NOM-01/02/05/06 ; Review ne conteste pas ces invariants de base).
  • Convergence sur le contrat de rejet explicite en cas de format invalide / données manquantes (Spec INV-282-12, ERR-06 ; Tests TC-ERR-06 + TC-NEG-* ; Review qualifie surtout des manques de couverture, pas une contradiction du principe).
  • Convergence sur le mode dégradé OCSP: ocspResponses=[] acceptable uniquement avec validationPolicy=OCSP_UNAVAILABLE (Spec ERR-05 + §5.1.2 ; Tests TC-ERR-05, TC-NEG-06/07 ; Review signale ambiguïtés de formulation mais pas de désaccord de fond).
  • Convergence sur la pérennité post-rotation de clé via kid + chaîne embarquée (Spec INV-282-11 ; Tests TC-NOM-07 ; Review ne contredit pas l’objectif).
  • Convergence explicite sur le fait que la story reste partiellement testable avec réserves externes (perf environnement de référence, recevabilité juridique, trust-store tiers): Spec Q-02/H-04/H-01 ; Tests §9 “Règles non testables” ; Review classe ces sujets en risques/ambiguïtés majeurs.

3. Divergences

⚠️ Les conflits ne doivent JAMAIS être lissés. Chaque divergence est rendue visible.

  • DIV-01 : Couverture Mode B contractualisée mais non démontrée positivement
  • Source A (Specification) : Mode B “online public” est inclus au périmètre (§2 Inclus, §3 Définitions).
  • Source B (Tests) : aucun scénario nominal positif Mode B ; seulement Mode A nominal (TC-NOM-04) et échec A/B (TC-ERR-08).
  • Source C (Review) : IST-01 classé Bloquant.
  • Impact : exigence en périmètre sans preuve de conformité positive.

  • DIV-02 : Statut OCSP revoked défini mais comportement métier non contractualisé

  • Source A (Specification) : enum ocspResponses[].status inclut good|revoked|unknown (§5.1.2) sans règle de décision explicite à finalisation.
  • Source B (Tests) : absence de test dédié au cas revoked.
  • Source C (Review) : IST-05 classé Bloquant.
  • Impact : décision de finalisation potentiellement indéterminée sur un cas critique probatoire.

  • DIV-03 : Horodatage signedAt présent mais non protégé par le sceau global

  • Source A (Specification) : signedAt est dans envelopeSeal (§5.1.1) et envelopeSeal est exclu du calcul du sceau (INV-282-02).
  • Source B (Tests) : aucun test détectant altération de signedAt isolé.
  • Source C (Review) : HD-01 classé Bloquant.
  • Impact : incohérence potentielle de chronologie probatoire non détectable par la vérification du sceau.

  • DIV-04 : Exigence de monitoring formulée “DOIT” tout en étant hors périmètre

  • Source A (Specification) : note ERR-05 impose monitoring >10%/1h avec “DOIT”, tout en indiquant “hors périmètre fonctionnel”.
  • Source B (Tests) : pas de test couvrant cette obligation d’exploitation.
  • Source C (Review) : CTR-01 classé Majeur.
  • Impact : obligation normative sans portage clair de responsabilité ni vérifiabilité dans la story.

  • DIV-05 : Normalisation certSerialNumber contractualisée mais non couverte

  • Source A (Specification) : normalisation uppercase à l’ingestion, comparaison sur forme normalisée (§5.1.2).
  • Source B (Tests) : aucun test explicite entrée mixte/minuscule + persistance normalisée.
  • Source C (Review) : IST-03 classé Majeur.
  • Impact : règle de contrat susceptible d’être non implémentée sans détection QA.

  • DIV-06 : Contrainte temporelle producedAt <= validationTimestamp sans cas négatif

  • Source A (Specification) : CA-05 impose la relation temporelle.
  • Source B (Tests) : vérifié en nominal (TC-NOM-03) mais pas de comportement défini/testé en violation.
  • Source C (Review) : IST-04 classé Majeur.
  • Impact : comportement non déterminé sur incohérence temporelle OCSP.

  • DIV-07 : Atomicité testée mais traçabilité de couverture incomplète

  • Source A (Specification) : atomicité détaillée (§5.5).
  • Source B (Tests) : scénario dédié TC-NOM-08, mais non rattaché à un invariant/CA dans la matrice de couverture.
  • Source C (Review) : IST-02 classé Mineur.
  • Impact : audit de couverture formel potentiellement incomplet malgré présence d’un test.

  • DIV-08 : Rôle des chaînes de certificats insuffisamment explicités

  • Source A (Specification) : trois chaînes (envelopeSeal.certificateChain, tsaCertificateChain, eidasCertificateChain) définies sans sémantique contractuelle exhaustive.
  • Source B (Tests) : validation de présence, sans oracle explicite d’usage différencié par chaîne.
  • Source C (Review) : AMB-02 classé Majeur.
  • Impact : risque d’interprétations divergentes entre implémenteurs/vérificateurs tiers.

  • DIV-09 : Déterminisme JCS vs persistance jsonb non cadré

  • Source A (Specification) : impose JCS (INV-282-02) et stack PostgreSQL jsonb (§10.1) sans préciser le point exact de canonicalisation de référence.
  • Source B (Tests) : pas de scénario round-trip DB ciblé sur stabilité de vérification.
  • Source C (Review) : HD-02 classé Majeur.
  • Impact : risque de faux négatifs de vérification sur enveloppes intactes selon cycle stockage/lecture.

  • DIV-10 : Concurrence de finalisation non contractualisée

  • Source A (Specification) : états + atomicité définis, sans règle explicite de collision de finalisations concurrentes.
  • Source B (Tests) : aucun test de course concurrente.
  • Source C (Review) : HD-03 classé Majeur.
  • Impact : comportement runtime non spécifié en contention (erreurs techniques vs métier).

4. Zones d'ombre

  • Environnement de référence performance non fixé (Spec Q-02), ce qui empêche l’objectivation complète des bornes P95 (confirmé “non testable” dans Tests §9).
  • Alignement final avec le modèle d’états global PD-280 non tranché (Spec Q-04), malgré non-régression prévue (Tests TC-NR-02).
  • Politique d’inclusion/exclusion de la root CA dans les chaînes embarquées non arrêtée (Spec Q-05), avec dépendance au trust-store tiers (H-01).
  • Référentiel explicite du “mécanisme de réconciliation existant” absent (Spec §5.5), sans ancrage documentaire partagé.
  • Gouvernance d’évolution de la liste anti-secrets (“patterns minimaux”) non formalisée (point signalé par Review AMB-01, non couvert par un artefact décisionnel dans les sources fournies).
  • Preuve de non-révocation du certificat de scellement ProbatioVault en Mode A non explicitement embarquée (point de risque Review RSC-01, non arbitré dans le contrat source).

5. Recommandation

  • Procéder — convergence confirmée, aucun conflit bloquant
  • Rework nécessaire — divergences à résoudre avant de continuer
  • Escalade — décision humaine requise sur un point structurant