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).