Aller au contenu

PD-106 — Manifest de décomposition

Ce document est produit par l'orchestrateur Claude à l'étape 6a. Il découpe le plan d'implémentation en tâches assignées à des agents spécialisés.

Résumé

  • Story : PD-106
  • Nombre de tâches : 7
  • Agents mobilisés : agent-developer (×5), agent-qa-unit-integration (×1), agent-adversarial (×1)

Tâche 1 : agent-developer — settings-api + i18n-pd106

  • Agent : agent-developer
  • LLM : claude
  • Code contract : settings-api + i18n-pd106
  • Périmètre fichiers :
  • src/services/settingsApi.ts
  • src/i18n/locales/fr/mfa.json
  • src/i18n/locales/en/mfa.json
  • src/i18n/locales/fr/settings.json
  • src/i18n/locales/en/settings.json
  • src/i18n/index.ts
  • Livrable attendu : Service API settingsApi.ts avec toutes les fonctions d'appel backend PD-106 (profil, MFA status, TOTP init/verify/disable, recovery regenerate, reauth, password change, logout, delete account). Fichiers i18n FR/EN complets pour les namespaces mfa et settings (tous les messages d'erreur, labels, confirmations). Enregistrement des namespaces dans index.ts.
  • Dépendances : aucune

Tâche 2 : agent-developer — reauth

  • Agent : agent-developer
  • LLM : claude
  • Code contract : reauth
  • Périmètre fichiers :
  • src/components/settings/ReauthModal.tsx
  • src/hooks/useReauth.ts
  • Livrable attendu : Hook useReauth (requireReauth, isReauthValid, consume, invalidation navigation blur, TTL 5 min) + composant ReauthModal (saisie mot de passe, appel settingsApi.reauth, feedback erreur). INV-106-05/06 respectés.
  • Dépendances : Tâche 1 (settingsApi pour l'appel POST /auth/reauth)

Tâche 3 : agent-developer — mfa-management + delete-account

  • Agent : agent-developer
  • LLM : claude
  • Code contract : mfa-management + delete-account
  • Périmètre fichiers :
  • src/screens/settings/MfaSettingsScreen.tsx
  • src/screens/settings/MfaEnrollScreen.tsx
  • src/components/settings/RecoveryCodesDisplay.tsx
  • src/hooks/useMfa.ts
  • src/screens/settings/DeleteAccountScreen.tsx
  • src/components/settings/ConfirmationModal.tsx
  • Livrable attendu : Hook useMfa (état MFA, activate, disable, regenerateRecoveryCodes). Écran MfaSettingsScreen (état, boutons activation/désactivation, section codes). Écran MfaEnrollScreen (QR code, saisie TOTP, RecoveryCodesDisplay). Composant RecoveryCodesDisplay (affichage unique, avertissement). Composant ConfirmationModal (simple + renforcé). Écran DeleteAccountScreen (avertissement, confirmation renforcée 2 étapes, re-auth, suppression). INV-106-04 à 11, 14, 15, 16 respectés.
  • Dépendances : Tâche 1 (settingsApi), Tâche 2 (useReauth + ReauthModal)

Tâche 4 : agent-developer — settings-screen + navigation + change-password + logout

  • Agent : agent-developer
  • LLM : claude
  • Code contract : settings-screen + navigation + change-password + logout
  • Périmètre fichiers :
  • src/screens/settings/SettingsScreen.tsx
  • src/hooks/useSettings.ts
  • src/screens/settings/ChangePasswordScreen.tsx
  • src/navigation/AppNavigator.tsx
  • src/components/common/ProfileAvatar.tsx
  • src/hooks/useAuth.ts
  • src/services/api.ts
  • Livrable attendu : Hook useSettings (loadProfile, loadMfaState). Écran SettingsScreen (profil lecture seule, menu vers MFA/password/security/logout/delete). Écran ChangePasswordScreen (formulaire, validation locale, re-auth, appel serveur). Navigation : 5 nouvelles routes dans AppNavigator, ProfileAvatar → Settings. Logout enrichi dans useAuth (POST /auth/logout + fallback). INV-106-01/02/03/12/13/16/17 respectés.
  • Dépendances : Tâche 1 (settingsApi), Tâche 2 (useReauth)

Tâche 5 : agent-qa-unit-integration — tests-pd106

  • Agent : agent-qa-unit-integration
  • LLM : claude
  • Code contract : tests-pd106
  • Périmètre fichiers :
  • src/__tests__/settings/**
  • src/__tests__/mfa/**
  • Livrable attendu : Suites de tests Jest couvrant TC-NOM-01 à TC-NOM-12, TC-ERR-01 à TC-ERR-15, TC-INV-01 à TC-INV-02, TC-NR-01 à TC-NR-08, TC-NEG-01 à TC-NEG-08. Mocks déterministes pour settingsApi. Couverture ≥ 80%.
  • Dépendances : Tâches 1, 2, 3, 4 (code à tester)

Tâche 6 : agent-adversarial — revue sécurité

  • Agent : agent-adversarial
  • LLM : claude
  • Code contract : tous les modules (lecture seule)
  • Périmètre fichiers : aucun (lecture seule, rapport uniquement)
  • Livrable attendu : Rapport de revue sécurité vérifiant :
  • INV-106-08 : absence de secrets TOTP/codes en stockage durable et logs
  • INV-106-05/06 : re-auth non contournable, TTL respecté, consommation one-time
  • INV-106-09 : affichage unique codes de récupération
  • Absence de patterns forbidden dans les code contracts
  • Vérification des points de vigilance du plan (navigation invalidation, QR code, React state purge)
  • Dépendances : Tâches 1, 2, 3, 4 (code à auditer)

Tâche 7 : agent-metier — validation fonctionnelle

  • Agent : agent-metier
  • LLM : chatgpt
  • Code contract : tous les modules (lecture seule)
  • Périmètre fichiers : aucun (lecture seule, rapport uniquement)
  • Livrable attendu : Rapport de validation fonctionnelle vérifiant :
  • Conformité des flux implémentés avec les 7 flux nominaux de la spec
  • Couverture des 15 cas d'erreur
  • Conformité des libellés i18n avec le vocabulaire métier ProbatioVault
  • Adéquation de l'UX avec les patterns existants de l'app (cards, menus, modals)
  • Dépendances : Tâches 1, 2, 3, 4 (code à valider)

Ordre d'exécution

Phase 1 (parallèle) :
  ├─ Tâche 1 : settingsApi + i18n (aucune dépendance)

Phase 2 (parallèle, après Tâche 1) :
  ├─ Tâche 2 : reauth (dépend de Tâche 1)

Phase 3 (parallèle, après Tâches 1+2) :
  ├─ Tâche 3 : mfa-management + delete-account
  ├─ Tâche 4 : settings-screen + navigation + change-password + logout

Phase 4 (parallèle, après Tâches 1-4) :
  ├─ Tâche 5 : tests
  ├─ Tâche 6 : revue sécurité
  ├─ Tâche 7 : validation fonctionnelle (ChatGPT)

Notes de l'orchestrateur

  1. Regroupement de modules : Les tâches 1, 3 et 4 regroupent plusieurs modules des code contracts pour réduire le nombre de tâches et éviter une fragmentation excessive. Les frontières de fichiers restent respectées — aucun chevauchement.

  2. Dépendance QR code : La tâche 3 (MfaEnrollScreen) nécessitera probablement l'ajout de react-native-qrcode-svg ou l'utilisation d'un QR code base64 fourni par le backend. L'agent doit documenter son choix.

  3. Tâche 7 via ChatGPT : La validation fonctionnelle métier sera assemblée comme prompt ChatGPT par l'orchestrateur après la phase 3. L'humain copie-colle le prompt.

  4. ProfileScreen.tsx : Inclus dans le périmètre de la tâche 4 (code contract navigation) — correction du mineur #8 de la gate 5.

  5. Isolation : Chaque agent reçoit uniquement son code contract, la spec, les tests, le plan, et sa description de tâche. Les agents ne voient pas les livrables des autres agents.