Aller au contenu

PD-298 — Plan d’implémentation : Revue

1. Références

  • Spécification : PD-298-specification.md
  • Tests contractuels : PD-298-tests.md
  • Plan d’implémentation : PD-298-plan.md
  • Date de revue : 2026-04-22
  • Reviewer : Codex (auditeur technique indépendant)

2. Constatations (écarts)

Type Référence (Spec/Test/Plan) Description Impact Gravité (BLOQUANT/MAJEUR/MINEUR)
Non-conformité Spec Spec §5.1 recipientEmail (regex D-287-03 exacte), INV-298-01 / Plan §1 C02, §1.2, §8 HT-01 Le plan autorise un fallback regex fallback-rfc5322 si D-287-03 est absente. Validation UI potentiellement divergente du contrat backend ; INV-298-01 non démontrable contractuellement. BLOQUANT
Non-conformité Spec Spec INV-298-02, INV-298-03, §3 ARB-7/ARB-8 / Plan §1.2 (placeholders ARB) Les textes normatifs ARB-7/ARB-8 sont implémentés en placeholders “À définir”. Exigence de texte exact non tenue tant que placeholders actifs. BLOQUANT
Non-conformité Spec Spec INV-298-03, §5.1 drmWarningSeen persistant local par compte / Plan §1 C04, code contract sharing-drm-prefs (purgeAllDrmFlags au logout) Le plan purge les flags DRM au logout. La mémorisation “par compte” n’est plus persistante entre sessions. MAJEUR
Non-conformité Spec Spec INV-298-06, CA-298-11 / Tests TC-NOM-04 / Plan §3 mapping INV-298-06, code contract C07 Le gating submit est défini sur “visible au moins une fois”, pas sur visibilité au moment de la soumission. Soumission possible sans encart visible à l’instant d’action. BLOQUANT
Non-conformité Spec Spec INV-298-14/15, §5.5, §5bis diagramme d’état / Plan §9 V-04 Le plan explicite que les self-loops ne sont pas traités comme erreur côté UI. Fermeture contractuelle de la machine à états partiellement relâchée. MAJEUR
Couverture manquante Tests §8 “Observabilité requise” / Plan §5, §Périmètre de test Le plan ne définit pas de mécanisme explicite pour request-id, corrélation horodatée et hash d’intégrité d’artefacts probatoires. Audit tiers incomplet sur la preuve d’exécution des tests. MAJEUR
Test irréalisable Tests TC-NOM-09, CA-298-04 / Plan §1.2 placeholders ARB-7 La comparaison stricte ARB-7 ne peut pas être exécutée avec texte placeholder. TC-NOM-09 non passable contractuellement. BLOQUANT
Test irréalisable Tests TC-NOM-04, TC-ERR-10 / Plan §3 INV-298-06 (“visible au moins une fois”) L’oracle test exige visibilité au moment exact de soumission ; le mécanisme planifié ne prouve que l’historique de visibilité. Verdict de test non déterministe vis-à-vis du contrat. BLOQUANT
Test irréalisable Tests TC-NOM-16 / Spec INV-298-14/15 / Plan §9 V-03 Le plan indique que l’UI ne simule pas la FSM complète et se limite à des rejets partiels. TC-NOM-16 n’est pas réalisable intégralement tel que défini. BLOQUANT
Hypothèse implicite Plan C09 + code contract sharing-guards (requireOwnership sans appel réseau) / Spec INV-298-12 Le plan suppose la disponibilité locale des données de propriété pour toute entrée de route share/create/:proofId. Risque de faux positif/faux négatif sur le guard owner-only. MAJEUR
Risque sécu/conformité Plan §9 V-05 / Spec INV-298-07 Le plan documente une fuite potentielle PII via captures d’écran du journal sans mitigation MVP. Risque RGPD et affaiblissement de la minimisation des données. MAJEUR
Code Contract — Forbidden Code contracts sharing-api-client.forbidden / Spec §5.1-§5.2 maxViews / Plan §8 HT-05 Le contract interdit de retourner l’erreur backend brute, alors que la spec impose propagation de l’erreur backend sur dépassement maxViews. Contradiction contractuelle plan/spec/code-contract pour le même cas. MAJEUR
Code Contract — Cohérence Plan §1 C05 (“4 endpoints PD-287”) / Plan §2 F4 (GET /shares/:id) / Code contracts C05 (5 endpoints) Le plan est incohérent sur le nombre d’endpoints consommés. Ambiguïté d’implémentation et de couverture tests sur le détail de partage. MAJEUR
Code Contract — Complétude Plan §1 (“1→1 modules ↔ code-contracts”) + §2bis (agents agent-i18n, agent-tests) / Code contracts fournis (10 modules uniquement) Le diagramme d’agents introduit des responsabilités non matérialisées en module contracté. Traçabilité contractuelle incomplète entre orchestration et contrats de code. MAJEUR
Code Contract — Frontière Plan §1.1 (src/i18n/fr/sharing.json), §9 V-07 (eslint-plugin-i18n.config.js) / Code contracts files Des fichiers requis par le plan sortent des périmètres files contractualisés. Frontières d’ownership non fermées pour audit externe. MAJEUR
Code Contract — Invariant Code contracts C01/C02/C05/C06 invariants / Spec §4 (invariants INV-298-xx) Plusieurs invariants de code contract sont des règles additionnelles d’implémentation (ex. stockage UUID lowercased, Idempotency-Key obligatoire, conventions query-key), non présentes comme sous-ensemble de la spec. Extension normative hors invariants canoniques. MAJEUR
Contrainte technique non documentée Plan global (pas de section dédiée “Contraintes techniques”) Les dépendances inter-PD et leurs statuts existent mais restent dispersés, sans section unique dédiée. Traçabilité documentaire réduite pour audit. MINEUR
Contrainte technique non documentée Plan §Périmètre de test Le runner de test n’est pas explicitement figé (Jest ou Vitest). Ambiguïté d’exécution des suites contractuelles. MAJEUR
Contrainte technique non documentée Plan global Compatibilité ESM/CJS et gestion des dépendances ESM-only non documentées. Risque d’échec d’exécution des tests/outils selon runtime. MAJEUR
Contrainte technique non documentée Plan §Périmètre de test / CI Variables CI nécessaires aux tests d’intégration non documentées (CI=true, env réseau/URL, etc.). Reproductibilité CI incomplète. MINEUR

3. Synthèse

  • Nombre d’écarts par gravité : BLOQUANT = 6, MAJEUR = 12, MINEUR = 2.
  • Points critiques : textes normatifs manquants mais utilisés en placeholders (ARB/RGPD/regex), tests contractuels clés non réalisables (TC-NOM-04/09/16), incohérences structurelles entre plan et code contracts.

4. Verdict de la revue

  • Statut : ⛔ Rejeté
  • Motif synthétique : non-conformités contractuelles bloquantes + tests contractuels irréalisables + écarts de cohérence/completude des code contracts.

Impossible d’écrire physiquement PD-298-plan-review.md dans ce workspace (sandbox en lecture seule).