LifePlay-Revival/Docs/29_Projet_Stabilisation_V2.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

368 lines
47 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.

---
name: Stabilisation V2 (ST)
overview: Avant toute livraison (décision utilisateur du 2026-10-09 : la V2.0 n'est publiée, par U8, qu'après la stabilisation et l'optimisation), traquer et corriger les défauts du jeu 5.8 — erreurs et accès à None au journal, défauts visibles en jeu, défauts remontés par les joueurs — jusqu'à une V2.0 stable, base de mesure du chantier d'optimisation (doc 30).
todos:
- id: phase0
content: Phase 0 — Fiche projet (ce document) validée par l'utilisateur
status: completed
- id: lot-sta
content: Lot STA — Audit / mesure : parcours types, classement de toutes les erreurs et AccessedNone par Blueprint et cause, registre des défauts connus
status: completed
- id: gate-gst
content: Porte G-ST — go / no-go et ordre des lots (utilisateur)
status: completed
---
# Stabilisation V2 (préfixe ST) — fiche projet (phase 0)
Modèle : modèle agnostique de séquençage (fichier Cursor `sandbox_addon_migration_ff11aeab.plan.md`, mémoire
`modele-sequencage`) : 0 fiche projet → 1 audit → 2 effort, risques, porte → 3 lots → 4 exécution → 5 évaluation.
## Objectif
Une V2.0 **stable** avant sa publication : aucun défaut visible connu non traité, journal d'un parcours type sans erreur inexpliquée,
nombre d'`AccessedNone` réduit et chaque restant justifié. Mesurable par `Tools/LogStats.ps1` sur des parcours fixes.
## Périmètre
- **Dans** : jeu 5.8 (branche `ue5.8`, non publiée ; `main` à la publication U8), C++ `Source/LifePlay`, Blueprints (correctifs par
commandlet ou en éditeur, comme en portage 5.5), configuration ; défauts au journal (erreurs, `AccessedNone`,
avertissements récurrents, à-coups `Gamethread hitch`) ; défauts visibles en jeu ; défauts remontés par les joueurs.
- **Hors** : optimisation, retrait ou remplacement de modules UE (doc 30) ; voie UE5 native U9 ; nouveau contenu ;
contrat des mods (figé : toute correction qui le toucherait = décision utilisateur dédiée).
## Défauts déjà connus (entrée de l'audit STA)
| Défaut | Origine | Source |
|---|---|---|
| Personnages enfoncés dans la rue (jusqu'aux genoux) — **prioritaire** (utilisateur 2026-10-13, défaut visuel ; Room street) — **traité, lot STG** (CHG-344 ; ERR-115, ERR-128, ERR-129). Cause établie par le moteur : capsule prise dans la collision simple du décor de rue (`STG-SF4b-DIAG.md`). Correctifs : C++ (boîte du sol, décors en Pawn Ignore, relevage des passants et du joueur S-F5 / S-F5j, écart de 50 cm S-F5k, relevage écarté d'une façade S-F5m / S-F5n, relevage dès la pose S-F5p) et collision complexe de l'asset de rue. En jeu : COMMUN-6, murs solides et pieds sur le pavé (J1, J2 OK) ; COMMUN-8, deux personnages enfoncés contre une façade (→ S-F5m / n) ; COMMUN-9, « des PNJ s'enfoncent et remontent » 2 à 4 s après l'arrivée (→ S-F5p) ; COMMUN-10, Q5 OK : « pas de personnes sous la rue ». Reste après l'alpha : façades fines (STG-POST1), points de `standIdle` posés trop bas au bord (STG-POST2) | ancien, présent en 5.5 | utilisateur 2026-10-09, `etat/U58/U7/U7-SUIVI.md` ; rappel 2026-10-13 ; `etat/ST/STG/STG-TACHES.md`, `etat/BOSS/COMMUN-10-BILAN.md` |
| Personnages qui se chevauchent parfois : deux personnages doivent occuper deux espaces distincts, séparés d'**au moins 10 cm** — **prioritaire** (utilisateur 2026-10-13, défaut visuel) — **traité, lot STG** (CHG-344 ; ERR-118, ERR-117, ERR-127) : contrôle des tiers dans le placement (Person), garde d'IsValid, place de meuble au maximum et non remplacée, garde `GI::Show` à 70 cm, joueur posé à 80 cm quand un Blueprint libère son siège sans marche (C7-a, défaut d'origine estimé). COMMUN-2 : 0 place partagée sur 1 256 relevés assis ; COMMUN-8, cas N2 à N5 et O1 à O4 OK (dont C7-a) ; rue sans chevauchement (O5). Reste : scènes de contact (hors règle, décision du 2026-10-13), PNJ debout dans un fauteuil (ERR-122, après l'alpha) | ancien (causes établies dans les graphes, `STG-C1-CART.md`) | utilisateur 2026-10-13 |
| Le personnage joueur glisse en marchant avec ZQSD : aucune animation de marche (M_Walk_Loop / B_Walk_Loop pour Michael / Bridget) — **dans l'alpha** (utilisateur 2026-10-13). « Marche : animation » 0 fois en COMMUN-2 et COMMUN-3 ; WalkAnim gardé par `LPAnimRedirect::IsGameTarget()`, qui lit `Saved/Config/Windows/LPAnimTarget.ini`, absent du jeu empaqueté (établi par `STG-WALK-DIAG.md` : garde fausse en jeu empaqueté et clips `/Game/Quaternius` jamais cuits) — **traité, lot STG** (CHG-344 ; ERR-121, ERR-119, ERR-126, ERR-130). Garde locale, clip cuit puis `ClipPath`, deux clips dupliqués sous `/Game/Heavy/Daz/<Bridget ou Michael>/Anim/` (hors git). COMMUN-4 : cas F1 et F2 OK (75 et 105 lancements). Suites : marche coupée à tort par un menu sans boîte visible (C6-b, réponse de l'utilisateur : pas de boîte visible) ; pieds à ≈ 10 cm du sol après un siège (maillage non redescendu au lever, M-Z) : COMMUN-10, Q4 OK, « plus de flottement après le lever » | 5.8 | utilisateur 2026-10-13 ; lot STG |
| Dossier de sauvegarde du jeu renommé de `LifePlay` en `LifePlay-Revival` — **traité** (lots REL-SAV et REL-ALPHA, ERR-042) : garde `LPSaveRelaunch.cpp` avant `WinMain` (relance avec `-UserDir`, Shipping toujours, Development seulement avec `LPSaveLocation.ini`) ; dossier au choix du joueur par `LPSaveLocation.ini` (`SaveDir=`) ; aucune reprise automatique des anciennes sauvegardes (R0) ; contrat des mods inchangé hors la lettre finale de la version (décision « Lettre acceptée »). Essais : E1 à E4 et E6 OK sur COMMUN-8 ; **E9 OK sur le Shipping `2026.10.2.1a`** (relance avec `-UserDir`, dossier créé, sauvegarde puis Continuer, ancien dossier identique). **Reste hors du dossier** : les personnages d'une partie sont écrits dans `<installation>\LifePlay\Content\Saves` (sauf `Saved`) ; E5 (chemin relatif) non fait, facultatif ; option du menu Misc hors alpha | 5.8 | utilisateur 2026-10-13 ; `etat/REL/ALPHA/REL-ALPHA-E9-RESULTAT.md` |
| ~364 `AccessedNone` et 5 erreurs par session (parcours U6) | 4.27 / 5.5 | `etat/U58/U6/U6-T3-AB.md` |
| 4 `Gamethread hitch` sur `MapMarkers_C.LPFocusWidgetComponent` ; 0 en U8-T5cr et U8-T5cr2 (correctif CHG-292 ; estimé : carte ouverte sur déclaration de l'utilisateur, aucune trace au journal). Les autres saccades et hitchs relèvent des fiches STE-H4, STE-H7, STE-H8 et STE-H9 (analyse en cours, `etat/ST/STE/`) — analyse faite (H7 à H9) ; correctifs STE-H10 commités (CHG-336 à 338) ; J6 : trames ≥ 50 ms par minute −12 % (`STE-J6-TRACE.md`) | 5.8 | U6, report U8 ; `etat/U58/U8/U8-T5cr2-VAL.md` |
| Brouillard aux niveaux Effects Low-Med non comparé 5.5 / 5.8 | 5.8 | U6, report U8 |
| Cuisson Shipping à froid (avertissement de cuisson `LegacyIterative` requis, `bUseZenStore=False`, vu au build U6) | 5.8 | U6 (doc 27, résultat U6), report U8 (doc 21) |
| Coiffure par défaut perdue (Bridget chauve) — corrigé en 5.8 (U7-T12), reste en V1.x | H1/H3a | `etat/U58/U7/U7-T11-CART.md` |
| Libellé moteur, bouton du nom d'un mod refusé, ordre d'affichage des mods par défaut (non retenus en U7) | U7 | `U7-SUIVI.md` |
| 210 acteurs externes orphelins (cartes gabarit absentes) | contenu | doc 21, U5 |
| Rafale `Attempted to access index 0 from array Floats_3_… of length 0` dans `GI_C:getBeautyValue` (pile `Room.GenerateUnknownNpcs` → `GI.GeneratePerson` → `getRandomAge`) : 2 591 lignes en 7 s autour des 8 premiers SPAWN (≈ 40 600 lignes de journal) contre 18 en U6 ; `GI` et `Room` inchangés depuis U6, probablement aléatoire (génération de PNJ inconnus) — non établi. Mesures suivantes : U8r 4, U8r2 72 (0,82 par SPAWN, 88 SPAWN), tous `getBeautyValue` | 5.8 (vu en U8) | `etat/U58/U8/U8-T5c-VAL.md`, `U8-T5cr-VAL.md`, `U8-T5cr2-VAL.md` |
| Index hors bornes hors rafale équivalents (713 / 702) ; `Accessed None` 364 → 223 (par personnage 20,2 → 14,9) ; propriétés nouvelles liées à la scène de couple : `CallFunc_getFirstDick_Person_1` ×1, `Actor` ×1 | U8-T5c | `etat/U58/U8/U8-T5c-VAL.md` |
| `No SkeletalMesh` : 7 971 lignes en U8r et 10 289 en U8r2, dont 70 à 77 % (70,7 % en U8r2, 76,8 % en U8r) d'un seul acteur `Person_C` ; famille déjà présente dans les références (871 et 2 723 lignes) — cause non établie | 5.8 (vu en U8) | `etat/U58/U8/U8-T5cr-VAL.md`, `U8-T5cr2-VAL.md` |
| `Accessed None … K2Node_CustomEvent_Person` dans `Room_C > Person_C:PlayIdle > PlayWorkDaily > PlayDaily > moveToPersonStand` : défaut d'origine (journaux C0 et J3, antérieurs à STE-R6), pas de fiche ouverte pour l'instant ; établi par STE, estimé par U8 (comptes non recomptés) ; ne bloque pas T11 selon l'avis de STE, la décision revient à l'utilisateur — classé ERR-089 (« F1 »), accepté sans correctif par l'utilisateur (2026-10-13) ; l'écart E-B1-1 (ERR-090) a disparu avec la garde `IsValid` de G-B1a (COMMUN-2) | origine (vu en U8-T5cr2) | `etat/U58/U8/U8-T5cr2-VAL.md` (requalification du 2026-10-11) |
| Gestionnaire de mods : textes longs (nom « Free Animations Pack (SoerGame, Fab ; mannequin UE5) », auteurs) qui débordent et masquent les flèches ▲/▼ ; demande utilisateur : agrandir la fenêtre, masquer (couper) le texte qui déborde, garantir que les deux zones ne se chevauchent pas — **non prioritaire** | ancien (5.5) | utilisateur 2026-10-09, `etat/U58/U7/U7-SUIVI.md` |
| Atelier de mods : `HairPipeline.ps1 -Step Inspect` sans les champs `"auto"` du guide → message incompréhensible (« Nous ne pouvons pas lier l'argument au paramètre Path… », `HairPipeline.ps1:215`) au lieu de « champ diffuse manquant » ; valider le JSON en entrée — **non prioritaire** | addon | U7-T16, 2026-10-09 |
| Atelier : contrôle « dependances A VERIFIER » de `Tools/HairMaterials.py` faux positif en 5.8 (le registre ne renvoie que le squelette ; matériaux pourtant cuits et rendus, U7-T16) — **non prioritaire** | addon / 5.8 | U7-T16, 2026-10-09 |
| Coiffure d'un mod décoché conservée par un personnage qui la porte (Jade) : comportement du contrat 5.5 (plugin toujours monté, doc 23 § 2.4), gardé en V2.0 ; à revoir (ex. retour à la coiffure par défaut) — **non prioritaire** | contrat 5.5 | utilisateur 2026-10-09 |
| `Accessed None` d'origine acceptés sans correctif : ERR-089 (« F1 »), ERR-091 (« F2 »), ERR-094 (« F-A »), ERR-095 (« F-B »), ERR-096 (`isSameAs`, bruit accepté) ; ERR-090 (écart E-B1-1) supprimé par G-B1a. COMMUN-4 session 2 : 40 avertissements, tous de ces familles et de `PersonCumming` | 4.27 (ERR-091, ERR-094) ; 5.5 (ERR-089, ERR-095) ; ERR-096 d'origine | `Registre_Erreurs.md` (ERR-089 à ERR-091, ERR-094 à ERR-096) ; `STE-H3f-DIAG.md`, `STE-H3h-DIAG.md` |
| ERR-097 : 378 avertissements `chargen` en une image à l'ouverture de `BodyShapeMenu` sans CharGen ouvert ; garde après l'alpha, précédée d'un dump | d'origine | `Registre_Erreurs.md` (ERR-097) ; `STE-H3i-DIAG.md` |
| ERR-098 : gel de 34,2 s après une recherche sur tous les bâtiments (tri de ≈ 49 425 résultats ; 40,9 s en 5.5). **Corrigé et validé en jeu** : COMMUN-6 J12 « recherche globale très rapide », COMMUN-7 « recherche All rapide » | d'origine (5.5) | `Registre_Erreurs.md` (ERR-098) ; `STE-GEL1-VAL.md`, `COMMUN-6-BILAN.md`, `COMMUN-7-BILAN.md` |
| C1 (ERR-105, ERR-111) : touche C et souris C1 mortes après CharGen en cours de partie (cause établie : `SpaceOn` laissé à faux) → B2r ; orientation de C1 figée (à côté de la tête après un lever, vue au plafond) → B2s ; COMMUN-7, L1 et L2 OK. Priorité de l'utilisateur : « injouable à cause de C1 » | 5.8 | `Registre_Erreurs.md` (ERR-105, ERR-111) ; `CAM-COMMUN6-DIAG.md` § 0, § 10 ; `COMMUN-7-BILAN.md` |
| Personnage assis qui disparaît de l'écran : ERR-125, bornes de rendu de la pose debout (→ B2q-a, B2q-b1 ; **validé** : COMMUN-9 P1 OK, COMMUN-10 Q6 OK) ; ERR-107, occlusion par un meuble (témoin T-occ, COMMUN-6 J6 : cas prouvé une fois ; évitement B2l après l'alpha) | 5.8 | `Registre_Erreurs.md` (ERR-107, ERR-125) ; `STG-B2q-DIAG.md` ; `CAM-COMMUN5-DIAG.md` |
| Caméra de scène et commandes pendant le sexe : ERR-108 (axe POV, corrigé, COMMUN-6 J7 OK), ERR-109 et ERR-112 (orbite, molette, Maj + souris, ZQSD, flèches). B2p-R / B2p-D : **cas M1 à M8 OK en COMMUN-8, scène de sexe validée pour l'alpha par l'utilisateur** | 4.27 (ERR-108, ERR-109) ; 5.8 (ERR-112) | `Registre_Erreurs.md` (ERR-108, ERR-109, ERR-112) ; `COMMUN-8-BILAN.md` |
| ERR-123 : couple qui flotte au-dessus du lit. Mesure M1d en COMMUN-6 : `lowestMinusUnder` ≈ 1 cm, le couple touche le lit (J10 OK) ; défaut perçu non expliqué, aucun correctif demandé | 5.8 (estimé) | `Registre_Erreurs.md` (ERR-123) ; `STG-C54-DIAG.md` ; `COMMUN-6-BILAN.md` |
| Couple et commandes pendant le sexe — **traité, validé avec l'alpha** : ERR-113 (couple hors de la pièce, sous le plancher) → B2p-E, B2p-F (murs `Wall*`, marge, pose libre de recouvrement), COMMUN-11 R1 à R3 OK ; ERR-114 (couple coincé dans un meuble) → B2p-F et G3 (`NotifyCoupleTeleported`), COMMUN-11 R5 OK, COMMUN-12 : 2 lignes de témoin, aucun KO rapporté ; ERR-100 (champ de filtre qui prend le clavier) → focus rendu à la vue, puis souris libre et panneau sur Alt (B2p-J). COMMUN-11 : R4 KO partiel (lit, pose sur des meubles) → B2p-H ; COMMUN-12 : glisser et rotation à la souris KO, Espace pris → B2p-J. L'utilisateur valide le comportement de l'alpha sur COMMUN-13 (16:00) | 5.8 (code récent) | `Registre_Erreurs.md` (ERR-113, ERR-114, ERR-100) ; `COMMUN-10-BILAN.md` ; `CAM-COMMUN9-DIAG.md` ; `etat/BOSS/COMMUN-11-BILAN.md`, `COMMUN-12-BILAN.md`, `COMMUN-13-BILAN.md` |
| ERR-099 : le champ « Translate » garde le focus, ZQSD est saisi dans le champ — mineur, après l'alpha | à établir | `Registre_Erreurs.md` (ERR-099) ; `COMMUN-5-BILAN.md` C5-6 |
| ERR-116 : murs, façades et murets traversables en extérieur (prix de S-F4b). **Traité avant l'alpha pour la rue** (collision complexe, COMMUN-6 J1 OK) ; autres extérieurs et variante fine après l'alpha (STG-POST1) | 5.8 | `Registre_Erreurs.md` (ERR-116) ; `STG-COMMUN5-ANALYSE.md` § 7 ; `COMMUN-6-BILAN.md` |
| Après l'alpha : ERR-110 (caméra POV et caméra de scène dans les têtes), ERR-124 (boîte et bande vertes du couple : `DrawDebugBox` inconditionnel, retiré des builds Shipping, **vérifié** : pas de `DrawDebugBox` dans le Shipping de livraison (`REL-ALPHA-T3-VAL.md`) ; en Development il reste affiché) | 5.8 | `Registre_Erreurs.md` (ERR-110, ERR-124) ; `BOSS-ETAT.md` l. 93 |
| Mineurs non instruits : ERR-122 (PNJ debout dans un fauteuil), ERR-131 (animation d'un meuble qui reste sur le joueur après un changement de pièce ; accessoire mal attaché) | d'origine (estimé) | `Registre_Erreurs.md` (ERR-122, ERR-131) |
## Décisions proposées (à valider)
| # | Proposition |
|---|---|
| S1 | Démarrage sur la branche `ue5.8` non publiée (décision utilisateur du 2026-10-09 : aucune livraison avant la stabilisation et l'optimisation, U8 différé) ; référence de mesure de départ : le build Development 5.8 de U6 et son relevé `etat/U58/U6/U6-T3-AB.md`. |
| S2 | Parcours de mesure fixes : nouvelle partie (liste des villes) + Continuer (sauvegarde de référence `Saved\SaveGames` + `Content\Saves`), scène d'éditeur de personnage, une scène de couple ; build Development empaqueté (mémoire « mesure en build empaqueté »). |
| S3 | Classement par impact : (1) visible en jeu / plantage, (2) erreur au journal, (3) `AccessedNone` groupés par Blueprint et nœud, (4) avertissements récurrents. Un lot = une famille de causes, pas un bug isolé. |
| S4 | Critère de sortie : parcours S2 sans erreur inexpliquée ; `AccessedNone` restants listés avec justification ; aucune régression A/B. |
| S5 | Publication : aucune pendant la stabilisation ; la V2.0 est publiée par U8 après la sortie de ST et d'OB (porte utilisateur) ; des V2.0.x par lot ou groupe de lots ensuite seulement. |
| S6 | Retours joueurs : un registre unique (doc 21 ou nouveau) alimente les lots. |
| S8 | Bissection des modules (question utilisateur 2026-10-09) : mesure de base avec `vin_Base` seul et aucun mod d'assets ; puis réintégration un module à la fois (modules texte cochés par défaut, autres modules texte, puis les 3 mods d'assets recuits), même parcours S2 et `LogStats` à chaque ajout, toute erreur nouvelle attribuée au module ajouté ; passage final tout coché (défauts de combinaison). |
| S7 | Boucle MCP (demande utilisateur 2026-10-09) : plugin Epic « Unreal MCP » évalué puis utilisé en éditeur pour l'aide IA (lot STM) ; écriture par MCP seulement après instantané et tracée ; le build empaqueté reste la référence de mesure. |
## Dépôts, outils, livrables
Jeu `D:\Game\LifePlay-master 5.8` (branche `ue5.8` → `main` à la publication U8) ; addon `LifePlay-Sandbox-5.8`. Outils :
`Tools/Build.ps1`, `BuildDebug.ps1` (`-NoUBA`), `LogStats.ps1`, commandlets `LP*` (skill `lp-commandlets`).
Livrables : `D:\Game\LifePlay-master 5.8\Docs\Migration\etat\ST\<lot>\` (voir `etat/INVENTAIRE.md`) ; CHG au journal ;
reports au registre de `21_Sandbox_Addon.md`. Règle de méthode (lot DOCMV, CHG-300, 2026-10-10) : journal, registre, index
`README.md`, docs numérotées et `correctifs\` dans `D:\Game\LifePlay-master 5.8\Docs\` ; seuls les livrables de lot restent
dans `Docs\Migration\etat\`.
## Méthode et outillage (pratiques de la communauté, recherche web 2026-10-09)
Principe : on ne corrige que ce qu'on a mesuré, sur build empaqueté, sur un parcours rejouable, et on revérifie sur
le même parcours. Outils existants du projet en premier (`LogStats.ps1`, commandlets `LP*`, `LPTestStringCompat`).
1. **Mesure reproductible.** Parcours S2 fixes (sauvegarde de référence, mêmes étapes), build Development empaqueté
(Epic et les guides : les mesures en éditeur diffèrent nettement). `LogStats` avant / après chaque lot.
2. **Accessed None.** Le journal nomme Blueprint, propriété et nœud : regrouper par (Blueprint, nœud) puis chercher
POURQUOI la référence est vide (jamais affectée, Cast échoué, lecture avant création, ordre BeginPlay). Un garde
`IsValid` seul fait taire le message sans corriger : n'en mettre que si « vide » est un état normal, et le dire.
Piège connu : un nœud AND évalue ses deux entrées, il ne protège pas une lecture d'objet nul ; préférer une branche
`IsValid` (ou « Validated Get ») avant la lecture. Correctifs Blueprint par commandlet tracé (méthode du portage 5.5).
**Arrêt sur exception en PIE** (Epic) : préférence utilisateur « Blueprint Break on Exceptions » (section
Experimental ; emplacement 5.8 à confirmer par la recherche des préférences) — l'éditeur s'arrête sur le nœud fautif
avec pile d'appels et valeurs (fenêtre Watch, Execution Trace) au lieu d'une remontée du journal. Premier levier sur
les ~364 `AccessedNone` ; le build empaqueté confirme ensuite le correctif.
2b. **Défauts dans le temps (Visual Logger, Epic).** Enregistrer l'état au fil de la session et le revoir après coup
(fichier joignable à la fiche). Cas d'usage : personnages enfoncés dans la rue — tracer position, capsule et hauteur
du sol trouvée, comparer un personnage sain et un fautif. Animation : Rewind Debugger + Animation Insights.
2c. **Reproduction par commandes de triche.** Commandes `Exec` d'une sous-classe de `UCheatManager` (console active en
Development, retirée en Shipping) pour atteindre directement une scène de couple, l'éditeur de personnage ou une
ville : parcours S2 rejouables, base d'un futur scénario Gauntlet. Toute commande ajoutée = code de jeu, tracé (CHG).
3. **À-coups.** `t.HitchFrameTimeThreshold` + `DumpHitches` (écrit chaque à-coup au journal), `stat unit` pour situer
Game / Draw / GPU, puis trace **Unreal Insights** (canaux CPU + Frame, `-statnamedevents`, ~5 s autour de l'à-coup,
signets) ; les fonctions Blueprint n'apparaissent qu'en « Blueprint Time » : ajouter des scopes de profilage C++
autour des appels suspects.
4. **Mémoire / chargement.** `memreport -full` (significatif seulement en build empaqueté), trace
`-trace=memory,loadtime,file`, Memory Insights (étiquettes LLM, fuites, allocations vivantes).
5. **Plantages.** Dossier `Saved\Crashes` (journal, minidump `.dmp`, contexte XML) ; un minidump n'est exploitable
qu'avec les PDB du **même** build : archiver les PDB de chaque build distribué (un dossier par numéro de build,
à côté de `Releases`) et écrire le numéro de build en tête du journal, pour rattacher chaque retour ou plantage à
son build ; pour Shipping, activer « Include debug files » ; ouvrir dans Visual Studio ou WinDbg (VS affiche les
frames Blueprint dans la pile C++, Rare GDC 2023). Depuis UE 5.4, Epic ne reçoit plus les rapports des jeux
empaquetés : les retours joueurs passent par notre registre (S6), journal et dossier `Crashes` joints. Les
`ensure` et erreurs non fatales n'atteignent pas le CrashReportClient : `LogStats` les couvre.
6. **Non-régression automatisée.** **Gauntlet** (Epic) : lance le jeu empaqueté, pilote un scénario, analyse journaux
et plantages — candidat pour un test de fumée par build (démarrage, nouvelle partie, Continuer, éditeur de
personnage) ; séparer les échecs du banc de ceux du jeu (un plantage peut se cacher derrière une erreur générique du
banc, retour d'expérience 5.8 sur le MCP). Tests d'automatisation existants (`LPTestStringCompat`) gardés.
**Data Validation** (Epic) : règles sur les assets, en éditeur ou en ligne de commande (CI) ; ne détecte pas un
`Accessed None` au jeu, mais peut refuser à la cuisson une référence obligatoire non renseignée.
7. **Tri.** Dédupliquer par pile d'appels / (Blueprint, nœud) ; trier par fréquence × impact ; chaque cas : build,
étapes, journal ; pas de nouvelle fonctionnalité pendant un lot de stabilisation.
8. **Outils tiers** (ex. « Unreal Test Kit » sur Fab : bot de jeu, rapports JUnit) : affirmations de vendeur non
vérifiées ; évaluation à part avant tout usage.
**Outil Epic par famille de défaut** (recherche web 2026-10-09 ; un lot choisit son outil de preuve dans ce tableau) :
| Famille | Outil Epic | Règle d'usage |
|---|---|---|
| Logique Blueprint, `AccessedNone` | Blueprint Debugger (points d'arrêt, Watch, Execution Trace), Break on Exceptions | PIE pour trouver, build empaqueté pour confirmer |
| Comportement dans le temps (position, état, IA) | Visual Logger | enregistrement joint à la fiche |
| Animation | Rewind Debugger, Animation Insights, Pose Watch | plugin Animation Insights en éditeur seulement |
| À-coups, temps CPU | `stat unit` / `stat game`, `DumpHitches`, Unreal Insights | Development empaqueté, `-statnamedevents` |
| Mémoire, chargement | `memreport -full`, Memory Insights, trace `loadtime,file` | build empaqueté seulement |
| Invariants C++ | `check` / `verify` / `ensure` | pas d'effet de bord dans `check` (non exécuté en Shipping) ; `ensure` = signalé une fois, continue |
| Plantages | CrashReportClient, minidump + PDB du même build | collecte par notre registre (S6) |
| Non-régression | Automation (dont CQTest), Gauntlet | test de fumée par build, échec = build non diffusé |
| Assets | Data Validation | refus à la cuisson d'une référence obligatoire vide |
9. **Assistance IA par MCP (demande utilisateur 2026-10-09) : l'IA pilote l'éditeur pour réduire les manipulations
humaines et tester l'interaction avec l'éditeur.**
- **Établi (local)** : UE 5.8 livre le plugin Epic « Unreal MCP » (`Engine/Plugins/Experimental/ModelContextProtocol`,
« Anthropic MCP (Model Context Protocol) server implementation for Unreal Engine », expérimental, désactivé par
défaut) et « MCP Client Toolset » (bêta). Le projet a déjà `.mcp.json` → `http://localhost:8000/mcp` (adresse par
défaut) ; la session Claude Code voit un serveur `unreal-engine` en échec de connexion tant que l'éditeur ne
l'expose pas. Notre plugin `McpAutomationBridge` est désactivé pour V2.0 (D4) ; l'évaluation du MCP Epic était hors
chemin critique (D7) : elle devient le lot **STM**.
- **Outil de mise en place retenu (2026-10-09)** : « Hyper AI Studio » (Games by Hyper, Fab, gratuit, sans compte ni
activation, 5.8 seulement, documentation en ligne + doc Epic « Unreal MCP »), choisi parmi les outils Fab du compte
(écartés : Unreal MCP Setup Assistant sans doc, NexusMCP doc complète en chinois, NarshaADK en accès anticipé, Log
Viewer avec version Pro, BugSplat service en ligne). Installé dans le projet (`Plugins/Marketplace/HyperAIStudio`,
non commité) ; setup « Ready », endpoint `127.0.0.1:8000/mcp` répondant. Écarts corrigés à la main : 15 plugins
*Toolset* activés sans `TargetAllowList: ["Editor"]` (ajouté), `Optional` retiré de `McpAutomationBridge` (remis).
Fichiers générés (`CLAUDE.md`, `AGENTS.md`, `.hyperai/`) exclus localement ; les skills `lp-*` priment sur leurs
consignes. Instantané : `LifePlay_Backup_5.5\STM`. Erreur de démarrage de la sonde Automation corrigée dans notre
code (ERR-054, CHG-260).
- **Résultats STM-T2 à T4b (2026-10-09, CHG-262)** : éditeur lancé hors écran (`-RenderOffScreen
-ModelContextProtocolStartServer -ModelContextProtocolPort=8000`), `.uproject` non réécrit, session Claude Code
connectée (`/mcp`). Lecture : `initialize` 88 ms, appels 8-16 ms ; ~50 toolsets ; 91 outils HyperAIStudio
enregistrés sur 109, **tous « source candidate » (préversion vendeur), aucun « admitted »**. Testés et utiles :
carte ouverte, journal en direct filtré (`hyper_log_tail`), état de débogage d'un Blueprint
(`hyper_blueprint_debug_inspect`), relevé et diff stable (`hyper_blueprint_snapshot` / `_diff`), référenceurs
(`AssetTools.get_referencers`). Écriture (T4, `Content/BPs/TestStatic.uasset`) : outils **Epic**
(`BlueprintTools.set_node_position`, `compile_blueprint`, `AssetTools.save_assets`) → diff = 1 changement, retour
arrière par MCP → diff `identical`, puis fichier remis à l'octet par `git checkout` éditeur fermé (un
réenregistrement 5.8 réécrit l'en-tête : 25 919 → 26 029 octets). Écriture par HyperAIStudio : **inutilisable sous
Windows** — budget d'étape (ERR-055, contourné en validation par un patch ≥ 2 opérations) puis identifiant de
projet SHA-1 refusé par l'étape d'application qui exige SHA-256 (ERR-056) ; décision utilisateur : ne pas patcher
le plugin, défauts signalés au vendeur.
- **Règles d'usage** (mises à jour après T4c, 2026-10-09, CHG-266) :
1. **Rôles.** HyperAIStudio lit et vérifie ; les **outils Epic** de l'éditeur (`editor_toolset.*`) modifient.
Pas d'écriture par HyperAIStudio (ERR-055, ERR-056).
2. **Lecture d'un Blueprint.** Charger l'asset par `AssetTools.load_asset` (HyperAIStudio ne charge jamais) ;
localiser par `BlueprintTools.find_nodes`, lire par `get_connected_subgraph` / `get_node_infos` (fiables) ;
`read_graph_dsl` rend vide sur les gros graphes et `hyper_blueprint_snapshot` / `_diff` refuse les gros
Blueprints (`graph_source_bound_exceeded`, ex. `Person`, 20 Mo) : les réserver aux petits Blueprints.
3. **Écriture.** Instantané (`Snapshot.ps1`) ; modification par `create_node` / `connect_pins` / `break_pins` /
`delete_node` ; relecture des liaisons par `get_node_infos` ; `compile_blueprint` + `hyper_blueprint_debug_inspect`
(0 diagnostic) ; `save_assets` ; puis `CompileAllBlueprints` éditeur fermé. Retour arrière à l'octet :
instantané ou git, éditeur fermé (un réenregistrement 5.8 réécrit l'en-tête).
4. **Correctif `Accessed None`.** Un garde `IsValid` seulement si « vide » est un état normal, et l'écrire au CHG ;
préférer des branches en cascade à un AND / OR (évalue toutes ses entrées) ; comportement inchangé exigé.
5. **Preuve.** La PIE pilotée par MCP ne déroule pas un parcours d'interface (menus, chargement de ville) : la
preuve qu'un `Accessed None` disparaît reste le build empaqueté + `LogStats` sur le parcours S2.
6. **Volume.** Appels paginés et filtrés ; éviter `hyper_capability_report` et les `describe_toolset` complets
(75-116 Ko) ; `hyper_log_tail` ignore le filtre de catégorie : préférer le journal sur disque (`LogStats`).
7. **Copie partagée.** Éditeur MCP, commandlets et builds s'excluent ; avant un usage de la copie 5.8, gel annoncé
à **toutes** les sessions actives (`ListAgents`), pas seulement à celle du lot voisin (incident T4c : deux
sessions ont écrit dans `Tools/` et le journal pendant un gel annoncé à une seule) ; commit limité à ses
propres fichiers et lignes.
8. **Périmètre gratuit.** Seule la partie gratuite de HyperAIStudio est utilisée (aucun contrôle de licence dans le
plugin installé) ; l'offre payante Games by Hyper (« [Beta] Access to Hyper AI », palier EPIC et plus) sort des
critères de sélection (toutes fonctions dès l'origine, sans limite de temps) : non retenue.
9. **Pas de serveur MCP supplémentaire.** Les profils proposés par HyperAIStudio (ex. « Project Docs Filesystem
MCP » par `npx @modelcontextprotocol/server-filesystem`) restent désactivés : doublon de l'accès fichiers de
Claude Code, paquet téléchargé à chaque lancement, exposition du projet. Seul `unreal-mcp` (Epic) est utilisé.
10. **Mesure.** La mesure qui fait foi reste le build empaqueté.
Avertissements connus de l'éditeur 5.8 en culture française : 20 `LogAutomationTest: Error: Condition failed` du
test de fumée Epic `UnifiedError::FactoryMethod` (textes anglais attendus), présents avant HyperAIStudio.
- **Recommandation pour la porte G-STM** : adopter le MCP (`unreal-mcp` d'Epic + HyperAIStudio gratuit en lecture)
pour le **tri et le diagnostic** des `Accessed None` et pour les correctifs Blueprint **petits et réversibles**
(preuve T4c : ~5 min du diagnostic à l'enregistrement, ~30 appels) ; ne pas souscrire à l'offre payante ; garder
`McpAutomationBridge` désactivé (remplacé par le MCP d'Epic, retrait à trancher avec le chantier OB) ; inscrire
les règles 1 à 10 dans les skills `lp-*` (STM-T5).
- **Estimé (guides tiers, à vérifier en STM)** : serveur local sans authentification (ne jamais l'exposer hors de la
machine) ; appels d'outils exécutés en série sur le thread de jeu (attendre chaque résultat) ; commencer en lecture
seule, n'autoriser que des modifications petites et réversibles. Un plantage de l'éditeur peut apparaître côté
client comme une simple erreur HTTP 502 (retour d'expérience 5.8) : surveiller le processus et le journal de
l'éditeur en parallèle. Des serveurs tiers existent (StraySpark, ziggymar, ChiR24) : non retenus sans évaluation.
- **Usages visés** : lecture des graphes Blueprint fautifs d'un `Accessed None` (nœud, variable, ordre d'affectation)
sans export manuel ; requêtes du registre d'assets et des références (preuve d'usage pour OB) ; lancement de
commandlets / validation de données ; PIE scripté et captures pour un premier tri avant le build empaqueté ;
application de correctifs Blueprint **réversibles** après instantané. La mesure qui fait foi reste le build
empaqueté (S2) ; MCP n'en dispense pas.
- **Garde-fous** : éditeur de la copie 5.8 seulement ; instantané (`Snapshot.ps1`) avant toute écriture par MCP ;
chaque modification par MCP tracée (fiche, CHG) comme une modification manuelle ; plugin MCP activé en éditeur
uniquement, jamais dans un paquet (vérifier `Type`/plateformes du `.uplugin` et la liste des plugins cuits) ;
`.mcp.json` et `.claude/` jamais commités (règle `lp-paths`).
Sources : [Gauntlet (Epic)](https://dev.epicgames.com/documentation/en-us/unreal-engine/gauntlet-automation-framework-in-unreal-engine) ·
[Data Validation (Epic)](https://dev.epicgames.com/documentation/en-us/unreal-engine/data-validation-in-unreal-engine) ·
[Stat commands (Epic)](https://dev.epicgames.com/documentation/en-us/unreal-engine/stat-commands-in-unreal-engine) ·
[Memory Insights (Epic)](https://dev.epicgames.com/documentation/en-us/unreal-engine/memory-insights-in-unreal-engine) ·
[Unreal Insights après stat (guide)](https://uhiyama-lab.com/en/notes/ue/unreal-insights-profiling/) ·
[Optimisation à petit budget (T. Looman)](https://tomlooman.com/unreal-engine-optimization-talk/) ·
[Accessed None (guide)](https://bugnet.io/blog/how-to-fix-unreal-accessed-none-trying-to-read-property) ·
[Accessed None (forum Epic)](https://forums.unrealengine.com/t/accessed-none-trying-to-read-property-bad-blueprint-communication/418859) ·
[Minidumps (guide)](https://bugnet.io/blog/how-to-read-minidump-files-from-game-crashes) ·
[Plantages éditeur / Shipping (AccelByte)](https://docs.accelbyte.io/development-toolkit/developer-guides/others/ue-4-and-5/unreal-editor-and-shipping-build-crashes/) ·
[Plantage d'automatisation caché, MCP 5.8 (forum Epic)](https://forums.unrealengine.com/t/unreal-mcp-in-5-8-cause-an-unreal-automation-crash-hidden-behind-http-502-code/2735582) ·
[Unreal Test Kit (forum, vendeur)](https://forums.unrealengine.com/t/plopbox-unreal-test-kit-crash-hunter-test-explorer-perf-sentinel/2733246) ·
[Asserts (Epic)](https://dev.epicgames.com/documentation/unreal-engine/asserts-in-unreal-engine) ·
[Blueprint Debugger (Epic)](https://dev.epicgames.com/documentation/en-us/unreal-engine/blueprint-debugger-in-unreal-engine) ·
[Break on Exceptions (réf. API 4.26)](https://docs.unrealengine.com/4.26/en-US/API/Editor/UnrealEd/Settings/UEditorExperimentalSettings/) ·
[Visual Logger (Epic)](https://dev.epicgames.com/documentation/unreal-engine/visual-logger-in-unreal-engine) ·
[Rewind Debugger (Epic)](https://dev.epicgames.com/documentation/en-us/unreal-engine/animation-rewind-debugger-in-unreal-engine) ·
[Crash reporting (Epic)](https://dev.epicgames.com/documentation/unreal-engine/crash-reporting-in-unreal-engine?lang=en-US) ·
[Cheat Manager (Unreal Garden)](https://unreal-garden.com/tutorials/cheatmanager/) ·
[Tests automatisés, Sea of Thieves (Unreal Fest 2019)](https://www.unrealengine.com/events/unreal-fest-europe-2019/automated-testing-at-scale-in-sea-of-thieves) ·
[Rare, débogage UE5 dans Visual Studio (GDC 2023)](https://developer.microsoft.com/en-us/games/articles/2023/03/tips-from-rare-easier-debugging-unreal-engine-5-visual-studio/) ·
[Hyper AI Studio (doc vendeur)](https://gamesbyhyper.com/docs/project-foundations/hyper-ai-studio/) ·
[Unreal MCP in Unreal Editor (Epic)](https://dev.epicgames.com/documentation/en-us/unreal-engine/unreal-mcp-in-unreal-editor).
MCP : [Unreal MCP dans UE 5.8, configuration et sécurité (guide SEELE, FR)](https://www.seeles.ai/resources/blogs/fr/unreal/unreal-engine-ai-assistant-ue-5-8-mcp-setup-and-safety-a4c54c7f58) ·
[Unreal MCP Server (StraySpark, tiers)](https://www.strayspark.studio/docs/unreal-mcp-server) ·
[unreal-mcp (ziggymar, tiers)](https://mcpservers.org/servers/ziggymar/unreal-mcp) ·
[Unreal_mcp (ChiR24, tiers)](https://images.glama.ai/mcp/servers/ChiR24/Unreal_mcp) ·
[ue-mcp (db-lyon, tiers)](https://glama.ai/mcp/servers/db-lyon/ue-mcp).
Niveau de preuve : documentation Epic = établi pour la fonction de l'outil ; guides tiers = estimé ; vendeurs = non vérifié.
## Lot préalable : STM — boucle MCP (prévu après la V2.0 ; mené le 2026-10-09 avant toute livraison ; reste T5)
État au 2026-10-09 (SEQ1) : T1 à T4c faits (CHG-260, CHG-262, CHG-263, CHG-266), T4b bloqué, **T5 seul en attente**.
Aucune livraison n'ayant lieu avant la stabilisation et l'optimisation (décision utilisateur du 2026-10-09, plan 27
§ U8), la porte G-STM n'est liée à aucun Shipping : elle se tient quand l'utilisateur le décide, avant STA.
- STM-T1 (N1, web d'abord) : doc Epic et notes 5.8 de « Unreal MCP » (outils exposés, réglages, sécurité, limites).
**Fait** (§ Méthode, point 9 : outil HyperAIStudio retenu, CHG-260).
- STM-T2 (N0 + utilisateur) : activer le plugin dans l'éditeur de la copie 5.8 (instantané du `.uproject`), lancer
l'éditeur, connexion depuis Claude Code (`.mcp.json` existant), journal de démarrage. **Fait** (CHG-262).
- STM-T3 (N1) : **fait** (CHG-262) ; batterie en lecture seule (lister des assets, lire un Blueprint connu, interroger le registre, lancer
un commandlet inoffensif), mesures de latence et de stabilité ; preuve par l'échec : comportement si l'éditeur
tombe (erreur côté client, détection).
- STM-T4 (N3) : un correctif Blueprint réversible de bout en bout par MCP (instantané → modification → compilation
BP → contrôle → retour arrière à blanc). **Fait** (outils Epic, CHG-262) ; T4b (écriture par HyperAIStudio) :
bloquée par ERR-055 / ERR-056, plugin non patché (décision utilisateur).
- STM-T4c (2026-10-09, CHG-263) : efficacité sur un cas réel. **Correction faite** : `Accessed None … property
ContactMenu` (63 par session au parcours U6, 2e famille) dans `Person_C:UpdateDailyPose` (appelé par
`City.LoadCity` → `GI.MoveCity`). Cause : `Branch(OR(secondScreen, GI.ContactMenu.DummyPerson == self))` — le OR
évalue ses deux entrées et lit `DummyPerson` alors que le menu de contacts n'existe pas encore au chargement de la
ville. Correctif (« vide » est un état normal ici, d'où le garde) : `Branch(secondScreen)` → sortie si vrai ;
sinon `Branch(IsValid(GI.ContactMenu))` → vrai : branche d'origine sur l'égalité ; faux : `Switch` (même chemin que
l'égalité fausse) ; OR supprimé. Comportement identique, lecture protégée. Outils : Epic (`find_nodes`,
`get_connected_subgraph`, `create_node` ×3, `break_pins` ×2, `connect_pins` ×8, `delete_node`, `compile_blueprint`,
`save_assets`) ; contrôle `get_node_infos` + `hyper_blueprint_debug_inspect` (39 nœuds, compilé, 0 diagnostic) ;
`CompileAllBlueprints` code 0, 0 erreur, 0 avertissement. Temps : ~1 min de démarrage de l'éditeur, ~5 min du
diagnostic à l'enregistrement, ~30 appels MCP. **Preuve en jeu (U8-T5c, CHG-276) : PASS avec réserve** — archive Development U8 (cuisson complète U8-T3), même sauvegarde DC4 que U6 : 0 ligne `ContactMenu` (U6 : 63 événements + 2 du résumé), 15 SPAWN, `MoveCity` exécuté par Continuer ; réserve : les chemins d'origine en U6 (`CheckIfReachedFnt` 20, `Room_C` 20, `DressSavedActualActual` 8…) ne journalisent rien quand ils réussissent, absence non circulaire seulement pour `MoveCity` (estimé). Texte d'origine : reste à prouver en jeu (build empaqueté Development, `LogStats` :
`ContactMenu` 63 → 0 attendu, parcours STA-T1 ; U8 différé, SEQ1). Limites relevées : `read_graph_dsl` rend une chaîne vide sur ce graphe ;
`hyper_blueprint_snapshot` refuse `Person` (`graph_source_bound_exceeded`, Blueprint de 20 Mo, 134 graphes) ;
`hyper_log_tail` ignore le filtre de catégorie (réponse lourde) ; la PIE pilotée par HyperAIStudio
(`hyper_playtest_run`) ne sait pas dérouler un parcours d'interface (menus, chargement de ville) : la capture en PIE
d'un `Accessed None` de ce type n'est pas faisable par MCP seul.
- STM-T5 (orchestrateur + utilisateur) : **en attente** (recommandation écrite, § Méthode point 9, CHG-266) ; décision — MCP Epic adopté, `McpAutomationBridge` retiré ou gardé (lien OB),
règles d'usage inscrites dans les skills `lp-*` ; porte G-STM.
## Lot d'audit proposé (phase 1) : STA (lecture seule + mesures)
- STA-T1 (N1) : parcours S2 enregistrés, `LogStats` détaillé ; STA-T2 (N3) : classement des `AccessedNone` et erreurs
par Blueprint / nœud / cause probable ; STA-T3 (N1) : registre des défauts visibles (captures, étapes) ; STA-T4 (N4) :
effort et risques par famille, ordre recommandé → porte G-ST.
- **Découpage (SEQ1, 2026-10-09, règle de taille du plan 27)** : STA-T2 devient STA-T2a (N0, extraction des signatures
par `Tools/LogStats.ps1 -Pattern`, comptes bruts), STA-T2b-<famille> (N3, une fiche par famille de Blueprint, une
hypothèse de cause par fiche) et STA-T2c (N1, consolidation des comptes rendus) ; STA-T4 ne lit que les comptes rendus
de T1 à T3, pas les journaux.
- **Lot d'essai des gabarits (TPL1, 2026-10-09)** : fiches d'entrée au gabarit de `sk-orchestrate` § 3, livrables aux
gabarits de rôle de `lp-doc/gabarits.md`, registre `etat/ST/STA/STA-TACHES.md`, mesures par
`python -I Tools/FicheStats.py --lot STA`. Comparaison à U0–U7b (`Tools/FicheStats.py --lot U<n>`, doc 31) à l'EVAL de
STA : part des fiches hors budget (U7 : 6 sur 16), reprises, sections de gabarit manquantes relevées à la réception,
longueur des comptes rendus. Gabarits gardés si ces indicateurs baissent sans reprise de plus ; sinon allégés.
## Point d'étape du 2026-10-10 (lots STB, STC, STD, STE, STF, OBB, ETAT3)
Synthèse écrite par ETAT3-T6 à partir des registres et livrables de lot (chemins relatifs à `etat/`) ; un registre de lot
n'est pas une preuve : chaque ligne renvoie au livrable. Causes et statuts : `Registre_Erreurs.md`, ERR-058 à ERR-086
(table cause → ERR : `etat/DOC/ETAT3/ETAT3-T6-DOC.md`).
- **STB (corrections après G-ST), clos** : 12 correctifs, CHG-281 à CHG-292 (GI : BeautyStandards, tableaux lus sans test,
`clearScenePersons`, `determinePersonVars`, Interacting ; Person : `standIdle`, Headtrack, `assignHome` ; MainMenu ;
StreetMap_Static ; Room ; SexInterface ; garde C++ MapMarkers), précédés de STB-T0 (CHG-280, noms d'événements dans
`LPDumpFunction`). VAL **PASS** (`ST/STB/STB-VAL.md` § 5 : `CompileAllBlueprints` 418 / 418, 0 erreur, 0 avertissement ;
`LPTestStringCompat` 3120 / 0 / 60). Preuve en jeu STB-JEU **acceptée avec réserve** (`ST/STB/STB-JEU-VAL.md` § 5) :
signatures visées à 0, `Floats_3` 30 contre 1 107 sur la contre-épreuve U8 ; réserve : familles nouvelles du moteur de
scènes ni attribuées ni exclues faute de parcours identique. Régression **ERR-057** (réglages écrasés à l'ouverture du
menu) causée par CHG-286, retirée par **CHG-294** ; R13 / R14 rouverts (ERR-068). Évaluation : `ST/STB/STB-EVAL.md`.
- **Porte G-STM adoptée** par l'utilisateur (2026-10-10) : règles d'usage du MCP inscrites dans le skill `lp-mcp`, STM-T5
faite (`ST/STD/STD-TACHES.md:7`).
- **STD (diagnostics, lecture seule), clos** : trois DIAG acceptés. `ST/STD/STD-GIX-DIAG.md` : R06 et R07 / R08 défauts
d'affectation d'origine (4.27), R10 None normal ; `ST/STD/STD-SCN-DIAG.md` : familles F1 à F5 du moteur de scènes, aucune
ne vient de STB (F1, F2, F3, F5 préexistantes en 5.5 DC4, F4 préexistante en 5.8 avant STB) ; `ST/STD/STD-TXT-DIAG.md`
(partiel) : texte pâle de CharGen identique en 5.5, cause probable : aucune couleur de texte fixée. Décisions utilisateur
(`ST/STD/STD-TACHES.md:16-23`) : gardes simples pour R06, R07 / R08 et R10 ; deux lots H2 (F4) et H3 (F1 / F3) ; texte noir
sur deux widgets de CharGen ; exécution par le lot STE.
- **STE (correctifs après STD), planifié** : 7 fiches (`ST/STE/STE-TACHES.md`, ce registre fait foi sur celui de STD) :
STE-D, STE-GI, STE-TXT « fiche écrite » ; STE-H3, STE-H2, STE-VAL, STE-JEU « à écrire ». Départ après le commit des
fichiers de STC et la fin de son gel. Cibles au registre : ERR-062, ERR-063, ERR-065 (STE-GI), ERR-082 à ERR-084 (STE-H3),
ERR-085 (STE-H2).
- **STC (lot UI : vitesse caméra en slider, durée des scènes protégée)** : d'après `ST/STC/STC-TACHES.md`, T0 à T6 faites ou
acceptées, STC-VAL **acceptée, PASS** (V1 build 0 / 0, V2 418 / 418, V3 3120 / 0 / 60) ; restent V8 (archive) et J1
(preuve en jeu) ; CHG annoncé `CHG-296` (« à venir »), pas encore au journal ; fichiers du lot non commités à cette date.
- **STF (12 autres SpinBox de MainMenu), en attente** : STF-T0 faite, SPEC écrite en attente de la clôture de STC et du feu
vert (`ST/STF/STF-TACHES.md`).
- **OBB (bloquants de publication)** : OBB-T6 acceptée (`OB/OBB/OBB-T6-INV.md`) : L1 = la V1.5 publiée ne contient pas
l'addon, L2 = `TargetConfigurationDenyList` lu par le moteur et UBT 5.8 ; décision utilisateur : clé de CHG-279 conservée,
**B2 clos** ; OBB-T3 (B3, contrôles de paquet : CHG-301) et OBB-T1 (B1, `.git` de `Content\Modules` hors de l'arbre : CHG-304, CHG-307) faits ; OBB-T7 fait : Shipping 5.8 neuf, 4 contrôles de paquet à 0, B1 à B3 prouvés (CHG-308).
- **ETAT3 (CHG-297)** : depuis le 2026-10-10, les livrables de lot vivent dans `D:\Game\LifePlay-master 5.8\Docs\Migration\etat\`
(texte `.md` / `.csv` suivi par git, le reste local) ; l'`etat\` de la copie 5.5 est une archive figée, sauf `etat\REPO\`
(réservations `NUMEROS.md`, tickets et journal du gardien). Registre du lot : `DOC/ETAT3/ETAT3-TACHES.md`.
- **DOCMV (CHG-300)** : décision utilisateur du 2026-10-10 (« Déplacer dans Docs\ ») ; journal, registre, index `README.md`,
docs 01-32 et `correctifs\` montés de `Docs\Migration\` à `Docs\` (41 renommages git) ; `Docs\Migration\` ne garde que
`etat\` ; skills, agent `lp-writer`, `CLAUDE.md` et outils mis aux nouveaux chemins. Registre du lot :
`DOC/DOCMV/DOCMV-TACHES.md`.
## Point d'étape du 2026-10-14 (alpha 2026.10.2.1a, livrée)
Synthèse écrite à partir des registres de lot et des bilans d'essai (chemins relatifs à `etat/`) ; un registre n'est pas une
preuve : chaque ligne renvoie au livrable. Objectif de l'utilisateur (2026-10-13) : build alpha 2026.10.2.1a, Shipping seule,
remise au plus tard le 2026-10-18. Décisions de l'utilisateur : poursuivre les corrections avant l'alpha ; gel des scènes de
sexe levé (`BOSS/COMMUN-6-TESTS.md`) ; ZQSD pour la caméra, flèches pour le couple, glisser-déposer (`CAM/CAM-B2p-SPEC.md`) ;
bonus d'orgasme affiché au même emplacement que chez l'auteur (`ST/STE/STE-ORG5-I2-SPEC.md`) ; priorité à C1
(`CAM/CAM-COMMUN6-DIAG.md` § 0) ; façades de la rue avant l'alpha (`ST/STG/STG-TACHES.md`) ; « bien on valide la scene de sexe
dans son ensemble pour l'alpha » (11:06, `BOSS/COMMUN-8-BILAN.md`) ; « bien je valide le comportement de l'alpha. Prépares la
build de livraison » (16:00, `BOSS/BOSS-JOURNAL.md`) ; « Lettre acceptée » pour la version (`REL/ALPHA/REL-ALPHA.md`).
- **Essais communs.** COMMUN-1 à COMMUN-13 construites (CheckPackage PASS) ; bilans `BOSS/COMMUN-2-BILAN.md` à
`COMMUN-13-BILAN.md` ; COMMUN-13 (T1 à T8 OK, validés en bloc) ; un plantage GPU à la fin de l'essai, hors scène, cause
extérieure estimée (`ST/STG/STG-COMMUN13-GPU-DIAG.md`), cité dans les défauts connus des notes de version.
- **STE.** H3d, H10, GEL1 PASS en jeu ; G16 PASS statique ; O4a, O4c et ORG5 (récompenses et affichage) validés
(COMMUN-8) ; G3 compilée, 2 lignes de témoin en COMMUN-12 ; garde `chargen` après l'alpha.
- **STG.** Enfoncement, chevauchement, marche animée : voir ERR-115, 118, 121 ; façades de la rue solides ; C7-a, B2q-b1,
S-F5m / n / p, M-Z validés en jeu (COMMUN-8 à 10).
- **CAM.** C1, C2, corrections B2f à B2s, pendant le sexe B2p-R à B2p-J (cycle Scene, C3, POV ; couple borné dans la pièce ;
panneau sur Alt ou clic molette ; icône d'aide) ; B3 (vue plafonnier) non faite.
- **REL.** Garde de sauvegarde : E1 à E4, E6, E9 OK ; `LPModGuard` accepte une lettre finale ; Shipping `4a9bbdb3`, archive
`LifePlay_Revival_2026.10.2.1a_Windows_Game.7z` (SHA-256 `89ed211d…`), 4 zips de mods, notes de version et annonces ;
32 builds obsolètes (59,24 Go) envoyés à la corbeille de Windows.
- **Hors alpha.** P7-H2 (crochet `ecriture-gardien`) : v1 69 / 69 mais VAL FAIL, v2 partielle, rien installé. EVAL-FAB-1 à 4 :
contenus Fab négatifs. Après l'alpha : B3, POV de scène dans les têtes, STG-POST1 et POST2, B2q-b2 à b4, garde STE-H3i, fauteuil,
`Content\Saves` hors du dossier de sauvegarde.