LifePlay-Revival/Docs/Migration/etat/REG/REG1/REG1-INV.md

239 lines
21 KiB
Markdown
Raw Normal View History

# REG1-INV : relevés du lot REG1 (2026-10-13)
## T1 — comptes bruts dans les journaux de jeu
Fiche REG1-T1 — Niveau N1 — Modèle prévu (modèle de l'agent lp-inventory) | utilisé Sonnet 5.5 (claude-sonnet-5-5) — Agent lp-inventory — Skills sk-protocol, lp-paths, sk-recount
Lecture seule : aucun fichier écrit hors ce livrable. Tous les comptes ci-dessous viennent de `rg` (Git Bash, ripgrep 14.1.1)
lancé depuis `D:\Game`, sur les chemins `LifePlay_Build_5.8_<nom>_Development\Windows\LifePlay\Saved\Logs\<fichier>`.
### 1. Commandes exactes
Format réel du message (relevé dans STB-JEU2, `LifePlay.log:5227-5229`, `:20331-20333`) : un avertissement brut tient sur
**trois lignes** (ligne 1 `[ts]LogScript: Warning: Accessed None trying to read (real) property <X> in not an UClass`,
ligne 2 `\tGI_C ...`, ligne 3 `\tFunction /Game/BPs/GI.GI_C:<fonction>:64X`), puis un bloc `Script call stack:`. En fin de session,
le jeu écrit en plus une **synthèse** (`LogLifePlay: Display: <N> [LogScript Warning] ...`, 16 à 20 lignes par session de
plus de 4 min, section « Avertissements et erreurs : 73 signature(s) distincte(s) » dans STB-JEU2) où chaque signature tient sur UNE
ligne, avec le nombre `<N>` et les chiffres normalisés en `#`. Conséquence : un motif « sur une ligne » ne voit que la synthèse ;
un motif « ligne » sur le texte du message voit les événements bruts ET les lignes de synthèse.
`$f` = le journal. Comptes « lignes » = `rg -c` ; comptes « événements » = `rg -U --count-matches` (motif multi-ligne).
| Id | Commande exacte (motif) |
|---|---|
| AN | `rg -c 'Accessed None' $f` (lignes) ; `rg -c 'LogScript: Warning: Accessed None' $f` (bruts seuls) |
| SPAWN | `rg -c 'index SPAWN' $f` |
| CHECKING | `rg -c 'CHECKING:' $f` |
| Fatal / Unhandled / Assertion | `rg -c Fatal $f` ; `rg -c Unhandled $f` ; `rg -c Assertion $f` |
| Synthèse | `rg -c 'LogLifePlay: Display: +[0-9]+ +\[LogScript' $f` |
| ERR-030 a | `rg -c -F 'GI_C:Dress:' $f` |
| ERR-030 b | `rg -c -F 'property Person in not an UClass' $f` ; événements : `rg -U --count-matches 'property Person in not an UClass\r?\n[^\n]*\n\s*Function [^\n]*' $f` |
| ERR-068 a | `rg -c -F 'Get_SpinBox_0_Value_0' $f` |
| ERR-068 b | `rg -c -F 'GI in MainMenu' $f` (motif de la fiche, 0 partout) ; format réel : `rg -c -F 'property GI in /Game/UI/MainMenu' $f` |
| ERR-068 c | `rg -c -F 'property GI in /Game/UI/CharGen' $f` |
| ERR-082 (fiche) | `rg -c 'Accessed None.*Person.*(ReturnStatIfNeeded\|getActorVar\|setActorVar)' $f` (une ligne) |
| ERR-082 (réel) | `rg -U --count-matches 'Accessed None[^\n]*Person[^\n]*\n[^\n]*\n\s*Function [^\n]*(ReturnStatIfNeeded\|getActorVar\|setActorVar)' $f` ; détail : même motif en `rg -U -o --no-filename -N`, puis `rg -o 'Function /[^ ]*' \| sed -E 's/:[0-9]+X$//' \| sort \| uniq -c \| sort -rn` |
| ERR-083 | `rg -c 'Person_24_.*of length 0' $f` ; fonction qui suit : `rg -U -o --no-filename -N 'of length 0 in [^\n]*\n[^\n]*called by[^\n]*\n[^\n]*\n[^\n]*\n\s*Function [^\n]*' $f` puis le même tri par fonction |
| ERR-084 | `rg -c 'CallFunc_Array_Get_Item_(31\|32\|33\|41)' $f` ; dans `CallFunction` : `rg -U --count-matches 'CallFunc_Array_Get_Item_(31\|32\|33\|41) in not an UClass\r?\n[^\n]*\n\s*Function [^\n]*:CallFunction:' $f` |
| ERR-062 / 063 / 065 | `rg -c 'property TintUI in' $f` ; `rg -c 'GetRootComponent_ReturnValue' $f` ; `rg -c 'property Companion in' $f` |
| ERR-085 | `rg -c 'CallFunc_GetSkeletalMesh_ReturnValue' $f` (lignes) ; pile : `rg -U --count-matches 'CallFunc_GetSkeletalMesh_ReturnValue in[^\n]*\n(?:\t[^\n]*\n\|\[[^\n]*Script call stack:[^\n]*\n)*?\t[^\n]*UpdatePlayerMeshWithMorphs' $f` |
| ERR-007 | `rg -c 'property ContactMenu' $f` ; pile : même forme que ERR-085 avec `property ContactMenu` et `UpdateDailyPose` ; contrôle large : `rg -c 'ContactMenu' $f` et `rg -c 'UpdateDailyPose' $f` |
| Durée | première et dernière date : `rg -o -m1 '^\[[0-9.-]+' $f` ; `rg -o '^\[[0-9.-]+' $f \| tail -1` (heure UTC du journal ; l'heure de fichier ci-dessous est locale, +2 h) |
Journaux comptés (taille et date par `stat -c '%s %y'`) :
| Code | Journal | Taille (o) | Date fichier | Session (UTC) | Durée |
|---|---|---|---|---|---|
| A = STB-JEU2 | `LifePlay_Build_5.8_STB-JEU2_Development\...\LifePlay.log` | 4 973 703 | 2026-10-09 23:32 | 10-09 21:26:16 → 21:32:45 | 6 min 29 s |
| J1 | `LifePlay_Build_5.8_STF-STE_Development\...\LifePlay.log` | 1 639 554 | 2026-10-10 13:14 | 10-10 11:01:07 → 11:14:11 | 13 min 04 s |
| J3 | `LifePlay_Build_5.8_STF-STE-LISIB_Development\...\LifePlay.log` | 6 012 628 | 2026-10-10 19:24 | 10-10 16:55:30 → 17:24:40 | 29 min 10 s |
| J4 | `LifePlay_Build_5.8_STE-H5b-TEMOIN_Development\...\LifePlay.log` | 21 220 172 | 2026-10-10 22:16 | 10-10 19:58:38 → 20:16:38 | 18 min 00 s |
| J4x | idem, `LifePlay-backup-2026.10.10-19.57.37.log` | 186 806 | 2026-10-10 21:57 | 19:56:43 → 19:57:37 | 54 s |
| J4y | idem, `LifePlay-backup-2026.10.10-19.58.29.log` | 177 301 | 2026-10-10 21:58 | 19:57:48 → 19:58:29 | 41 s |
| J5a | `LifePlay_Build_5.8_STE-J5_Development\...\LifePlay-backup-2026.10.10-22.05.32.log` | 6 556 311 | 2026-10-11 00:05 | 10-10 21:52:35 → 22:05:32 | 12 min 57 s |
| J5b | idem, `LifePlay-backup-2026.10.10-23.19.09.log` | 241 070 | 2026-10-11 01:19 | 23:10:59 → 23:19:09 | 8 min 10 s |
| J5c | idem, `LifePlay-backup-2026.10.10-23.30.21.log` | 4 324 393 | 2026-10-11 01:30 | 23:22:20 → 23:30:21 | 8 min 01 s |
| J5d | idem, `LifePlay.log` | 4 700 624 | 2026-10-11 04:59 | 10-11 02:49:50 → 02:59:00 | 9 min 10 s |
| U | `LifePlay_Build_5.8_Development_U8r2_essai\...\LifePlay.log` | 3 097 288 | 2026-10-11 01:09 | 10-10 23:05:12 → 23:09:31 | 4 min 19 s |
| U8r2 | `LifePlay_Build_5.8_Development_U8r2\` | — | — | **aucun journal** : `find LifePlay_Build_5.8_Development_U8r2 -name '*.log' \| wc -l` = **0** (pas de dossier `Saved`) | — |
Tailles concordantes avec les fiches : J4 = 21 220 172 o (`STE-J4.md:44`), J5a = 6 556 311 o (fiche REG1-T1). J5a est la
session J5 de `STE-J5.md` ; J5b, J5c, J5d sont des sessions ultérieures, comptées à part (colonnes séparées). J4x et J4y
sont deux sessions courtes précédant J4 (comptées à part, hors J4).
### 2. Comptes bruts
Une sortie vide de `rg -c` (aucune ligne) est écrite 0. n.m. = non mesuré.
**Témoins d'activité**
| Témoin | A | J1 | J3 | J4 | J4x | J4y | J5a | J5b | J5c | J5d | U |
|---|---|---|---|---|---|---|---|---|---|---|---|
| `Accessed None` (lignes) | 659 | 153 | 151 | 32 874 | 11 | 5 | 48 | 2 | 33 | 24 | 21 |
| `Accessed None` bruts (`LogScript: Warning:`) | 650 | 148 | 146 | 32 865 | 8 | 3 | 42 | 1 | 28 | 20 | 16 |
| `index SPAWN` | 123 | 38 | 151 | 142 | 0 | 0 | 94 | 0 | 95 | 75 | 88 |
| `CHECKING:` | 2 318 | 464 | 5 490 | 9 524 | 0 | 0 | 6 099 | 0 | 2 289 | 2 898 | 1 887 |
| lignes de synthèse | 20 | 16 | 19 | 19 | 11 | 8 | 19 | 4 | 18 | 18 | 18 |
| Fatal / Unhandled / Assertion | 0/0/0 | 0/0/0 | 0/0/0 | 0/0/0 | 0/0/0 | 0/0/0 | 0/0/0 | 0/0/0 | 0/0/0 | 0/0/0 | 0/0/0 |
Lecture : J4x, J4y et J5b n'ont ni `CHECKING:` ni `SPAWN` (sessions de quelques dizaines de secondes à 8 min sans partie) : leurs 0
ne prouvent rien. Les 8 autres journaux ont de l'activité (`CHECKING:` ≥ 464, `SPAWN` ≥ 38).
**Signatures**
| Signature (motif) | A STB-JEU2 | J1 | J3 | J4 | J5a | J5b | J5c | J5d | U | J4x / J4y |
|---|---|---|---|---|---|---|---|---|---|---|
| ERR-030 `GI_C:Dress:` | 0 | 0 | 0 | **32 716** | 0 | 0 | 0 | 0 | 0 | 0 / 0 |
| ERR-030 `property Person in not an UClass` (lignes) | 270 | 0 | 0 | **32 713** | 0 | 0 | 0 | 0 | 0 | 0 / 0 |
| ERR-068 `Get_SpinBox_0_Value_0` | 90 | **240** | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 / 0 |
| ERR-068 `GI in MainMenu` (littéral de la fiche) | 0 | 0 | 0 | 0 | 0 | n.m. | n.m. | n.m. | 0 | n.m. |
| ERR-068 `property GI in /Game/UI/MainMenu` (format réel) | 12 | 25 | 0 | 0 | 0 | n.m. | n.m. | 0 | 0 | n.m. |
| ERR-068 `property GI in /Game/UI/CharGen` | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 / 0 |
| ERR-082 motif de la fiche (une ligne) | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 / 0 |
| ERR-082 événements (Person + 3 fonctions, 3 lignes) | **267** | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 / 0 |
| ERR-083 `Person_24_.*of length 0` | **351** | 5 | 232 | 109 | 13 | 0 | 7 | 13 | 8 | 0 / 0 |
| ERR-084 `CallFunc_Array_Get_Item_(31\|32\|33\|41)` (lignes) | **167** | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 / 0 |
| ERR-084 dont dans `CallFunction` (événements) | 153 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 / 0 |
| ERR-062 `property TintUI in` | 30 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 / 0 |
| ERR-063 `GetRootComponent_ReturnValue` | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 / 0 |
| ERR-065 `property Companion in` | 8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 / 0 |
| ERR-085 `CallFunc_GetSkeletalMesh_ReturnValue` (lignes) | 99 | 19 | 7 | 1 | 3 | 0 | 0 | 2 | 0 | 9 / 3 |
| ERR-085 dont pile `UpdatePlayerMeshWithMorphs` | **96** | 16 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 / 0 |
| ERR-007 `property ContactMenu` | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 / 0 |
| ERR-007 dont pile `UpdateDailyPose` | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 / 0 |
Notes de lecture :
- ERR-068 `GI in MainMenu` : le texte réel est `property GI in /Game/UI/MainMenu.MainMenu_C` ; le littéral de la fiche donne 0 partout (échec de
motif, pas absence). ERR-068 AVANT/APRÈS demandés : STB-JEU2 `Get_SpinBox_0_Value_0` 90 (AVANT H3), J1 = 240 (avant le correctif
CHG-309, base de « 240 → 0 » de `STF-T5-J.md`), J3 = 0 (APRÈS), J5a = 0, U = 0. La cause (GI) est la même dans A et J1, la quantité
dépend du temps passé dans les menus.
- ERR-007 (`ContactMenu`) : 0 dans les 11 journaux ; `rg -c 'ContactMenu'` = 0 sauf J5d = 3 lignes, toutes `LogLifePlay: LISIB : Text Box lisible
ContactMenu.<…>` (`LifePlay.log:6860-6862` de J5d, sans rapport avec le défaut) ; `UpdateDailyPose` = 0 partout (mesuré sur A, J1, J3, J4, J5 principal
et U seulement). Le défaut ERR-007 n'est donc pas visible dans STB-JEU2 non plus : aucune référence « avant » mesurable ici.
- ERR-085 : seul le motif « pile `UpdatePlayerMeshWithMorphs` » est la signature ; les autres lignes `CallFunc_GetSkeletalMesh_ReturnValue`
sont d'autres fonctions (J1 : 16 en `ExecuteUbergraph_GI` à pile `UpdatePlayerMeshWithMorphs`, 1 en `CharGen_C:PopulateGenitalSlidersDaz`,
2 non détaillées ; J3 : par exemple `GI_C:SavePreset` (`LifePlay.log:1160`), `CharGen_C:PopulateGenitalSlidersDaz` (`:1206`),
`Person_C:ExecuteUbergraph_Person` (`:19870`) ; suffixes `_2`, `_3` du nom de variable).
**ERR-082 par fonction** (STB-JEU2 ; motif réel multi-ligne ; somme = 267 = 142 + 93 + 32, identique aux lignes de synthèse
`LifePlay.log:30936`, `:30940`, `:30942`) :
| Fonction | Événements |
|---|---|
| `GI_C:getActorVar` | 142 |
| `GI_C:ReturnStatIfNeeded` | 93 |
| `GI_C:setActorVar` | 32 |
**Message `property Person in not an UClass` par fonction (ERR-030 / ERR-082), événements bruts**
| Journal | Par fonction |
|---|---|
| A STB-JEU2 | `getActorVar` 142 ; `ReturnStatIfNeeded` 93 ; `setActorVar` 32 (total 267) |
| J4 | **`GI_C:Dress` 32 681** ; `GI_C:removeAlreadyGot` 30 (total 32 711) |
| J1, J3, J5a-d, U, J4x, J4y | aucun (0) |
**ERR-084 par fonction (STB-JEU2, événements bruts)** : `GI_C:CallFunction` 153 ; `GI_C:CallFunctionReturnBool` 14 ; total 167 (les deux
lignes de synthèse n'entrent pas : leur nom est normalisé en `Item_#`).
**ERR-083, fonction de l'`Accessed None` qui suit le message (estimé : la ligne `Script Msg` n'a pas de pile propre ; la
fonction lue est celle de l'avertissement suivant, sur 5 lignes)**
| Journal | Total ERR-083 | Fonctions du suivant (événements) |
|---|---|---|
| A | 351 | `CallFunction` 103 ; `ReturnStatIfNeeded` 86 ; `getActorVar` 71 ; `setActorVar` 16 ; `CallFunctionReturnBool` 7 ; `isCreatureType` 6 ; `getRelatedPerson` 2 ; `ExecuteUbergraph_GI` 1 (somme 292, 59 non suivis d'un Accessed None) |
| J1 | 5 | `isCreatureType` 1 |
| J4 | 109 | `isCreatureType` 13 ; `Dress` 11 |
| J5a | 13 | `isCreatureType` 11 |
| J5c | 7 | `isCreatureType` 6 |
| J5d | 13 | `isCreatureType` 9 ; `getRelatedPerson` 4 |
| U | 8 | `isCreatureType` 5 ; `Impregnate` 1 |
| J3 | 232 | non relevé (motif non rejoué sur J3) |
### 3. Écarts au compte attendu de la fiche
| Attendu (fiche) | Obtenu | Écart / cause |
|---|---|---|
| ERR-082 = 270 | 270 en lignes `property Person in not an UClass` ; **267 événements** (+ 3 lignes de synthèse) | Le motif de la fiche (`Accessed None` + `Person` + fonction sur UNE ligne) donne **3**, car le message brut est sur trois lignes ; seule la synthèse tient sur une ligne. 270 = 267 événements + 3 lignes de synthèse (`LifePlay.log:30936`, `:30940`, `:30942`). Les 267 événements sont tous dans les 3 fonctions (142 / 93 / 32). Le registre compte donc des lignes, pas des événements (écart de 3 si on compte les événements). |
| ERR-083 = 351 | 351 | confirmé (lignes brutes ; la synthèse normalise `Person_#_#…`, hors motif, `LifePlay.log:30933`) |
| ERR-084 = 167 | 167 (lignes) = 153 `CallFunction` + 14 `CallFunctionReturnBool` | confirmé en lignes, mais le « dans `CallFunction` » de la fiche ne vaut que **153** ; le 167 inclut `CallFunctionReturnBool` |
| STB-JEU2 ERR-062 / 063 / 065 / 085 : 30 / 5 / 8 / 96 | 30 / 5 / 8 / 96 | confirmé (96 = pile `UpdatePlayerMeshWithMorphs` ; 99 lignes au total) |
| ERR-068 « GI in MainMenu » | 0 partout | motif de la fiche inexact ; format réel `property GI in /Game/UI/MainMenu` (12 / 25 pour A / J1) |
| U8r2 : `LifePlay.log` et tout `*.log` sous `LifePlay_Build_5.8_Development_U8r2\` | 1 journal pour `_essai`, **0** pour `U8r2` | `U8r2` n'a pas de `Saved\Logs` ; compté seul : `_essai` |
### 4. Établi / estimé / incertain
**Établi** (sortie rejouée ci-dessus) :
- Les 3 références STB-JEU2 sont retrouvées : 270 (en lignes), 351, 167 ; et 30 / 5 / 8 / 96 pour ERR-062 / 063 / 065 / 085.
- ERR-030 : `Dress` 0 en STB-JEU2, J1, J3 ; **32 716** lignes (32 681 événements `property Person` dans `GI_C:Dress`) en J4 ; 0 en J5a-d et U. Le motif `property Person in not an UClass` suit (270 → 0 → 32 713 → 0).
- ERR-082 : 267 événements en STB-JEU2 (3 fonctions) ; 0 dans J1, J3, J4, J5a-d, U (avec activité : `CHECKING:` 464 à 9 524).
- ERR-084 : 167 en STB-JEU2 ; 0 partout ailleurs. ERR-062 / 063 / 065 : 30 / 5 / 8 en STB-JEU2 ; 0 partout ailleurs, J1 compris.
- ERR-068 : `Get_SpinBox_0_Value_0` 90 (A), 240 (J1), puis 0 (J3, J4, J5a-d, U).
- ERR-085 : pile `UpdatePlayerMeshWithMorphs` 96 (A), 16 (J1), 0 ensuite (J3 à U, J4 compris).
- ERR-083 : 351 (A), 5 (J1), 232 (J3), 109 (J4), 13 / 7 / 13 (J5a, J5c, J5d), 8 (U), 0 dans les sessions sans partie ; jamais 0 avec activité. 109 pour J4 est confirmé par `STE-J4.md:55`.
- Aucun `Fatal`, `Unhandled` ni `Assertion` dans les 11 journaux ; U8r2 n'a aucun journal.
**Estimé** :
- La comparaison avant / après suppose des sessions comparables ; les durées vont de 4 min à 29 min et les `CHECKING:` de 464 à 9 524 : les 0 sont portés par l'activité (J1, J3, J4, J5a, J5c, J5d, U ont tous `CHECKING:` ≥ 464) mais l'ordre de grandeur des non-zéros dépend de la durée.
- Fonction qui suit un message ERR-083 : lecture de l'`Accessed None` suivant, pas une pile propre au message.
**Incertain / non mesuré** (essai qui trancherait) :
- ERR-083 par fonction pour J3 ; `property GI in /Game/UI/MainMenu` pour J5b, J5c, J4x, J4y : non rejoué (essai : relancer la boucle avec ces fichiers).
- ERR-007 : jamais présent, même en STB-JEU2 ; le défaut (63 par session U6 selon `CHG-263`) demande le journal U6, hors périmètre de la fiche.
- Les 2 lignes `CallFunc_GetSkeletalMesh_ReturnValue` non détaillées de J1 (19 lignes = 16 + 1 + 2).
- Les heures de session sont en UTC (le journal) ; les durées sont lues sur la première et la dernière ligne datée, pas sur « Log file closed ».
Tours : 17 / 40
### Recompte de l'orchestrateur (sk-recount, 2026-10-13)
`rg -c '<motif>' <journal>` rejoué sur STB-JEU2, J3 (STF-STE-LISIB), J5a (`LifePlay-backup-2026.10.10-22.05.32.log`), U8r2_essai :
`property Person in not an UClass` 270 / 0 / 0 / 0 ; `GI_C:Dress:` 0 / 0 / 0 / 0 ; `Get_SpinBox_0_Value_0` 90 / 0 / 0 / 0 ;
`Person_24_.*of length 0` 351 / 232 / 13 / 8 ; `CallFunc_Array_Get_Item_(31|32|33|41)` 167 / 0 / 0 / 0 ;
`property TintUI in` 30 / 0 / 0 / 0 ; `GetRootComponent_ReturnValue` 5 / 0 / 0 / 0 ; `property Companion in` 8 / 0 / 0 / 0 ;
témoins `CHECKING:` 2 318 / 5 490 / 6 099 / 1 887, `index SPAWN` 123 / 151 / 94 / 88.
`property GI in /Game/UI/MainMenu` : STB-JEU2 12, J1 25, J3 0, J5 (4 journaux) 0, U8r2 0 ; `property GI in /Game/UI/CharGen` 1 / 1 / 0 / 0 / 0 ;
`UpdatePlayerMeshWithMorphs` 96 / 16 / 0 / 0 / 0. **Concordance totale avec le relevé de l'agent.**
## T2 — Contrôle global CHG ↔ journal, correctifs sans ligne ERR (orchestrateur, 2026-10-13)
### T2.1 Les CHG cités existent
Commandes (Git Bash, `D:\Game\LifePlay-master 5.8\Docs`) :
```
grep -o "^| CHG-[0-9]*" Journal_Modifications.md | sed 's/| //' | sort -u # 333 numéros
grep "^| ERR-" Registre_Erreurs.md | grep -o "CHG-[0-9]*" | sort -u # 46 numéros cités
comm -23 <cités> <journal> # vide
grep -o "^| CHG-[0-9]*" Journal_Modifications.md | sort | uniq -d # vide (aucun doublon)
```
- **Mesuré** : 46 CHG cités par le registre, **46 présents** au journal ; 0 doublon au journal ; CHG-001 à CHG-334 = 333
entrées, seul **CHG-048** manque (déjà noté par `etat/ARCH427/ARCH427-DOC.md:47`, cité nulle part au registre).
- Statut « corrigé / clos » **sans numéro CHG** dans la colonne : ERR-002 (CX-B01, CX-B08), ERR-006 et ERR-007 (CX-B12),
ERR-003 (constat, pas de correctif). Les lots cités ont leur CHG dans le registre lui-même : CX-B01 = CHG-018 (ERR-020),
CX-B08 = CHG-029 (ERR-027), CX-B12 = CHG-042 (ERR-005). Proposition : ajouter ces numéros (forme, sans changement de statut).
- Le journal ne cite en général pas l'ERR (43 paires statut ↔ CHG dont la ligne du CHG ne nomme pas l'ERR) :
convention du journal, pas un défaut ; la correspondance a été relue par sondage sur CHG-257 à 292 (objets cohérents).
### T2.2 Correctifs de défauts du jeu commités sans ligne au registre (CHG-240 à 334, lignes touchant `Content/BPs`, `Content/UI`, `Source/LifePlay`)
| CHG | Lot | Défaut corrigé (résumé du journal) | ERR existante proche | Proposition |
|---|---|---|---|---|
| CHG-263 | STM | `Accessed None` `ContactMenu` dans `Person_C:UpdateDailyPose` (OR évalué en entier), 63 par session U6 | **ERR-007** (même signature) | rattacher à ERR-007 → « corrigé (CHG-263) » si 0 mesuré |
| CHG-296 | STC | réglages caméra / durée écrasés (ERR-057) ; saisie écrivant 0,2 | **ERR-057** (cite CHG-294) | ajouter CHG-296 à ERR-057 |
| CHG-303 | STF | 12 SpinBox de Settings liées à `GI` écrasaient les réglages (suite d'ERR-057) | **ERR-057** | ajouter CHG-303 à ERR-057 |
| CHG-305 | STE | gardes R06 / R07-R08 / R10 (`TintUI`, `GetRootComponent`, `Companion`) ; J1 : 30 / 5 / 8 → 0 / 0 / 0 | **ERR-062, ERR-063, ERR-065** (le journal les cite) | statut → « corrigé (CHG-305, garde) » |
| CHG-306 | STE | texte du panneau Save Preset illisible (CharGen) | aucune | ERR nouvelle (lisibilité CharGen) ou rien (défaut d'origine) |
| CHG-309 | STF | `Get_SpinBox_0_Value_0` MainMenu | **ERR-068** | statut → « corrigé (CHG-309) » (objet de T1) |
| CHG-313 / 314 | STE | gardes G1-G11 (`Person` vide dans le moteur de scènes) | **ERR-082, ERR-084** | statut → « corrigé (CHG-313, CHG-314) » (T1) |
| CHG-315 | STE | garde G-H2 `GetSkeletalMesh` dans `UpdatePlayerMeshWithMorphs` ; J3 96 → 0 | **ERR-085** (le journal la cite) | statut → « corrigé (CHG-315, garde ; cause STE-H2b) » |
| CHG-317 | STF | `Accessed None property GI in CharGen_C` (`SpinBox_0` `OnValueChanged`) | ERR-057 (mécanisme) / ERR-068 (même lot STF-T5) | rattacher à ERR-068 (même réglage, même lot) ou ERR nouvelle |
| CHG-319 | LISIB | texte gris clair sur gris clair (SpinBox / Text Box des menus) | aucune | ERR nouvelle (lisibilité des menus) ou rien (amélioration) |
| CHG-320 | STE | F-a : `UpdateCheckForScenes` vide `Variables` pendant la boucle IA (`AI` absente) | **ERR-003** (le journal la cite ; statut « clos » constat) | ajouter « cause corrigée (CHG-320) » à ERR-003 |
| CHG-321 | STE | O1 / O3 : `Dress` sur personne nulle (`Room`, `clearScenePersons`) | **ERR-030** | statut → « corrigé (CHG-321) » (T1) |
| CHG-322 | STE | G12 `AddVariable` : `Person_24` | **ERR-083** | statut → « atténué (CHG-322) ; reste STE-H3d » (T1) |
| CHG-326 | STE | C0 `destroyDummy` : F5 `No SkeletalMesh` au DESTROY du mannequin | **ERR-011** (`No SkeletalMesh`, accepté) | mention « atténué en partie (CHG-326) » à ERR-011, ou ERR nouvelle F5 ; preuve en jeu J6 non faite |
Hors table (outillage, réglages vidéo, non-défaut du jeu ou déjà cité) : CHG-241 / 242 (VQ, contraste Settings : amélioration,
lot VQ sans ERR), CHG-245, 252 à 255, 262, 265, 272, 280, 293, 300 (outillage, migration, docs).