| Non-conformité Spec | Spec §4 INV-287-12, §6 ERR-287-05/09/10/11, §5.8 / Plan §2ter, §6 | Le guard cross-module annonce 403 pour état/session/TTL invalides, alors que le contrat destinataire impose 404 générique homogène (hors 429 rate-limit). | Rupture anti-enumeration contractuelle et incohérence avec TC-ERR-05/09/10/11. | BLOQUANT |
| Non-conformité Spec | Spec §5.1 D-287-23, §4 INV-287-13 / Plan §4 (CA-287-04), §9 point 26 | Le plan introduit LINK_OTP_BLOCKED, LINK_REAUTH_* hors enum contractuel audit_event_type. | Soit rejet transactionnel (enum strict), soit journal parallèle non contractualisé. | BLOQUANT |
| Test irréalisable | Tests TC-NOM-02, TC-NOM-11 / Plan §5bis (front hors scope), §8 H-plan-07, §10 | Les tests exigent des observables UI (RGPD avant activation, affichage warning owner), alors que le plan les externalise à un stub/story séparée. | Exécution contractuelle complète des scénarios non démontrable avec le plan seul. | BLOQUANT |
| Hypothèse implicite | Spec §5.1 D-287-11, §5.2 / Plan §2.2 (OTP_CODE_TTL_SECONDS=300), §8 H-plan-03 | Durée de validité OTP introduite par le plan sans règle canonique dans la spec. | Interprétation libre d’un comportement sécurité critique. | MAJEUR |
| Hypothèse implicite | Spec §5.2 max_consultations_per_link / Plan §9 point 12, Code Contracts feature_flags.max_consultations_per_link_enabled | Le plan ajoute un comportement d’expiration sur plafond de consultations (EXPIRED(reason: consultation_limit)) non contractualisé par invariant/CA/test. | Comportement fonctionnel additionnel hors cadre contractuel. | MAJEUR |
| Couverture manquante | Invariant INV-287-22 / Plan §2ter, §3 (risque de bypass documenté) | La protection inter-module dépend d’un décorateur @ShareContext() avec chemin de bypass si non appliqué. | L’exigence “non contournable” n’est pas garantie structurellement par design. | MAJEUR |
| Non-conformité Spec | Spec §6 ERR-287-16, §7 CA-287-29 / Plan §3 INV-287-17, §6 | Le plan décrit un fail-closed mixte (503 ou crash bootstrap) pour trust-store absent/incomplet. | Observable contractuel non déterministe pour TC-ERR-16/CA-287-29. | MAJEUR |
| Code Contract — Frontière | Code Contracts (note “files ne se chevauchent pas”), module sharing-api.files vs modules otp/recipient/crypto/audit/... | src/sharing/** attribué à sharing-api chevauche les périmètres de quasiment tous les autres modules. | Viol de frontière de responsabilité et traçabilité contractuelle des owners. | BLOQUANT |
| Code Contract — Cohérence | Plan §2.1 étape 6 / Code Contracts reconciliation-worker.interfaces | QuotaCheckService est utilisé dans le flux de création mais n’est pas contractualisé dans les interfaces du module concerné. | Contrat d’interface incomplet sur un chemin critique. | MAJEUR |
| Code Contract — Cohérence | Plan §2.3 (X-Recipient-Session) / Code Contracts recipient-session.forbidden (politique cookie) | Le plan transporte la session via header, le code contract impose une politique cookie (HttpOnly/Secure/SameSite). | Contradiction d’interface et d’hypothèse sécurité entre documents contractuels. | MAJEUR |
| Code Contract — Invariant | Code Contracts modules otp, recipient-session, audit-journal | Plusieurs invariants de code contract ne sont pas un sous-ensemble direct des INV-287-* (ex. Plan-OTP-TTL, invariants ADR, règles opérationnelles additionnelles). | Dérive normative hors spec canonique. | MAJEUR |
| Code Contract — Forbidden | Code Contracts modules sharing-api, tests | Des patterns “forbidden” relèvent de politique d’ingénierie locale (ex. request-scoped, discipline describe.skip) sans ancrage explicite spec/sécurité. | Frontière conformité contractuelle vs conventions internes ambiguë. | MINEUR |
| Contrainte technique non documentée | Plan global (§8, §10) | Absence de section “Contraintes techniques” listant les dépendances inter-PD avec statut explicite DONE/TODO/STUB. | Audit de faisabilité inter-story incomplet. | MINEUR |
| Contrainte technique non documentée | Plan global (runner/tests/libs) | Compatibilité ESM/CJS et adaptation runner non documentées explicitement. | Risque d’échec exécution tests/CI lié au mode module. | MAJEUR |
| Contrainte technique non documentée | Plan §5bis (intégration/perf), global | Variables CI requises pour tests d’intégration non documentées (DATABASE_URL, CI=true, etc.). | Reproductibilité CI partielle et audit d’exécution incomplet. | MINEUR |