Aller au contenu

PD-286 — Rapport de confrontation (Étape 3)

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

  • SPECIFICATIONPD-286 — Export probatoire multi-volumes sans perte de preuves (entrée pré-gate, étape 3)
  • TESTSPD-286 — Scénarios de tests contractuels (entrée pré-gate, étape 3)

2. Convergences

  • Le cadre de volumétrie est aligné : plafond global 10_737_418_240 bytes, volume borné à <= 805_306_368 bytes, et refus explicites (413 EXPORT_TOTAL_LIMIT_EXCEEDED, 422 PROOF_TOO_LARGE_FOR_VOLUME) dans la spécification (INV/ERR) et dans les tests (TC-ERR-01, TC-ERR-02).
  • La rétrocompatibilité single-volume est convergente : contrat legacy conservé sans dépendance obligatoire à volumes[] (Spec INV-286-05, CA-286-02; Tests TC-NOM-01, TC-NR-01).
  • Le traitement multi-volumes séquentiel côté app est cohérent entre les deux documents (Spec flux nominal B + hors périmètre du parallèle; Tests TC-NOM-04).
  • Le contrôle d’intégrité par volume et l’échec global immédiat en cas de mismatch sont alignés (Spec INV-286-07, ERR-286-04; Tests TC-NOM-04, TC-ERR-04).
  • L’assemblage attendu en un unique .pvproof avec métadonnées multi-volumes (volumes_count, assembled_from[]) est convergent (Spec INV-286-08, CA-286-03; Tests TC-NOM-03, TC-INV-08, TC-NR-02).
  • Le comportement terminal/non-reprise est cohérent : FAILED/COMPLETED/EXPIRED sans transition sortante, reprise interdite sur même exportId (Spec INV-286-11/12; Tests TC-INV-11, TC-INV-12, TC-NEG-06/07/08).
  • Les invariants hors périmètre fonctionnel (guards auth/premium, rate limiting, pipeline validation des preuves) sont traités de façon cohérente via non-régression (Spec hors périmètre; Tests TC-NR-03/04/05).
  • Les deux documents reconnaissent explicitement des réserves de testabilité sur la canonicalisation JSON et la taxonomie finale des erreurs (Spec Q-286-01/02; Tests section 9).

3. Divergences

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

  • DIV-01 : Liaison incohérente entre invariant de limite globale et critère d’acceptation référencé dans la matrice.
  • Source A (SPECIFICATION) : INV-286-02 porte sur la limite >10GB => 413; CA-286-01 porte sur le cas nominal 2GB multi-volumes et la borne par volume.
  • Source B (TESTS) : Matrice section 2 associe INV-286-02 à CA-286-01 (INV-286-02 | CA-286-01 | TC-ERR-01).
  • Impact : traçabilité exigence-test ambiguë; risque de lecture erronée de la couverture contractuelle.

  • DIV-02 : Liaison partielle entre invariant d’exhaustivité d’ensemble et critère référencé.

  • Source A (SPECIFICATION) : INV-286-03 exige l’égalité d’ensemble (sans doublon ni omission); CA-286-08 exige uniquement la non-scission d’une preuve.
  • Source B (TESTS) : Matrice section 2 relie INV-286-03 à CA-286-08 (INV-286-03 | CA-286-08 | TC-INV-03).
  • Impact : la matrice de couverture ne reflète pas fidèlement la sémantique du critère cité; audit de conformité potentiellement disputable.

  • DIV-03 : Exigence d’observabilité supplémentaire côté tests non explicitée comme exigence contractuelle dans la spécification.

  • Source A (SPECIFICATION) : INV-286-09 impose un audit WORM fail-closed avec champs requis; aucune exigence explicite de signature d’événement n’est formulée.
  • Source B (TESTS) : Section 8 impose un « Événement signé / horodaté » comme observable requis.
  • Impact : possible conflit d’oracle de test (attendu QA plus strict que le contrat explicitement formulé).

  • DIV-04 : Attendu de test non univoque sur integrityHash invalide (code HTTP vs rejet de contrat applicatif).

  • Source A (SPECIFICATION) : section 5.1 indique 422 VOLUME_INTEGRITY_HASH_INVALID pour format invalide; ERR-286-03 indique rejet du contrat backend + FAILED + audit fail-closed.
  • Source B (TESTS) : TC-NEG-02 attend « 422 ... / rejet contrat » (double résultat possible), tandis que TC-ERR-03 attend rejet contrat + FAILED.
  • Impact : verdict de test potentiellement non déterministe selon l’interprétation du contexte de validation.

  • DIV-05 : Référence d’épopée non alignée.

  • Source A (SPECIFICATION) : Epic « non renseignée ».
  • Source B (TESTS) : Epic EPIC-XX.
  • Impact : traçabilité portefeuille/PMO incomplète à la gate.

4. Zones d'ombre

  • Spécification formelle de canonicalisation JSON (Q-286-01) absente : ordre des clés, normalisation exacte, encodage canonique.
  • Taxonomie finale des codes d’erreur (Q-286-02) non figée contractuellement.
  • Durée normative de rétention post-FAILED/EXPIRED (Q-286-03) non chiffrée.
  • Valeurs effectives de TTL en production (Q-286-04) non confirmées.
  • Modalités de preuve attendue pour valider INV-286-10 (envelope encryption au repos) insuffisamment cadrées : type de preuves, périmètre d’environnements, critères d’acceptation sécurité.
  • Comportement contractuel détaillé en cas d’indisponibilité de la chaîne d’audit WORM (codes/état/temporalité de l’échec fail-closed) non explicité de façon testable.

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 ```