155 lines
18 KiB
Markdown
155 lines
18 KiB
Markdown
Fiche EVAL2-T8 — Niveau N2 — Modèle prévu Opus 5.5 | utilisé claude-opus-5-5 — Agent orchestrateur (session EVAL) — Skills aucun préchargé
|
||
# EVAL2-RAPPORT : évaluation des opérations après la première release 5.8 (P3, 2026-10-11 → 2026-10-14)
|
||
|
||
**Demande de l'utilisateur** (relayée par Big Boss) : « faisons l'évaluation des opérations. reprenons les ancienne
|
||
évaluations et voyons quels sont nos performances actuelles, ce qui a bien marché, ce quit doit être améliorer au niveau
|
||
des outils, des skills, des agents, de l'organisation ».
|
||
|
||
**Bases** : doc 31 (P0, P1), doc 33 (P0 à P2, E1 à E7, § 7), `etat\EVAL\`, `etat\AG\ORGA2\ORGA2-PROPOSITION.md`, doc 32 § 15,
|
||
doc 34. **Chiffres** : `EVAL2-STATS.md` (chaque valeur y renvoie à son relevé T1a à T6). **Biais** : écrit par une session
|
||
orchestrateur Opus, partie de l'organisation jugée ; P3b (sprint de correction en jeu) ne se compare pas « à travail égal »
|
||
avec P0 à P2 (migration, outillage).
|
||
|
||
---
|
||
|
||
## 1. Résumé
|
||
|
||
1. **Le résultat est là** : 13 builds communs en 30 h de sprint, tous compilés du premier coup ; une boucle essai → correctif
|
||
→ build de **53 min en médiane** ; l'alpha `2026.10.2.1a` est taguée sur `2f5d51b` avec **0 commit sans ticket, 0 verrou
|
||
orphelin, 0 `--amend`**.
|
||
2. **L'utilisateur est le principal testeur** : 81 % des défauts KO ont été trouvés par lui en jeu ; 35 % des cas ont été
|
||
validés sans vérification cas par cas ; 3 VAL PASS-STATIC ont été suivies d'un KO en jeu ; 5 correctifs ont introduit une
|
||
régression.
|
||
3. **La documentation décroche sous la pression** : aucun CHG ni ERR pendant ≈ 29 h de sprint, 50 ERR consignés en un seul
|
||
rattrapage, bilans écrits après coup, 81 % des lignes du BOSS-JOURNAL sans heure.
|
||
4. **Le coût se concentre** : Big Boss fait 20 % de tous les jetons (25 % de ceux des principales) et 36 % des heures
|
||
(clause d'arrêt du doc 33 à 15 % : **déclenchée** dans les deux bases) ; `lp-mcp-bp` (Opus) fait 26 % des jetons des sous-agents.
|
||
5. **Le crochet protège mais gêne** : 40 refus utiles, mais 36 à tort, surtout sur `>` cité dans un `grep` ou un `awk`
|
||
(clause de retrait du doc 33 **déclenchée sur CAM** : 12 à tort pour 5 utiles, si « refus légitimes » se lit « à tort ») ; 17 refus que les agents se sont infligés
|
||
eux-mêmes, dont 3 dans ce lot.
|
||
6. **Les cibles du doc 33 § 7 ne sont pas atteintes** (contexte médian 295 k pour < 200 k ; part des sous-agents 57 % pour
|
||
> 70 %) ; les outils E2 ont été abandonnés pendant le sprint.
|
||
|
||
---
|
||
|
||
## 2. Ce qui a bien marché (avec preuves)
|
||
|
||
| # | Constat | Preuve |
|
||
|---|---|---|
|
||
| B1 | **Boucle de correction rapide** : build commun + fiche de tests commune (décision de l'utilisateur du 2026-10-13) | 13 builds, médiane 53 min de la fin d'un essai à l'exe suivant, 15 min au mieux (C9 → C10) ; 0 échec de build sur P3 (STATS § 2.1) |
|
||
| B2 | **Builds outillés** : `Build.ps1` + `BuildDebug` rendent un résumé compté | 25 résumés, 20 journaux UAT, tous code 0 ; Build.ps1 52 s, BuildCookRun 128 s en moyenne ; `lp-builder` haiku 3 % hors budget |
|
||
| B3 | **Gardien et dépôt sûrs** | 49 commits, 0 sans ticket ; 82 verrous pris et rendus ; 9 refus de commit tous repris ; 0 `--amend` (STATS § 2.4) |
|
||
| B4 | **PubCheck et le gardien attrapent les fuites avant publication** | 6 commits refusés pour un nom de compte (3 par le gardien, 3 par PubCheck), tous repris ; rien de poussé avec une fuite |
|
||
| B5 | **Le crochet bloque de vraies écritures** | 40 refus utiles, dont STE-ORG4c (`mkdir` + `mv` d'un autosave GI par un sous-agent, arrêté conformément à sa fiche) ; 7 agents se sont arrêtés après un refus (T6 § 2.5), les autres ont continué ou reformulé (T1b, T6) |
|
||
| B6 | **Rotation de Big Boss et baisse des jetons par heure** | une rotation le 2026-10-13 12:26 (384 k → 268 k de contexte médian) ; jetons lus par heure active 43,5 M contre 130,2 M en P2 |
|
||
| B7 | **Règles de fiche (E5) suivies** | « Niveau Nx » 89,7 %, en-tête 83,4 % ; 2 reprises sur 246 fiches ; 0 escalade nécessaire ; 1 agent coupé sans compte rendu sur 258 |
|
||
| B8 | **VAL utiles** | 9 VAL sur 76 ont rendu un FAIL à un stade, toutes reprises ; FAIL final 6,6 % |
|
||
| B9 | **Rattrapage des journaux fiable** | JOURNAUX1-2 : 26 CHG recoupés 26 / 26 avec `git log -S` ; 50 ERR sans trou de numéro (T3) |
|
||
| B10 | **`Verrou`, `Numero`, `UeState` adoptés** | 110, 77 et 370 appels en P3 (T6 § 2.9) |
|
||
|
||
---
|
||
|
||
## 3. Ce qui doit s'améliorer, par axe (cause et preuve)
|
||
|
||
### 3.1 Outils
|
||
|
||
| # | Défaut | Cause | Preuve |
|
||
|---|---|---|---|
|
||
| O1 | **Crochet trop grossier** : 36 refus à tort sur 76 | il cherche `>` et `->` dans toute la commande, y compris dans les textes cités (`grep "^>"`, `awk 'NR>=…'`, `echo "a -> b"`) ; il refuse aussi l'écriture dans un dossier temporaire | T6 § 2.4 (relecture 15 / 15) ; CAM 12 à tort / 5 utiles ; 18 des 40 « utiles » visent un temporaire |
|
||
| O2 | **Crochet fragile** | il est lu depuis `Tools/claude/hooks/`, qui a disparu de la copie le 2026-10-13 ; les appels ont échoué en « hook error » | 4 pannes (T1a) ; BOSS-JOURNAL l. 452 ; le fichier figure encore en `D` au `git status` |
|
||
| O3 | **Outils de copie partagée abandonnés en sprint** | `CopieEtat` / `GitEtat` non nommés dans les fiches du sprint ; habitude de `git status` et `md5sum` à la main | 0 appel en P3b ; 662 `git status`, 927 empreintes improvisées (543 en P2) |
|
||
| O4 | **PubCheck lancé trop tard** | au commit, pas à l'écriture du livrable | 3 refus PubCheck sur les commits de l'alpha (STE, STG, CAM) le 2026-10-14 (T2) |
|
||
| O5 | **Aucune trace automatique des essais** | le découvreur, le KO et l'heure sont reconstitués à la main dans un bilan | bilans après coup (C8-C10 écrits ensemble, C13 + 104 min) ; COMMUN-1 sans fiche ni bilan (T4) |
|
||
| O6 | **Instantané non contrôlé** | `Snapshot.ps1` est une consigne, rien ne vérifie qu'il a tourné avant une écriture | 7 relevés « instantané manquant » (3 cas distincts : ORG5-I2a, CAM-B2n, `.h` de DirectControl STG) et 2 tardifs (T5) |
|
||
| O7 | **Pièges de poste non documentés** | Python du Store en MSIX ne voit pas `AppData\Roaming\Claude` ; `git ls-remote` bloque sur le gestionnaire d'identifiants | T1a, T6, T2 ; un processus de T2 resté bloqué |
|
||
| O8 | **`FicheStats` classe mal certains agents** | `lp-mcp-bp`, `lp-diag`, `lp-cart-max` absents d'`AGENTS_N3` | `lp-mcp-bp` compté hors budget à 46 % au lieu de 14 % (T1b) |
|
||
|
||
### 3.2 Skills
|
||
|
||
| # | Défaut | Cause | Preuve |
|
||
|---|---|---|---|
|
||
| S1 | **Consignes de shell non intégrées** : les agents tapent ce que le crochet refuse | la règle « pas de `python -c`, heredoc, `>` » est dans `sk-protocol` § 7, mais aucun skill ne dit comment tester ou lire un JSON autrement | 17 refus dus à la propre consigne (14 en P3, 3 dans ce lot) ; 26 erreurs de guillemets en Bash (T6) |
|
||
| S2 | **Principales hors règle** | les sessions principales n'ont pas de crochet et écrivent du Python en ligne | 322 heredocs Python dans les principales ; 152 `python -c` de plus de 200 caractères toutes sessions (T6 § 2.8) |
|
||
| S3 | **Gabarits absents pour la fiche de tests et le bilan d'essai** | chaque COMMUN est rédigé à la main par Big Boss (« Tenue par Big Boss », `etat\BOSS\COMMUN-2-TESTS.md` l. 3) | 12 fiches différentes ; validations implicites 32, en bloc 24 ; bilans tardifs (T4) |
|
||
| S4 | **Registres de lot sans colonnes de mesure** | `lp-doc` § TACHES non suivi par STG, CAM, STE | l'essai D-P7.16 (S, C9a) n'est mesurable que sur 16 fiches sur 52 (T5) |
|
||
| S5 | **Journal non tenu pendant un sprint** | le CHG n'est écrit qu'au commit (règle du doc 33), et le sprint n'a commité qu'à la fin | ≈ 29 h sans CHG ni ERR ; 50 ERR en un seul commit (T3) |
|
||
|
||
### 3.3 Agents
|
||
|
||
| # | Défaut | Cause | Preuve |
|
||
|---|---|---|---|
|
||
| A1 | **`lp-mcp-bp` premier poste de coût** | Opus xhigh sur tous les correctifs Blueprint, y compris les petits ; fiches longues | 37 passages, 144,2 M (26 % des sous-agents, 62 % d'Opus), 43,6 tours en moyenne, max 82 (T1b) |
|
||
| A2 | **`lp-cart` presque toujours hors budget** | fiches trop larges, comme en P2 (55 %) | 79 % sur 14 fiches, 4 lancés en Opus contre l'en-tête de l'agent (T1b) |
|
||
| A3 | **VAL statiques trop optimistes pour le jeu** | une VAL PASS-STATIC vérifie le graphe, pas le comportement en jeu | 3 PASS-STATIC suivis d'un KO en jeu, + B2s PASS suivi d'un KO (T5) |
|
||
| A4 | **Agent de build hors budget sur la vérification** | la chaîne de contrôle après build est longue (64 / 65 étapes en C13) | COMMUN-9 : 55 tours contre 40 déclarés (T1b, T4) |
|
||
| A5 | **Écarts d'orchestrateur après un refus utile** | l'orchestrateur fait lui-même l'écriture refusée à l'agent | STE-ORG4c : fichier déplacé sans MD5, VAL PASS (T6 § 3) |
|
||
|
||
### 3.4 Organisation
|
||
|
||
| # | Défaut | Cause | Preuve |
|
||
|---|---|---|---|
|
||
| G1 | **Big Boss trop cher** | il reçoit 72,5 % des messages de l'utilisateur ; il tient les fiches de tests, les bilans et les journaux (BOSS-JOURNAL, `etat\BOSS\COMMUN-*` ; cause estimée, la répartition de son coût par activité n'est pas mesurée) | 20,4 % de tous les jetons, 36 % des heures, 1 815 tours (STATS § 3) ; clause D-P7.8 franchie |
|
||
| G2 | **L'utilisateur fait la recette** | pas de contrôle automatique en jeu avant l'essai de l'utilisateur | 81 % des KO trouvés par lui ; 5 régressions de correctif trouvées après build (T4) |
|
||
| G3 | **Rotation des sessions incomplète** | rotation de Big Boss faite, pas celle des sessions de lot | STE vivante 79,6 h ; 13 sessions sur 25 au-dessus de 250 k ; contexte médian 295 k (T1a) |
|
||
| G4 | **Sessions réutilisées sous un nom qui ne correspond plus au lot** | règle « sessions réutilisées » sans renommage systématique | ARCH427 et TRACE1 rangées sous « STG », PUB3 sous « REL » dans l'application (T1a) |
|
||
| G5 | **Heures absentes du BOSS-JOURNAL** | lignes écrites sans horodatage | 376 lignes sur 462 sans heure ; délai décision → livraison mesurable sur 2 décisions sur 20 (T3) |
|
||
| G6 | **Release non poussée** | à confirmer : décision ou oubli | tag et `ue5.8` absents d'`origin` (T2) |
|
||
|
||
---
|
||
|
||
## 4. Recommandations chiffrées (classées par gain attendu)
|
||
|
||
Les gains sont **estimés** à partir des chiffres de P3 ; aucun n'est mesuré à l'avance.
|
||
|
||
| # | Recommandation | Axe | Gain attendu (estimé) | Coût | Risque |
|
||
|---|---|---|---|---|---|
|
||
| R1 | **Recentrer Big Boss** sur la file UE, les arbitrages et les GO ; fiches de tests, bilans et journaux confiés à un `lp-writer` (gabarit S3) ; rotation quotidienne imposée | organisation | −40 à −50 % des jetons de Big Boss (≈ −250 M sur une période comme P3, soit −8 % du total) | un lot DOC (gabarits) + règle dans `lp-lot` | moyen : plus de messages entre sessions |
|
||
| R2 | **Crochet v2** : ignorer les motifs entre guillemets et apostrophes ; autoriser l'écriture dans le scratchpad et `%TEMP%` ; crochet chargé depuis le profil seulement | outils | −36 refus à tort sur une période comme P3 (−47 %), aucun refus utile perdu sur l'échantillon relu | ½ lot (P7-H2 l'a commencé, VAL FAIL à reprendre) | moyen : une écriture déguisée en citation passerait (à couvrir par cas adverses) |
|
||
| R3 | **Contrôles en jeu automatiques avant l'essai de l'utilisateur** : relecture scriptée du journal de jeu (`Accessed None`, `-LPPersonsLog`, positions hors pièce) par cas de la fiche, PASS / FAIL avant la remise | organisation, outils | 20 à 30 % des KO détectés avant l'utilisateur (les défauts « agent » sont déjà 6 sur 48 par le journal) ; −1 à −2 builds par sprint de 13 | un script `Tools\EssaiJournal.ps1` et un gabarit de cas | faible |
|
||
| R4 | **`lp-mcp-bp` en Sonnet pour les petits correctifs** (essai ORGA2 § 5, gabarit de SPEC exécutable, script de relecture) | agents | jusqu'à −60 % du coût de `lp-mcp-bp` sur les fiches éligibles (≈ −50 à −80 M sur P3) | essai ORGA2 déjà prévu après le 2026-10-18 | moyen : plus de temps d'éditeur si l'essai échoue (règle de repli ORGA2 § 5.4) |
|
||
| R5 | **Journal au fil de l'eau** : brouillon CHG et ERR écrit dans le lot à chaque BUILD-FIN et à chaque KO (fichier `<LOT>-JOURNAL-BROUILLON.md`), versé sous jeton au commit | skills | supprime les rattrapages (JOURNAUX1-2 tenus par la session EVAL : 3 agents `lp-writer` en 5 passes, constat de l'orchestrateur, non chiffré) ; trou de journal ramené de ≈ 29 h à < 2 h | règle dans `lp-lot` et `lp-doc` | faible |
|
||
| R6 | **PubCheck dès la fiche** : `PubCheck.ps1` sur chaque livrable écrit, dans la VAL et dans le BUILD-FIN | outils | −6 refus de commit par sprint, chaîne finale plus courte | une ligne dans `lp-validate` et `lp-lot` | faible |
|
||
| R7 | **Consignes de shell dans un skill** : « tester par un fichier, lire un JSON par Read ou script, jamais `python -c` » dans `sk-windows-shell` et `lp-inventory` ; mêmes règles pour les principales | skills | −17 refus auto-infligés et 3 arrêts d'agent par période ; −26 erreurs de guillemets | un ticket addon | faible |
|
||
| R8 | **VAL « témoin en jeu »** : toute VAL PASS-STATIC d'un correctif de comportement nomme le cas de la fiche de tests qui le prouvera, et le cas est relu au bilan | agents | 3 à 4 KO après PASS par sprint reliés à leur VAL ; reprises plus courtes | règle `lp-validate` | faible |
|
||
| R9 | **Fiches `lp-cart` plus étroites** (une question, liste fermée de fichiers) et respect du modèle de l'agent | agents | hors budget de 79 % vers < 40 % (objectif estimé ; P2 : 55 %, doc 33 § 4) | règle déjà écrite (E5) à faire appliquer par les sessions de lot | faible |
|
||
| R10 | **Outils de copie nommés dans les fiches de sprint** (`CopieEtat`, `GitEtat`) et contrôle d'instantané avant écriture (avertissement si aucun `Snapshot` du lot depuis le GO) | outils | −50 % des `git status` et empreintes à la main ; 0 instantané manquant | petit lot outil | faible |
|
||
| R11 | **Registres de lot complets** (colonnes Tours, statut « acceptée ») et **BOSS-JOURNAL horodaté** | organisation | rend D-P7.16 et les délais décision → livraison mesurables | discipline + gabarit | nul |
|
||
| R12 | **Renommer une session réutilisée** au titre du lot qu'elle sert, à chaque changement de lot | organisation | mesures et messages attribués au bon lot | une ligne dans la règle des sessions | nul |
|
||
| R13 | **Pièges de poste** (MSIX, `ls-remote`, `FicheStats.AGENTS_N3`) versés dans `lp-paths`, `lp-inventory`, `FicheStats` | outils, skills | évite 1 à 2 reprises par lot d'inventaire | un ticket addon | nul |
|
||
| R14 | **Budget de tours du build** porté à 60 quand la chaîne de vérification dépasse 50 étapes, ou vérification confiée à un `lp-validator` | agents | 0 build hors budget | une ligne dans `lp-build` | nul |
|
||
|
||
---
|
||
|
||
## 5. Décisions à soumettre à l'utilisateur (liste fermée)
|
||
|
||
| # | Décision | Options | Recommandation |
|
||
|---|---|---|---|
|
||
| F1 | Clause D-P7.8 sur Big Boss (coût 20,4 % des jetons, 36 % des heures > 15 %) | (a) recentrer Big Boss (R1) et remesurer sur la prochaine période ; (b) réduire Big Boss à la file de compilation comme prévu par la clause ; (c) garder tel quel | **(a)** : la clause visait un coût de contrôles manuels ; en P3 le coût vient surtout de la tenue des essais, déléguable |
|
||
| F2 | Clause de retrait du crochet (CAM 12 à tort / 5 utiles ; la clause dit « refus légitimes », lu ici « refus de commandes légitimes ») | (a) crochet v2 (R2) avant le prochain lot, sans retrait ; (b) retrait comme prévu par la clause ; (c) garder tel quel | **(a)** : 40 refus utiles dont une vraie écriture d'asset bloquée ; l'utilisateur confirme aussi la lecture de la clause |
|
||
| F3 | Contrôles en jeu automatiques (R3) | (a) lot outil après l'alpha ; (b) non | **(a)** |
|
||
| F4 | `lp-mcp-bp` en Sonnet à l'essai (R4, ORGA2 § 5) | (a) essai ORGA2 comme prévu après le 2026-10-18 ; (b) non | **(a)** |
|
||
| F5 | Journal au fil de l'eau (R5) et PubCheck dès la fiche (R6) | (a) un lot DOC qui porte R5, R6, R7, R8, R11, R12, R13, R14 dans les skills ; (b) au cas par cas | **(a)** |
|
||
| F6 | Rotation des sessions de lot (E1 non tenu) | (a) imposer la rotation à 250 k et à chaque FIN-LOT pour toutes les sessions, avec relevé dans le BOSS-JOURNAL ; (b) inchangé | **(a)** |
|
||
| F7 | Release `v2026.10.2.1a` non poussée | (a) pousser le tag et `ue5.8` (PUB3 : publication C2) ; (b) garder en local | aucune : relève de la publication (PUB3), hors du périmètre de cette évaluation. **Décision de l'utilisateur (2026-10-14, relayée par Big Boss) : « on attends pour github » → (b), la release reste en local** |
|
||
| F8 | Doc numéroté (comme le doc 33) | (a) oui, à partir de ce rapport, numéro réservé par Big Boss ; (b) non, `etat\EVAL2\` suffit | **(a)** si l'utilisateur veut la suite des docs 31 et 33 |
|
||
| F9 | Commit des livrables EVAL2 | (a) ticket gardien après F8 ; (b) maintenant | **(a)** si F8 = a, sinon (b) |
|
||
|
||
---
|
||
|
||
## 6. Établi, estimé, incertain
|
||
|
||
- **Établi** (rejoué par script, recompté) : volumes de sessions, sous-agents, jetons, commits, tickets, CHG, ERR, refus du
|
||
crochet, builds et cas des fiches de tests.
|
||
- **Estimé** : découvreur des défauts (nature de la ligne du bilan), classement à tort / utile (règle v2, relecture de 15
|
||
lignes), gains des recommandations, retard des journaux (borne de 29 h).
|
||
- **Incertain** : coût en crédits (non mesuré) ; parallélisme maximal ; comparaison à travail égal avec P0 à P2.
|
||
|
||
## Fichiers à commiter (après F9)
|
||
|
||
`Docs/Migration/etat/EVAL2/` : `EVAL2-TACHES.md`, `EVAL2-STATS.md`, `EVAL2-RAPPORT.md`, `EVAL2-T1a-INV.md` à
|
||
`EVAL2-T6-INV.md` (T1a, T1b, T2, T3, T4, T5, T6), `EVAL2-T9-VAL.md`, `data/*.csv`, `data/*.md` (normalisés en LF après la VAL T9) ; scripts et `.txt` ignorés par git.
|
||
|
||
**VAL** : `EVAL2-T9-VAL.md`, PASS avec réserves (aucun FAIL) ; écarts E1 à E9 et les deux arrondis corrigés dans STATS et dans
|
||
ce rapport par l'orchestrateur ; E10 (lecture de la clause du crochet) porté dans F2.
|
||
|
||
Tours : sans objet (fiche de l'orchestrateur)
|