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,124 @@
schema_version: 1
id: key_alt_f4_wait_windowsterminal_exe
name: Key alt f4 wait windowsterminal exe
version: 1
learning_state: candidate
intent:
fr: fermer la fenêtre Bloc-notes courante avec Alt+F4
parameters: {}
preconditions:
- id: source_session_available
kind: source_trace_present
source_session: sess_20260324T165824_55b380
methods:
- kind: key_combo
primitive_ref: key_combo
parameters:
keys: &id001
- alt
- f4
keys: *id001
description: 'Raccourci clavier observe a l''event #72'
id: step_1_key_combo
observed: true
trace_source: live_events.jsonl
trace_event_indices:
- 72
- id: step_2_wait_state
kind: wait_state
primitive_ref: wait_for_state
parameters:
expected_state:
window_title_in:
- C:\Windows\system32\cmd.exe
process_active: WindowsTerminal.exe
timeout_ms: 5000
poll_interval_ms: 250
evidence_required: window_or_process
description: Attente de l'etat C:\Windows\system32\cmd.exe
observed: true
trace_source: live_events.jsonl
trace_event_indices:
- 73
success_marker:
mode: all_of
timeout_ms: 5000
markers:
- kind: active_window_title_in
values:
- C:\Windows\system32\cmd.exe
- kind: active_process_name_is
value: WindowsTerminal.exe
supervised_requires:
- kind: human_validation
required_for: replay_verified
failure_message_template:
intention: fermer la fenêtre Bloc-notes courante (`test_hybride.txt Bloc-notes`) avec Alt+F4
attendu: voir Bloc-notes disparaître et la fenêtre Terminal (`C:\Windows\system32\cmd.exe` / WindowsTerminal.exe) devenir active
vu: '{observed_human_state}'
demande: fermer la fenêtre Bloc-notes courante puis me rendre la main
chain_refs:
source_session: sess_20260324T165824_55b380
machine_id: DESKTOP-58D5CAC_windows
cleaned_segment:
status: documented_offline
source_event_format: raw_live_events_jsonl
keep_event_indices:
- 70
- 71
- 72
- 73
method_event_indices:
- 72
- 73
success_event_indices:
- 73
excluded_event_indices: []
stop_before_event_index: 74
stop_before:
- end_of_extracted_candidate_segment
ignored_after_success: []
notes:
- 'Event #72 detecte comme key_combo.'
- 'Event #73 detecte comme wait_for_state durable.'
workflow_pipeline_id: null
graph_node_id: null
faiss_state_signatures: []
target_memory_keys: []
dashboard_knowledge_visible: false
live_events_path: data/training/live_sessions/DESKTOP-58D5CAC_windows/sess_20260324T165824_55b380/live_events.jsonl
promotion:
history:
- at: '2026-05-29T11:10:42+02:00'
from: observed
to: candidate
by: Dom
reason: 'GO explicite: passage en candidate pour lancer les tests humains, avec ajustements runtime attendus.'
candidate_requires:
- cleaned_segment_validated
- method_trace_present
- success_marker_defined
- failure_message_template_valid
- primitive_ref_satisfied
supervised_requires:
- replay_verified_once
- human_validation
stable_requires:
min_successes: 3
distinct_contexts: 3
max_unexplained_failures: 0
t2_known_gaps:
- id: alt_f4_confirmation_dialog_not_covered
description: Le success_marker observed attend Terminal/cmd.exe après fermeture de Bloc-notes; un dialogue de confirmation Bloc-notes peut bloquer la fermeture.
impact: Le replay runtime doit gérer le dialogue de confirmation ou distinguer ce cas avant promotion supervised/stable.
proposed_resolution: Tester en supervision humaine; si le dialogue apparaît, élargir le success_marker ou ajouter une étape de traitement du dialogue.
acted_by: Dom
acted_at: '2026-05-29T11:10:42+02:00'
generalisation:
seen_contexts: []
method_success_rate: {}
variance_log: []
failure_log: []
created_at: '2026-05-29T07:45:33+00:00'
last_updated_at: '2026-05-29T11:10:42+02:00'
methods_execution: sequence

View File

