--- 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//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 `\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\\` (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- (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`, 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.