Aller au contenu

PD-285 — 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

  • Spécification : PD-285-specification.md (étape 1)
  • Tests : PD-285-tests.md (étape 2)

2. Convergences

  • Valeur contractuelle : Les deux documents s'accordent sur 524288000 bytes comme valeur exacte pour maxSizeBytes des catégories DEFAULT et B2C_EVIDENCE_MINOR (spec §4 INV-285-01, tests TC-NOM-01/02).
  • Catégories ciblées : Accord sur le périmètre limité à exactement 2 catégories (spec INV-285-02, tests TC-NEG-01).
  • Sémantique de borne : Accord sur > 524288000 rejeté, = 524288000 accepté, sans clamp (spec INV-285-03, tests TC-NOM-03/04/05/06).
  • Code erreur : Accord sur ERR-79-004 comme code exact pour rejet métier de dépassement de taille (spec INV-285-05, tests TC-NOM-05/TC-NEG-05).
  • Non-régression : Accord sur la plage historique 1..104857600 conservant le comportement antérieur (spec INV-285-06, tests TC-NR-01/02).
  • Synchronisation documentaire PD-252 : Accord sur la double vérification besoin + spécification PD-252 avec la mention storage.category_max_bytes: 500 MB (spec INV-285-07 / CA-06, tests TC-NOM-07/TC-ERR-05).
  • Cohérence inter-EB : Accord sur la suppression de l'incohérence PD-101 vs backend comme condition de clôture (spec CA-07, tests TC-NOM-08/TC-ERR-06).
  • 12 invariants : Les tests couvrent explicitement les 12 invariants de la spécification dans la matrice §2 et la table §5. Aucun invariant non couvert.
  • Invariants d'absence (INV-285-08 à 12) : Accord entre spec et tests — ces invariants confirment l'absence de transitions temporelles, machines d'état, mécanismes distribués, DDL et contraintes inter-modules.

3. Divergences

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

  • DIV-01 : Absence de test de borne haute pour la validation métier (service) à la valeur exacte 524288000
  • Source A (Spécification) : Le flux N3 et INV-285-03 imposent que taille <= 524288000 est conforme côté service, et que taille > 524288000 est rejetée. Le scénario T-05 couvre le rejet à 524288001, mais le scénario symétrique d'acceptation à 524288000 côté service (pendant de T-04 côté middleware) est absent de la section §8.
  • Source B (Tests) : TC-NOM-06 couvre bien ce cas (524288000 validé côté service). Cependant, ce test n'apparaît PAS dans la matrice de couverture §2 — il n'est rattaché à aucun CA.
  • Impact : TC-NOM-06 est orphelin de traçabilité. Un auditeur suivant la matrice §2 conclurait que la borne inclusive côté service n'est pas couverte.

  • DIV-02 : Incohérence sur la référence épique

  • Source A (Spécification) : Référence Référence épique avec mention "à préciser" (§10 Q-01, §Références).
  • Source B (Tests) : Référence EPIC-XX avec mention "valeur opérationnelle en attente" (§1).
  • Impact : Mineur — aucun impact fonctionnel, mais les deux documents utilisent des placeholders différents. Risque de confusion lors de l'archivage.

4. Zones d'ombre

  • ZO-01 : Comportement middleware quand Content-Length est absent ou non fiable.
  • La spécification mentionne la pré-validation "si présent" (flux N2 §5) et pose Q-03 comme point à clarifier.
  • Les tests identifient ce point comme "non testable" (§9, première entrée, impact Majeur).
  • Constat : Les deux documents identifient le problème mais aucun ne le résout. Ce point reste une zone d'ombre non arbitrée. Un upload sans Content-Length pourrait bypasser la pré-validation middleware et n'être intercepté qu'au niveau service — ce qui est peut-être le comportement voulu (H-05 le suggère), mais ce n'est pas formalisé.

  • ZO-02 : Format exact du rapport de cohérence inter-EB pour CA-07.

  • La spécification pose Q-04 comme point à clarifier.
  • Les tests identifient ce point comme "non testable" (§9, deuxième entrée, impact Majeur).
  • Constat : L'observable de CA-07 est fonctionnellement défini ("aucune incohérence remontée") mais le format de preuve n'est pas normalisé. TC-NOM-08 stipule "statut de contrôle conforme" sans définir la structure du rapport à inspecter.

  • ZO-03 : Chemin d'artefact et variables {DOMAINE} / {PD-285-nom}.

  • La spécification pose Q-02 comme point à clarifier.
  • Les tests reprennent ce point comme "non testable" (§9, troisième entrée, impact Mineur).
  • Constat : Le dossier physique existe déjà (backend-core/PD-285-relever-maxsize-500mb/), ce qui résout factuellement Q-02. La zone d'ombre est résiduellement formelle.

  • ZO-04 : Absence de scénario de test pour Content-Length = 0.

  • La spécification définit le modèle de données contractuel avec Content-Length >= 0 et maxSizeBytes avec borne min 1.
  • Les tests couvrent les bornes 524288000 et 524288001 mais aucun scénario ne teste Content-Length = 0 ni taille métier = 0.
  • Constat : Le comportement à taille 0 n'est ni spécifié ni testé. INV-285-04 impose min 1, donc 0 devrait être rejeté, mais aucun TC ne le vérifie.

5. Recommandation

  • Procéder — convergence confirmée, aucun conflit bloquant

Justification : Les deux documents sont fortement alignés sur le fond. DIV-01 est un défaut de traçabilité dans la matrice (TC-NOM-06 existe mais n'est pas rattaché), pas un manque de couverture. DIV-02 est cosmétique. Les zones d'ombre ZO-01 et ZO-02 (impact Majeur) sont identifiées par les deux documents et classées comme points à clarifier / non testables — la gate PMO pourra statuer sur leur caractère bloquant ou non. ZO-03 est factuellement résolu. ZO-04 est un cas de bord mineur.