PD-285 — Rapport de confrontation (Étape 5)¶
Ce rapport est produit par l'orchestrateur Claude avant la gate 5 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 - Plan d'implémentation (
PD-285-plan.md) — étape 4 - Code Contracts (
PD-285-code-contracts.yaml) — étape 4
2. Convergences¶
-
CON-01 : Les 4 documents s'accordent sur la valeur cible exacte :
524288000 bytes(500 MBbinaire) pour les catégoriesDEFAULTetB2C_EVIDENCE_MINORexclusivement. (Spec INV-285-01/02, Tests TC-NOM-01/02, Plan C1, Contracts INV-285-01/02) -
CON-02 : Le code d'erreur
ERR-79-004est la référence contractuelle unique pour dépassement de taille. Cohérent entre Spec INV-285-05, Tests TC-NOM-05/TC-NEG-05, Plan §6, Contracts moduletests-maxsize-update. -
CON-03 : La logique middleware et service est inchangée — seule la donnée DB change. Spec §2 (exclu), Plan §1 "Pas de composant logiciel modifié", Contracts
forbidden: "Ne PAS toucher au code du middleware ou du service". -
CON-04 : Le rejet est strict (pas de clamp) : taille
> 524288000rejetée,= 524288000acceptée. Spec INV-285-03, Tests TC-NOM-03/04/05/06, Plan §2 flux F2. -
CON-05 : Les invariants 08 à 12 (temporel, états retour, distribué, DDL, intermodule) sont unanimement identifiés comme non applicables. Spec, Tests §5, Plan §3 — tous confirmés par preuve d'absence.
-
CON-06 : L'amendement PD-252 (besoin + spécification) avec
storage.category_max_bytes: 500 MBest exigé par les 3 documents. Spec INV-285-07/CA-06, Tests TC-NOM-07/TC-ERR-05, Plan C3. -
CON-07 : La pipeline de cohérence inter-EB doit ne plus signaler l'écart PD-101/backend après implémentation. Spec CA-07, Tests TC-NOM-08/TC-ERR-06, Plan C4.
-
CON-08 : Non-régression garantie mathématiquement :
524288000 > 104857600, donc tout fichier accepté avant reste accepté. Spec INV-285-06, Tests TC-NR-01/02, Plan §3 INV-285-06. -
CON-09 : Aucun nouveau code d'erreur introduit. Plan §6, Spec §6, Contracts
forbidden.
3. Divergences¶
⚠️ Les conflits ne doivent JAMAIS être lissés. Chaque divergence est rendue visible.
- DIV-01 : Comportement sur
Content-Lengthnon numérique — contradiction Tests vs Plan - Tests (TC-ERR-04) : "Entrée rejetée explicitement — Absence de normalisation silencieuse"
- Plan (§5, TC-ERR-04) : "Middleware parseInt NaN check →
next()passthrough" -
Impact : Le Plan indique que le middleware laisse passer les Content-Length mal formés (NaN → passthrough vers le service), tandis que les Tests exigent un rejet explicite. Le comportement réel du middleware existant détermine qui a raison — si le middleware fait
next()sur NaN, le test TC-ERR-04 tel que décrit dans le document Tests échouerait. -
DIV-02 : INV-285-04 — bornes de configuration
[1, 524288000]sans mécanisme d'enforcement - Spec (INV-285-04) : "Paramètre
storage.category_max_bytes: défaut524288000, min1, max524288000, unitébytes. Valeur hors[1, 524288000]: invalide/rejetée." - Plan (§3, INV-285-04) : "Colonne BIGINT DB + parseInt service — Risque : Nul"
- Contracts : Aucune mention de validation des bornes de la valeur de configuration elle-même.
-
Impact : La spec exige le rejet de valeurs hors
[1, 524288000]pour le paramètre de configuration. Le plan ne prévoit aucun mécanisme de validation de la valeur config en DB. Le test TC-NEG-02 testemaxSizeBytes = 0, -1, 524288001mais le plan le mappe àassertSizeAllowed(validation de la taille du fichier uploadé), pas à la validation de la valeur de configuration elle-même. Confusion possible entre validation de la taille du fichier et validation de la borne de configuration. -
DIV-03 : INV-285-11 — terminologie "migration" ambiguë
- Spec (INV-285-11) : "Aucune migration DDL applicable"
- Plan (C1) : Introduit une migration TypeORM
RaiseMaxSize500MB.ts(UPDATE data, pas DDL) - Impact : Pas de contradiction technique (UPDATE ≠ DDL), mais la terminologie peut induire en erreur lors de la revue : "aucune migration" dans la spec vs "migration SQL" dans le plan. La distinction DML/DDL est correcte mais implicite.
4. Zones d'ombre¶
- ZO-01 : Comportement middleware quand
Content-Lengthest absent — non résolu -
Spec Q-03 identifie explicitement le point. Plan HT-06 décrit le comportement existant (
Content-Lengthabsent → middleware laisse passer, service est autorité finale) mais ne contractualise pas ce choix. Les Tests §9 classent ce point comme "Règle non testable — Impact Majeur". Aucun document ne tranche définitivement : le comportement est hérité et non contractualisé pour PD-285. -
ZO-02 : Format exact du rapport de cohérence inter-EB (CA-07)
-
Spec Q-04 et Tests §9 identifient ce point comme non résolu ("format de preuve non normalisé contractuellement — Impact Majeur"). Le Plan (C4) mentionne l'exécution de
coherence-report.pymais ne définit pas le format attendu de la preuve de conformité. L'observable CA-07 reste subjectif sans format normé. -
ZO-03 : Chemin exact des artefacts PD-252
-
Plan HT-05 suppose
ProbatioVault-doc/docs/epics/legal-compliance/PD-252-politique-formats-preservation/. Spec Q-02 mentionne le chemin comme non résolu. Contracts utilise un glob../ProbatioVault-doc/docs/epics/legal-compliance/PD-252-*/. Risque faible mais non levé formellement. -
ZO-04 : Référence épique et domaine non résolus
-
Spec Q-01/Q-02 identifient les valeurs
{DOMAINE}et{PD-285-nom}comme manquantes. Tests utilisentEPIC-XX. Le Plan ne mentionne pas cette question. Impact mineur (convention d'arborescence, pas de risque fonctionnel). -
ZO-05 : Cache TTL 60s — impact déploiement non couvert par la spec
- Le Plan (HT-02, §9 point 1) identifie un risque de valeur stale pendant 60s après migration. La Spec ne mentionne aucune contrainte temporelle de propagation. Les Tests n'incluent pas de scénario de cache stale. Impact faible si déploiement blue-green, mais non contractualisé.
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
Justification : DIV-01 est une contradiction factuelle entre les Tests et le Plan sur le comportement middleware face à un Content-Length non numérique. Le test TC-ERR-04 ne peut pas être implémenté tel que décrit si le middleware fait next() sur NaN. DIV-02 révèle une confusion entre validation de taille fichier et validation de borne configuration dans INV-285-04. Ces deux points doivent être alignés avant Gate 5.