LifePlay-Revival/Docs/Migration/etat/EVAL2/EVAL2-T5-INV.md
edujiro5972 8084622450 LifePlay UE 5.8 : état de développement au 2026-10-19
Tickets : REP1-T4

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 22:57:42 +02:00

182 lines
23 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Fiche EVAL2-T5 — Niveau N1 — Modèle prévu non chiffré dans la fiche | utilisé claude-sonnet-5-5 — Agent lp-inventory — Skills sk-protocol, sk-recount, lp-paths
# EVAL2-T5-INV : fiches, VAL et écarts de protocole pendant P3 (2026-10-14)
Période P3 : 2026-10-11 05:30 → 2026-10-14 18:25:41 (UTC+2). Coupure P3a / P3b : **2026-10-13 12:07:16** (valeur communiquée par l'orchestrateur EVAL2 en cours de fiche, qui remplace la valeur provisoire 10:00 ; constante `SPLIT` des scripts). Lecture seule sur `etat\` ; écrits : ce fichier, `data\fiches.csv`, `data\fiches-registres.csv`, `data\val.csv`, `data\val-sans-verdict.txt`, `data\ecarts.csv`, `data\dp716.csv`, `data\dp716-issues.csv`, `data\fiches-stats.txt`, `scripts\eval2_fiches.py`, `scripts\eval2_val.py`, `scripts\eval2_post.py`. L'original `EVAL\scripts\eval_fiches.py` est intact (il n'a pas été ouvert en écriture).
## 1. Commandes exactes
```
python -I -X utf8 "D:/Game/LifePlay-master 5.8/Docs/Migration/etat/EVAL2/scripts/eval2_fiches.py" (fiches, registres, candidats d'écarts, S / C9a ; écrit aussi data\fiches-stats.txt)
python -I -X utf8 "D:/Game/LifePlay-master 5.8/Docs/Migration/etat/EVAL2/scripts/eval2_val.py" (verdicts de VAL, remplace data\val.csv)
python -I -X utf8 "D:/Game/LifePlay-master 5.8/Docs/Migration/etat/EVAL2/scripts/eval2_post.py" (écarts retenus, jointure S / C9a avec les registres)
Grep (count) sur data\fiches.csv : ",VAL," -> 87 ; ",P3b," -> 356 ; "10:14:42" -> 66 ; sur data\val.csv : ",PASS-STATIC,\d+,PASS-STATIC," -> 34 ; sur data\ecarts.csv : retenus -> 41
Grep \r sur les CSV et le .txt de data\ -> 0 fichier (LF)
Grep / Read ciblés : P7-TACHES.md l. 28-30, STG-TACHES.md l. 40, BOSS-JOURNAL.md (écarts), COMMUN-2/6/8/9/10/12-BILAN.md (lignes des cas KO), 33_Eval_Organisation_72h.md l. 70-124, P7-DECISIONS.md l. 24
```
Définitions : celles de l'EVAL (doc 33 § 4, `eval_fiches.py`) : en-tête complet = modèle prévu + utilisé + agent + skills + « Niveau Nx » dans les 1 500 premiers caractères ; ligne Tours = `Tours :` en début de ligne n'importe où ; statut canonique d'un registre = premier mot-clé du gabarit (`faite`, `en cours` en classes hors gabarit). Fenêtre par **date de modification** (comme l'EVAL). Écarts au script d'origine : dossiers `fiches\` classés rôle FICHE (fiches d'envoi, hors livrables) ; EVAL et EVAL2 exclus ; sous-dossiers `AG\*` traités comme des lots ; rattachement des lignes de registre à P3 par la date des livrables `.md` cités dans la ligne.
## 2. Comptes bruts
### 2.1 Fichiers et livrables (sortie de `fiches-stats.txt`)
```
Fichiers sous etat (hors EVAL, EVAL2) : 2387 ; modifies dans la fenetre : 1058 (.md 641) ; posterieurs a la borne : 0 (.md 0)
P3a : INV 16 ; CART 2 ; DIAG 3 ; SPEC 9 ; IMPL 32 ; BUILD 13 ; VAL 30 ; DOC 18 ; INT 10 ; EVAL 3 ; FICHE 57 ; TACHES 12 ; autre 80 ; total 285
P3b : INV 3 ; CART 6 ; DIAG 24 ; SPEC 14 ; IMPL 62 ; BUILD 17 ; VAL 57 ; DOC 4 ; INT 2 ; EVAL 6 ; FICHE 62 ; TACHES 6 ; autre 93 ; total 356
tout : INV 19 ; CART 8 ; DIAG 27 ; SPEC 23 ; IMPL 94 ; BUILD 30 ; VAL 87 ; DOC 22 ; INT 12 ; EVAL 9 ; FICHE 119 ; TACHES 18 ; autre 173 ; total 641
```
Recompte par une autre méthode : `Grep ",VAL," data\fiches.csv` = 87 ; `Grep ",P3b," data\fiches.csv` = 356 (identiques).
### 2.2 Qualité des livrables de rôle (331 livrables, hors FICHE, TACHES, autre)
```
P3a : 136 livrables ; en-tete complet 124/136 = 91.2 % ; niveau 125/136 = 91.9 % ; ligne Tours 86/136 = 63.2 % ; etat de reprise 1/136 = 0.7 %
P3b : 195 livrables ; en-tete complet 152/195 = 77.9 % ; niveau 172/195 = 88.2 % ; ligne Tours 141/195 = 72.3 % ; etat de reprise 2/195 = 1.0 %
tout : 331 livrables ; en-tete complet 276/331 = 83.4 % ; niveau 297/331 = 89.7 % ; ligne Tours 227/331 = 68.6 % ; etat de reprise 3/331 = 0.9 %
Livrables sans ligne Tours, par role : IMPL 32 ; DIAG 13 ; INT 10 ; SPEC 10 ; EVAL 7 ; DOC 7 ; CART 7 ; BUILD 6 ; INV 6 ; VAL 6
Valeurs Tours n/b : 221 ; n > b : 10 : CAM-B2b-IMPL-F5 (62/60) ; CAM-B2n-IMPL (63/60) ; CAM-B2p-G-PC-IMPL (63/60) ; OUTC-VAL-B (57/55) ; STE-GEL1-D1 (18/15) ; STE-GEL1-IMPL (41/40) ; STE-H3g-IMPL (53/50) ; STE-ORG-AUDIT (37/35) ; STE-ORG4c-IMPL (51/50) ; STE-ORG4c-Ic1 (50/45)
```
Les 10 dépassements = 4,5 % des 221 valeurs lisibles, de 1 à 5 tours chacun (maximum +5 : STE-ORG4c-Ic1). Lecture : les `Tours` sont déclarés par les agents (sous-comptés, `sk-protocol` § 8) ; non recomptés par `FicheStats.py` ici.
Par lot (extrait, livrables de rôle ; tableau complet dans `data\fiches-stats.txt` § C) :
| Lot | Livrables .md | Rôles | En-tête complet | Ligne Tours | VAL |
|---|---|---|---|---|---|
| CAM | 91 | 68 | 44/68 = 64,7 % | 43/68 = 63,2 % | 19 |
| ST/STG | 101 | 76 | 56/76 = 73,7 % | 56/76 = 73,7 % | 22 |
| ST/STE | 103 | 47 | 45/47 = 95,7 % | 44/47 = 93,6 % | 12 |
| AG/P7 | 45 | 20 | 19/20 = 95,0 % | 17/20 = 85,0 % | 4 |
| REL | 31 | 14 | 14/14 = 100 % | 9/14 = 64,3 % | 5 |
| OUTC | 16 | 10 | 10/10 = 100 % | 9/10 = 90,0 % | 2 |
| AG/TRACE1 | 20 | 12 | 12/12 = 100 % | 11/12 = 91,7 % | 3 |
| AG/PUB3 | 12 | 9 | 8/9 = 88,9 % | 3/9 = 33,3 % | 3 |
### 2.3 Registres : lignes de fiche rattachées à P3 (246 sur 429 ; 44 lignes sans livrable `.md` daté, non classables)
```
Total P3 : statuts faite 121 ; acceptée 60 ; autre 31 ; reçue 14 ; en cours 10 ; envoyée 5 ; reprise 2 ; à faire 2 ; relayée 1
Total P3 : niveaux N0 21 ; N1 87 ; N2 38 ; N3 62 ; N4 1 ; sans 37
```
Par lot (statuts, tentatives `b/c/d` dans le nom de fiche, mot « hors budget », cause de reprise lue par mots-clés) :
| Lot | Lignes P3 | Niveaux | Statuts | Tentatives b/c/d | « hors budget » | Cause (mots-clés) |
|---|---|---|---|---|---|---|
| ST/STG | 56 | N0 16, N1 4, N2 9, N3 24, sans 3 | faite 41, autre 13, en cours 1, envoyée 1 | 0 | 0 | — |
| CAM | 37 | N1 3, N2 7, N3 22, N4 1, sans 4 | faite 27, acceptée 4, autre 3, reprise 2, en cours 1 | 1 | 1 | agent 3 |
| AG/P7 | 21 | N0 2, N1 16, N2 2, N3 1 | acceptée 14, reçue 5, relayée 1, en cours 1 | 4 | 1 | budget 1, consigne 1 |
| AG/TRACE1 | 17 | N1 9, N2 2, N3 3, sans 3 | faite 11, reçue 5, en cours 1 | 2 | 0 | — |
| ST/STE | 14 | N1 2, N2 2, N3 6, sans 4 | faite 13, en cours 1 | 2 | 0 | agent 2 |
| ARCH427 | 12 | N1 6, sans 6 | acceptée 6, faite 3, autre 2, en cours 1 | 0 | 0 | — |
| OUTC | 11 | N1 7, N2 4 | acceptée 3, envoyée 3, reçue 3, faite 2 | 1 | 0 | budget 1, consigne 1 |
| AG/PUB3 | 7 | N1 4, N2 2, N3 1 | faite 5, autre 2 | 0 | 0 | — |
| AG/VERR1 | 7 | N1 3, N2 2, sans 2 | acceptée 3, faite 3, autre 1 | 0 | 0 | agent 1 |
| REL | 5 | N1 2, N3 3 | en cours 2, autre 2, à faire 1 | 0 | 0 | agent 1 |
| autres (14 lots) | 59 | voir `fiches-stats.txt` § D | — | 9 | 3 | — |
Statut `escaladée` : 0 ligne. Lignes `reprise` : 2 (CAM), `relayée` : 1 (P7-H2, `sk-protocol` § 9). Cause de reprise « consigne » (P7-H2v → H2b : « cause consigne (fiche H2 4b) », `P7-TACHES.md:29-30`) : établie sur P7 ; les autres causes viennent d'une lecture par mots-clés (incertain).
### 2.4 VAL de P3 (87 fichiers de rôle VAL modifiés dans la fenêtre ; `data\val.csv`)
Sortie de `eval2_val.py` (jeton du verdict par heuristique) :
```
VAL : 87
dernier : PASS 41 ; PASS-STATIC 38 ; FAIL 7 ; BLOCKED-jeton-UE 1
P3a : 30 VAL ; dernier PASS 26 ; FAIL 3 ; PASS-STATIC 1
P3b : 57 VAL ; dernier PASS-STATIC 37 ; PASS 15 ; FAIL 4 ; BLOCKED-jeton-UE 1
Sans verdict trouve : 0
```
**Corrections après relecture à la main** (Grep des lignes `FAIL` dans les 9 fichiers concernés) : 2 « FAIL » sont faux (`OBP-T1-VAL.md:61` « aucune n'a justifié un FAIL » ; `STG-SF5m-VAL.md:93` « aucun n'est un FAIL ») ; 66 fichiers `.md` portent la même heure de modification `2026-10-13 10:14:42` (`Grep "10:14:42" fiches.csv` = 66), dont **11 VAL de lots plus anciens** (AG-T8, OBB-T1, OBB-T1b, OBB-T3, OBP-T1, OBP-T2, STE-VAL, TPL1, U4-T6, U7b-T6, U8-T5c : retouche en bloc, tous PASS en fin). Les VAL **produites en P3** sont donc 87 − 11 = **76** (estimé : la retouche en bloc n'est pas expliquée par une source).
| Verdict final (76 VAL de P3) | Total | P3a (19) | P3b (57) |
|---|---|---|---|
| PASS | 31 (40,8 %) | 16 | 15 |
| PASS-STATIC | 39 (51,3 %) | 1 | 38 |
| FAIL | 5 (6,6 %) | 2 (PUB3-T6a, STE-H10) | 3 (P7-H2, STG-M1d, STG-WALK) |
| BLOCKED | 1 (CAM-B2r, jeton UE) | 0 | 1 |
Les P3b sont à 67 % PASS-STATIC (38/57) contre 5 % en P3a (1/19) : effet de la file de compilation (build seulement après les VAL statiques, COMMUN-2 à 13) et des lots STG / CAM / STE sans éditeur, estimé.
VAL ayant rendu au moins un verdict FAIL (9 sur 76 = 11,8 %), avec la reprise :
| VAL | Fichier:ligne | Nature du FAIL | Reprise |
|---|---|---|---|
| P7-H2-VAL | `AG/P7/P7-H2-VAL.md:4,80` | 28 cas adverses passent le nouveau crochet ; « cause consigne » (`P7-TACHES.md:29`) | P7-H2b (tentative 2/4) reçue partielle ≈ 45 min plus tard (3 h 20 → 4 h 05, `P7-TACHES.md:29-30`), 34 tours, 366 k, 42 min ; la VAL H2v : 20 tours, 226 k, 24 min |
| STG-WALK-VAL | `ST/STG/STG-WALK-VAL.md:6,76` | P2, P5 FAIL (prémisse fausse sur `AnimToPlay`) | `STG-WALK-VAL2.md` PASS-STATIC ; mtime des deux VAL à 2 min 23 s d'écart (21:21:36 → 21:23:59, l'IMPL de la passe 2 entre les deux : non retrouvée) |
| STG-M1d-VAL | `ST/STG/STG-M1d-VAL.md:76` | appel non compilable `GetLength()` sur objet const | `STG-M1d-VAL2.md` PASS-STATIC ; mtime 00:56:30 → 00:58:08 (1 min 38 s) |
| STE-H10-VAL | `ST/STE/STE-H10-VAL.md:56` | FAIL « au sens littéral » : CompileAllBlueprints 3 erreurs (assets `CC_Shaders` introuvables), cause externe | aucune VAL de reprise (autres critères PASS) ; le lot continue (DOC, INT présents) |
| PUB3-T6a-VAL | `AG/PUB3/PUB3-T6a-VAL.md:4,79` | « verdict historique FAIL (script avant corrections) » | `PUB3-T6a-bis-VAL.md:70` PASS avec réserve D8 (mtimes égaux, délai non mesurable) |
| PUB3-T6b-VAL | `AG/PUB3/PUB3-T6b-VAL.md:26,52` | FAIL strict (lettre du critère 1), cause bénigne | pas de VAL de reprise relevée |
| STE-H3d-VALJEU | `ST/STE/STE-H3d-VALJEU.md:22,57` | FAIL du seul critère 3 (E1 : 2 occurrences contre ≤ 1) | critère traité en E1 ; verdict final du fichier PASS (l. 76) |
| CAM-B2p-E-VAL | `CAM/CAM-B2p-E-VAL.md:80,164` | 1re passe FAIL (B1 : local masquant un membre) | reprise dans le même fichier § 7 : PASS-STATIC |
| CAM-B2p-J-VAL | `CAM/CAM-B2p-J-VAL.md:6,152,159` | 1re passe FAIL (D1 bloquant, échelle des deltas) | reprise dans le même fichier : PASS-STATIC |
Taux de FAIL : 5 FAIL finaux sur 76 (6,6 %) ; 9 VAL avec FAIL à un stade sur 76 (11,8 %). Cause de reprise après FAIL : consigne 1 établi (P7-H2) ; défaut de l'implémentation 5 (WALK, M1d, B2p-E, B2p-J, H3d) ; cause externe 1 (H10) ; script 1 (PUB3-T6a) ; 1 non classée (T6b).
### 2.5 PASS-STATIC suivis d'un KO en jeu (croisement avec `data\commun.csv` et les bilans COMMUN)
Établis par la ligne du bilan qui nomme le correctif et le KO (colonne `regression` de `commun.csv` = `insuffisant`) :
| Correctif (VAL) | Verdict VAL | KO en jeu sur le même défaut | Source |
|---|---|---|---|
| S-F5m (`STG-SF5m-VAL.md`) | PASS-STATIC (l. 5, 91) | C9 P3 : « S-F5m a joué contre la façade » (joueur écarté de 7,5 cm), nouveau correctif S-F5p ; déjà C8 O5 (S-F5m et S-F5n annoncés) | `COMMUN-9-BILAN.md:13`, `COMMUN-8-BILAN.md:24` |
| B2p-E (`CAM-B2p-E-VAL.md`) | PASS-STATIC final (1re passe FAIL) | C10 Q1 KO : « la borne de B2p-E repose sur Room.Box, qui dépasse les murs de plus d'1 m » | `COMMUN-10-BILAN.md:11` |
| B2q-a (`STG-B2q-VAL.md`) | PASS-STATIC (l. 132, 152) | C8 N1 OK partiel : « B2q-a aide, mais au café l'homme puis Bridget disparaissent » ; B2q-b1 (`STG-B2qb-VAL.md`, PASS-STATIC) confirmé OK en C9 P1 | `COMMUN-8-BILAN.md:21`, `COMMUN-9-BILAN.md:11` |
| B2s (`CAM-B2s-VAL.md`) | **PASS** (V7 non rejouable par la VAL) | C6 J5 KO « C1 à côté de la tête… Correctif B2s » (colonne `insuffisant`) | `COMMUN-6-BILAN.md:16` |
Soit 3 PASS-STATIC (+ 1 PASS dont l'essai en jeu était reporté) suivis d'un KO ou d'un partiel sur le même cas, sur 5 cas marqués `insuffisant` dans `commun.csv` (J5, N1, P3, Q1, S3). S3 (C12, « le lit nous interdit de se poser ») : le correctif visé n'est pas nommé dans la ligne lue (non rattaché). Le croisement exhaustif cas par cas (chaque cas KO ↔ chaque VAL) n'a pas été fait : seuls les cas `insuffisant` ont été suivis. Sur les 38 PASS-STATIC de P3b, 3 sont ainsi établis suivis d'un KO (≈ 8 %, borne basse).
### 2.6 Écarts de protocole (`data\ecarts.csv`, 274 lignes candidates ; 41 retenues après relecture)
Candidats par catégorie (regex, `fiches-stats.txt` § F) : instantané 22 lignes / 19 fichiers ; redirection 220 / 52 ; **statut sauté 0** ; avant gel 5 / 4 ; hors file 9 / 3 ; « écart de protocole / constaté / de méthode » 18 / 17. Retenues par type : refus_crochet 20 ; ecart_methode_agent 8 ; instantane_manquant 7 ; instantane_declare_sans_objet 2 ; ecriture_avant_gel 2 ; instantane_tardif 2.
Liste nominative des écarts de protocole au sens de la fiche (hors refus du crochet, domaine EVAL2-T6) :
| Type | Cas | Chemin:ligne | Effet noté |
|---|---|---|---|
| Instantané manquant | ORG5-I2a : `sk-change-safety` non invoqué, aucun instantané avant modification de `LPBonusRewardSubsystem.h/.cpp` (fichiers I1 non suivis) | `ST/STE/STE-ORG5-I2a-IMPL.md:117` ; risque `:153` | retour arrière impossible ; cas connu ORG5 |
| Instantané tardif | ORG5-I1 : `sk-change-safety` invoqué après l'écriture des 2 fichiers neufs | `ST/STE/STE-ORG5-I1-IMPL.md:78` | sans effet (fichiers neufs) |
| Règle tirée | consigne « Snapshot avant toute IMPL sur fichier non suivi » | `ST/STE/STE-PASSATION.md:83` | — |
| Instantané manquant | B2n : l'état de B2k seul n'a pas d'instantané | `CAM/CAM-B2n-IMPL.md:47` | B2k non restaurable seul |
| Instantané manquant | `.h` de DirectControl sans instantané | `ST/STG/STG-SF5-C1W-VAL.md:50` | MD5 égal à la valeur KO3b |
| Instantané manquant (brouillon) | « instantané d'I1 absent (écart STE) » | `BOSS/JOURNAUX1/CHG-brouillons.md:124` | reprise de l'écart ORG5 |
| Sans objet déclaré | T4b : fichiers `TRACE1-T4b-*` sans instantané | `AG/TRACE1/TRACE1-T4b-IMPL.md:81` | déclaré |
| Sans objet déclaré | T1b : pas d'instantané de `ORGA1-SPEC.md` | `AG/ORGA1/ORGA1-T1b-IMPL.md:41` | déclaré, non destructif |
| Écriture avant gel | STG-M1 écrit dans `Source/` avant le gel de Big Boss pour le build V7 de CAM (2026-10-13 13:42) | `BOSS/BOSS-JOURNAL.md:457` (doublon `BOSS/JOURNAUX1/SUIVI-propositions.md:129`) | « écart sans conséquence » (archive V7 finie 13:41:05, exe sans M1) |
| Méthode (agent) | Edit au lieu du script, script non exécuté en écriture | `AG/ORGA1/ORGA1-T1b-IMPL.md:37`, `AG/ORGA1/ORGA1-T1-VAL.md:27` | sans effet |
| Méthode (agent) | 2 appels MCP envoyés en parallèle | `CAM/CAM-B1-IMPL.md:50` | règle « ne pas chevaucher » |
| Méthode (agent) | `rm -f` refusé par les permissions | `OUTC/OUTC-VAL-B.md:104` | aucune suppression |
| Méthode (agent) | DIAG demandé en lecture seule, l'agent a fait davantage | `ST/STG/STG-COMMUN3-ANALYSE.md:11` | signalé par l'agent |
| Méthode (agent) | redirection d'entrée vers le fichier nul malgré la consigne, non refusée par le crochet | `ST/STE/STE-ORG5-V2-VAL.md:73` | sortie ignorée |
| Méthode (agent) | MD5 en échec (échappement `$f`), lecture seule, refait | `ST/STG/STG-D2-INV.md:97` | bénin |
Cas non retrouvés dans les sources lues, à ne pas présenter comme établis :
- **Redirection du gardien** : 0 ligne dans `etat\REPO\` (`Grep redirig|redirect|redirection -i` → « No matches found ») ; les 220 lignes « redirection » de la regex concernent le **crochet** `ecriture-gardien` (`>` lu comme redirection : refus à tort), 19 d'entre elles retenues comme `refus_crochet` (`P7-T8a-INV.md:46`, `CAM-B2f-VAL.md:114`, `CAM-B2i-VAL.md:177`, `CAM-B2kmn-VAL.md:202`, `CAM-B2p-G-PC-VAL.md:237`, `CAM-B2p-H-VAL.md:201`, `CAM-B2p-I-VAL.md:185`, `CAM-B2p-J-PC-IMPL.md:193`, `CAM-B2p-R-VAL.md:196`, `CAM-B2s-VAL.md:188`, `STE-H10-GI2-IMPL.md:195,285`, `STE-ORG-AUDIT.md:156,161,301`, `STG-FACADE-IMPL.md:216`, `STG-SF4-VAL.md:83`, `STG-SF5-C1W-VAL.md:168`, `BOSS-JOURNAL.md:389`). Liste non exhaustive : les 200 autres lignes sont « non relu ».
- **Statuts de ticket sautés** : 0 ligne (regex `statut[s] … saut`) ; la mesure relève de EVAL2-T2 (tickets, `REPO-JOURNAL.md`), pas relue ici.
- **Travail hors file de la copie UE** : aucune ligne de P3 ; les 9 lignes « hors file » sont du 2026-10-10 (`BOSS-JOURNAL.md:71,76,84,116-120,232,235`, hors période) ou une règle (`CAM-TACHES.md:7`).
### 2.7 Essai D-P7.16 (doc 33 § 7 ; décision `P7-DECISIONS.md:24`)
`data\dp716.csv` (169 lignes avec « S = » ou « C9a », 79 fichiers) ; `data\dp716-issues.csv` (52 fiches d'envoi : `fiches\*.md` et `*-FICHE.md`) :
```
fichiers avec S ou C9a : 79 ; fiches d'envoi : 52
fiches avec S ET C9a : 35 ; S seul : 2 ; C9a seul : 15
par lot : ST/STE 37 ; CAM 12 ; AG 2 ; ST/STG 1
rattachees a une ligne de registre : 16 / 52
S>=seuil (scission prevue) : 3 ; S<seuil : 26 ; S sans seuil lisible : 8
```
Lecture : **l'essai n'a été appliqué que par STE (37 fiches sur 52) et CAM (12)** ; STG n'en porte qu'une, REL, OUTC, TRACE1 (2 lignes de registre « S = 0 », `TRACE1-TACHES.md:27,29`), P7 (`P7-T4b-EVAL.md` a le barème, `P7-TACHES.md:23,25` des cases) l'utilisent peu ; le registre `STG-TACHES.md` n'a que des notes « a b c d e f = n → Nx » sans S.
Issues des fiches portant S et C9a (la jointure aux registres ne réussit que pour 16 fiches sur 52 : le registre STE regroupe des fiches ; issue lue donc sur les livrables nommés comme la fiche) :
- Fiches STE avec S < seuil dont le livrable dépasse le budget `Tours` : STE-GEL1 (S = 2 < 3 ; `STE-GEL1-IMPL.md` 41/40), STE-GEL1-D1 (S = 0 ; 18/15), STE-H3g (S = 2 < 3 ; `STE-H3g-IMPL.md` 53/50), STE-ORG (S = 2 < 3 ; `STE-ORG-AUDIT.md` 37/35), STE-ORG4c (S = 2 < 3 ; `STE-ORG4c-IMPL.md` 51/50), STE-ORG4-Ic1 (S = 2 < 3 ; `STE-ORG4c-Ic1.md` 50/45 : appariement par nom, estimé) → **6 hors budget sur 35 fiches S + C9a (17 %)**, toutes de 1 à 5 tours ; les 29 autres sont dans le budget ou sans valeur lisible.
- S ≥ seuil (scission prévue dans la fiche) : STE-ORG5 (S = 3 ≥ 3), STE-ORG5-V1 et V2 (S = 2 ≥ 2) : 3 fiches ; suivi par les fiches ORG5-I1, I2, I2a, V1, V2 ; `STE-ORG5-I2a-IMPL` porte l'écart d'instantané (2.6). Pas d'escalade ni de reprise de ces fiches.
- Reprises : cause « agent » lue 1 fois parmi les fiches rattachées au registre (mots-clés) ; aucune reprise ni escalade établie sur une fiche S + C9a. CAM : `CAM-B2p-SPEC.md:8,123,251` note C9a (« sources relues le jour même ») ; CAM-B2k-FICHE `:9` « S = … 1 = 2 < 3 : une fiche ».
- **Comparaison à un témoin sans S / C9a** : non faite (la fiche ne la demande pas, et aucun registre ne note S pour les fiches hors essai).
## 3. Écarts au compte attendu de la fiche
- Coupure P3a / P3b : la fiche donnait 2026-10-13 10:00 (provisoire) ; remplacée en cours de fiche par **12:07:16** (message de l'orchestrateur) ; `SPLIT` mis à jour dans `eval2_fiches.py`, tous les comptes P3a / P3b ci-dessus sont à 12:07:16. Effet : le script avait déjà été écrit avec 10:00 ; la sortie citée ici provient de l'exécution après le changement (`fiches-stats.txt` l. 1).
- « Reprise après FAIL (délai, nombre de tours) » : les tours des VAL de reprise ne sont donnés que pour P7-H2v / H2b (colonne Tours de `P7-TACHES.md`) ; pour les autres, les registres STG / CAM / STE ne portent pas de colonne Tours (ils sont des notes libres) et `Tools/FicheStats.py` n'a pas été lancé (hors fiche). Délais en minutes d'après les heures de modification (voir 4).
- « Statuts de ticket sautés » et « redirection du gardien » : 0 retrouvé (2.6). Ce n'est pas la preuve d'une absence : la fiche cite le cas ORG5 pour l'instantané seulement.
- La mesure 1 « statut acceptée / reprise / hors budget / escaladée » est approximative : les registres STG, CAM, STE écrivent « faite » (121 lignes P3) plutôt que « acceptée » (60) ; 0 `escaladée` ; hors budget = n > b dans la ligne `Tours` du livrable (10) ou mot « hors budget » dans la ligne (5 lignes de registre).
## 4. Établi / estimé / incertain
**Établi** (sortie rejouée, source citée) : comptes de livrables par rôle et phase (641 ; 87 VAL ; 356 en P3b, recomptés par Grep) ; taux d'en-tête, de « Niveau Nx » et de ligne Tours ; 10 valeurs `Tours` n > b ; verdicts finaux des 9 VAL à FAIL relus à la source (lignes citées) ; 4 correctifs PASS-STATIC / PASS suivis d'un KO (lignes de bilan citées) ; liste des écarts d'instantané, d'écriture avant gel et de méthode (chemin:ligne relus) ; 0 ligne sur les statuts sautés et la redirection du gardien dans `etat\REPO\`.
**Estimé** : 76 VAL produites en P3 (87 moins 11 retouchées en bloc à 10:14:42, hypothèse d'une retouche de masse non expliquée) ; effet de la file de compilation sur la part de PASS-STATIC ; délais de reprise par mtime (WALK 2 min 23 s, M1d 1 min 38 s : les deux VAL ont pu être écrites à la suite dans la même session) ; 8 % de PASS-STATIC suivis d'un KO (borne basse).
**Incertain** : (a) fenêtre par date de modification : un livrable de P3 retouché après le 14 18:25:41 ou un livrable ancien retouché en P3 est compté de travers (0 `.md` postérieur à la borne : le script s'est exécuté avant d'autres écritures, `CAM-B2j-VAL.md` et `STG-SF4*-VAL.md` ont 18:22:58) ; (b) rattachement des lignes de registre à P3 par les `.md` cités (44 lignes sans date) ; (c) cause de reprise par mots-clés ; (d) croisement KO ↔ VAL limité aux cas `insuffisant` (S3 non rattaché) ; (e) jointure S / C9a ↔ registre 16 / 52 ; (f) les 200 lignes « redirection » non relues peuvent contenir un écart du gardien (essai qui trancherait : lire ces 200 lignes de `data\ecarts.csv`, ou `Grep -i "gardien.*(redirig|renvoy)"` sur `REPO-JOURNAL.md`, en lecture) ; (g) détection de verdict par jetons : un FAIL ou un PASS cité dans une phrase peut fausser (2 faux corrigés à la main ; les 87 non relus un à un) ; (h) `BOSS-JOURNAL.md` contient de nombreuses lignes très longues non affichées par Grep : la recherche d'écarts y est partielle pour les formulations hors regex.
Tours : 30 / 40
## Constats
- Pièges outil : Grep sans `-o` « omet les lignes longues » des registres (`[Omitted long matching line]` pour `P7-TACHES.md`, `STG-TACHES.md`) : Read avec `offset` / `limit` pour les lire. Un `.md` retouché en bloc (66 fichiers à 10:14:42) fausse tout inventaire par date de modification : à noter pour l'EVAL (EVAL2-STATS).
- Fichiers écrits (aucun fichier suivi par git modifié ; tous sous `Docs\Migration\etat\EVAL2\`, non commités) : `EVAL2-T5-INV.md`, `data\fiches.csv`, `data\fiches-registres.csv`, `data\val.csv`, `data\val-sans-verdict.txt`, `data\ecarts.csv`, `data\dp716.csv`, `data\dp716-issues.csv`, `data\fiches-stats.txt`, `scripts\eval2_fiches.py`, `scripts\eval2_val.py`, `scripts\eval2_post.py`. Ordre de rejeu : `eval2_fiches.py`, `eval2_val.py`, `eval2_post.py`.
- À verser : `lp-inventory` / `sk-protocol` § 7 — pour lire une ligne de registre longue, `Read` avec `offset` et `limit` (Grep l'omet) ; `lp-doc` § TACHES — les registres STG / CAM / STE n'ont ni colonne Tours ni « acceptée » : l'issue d'une fiche ne se mesure pas par le registre.