| Non-conformité Spec | INV-278-01, Spec §4 + §5.2 / Plan §4 (CA-01), Plan §9 (V-01), Plan §5.3 (TC-INV-01) | EC-01 — Le plan acte explicitement une divergence du set d’états (enum DB avec RESTITUTED) et remplace l’exigence “set exact 4 états” par “DIP présent”. | Affaiblissement contractuel d’un invariant non négociable. | BLOQUANT |
| Test irréalisable | Test TC-INV-01 / Spec INV-278-01 / Plan §9 (V-01), Plan §5.3 | EC-02 — Le test contractuel exige l’ensemble exact {PENDING, SEALED, DIP, EXPIRED}, alors que le plan annonce un ensemble DB élargi. | Incompatibilité directe Plan↔Tests, échec de validation contractuelle attendu. | BLOQUANT |
| Non-conformité Spec | Spec §6 (liste codes erreurs), Spec axe 1 “aucun comportement non spécifié” / Plan §3 (INV-278-02 risque), Plan §8 (H-03), Code contracts dip-rate-limit | EC-03 — Le plan introduit un rejet 503 en cas d’indisponibilité Redis (fail-closed), non prévu par le contrat d’erreurs. | Introduction d’un comportement hors spécification API. | MAJEUR |
| Non-conformité Spec | Spec §6 (codes définis), Spec §5.14 / Plan §13 C9 étape 6 (“sinon 404 / RLS 403”) | EC-04 — Le plan prévoit un cas 404 non contractualisé dans la matrice d’erreurs. | Non-conformité du contrat API black-box et ambiguïté d’assertion des tests. | MAJEUR |
| Non-conformité Spec | INV-278-04, Spec §5.8 (“Persistance audit refus sécurité : synchrone”) / Plan §2.3, Plan §3 (INV-278-04), Plan §13 C11 (logAsync) | EC-05 — L’audit des refus sécurité est décrit en asynchrone (logAsync) au lieu d’une persistance synchrone dédiée exigée. | Rupture potentielle de traçabilité NF Z42-013 sur événements refusés. | BLOQUANT |
| Couverture manquante | INV-278-04, TC-ERR-03, TC-INV-04 / Plan §3 (risque “401 pré-controller non capturé”), Plan §9 (V-05) | EC-06 — Le plan reconnaît que les 401 rejetés avant contrôleur peuvent échapper au filtre d’audit refus, sans mécanisme garantissant la couverture. | Audit de sécurité incomplet sur un cas explicitement obligatoire. | MAJEUR |
| Couverture manquante | Spec §5.13 (attestation: conservation 10 ans, append-only, réplication lecture), INV-278-05 / Plan §13 C9, Plan §8 (H-09) | EC-07 — Le plan mentionne la table d’attestation mais ne décrit pas de mécanisme explicite garantissant conservation 10 ans, append-only et réplication. | Critères de preuve probatoire non démontrés dans le plan. | MAJEUR |
| Couverture manquante | INV-278-12 + Spec §5.9/§5.11 (ordre global cross-module obligatoire) / Plan §11, Plan §9 (V-02) | EC-08 — L’exigence cross-module est laissée en “vérification” et non en mécanisme contraignant porté par le plan. | Risque résiduel de deadlock/race inter-modules non traité contractuellement. | MAJEUR |
| Hypothèse implicite | Spec §3 (copies fourni par couche stockage) + INV-278-02 / Plan §8 (H-06), Plan §9 (V-08) | EC-09 — L’équivalence copies = geo_copy_count est posée comme hypothèse avec possibilité de stub dépendant d’une autre story. | Dépendance implicite pouvant invalider la garde copies >= MIN_COPIES. | MAJEUR |
| Hypothèse implicite | INV-278-07, INV-278-14 / Plan §2.4 (“retention_service, BYPASSRLS”), Plan §8 (H-08) | EC-10 — Le fonctionnement suppose un rôle technique BYPASSRLS non contractualisé dans la spec. | Changement de posture d’accès non explicitement encadré contractuellement. | MAJEUR |
| Risque sécu/conformité | INV-278-10, CA-15 (“testable sans réserve”) / Plan §3 (INV-278-10 risque “stub si HSM non disponible”), Plan §4 (CA-15 risque), Plan §9 | EC-11 — Le plan accepte un mode “stub HSM” conditionnel sur une dépendance externe. | Invariant crypto potentiellement non satisfait en exécution réelle. | BLOQUANT |
| Contrainte technique non documentée | Exigence §7 du prompt (section “Contraintes techniques”, dépendances inter-PD avec statut DONE/TODO/STUB) / Plan global | EC-12 — La section normative “Contraintes techniques” est absente et les dépendances inter-PD ne sont pas structurées avec statuts exigés. | Traçabilité de dépendances incomplète pour audit de plan. | MINEUR |
| Contrainte technique non documentée | Exigence §7 du prompt (framework Jest/Vitest explicite) / Plan §12 | EC-13 — Le framework de test n’est pas explicitement verrouillé (Jest ou Vitest). | Ambiguïté d’exécution du périmètre de tests. | MINEUR |
| Contrainte technique non documentée | Exigence §7 du prompt (compatibilité ESM/CJS et dépendances ESM-only) / Plan global | EC-14 — Aucune section explicite sur compatibilité ESM/CJS et adaptation runner. | Risque d’échec de campagne tests/CI non couvert au niveau plan. | MAJEUR |
| Contrainte technique non documentée | Exigence §7 du prompt (variables CI documentées) / Plan global | EC-15 — Variables CI requises (DATABASE_URL, CI=true, etc.) non documentées. | Reproductibilité CI des tests d’intégration non garantie. | MINEUR |
| Code Contract — Invariant | Code contracts dip-migration + dip-tests / Spec INV-278-01, CA-11 | EC-16 — Certains invariants de code contracts ne sont pas un sous-ensemble strict de la spec (ex. formulation “inclut exactement DIP via ADD VALUE”, contrainte “couverture >=80%” non issue des invariants spec). | Décalage contrat-code vs contrat-spec, source d’ambiguïté d’audit. | MAJEUR |
| Code Contract — Forbidden | Code contracts (plusieurs modules, règles REX non rattachées explicitement à spec/sécurité) | EC-17 — Plusieurs forbidden relèvent de conventions internes/REX sans justification explicite par exigence spec ou sécurité normative dans le plan. | Justification contractuelle incomplète des interdictions. | MINEUR |