Aller au contenu

PD-285 — Rapport de confrontation (Étape 8)

Ce rapport est produit par l'orchestrateur Claude avant la gate PMO 8 (CLOSURE). 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
  • Rapport d'acceptabilité (PD-285-acceptability.md) — Étape 7

2. Convergences

  • CON-01 — Valeur cible unanime : Les 4 documents s'accordent sur 524288000 bytes (500 MB binaire) comme valeur exacte pour maxSizeBytes des catégories DEFAULT et B2C_EVIDENCE_MINOR. Aucune ambiguïté d'unité (base 10 vs base 2).

  • CON-02 — Périmètre de catégories restreint : Spec (INV-285-02), tests (TC-NEG-01), plan (§2 clause WHERE restrictive) et acceptabilité (migration SQL avec WHERE) convergent sur exactement 2 catégories ciblées.

  • CON-03 — Code erreur ERR-79-004 : Spec (INV-285-05), tests (TC-NOM-05, TC-NEG-05), plan (§6) et acceptabilité (vérification CA-04) convergent sur le code d'erreur métier exact pour dépassement de taille.

  • CON-04 — Borne strictement supérieure : Spec (INV-285-03, flux N2/N3), tests (TC-NOM-03/04/05/06), plan (§2 flux F2) et acceptabilité (CA-03/CA-04) convergent sur la sémantique > 524288000 rejeté, <= 524288000 accepté. Pas de confusion inclusive/exclusive.

  • CON-05 — Aucun code applicatif modifié : Plan (§1 "Pas de composant logiciel modifié") et acceptabilité (Phase 1 "aucun nouveau code applicatif") convergent : seule la donnée DB change, le middleware et le service sont inchangés.

  • CON-06 — Migration UPDATE (pas DDL) : Plan (§9 point 2) et acceptabilité ("Pas de DDL, pas de risque ALTER TYPE ADD VALUE") convergent sur la nature data-only de la migration.

  • CON-07 — Non-régression mathématique : Spec (INV-285-06), tests (TC-NR-01/02) et plan (INV-285-06 "garanti mathématiquement") convergent : tout fichier 1..104857600 reste accepté car 524288000 > 104857600.

  • CON-08 — Amendement documentaire PD-252 : Spec (INV-285-07, CA-06), tests (TC-NOM-07, TC-ERR-05), plan (C3, flux F3) et acceptabilité (CA-06 vérifié) convergent sur la nécessité d'amender les 2 artefacts PD-252.

  • CON-09 — Invariants d'absence (08-12) : Les 4 documents convergent sur l'absence de transitions temporelles, machine d'état, mécanismes distribués, DDL et contraintes inter-module dans le périmètre de la story.

  • CON-10 — Hors périmètre stable : Spec (§2), plan (§10) et acceptabilité convergent : quotas utilisateur, multipart 5 TB, client mobile PD-101, infrastructure S3/OVH sont explicitement exclus.

