14 KiB
Fiche OUTIL1-I1a — Niveau N1 — Modèle prévu non précisé par la fiche | utilisé claude-sonnet-5-5 — Agent lp-inventory — Skills sk-protocol, sk-recount, lp-paths
OUTIL1-I1a-INV : inventaire des 33 scripts EVAL et EVAL2 (2026-10-14)
Demande : trier les scripts dispersés sous etat\, les intégrer à Tools\, amender les skills (sous-lot OUTIL1 d'AMEL1). Cette fiche couvre etat\EVAL\scripts\ (17) et etat\EVAL2\scripts\ (16). Données détaillées : OUTIL1-I1a.csv (même dossier, 33 lignes, séparateur ;).
1. Commandes exactes
- Glob
**/*.{py,ps1}dans...\etat\EVAL\scripts; idem dans...\etat\EVAL2\scripts. ls -l --time-style=long-isodes deux dossiersscripts(dates de modification).- Read (en-tête, docstring, constantes) de chacun des 33 scripts ; Read de
Tools\Indicateurs.pyl. 1-62, 824-1003, 1500-1553 ; Grep^def |^# |^"""surTools\Indicateurs.py(liste des fonctions). - Grep
sys\.exit|raise SystemExit|exit\(, Grepadd_argument|sys\.argv, Grep des écritures (open(... "w",write_bytes...) dansetat\**\EVAL*\scripts\*.py. - Grep (
output_mode: content,-o) des noms de scripts dansetat\**\*.md(dernier usage connu) ; Grepoutput_mode: countdu même motif : 176 occurrences, 27 fichiers. git ls-files "Docs/Migration/etat/EVAL/scripts" "Docs/Migration/etat/EVAL2/scripts" | wc -l;git check-ignore -vsureval2_lf.pyeteval_probe.py;git status --porcelain --ignoredsur les deux dossiers.- Read de
lp-doc\gabarits.md(gabarit INV), Grep deAMEL1-MESURE-P3.md(l. 27-112) pour les cas de non-régression. - Recomptes du CSV (Grep
output_mode: count, deuxième formulation) : voir § 2.
2. Comptes bruts
- Glob EVAL : 17 chemins (
EvalT2_Commits,eval_boss,eval_commandes,eval_fiches,eval_journal,eval_load,eval_probeàeval_probe8(8),eval_sessions,eval_sessions_recount,eval_subagents). Glob EVAL2 : 16 chemins. Total 33, aucun.ps1. git ls-filesdes deux dossiers :0(sortie dewc -l).git check-ignore -v:.gitignore:75:/Docs/Migration/etat/**pour les deux fichiers testés.git status --porcelain --ignored:!! Docs/Migration/etat/EVAL/scripts/et!! Docs/Migration/etat/EVAL2/scripts/. Les 33 scripts ne sont pas sous git (seuls.mdet.csvdeetat\sont suivis) : leur seule copie est sur le disque.- Recompte du CSV, Grep
^([^;]*;){11}[^;]*$: 34 lignes (en-tête + 33), donc 12 colonnes partout et aucun;dans un champ. Grep par classe (colonne 9) : a = 1, b = 11, c = 12, d = 9 ; 1 + 11 + 12 + 9 = 33. - Citations : 176 occurrences de noms de scripts dans 27 livrables
.md; EVAL2 rejoués par AMEL1-V1b (V1b\rejeu.md,V1b\echec.md, 17 occurrences chacun) ;AMEL1-I2-GITIGNORE.md:113-120liste 8 scripts EVAL avec les motifs PROFIL, NOM (chemin du profil, nom de compte).
3. Écarts au compte attendu de la fiche
Compte attendu 33 (17 + 16) : conforme. Aucun .ps1. Aucun script d'EVAL\scripts ni d'EVAL2\scripts n'a été exécuté.
4. Tableau (détail dans le CSV)
Classes : (a) à intégrer à Tools\ ; (b) trace de lot à laisser ; (c) obsolète, corbeille sur accord ; (d) à fusionner dans un outil existant. Ind. = Tools\Indicateurs.py.
| Script | Lot | Fonction | Dernier usage (modif.) | Doublon Tools | Classe | Cible |
|---|---|---|---|---|---|---|
| EVAL\EvalT2_Commits.py | EVAL-T2 | commits des 5 dépôts et tickets | 2026-10-11 05:39 | Ind. releve_commits (partiel), remplacé par eval2_commits |
b | trace |
| EVAL\eval_boss.py | EVAL-T4 | file de build et arbitrages Big Boss | 2026-10-14 22:03 (retouche I2) | aucun | b | trace |
| EVAL\eval_commandes.py | EVAL-T6 | commandes répétées | 2026-10-14 22:03 | Ind. releve_commandes, remplacé par eval2_commandes |
b | trace |
| EVAL\eval_fiches.py | EVAL-T5 | qualité fiches et registres | 2026-10-11 05:49 | Ind. releve_fiches, remplacé par eval2_fiches |
b | trace |
| EVAL\eval_journal.py | EVAL-T3 | CHG et ERR | 2026-10-11 05:47 | Ind. releve_journal, remplacé par eval2_journal |
b | trace |
| EVAL\eval_load.py | EVAL-T4 | chargeur Big Boss (sonde v1) | 2026-10-14 22:03 | aucun | c | corbeille sur accord |
| EVAL\eval_probe.py | EVAL-T4 | liste des sessions | 2026-10-14 22:03 | Ind. lister_principales (autre sortie) |
c | corbeille sur accord |
| EVAL\eval_probe2.py | EVAL-T4 | forme des entrées Big Boss | 2026-10-14 22:03 | aucun | c | corbeille sur accord |
| EVAL\eval_probe3.py | EVAL-T4 | liste des messages Big Boss | 2026-10-14 22:03 | aucun | c | corbeille sur accord |
| EVAL\eval_probe4.py | EVAL-T4 | entrées sans corps peer (indices en dur) | 2026-10-14 22:03 | aucun | c | corbeille sur accord |
| EVAL\eval_probe5.py | EVAL-T4 | mentions BUILD-* | 2026-10-11 05:37 | aucun | c | corbeille sur accord |
| EVAL\eval_probe6.py | EVAL-T4 | messages sans mot-clé | 2026-10-11 05:37 | aucun | c | corbeille sur accord |
| EVAL\eval_probe7.py | EVAL-T4 | en-têtes U8/CAM/... | 2026-10-11 05:37 | aucun | c | corbeille sur accord |
| EVAL\eval_probe8.py | EVAL-T4 | messages hors origin.body | 2026-10-14 22:03 | aucun | c | corbeille sur accord |
| EVAL\eval_sessions.py | EVAL-T1a | sessions principales | 2026-10-11 05:39 | Ind. releve_sessions, remplacé par eval2_sessions |
b | trace |
| EVAL\eval_sessions_recount.py | EVAL-T1a | recompte sk-recount | 2026-10-11 05:41 | aucun | b | trace |
| EVAL\eval_subagents.py | EVAL-T1b | sous-agents | 2026-10-11 05:38 | Ind. releve_sousagents, remplacé par eval2_subagents |
b | trace |
| EVAL2\eval2_commandes.py | EVAL2-T6 | commandes et refus du crochet | 2026-10-14 18:46 | Ind. releve_commandes (agrégats) |
d | Ind. --detail |
| EVAL2\eval2_commits.py | EVAL2-T2 | commits, tickets, reflog, verrous | 2026-10-14 19:00 | Ind. releve_commits (3 dépôts, I6) |
d | Ind. --detail ou ReleveCommits.py |
| EVAL2\eval2_commun.py | EVAL2-T4 | essais communs (données saisies) | 2026-10-14 18:50 | Ind. releve_essais lit ses CSV |
b | trace |
| EVAL2\eval2_fiches.py | EVAL2-T5 | fiches, registres, écarts | 2026-10-14 18:57 | Ind. releve_fiches |
d | Ind. --detail |
| EVAL2\eval2_journal.py | EVAL2-T3 | CHG, ERR, décisions | 2026-10-14 18:56 | Ind. releve_journal |
d | Ind. --detail |
| EVAL2\eval2_lf.py | EVAL2-T9 | normalise CR en LF (data) | 2026-10-14 19:13 | FileCheck.ps1 relève sans corriger | a | NormaliserLF.py |
| EVAL2\eval2_meta.py | EVAL2-T1a | app_meta.csv depuis un fichier tool-results | 2026-10-14 18:47 | Ind. lire_meta_app |
c | corbeille sur accord |
| EVAL2\eval2_post.py | EVAL2-T5 | triage manuel des écarts (dictionnaire) | 2026-10-14 18:59 | Ind. i_I10b lit le CSV |
b | trace |
| EVAL2\eval2_recount.py | EVAL2-T1a | recompte ebc15012 | 2026-10-14 18:51 | aucun | b | trace |
| EVAL2\eval2_refus.py | EVAL2-T6b | classement v2, échantillon | 2026-10-14 18:51 | Ind. classe_v2 |
d | Ind. --detail |
| EVAL2\eval2_sessions.py | EVAL2-T1a | sessions principales P3 | 2026-10-14 18:50 | Ind. releve_sessions |
d | Ind. --detail |
| EVAL2\eval2_sonde_meta.py | EVAL2-T1a | sonde du chemin Roaming | 2026-10-14 18:47 | Ind. lire_meta_app (MSIX) |
c | corbeille sur accord |
| EVAL2\eval2_sonde_objectif.py | EVAL2-T1a | sonde lignes 9235 et 9343 | 2026-10-14 18:44 | aucun | c | corbeille sur accord |
| EVAL2\eval2_subagents.py | EVAL2-T1b | sous-agents P3 | 2026-10-14 18:45 | Ind. releve_sousagents, FicheStats |
d | Ind. --detail |
| EVAL2\eval2_subagents_sessions.py | EVAL2-T1b | rattachement aux sessions | 2026-10-14 18:51 | Ind. lire_meta_app (le script lit Roaming) |
d | Ind. --detail |
| EVAL2\eval2_val.py | EVAL2-T5 | verdicts des VAL | 2026-10-14 18:58 | Ind. verdicts_val |
d | Ind. --detail |
Totaux par classe
| Classe | EVAL | EVAL2 | Total |
|---|---|---|---|
(a) intégrer à Tools\ |
0 | 1 | 1 |
| (b) trace de lot | 8 | 3 | 11 |
| (c) obsolète, corbeille sur accord | 9 | 3 | 12 |
| (d) fusionner dans un outil existant | 0 | 9 | 9 |
| Total | 17 | 16 | 33 |
Ce que couvre Indicateurs.py et ce qu'il ne couvre pas
- Établi (docstring
Indicateurs.py:5-7, intitulés de relevés l. 267, 405, 589, 825, 861, 955, 985) : il a repris la logique deeval2_sessions/meta(I1, I12, G-a, G-b),eval2_subagents/_sessions(I4, I9, I13, I14),eval2_commandes/refus(I2a, I7, I10a),eval2_commits(I6),eval2_journal(I5, I11a),eval2_fiches/val/post(I8, I10b, I11b), et il litcommun.csv/builds.csv(I3, G-c, G-d). - Établi : il n'écrit que le fichier
--sortie(Indicateurs.py:21-22, « Lecture seule partout, sauf le fichier --sortie »). Les CSV de détail des scripts (sessions.csv,commandes.csv,refus.csv,subagents.csv,tickets.csv,chg.csv,err.csv,decisions.csv,fiches*.csv,val.csv,ecarts.csv) ne sont donc plus produits par l'outil. D'où la classe (d) et la proposition d'une option--detail <dossier>. - Non couvert (voir colonne
doublon_toolsdu CSV) : tickets, reflog, verrous, tags etls-remote; délais décision vers livraison et retard CHG ; rotation par lot, refus par motif et parallélisme ; sensibilité à la coupure et builders coupés ;dp716; échantillon de relecture deeval2_refus. - Non reproductible dans l'outil :
eval2_commun.py(dictionnaireBUILDSsaisi à la main,eval2_commun.py:28-50) eteval2_post.py(dictionnaireRETENU, l. 13-39) sont des tables de données de P3 ;Indicateurs.pyannonce « non mesurable » hors P3 sans--builds-csv/--commun-csv(l. 30-31).
5. Propositions de normalisation (classes a et d)
| Script | Cible | Paramètres à normaliser | Code de sortie | Cas de non-régression (commande, sortie attendue citée) |
|---|---|---|---|---|
| eval2_lf.py | Tools\NormaliserLF.py |
--dossier, --extensions, --appliquer (à blanc par défaut), instantané Snapshot.ps1 avant écriture |
0 conforme, 1 à corriger, 2 erreur | EVAL2-STATS.md:187 : « 516 CR retirés sur 7 fichiers », puis recompte à 0 CR ; à rejouer sur une copie des 7 fichiers sous Saved\ |
| eval2_commandes.py, eval2_refus.py | Tools\Indicateurs.py --detail |
--detail, --hook, graine en paramètre, plus de runpy |
0/1/2 | python -I -X utf8 Tools\Indicateurs.py --debut "2026-10-11 05:30:00" --fin "2026-10-14 18:25:41" --coupure "2026-10-13 12:07:16" --sortie <tmp>.md → AMEL1-MESURE-P3.md:85-87 (I2a 36 sur 76), :101 (I7a 14), :103-104 (26 sur 5910) |
| eval2_commits.py | Tools\Indicateurs.py --detail ou Tools\ReleveCommits.py |
dépôts, bornes, coupure en paramètres, GIT_TERMINAL_PROMPT=0 et délai sur ls-remote |
0/1/2 | même commande → AMEL1-MESURE-P3.md:98-100 (I6 12,2 ; 6 refus ; 49 commits) ; EVAL2-T2-INV.md:97 (34 + 15 + 0 = 49 ; 82 verrous pris = 82 rendus) |
| eval2_fiches.py, eval2_val.py | Tools\Indicateurs.py --detail |
racine etat, bornes, sortie |
0/1/2 (1 si VAL sans verdict) | AMEL1-MESURE-P3.md:27 (I8a 1 sur 34), :105-107 (I8b 4 sur 69) ; EVAL2-T5-INV.md:79-80 (P3a 30 VAL, P3b 57 VAL) |
| eval2_journal.py | Tools\Indicateurs.py --detail |
bornes, chemins | 0/1/2 | AMEL1-MESURE-P3.md:94-97 (I5a 50 sur 50, I5b 29,3 h) |
| eval2_sessions.py | Tools\Indicateurs.py --detail |
fenêtre (existe), dossier, chemin MSIX par défaut | 0/1/2 | AMEL1-MESURE-P3.md:78-84 (I1a 20,4 % = 605,6 M / 2970 M ; I1b 36,1 %) ; EVAL2-T1a-INV.md:133 (42 sessions jetables, 61 tours) |
| eval2_subagents.py, eval2_subagents_sessions.py | Tools\Indicateurs.py --detail |
coupure, racine, chemin MSIX | 0/1/2 (aujourd'hui 0/1/3) | AMEL1-MESURE-P3.md:91-93 (I4a 37 passages, 144,2 M), :108-110 (I9 11 sur 14) ; EVAL2-T1b-INV.md:36 (258 agents, 562,4 M, 37 sessions) |
Règles communes : aucun chemin en dur (racine, etat, profil, dépôts passés en paramètres) ; sorties en LF (lineterminator="\n") ; plus de code exécuté à l'import ; code de sortie 0/1/2 ; aucun nom de compte écrit (%USERPROFILE%). Les 33 scripts n'étant pas sous git (§ 2), faire une copie sous Tools\ ou un instantané avant tout déplacement (sk-change-safety).
6. Établi / estimé / incertain
- Établi : les 33 chemins et leurs dates de modification (
ls -l) ; les entrées, sorties et paramètres lus en tête de chaque script (Read) ; l'absence des 33 scripts de git (git ls-files= 0,.gitignore:75) ; les fonctions d'Indicateurs.pycitées ; les valeurs attendues citées deAMEL1-MESURE-P3.mdet des INV EVAL2. - Estimé : « dernier usage ». Les 8 scripts EVAL modifiés le 2026-10-14 22:03 (
eval_boss,eval_commandes,eval_load,eval_probe,eval_probe2,eval_probe3,eval_probe4,eval_probe8) sont exactement ceux listés parAMEL1-I2-GITIGNORE.md:113-120(motifs PROFIL, NOM) : retouche probable de AMEL1-I2, contenu non comparé. Le rejeu des EVAL2 par AMEL1-V1b est déduit deV1b\rejeu.md, sans relire sa date. - Incertain : (1) corps des scripts non lus au-delà des en-têtes (50 premières lignes, sauf petits scripts lus entiers) : les sorties exactes de chaque script viennent des docstrings et des Grep d'écriture ; (2) la classe (b) des scripts EVAL repose sur leur rôle de preuve des chiffres du doc 33 (
EVAL-STATS.md), à confirmer par l'utilisateur ; une fois ces chiffres reproduits parIndicateurs.pyils pourraient passer en (c) ; (3)eval2_subagents_sessions.pylit le chemin Roaming (vide sous MSIX d'aprèslp-paths),EVAL2-STATS.md:174note qu'il a tourné « sous le Python d'Unreal » : lecture non vérifiée ; (4) le code de sortie des scripts sanssys.exitest 0 s'il n'y a pas d'exception (non exécutés) ; (5) rien n'a été mesuré sur les cas de non-régression : les valeurs sont citées, pas rejouées ; (6) les relevés sur les dépôts 5.5 (jeu et modules) deeval2_commits.pyne sont pas couverts parIndicateurs.py(3 dépôts). - Piège de forme : les CSV de
EVAL2\data\sont en CRLF ou mixtes (EVAL2-T9-VAL.md:95-96) car les scripts utilisentcsv.writersanslineterminator; à corriger à l'intégration.
7. Fichiers à commiter
Fichiers écrits par cette fiche (suivis en texte seul, .md et .csv de etat\) :
- A
Docs/Migration/etat/EVAL2/AMEL1/OUTIL1/OUTIL1-I1a-INV.md(jeu) - A
Docs/Migration/etat/EVAL2/AMEL1/OUTIL1/OUTIL1-I1a.csv(jeu)
Tours : 14 / 40