@@ -0,0 +1,124 @@
schema_version: 1
id: key_ctrl_s_wait_notepad_exe
name: Key ctrl s wait notepad exe
version: 1
learning_state: candidate
intent:
fr: executer l'action observee puis attendre Enregistrer sous
parameters: {}
preconditions:
- id: source_session_available
kind: source_trace_present
source_session: sess_20260324T165824_55b380
methods:
- kind: key_combo
primitive_ref: key_combo
parameters:
keys: &id001
- ctrl
- s
keys: *id001
description: 'Raccourci clavier observe a l''event #56'
id: step_1_key_combo
observed: true
trace_source: live_events.jsonl
trace_event_indices:
- 56
- id: step_2_wait_state
kind: wait_state
primitive_ref: wait_for_state
parameters:
expected_state:
window_title_in:
- Enregistrer sous
process_active: Notepad.exe
timeout_ms: 5000
poll_interval_ms: 250
evidence_required: window_or_process
description: Attente de l'etat Enregistrer sous
observed: true
trace_source: live_events.jsonl
trace_event_indices:
- 57
success_marker:
mode: all_of
timeout_ms: 5000
markers:
- kind: active_window_title_in
values:
- Enregistrer sous
- kind: active_process_name_is
value: Notepad.exe
supervised_requires:
- kind: human_validation
required_for: replay_verified
failure_message_template:
intention: atteindre la fenetre Enregistrer sous
attendu: voir Enregistrer sous au premier plan
vu: '{observed_human_state}'
demande: ouvrir Enregistrer sous puis me rendre la main
chain_refs:
source_session: sess_20260324T165824_55b380
machine_id: DESKTOP-58D5CAC_windows
cleaned_segment:
status: documented_offline
source_event_format: raw_live_events_jsonl
keep_event_indices:
- 54
- 55
- 56
- 57
method_event_indices:
- 56
- 57
success_event_indices:
- 57
excluded_event_indices: []
stop_before_event_index: 58
stop_before:
- end_of_extracted_candidate_segment
ignored_after_success: []
notes:
- 'Event #56 detecte comme key_combo.'
- 'Event #57 detecte comme wait_for_state durable.'
workflow_pipeline_id: null
graph_node_id: null
faiss_state_signatures: []
target_memory_keys: []
dashboard_knowledge_visible: false
live_events_path: data/training/live_sessions/DESKTOP-58D5CAC_windows/sess_20260324T165824_55b380/live_events.jsonl
promotion:
history:
- at: '2026-05-29T11:10:42+02:00'
from: observed
to: candidate
by: Dom
reason: 'GO explicite: passage en candidate pour lancer les tests humains, avec ajustements runtime attendus.'
candidate_requires:
- cleaned_segment_validated
- method_trace_present
- success_marker_defined
- failure_message_template_valid
- primitive_ref_satisfied
supervised_requires:
- replay_verified_once
- human_validation
stable_requires:
min_successes: 3
distinct_contexts: 3
max_unexplained_failures: 0
t2_known_gaps:
- id: save_as_requires_unsaved_notepad_document
description: Ctrl+S n'ouvre Enregistrer sous que si le document Bloc-notes n'a pas encore de chemin de sauvegarde.
impact: Sur un document déjà nommé, le replay peut sauvegarder silencieusement et le wait_state échouera.
proposed_resolution: Préparer un document Bloc-notes non enregistré et modifié avant replay supervisé, ou définir une compétence séparée pour la sauvegarde silencieuse.
acted_by: Dom
acted_at: '2026-05-29T11:10:42+02:00'
generalisation:
seen_contexts: []
method_success_rate: {}
variance_log: []
failure_log: []
created_at: '2026-05-29T07:45:33+00:00'
last_updated_at: '2026-05-29T11:10:42+02:00'
methods_execution: sequence

View File

@@ -0,0 +1,124 @@
schema_version: 1
id: key_win_r_wait_explorer_exe
name: Key win r wait explorer exe
version: 1
learning_state: candidate
intent:
fr: executer l'action observee puis attendre Exécuter
parameters: {}
preconditions:
- id: source_session_available
kind: source_trace_present
source_session: sess_20260324T165824_55b380
methods:
- kind: key_combo
primitive_ref: key_combo
parameters:
keys: &id001
- win
- r
keys: *id001
description: 'Raccourci clavier observe a l''event #3'
id: step_1_key_combo
observed: true
trace_source: live_events.jsonl
trace_event_indices:
- 3
- id: step_2_wait_state
kind: wait_state
primitive_ref: wait_for_state
parameters:
expected_state:
window_title_in:
- Exécuter
process_active: explorer.exe
timeout_ms: 5000
poll_interval_ms: 250
evidence_required: window_or_process
description: Attente de l'etat Exécuter
observed: true
trace_source: live_events.jsonl
trace_event_indices:
- 4
success_marker:
mode: all_of
timeout_ms: 5000
markers:
- kind: active_window_title_in
values:
- Exécuter
- kind: active_process_name_is
value: explorer.exe
supervised_requires:
- kind: human_validation
required_for: replay_verified
failure_message_template:
intention: atteindre la fenetre Exécuter
attendu: voir Exécuter au premier plan
vu: '{observed_human_state}'
demande: ouvrir Exécuter puis me rendre la main
chain_refs:
source_session: sess_20260324T165824_55b380
machine_id: DESKTOP-58D5CAC_windows
cleaned_segment:
status: documented_offline
source_event_format: raw_live_events_jsonl
keep_event_indices:
- 1
- 2
- 3
- 4
method_event_indices:
- 3
- 4
success_event_indices:
- 4
excluded_event_indices: []
stop_before_event_index: 5
stop_before:
- end_of_extracted_candidate_segment
ignored_after_success: []
notes:
- 'Event #3 detecte comme key_combo.'
- 'Event #4 detecte comme wait_for_state durable.'
workflow_pipeline_id: null
graph_node_id: null
faiss_state_signatures: []
target_memory_keys: []
dashboard_knowledge_visible: false
live_events_path: data/training/live_sessions/DESKTOP-58D5CAC_windows/sess_20260324T165824_55b380/live_events.jsonl
promotion:
history:
- at: '2026-05-29T11:10:42+02:00'
from: observed
to: candidate
by: Dom
reason: 'GO explicite: passage en candidate pour lancer les tests humains, avec ajustements runtime attendus.'
candidate_requires:
- cleaned_segment_validated
- method_trace_present
- success_marker_defined
- failure_message_template_valid
- primitive_ref_satisfied
supervised_requires:
- replay_verified_once
- human_validation
stable_requires:
min_successes: 3
distinct_contexts: 3
max_unexplained_failures: 0
t2_known_gaps:
- id: run_dialog_preexisting_false_positive
description: Si le dialogue Exécuter est déjà ouvert avant replay, le success_marker peut être satisfait sans action utile.
impact: Le protocole runtime doit vérifier l'absence du dialogue Exécuter en état initial.
proposed_resolution: Exiger un état initial sans dialogue Exécuter, ou traiter ce cas comme already_satisfied explicitement.
acted_by: Dom
acted_at: '2026-05-29T11:10:42+02:00'
generalisation:
seen_contexts: []
method_success_rate: {}
variance_log: []
failure_log: []
created_at: '2026-05-29T07:45:33+00:00'
last_updated_at: '2026-05-29T11:10:42+02:00'
methods_execution: sequence

View File

