veza/chat_exports/veza_ag_chat_2.md

15 KiB
Raw Permalink Blame History

Chat Conversation

Note: This is purely the output of the chat conversation and does not contain any raw data, codebase snippets, etc. used to generate the output.

User Input

🛰️ MISSION ANTIGRAVITY PHASE 2 : HARDENING, P2 & NETTOYAGE FINAL

Tu reprends le travail exactement là où tu las laissé lors de la première mission (REPORT_STATUS_2025_12_06.md + remédiation P0/P1 déjà effectuée).

La branche active est déjà : remediation/full_audit_fix

Elle contient notamment les commits suivants (entre autres) :

  • fix(backend-worker): replace blocking sleep with non-blocking scheduler
  • chore(backend): remove legacy migrations and main file
  • fix(stream-processor): replace unsafe abort with graceful join to drain events
  • feat(chat-server): implement 60s inactivity heartbeat timeout
  • feat(chat-server): implement graceful shutdown with OS signal handling
  • fix(backend-tests): enable room_handler_test and resolve metric collisions
  • security(chat-server): implement auth middleware and permission checks for HTTP API
  • chore(backend-tests): remove obsolete metrics and profile/system_metrics tests
  • docs(remediation): add audit report, remediation plan and changelog skeleton

Tu dois maintenant enchaîner avec la PHASE 2, centrée sur :

  • la complétion de tous les P2 du rapport initial,
  • le hardening structurel (queues persistées, monitoring réel),
  • le nettoyage sérieux des TODO/FIXME/HACK,
  • lalignement final de la documentation avec létat réel du code.

📚 1. CONTEXTE & LECTURES OBLIGATOIRES

Avant toute action, relis et croise systématiquement :

  • REPORT_STATUS_2025_12_06.md (rapport initial complet)
  • REMEDIATION_PLAN.md
  • POST_REMEDIATION_REPORT.md
  • CHANGELOG.md
  • Le log Git de la branche remediation/full_audit_fix
  • Les fichiers clés suivants :

