feat(competences): extract batch candidates

This commit is contained in:
Dom
2026-05-29 11:25:00 +02:00
parent 4ba426c205
commit e8a0fb0e42
60 changed files with 18176 additions and 0 deletions

View File

@@ -0,0 +1,256 @@
# Handoff Codex - Reprise extract batch Lea patch 3
Date: 2026-05-29 02:05 Europe/Paris
Pilote sortant: Codex
Participants: Dom, Claude, Qwen
Etat: pause volontaire avant changement de session Codex
## Resume court
Le socle `competence courte verifiee` a bien avance. On n'est plus bloque sur `Win+S`: les primitives de base existent, plusieurs competences sont validees en `candidate` ou `observed`, et l'extracteur batch dry-run multi-session fonctionne.
Dernier etat stable:
- patch 3 `fragile anchors` implemente;
- double ACK recu de Claude et Qwen;
- `--apply` encore bloque volontairement;
- prochaine action recommandee: mini patch 3bis pour rejeter `click_addbutton_wait_notepad_exe`, puis patch 4 `--apply` avec `--allow-list` obligatoire.
Ne pas lancer d'ecriture YAML automatique au demarrage de la prochaine session.
## Fichiers principaux
Code:
- `tools/competence_validator.py`
- `tools/extract_competences_from_session.py`
- `tests/unit/test_competence_validator.py`
- `tests/unit/test_extract_competences_from_session.py`
Primitives:
- `data/primitives/key_combo.yaml`
- `data/primitives/text_input_focused.yaml`
- `data/primitives/scroll_view.yaml`
- `data/primitives/click_anchor.yaml`
- `data/primitives/wait_for_state.yaml`
Competences actuelles:
- `data/competences/candidate/open_windows_search.yaml`
- `data/competences/candidate/open_windows_search_taskbar_click.yaml`
- `data/competences/candidate/saisir_texte_word.yaml`
- `data/competences/observed/saisir_requete_recherche.yaml`
- `data/competences/observed/open_application_via_run.yaml`
- `data/competences/observed/scroll_down_pdf_edge.yaml`
Inventaires:
- `docs/coordination/syntheses/2026-05-28_extract_inventory_multi_session.json`
- `docs/coordination/syntheses/2026-05-28_extract_inventory_multi_session.md`
- `docs/coordination/syntheses/2026-05-29_extract_inventory_multi_session_patch3.json`
- `docs/coordination/syntheses/2026-05-29_extract_inventory_multi_session_patch3.md`
## Ce qui est fait
### Validateur
`tools/competence_validator.py` valide maintenant:
- les primitives sous `data/primitives`;
- `primitive_ref`;
- les schemas de parametres;
- l'absence de coordonnees durables;
- les sequences de methodes et indices de trace;
- les sources raw `live_events.jsonl` avec `source_event_format: raw_live_events_jsonl`;
- les traces `wait_state`;
- les variantes de raccourci `ctrl+s`.
Derniere validation connue:
```bash
python3 tools/competence_validator.py data/competences/*/*.yaml data/primitives/*.yaml
# OK: 6 competences + 5 primitives
```
### Extracteur batch dry-run
`tools/extract_competences_from_session.py` est encore volontairement read-only.
Fonctionnalites actuelles:
- lit une session raw `live_events.jsonl` ou streaming JSON;
- propose des candidats en memoire;
- valide les YAML temporaires;
- produit un rapport JSON ou Markdown;
- bloque `--apply` avec exit 2;
- calcule `apply_eligible`, `quality_flags`, duplicats et gaps T2;
- hard-cap `--max-candidates` a 10.
Patch 3 applique:
- `anchor_ref_systray_fragile`;
- `anchor_ref_dom_autogenerated`;
- `anchor_ref_unknown_window`;
- `anchor_ref_too_generic`;
- `anchor_ref_browser_contextual`.
Dernieres validations connues:
```bash
python3 -m pytest tests/unit/test_extract_competences_from_session.py tests/unit/test_competence_validator.py -q
# 72 passed
python3 tools/extract_competences_from_session.py \
--session data/training/live_sessions/DESKTOP-58D5CAC_windows/sess_20260324T165824_55b380/live_events.jsonl \
--machine-id DESKTOP-58D5CAC_windows \
--apply
# exit 2: --apply is not implemented in the dry-run bootstrap
```
## Etat inventaire patch 3
Rapport:
- `docs/coordination/syntheses/2026-05-29_extract_inventory_multi_session_patch3.md`
- `docs/coordination/syntheses/2026-05-29_extract_inventory_multi_session_patch3.json`
Resume:
- sessions_ok: 10 / 10
- candidates_total: 23
- apply_eligible_total: 4
- blocked_total: 19
- rejected_total: 211
Effet important:
- la session Chrome/systray `sess_20260417T215116_316c21` passe de 3 eligible a 0 eligible;
- les trois candidats suspects Chrome/systray sont rejetes automatiquement.
Apply-eligible restants:
1. `click_addbutton_wait_notepad_exe` - conf 0.7, gaps click/OCR, hors batch 1.
2. `key_win_r_wait_explorer_exe` - conf 0.9, no gaps.
3. `key_ctrl_s_wait_notepad_exe` - conf 0.9, no gaps.
4. `key_alt_f4_wait_windowsterminal_exe` - conf 0.9, no gaps.
Batch 1 valide par tout le monde:
- `key_win_r_wait_explorer_exe`
- `key_ctrl_s_wait_notepad_exe`
- `key_alt_f4_wait_windowsterminal_exe`
## Coordination recue
Demandes Codex envoyees:
- `docs/coordination/inbox_claude/2026-05-29_0145_codex-to-claude_DEMANDE-ACK-extract-batch-patch3-fragile-anchor.md`
- `docs/coordination/inbox_qwen/2026-05-29_0145_codex-to-qwen_DEMANDE-ACK-extract-batch-patch3-fragile-anchor.md`
Retours recus:
- `docs/coordination/inbox_codex/2026-05-29_0200_claude-to-codex_ACK-EXTRACT-BATCH-PATCH3-FRAGILE-ANCHOR.md`
- `docs/coordination/inbox_codex/2026-05-29_0200_qwen-to-codex_ACK-patch3-fragile-anchors.md`
Claude:
- ACK complet patch 3;
- valide `--apply` avec contraintes strictes;
- accepte de laisser `click_addbutton_wait_notepad_exe` eligible mais hors batch 1.
Qwen:
- ACK complet patch 3;
- confirme batch 1 limite aux 3 key_combo P3-B;
- demande de rejeter automatiquement `click_addbutton_wait_notepad_exe` avec un code du type `anchor_ref_contextual_button`.
Decision recommandee par Codex sortant:
- suivre Qwen sur ce point, car c'est plus strict et plus sain avant d'ouvrir `--apply`;
- faire un patch 3bis court avant patch 4.
## Prochaine sequence recommandee
### 1. Lire les messages
Au debut de la prochaine session, lire imperativement:
- `docs/coordination/inbox_codex/2026-05-29_0200_claude-to-codex_ACK-EXTRACT-BATCH-PATCH3-FRAGILE-ANCHOR.md`
- `docs/coordination/inbox_codex/2026-05-29_0200_qwen-to-codex_ACK-patch3-fragile-anchors.md`
- `docs/coordination/syntheses/2026-05-29_extract_inventory_multi_session_patch3.md`
### 2. Patch 3bis
But: rejeter automatiquement `click_addbutton_wait_notepad_exe`.
Suggestion:
- ajouter `anchor_ref_contextual_button`;
- cibler les boutons contextuels faibles de type `AddButton`, `add button`, `bouton ajouter`, quand la semantique metier n'est pas prouvee;
- ajouter un test unitaire;
- relancer inventaire patch 3bis;
- demander ACK rapide Claude/Qwen.
Effet attendu:
- `apply_eligible_total` passe de 4 a 3;
- seuls les 3 candidats batch 1 restent eligible.
### 3. Patch 4
Debloquer `--apply` uniquement avec garde-fous:
- `--allow-list <id1,id2,...>` obligatoire;
- pas de `--all`;
- chaque ID doit exister dans le rapport dry-run de la meme session;
- atomicite: si un YAML echoue la validation pre-ecriture, aucun fichier n'est ecrit;
- hard-cap `--max-candidates` conserve.
Tests demandes par Claude:
- `test_apply_requires_allow_list`
- `test_apply_rejects_unknown_id_in_allow_list`
- `test_apply_atomic_rollback_on_validation_failure`
- `test_apply_writes_only_allowed_ids`
- `test_apply_respects_max_candidates_cap`
### 4. Apply batch 1
Commande cible apres double ACK patch 4:
```bash
python3 tools/extract_competences_from_session.py \
--session data/training/live_sessions/DESKTOP-58D5CAC_windows/sess_20260324T165824_55b380/live_events.jsonl \
--machine-id DESKTOP-58D5CAC_windows \
--apply \
--allow-list key_win_r_wait_explorer_exe,key_ctrl_s_wait_notepad_exe,key_alt_f4_wait_windowsterminal_exe
```
Resultat attendu:
- 3 YAML crees dans `data/competences/observed/`;
- revue collective Claude/Qwen;
- promotion candidate par lot seulement apres GO Dom.
## Regles importantes
- Ne pas travailler seul: toujours lire `docs/coordination/inbox_codex` avant une etape structurante.
- Demander ACK/NO-GO explicite a Claude et Qwen.
- Pas d'ecriture automatique sans `--allow-list`.
- Pas de `--all`.
- Pas de promotion `candidate` ou `stable` sans GO Dom.
- Ne pas transformer les gaps OCR/click en preuve visuelle.
- Pas de coordonnees comme savoir durable.
- Ne pas recapturer P0/P1/P2/P3 si les traces offline suffisent.
## Prompt de reprise conseille
Lire ce handoff, puis:
1. ouvrir les deux ACK patch 3 dans `docs/coordination/inbox_codex`;
2. verifier l'etat local avec `git diff -- tools/extract_competences_from_session.py tests/unit/test_extract_competences_from_session.py`;
3. implementer patch 3bis `anchor_ref_contextual_button`;
4. relancer tests + inventaire;
5. demander ACK Claude/Qwen avant patch 4.