@@ -0,0 +1,130 @@
schema_version: 1
id: open_windows_search
name: Ouvrir la recherche Windows
version: 1
learning_state: candidate
intent:
fr: ouvrir la recherche Windows
parameters: {}
preconditions:
- id: windows_session_active
kind: heartbeat_present
max_age_ms: 3000
- id: no_blocking_system_dialog
kind: not_window_title_matches
pattern: "^(UAC|Windows Security|SmartScreen).*"
- id: search_not_already_open
kind: not_active_window
any_of:
- title_in: ["Rechercher", "Search"]
- process_active: SearchHost.exe
on_violation: already_satisfied
methods:
- id: keyboard_win_s
kind: key_combo
primitive_ref: key_combo
parameters:
keys: ["win", "s"]
keys: ["win", "s"]
observed: true
trace_source: live_events.jsonl
gesture_ref: null
- id: keyboard_win
kind: key_combo
primitive_ref: key_combo
parameters:
keys: ["win"]
keys: ["win"]
observed: false
allowed_fallback: true
gesture_ref: sys_start_menu
success_marker:
mode: any_of
timeout_ms: 5000
markers:
- kind: active_window_title_in
values: ["Rechercher", "Search"]
- kind: active_process_name_is
value: SearchHost.exe
supervised_requires:
- kind: ocr_contains
text: Rechercher
region_hint: search_panel
evidence_state: hypothesis_offline
required_for: supervised_or_replay_verified
failure_message_template:
intention: ouvrir la recherche Windows
attendu: voir la fenetre Rechercher avec un champ de saisie actif
vu: "{observed_human_state}"
demande: ouvrir la recherche Windows puis me rendre la main
chain_refs:
source_session: sess_20260527T185155_98ad9a
machine_id: DESKTOP-58D5CAC_windows
streaming_session_path: data/training/live_sessions/streaming_sessions/sess_20260527T185155_98ad9a.json
live_events_path: data/training/live_sessions/DESKTOP-58D5CAC_windows/sess_20260527T185155_98ad9a/live_events.jsonl
cleaned_segment:
status: documented_offline
keep_event_indices: [0, 1, 2, 3, 4, 7]
method_event_indices: [3]
success_event_indices: [7]
excluded_event_indices: [5, 6]
stop_before_event_index: 8
stop_before:
- continuing_search_text_input_after_success
- systray_interaction
- pythonw_focus
ignored_between_method_and_success:
- text_input_search_query_fragment
- text_input_search_query_space
ignored_after_success:
- text_input_search_query
- explorer_systray_overflow
- pythonw_unknown_window
notes:
- "Le focus Rechercher/SearchHost.exe apparait juste avant key_combo a cause de la capture sur release."
- "La preuve de succes durable est le heartbeat post-action #7, strictement apres key_combo #3."
- "Le segment observe est non contigu: les text_input #5/#6 appartiennent a la competence suivante et sont exclus."
- "Le segment observe s'arrete avant la suite de saisie et les clics systray/pythonw."
workflow_pipeline_id: null
graph_node_id: null
faiss_state_signatures: []
target_memory_keys: []
dashboard_knowledge_visible: false
promotion:
history:
- at: "2026-05-28T08:28:36+02:00"
from: observed
to: candidate
by: Dom
reason: "GO explicite apres revue finale Claude/Qwen du socle competences courtes."
candidate_requires:
- cleaned_segment_validated
- method_trace_present
- success_marker_defined
- failure_message_template_valid
supervised_requires:
- replay_verified_once
- success_marker_matched_after_action
- human_validation
stable_requires:
min_successes: 3
distinct_contexts: 3
max_unexplained_failures: 0
generalisation:
seen_contexts: []
method_success_rate: {}
variance_log: []
failure_log: []
created_at: "2026-05-27T18:51:55+02:00"
last_updated_at: "2026-05-28T08:28:36+02:00"

View File

