Aller au contenu

PD-105 — Gate 5 — Review du plan d'implementation

Type : Non-conformite Spec Reference : Spec INV-105-05 ; Spec FN-105-03 ; Plan §2.4 (Foreground -> "Affiche in-app toast (alert)") Description : Le plan introduit un affichage visuel explicite en foreground sans conditionnement explicite au type alert. Pour une notification silent, ce comportement contrevient a l'exigence d'absence d'alerte visuelle/sonore/vibration. Impact : Risque de violation directe de l'invariant de non-perturbation des silent notifications et rejet en acceptation contractuelle. Gravite : BLOQUANT

Type : Couverture manquante Reference : Spec ERR-105-01 ; Plan §5 (ERR-105-01) Description : La reponse attendue exige explicitement une nouvelle tentative au prochain cycle d'activation app/session. Le plan ne couvre que "backoff exponentiel (3 tentatives)" sans mecanisme explicite de reprise ulterieure. Impact : Ecart contractuel sur la strategie de recuperation et impossibilite de prouver la conformite complete du cas d'erreur. Gravite : MAJEUR

Type : Couverture manquante Reference : Spec INV-105-08 ; Spec definition "UUID v4" ; Plan §2.3 (PayloadBuilder.build) ; Plan §3 (INV-105-08) Description : Le plan parle de "UUID" mais ne specifie pas explicitement "UUID v4" pour l'identifiant global de notification. Impact : Invariant formel non totalement couvert ; ambiguite de conformite en audit externe sur le format d'identifiant. Gravite : MAJEUR

Type : Test irrealisable Reference : Tests TC-INV-08 ; Spec INV-105-08 ; Plan §3 (Observable = "SQLite") Description : Le plan ne definit pas de point d'observabilite explicite permettant de verifier la propriete "v4" de l'identifiant (schema, contrainte, journal de validation). L'observable "SQLite" est insuffisant tel quel pour ce controle contractuel. Impact : Le test d'invariant sur la qualite de l'identifiant ne peut pas etre audite de maniere deterministe. Gravite : BLOQUANT

Type : Hypothese implicite Reference : Spec INV-105-09 ; Plan §2.4 (3 handlers) ; Plan §3 (computeBadge -> setBadgeCountAsync) Description : Le plan suppose implicitement une mise a jour atomique et ordonnee du badge face a des traitements concurrents (foreground/background/killed), sans proprietes explicites de serialisation ou idempotence. Impact : Risque de desalignement badge/non lus, avec non-conformite intermittente difficilement reproductible en test. Gravite : MAJEUR

Type : Risque secu/conformite Reference : Spec INV-105-08 ; Spec INV-105-09 ; Plan §2.4 ; Plan §6 Description : Aucun mecanisme explicite de deduplication/idempotence n'est defini a la reception (replay APNs, retries, double callback). Le design autorise potentiellement des insertions multiples d'un meme evenement logique. Impact : Rupture de tracabilite locale (doublons), badge incoherent, et fragilite des preuves d'audit. Gravite : MAJEUR

Type : Risque secu/conformite Reference : Spec INV-105-02 ; INV-105-06 ; INV-105-07 ; Plan §2.3 ; Plan §3 Description : Le plan decrit classifier et sanitize, mais ne pose pas de garde-fou architectural rendant ces etapes non contournables avant envoi APNs. Un chemin technique direct vers dispatch/APNs reste possible dans le design decrit. Impact : Possibilite de bypass des filtres doctrinaux et de la sanitization payload, avec emission non conforme. Gravite : MAJEUR

Type : Hypothese implicite Reference : Spec CA-105-09 ; Spec H-105-05 ; Plan §3 ("APNs feedback + compteur succes/echecs") Description : Le plan assimile implicitement le "feedback APNs" a une mesure suffisante de "livraison" >=99% sur 30 jours, sans definition contractuelle explicite de la metrique de livraison retenue. Impact : Indicateur potentiellement non opposable en audit externe ; risque de non-demonstrabilite du critere CA-105-09. Gravite : MAJEUR

Type : Code Contract Reference : Spec INV-105-13 ; Spec CA-105-10 ; Code Contracts §frontend.permission_prompt ; Code Contracts §criteria_mapping.CA-105-10 Description : Le code contract associe INV-105-13 et CA-105-10 au composant permission_prompt, alors que ces exigences portent sur la validite EAS iOS/Expo Go et non sur le flux de permission utilisateur. Impact : Incoherence contractuelle majeure entre spec et contrats ; traçabilite de conformite faussee. Gravite : BLOQUANT

Type : Code Contract Reference : Plan §1.1 (module notification-center) ; Code Contracts (absence de section dediee) Description : Le composant "notification-center" est present dans le plan mais ne dispose pas de code contract explicite (interfaces/frontieres/invariants), malgre son role dans INV-105-08, INV-105-09 et INV-105-10. Impact : Completeness incomplete des contrats de code et auditabilite partielle des engagements frontend. Gravite : MAJEUR

Type : Code Contract Reference : Code Contracts §frontend.notification_store.methods ; Plan §1.1 et §4 Description : Les methodes du notification_store sont declarees sans signatures, contrairement aux autres composants contractes. Impact : Interfaces non suffisamment verifiables pour un audit tiers, et ambiguite sur les pre/post-conditions testables. Gravite : MINEUR