Aller au contenu

Décomposition Multi-Agents — PD-107 Authentification Biométrique iOS

Version : 1.0 Date : 2026-02-14 Auteur : Claude (Orchestrateur) Phase : 6a — Décomposition


1. Configuration Git

Branche Rôle Agent
feature/PD-107-biometric-auth Production Claude
feature/PD-107-biometric-auth-eval Shadow mode évaluation Qwen

Mode : Dual-branch (shadow mode actif pour Qwen sur Phase 6)


2. Agents assignés

Agent Rôle Modèle Temperature Tâches
agent-developer Développement code Claude (claude -p) 0.2 T1-T14
agent-qa-unit Tests unitaires Claude (claude -p) 0.2 T15, T16
agent-qa-ihm Tests E2E Detox Claude (claude -p) 0.2 T17

Qwen (branche -eval) : Exécute les mêmes tâches T1-T17 via /ollama -a factual -m qwen2.5-coder:32b


3. Décomposition des 17 tâches

Phase 1 : Infrastructure native (2 tâches)

# Tâche Agent Contract Fichiers Dépendances Durée est.
T1 Module natif iOS Keychain agent-developer CC-107-T1 ios/ProbatioVault/BiometricKeychainModule.swift, ios/ProbatioVault/BiometricKeychainModule.m - 2h
T2 Bridge TypeScript Keychain agent-developer CC-107-T2 src/services/biometricKeychain.ts, src/services/biometricKeychain.types.ts T1 1h

Invariants critiques Phase 1 : - kSecAccessControlBiometryCurrentSet OBLIGATOIRE - kSecAttrAccessibleWhenUnlockedThisDeviceOnly OBLIGATOIRE - Mapping erreurs iOS → domaine (CC-107-T2)


Phase 2 : Services core (3 tâches)

# Tâche Agent Contract Fichiers Dépendances Durée est.
T3 Refactor BiometricService agent-developer CC-107-T3 src/services/biometric.ts (refactor) T2 1.5h
T4 PolicyEngine agent-developer CC-107-T4 src/services/policyEngine.ts - 1h
T5 UnlockOrchestrator agent-developer CC-107-T5 src/services/unlockOrchestrator.ts T3, T4 2h

Changements critiques T3 (migration PD-99) : - Supprimer storeBiometricCredentials(email, password) ❌ - Ajouter storeUnlockSecret(derivedKey) ✅ - Utiliser BiometricKeychain au lieu de SecureStore


Phase 3 : Audit & Logging (2 tâches)

# Tâche Agent Contract Fichiers Dépendances Durée est.
T6 AuditService (file locale) agent-developer CC-107-T6 src/services/auditService.ts, src/services/auditQueue.ts - 1.5h
T7 Intégration audit → orchestrator agent-developer CC-107-T7 src/services/unlockOrchestrator.ts (update) T5, T6 0.5h

Configuration queue audit :

AUDIT_QUEUE_CONFIG = {
  maxEvents: 1000,
  maxAgeHours: 72,
  retryBackoffMs: [1000, 5000, 30000, 60000, 300000],
  maxRetries: 10,
}


Phase 4 : Hooks React (2 tâches)

# Tâche Agent Contract Fichiers Dépendances Durée est.
T8 useBiometricSettings hook agent-developer CC-107-T8 src/hooks/useBiometricSettings.ts T5 1h
T9 useAppUnlock hook agent-developer CC-107-T9 src/hooks/useAppUnlock.ts T5, T8 1h

Intégration existante : - Utiliser useAutoLock (PD-174) pour détection inactivité - Synchroniser avec useSecurityStore (PD-174)


Phase 5 : UI Components (3 tâches)

# Tâche Agent Contract Fichiers Dépendances Durée est.
T10 BiometricPrompt component agent-developer CC-107-T10 src/components/unlock/BiometricPrompt.tsx T9 1h
T11 PasswordFallback component agent-developer CC-107-T11 src/components/unlock/PasswordFallback.tsx T9 1h
T12 BiometricSettingsScreen agent-developer CC-107-T12 src/screens/settings/BiometricSettingsScreen.tsx T8, T10 1.5h

Accessibilité : - accessibilityLabel sur tous les éléments interactifs - Support VoiceOver iOS - Icônes Face ID / Touch ID selon biometryType


Phase 6 : Intégration (3 tâches)

# Tâche Agent Contract Fichiers Dépendances Durée est.
T13 Extension SecurityStore agent-developer CC-107-T13 src/store/useSecurityStore.ts, src/store/useBiometricStore.ts T8, T9 1h
T14 Navigation + i18n agent-developer CC-107-T14 src/navigation/AppNavigator.tsx, src/i18n/locales/fr/settings.json, src/i18n/locales/en/settings.json T12 0.5h
T15 Tests unitaires services agent-qa-unit CC-107-T15 src/__tests__/services/biometric*.test.ts, src/__tests__/services/unlockOrchestrator.test.ts, etc. T1-T7 2h

Phase 7 : Tests avancés (2 tâches)

# Tâche Agent Contract Fichiers Dépendances Durée est.
T16 Tests hooks + intégration agent-qa-unit CC-107-T16 src/__tests__/hooks/useBiometric*.test.ts, src/__tests__/integration/biometricFlow.test.ts T8, T9, T15 1.5h
T17 Tests E2E Detox agent-qa-ihm CC-107-T17 e2e/biometricActivation.e2e.ts, e2e/biometricUnlock.e2e.ts, e2e/biometricFallback.e2e.ts T10-T14 2h

4. Graphe de dépendances

Phase 1 (Native)     │ T1 ──┬──> T2
                     │      │
Phase 2 (Services)   │      └──> T3 ──┬──> T5
                     │                │
                     │      T4 ───────┘
Phase 3 (Audit)      │ T6 ────────────────> T7
                     │                      │
Phase 4 (Hooks)      │                      └──> T8 ──┬──> T9
                     │                                │
Phase 5 (UI)         │                                └──> T10, T11 ──> T12
Phase 6 (Intégration)│ T13 (parallel T8-T9), T14 (after T12), T15 (after T1-T7)
Phase 7 (Tests)      │ T16 (after T15), T17 (after T14)

5. Ordre d'exécution

Étape Tâches Parallélisme Durée totale
1 T1 - 2h
2 T2, T4, T6 ✅ Parallèle 1.5h
3 T3 - 1.5h
4 T5, T7 Séquentiel (T5 → T7) 2.5h
5 T8 - 1h
6 T9, T13 ✅ Parallèle 1h
7 T10, T11 ✅ Parallèle 1h
8 T12, T14 Séquentiel 2h
9 T15 - 2h
10 T16, T17 ✅ Parallèle 2h

Durée totale estimée : 16.5h (~2.5 jours)


6. Checklist pré-exécution

  • Branche feature/PD-107-biometric-auth créée
  • Branche feature/PD-107-biometric-auth-eval créée (shadow mode Qwen)
  • Code contracts validés (CC-107-T1 à CC-107-T17)
  • Gate 5 GO (score 8.38/10)
  • T1 prêt à démarrer

7. Convention de commit

feat(PD-107): {description}

Agent: {agent-name}
Task: {N}/17
Contract: CC-107-T{N}

Co-Authored-By: Claude <noreply@anthropic.com>

8. Critères de completion par tâche

Chaque tâche est considérée DONE quand :

  1. ✅ Code produit conforme au code contract
  2. ✅ Invariants vérifiés (liste dans le contract)
  3. ✅ Pas d'erreur TypeScript (npx tsc --noEmit)
  4. ✅ Commit poussé sur la branche feature
  5. ✅ Pas de régression ESLint