@@ -0,0 +1,170 @@
schema_version: 1
id: open_windows_search_taskbar_click
name: Ouvrir la recherche Windows par clic barre des taches
version: 1
learning_state: candidate
intent:
fr: ouvrir la recherche Windows en cliquant le bouton Rechercher de la barre des taches
parameters: {}
preconditions:
- id: windows_session_active
kind: heartbeat_present
max_age_ms: 3000
- id: search_not_already_open
kind: not_active_window
any_of:
- title_in: ["Rechercher", "Search"]
- process_active: SearchHost.exe
on_violation: already_satisfied
- id: taskbar_search_button_available
kind: ui_anchor_hint
anchor_ref:
text: Rechercher
role: bouton
automation_id: SearchButton
parent_hint: Barre des taches
methods_execution: sequence
methods:
- id: step_1_click_taskbar_search_button
kind: click
primitive_ref: click_anchor
parameters:
anchor_ref:
text: Rechercher
role: bouton
automation_id: SearchButton
parent_hint: Barre des taches
button: left
click_count: 1
description: "Clic gauche sur le bouton Rechercher de la barre des taches"
observed: true
trace_source: live_events.jsonl
trace_event_indices: [2]
- id: step_2_wait_rechercher_visible
kind: wait_state
primitive_ref: wait_for_state
parameters:
expected_state:
window_title_in: ["Rechercher", "Search"]
process_active: SearchHost.exe
timeout_ms: 3000
poll_interval_ms: 250
evidence_required: window_or_process
description: "Attente de l'ouverture effective de la fenetre Rechercher"
observed: true
trace_source: live_events.jsonl
trace_event_indices: [3]
success_marker:
mode: all_of
timeout_ms: 5000
markers:
- kind: active_window_title_in
values: ["Rechercher", "Search"]
- kind: active_process_name_is
value: SearchHost.exe
supervised_requires:
- kind: uia_anchor_name_is
text: Rechercher
role: bouton
automation_id: SearchButton
evidence_state: observed_raw_live_events
required_for: replay_verified
- kind: ocr_contains
text: Rechercher
region_hint: taskbar_search_button
evidence_state: hypothesis_offline
required_for: supervised_or_replay_verified
failure_message_template:
intention: ouvrir la recherche Windows avec le bouton Rechercher de la barre des taches
attendu: voir la fenetre Rechercher au premier plan
vu: "{observed_human_state}"
demande: cliquer sur le bouton Rechercher de la barre des taches, puis me rendre la main
chain_refs:
source_session: sess_20260417T133324_30c2d0
machine_id: windows_vm
streaming_session_path: data/training/live_sessions/streaming_sessions/sess_20260417T133324_30c2d0.json
live_events_path: data/training/live_sessions/windows_vm/sess_20260417T133324_30c2d0/live_events.jsonl
cleaned_segment:
status: documented_offline
source_event_format: raw_live_events_jsonl
keep_event_indices: [0, 1, 2, 3]
method_event_indices: [2, 3]
success_event_indices: [3]
excluded_event_indices: [4]
stop_before_event_index: 5
stop_before:
- continuing_search_text_input_after_success
- search_result_click
- later_notepad_and_systray_activity
ignored_after_success:
- text_input_search_query
- click_search_result
- later_notepad_actions
- systray_stop_sequence
notes:
- "Les indices de ce segment sont les indices raw zero-based du live_events.jsonl, pas les indices du streaming condense."
- "Raw live_events #2 est le mouse_click gauche sur le bouton Rechercher."
- "Raw live_events #2 contient uia_snapshot name=Rechercher, control_type=bouton, automation_id=SearchButton, parent_path Barre des taches."
- "Raw live_events #3 est le window_focus_change durable vers Rechercher/SearchHost.exe, avant le text_input humain raw #5."
- "Le wait_state observe sur raw #3 remplace l'ancien marqueur streaming #1 base sur text_input humain."
- "Le pos source [466, 767] reste uniquement dans la trace; aucune coordonnee durable n'est copiee dans ce YAML."
workflow_pipeline_id: null
graph_node_id: null
faiss_state_signatures: []
target_memory_keys: []
dashboard_knowledge_visible: false
promotion:
history:
- at: "2026-05-28T17:16:49+02:00"
from: observed
to: candidate
by: Dom
reason: "GO explicite apres correction A1 raw #2/#3 et ACK Claude/Qwen."
candidate_requires:
- cleaned_segment_validated
- method_trace_present
- success_marker_defined
- failure_message_template_valid
- primitive_ref_satisfied
- click_trace_validated
- wait_state_trace_validated
supervised_requires:
- replay_verified_once
- success_marker_matched_after_action
- anchor_resolved_runtime
- human_validation
stable_requires:
min_successes: 3
distinct_contexts: 3
max_unexplained_failures: 0
t2_known_gaps:
- id: click_target_semantics_not_observed_offline
description: "La trace brute contient un uia_snapshot Rechercher/SearchButton, mais le validateur offline actuel ne rejoue pas la resolution d'ancre."
impact: "Le niveau T2 doit verifier que click_anchor retrouve bien le bouton Rechercher au runtime, sans dependre du pos source."
proposed_resolution: "Ajouter replay supervise ou resolution UIA/OCR runtime avant promotion supervised."
acted_by: Dom
acted_at: "2026-05-28T15:50:00+02:00"
- id: no_ocr_offline
description: "Aucune preuve OCR offline du libelle Rechercher n'est produite dans cette validation."
impact: "La cible est supportee par UIA brut et par l'effet SearchHost.exe, mais pas par OCR dans le validateur actuel."
proposed_resolution: "Verifier par OCR ou replay supervise avant promotion supervised."
acted_by: Dom
acted_at: "2026-05-28T15:50:00+02:00"
generalisation:
seen_contexts: []
method_success_rate: {}
variance_log: []
failure_log: []
created_at: "2026-05-28T15:50:00+02:00"
last_updated_at: "2026-05-28T17:16:49+02:00"

View File

