Aller au contenu

PD-284 — Dossier de conformité Gate 5 (v1)

Date : 2026-03-13 Gate : AMBIGUITY (review plan d'implémentation) Itération : v1 P1 (Review) : Claude — PD-284-review-step5-v1.md P2 (Confrontation) : ChatGPT (via OpenCode, prompt condensé — dérogation Art. II) — confrontation-step5-v1

Écarts consolidés

# Type Gravité P1 Gravité P2 Gravité retenue Description
E-01 Contradiction MAJEUR Bloquant MAJEUR HT-03 mitigation (lib tierce) viole code contract SSE (lib tierce interdite)
E-02 Ambiguïté MAJEUR MAJEUR MAJEUR Mapping 7 états → 5 étapes visuelles absent du plan
E-03 Couverture MAJEUR MAJEUR MAJEUR failure_reason (FAILED_TIMEOUT) non exploité par aucun composant
E-04 Sécurité MAJEUR MAJEUR MAJEUR Absence purgeStale() au démarrage (learning PD-283/PD-262)
E-05 Cadrage MAJEUR MAJEUR MAJEUR Section contraintes techniques absente (PD-80 statut, framework test, ESM/CJS)
E-06 Testabilité MAJEUR Bloquant MAJEUR TC-NOM-13 exclu CI — CA-284-14 non vérifiable. Test proxy faisable.
E-07 Hypothèse MAJEUR Bloquant MAJEUR Fail-open has_active_urgent_seal sur idempotence PD-80 non contractualisée
E-08 Ambiguïté MINEUR MINEUR MINEUR Set<number> vs ring buffer pour cache FIFO
E-09 Couverture MINEUR MINEUR MINEUR position_in_queue non exploité
E-10 Architecture MINEUR MINEUR MINEUR Flux lecture tsa_token_ref SecureStore→ExpertPanel absent
E-11 Complétude types MINEUR MINEUR MINEUR tsa_timestamp non typé dans seal-types
E-12 Ambiguïté MINEUR MINEUR MINEUR degradation_flag inconnu : choix silencieux vs toast non tranché
E-13 Tâche manquante MINEUR MINEUR MINEUR mode_expert préférence : tâche hors contrat

Écarts P2 supplémentaires non retenus : - kSecAttrAccessibleWhenUnlockedThisDeviceOnly déjà couvert dans Plan §7 ligne 1. - merkle_root, blockchain_tx_hash, proof_url : plan §3 INV-284-11 confirme stockage Zustand state. Exploitation dans C10 ExpertPanel via EXPERT_FIELDS_BY_STATE. - FAILED_TIMEOUT traitement visuel : couvert par E-02 (mapping manquant).

Scoring v1

Critère Score Justification
feasibility 7.0 E-01 impasse contractuelle si HT-03 invalidée (-1.5), E-05 cadrage technique absent (-0.5)
completeness 7.0 E-03/E-09/E-11 champs spec non couverts (-1.0), E-04 purgeStale (-0.5), E-13 mode_expert (-0.5)
coherence 7.5 E-02 mapping 7→5 (-1.0), E-08 Set/ring buffer (-0.25), E-10 flux tsa_token_ref (-0.25)
traceability 8.0 Mappings INV→CA→mécanisme→TC complets et corrects. E-07 hypothèse documentée (-0.5 atténuée par R-03)
Moyenne 7.38

Verdict préliminaire

Moyenne 7.38 < 8.0 : 3 critères sous 8.0 (feasibility 7.0, completeness 7.0, coherence 7.5).

NON_CONFORME — 7 écarts MAJEUR à corriger.

Corrections requises (v2)

  1. E-01 : Ajouter clause contractuelle d'échappement dans le code contract seal-sse-client : si HT-03 invalidée, lib native react-native-sse autorisée sous condition de wrapping fetch-compatible.
  2. E-02 : Ajouter table de mapping explicite : RECEIVED/QUEUED_PRIORITY → Capture, TSA_PENDING → TSA, TSA_SEALED → TSA (complétée), ANCHOR_PENDING → Merkle, SEALED → Scellé, FAILED_TIMEOUT → overlay erreur sur étape courante.
  3. E-03 : Ajouter failure_reason dans types C1, affichage dans C9 (message terminal) et C10 (mode expert).
  4. E-04 : Ajouter purgeStale() dans C12 et l'appeler au démarrage de triggerUrgentSeal() dans C7.
  5. E-05 : Ajouter section §13 "Contraintes techniques" : PD-80 statut (dépendance STUB/TODO), framework Jest + RNTL, config ESM.
  6. E-06 : Ajouter test proxy CI pour CA-284-14 : vérifier nombre de re-renders <= N par événement SSE, via jest.fn() wrapper sur les sélecteurs Zustand.
  7. E-07 : Formaliser hypothèse H-284-07 : "PD-80 est idempotent sur POST /seals/urgent". Documenter comme hypothèse critique avec test de vérification à exécuter lors de l'intégration.
  8. E-08 : Retirer la mention Set<number> du §4, uniformiser sur ring buffer (tableau circulaire).
  9. E-09 : Ajouter position_in_queue dans types C1, affichage dans C9 en état QUEUED_PRIORITY.
  10. E-10 : Ajouter interface getSensitiveArtifact(sealId, key) dans C12, documenter le flux lecture transitoire pour C10.
  11. E-11 : Ajouter tsa_timestamp dans les interfaces C1 (SealEvent/ExpertFields).
  12. E-12 : Trancher explicitement : flag inconnu = trace silencieuse (pas toast). Justification : ce n'est pas une erreur contrôlée §3 mais un cas conservateur.
  13. E-13 : Ajouter tâche explicite dans C10 ou un C16 minimal : création champ mode_expert: boolean dans store settings.