LifePlay-Revival/Docs/Migration/etat/OB/OBB/OBB-EVAL.md

201 lines
35 KiB
Markdown
Raw Permalink Normal View History

Fiche OBB-EVAL — Niveau N1 — Modèle prévu modèle de l'agent lp-writer | utilisé Sonnet 5.5 (claude-sonnet-5-5) — Agent lp-writer — Skills sk-protocol, lp-doc (gabarit EVAL), lp-lot, sk-recount
# OBB-EVAL : évaluation de clôture du lot OBB (OB-1, bloquants de publication B1 à B3) (2026-10-10)
Hors gabarit : la fiche impose 8 sections (résultat par bloquant, fiches, indicateurs, écarts de consigne, refus d'autorisations, pièges, reports, fichiers) au lieu des 6 du gabarit EVAL de `lp-doc`. Correspondance : gabarit 1 à 4 → § 2 et § 3 ; gabarit 4b (commits du lot) → § 1.4 ; gabarit 5 (pièges) → § 6 ; gabarit 6 (décision) → § 7.8. Livrable en lecture seule des amonts : aucun livrable amont n'est réécrit, aucune commande rejouée sur les builds (les recomptes cités sont ceux des livrables et du registre, sources données). Sources principales : `OBB-TACHES.md` (registre, état du 4074d90), les 22 livrables de `etat\OB\OBB\`, les tickets `etat\REPO\tickets\OBB-R1.md` à `OBB-R9.md`, `python -I Tools/FicheStats.py --lot OBB` (rejoué ici), `git log`. Les faits (a) à (c) de l'orchestrateur, non portés au registre, sont marqués « fait de l'orchestrateur ».
## 1. Résultat par bloquant (B1, B2, B3)
Les trois bloquants sont prouvés dans un Shipping 5.8 neuf (établi : `OBB-T7-VAL.md` § 3 et § 5, `OBB-T7c-BUILD.md` Constats).
### 1.1 Tableau
| Bloc. | Objet | Résultat | Preuve (source) | CHG | Commits |
|---|---|---|---|---|---|
| B1 | `.git` du dépôt local de `Content\Modules` (142 fichiers, 450 763 872 o) embarqué dans tous les paquets 5.8 (doc 21 l. 227) | **corrigé et prouvé** | Source : dépôts déplacés hors de l'arbre, `D:\Game\LifePlay_ModulesGit\5.8.git` et `5.5.git` + `core.worktree` (`OBB-INT-R6.md`, `OBB-INT-R7.md`, `OBB-T1-VAL.md` § 3, PASS : HEAD `ade587f`, 115 / 428 commits, status inchangé). Paquet : `CheckPackage.ps1` [1] PASS 0 sur `Shipping_OBB` et `Shipping_OBB2` ; manifeste NonUFS 2 213 lignes (U8) → 2 071 (OBB) = −142, 142 chemins `Modules/.git` seulement côté U8 ; 0 entrée `.git*` (`-Recurse -Force`) ; −450 763 872 o et −142 fichiers à l'octet près (`OBB-T7-VAL.md` § 3.2 à 3.4) | CHG-304 (remplacements, étape 1), CHG-307 (déplacements, étapes 2-3), CHG-308 (preuve) | `8b884a6`, `247af5a`, `5b34499` (étape 1) ; `ac3a176` (étapes 2-3, docs) ; `4074d90` (preuve) |
| B2 | Addon `LPSandbox` / `LPAnimMeasure` lié à l'exe Shipping et descripteur au pak (doc 21 l. 226) | **clos** | Correctif antérieur au lot : `TargetAllowList: ["Editor"]` sur la référence `LPSandbox` (`67d3e68`, CHG-279, `OBB-T6-INV.md` l. 110). Dans le lot : OBB-T6 (L1 : V1.5 publiée sans addon ; L2 : `TargetConfigurationDenyList` lu par le moteur et UBT 5.8) ; décision de l'utilisateur « sandbox non lancée en Development » → clé conservée, B2 clos (`OBB-TACHES.md` l. 32-33). Paquet : [2] UFS `LPSandbox` 0 (U8 : 1), [3] `.rsp` `LPAnimMeasure` 0, [4] `.target` `BuildPlugins` sans `LPSandbox` (226 entrées), exe OBB `LPAnimMeasure` 0 par lecture binaire (U8 : 1) (`OBB-T7-VAL.md` § 2, § 3.2) | CHG-308 (aucun changement de code dans le lot) | `4074d90` |
| B3 | Aucun contrôle de paquet avant publication | **corrigé et prouvé** | `Tools/CheckPackage.ps1` (neuf, 228 lignes, 4 contrôles en lecture seule), appelé par `BuildDebug.ps1` et `SplitModules.ps1`. Preuve par l'échec rejouée par la VAL : `Shipping_U8` code 1 ([1] FAIL 142, [2] FAIL 1), `Shipping_AP7` (projet 5.5) [2] à [4] FAIL, DC4 (projet 5.5) 4 PASS, build absent code 3 (`OBB-T3-VAL.md` § 3, § 5) ; en réel : 4 PASS code 0 sur `Shipping_OBB` (T7b) et `Shipping_OBB2` (T7c), rejoués par la VAL (`OBB-T7-VAL.md` § 3.1) | CHG-301 (outil), CHG-308 (preuve réelle) | `6eb1544`, `4074d90` |
### 1.2 Limites de la preuve (établi, sauf mention)
- Le paquet embarque des fichiers non commités du moment : `MainMenu` (STF), `GI` (STE), `Clothes4.txt` des Modules (−12 o), et `CharGen` d'avant la modification STE-TXT de 13:17 (source 13:17:29, cuit 13:09:11) (`OBB-T7c-BUILD.md` Constats). Les 4 contrôles n'en dépendent pas ; les archives ne sont donc pas des candidats de publication (estimé : le contenu de jeu diffère de l'état commité).
- [3] PASS ne prouve pas la fraîcheur du `.rsp` : le contrôle n'écarte qu'un `.rsp` postérieur de plus de 10 min à l'exe (`OBB-T7-VAL.md` § 2 (a') et C3). La fraîcheur est établie autrement, par lecture binaire de l'exe (`LPAnimMeasure` 0 ; témoin U8 1).
- `BuildDebug.ps1` et `SplitModules.ps1` n'ont jamais tourné en réel dans le lot : le branchement de `BuildDebug.ps1` est PASS-STATIC (UAT interdit, `OBB-T3-VAL.md` § 3.5) ; `SplitModules.ps1` est prouvé sur copie jetable sans déplacement ; T7a a utilisé `Build.ps1`, T7b et T7c ont lancé UAT directement puis `CheckPackage.ps1` à la main (`OBB-T7b-BUILD.md` § 1, `OBB-T7c-BUILD.md` § 1).
- Démarrage : fait sur `Shipping_OBB` (pas sur `OBB2`, exe identique, SHA-256 `E590CCF1…FC11`) : 155 s vivant, `Responding : True`, 0 `CrashReportClient`, `%LOCALAPPDATA%\LifePlay\Saved` inchangé (73 fichiers, 0 différence), 16 modules `vin_*` lus sans `.git` (`OBB-T7s-VAL.md` § 3). « Jusqu'au menu » **estimé**, non vu à l'écran (§ 3 E) ; Nouvelle partie / Continuer / mods : non faits.
- La correspondance PDB ↔ exe n'est pas prouvée (`dumpbin` absent, GUID du PDB non lu : `OBB-T7c-BUILD.md` Incertitudes).
### 1.3 Chiffres du paquet (sources : `OBB-T7-VAL.md` § 3.3, `OBB-T7b-BUILD.md` Mesures, `OBB-T7c-BUILD.md` Mesures)
| Archive | Fichiers | Octets | Contenu de debug |
|---|---:|---:|---|
| `Shipping_U8` (référence avant lot) | 2 220 | 2 024 056 223 | non (`-nodebuginfo`) |
| `Shipping_OBB` (T7b) | 2 082 | 1 804 253 309 | oui : PDB 225 570 816 o + `LastResort` + manifeste (230 967 022 o) |
| `Shipping_OBB2` (T7c, référence) | 2 078 | 1 573 286 287 | non (0 PDB, 0 `LastResort`, 0 `.git*`) |
Écart OBB contre U8 : −138 fichiers, −219 802 914 o = −450 763 872 (`.git`) + 230 967 022 (4 fichiers de debug) − 6 064 (7 fichiers différents) ; écart inexpliqué > 1 Mo : aucun (`OBB-T7-VAL.md` § 3.3).
### 1.4 Commits du lot, recomptés (gabarit 4b)
Commandes : `git -C "D:\Game\LifePlay-master 5.8" log --oneline --grep OBB-R` (4 résultats) ; `git -C D:\Game\LifePlay-Sandbox log --all --grep OBB-R` et `git -C D:\Game\LifePlay-Sandbox-5.8 log --all --grep OBB-R` (2 résultats, les mêmes : `LifePlay-Sandbox-5.8` est un worktree du dépôt de `LifePlay-Sandbox`, `git rev-parse --git-common-dir` = `D:/Game/LifePlay-Sandbox/.git`) ; `git tag -l "OBB*"` ; `git rev-parse OBB-avant^{commit}`.
| # | Hash | Dépôt, branche | Heure (2026-10-10) | Ticket | Contenu | CHG |
|---|---|---|---|---|---|---|
| 0 | tag `OBB-avant` → `b63196a` | jeu, `ue5.8` | 11:03:08 (commit visé) | OBB-R1 | tag annoté local, aucun commit | — |
| 1 | `6eb1544` | jeu, `ue5.8` | 11:36:27 | OBB-R2 | `CheckPackage.ps1`, `BuildDebug.ps1`, `SplitModules.ps1`, journal, livrables, traces (18 chemins) | CHG-301 |
| 2 | `8b884a6` | `LifePlay-Sandbox`, `lot/DC3-atelier` | 12:31:46 | OBB-R3 | `lp-paths`, `lp-repo` en `--git-dir/--work-tree` | CHG-304 |
| 3 | `247af5a` | `LifePlay-Sandbox-5.8`, `ue5.8` | 12:31:53 | OBB-R4 | idem (exemplaire 5.8) | CHG-304 |
| 4 | `5b34499` | jeu, `ue5.8` | 12:33:04 | OBB-R5 | `CheckIntegrity.ps1`, `.gitignore`, journal, pin addon `247af5a` (doc 21 l. 136), livrables (14 chemins) | CHG-304 |
| 5 | `ac3a176` | jeu, `ue5.8` | 12:51:58 | OBB-R8 | journal, docs 21 / 27 / 29, livrables, traces R6 / R7 (15 chemins) | CHG-307 |
| 6 | `4074d90` | jeu, `ue5.8` | 13:39:40 | OBB-R9 | journal, docs 21 / 29, livrables T7, registre, traces (15 chemins) | CHG-308 |
Ce sont 6 commits (4 jeu + 2 addon) plus 1 tag, comme annoncé par la fiche. Sans commit, par construction : OBB-R1 (TAG), OBB-R6 et OBB-R7 (MOVE des `.git`, hors dépôt du jeu ; traces commitées par `ac3a176`, R-REPO1). `git log OBB-avant..HEAD` (jeu) = 11 commits : 4 d'OBB + 7 d'autres lots (AG `ee9dce2`, `2cca224`, `eb03bfe` ; DOCMV `2a30385`, `08c1a49` ; STF `2883b80` ; STE `c70082d`). **Aucun commit OBB sans ticket, aucun ticket COMMIT sans commit.** Numérotation réelle des tickets différente du découpage indicatif de `OBB-T1-SPEC.md` § 7 (R2 prévu pour T1b, R3 / R4 pour les MOVE) : sans conséquence, la SPEC la disait indicative. Le ticket OBB-R2 n'a pas de livrable INT (`OBB-INT.md` ne traite que OBB-R1 ; le registre cite seulement `tickets\OBB-R2.md`) : écart de forme au gabarit INT.
## 2. Fiches : tenues, modèles, tentatives, mesures
### 2.1 Fiches des sous-agents (tableau)
Mesures : `python -I Tools/FicheStats.py --lot OBB` depuis la racine de la copie 5.8 (l'outil s'applique : 16 lignes). « Tours déclarés » : ligne `Tours : n / 40` du livrable (ou du registre, signalé par *). Modèles : colonne Modèle de FicheStats. Niveau : colonne Niv. de FicheStats, recoupée avec les en-têtes. Pic et jetons : FicheStats.
| Fiche | Agent | Modèle | Niv. | Tent. k/4 | Cause de reprise | Tours mesurés (déclarés) | Pic k / jetons M | Durée min | Verdict (registre) |
|---|---|---|---|---|---|---|---|---:|---|
| OBB-T6 | lp-inventory | sonnet-5-5 | N1 | 1 | — | 39 (aucune ligne Tours) | 146 / 3,7 | 6 | acceptée : L1 non (V1.5 sans addon), L2 oui |
| OBB-T1a | lp-inventory | sonnet-5-5 | N1 | 1 | — | 18 (21) | 119 / 1,4 | 5 | acceptée |
| OBB-T3 | lp-impl | opus-5-5 | N2 | 1 + 1 prolongation | consigne (seuil de 2 h remplacé) | 21 (14 + 6 = 20) | **167** / 2,6 | 10 | acceptée après reprise ; **hors budget (pic)** |
| OBB-T3v | lp-validator | sonnet-5-5 | N1 | 1 | — | 13 (13) | 112 / 1,0 | 4 | PASS |
| OBB-T3d | lp-writer | sonnet-5-5 | N1 | 1 + relance | consigne (ordre du journal inversé par Big Boss) | 19 (8 + 5 = 13) | 92 / 1,3 | 7 | acceptée (CHG-301) |
| OBB-T1b (IMPL) | lp-impl | opus-5-5 | N2 | 1 | — (corrections de l'orchestrateur E1, E3) | 15 (15) | 125 / 1,3 | 7 | acceptée avec corrections |
| OBB-T1b (VAL) = T1bv | lp-validator | sonnet-5-5 | N1 | 1 | — | 19 (15) | 99 / 1,4 | 4 | PASS |
| OBB-T1b (DOC) = T1bd | lp-writer | sonnet-5-5 | N1 | 1 | — | 11 (9) | 75 / 0,7 | 2 | acceptée (CHG-304) |
| OBB-T1v | lp-validator | sonnet-5-5 | N1 | 1 | — | 16 (15) | 103 / 1,2 | 4 | PASS |
| OBB-T1d | lp-writer | sonnet-5-5 | N1 | 1 | — | 15 (11) | 74 / 0,8 | 2 | acceptée (CHG-307) |
| OBB-T7a | lp-builder | haiku-5-5 | N0 | 1 | — | 10 (8) | 61 / 0,5 | 3 | acceptée (critère `.rsp` daté remplacé) |
| OBB-T7b | lp-builder | haiku-5-5 | N1 | 1 | — | 17 (15) | 83 / 1,0 | 7 | acceptée ; `-nodebuginfo` omis par la fiche |
| OBB-T7c | lp-builder | haiku-5-5 | N0 | 1 (fiche refaisant T7b) | consigne (omission de l'orchestrateur, décision de l'utilisateur) | 20 (19) | 106 / 1,3 | 5 | acceptée |
| OBB-T7v | lp-validator | sonnet-5-5 | N1 | 1 | — | 25 (17) | 106 / 1,9 | 5 | PASS-STATIC |
| OBB-T7s | lp-validator | sonnet-5-5 | N1 | 1 | — | 15 (14) | 65 / 0,7 | 5 | PASS |
| OBB-T7d | lp-writer | sonnet-5-5 | N1 | 1 (2 écritures refusées) | autorisation (hors catégories) | 21 (17) | 110 / 1,7 | 8 | partielle : journal écrit par l'orchestrateur |
| **Total** | | | | | | **294** | | **84** | |
Total contrôlé : `FicheStats` sommé par script (`python -I` sur sa sortie) = 84 min, 294 tours, 22,5 M jetons, 16 erreurs d'outil sur 606 appels. Fiches archivées dans `fiches\OBB-T7.md` : T7a, T7b, T7v (3 en-têtes `Fiche OBB-T7…`, lignes 9, 22, 35) ; **les fiches T7c, T7s et T7d n'y sont pas** (ni ailleurs dans `etat\OB\OBB\`, d'après le Glob initial).
### 2.2 Tickets du gardien (lp-gardien) : non mesurés par FicheStats
FicheStats ne liste aucune ligne de gardien (cause non établie). Valeurs du registre `OBB-TACHES.md` (colonnes Tours / Jetons / Durée ; la colonne Jetons contient en fait des pics : T3 169 contre 167 k mesurés, T7b 86 contre 83) et des INT.
| Ticket | Niv. (INT) | Passes | Outils / tours (registre) | Pic k | Durée | Résultat |
|---|---|---|---|---:|---|---|
| OBB-R1 | N0 | 1 | 14 outils | 46 | 1 min 03 s | tag `OBB-avant` |
| OBB-R2 | non établi | 1 | 27 outils (11 tours) | 125 | 2 min 00 s | `6eb1544` |
| OBB-R3 / R4 / R5 | N1 | 1 passe | 25 outils (≈ 13 tours) | 99 | 2 min 42 s | `8b884a6`, `247af5a`, `5b34499` |
| OBB-R6 | N1 | 1 | 16 outils (8 tours) | 72 | 1 min 55 s | MOVE 5.8 |
| OBB-R7 | N2 | **2** | 12 outils (7 tours) puis 24 outils (14 tours) | 50 puis 69 | non établi | MOVE 5.5 au 2e passage |
| OBB-R8 | N1 | 1 | 24 outils (11 tours) | 102 | 1 min 48 s | `ac3a176` |
| OBB-R9 | N1 | 1 | tours 11 / 40 (`OBB-INT-R9.md` l. 39) | non établi | non établi | `4074d90` |
Ligne OBB-R9 : absente du registre (§ 5).
### 2.3 Modèle prévu contre utilisé
Les 22 livrables d'agent, `OBB-T1-SPEC.md` et la fiche `fiches\OBB-T7.md` portent « Modèle prévu … | utilisé … » (motif contrôlé par Grep sur la première ligne : 23 fichiers, plus `OBB-INT-R3R5.md` lu à la main, soit 24) : **0 `FAIL-TRACE`**. Le « prévu » est écrit « modèle de l'agent X » (donc non chiffré) dans les fiches T7 ; les modèles mesurés correspondent aux modèles par défaut des agents (lp-builder : haiku-5-5 ; lp-impl : opus-5-5 ; lp-inventory, lp-validator, lp-writer : sonnet-5-5) : cohérent, sans surcharge. Seule la SPEC écrit un modèle explicite (opus-5-5 prévu et utilisé). En-têtes des livrables INT : « sonnet » ou « claude-sonnet-5-5 » (OBB-R1 : « utilisé sonnet », non identifiant exact).
## 3. Indicateurs de `sk-orchestrate` § 5
| Indicateur | Valeur | Source / calcul |
|---|---|---|
| Fiches lancées | 16 sous-agents + 9 tickets (R1 à R9, R3 à R5 en une passe) = 25 unités ; 24 passes (16 + 8) | registre, FicheStats |
| Taux de reprises | 4 / 25 = 16 % : T3 (prolongation), T3d (relance), R7 (2e passage), T7c (fiche refaite) | `OBB-T3-IMPL.md` l. 172, `OBB-T3-DOC.md` l. 4-7, `OBB-INT-R7.md` § 1, `fiches` / registre l. 30 |
| Reprises `-fix` / escalades d'agent | 0 | registre : aucune ligne `-fix`, aucune `escaladée` |
| Prolongations, cause | 2 (T3, T3d), cause **consigne** pour les deux ; budget 0, capacité 0 | idem ; aucune fiche arrêtée au budget |
| Reprises autres, cause | R7 : consigne ; T7c : consigne ; T7d : refus d'autorisation (hors catégories) | § 4, § 5 |
| Fiches coupées par `maxTurns` sans compte rendu | **0** | FicheStats : maximum 39 tours (T6) contre plafond 50 (N0-N2) ; chaque fiche a son livrable ; T6 à 39 / 40 (budget) et 146 / 150 k : au bord |
| Échecs fabriqués détectés (succès inventé, compte faux, critère ignoré) | **0 établi** ; 1 écart de compte : tours déclarés inférieurs aux tours mesurés (voir ci-dessous) | lecture des livrables et des recomptes de l'orchestrateur au registre ; les commandes n'ont pas été rejouées par cette EVAL |
| En-têtes complets | 24 / 24 (22 livrables d'agent, la SPEC, la fiche T7) | Grep du motif `^Fiche OBB… Niveau … Modèle prévu … \| utilisé … Agent … Skills` : 23 fichiers + `OBB-INT-R3R5.md` à la main |
| Livrables avec ligne `Tours : n / 40` | 18 / 22 ; absente : `OBB-T6-INV.md`, `OBB-INT.md`, `OBB-INT-R6.md` ; `OBB-INT-R3R5.md` : « voir compte rendu » | Grep `^Tours :` |
| Fiches hors budget | 1 : OBB-T3 (pic 167 k > 150 k ; 21 tours ≤ 40) | FicheStats « hors budget (pic) » |
| Durée contre estimation | 16 fiches mesurées : max 10 min (T3), somme 84 min, toutes sous l'estimation ≈ 20 min de la rubrique 9. Durée du lot : du tag (11:03:08) au commit `4074d90` (13:39:40) = 2 h 36 min 32 s | FicheStats ; `git log` ; la prise en charge date de 11:05 (registre l. 3). OBB-T6 (08:01-08:08) précède la prise en charge |
| Coût | 22,5 M jetons pour les 16 fiches (hors session de l'orchestrateur et hors gardiens) ; coût monétaire : **non établi** (aucun tarif en source) | FicheStats |
| Erreurs d'outil | 16 sur 606 appels (T6 6, T7c 4, T1v 2, T7d 2, T7b 1, T7v 1) | FicheStats colonne Erreurs |
Tours déclarés contre mesurés (15 fiches ayant les deux valeurs) : déclaré **inférieur** pour 12 (T3, T3d, T1bv, T1bd, T1v, T1d, T7a, T7b, T7v, T7s, T7c, T7d ; écart de 1 à 8, le plus grand pour T7v : 17 contre 25), égal pour 2 (T3v, T1b IMPL), supérieur pour 1 (T1a : 21 contre 18). Estimé : les agents sous-comptent leurs tours ; FicheStats fait foi. Le registre mélange « outils » (T6 : 76 outils, 39 tours mesurés) et « tours » dans la même colonne.
## 4. Écarts de consigne de l'orchestrateur (sans complaisance)
Écart = consigne de l'orchestrateur (fiche, ticket, annonce) fausse, trop large, incomplète ou tardive. Sources citées ; E-9 et E-10 sont des faits déclarés par l'orchestrateur, sans trace dans les livrables lus.
1. **OBB-R7, critère d'entrée « 0 processus Unreal » trop large**, recopié d'OBB-R6. Effet établi : 1er passage refusé à l'étape 0 par la présence de l'éditeur STE-GI de la copie 5.8 (PID 30840, ligne de commande sur `LifePlay-master 5.8`), verrou 32 pris et rendu, 12 outils / 7 tours / 50 k perdus, critère corrigé (« processus citant la copie 5.5 ou un build 5.5 »), relance (`OBB-R7.md` l. 2 et 6 ; `OBB-INT-R7.md` § 1 et § 2). Cause : la copie visée (5.5) n'est pas lue par l'éditeur de la 5.8 ; le critère aurait dû nommer la copie.
2. **OBB-T7b, `-nodebuginfo` omis.** La fiche citait `U8-T4-BUILD.md` l. 9 comme modèle de commande, sans le drapeau que celle-là portait (`fiches\OBB-T7.md` l. 26-27 ; `OBB-T7-VAL.md` C1). Effets établis : PDB (225 570 816 o) et polices de debug (5 396 206 o) dans l'archive `Shipping_OBB`, écart de taille de −219 802 914 o au lieu de ≈ −450 763 872 o à expliquer par la VAL, fiche T7c supplémentaire (20 tours, 106 k, 5 min), archive `OBB2`, archive `OBB` redondante conservée (≈ 1,8 Go). Décision de l'utilisateur : « refais la mise en scène avec -nodebuginfo ». La rubrique 5 de la fiche (« aucun nouveau » piège) ne mentionnait pas l'option.
3. **OBB-T7a, critère « `.rsp` daté de ce build » inadapté** (`fiches\OBB-T7.md` l. 18). UBT ne réécrit pas un `.rsp` de contenu inchangé : l'agent a rendu « partiel » alors que le build était bon (`OBB-T7a-BUILD.md` l. 4 et Constats). L'orchestrateur a remplacé le critère par « contenu valide » (recompte : 0 `LPAnimMeasure` / `LPSandbox`, 1 041 `.obj`, témoin `LPAnimCore` 1 : registre l. 30). Prolongement : la même hypothèse est à l'origine du seuil de 2 h de `CheckPackage.ps1` (écart 4 plus bas).
4. **OBB-T3, seuil de 2 h de la fiche** pour rattacher le `.rsp` / `.target` au build. Sur `Shipping_U8` l'écart n'était que de 2,20 h ; un seuil de 3 h aurait donné un faux PASS (`OBB-T3-IMPL.md` Constats 2). Remplacé à la reprise par un critère taille + date de l'exe + 10 min. Coût : prolongation de 6 tours et pic de 167 k (seule fiche hors budget du lot).
5. **OBB-T1v, témoin cité inexistant** : `D:\Game\LifePlay_Backup_5.5\OBB-addon (2)` n'existe pas (seuls `OBB-addon` et `OBB-addon58`) ; la VAL a pris 2 + 2 à la place (`OBB-T1-VAL.md` § 2 P3, Constats 1).
6. **OBB-T1b, consignes défectueuses relevées par l'agent** : demande de garder les fins de ligne d'un `.gitignore` à fins de ligne mixtes (4 CRLF + 86 LF), alors que `sk-protocol` § 7 nomme cette exception (E1) ; texte dicté avec `<5.8|5.5>` coupant une cellule de tableau (E3) ; HEAD annoncé `08c1a49`, réel `2cca224` (E4) (`OBB-T1b-IMPL.md` § 2). E1 et E3 ont été corrigés par l'orchestrateur lui-même à la réception (registre l. 16).
7. **OBB-T3d, consigne double** : « réserver, ne pas écrire » puis relance après l'inversion de l'ordre du journal par Big Boss (OBB avant AR) : 8 + 5 tours déclarés, 19 mesurés (`OBB-T3-DOC.md` l. 4-13). Cause extérieure à l'orchestrateur, effet sur le coût établi.
8. **Annonce `SKILLS-COMMITÉS` tardive à Big Boss** : le gardien a enchaîné R3, R4, R5 en une passe, l'annonce est venue après coup (`BOSS-JOURNAL.md` l. 111 : « annonce tardive »). Le registre (l. 16) avait fait dépendre le lot AR de cette annonce. Effet sur AR : non établi.
9. **Regex `[^\n]` dans un Grep de l'orchestrateur**, corrigée avant usage (fait de l'orchestrateur, aucune trace dans les livrables, aucun effet établi).
10. **Registre non soldé** (conséquence des refus du § 5, mais aussi des colonnes mal tenues) : voir § 7.7.
11. Mineur : l'en-tête de la fiche T7b dit « Niveau N0 » alors que sa rubrique 2 conclut N1 (`fiches\OBB-T7.md` l. 22-24) ; le tableau du registre n'a pas de ligne pour T7c, T7s, T7v séparées (une seule ligne OBB-T7, l. 30).
## 5. Refus d'autorisations (chronologie et état, sans conclusion sur le raisonnement du classificateur)
| # | Quand (2026-10-10) | Qui | Action refusée | Message cité | Suite | État |
|---|---|---|---|---|---|---|
| 1 | avant le lot (OBB-T6, 08:01-08:08) | lp-inventory (session « Lot 29 ») | `rm -rf ./x` sur la copie extraite de la V1.5 (161 Mo selon le registre) | « Permission to use Bash … has been denied » (`OBB-T6-INV.md` § 4, l. 130) | aucun contournement ; suppression laissée à l'orchestrateur ou à l'utilisateur | dossier non retrouvé sous `…\claude\D--Game-LifePlay-master-5-8\*\scratchpad\obb-t6\x` (Bash `ls -d`) : **état actuel non établi** |
| 2 | OBB-T7d (13:28-13:36) | lp-writer | Edit : insertion de CHG-308 au journal (au-dessus de CHG-305) | « External System Writes » (`OBB-T7-DOC.md` § 4.1) | arrêt, entrée livrée « prête, non écrite » dans le livrable | journal intact à ce moment |
| 3 | OBB-T7d, même fiche | lp-writer, sur ordre direct de l'utilisateur relayé (« écris CHG-308 au journal ») | 2e Edit identique | « Modify Shared Resources » (`OBB-T7-DOC.md` § 4.5) | arrêt, aucun contournement | journal intact |
| 4 | après 2 et 3 | Big Boss (fait de l'orchestrateur) | — | — | Big Boss a établi : aucune règle du projet, aucun hook, aucun verrou n'explique le refus | — |
| 5 | après 4 | orchestrateur, dans sa session, sur l'ordre « écris CHG-308 au journal » | écriture du journal | **réussie** | ligne insérée, `git diff --numstat` 1 / 0, LF conservé ; `NUMEROS.md` l. 24 : CHG-308 « utilisé » sous verrou 41 (fait de l'orchestrateur ; recoupé ici : `Journal_Modifications.md` l. 1134 `| CHG-308 `, `4074d90` modifie le journal de `+1`, `OBB-INT-R9.md` § 1 « dernier précédent 41 ») | écrit, commité dans `4074d90` |
| 6 | juste après le commit (OBB-R9, `4074d90`) | orchestrateur | édition suivante du registre `OBB-TACHES.md` | « Auto-Mode Bypass » (fait de l'orchestrateur) | non contournée ; `JOURNAL-LIBRE` envoyé | registre **non mis à jour** depuis `4074d90` (Read ici : ligne T7d « partielle », pas de ligne R9, ligne T7 sans mesures) |
Note de lecture : trois refus sur trois catégories de message différentes (« External System Writes », « Modify Shared Resources », « Auto-Mode Bypass ») pour des écritures de fichiers de suivi du dépôt ; la même catégorie d'écriture (journal) a été acceptée dans la session de l'orchestrateur (5). Cette EVAL ne tire aucune conclusion sur le classificateur. Écrire **ce** livrable (chemin `etat\OB\OBB\OBB-EVAL.md`) n'a pas été refusé (le fichier existe, § 8).
## 6. Pièges à reporter dans les skills
État relevé par Grep de `CheckPackage|nodebuginfo|entrée standard|\.rsp|\$rel\b` (insensible à la casse) dans `D:\Game\LifePlay-Sandbox-5.8\Tools\claude\skills` (jonction de `.claude\skills`) : **0 occurrence** hors une ligne de `lp-validate` sans rapport (fins de ligne). `lp-paths:66-68` : porté.
| # | Piège | Source | Skill visé | État |
|---|---|---|---|---|
| P1 | PowerShell ignore la casse : une variable `$rel` écrase le paramètre `$Rel` (devenu tableau, « 2053 écarts sur 2053 ») | `OBB-T1b-IMPL.md` § 2 E6 | `sk-windows-shell` | non porté |
| P2 | Ne pas lancer le jeu (ni un script qui écrit un fichier) depuis un script lu sur l'entrée standard de PowerShell : le jeu hérite de l'entrée, le script s'interrompt (T7s : relevés manquants à t+15 s et t+30 s) ; mêmes symptômes en T7c (3 essais de `BUILD-ID.txt` sans écriture, 4e en `-Command` monoligne) | `OBB-T7s-VAL.md` écart 1 ; `OBB-T7c-BUILD.md` écart 3 | `sk-windows-shell` | non porté |
| P3 | Sans `.git` local, `git -C <copie>\Content\Modules …` remonte au dépôt du jeu (où `Content/Modules` est ignoré) et répond pour le mauvais dépôt, sans erreur | `OBB-T1-SPEC.md` § 3 ; `OBB-T1-VAL.md` Constats 3 | `lp-paths` | **déjà porté** (`lp-paths:68`) |
| P4 | L'outil Edit ramène en LF un fichier à fins de ligne **mixtes** (ici `.gitignore` : 4 CRLF aux l. 87-90) ; ne pas demander « fins de ligne conservées » pour un tel fichier (Edit garde CRLF ou LF purs : `sk-protocol` § 7) | `OBB-T1b-IMPL.md` § 2 E1 | `sk-protocol` § 7 (exception déjà nommée) ; `sk-orchestrate` (rédaction de fiche) | partiel |
| P5 | UBT ne réécrit pas un `.rsp` de contenu inchangé : critère de fiche « `.rsp` daté » à remplacer par « contenu valide » ; et le contrôle [3] de `CheckPackage.ps1` ne prouve pas la fraîcheur (seul un `.rsp` postérieur de plus de 10 min à l'exe est écarté) | `OBB-T7a-BUILD.md` Constats ; `OBB-T7-VAL.md` § 2 (a), C3 | `lp-build` ; `lp-validate` | non porté |
| P6 | `-nodebuginfo` obligatoire pour une archive de référence Shipping : sans lui, PDB (225 570 816 o) et `LastResort` dans l'archive ; archiver `BUILD-ID.txt` à côté du dossier PDB | `OBB-T7-VAL.md` C1 ; `OBB-T7c-BUILD.md` | `lp-build` (§ Shipping / UAT) | non porté |
| P7 | Tout empaquetage lancé par UAT hors `BuildDebug.ps1` est suivi aussitôt de `CheckPackage.ps1` (texte prêt dans `OBB-T3-IMPL.md` Constats 4, « skill à venir ») | `OBB-T3-IMPL.md` Constats 4 ; `OBB-T3-DOC.md` Constats | `lp-build` § 4 | non porté |
| P8 | Sous Git Bash, un chemin Windows non guillemeté perd ses antislashs (`D:GameLifePlay_Build…`, code 3 de `CheckPackage`) ; guillemets de `$e` mangés dans `ParseFile` ; `UeState.ps1` refuse `-Kind` en `-File` (ValidateSet) : utiliser `-Command` | `OBB-T7c-BUILD.md` Constats ; `OBB-T7a-BUILD.md` Constats ; `OBB-T3-IMPL.md` § 1 | `sk-windows-shell` | partiel (`-Command` : `lp-build` § 8 selon T7c) |
| P9 | Un critère d'entrée « 0 processus Unreal » doit viser la copie traitée (ligne de commande citant la copie), pas tous les éditeurs ; le relever par `Get-CimInstance Win32_Process` | `OBB-R7.md` l. 6 ; `OBB-INT-R7.md` § 2 | `sk-orchestrate` (fiche) ; `lp-repo` (étape 0 des MOVE) | non porté |
| P10 | `git rev-parse <tag annoté>` rend l'objet tag (`ede1f012…`), pas le commit : utiliser `^{commit}` | `OBB-T3-VAL.md` Constats 3 | `lp-repo` ; `lp-validate` | non porté |
| P11 | Les agents sous-comptent leurs tours (12 cas sur 15) : FicheStats fait foi ; le registre ne doit pas mêler « outils » et « tours » | § 3 | `sk-protocol` § 8 ; gabarit TACHES de `lp-doc` | non porté |
| P12 | Une DOC qui doit écrire le journal peut être refusée par les autorisations : prévoir le relais par l'orchestrateur ou une règle explicite (voir § 5, § 7.5) | `OBB-T7-DOC.md` § 4 | `lp-doc` ; `lp-lot` | décision de l'utilisateur |
## 7. Reports et suites
### 7.1 Reports non cochés du doc 21 lus (registre des reports, `Docs/21_Sandbox_Addon.md`)
Commande : `Grep '^\s*- \[ \]'` puis `Read` des lignes 224-228 ; lignes 178, 181, 203, 210, 223, 224, 225, 228 lues. La ligne 227 (B1) est cochée avec la preuve (CHG-308). Le doc 21 n'est pas modifié par cette EVAL.
| Ligne | Report | Propriétaire écrit | Lien avec OBB | Position de l'EVAL |
|---|---|---|---|---|
| 178 | Compilation et packaging Shipping complets **avec** le plugin (seul le plan UBT vérifié) | aucun | OBB a prouvé un Shipping **sans** l'addon ; décision « sandbox non lancée en Development » (registre l. 32) | à trancher par l'utilisateur : caduc ou à conserver (estimé : caduc de fait depuis CHG-279) |
| 181 | Migration commitée côté jeu (`LifePlay.uproject`, `Config/LPSandbox.ini`, `Build.cs`, `LPShowCoupleSubsystem.*`, docs 21 / 22, `etat/sandbox/`) : « non fait » | aucun | aucun ; la référence `LPSandbox` du `.uproject` est présente à `HEAD` (`OBB-T7-VAL.md` § 2 : `LifePlay.uproject` l. 30-38) | incertain : le report peut être périmé en partie ; non examiné (essai qui trancherait : `git status` + Grep des fichiers cités) |
| 203 | Correction de `LPSandbox.uproject` en 5.5 (`AdditionalPluginDirectories`) | addon 5.5, hors U58 (`lot/DC3-atelier`) | aucun | sans objet pour OBB |
| 210 | Brouillard / scalabilité non comparés 5.5 contre 5.8 | **U8** (test Shipping) | aucun ; `Shipping_OBB2` est un Shipping propre disponible mais non comparé | reste à U8 |
| 223 | Shipping final et publication des 3 archives `2026.10.2.0` | **U8** (doc 27) | `Shipping_OBB2` = référence de contrôle de paquet, **pas** une candidate (contenu non commité embarqué, `CharGen` d'avant STE-TXT) | reste à U8 : build à refaire sur l'état commité |
| 224 | Archivage des PDB du Shipping (un dossier par numéro de build) | **U8** (fiche U8-T4) | OBB a produit `…_Shipping_OBB_PDB` (PDB 225 570 816 o) et `BUILD-ID.txt` (SHA-256 exe, RSDS) pour un build d'essai non publié | à refaire pour le build publié |
| 225 | Dossier `Saved` du Shipping desktop = `%LOCALAPPDATA%\LifePlay\Saved` (partagé avec les versions précédentes) : à décider avant V2.0 | **U8** (T8 / porte), lien SAV1 / ERR-042 | `-UserDir` a gardé le dossier réel inchangé (73 fichiers, 0 différence : `OBB-T7s-VAL.md`) ; la décision de fond (README, migration) reste ouverte | reste à U8 |
| 228 | Référence `Releases/2026.10.2.0` et 3 archives de mods à refaire sur un Shipping propre | **U8** (« reprise après G-ST et OB ») | la condition « Shipping propre » côté OB est remplie (B1 à B3 prouvés) ; reste la production elle-même | **débloqué côté OB**, à U8 |
Hors liste de la fiche, vu au passage : la ligne 229 (mention UE 5.8 au `README.md`, U8-T8) est sans lien avec OBB.
### 7.2 Archives de build
`D:\Game\LifePlay_Build_5.8_Shipping_OBB` (2 082 fichiers, 1 804 253 309 o, avec PDB) est redondante avec `…_OBB2` ; **conservée** (décision de l'utilisateur, fait de l'orchestrateur, aussi dans la ligne CHG-308). `…_Shipping_OBB2` = référence (2 078 fichiers, 1 573 286 287 o) ; `…_Shipping_OBB_PDB` = PDB + `BUILD-ID.txt`. Rien n'a été déplacé ni supprimé par cette EVAL. Copies de sécurité des `.git` : `D:\Game\LifePlay_Backup_5.5\OBB\modules-git-5.8` et `modules-git-5.5` (142 fichiers, 450 763 872 o chacune, `OBB-T1-VAL.md` § 3).
### 7.3 Constat CheckIntegrity 5.5 (hors périmètre, cause non examinée)
`Tools\CheckIntegrity.ps1 -Modules` dans la copie 5.5 (gelée, compare à `D:\Game\LifePlay-master 4.27\Content\Modules`) : `3 ecart(s) sur 2053` : `different : Content\Modules\donors.txt`, `en plus en 5.5 : …\vin_Base\Hairstyles\vin_Base.lphair`, `en plus en 5.5 : …\vin_Base\Proximity\furniture.lpnear`, code 1, aucune ligne `.git` (`OBB-T1-VAL.md` § 3, relevé 5.5). Ne vient pas du déplacement (estimé : état avant non rejoué). Incertain : la cause ; l'utilisateur doit dire si ces 3 écarts sont connus (case non cochée `OBB-T1-VAL.md` § 6).
### 7.4 Push (à faire par l'utilisateur, rien n'est poussé)
Commits du lot, dans l'ordre addon → jeu (`lp-lot`, `lp-repo`) : addon `8b884a6` (`lot/DC3-atelier`), addon `247af5a` (`ue5.8`), jeu `6eb1544`, `5b34499`, `ac3a176`, `4074d90` (`ue5.8`) ; tag local `OBB-avant` (annoté, sur `b63196a`). État mesuré : la branche `ue5.8` du jeu n'a pas d'amont (`git rev-parse --abbrev-ref @{u}` : « no upstream configured »), aucune branche distante `ue5.8` (`git branch -r`) ; `git log --oneline HEAD --not --remotes | wc -l` = 64 commits du jeu non présents sur un distant (dont les 4 du lot, 7 sur les 11 de `OBB-avant..HEAD` sont d'autres lots) ; addon : `lot/DC3-atelier` 38 et `ue5.8` 41 commits non distants (`git log --oneline <branche> --not --remotes | wc -l`). Un push de ces branches emporte donc aussi des commits d'autres lots. Contrôle de la « liste interdite de publication » (`lp-repo` § 3) : non fait ici. Le journal `Docs/Journal_Modifications.md` et le doc 21 (pin) sont à jour au `4074d90`.
### 7.5 Règle d'autorisation sur le journal et les registres (décision de l'utilisateur)
À décider : donner (ou non) une règle d'autorisation Edit pour `Docs/Journal_Modifications.md`, `Docs/Registre_Erreurs.md`, `Docs/21_*`, `OBB-TACHES.md` et les registres de lot, pour les agents lp-writer et l'orchestrateur ; ou convenir que l'orchestrateur écrit seul ces fichiers (ce qui s'est passé pour CHG-308). Éléments : § 5. Sans règle, la DOC d'un lot peut être partielle (CHG-308 : T7d partielle).
### 7.6 Cases laissées ouvertes dans les VAL (non cochées par l'utilisateur)
- `OBB-T3-VAL.md` § 6 : `SplitModules.ps1` laisse passer NON-CONCLUANT (code 2) en avertissement ; `.git` d'un sous-module (`Modules/<module>/.git`) non relevé par [1] ; limites du rattachement (`.rsp` réécrit sans relink dans les 10 min ; deux liaisons à moins de 2 s et de même taille). Le premier point (« `BuildDebug.ps1` sort en code 1 tant que `.git` est présent ») est levé par B1 (dépôts déplacés).
- `OBB-T7-VAL.md` § 6 : durcir `CheckPackage.ps1` [3] (C3) ; démarrage « Nouvelle partie / Continuer » (la fiche T7s n'a couvert que 155 s d'exécution).
- `OBB-T7s-VAL.md` § 6 : « jusqu'au menu » sans capture ; `UnrealEditor` PID 20764 présent au début, absent à la fin, non touché selon l'agent (signalé à Big Boss, cause non établie) ; `txt.json` du dossier réel garde l'ancien `Clothes4.txt` (se met à jour au prochain lancement normal).
- `OBB-T1-VAL.md` § 6 : témoin pris dans `OBB-addon` / `OBB-addon58` ; 3 écarts de CheckIntegrity 5.5 (7.3).
### 7.7 Registre `OBB-TACHES.md` à solder (par l'orchestrateur ; non modifié ici)
Lignes à mettre à jour, constatées par lecture : T7d « partielle » → CHG-308 écrit (`4074d90`) ; ligne R9 absente (`4074d90`, 11 tours) ; ligne OBB-T7 : colonnes Tours / Pic / Jetons / Durée vides, T7c, T7s, T7v non séparées ; mesures de FicheStats (§ 2) à reporter ; CHG-308 « réservé » → « utilisé » ; colonne « Jetons » qui contient des pics ; ligne EVAL absente. Aucune écriture hors `OBB-EVAL.md` par cette fiche.
### 7.8 Décision (revient à l'utilisateur) : proposition de l'EVAL
**GO conditionnel.** Les trois bloquants sont prouvés dans un Shipping neuf (§ 1) ; aucune fiche coupée, aucun échec fabriqué établi, un seul dépassement de budget (T3). Conditions avant de dire le lot clos : (1) soldé le registre (7.7) ; (2) décision sur la règle d'autorisation (7.5) ; (3) accord de l'utilisateur sur le push (7.4) ; (4) pièges P5 à P7 et P9 reportés dans `lp-build` / `sk-orchestrate` (une fiche de skills à ouvrir). Non conditionnel, mais à retenir : les archives OBB / OBB2 ne sont pas des candidates de publication (7.1, ligne 223).
## 8. Fichiers à commiter
Dépôt du jeu `D:\Game\LifePlay-master 5.8`, branche `ue5.8` (aucune commande git d'écriture lancée) :
- `A Docs/Migration/etat/OB/OBB/OBB-EVAL.md` (ce livrable, seul fichier écrit par cette fiche).
- Hors de cette fiche, déjà non suivi : `A Docs/Migration/etat/OB/OBB/OBB-INT-R9.md` (livrable du gardien, « part au prochain commit », `OBB-INT-R9.md` § 8).
- À modifier par l'orchestrateur puis commiter : `M Docs/Migration/etat/OB/OBB/OBB-TACHES.md` (7.7).
Fichiers partagés (journal, registre d'erreurs, doc 21, NUMEROS) : non touchés. Mémoire, skills, docs numérotés : non touchés.
Tours : 17 / 40
## Constats
- Écart de la fiche : la structure à 8 sections remplace les 6 du gabarit EVAL (annoncé en tête).
- Non établi : pourquoi FicheStats ne liste pas les gardiens ; la durée de R7 et de R9 ; le niveau de R2 ; l'état du dossier extrait d'OBB-T6 (`…\obb-t6\x`).
- Les chiffres de ce livrable viennent de : FicheStats (rejoué), `git log` / `git rev-parse` / `git branch` rejoués, Grep rejoués, lecture des livrables et du registre. Les commandes des builds et des VAL n'ont pas été rejouées (lecture seule).