@@ -0,0 +1,128 @@
schema_version: 1
id: saisir_texte_word
name: Saisir du texte dans Word
version: 1
learning_state: candidate
intent:
fr: saisir du texte dans un document Word actif
parameters:
text: "Ceci est un test word !"
preconditions:
- id: word_document_active
kind: active_window
any_of:
- title_in: ["Document2 - Word"]
- process_active: WINWORD.EXE
methods:
- id: text_input_word_concat
kind: text_input
primitive_ref: text_input_focused
parameters:
text: "Ceci est un test word !"
concat_rule: concat_in_order
description: "Saisie texte par fragments dans un document Word deja focus"
observed: true
trace_source: live_events.jsonl
concat_rule: "join(selected text_input events in segment)"
reconstructed_text: "Ceci est un test word !"
success_marker:
mode: all_of
timeout_ms: 5000
markers:
- kind: active_window_title_in
values: ["Document2 - Word"]
- kind: active_process_name_is
value: WINWORD.EXE
- kind: text_input_reconstructed_equals
value: "Ceci est un test word !"
evidence_source: trace_text_input_concat
supervised_requires:
- kind: ocr_contains
text: "Ceci est un test word !"
region_hint: document_body
evidence_state: hypothesis_offline
required_for: supervised_or_replay_verified
failure_message_template:
intention: saisir du texte dans un document Word actif
attendu: voir le texte attendu apparaitre dans le corps du document Word
vu: "{observed_human_state}"
demande: placer le curseur dans le document Word puis saisir le texte attendu
chain_refs:
source_session: sess_20260330T175739_6e190b
machine_id: DESKTOP-58D5CAC_windows
streaming_session_path: data/training/live_sessions/streaming_sessions/sess_20260330T175739_6e190b.json
live_events_path: data/training/live_sessions/DESKTOP-58D5CAC_windows/sess_20260330T175739_6e190b/live_events.jsonl
cleaned_segment:
status: documented_offline
keep_event_indices: [34, 35, 36, 37, 38, 39, 40]
method_event_indices: [34, 35, 37, 38, 39]
success_event_indices: [40]
excluded_event_indices: [36]
stop_before_event_index: 41
stop_before:
- extra_newline_after_text_entry
- date_and_email_text_input_later_in_session
- word_window_clicks_and_document_switching
- systray_interaction
- python_focus
ignored_between_method_and_success:
- heartbeat_without_window_metadata
ignored_after_success: []
notes:
- "Le segment demarre apres l'ouverture/focus de Document2 - Word, qui n'est pas revendiquee par cette competence."
- "Event #36 est un heartbeat sans metadonnees fenetre et ne fait pas partie de la saisie."
- "Events #34/#35/#37/#38/#39 reconstruisent exactement 'Ceci est un test word !'."
- "Event #40 est un text_input newline post-methode, utilise comme preuve que Word reste la fenetre active juste apres la saisie."
- "Le texte visible n'est pas prouve par OCR offline; l'OCR est reserve au replay/supervised."
workflow_pipeline_id: null
graph_node_id: null
faiss_state_signatures: []
target_memory_keys: []
dashboard_knowledge_visible: false
promotion:
history:
- at: "2026-05-28T11:05:00+02:00"
from: observed
to: candidate
by: Dom
reason: "GO explicite apres ACK Claude/Qwen du P2 observed."
candidate_requires:
- cleaned_segment_validated
- method_trace_present
- success_marker_defined
- failure_message_template_valid
- primitive_ref_satisfied
supervised_requires:
- replay_verified_once
- success_marker_matched_after_action
- ocr_or_replay_verified_text
- human_validation
stable_requires:
min_successes: 3
distinct_contexts: 3
max_unexplained_failures: 0
t2_known_gaps:
- id: marker_continuation_human
description: "success_event #40 est un text_input humain post-methode."
impact: "T2 non satisfaisable tel quel: Lea ne produit pas de text_input newline supplementaire apres la methode."
proposed_resolution: "Ajouter wait_state apres saisie ou verifier le texte par OCR/runtime avant promotion supervised."
acted_by: Dom
acted_at: "2026-05-28T11:50:00+02:00"
generalisation:
seen_contexts: []
method_success_rate: {}
variance_log: []
failure_log: []
created_at: "2026-05-28T10:55:00+02:00"
last_updated_at: "2026-05-28T11:05:00+02:00"

View File

@@ -0,0 +1,149 @@
schema_version: 1
id: open_application_via_run
name: Ouvrir une application via Executer
version: 1
learning_state: observed
intent:
fr: ouvrir une application Windows via la boite Executer
parameters:
app_name: notepad
expected_process_name: Notepad.exe
preconditions:
- id: windows_session_active
kind: heartbeat_present
max_age_ms: 3000
- id: no_blocking_system_dialog
kind: not_window_title_matches
pattern: "^(UAC|Windows Security|SmartScreen).*"
methods_execution: sequence
methods:
- id: step_1_open_run_dialog
kind: key_combo
primitive_ref: key_combo
parameters:
keys: ["win", "r"]
keys: ["win", "r"]
observed: true
trace_source: live_events.jsonl
trace_event_indices: [3]
description: "Ouvre la boite Executer avec Win+R"
- id: step_2_type_app_name
kind: text_input
primitive_ref: text_input_focused
parameters:
text: "notepad"
concat_rule: concat_in_order
observed: true
trace_source: live_events.jsonl
trace_event_indices: [6, 7, 9, 10, 11]
concat_rule: "join(text_input fragments in segment)"
reconstructed_text: "notepad"
description: "Saisit le nom de l'application dans la boite Executer"
- id: step_3_validate_with_enter
kind: key_combo
primitive_ref: key_combo
parameters:
keys: ["enter"]
keys: ["enter"]
observed: false
allowed_runtime_substitution: true
note: "Trace humaine #13 = mouse_click sur OK. Runtime = key_combo([enter]) equivalent semantique."
description: "Valide la boite Executer au runtime"
success_marker:
mode: any_of
timeout_ms: 5000
markers:
- kind: active_process_name_is
value: Notepad.exe
supervised_requires:
- kind: active_process_name_is
value: Notepad.exe
evidence_state: observed_offline
required_for: replay_verified
failure_message_template:
intention: ouvrir l'application demandee via la boite Executer
attendu: voir la fenetre principale de l'application attendue au premier plan
vu: "{observed_human_state}"
demande: confirmer que l'application est installee sur ce poste, ou m'indiquer un autre moyen de l'ouvrir
chain_refs:
source_session: sess_20260324T165824_55b380
machine_id: DESKTOP-58D5CAC_windows
streaming_session_path: data/training/live_sessions/streaming_sessions/sess_20260324T165824_55b380.json
live_events_path: data/training/live_sessions/DESKTOP-58D5CAC_windows/sess_20260324T165824_55b380/live_events.jsonl
cleaned_segment:
status: documented_offline
keep_event_indices: [3, 4, 6, 7, 9, 10, 11, 16]
method_event_indices: [3, 6, 7, 9, 10, 11]
success_event_indices: [16]
excluded_event_indices: [5, 8, 12, 13, 14, 15]
stop_before_event_index: 17
stop_before:
- heartbeat_post_notepad_focus
- later_session_activity
ignored_between_method_and_success:
- action_result_open_run_dialog
- heartbeat_without_window_metadata
- human_mouse_click_ok_replaced_by_enter_runtime
- program_manager_transit_focus
- generic_action_result
notes:
- "Event #3 ouvre la boite Executer via Win+R."
- "Events #6/#7/#9/#10/#11 reconstruisent exactement 'notepad'."
- "Event #13 est un mouse_click humain sur OK sans anchor_ref; il est exclu de la methode runtime."
- "Au runtime, key_combo([enter]) remplace le mouse_click humain pour valider la boite Executer."
- "Event #16 prouve le succes par focus_change vers Notepad.exe."
workflow_pipeline_id: null
graph_node_id: null
faiss_state_signatures: []
target_memory_keys: []
dashboard_knowledge_visible: false
promotion:
candidate_requires:
- cleaned_segment_validated
- method_trace_present
- success_marker_defined
- failure_message_template_valid
- primitive_ref_satisfied
- methods_sequence_valid
supervised_requires:
- replay_verified_once
- success_marker_matched_after_action
- human_validation
stable_requires:
min_successes: 3
distinct_contexts: 3
max_unexplained_failures: 0
t2_known_gaps:
- id: enter_action_not_in_trace
description: "Le mouse_click #13 valide la boite Executer; aucun key_combo([enter]) n'est dans la trace."
impact: "Au runtime, Lea emet key_combo([enter]) sans preuve directe dans cette trace humaine."
proposed_resolution: "Au replay supervise, utiliser active_process_name_is=Notepad.exe comme preuve de validation."
acted_by: Dom
acted_at: "2026-05-28T12:45:00+02:00"
- id: mouse_click_replaced_by_keyboard_at_runtime
description: "La methode runtime diverge de la trace humaine: mouse_click remplace par key_combo([enter])."
impact: "La validation T2 doit confirmer que key_combo([enter]) est equivalent fonctionnel dans la boite Executer."
proposed_resolution: "Verifier au replay supervise sur plusieurs applications Windows simples."
acted_by: Dom
acted_at: "2026-05-28T12:45:00+02:00"
generalisation:
seen_contexts: []
method_success_rate: {}
variance_log: []
failure_log: []
created_at: "2026-05-28T12:45:00+02:00"
last_updated_at: "2026-05-28T12:45:00+02:00"

