PD-284-CONFRONTATION-STEP5-V1
[0m
build · gpt-5.3-codex [0m
E-01 — CONFIRMÉ — Gravité: Bloquant¶
Justification: Les extraits fournis indiquent une contradiction explicite entre le plan (mitigation via "lib native tierce" si streaming fetch indisponible) et le code contract SSE qui interdit une lib EventSource tierce. C’est une non-conformité contractuelle directe sur un module critique (transport SSE). Tant que cette contradiction n’est pas résolue, l’implémentation peut partir sur une option interdite.
E-02 — CONFIRMÉ — Gravité: Majeur¶
Justification: La spec définit 7 états métier (§5.7), alors que la carte visuelle est en 5 étapes (§5.2). Sans table explicite état→étape dans le plan, le mapping est ambigu (notamment pour QUEUED_PRIORITY et FAILED_TIMEOUT) et peut produire des divergences UI/QA. L’écart est réel car la correspondance n’est pas documentée.
E-03 — CONFIRMÉ — Gravité: Majeur¶
Justification: La spec rend failure_reason obligatoire pour FAILED_TIMEOUT (§5.12). Si le plan ne prévoit aucun composant consommateur/affichage, le champ obligatoire n’a pas d’usage fonctionnel ni de validation visible. C’est un manque de couverture d’un cas d’échec critique.
E-04 — CONFIRMÉ — Gravité: Majeur¶
Justification: Les extraits indiquent une purge limitée au cleanup/logout/deleteAccount, sans purge proactive au démarrage. Vu le risque connu de bypass de finally (learning PD-283/262 mentionné), l’absence de purgeStale() au bootstrap laisse un trou de robustesse. La mitigation décrite est incomplète.
E-05 — CONFIRMÉ — Gravité: Majeur¶
Justification: Sur les éléments fournis, la section "contraintes techniques" (statut PD-80, framework tests, ESM/CJS, variables CI) n’est pas matérialisée. Ce n’est pas un détail éditorial: cela conditionne la reproductibilité build/test et la faisabilité CI. L’écart de cadrage d’implémentation est donc justifié.
E-06 — CONFIRMÉ — Gravité: Bloquant¶
Justification: Le plan exclut TC-NOM-13 de la CI (dépendance device physique), alors que CA-284-14 impose un critère perf (P95 <= 100ms). Sans vérification automatisée compensatoire, le critère d’acceptation devient non démontrable dans le pipeline. C’est bloquant au regard de la vérifiabilité.
E-07 — CONFIRMÉ — Gravité: Bloquant¶
Justification: Le choix fail-open (has_active_urgent_seal=false par défaut) est justifié par une hypothèse d’idempotence PD-80 non contractualisée dans PD-284. On introduit donc une dépendance critique cross-story non prouvée. En l’état, le risque fonctionnel/sécurité est trop élevé.
E-08 — CONFIRMÉ — Gravité: Mineur¶
Justification: Le plan contient deux implémentations incompatibles pour le FIFO (Set<number> vs ring buffer). C’est une incohérence technique locale, corrigeable rapidement, mais qui peut impacter la complexité/ordre d’éviction. L’écart est réel mais de gravité limitée.
E-09 — CONFIRMÉ — Gravité: Mineur¶
Justification: position_in_queue est obligatoire en état QUEUED_PRIORITY (§5.12). Si aucun composant ne l’affiche/consomme, la valeur reste techniquement présente mais non valorisée côté UX/diagnostic. C’est un manque de complétude, pas forcément bloquant.
E-10 — CONFIRMÉ — Gravité: Mineur¶
Justification: Le besoin d’afficher tsa_token_ref en ExpertPanel, combiné à l’interdiction de stockage Zustand, nécessite un flux transitoire explicite (lecture SecureStore + passage éphémère). Si ce flux n’est pas documenté, le plan n’est pas implémentable sans interprétation. Écart d’architecture mineur mais concret.
E-11 — CONFIRMÉ — Gravité: Mineur¶
Justification: tsa_timestamp est obligatoire en TSA_SEALED (§5.12). S’il manque dans seal-types (C1), le typage ne protège pas la complétude du payload et peut masquer des régressions. C’est un défaut de contrat de type, généralement rapide à corriger.
E-12 — CONFIRMÉ — Gravité: Mineur¶
Justification: La spec est explicite sur valeur inconnue de degradation_flag : traiter comme none + telemetry (§5.3). Si le plan ne tranche pas ce comportement, il reste une ambiguïté d’exécution (silence vs signal utilisateur). Écart mineur de décision fonctionnelle, mais à fermer.
E-13 — CONFIRMÉ — Gravité: Mineur¶
Justification: Le plan mentionne mode_expert absent du store sans formaliser la création/évolution de contrat associée. Cela crée une dette de planification (tâche implicite non tracée). Écart réel, à intégrer explicitement au scope.
Écarts supplémentaires non détectés par P1¶
- Purge / sécurité stockage incomplète: §5.11 impose aussi
kSecAttrAccessibleWhenUnlockedThisDeviceOnly; l’extrait P1 sur la purge ne mentionne pas cette contrainte de stockage. - Champs obligatoires potentiellement non couverts hors E-03/E-09/E-11: aucune preuve fournie de consommation/validation de
merkle_root,blockchain_tx_hash,proof_url(§5.12). - Mapping d’échec dans la progression visuelle: au-delà du 7→5, le traitement visuel de
FAILED_TIMEOUT(sortie du flux nominal) n’est pas explicité.
Recommandation globale¶
REWORK
Le volume d’écarts confirmés (dont plusieurs bloquants sur conformité contractuelle, fail-open et vérifiabilité CI) ne permet pas un GO ni un RESERVE en l’état.