Aller au contenu

PD-284-CONFRONTATION-STEP5-V1



build · gpt-5.3-codex 

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.