View File

@@ -0,0 +1,118 @@
schema_version: 1
id: saisir_requete_recherche
name: Saisir une requete dans la recherche Windows
version: 1
learning_state: observed
intent:
fr: saisir du texte dans le champ de recherche Windows
parameters:
query_text: "test lea apprentissage"
preconditions:
- id: open_windows_search_satisfied
kind: competence_required
competence: open_windows_search
state: observed
- id: search_field_active
kind: active_window
any_of:
- title_in: ["Rechercher", "Search"]
- process_active: SearchHost.exe
methods:
- id: text_input_concat
kind: text_input
primitive_ref: text_input_focused
parameters:
text: "test lea apprentissage"
concat_rule: concat_in_order
description: "Saisie texte par fragments dans le champ Rechercher"
observed: true
trace_source: live_events.jsonl
# Les text_input atomises sont concatenes pour former le texte complet
concat_rule: "join(all text_input events in segment)"
reconstructed_text: "test lea apprentissage"
# Note: event #12 "pprentissage" n'est PAS un mot complet
# Il complete event #10 "a" pour former "apprentissage"
success_marker:
mode: all_of
timeout_ms: 5000
markers:
- kind: active_window_title_in
values: ["Rechercher", "Search"]
- kind: active_process_name_is
value: SearchHost.exe
- kind: text_input_reconstructed_equals
value: "test lea apprentissage"
evidence_source: trace_text_input_concat
supervised_requires:
- kind: ocr_contains
text: "test lea apprentissage"
region_hint: search_field
evidence_state: hypothesis_offline
required_for: supervised_or_replay_verified
failure_message_template:
intention: saisir du texte dans la recherche Windows
attendu: voir le texte saisi apparaitre dans le champ Rechercher
vu: "{observed_human_state}"
demande: saisir le texte attendu dans le champ Rechercher puis me rendre la main
chain_refs:
source_session: sess_20260527T185155_98ad9a
machine_id: DESKTOP-58D5CAC_windows
streaming_session_path: data/training/live_sessions/streaming_sessions/sess_20260527T185155_98ad9a.json
live_events_path: data/training/live_sessions/DESKTOP-58D5CAC_windows/sess_20260527T185155_98ad9a/live_events.jsonl
cleaned_segment:
status: documented_offline
keep_event_indices: [5, 6, 7, 8, 9, 10, 11, 12, 13]
method_event_indices: [5, 6, 8, 9, 10, 12]
success_event_indices: [7, 11, 13]
excluded_event_indices: []
stop_before_event_index: 14
stop_before:
- mouse_click_systray
- explorer_overflow_window
- pythonw_unknown_focus
ignored_after_success: []
notes:
- "Events #5/#6 sont exclus du P0 (open_windows_search) car ils appartiennent a la saisie P1 apres Win+S."
- "P1 commence a #5, la premiere saisie apres l'ouverture de la recherche"
- "Event #7 heartbeat post-action P0, confirme que SearchHost.exe est actif pendant la saisie"
- "Event #12 'pprentissage' complete #10 'a' pour former 'apprentissage'"
- "Texte reconstruit: 'test lea apprentissage' (22 chars)"
workflow_pipeline_id: null
graph_node_id: null
faiss_state_signatures: []
target_memory_keys: []
dashboard_knowledge_visible: false
promotion:
candidate_requires:
- cleaned_segment_validated
- method_trace_present
- success_marker_defined
- failure_message_template_valid
- competence_dependency_satisfied
supervised_requires:
- replay_verified_once
- success_marker_matched_after_action
- ocr_or_replay_verified_text
- human_validation
stable_requires:
min_successes: 3
distinct_contexts: 3
max_unexplained_failures: 0
generalisation:
seen_contexts: []
method_success_rate: {}
variance_log: []
failure_log: []
created_at: "2026-05-27T18:51:55+02:00"
last_updated_at: "2026-05-28T08:13:52+02:00"

View File

