7.4 KiB
7.4 KiB
Handoff Codex — P0/P1 Léa, session propre
Date: 2026-06-01 18:15 Europe/ParisContexte: Dom demande qualité top, pas de régression, travail coordonné avec Claude/Qwen et agents.Contrat produit: Léa apprend par démonstration depuis Léa/agent-chat. Dashboard = admin/supervision/QA/promotion. VWB = outil admin/récupération uniquement.
Décisions actives
| Sujet | Décision |
|---|---|
| Apprentissage | Départ depuis Léa (agent-chat, bouton/tray existant), pas bouton dashboard |
| Artefact durable | YAML candidate/, pas stable sans promotion admin |
| Runtime | Shadow existe mais est orphelin ; à raccorder |
| Lecture sémantique | Remarques Claude retenues : OmniParser runtime, Phase 2.5, agents externes, OCR qualité |
| Démo/POC | Pas de CLI opérateur ; CLI seulement dev/test |
| VLM | Pas de mock VLM en démo/POC |
Messages lus
| Auteur | Fichier | Résumé |
|---|---|---|
| Qwen | docs/coordination/inbox_codex/2026-06-01_qwen-to-codex_DIAGNOSTIC-P0-SINGLE-INFLIGHT.md |
Root cause P0 confirmé : early return paused_need_help renvoyait status: ok |
| Claude | docs/coordination/inbox_codex/2026-06-01_1745_claude-to-codex_ADDENDUM-archi-Lea-lecture-semantique-agent-externe.md |
Ajout essentiel : lecture sémantique, OmniParser runtime, ExternalDecisionClient, OCR qualité |
| Qwen | docs/coordination/inbox_codex/2026-06-01_qwen-to-codex_SYNTHESE-Q1-Q4-AGENTS-PARALLELES.md |
Shadow orphelin, persist absent, révocation non effective, micro-warnings |
Dispatchs déposés
| Destinataire | Fichier |
|---|---|
| Claude | docs/coordination/inbox_claude/2026-06-01_1812_codex-to-claude_GO-MAX-AGENTS-P0-P1-lea-quality-no-regression.md |
| Qwen | docs/coordination/inbox_qwen/2026-06-01_1812_codex-to-qwen_GO-MAX-AGENTS-P0-P1-lea-quality-no-regression.md |
Changements locaux effectués
P0 replay single-inflight
Fichier touché : agent_v0/server_v1/api_stream.py
Changement Codex : dans la branche paused_need_help quand la queue est vide avant fin, l'early return renvoie maintenant :
{
"status": "recorded",
"replay_status": replay_state["status"],
"pause_reason": "paused_need_help",
}
Important : api_stream.py avait déjà un énorme diff local avant ce changement. Ne pas revert. Le changement Codex est uniquement ce retour P0.
Warnings dashboard Tester
Fichiers touchés par agent interne Huygens :
web_dashboard/templates/knowledge_base.htmltests/unit/test_dashboard_routes.py
Changements :
- Confirmation avant lancement d'une compétence qui ressemble à Win+R / Exécuter.
- Blocage/alerte du verdict
Validesi aucunestep_resultsni evidence exploitable. - Test HTML ciblé ajouté.
Tests exécutés
| Commande | Résultat |
|---|---|
.venv/bin/python -m py_compile agent_v0/server_v1/api_stream.py |
OK |
.venv/bin/python -m pytest tests/integration/test_replay_single_inflight.py::test_concurrent_dispatch_and_result_no_double_increment -q |
OK |
.venv/bin/python -m pytest tests/integration/test_replay_single_inflight.py -q |
10 passed, 1 xfailed |
.venv/bin/python -m pytest tests/unit/test_dashboard_routes.py -q |
30 passed |
.venv/bin/python -m pytest tests/integration/test_replay_watchdog.py tests/integration/test_replay_resume_preserves_original_action.py::TestReplayResumePreservesOriginalAction::test_resume_dispatch_backfills_retry_pending_for_watchdog -q |
11 passed |
.venv/bin/python -m pytest tests/unit/test_dashboard_routes.py tests/unit/test_competence_verdicts.py tests/unit/test_competence_promotions.py tests/unit/test_competence_to_vwb_preview.py tests/unit/test_competence_catalog_loader.py tests/unit/test_vwb_supervised_pause_runtime.py tests/unit/test_lea_competence_verdict_api.py tests/integration/test_replay_single_inflight.py -q |
75 passed, 1 xfailed |
git diff --check -- agent_v0/server_v1/api_stream.py web_dashboard/templates/knowledge_base.html tests/unit/test_dashboard_routes.py ... |
OK |
Warnings attendus : RequestsDependencyWarning et pynvml FutureWarning.
Agents internes Codex
| Agent | ID | Statut | Résumé |
|---|---|---|---|
| Lorentz | 019e83f4-6f94-77f2-aab4-82395ca62562 |
Terminé | Confirme P0 Qwen ; risque faible ; follow-up : harmoniser payload complet de l'early return |
| Huygens | 019e83f4-b4b4-76b1-a9bc-49a3ec7b93fc |
Terminé | Patch warnings dashboard appliqué ; tests ciblés OK |
| Descartes | 019e83f4-85db-7a73-ba37-6b68938dd725 |
Terminé | Révocation runtime non effective ; /replay/next public ; touch_last_seen() mort ; ré-enrollment admin_revoke à bloquer |
| Plato | 019e83f4-9b9f-7b63-904e-25befda0354a |
Terminé | Confirme faisabilité, mais recommande MVP prudent : Phase 2.5 post-apprentissage, pas OmniParser partout dans le hot path replay |
Résultat agent Plato — architecture sémantique
Constats :
- OmniParser existe (
core/detection/omniparser_adapter.py) mais reste fragile : chemin absolu, fallback souvent silencieux. - ScreenAnalyzer existe et est conceptuellement propre, mais le streaming court-circuite l'initialisation lourde en mode léger.
t2a_decisionest réel et utilisable comme premier agent métier interne.ExternalDecisionClientn'existe pas encore.- Confiance OCR actuelle insuffisante pour autonomie métier : certaines confiances sont approximatives.
- Des bypass
static_result/static_textexistent et doivent être interdits en démo/POC hors tests.
MVP recommandé :
- Garder le P0 replay/click/OCR existant comme chemin principal.
- Ajouter une Phase 2.5 post-apprentissage uniquement : snapshots sémantiques
{screen_id, window_title, screenshot_path, elements[]}. - Demander à l'humain seulement les ambiguïtés utiles.
- Brancher les résultats comme contexte, pas comme prérequis de chaque clic replay.
- Démarrer
ExternalDecisionClientautour det2a_decision, puis adapter HTTP AIVA. - Prioriser OCR critique par régions annotées + escalade humaine si confiance basse.
Prochains P0/P1
| Priorité | Sujet | Action recommandée |
|---|---|---|
| P0 | Revue/commit P0 replay + warnings | Relire diff final, décider commit |
| P0 POC | Révocation effective minimale | Ajouter garde registre côté serveur, retirer /replay/next des publics, appeler touch_last_seen, empêcher ré-enroll admin_revoke |
| P1 | candidate/persist |
Créer endpoint POST /api/v1/lea/competences/candidate/persist + tests YAML |
| P1 | agent-chat -> Shadow |
Raccorder bouton/chat Léa au cycle start/stop/understanding/feedback/build/persist |
| P1 | Lecture sémantique | D'abord Phase 2.5 post-apprentissage + snapshots, puis adapter OmniParser runtime, puis ExternalDecisionClient |
| P1 | Worker VLM | Vérifier/remettre green avant test humain sérieux |
Points de vigilance
- Worktree très sale : ne pas revert les changements non identifiés.
docs/POC/PREREQUIS_DSI_DGX_SPARK_2026-06-01.docxa été modifié par Dom : ne pas toucher.api_stream.pycontient des changements préexistants massifs ; isoler les futurs patches.- Token global : limitation encore forte. Le patch révocation minimale ne protège pas contre spoof d'un autre
machine_idactif avec token global. - Ne pas mettre OmniParser/VLM dans le hot path replay sans mesure perf/VRAM.
- Interdire les bypass
static_result/static_textdans les workflows démo/POC. - Session propre recommandée maintenant : oui, après lecture de ce handoff.
— Codex