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.tssrc/i18n/locales/fr/mfa.jsonsrc/i18n/locales/en/mfa.jsonsrc/i18n/locales/fr/settings.jsonsrc/i18n/locales/en/settings.jsonsrc/i18n/index.ts- Livrable attendu : Service API
settingsApi.tsavec 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 namespacesmfaetsettings(tous les messages d'erreur, labels, confirmations). Enregistrement des namespaces dansindex.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.tsxsrc/hooks/useReauth.ts- Livrable attendu : Hook
useReauth(requireReauth, isReauthValid, consume, invalidation navigation blur, TTL 5 min) + composantReauthModal(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.tsxsrc/screens/settings/MfaEnrollScreen.tsxsrc/components/settings/RecoveryCodesDisplay.tsxsrc/hooks/useMfa.tssrc/screens/settings/DeleteAccountScreen.tsxsrc/components/settings/ConfirmationModal.tsx- Livrable attendu : Hook
useMfa(état MFA, activate, disable, regenerateRecoveryCodes). ÉcranMfaSettingsScreen(état, boutons activation/désactivation, section codes). ÉcranMfaEnrollScreen(QR code, saisie TOTP, RecoveryCodesDisplay). ComposantRecoveryCodesDisplay(affichage unique, avertissement). ComposantConfirmationModal(simple + renforcé). ÉcranDeleteAccountScreen(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.tsxsrc/hooks/useSettings.tssrc/screens/settings/ChangePasswordScreen.tsxsrc/navigation/AppNavigator.tsxsrc/components/common/ProfileAvatar.tsxsrc/hooks/useAuth.tssrc/services/api.ts- Livrable attendu : Hook
useSettings(loadProfile, loadMfaState). ÉcranSettingsScreen(profil lecture seule, menu vers MFA/password/security/logout/delete). ÉcranChangePasswordScreen(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¶
-
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.
-
Dépendance QR code : La tâche 3 (MfaEnrollScreen) nécessitera probablement l'ajout de
react-native-qrcode-svgou l'utilisation d'un QR code base64 fourni par le backend. L'agent doit documenter son choix. -
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.
-
ProfileScreen.tsx : Inclus dans le périmètre de la tâche 4 (code contract navigation) — correction du mineur #8 de la gate 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.