@@ -0,0 +1,118 @@
schema_version: 1
id: scroll_down_pdf_edge
name: Scroller vers le bas dans un PDF Edge
version: 1
learning_state: observed
intent:
fr: faire defiler un document PDF vers le bas dans Microsoft Edge
parameters: {}
preconditions:
- id: edge_pdf_active
kind: active_window
any_of:
- process_active: msedge.exe
methods:
- id: scroll_down_mouse
kind: scroll
primitive_ref: scroll_view
parameters:
direction: down
amount: 9
unit: lines
description: "Scroll vers le bas via molette souris dans un PDF Edge"
observed: true
trace_source: live_events.jsonl
trace_event_indices: [129, 130, 131, 133, 134, 135, 137, 138, 139]
success_marker:
mode: all_of
timeout_ms: 5000
markers:
- kind: active_process_name_is
value: msedge.exe
supervised_requires:
- kind: ocr_contains
text: "contenu different apres scroll"
region_hint: document_body
evidence_state: hypothesis_offline
required_for: supervised_or_replay_verified
failure_message_template:
intention: faire defiler le PDF vers le bas
attendu: le contenu visible doit changer apres le defilement
vu: "{observed_human_state}"
demande: indiquer si le document PDF actif peut defiler vers le bas
chain_refs:
source_session: sess_20260318T010719_62a058
machine_id: DESKTOP-58D5CAC_windows
streaming_session_path: data/training/live_sessions/streaming_sessions/sess_20260318T010719_62a058.json
live_events_path: data/training/live_sessions/DESKTOP-58D5CAC_windows/sess_20260318T010719_62a058/live_events.jsonl
cleaned_segment:
status: documented_offline
keep_event_indices: [126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140]
method_event_indices: [129, 130, 131, 133, 134, 135, 137, 138, 139]
success_event_indices: [140]
excluded_event_indices: [127, 128]
stop_before_event_index: 141
stop_before:
- subsequent_scroll_bursts
- heartbeat_without_window_metadata_later_in_session
ignored_between_method_and_success: []
notes:
- "Event #126 focus vers msedge.exe avec le PDF RapportS1 actif."
- "Events #129/#130/#131/#133/#134/#135/#137/#138/#139 sont des mouse_scroll dans msedge.exe."
- "Tous les events de methode ont delta [0, -1], ce qui prouve direction=down pour cette trace."
- "Events #132 et #136 sont des heartbeats sans metadonnees fenetre au milieu du burst."
- "Events #127/#128 sont un clic de positionnement et son action_result avant le burst scroll; ils sont exclus."
- "Event #140 est le premier mouse_scroll post-methode avec msedge.exe encore actif; il prouve la continuite active, pas le changement de contenu."
workflow_pipeline_id: null
graph_node_id: null
faiss_state_signatures: []
target_memory_keys: []
dashboard_knowledge_visible: false
promotion:
candidate_requires:
- cleaned_segment_validated
- method_trace_present
- success_marker_defined
- failure_message_template_valid
- primitive_ref_satisfied
- scroll_trace_validated
supervised_requires:
- replay_verified_once
- success_marker_matched_after_action
- ocr_or_replay_verified_scroll_effect
- human_validation
stable_requires:
min_successes: 3
distinct_contexts: 3
max_unexplained_failures: 0
t2_known_gaps:
- id: scroll_effect_not_observed_offline
description: "La trace prouve les mouse_scroll et la fenetre active, mais pas le changement visuel du contenu PDF."
impact: "Le niveau T2 doit verifier que le viewport ou le texte visible change apres le scroll."
proposed_resolution: "Ajouter OCR runtime, screenshot diff ou marker visuel avant promotion supervised."
acted_by: Dom
acted_at: "2026-05-28T14:20:00+02:00"
- id: no_ocr_offline
description: "Aucune preuve OCR avant/apres scroll n'est disponible dans cette validation offline."
impact: "Le success_marker offline reste une preuve de continuite active, pas une preuve de contenu different."
proposed_resolution: "Verifier par OCR ou replay supervise avant promotion supervised."
acted_by: Dom
acted_at: "2026-05-28T14:20:00+02:00"
generalisation:
seen_contexts: []
method_success_rate: {}
variance_log: []
failure_log: []
created_at: "2026-05-28T14:20:00+02:00"
last_updated_at: "2026-05-28T14:20:00+02:00"

View File

@@ -0,0 +1,58 @@
schema_version: 1
id: click_anchor
kind: primitive
marker_or_action: action
version: 1
intent:
fr: cliquer sur un element UI identifie par ancre
executor_kind: click
parameters_schema:
anchor_ref:
type: dict_or_string
required: true
description: reference vers l'element a cliquer par id d'ancre ou criteres de resolution, jamais par coordonnees ecran
button:
type: str
required: false
default: left
description: bouton souris a utiliser
constraints:
enum: [left, right, middle]
click_count:
type: int
required: false
default: 1
description: nombre de clics successifs sur la meme ancre
constraints:
min: 1
max: 2
relative_offset:
type: dict
required: false
description: offset relatif dans la bbox resolue, sous forme x_pct/y_pct ou dx/dy, jamais en pixels absolus
context_guard:
type: dict
required: false
description: precondition d'ecran avant clic
expected_effect:
type: str
required: false
description: effet observable attendu par la competence appelante
failure_message_template:
intention: cliquer sur la cible nommee
attendu: la cible nommee doit etre visible et cliquable au moment de l'action
vu: "{observed_human_state}"
demande: me montrer la cible a cliquer, ou me donner son libelle visible
notes:
- "La primitive ne resout pas l'ancre. La resolution est faite par la cascade Grounding au runtime."
- "anchor_ref string = reference stable d'ancre; anchor_ref dict = description multi-critere."
- "relative_offset est rare. Par defaut, clic au centre de la bbox resolue."
- "click_count=2 represente un double-clic. Triple-clic non supporte."
- "Aucune coordonnee ecran absolue dans le YAML. Les positions sources restent uniquement dans les traces."
created_at: "2026-05-28T15:35:00+02:00"

