Aller au contenu

PD-262 — Plan d’implémentation : Revue

1. Références

  • Spécification : PD-262-specification.md
  • Tests contractuels : PD-262-tests.md
  • Plan d’implémentation : PD-262-plan.md
  • Date de revue : 2026-03-06
  • Reviewer : Auditeur technique indépendant (LLM)

2. Constatations (écarts)

Type Référence (Spec/Test/Plan) Description Impact Gravité (BLOQUANT/MAJEUR/MINEUR)
Non-conformité Spec INV-262-02 / Spec §4 / Plan C3, C4, FT3 Le plan place la séquence de décision effective (handleDetection, purge, transitions, navigation lockout) côté JS/TS après retour performCheck(), alors que la décision lockout/purge doit être uniquement native et non inhibable/retardable par JS. Violation directe d’un invariant non négociable ; surface de contournement par instrumentation JS. BLOQUANT
Test irréalisable TC-INV-02, TC-NEG-03 / Plan C6, C7, C8, FT3 Les tests adversariaux exigent un lockout natif maintenu malgré tentative JS ; le plan décrit un verrouillage UX piloté par hook/store/navigation JS. Impossibilité de prouver contractuellement l’absence de bypass JS en session courante avec les mécanismes décrits. BLOQUANT
Non-conformité Spec Spec §3.6 (stockage lockout exclusivement Keychain) / Plan C8 / Code Contracts CC-262-T8 (tamperingLockout: boolean (persisted)) Le plan/contracts introduisent une persistance JS du lockout en plus de la Keychain. Rupture de l’exclusivité contractuelle du stockage lockout ; risque d’incohérence d’état et de non-conformité d’audit. MAJEUR
Couverture manquante INV-262-02, CA-01, CA-02 / Spec §3.1 (operations sensibles) / Plan C3, C7, C8 Le plan ne documente pas de mécanisme natif explicite empêchant toutes opérations sensibles (Keychain/dechiffrement/API auth) quand tampered=true; il décrit surtout un verrouillage UI/navigation. Verrouillage fonctionnel potentiellement contournable hors UX ; couverture incomplète des invariants de sécurité. MAJEUR
Hypothèse implicite Spec F4, ERR-04 / Plan §8 HT-08 Le plan suppose qu’en absence d’endpoint backend l’émission devient un no-op local, sans cadrage contractuel supplémentaire. Dégradation de l’auditabilité distante et hétérogénéité d’implémentation non explicitement contractualisée. MAJEUR
Code Contract — Forbidden Code Contracts CC-262-T10 / section forbidden La règle interdite « Tester sign et verify isolement (roundtrip obligatoire si crypto) » n’est pas reliée à la spec PD-262 ni à ses invariants/tests. Contrat de test contaminé par une contrainte hors périmètre, risque de rejet QA non justifié. MINEUR
Contrainte technique non documentée Plan (absence section dédiée "Contraintes techniques") / Framework de test Le choix explicite Jest/Vitest n’est pas documenté. Ambiguïté d’exécution des tests et du runner CI. MAJEUR
Contrainte technique non documentée Plan (absence section dédiée "Contraintes techniques") / Compatibilité ESM/CJS Aucune documentation des dépendances ESM-only et de l’adaptation runner associée. Risque de non-exécution des tests selon environnement. MAJEUR
Contrainte technique non documentée Plan (absence section dédiée "Contraintes techniques") / Variables CI Variables CI requises pour tests d’intégration non documentées. Reproductibilité CI partielle et écarts d’environnement. MINEUR
Contrainte technique non documentée Plan §9.3, §12 / Dépendances inter-PD Les dépendances inter-PD existent mais sans statut systématique attendu (DONE/TODO/STUB) pour chaque dépendance. Traçabilité de livraison inter-story incomplète pour audit tiers. MINEUR

3. Synthèse

  • Nombre d’écarts par gravité : BLOQUANT=2, MAJEUR=5, MINEUR=3
  • Points critiques : non-respect de l’autorité native (INV-262-02), irréalisabilité des tests adversariaux de non-bypass JS, non-conformité potentielle sur l’exclusivité de persistance lockout en Keychain.

4. Verdict de la revue

  • Statut : ⛔ Rejeté
  • Motif synthétique : Le plan n’est pas contractuellement conforme sur l’axe central d’autorité native/non-contournabilité JS et présente des écarts majeurs de traçabilité technique (contraintes de test non documentées), empêchant une validation tierce robuste.