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 bytescomme valeur exacte pourmaxSizeBytesdes catégoriesDEFAULTetB2C_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
> 524288000rejeté,= 524288000accepté, sans clamp (spec INV-285-03, tests TC-NOM-03/04/05/06). - Code erreur : Accord sur
ERR-79-004comme 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..104857600conservant 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
<= 524288000est conforme côté service, et que taille> 524288000est rejetée. Le scénario T-05 couvre le rejet à524288001, mais le scénario symétrique d'acceptation à524288000cô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 (
524288000validé 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 épiqueavec mention "à préciser" (§10 Q-01, §Références). - Source B (Tests) : Référence
EPIC-XXavec 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-Lengthest 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-Lengthpourrait 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 >= 0etmaxSizeBytesavec borne min1. - Les tests couvrent les bornes
524288000et524288001mais aucun scénario ne testeContent-Length = 0ni taille métier= 0. - Constat : Le comportement à taille 0 n'est ni spécifié ni testé. INV-285-04 impose min
1, donc0devrait ê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.