View File

@@ -0,0 +1,45 @@
schema_version: 1
id: key_combo
kind: primitive
marker_or_action: action
version: 1
intent:
fr: enfoncer un raccourci clavier
executor_kind: key_combo
parameters_schema:
keys:
type: list[str]
required_unless: [gesture_id]
description: liste de touches normalisees
constraints:
min_length: 1
gesture_id:
type: str
required_unless: [keys]
description: reference vers un Gesture du catalogue
constraints:
regex: "^[a-z][a-z0-9_]*$"
context_guard:
type: dict
required: false
description: precondition d'ecran avant envoi
expected_effect:
type: str
required: false
description: effet observable attendu par la competence appelante
failure_message_template:
intention: enfoncer le raccourci clavier attendu
attendu: la fenetre active doit reagir au raccourci
vu: "{observed_human_state}"
demande: confirmer que la fenetre attendue est bien au premier plan, ou indiquer un autre raccourci
notes:
- "La primitive ne controle pas le focus. La competence appelante doit le garantir via precondition."
- "Utiliser keys ou gesture_id, pas les deux."
- "Le raccourci s'envoie tel quel. Pas de retry ni fallback dans la primitive."
created_at: "2026-05-28T10:25:00+02:00"

View File

@@ -0,0 +1,51 @@
schema_version: 1
id: scroll_view
kind: primitive
marker_or_action: action
version: 1
intent:
fr: faire defiler la zone active ou un container cible
executor_kind: scroll
parameters_schema:
direction:
type: str
required: true
description: sens du defilement
constraints:
enum: [up, down, left, right]
amount:
type: int
required: false
default: 3
description: quantite de defilement en unite
constraints:
min: 1
unit:
type: str
required: false
default: lines
description: unite de mesure du defilement
constraints:
enum: [lines, pixels, pages, percent]
container_hint:
type: str
required: false
description: ancre ou description du container a scroller; sinon fenetre active
failure_message_template:
intention: faire defiler la zone active dans la direction attendue
attendu: le contenu visible doit changer apres le defilement
vu: "{observed_human_state}"
demande: confirmer que la fenetre attendue est defilable, ou m'indiquer le container correct
notes:
- "Aucun success_marker offline fiable n'est porte par la primitive."
- "La competence appelante doit fournir le contexte et les marqueurs de succes."
- "direction est volontairement limite a up/down/left/right pour eviter les scrolls composites."
- "amount=3 lines correspond au defilement molette Windows typique."
- "container_hint reference une ancre ou description, jamais une coordonnee durable."
created_at: "2026-05-28T11:30:00+02:00"

View File

@@ -0,0 +1,48 @@
schema_version: 1
id: text_input_focused
kind: primitive
marker_or_action: action
version: 1
intent:
fr: saisir du texte dans le champ deja focus
executor_kind: text_input
parameters_schema:
text:
type: str
required: true
description: texte a saisir
constraints:
min_length: 1
concat_rule:
type: str
required: false
default: concat_in_order
description: regle de reconstruction du texte depuis les fragments de trace
constraints:
enum: [concat_in_order, last_fragment_only]
clear_before:
type: bool
required: false
default: false
description: vider le champ avant saisie
submit_after:
type: bool
required: false
default: false
description: appuyer sur entree apres saisie
failure_message_template:
intention: saisir le texte attendu dans le champ actif
attendu: le texte attendu doit apparaitre dans le champ focus
vu: "{observed_human_state}"
demande: confirmer qu'un champ de saisie est bien au focus, ou me montrer le bon champ
notes:
- "Necessite un focus prealable garanti par la competence appelante."
- "reconstructed_text reste cote competence pour validation offline contre la trace."
- "submit_after=true represente une composition text_input_focused puis key_combo([enter])."
created_at: "2026-05-28T10:25:00+02:00"

View File

@@ -0,0 +1,54 @@
schema_version: 1
id: wait_for_state
kind: primitive
marker_or_action: action
version: 1
intent:
fr: attendre qu'un etat d'ecran attendu soit atteint
executor_kind: wait_state
parameters_schema:
expected_state:
type: dict
required: true
description: criteres d'etat attendu sous forme de mapping non vide; plusieurs cles representent un AND implicite
timeout_ms:
type: int
required: false
default: 5000
description: timeout maximal d'attente en millisecondes
constraints:
min: 100
max: 60000
poll_interval_ms:
type: int
required: false
default: 250
description: intervalle de polling en millisecondes
constraints:
min: 50
max: 5000
evidence_required:
type: str
required: false
default: window_or_process
description: niveau de preuve requis pour considerer l'etat atteint
constraints:
enum: [window_or_process, uia, ocr, screenshot_diff]
failure_message_template:
intention: attendre que la fenetre ou le contenu cible apparaisse
attendu: la fenetre ou le contenu cible doit etre visible dans le delai
vu: "{observed_human_state}"
demande: me montrer la fenetre ou le contenu cible, ou m'indiquer un autre marqueur visible
notes:
- "La primitive ne fait pas l'action qui declenche l'etat. Elle attend qu'un etat survienne apres une action precedente."
- "expected_state accepte notamment window_title_in, window_title_matches, window_title_contains, process_active, uia_anchor_present, ocr_contains et any_of."
- "Plusieurs cles representent un AND implicite. any_of permet un OR explicite entre sous-mappings."
- "evidence_required=window_or_process suffit pour la majorite des cas. uia, ocr et screenshot_diff sont des renforcements supervised."
- "Aucune coordonnee ecran absolue dans expected_state."
created_at: "2026-05-28T16:35:00+02:00"