Files
Geniusia_v2/.kiro/specs/faiss-learning-fix/tasks.md
2026-03-05 00:20:25 +01:00

8.6 KiB

Implementation Plan - Correction Système d'Apprentissage FAISS

Objectif

Corriger les problèmes critiques du système d'apprentissage : index FAISS vide malgré 19+ tâches sauvegardées, processus zombies consommant 3GB+ RAM, et absence de suggestions après 3 jours de tests.

Tasks

  • 1. Créer le FAISSIndexBuilder pour reconstruction d'index TERMINÉ

    • Créer geniusia2/core/faiss_index_builder.py
    • Implémenter scan_tasks() pour scanner tous les dossiers de tâches
    • Implémenter load_task_embeddings() pour charger les embeddings depuis les signatures.pkl
    • Implémenter rebuild_index() pour reconstruire l'index complet
    • Implémenter verify_index_integrity() pour vérifier la cohérence
    • Requirements: 1.4, 6.1, 6.2, 6.3, 6.4, 6.5
    • Résultat: 40 tâches scannées, 122 embeddings indexés
  • * 1.1 Écrire les property tests pour FAISSIndexBuilder

    • Property 25: Scan complet des tâches
    • Property 26: Génération d'embeddings manquants
    • Property 27: Construction d'index optimisé
    • Property 28: Sauvegarde après reconstruction
    • Property 29: Résilience aux erreurs
    • Validates: Requirements 6.1, 6.2, 6.3, 6.4, 6.5
  • 2. Implémenter le chargement automatique au démarrage TERMINÉ

    • Modifier geniusia2/core/learning_manager.py pour charger les tâches existantes dans __init__
    • Utiliser FAISSIndexBuilder pour reconstruire l'index si vide
    • Ajouter logs pour tracer le chargement
    • Gérer les erreurs de chargement (tâches corrompues)
    • Requirements: 1.1, 1.2, 1.3
    • Résultat: 40 tâches chargées, 672 workflows détectés
  • * 2.1 Écrire les property tests pour chargement automatique

    • Property 1: Index chargé au démarrage
    • Property 2: Ajout immédiat à l'index
    • Property 3: Persistance immédiate
    • Property 4: Reconstruction automatique
    • Validates: Requirements 1.1, 1.2, 1.3, 1.4
  • 3. Corriger l'arrêt propre des processus TERMINÉ

    • Modifier geniusia2/main.py méthode shutdown() pour arrêter explicitement les listeners pynput
    • Ajouter timeout de 5 secondes pour l'arrêt des threads
    • Implémenter arrêt synchrone des threads de capture
    • Forcer l'arrêt si timeout dépassé
    • Vérifier que tous les threads sont bien arrêtés
    • Requirements: 2.1, 2.3, 2.4, 2.5
    • Résultat: Arrêt propre en <5s, aucun processus zombie
  • * 3.1 Écrire les property tests pour arrêt propre

    • Property 6: Arrêt rapide
    • Property 8: Arrêt synchrone des threads
    • Property 9: Stop explicite des listeners
    • Property 10: Threads daemon ou arrêt garanti
    • Validates: Requirements 2.1, 2.3, 2.4, 2.5
  • 4. Checkpoint - Vérifier que le système charge les tâches et s'arrête proprement VALIDÉ

    • Lancer le système avec les 40 tâches existantes
    • Vérifier que l'index FAISS contient les embeddings
    • Tester l'arrêt avec Ctrl+C
    • Vérifier qu'aucun processus zombie ne reste
    • Mesurer la consommation mémoire
    • Résultat: Tous les tests passés, système stable et fonctionnel
  • 5. Créer le MemoryMonitor pour gestion mémoire

    • Créer geniusia2/core/memory_monitor.py
    • Implémenter get_current_memory() pour mesurer la RAM utilisée
    • Implémenter check_threshold() pour vérifier les seuils
    • Implémenter cleanup_caches() pour libérer la mémoire
    • Implémenter free_gpu_memory() pour libérer la mémoire GPU
    • Intégrer dans l'orchestrateur avec vérification périodique
    • Requirements: 4.1, 4.2, 4.3, 4.4, 4.5
  • * 5.1 Écrire les property tests pour MemoryMonitor

    • Property 16: Limite mémoire mode shadow
    • Property 17: Limite mémoire mode assist
    • Property 18: Libération GPU
    • Property 19: Buffer limité
    • Property 20: Alerte mémoire
    • Validates: Requirements 4.1, 4.2, 4.3, 4.4, 4.5
  • 6. Créer le CircuitBreaker pour protection contre boucles infinies

    • Créer geniusia2/core/circuit_breaker.py
    • Implémenter détection d'appels répétitifs (>100/s)
    • Implémenter blocage temporaire (60s)
    • Implémenter reprise progressive avec rate limit
    • Implémenter mode dégradé si 3 breakers actifs
    • Intégrer dans les fonctions critiques (check_for_suggestions, etc.)
    • Requirements: 8.1, 8.2, 8.3, 8.4, 8.5
  • * 6.1 Écrire les property tests pour CircuitBreaker

    • Property 35: Activation circuit breaker
    • Property 36: Log circuit breaker
    • Property 37: Blocage temporaire
    • Property 38: Reprise progressive
    • Property 39: Mode dégradé
    • Validates: Requirements 8.1, 8.2, 8.3, 8.4, 8.5
  • 7. Créer le SystemDiagnostic pour analyse du système

    • Créer geniusia2/core/system_diagnostic.py
    • Implémenter check_faiss_index() pour vérifier l'index
    • Implémenter count_tasks() pour compter les tâches
    • Implémenter check_consistency() pour vérifier cohérence tâches/embeddings
    • Implémenter generate_report() pour créer un rapport JSON
    • Créer script CLI diagnostic_systeme.py à la racine
    • Requirements: 5.1, 5.2, 5.3, 5.4, 5.5
  • * 7.1 Écrire les property tests pour SystemDiagnostic

    • Property 21: Comptage des tâches
    • Property 22: Vérification de cohérence
    • Property 23: Proposition de reconstruction
    • Property 24: Rapport JSON complet
    • Validates: Requirements 5.2, 5.3, 5.4, 5.5
  • 8. Améliorer la validation des embeddings

    • Modifier geniusia2/core/embeddings_manager.py méthode encode_image()
    • Ajouter validation de la norme (doit être > 0)
    • Ajouter validation NaN/Inf
    • Ajouter régénération automatique si invalide
    • Ajouter tests de cohérence (screenshots identiques → similarité > 0.95)
    • Requirements: 7.1, 7.2, 7.3, 7.4, 7.5
  • * 8.1 Écrire les property tests pour validation embeddings

    • Property 30: Validation norme non-nulle
    • Property 31: Validation NaN/Inf
    • Property 32: Cohérence embeddings identiques
    • Property 33: Discrimination embeddings différents
    • Property 34: Régénération sur invalide
    • Validates: Requirements 7.1, 7.2, 7.3, 7.4, 7.5
  • 9. Améliorer le système de suggestions

    • Modifier geniusia2/core/suggestion_manager.py
    • Vérifier que l'index n'est pas vide avant recherche
    • S'assurer que les suggestions incluent nom de tâche et actions
    • Ajouter seuil de confiance minimum (0.7)
    • Ajouter logs pour tracer les suggestions
    • Requirements: 1.5, 3.4, 3.5
  • * 9.1 Écrire les property tests pour suggestions

    • Property 5: Suggestions avec index non-vide
    • Property 14: Suggestions avec confiance élevée
    • Property 15: Contenu des suggestions
    • Validates: Requirements 1.5, 3.4, 3.5
  • 10. Améliorer la détection de patterns

    • Modifier geniusia2/core/learning_manager.py
    • Implémenter détection de 3 actions identiques
    • Créer automatiquement une tâche après détection
    • Indexer immédiatement les embeddings
    • Ajouter logs pour tracer la détection
    • Requirements: 3.1, 3.2, 3.3
  • * 10.1 Écrire les property tests pour détection patterns

    • Property 11: Détection de patterns répétitifs
    • Property 12: Création de tâche après pattern
    • Property 13: Indexation des embeddings
    • Validates: Requirements 3.1, 3.2, 3.3
  • 11. Créer un script de reconstruction manuelle

    • Créer rebuild_faiss_index.py à la racine
    • Utiliser FAISSIndexBuilder pour reconstruire
    • Afficher la progression (tâches traitées)
    • Générer un rapport de reconstruction
    • Sauvegarder l'index et métadonnées
    • Requirements: 6.1, 6.2, 6.3, 6.4, 6.5
  • 12. Créer un script de test de mémoire

    • Créer test_memory_limits.py à la racine
    • Tester mode shadow pendant 10 minutes
    • Tester mode assist pendant 10 minutes
    • Mesurer la consommation mémoire toutes les 30 secondes
    • Vérifier les seuils (1GB shadow, 2GB assist)
    • Générer un rapport de consommation
    • Requirements: 4.1, 4.2
  • 13. Checkpoint final - Validation complète

    • Exécuter le diagnostic complet
    • Reconstruire l'index avec les 19+ tâches
    • Tester les suggestions avec actions répétitives
    • Vérifier l'arrêt propre (pas de zombies)
    • Vérifier la consommation mémoire (<2GB)
    • Vérifier les circuit breakers
    • Ensure all tests pass, ask the user if questions arise.
  • 14. Documentation et nettoyage

    • Créer GUIDE_CORRECTION_FAISS.md expliquant les corrections
    • Documenter l'utilisation du diagnostic
    • Documenter l'utilisation de la reconstruction
    • Mettre à jour le README avec les nouvelles commandes
    • Nettoyer les anciens scripts de diagnostic