3. Divergences

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

  • DIV-01 : Statut de CA-07 (cohérence inter-EB)
  • Spec : CA-07 est un critère d'acceptation requis ("pipeline de cohérence inter-EB ne signale plus l'incohérence").
  • Tests : TC-NOM-08 couvre CA-07 avec réserve ("sous réserve format preuve").
  • Acceptabilité : CA-07 est marqué ⏳ Post-migration — non vérifié au moment du rapport.
  • Plan : §9 point 5 précise l'ordre d'exécution nécessaire.
  • Impact : Un critère d'acceptation reste non vérifié. La story ne peut être déclarée CONFORME tant que CA-07 n'est pas validé. Le rapport d'acceptabilité conclut "CONFORME — prêt pour Gate 8" malgré ce point ouvert.

  • DIV-02 : Chemins des fichiers de test

  • Plan : référence test/unit/**/category-config.service.spec.ts et test/unit/**/deposit.controller.spec.ts.
  • Acceptabilité : référence src/modules/documents/services/category-config.service.spec.ts, src/modules/documents/controllers/deposit.controller.integration.spec.ts, src/modules/documents/__tests__/security/deposit-category.security.spec.ts.
  • Impact : Mineur. Les chemins réels (acceptabilité) diffèrent des chemins prévus (plan). Le plan a anticipé des chemins test/unit/ alors que les tests sont co-localisés dans src/. Le code fonctionne (44 tests passent), mais le plan n'était pas aligné avec la structure réelle du projet.

  • DIV-03 : Nombre de suites de test

  • Plan : identifie 2 composants de test (C2 : config service spec + deposit controller spec).
  • Acceptabilité : 3 fichiers de test modifiés (category-config, deposit.controller.integration, deposit-category.security).
  • Impact : Mineur. Le plan sous-estimait le nombre de fichiers de test à mettre à jour. Le fichier de test sécurité (deposit-category.security.spec.ts) n'était pas anticipé dans le plan. Tous les tests passent.

  • DIV-04 : ESLint et Sonar en acceptabilité

  • Spec : ne mentionne pas explicitement ESLint/Sonar comme critère.
  • Acceptabilité : ESLint "Non exécuté" et Sonar "Non applicable" avec justification (aucun nouveau code applicatif).
  • Règles workflow : Phase 1.5 Sonar local est BLOQUANTE (cf. .claude/rules/procedures.md).
  • Impact : Mineur. La justification (pas de code applicatif, migration SQL + mocks uniquement) est recevable. La dérogation est documentée.

4. Zones d'ombre

  • ZO-01 — Comportement middleware sans Content-Length : Identifié par la spec (Q-03), les tests (§9 "Règles non testables", impact MAJEUR) et le plan (HT-06). Aucun des 4 documents ne tranche définitivement le comportement. Le plan indique que le comportement existant est "safe" (la validation métier est l'autorité finale), mais ce n'est pas contractualisé dans la spec ni testé. Ce point est hors périmètre PD-285 (comportement existant inchangé).

  • ZO-02 — Format exact du rapport de cohérence inter-EB : Identifié par la spec (Q-04) et les tests (§9 "Règles non testables", impact MAJEUR). Le plan mentionne coherence-report.py mais ne précise pas le format de sortie attendu pour déclarer CA-07 satisfait. L'observable reste qualitatif.

  • ZO-03 — Référence épique et chemin d'artefact : Identifié par la spec (Q-01, Q-02) et les tests (§9 "Règles non testables", impact Mineur). La spec utilise "Référence épique" comme placeholder. Le plan (HT-05) résout le chemin PD-252 avec une hypothèse vérifiable. Impact mineur sur le cadrage documentaire.

  • ZO-04 — Migration down() vide : Le plan (§9 point 3) et l'acceptabilité ("down() vide — production safety") convergent sur ce choix, mais la spec ne l'adresse pas. Si un rollback est nécessaire, il faudra une migration inverse manuelle. Risque faible car le changement est un simple UPDATE réversible.

5. Recommandation

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

Justification :

Les 4 documents sont massivement convergents sur les aspects critiques (valeur cible, catégories, code erreur, sémantique de borne, nature de la migration, non-régression).

DIV-01 (CA-07 ⏳) est le seul écart notable : un critère d'acceptation reste en attente de validation post-migration. Ce critère est vérifiable objectivement une fois la migration déployée en dev. Il ne bloque pas le verdict Gate 8 si une réserve est émise.

DIV-02/03 (chemins et nombre de fichiers test) sont des écarts plan/réalité mineurs sans impact fonctionnel — les 44 tests passent.

ZO-01/ZO-02 (Content-Length absent, format rapport) sont des ambiguïtés préexistantes, hors périmètre PD-285, déjà identifiées en Gate 3 et Gate 5.

Aucune divergence ne remet en cause la conformité fonctionnelle de l'implémentation.