Backend Go (veza-backend-api/)

  • internal/workers/job_worker.go
  • internal/workers/... (toute la mécanique de jobs)
  • internal/metrics/, internal/monitoring/, internal/middleware/metrics.go
  • internal/handlers/*.go + tests associés
  • migrations/ (V1, sans migrations_legacy)
  • Tout fichier mentionné dans le rapport initial comme contenant un TODO/FIXME/HACK

Chat Server (veza-chat-server/)

  • src/main.rs
  • src/security/*
  • src/websocket/*
  • src/monitoring.rs ou équivalent
  • Modules de métriques / health-check si présents

Stream Server (veza-stream-server/)

  • src/core/processing/processor.rs
  • src/core/* (encoder, sync, tracker…)
  • Tout fichier marqué comme "code mort" ou "TODO implémentation réelle"
  • Modules de métriques / monitoring

🎯 2. OBJECTIFS PHASE 2

OBJECTIF 1 Vérification & Clôture des P0/P1

  1. Vérifier que tous les P0 & P1 du rapport REPORT_STATUS_2025_12_06.md sont réellement corrigés.
    • Pour chaque P0/P1 :

      • Confirmer dans le code que la correction est réelle et robuste.
      • Lier chaque correction au commit correspondant.
    • Mettre à jour POST_REMEDIATION_REPORT.md avec un tableau :

      ID Problème Description Statut Commit(s) Commentaire
    • Compléter/mettre à jour CHANGELOG.md pour refléter ces corrections.

OBJECTIF 2 Implémentation complète des P2

À partir de la SECTION E & F du rapport, traiter tous les P2 suivants (ou équivalents) :

  1. Backend Workers Queue persistée

    • Remplacer la queue purement in-memory par une solution persistée :
      • soit table PostgreSQL jobs (id UUID, payload JSONB, status, run_at, retry_count…)
      • soit Redis (liste + metadata), en fonction de ce qui est le plus cohérent avec larchitecture actuelle.
    • Garantir que :
      • aucun job nest perdu en cas de redémarrage,
      • le retry est piloté par run_at ou équivalent,
      • les workers sont idempotents autant que possible.
  2. Monitoring & métriques réelles (Chat & Stream)

    • Remplacer les métriques “dummy” / TODO par de vraies métriques :
      • nombre de connexions WebSocket actives
      • backlog dévénements
      • jobs stream en cours / terminés / en échec
      • erreurs FFmpeg, temps moyen par transcoding, etc.
    • Ajouter des endpoints ou hooks adaptés pour Prometheus ou loutil choisi.
    • Vérifier que les métriques sont calculées dans un chemin non bloquant.
  3. Code mort du Stream Server

    • Identifier toutes les unités de code “fantôme” (ex: anciens modules dencoder/sync non utilisés).
    • Décider pour chaque cas :
      • soit suppression pure,
      • soit transformation en docs/ARCHIVE_STREAM_ARCH.md avec explication.
    • Nettoyer le code de façon à ce que la base soit strictement alignée avec le pipeline actuel.
  4. Todo/FIXME/HACK sweep

    • Scanner lensemble du repo (en excluant .git, target, node_modules, veza-docs, docs archivés) pour :

      • TODO, FIXME, XXX, HACK, NOT IMPLEMENTED, P0, P1, etc.
    • Construire un tableau dans un nouveau fichier :

      • docs/TODO_TRIAGE_VEZA.md

      Format :

      | Fichier | Ligne | Tag | Description courte | Priorité (P1/P2/P3) | Décision (Fix now / Later / Wontfix) |

    • Pour tous les items classés P1/P2, soit :

      • les corriger immédiatement (avec commit dédié),
      • soit les documenter de façon explicite (justification + ticket futur).
  5. Nettoyage documentation obsolète

    • Identifier tous les documents en contradiction avec létat actuel du code :
      • anciens audits,
      • anciens plans de migrations,
      • docs ORIGIN qui décrivent des APIs / flows supprimés ou profondément modifiés.
    • Pour chaque doc obsolète :
      • soit le mettre dans un dossier docs/ARCHIVE/ avec un en-tête très clair :

        “ARCHIVÉ NE PAS UTILISER POUR LES DÉVELOPPEMENTS COURANTS”

      • soit le mettre à jour pour refléter létat réel (si utile).
    • Mettre à jour REMEDIATION_PLAN.md et POST_REMEDIATION_REPORT.md pour consigner ce nettoyage documentaire.

🛠️ 3. FORMAT EXIGÉ POUR CHAQUE TÂCHE P2

Pour chaque problème / fonctionnalité P2 traité, utilise ce pattern dans ton raisonnement et tes sorties :

🔧 Tâche P2.n — [Titre clair]

  • Domaines : (Backend / Chat / Stream / Docs / Monitoring)
  • Localisation fichier(s) :
  • Contexte (issu du rapport ou des TODO) :
  • Problème exact :
  • Design de la solution (schéma, structures, flux) :
  • Implémentation proposée (pseudo-code + extraits de code) :
  • Tests à exécuter :
    • commandes go test, cargo test, etc.
    • éventuels tests manuels (ex: curl / ws)
  • Commandes à lancer (build, fmt, lint) :
  • Message de commit proposé, par ex :
    • feat(backend-worker): persist job queue in postgres
    • feat(monitoring): expose real ws connection metrics
    • chore(stream): remove dead encoder prototype
    • chore(docs): archive obsolete migration drafts

Ensuite, applique ce workflow :

  1. Proposer le plan précis
  2. Appliquer les modifications
  3. Montrer le diff
  4. Lancer les tests & build
  5. Committer avec le message prévu
  6. Mettre à jour la doc concernée (POST_REMEDIATION_REPORT, CHANGELOG, TODO_TRIAGE…)

🔁 4. CONTRAINTE : 1 PROBLÈME = 1 COMMIT

Tu dois respecter STRICTEMENT :

  • Un problème / feature → un commit isolé, lisible, conventionnel.
  • Pas de “commit fourre-tout” mélangeant worker, stream et docs.
  • Chaque commit doit être traçable au problème initial (rapport, TODO, etc.).

📦 5. SORTIE FINALE ATTENDUE

À la fin de cette PHASE 2, je veux obtenir :

  1. POST_REMEDIATION_REPORT.md mis à jour, avec :

    • P0/P1 cochés et référencés,
    • P2 structurés, avec statut précis.
  2. CHANGELOG.md enrichi avec toutes les entrées de cette phase.

  3. docs/TODO_TRIAGE_VEZA.md avec la cartographie complète des TODO/FIXME/HACK.

  4. Une base de code :

    • sans code mort majeur dans le stream server,
    • avec une queue de jobs backend persistée,
    • avec des métriques réelles pour chat & stream,
    • avec une documentation alignée sur létat réel.
  5. Une branche remediation/full_audit_fix prête à être merge, où les P0/P1 sont clos et les P2 critiques ont été traités ou explicitement documentés.

Edited relevant file

User accepted the command git log --oneline -n 20

User accepted the command ls -F docs/

*Read resource from /home/senke/Documents/veza/REPORT_STATUS_2025_12_06.md *

*Read resource from /home/senke/Documents/veza/POST_REMEDIATION_REPORT.md *

*Read resource from /home/senke/Documents/veza/CHANGELOG.md *

*Viewed REPORT_STATUS_2025_12_06.md *

*Viewed POST_REMEDIATION_REPORT.md *

*Viewed CHANGELOG.md *

*Viewed go.mod *

*Viewed job_worker.go *

*Listed directory migrations *

Edited relevant file

User Input

This is a system-generated message that is sent due to the user's review policy. Proceed with the decision that you think is the most optimal here.

Edited relevant file

Edited relevant file

User accepted the command go mod tidy

Edited relevant file

User accepted the command go test -v ./internal/workers/...

*Viewed thumbnail_job_test.go *

*Viewed email_job_test.go *

Edited relevant file

Edited relevant file

Edited relevant file

User accepted the command go test -v ./internal/workers/...

*Viewed thumbnail_job_test.go *

Edited relevant file

User accepted the command go test -v ./internal/workers/...

Edited relevant file

User accepted the command go test -v ./internal/workers/...

Checked command status

*Viewed job_worker_test.go *

Edited relevant file

User accepted the command go test -v ./internal/workers/...

Checked command status

User accepted the command git add veza-backend-api/internal/workers/ veza-backend-api/migrations/060_job_queue.sql

User accepted the command git commit -m "feat(backend-worker): persist job queue in postgres"

Edited relevant file

*Listed directory src *

*Viewed monitoring.rs *

*Viewed Cargo.toml *

Semantic searched codebase

Searched filesystem

User accepted the command cargo add sysinfo

*Viewed mod.rs *

Semantic searched codebase

Edited relevant file

User accepted the command cargo check

Checked command status

*Viewed main.rs *

Edited relevant file

User accepted the command cargo check

Edited relevant file

User accepted the command cargo check

Checked command status

User accepted the command cargo check

*Viewed lib.rs *

Edited relevant file

User accepted the command cargo check

Checked command status

*Viewed monitoring.rs *

User accepted the command cargo check > check_output.txt 2>&1

*Viewed check_output.txt *

Edited relevant file

User accepted the command cargo check

Checked command status

User accepted the command cargo check > check_output_2.txt 2>&1

*Viewed check_output_2.txt *

Edited relevant file

User accepted the command cargo check

Checked command status

*Viewed handler.rs *

Edited relevant file

User accepted the command cargo check

Edited relevant file

User accepted the command cargo check

Checked command status

Edited relevant file

User accepted the command cargo check

*Viewed handler.rs *

Edited relevant file

User accepted the command cargo check

Edited relevant file

User accepted the command cargo check

Semantic searched codebase

*Viewed main.rs *

Semantic searched codebase

*Viewed main.rs *

Grep searched codebase

*Viewed main.rs *

Edited relevant file

User accepted the command cargo check

Edited relevant file

Searched filesystem

Grep searched codebase

*Viewed mod.rs *

*Viewed encoding_service.rs *

*Viewed encoder.rs *

*Viewed encoding_pool.rs *

*Viewed job.rs *

*Viewed mod.rs *

Edited relevant file

Edited relevant file

User accepted the command rm /home/senke/Documents/veza/veza-stream-server/src/core/encoder.rs

User accepted the command cargo check

Edited relevant file

Checked command status

*Listed directory veza *

User accepted the command cargo check

Checked command status

*Listed directory veza-stream-server *

*Viewed POST_REMEDIATION_REPORT.md *

*Viewed REPORT_STATUS_2025_12_06.md *

User accepted the command mkdir -p docs

Edited relevant file

User accepted the command echo "Updating POST_REMEDIATION_REPORT.md"

Edited relevant file

*Viewed POST_REMEDIATION_REPORT.md *

*Viewed POST_REMEDIATION_REPORT.md *

Edited relevant file