20 KiB
Fiche STD-SCN — Niveau N3 — Modèle prévu (modèle de l'agent lp-cart) | utilisé claude-opus-5-5 — Agent lp-cart — Skills lp-doc (gabarits), sk-protocol
STD-SCN-DIAG : familles du moteur de scènes, origine STB ou préexistante (2026-10-10)
Lecture seule stricte : aucun lancement (jeu, éditeur, commandlet, build), aucune écriture hors de ce fichier. Copie
D:\Game\LifePlay-master 5.8 lue à HEAD 20620f6 (gelée par STC).
Abréviations des journaux (chemins absolus) :
- L2 = STB-JEU2
D:\Game\LifePlay_Build_5.8_STB-JEU2_Development\Windows\LifePlay\Saved\Logs\LifePlay.log - L1 = STB-JEU
D:\Game\LifePlay_Build_5.8_STB-JEU_Development\Windows\LifePlay\Saved\Logs\LifePlay-backup-2026.10.09-20.30.49.log - LU8 = base U8
D:\Game\LifePlay_Build_5.8_Development_U8_essai\Windows\LifePlay\Saved\Logs\LifePlay-backup-2026.10.09-16.46.02.log - DC4 = 5.5 avant migration
D:\Game\LifePlay-master 5.5\Docs\Migration\etat\U58\U6\LifePlay_55_DC4_avantU6.log - U6-55 / U6-58 =
...\etat\U58\U6\LifePlay_55_session2.log/LifePlay_58_session2.log - P10-55 / P10-58 =
...\etat\U58\U7\P10\5.5\LifePlay.log/...\U7\P10\5.8\LifePlay.log(5.8 avant STB, 2026-10-09 06:4x) - JM =
D:\Game\LifePlay-master 5.8\Docs\Migration\Journal_Modifications.md - Dumps : STA-d =
D:\Game\LifePlay-master 5.5\Docs\Migration\etat\ST\STA\dumps\, STB-d =...\etat\ST\STB\dumps\
1. Symptôme et reproduction
Session STB-JEU2 (parcours : nouvelle partie avec éditeur de personnage, ville, actions seul et avec partenaire,
scènes dont meet_couple, STB-JEU-VAL.md:14-15). Comptes bruts dans L2 (Grep, mode count, rejouables) :
| Famille | Motif Grep exact | L2 |
|---|---|---|
F1 Accessed None … Person |
property Person in |
270 (en tête de pile : GI_C:ReturnStatIfNeeded:64X 93, GI_C:getActorVar:64X 142, GI_C:setActorVar:64X 32 ; 3 non ventilées) |
| F2 index hors bornes « tableau sans nom » | Person_24_4B712C904750AD4CE1580DBEBD9E7396' of length 0 |
351 (le tableau est le membre Person de la structure /Game/Structs/Variable, d'où le nom à GUID) |
F3 CallFunc_Array_Get_Item_31/32/33/41 |
property CallFunc_Array_Get_Item_(31|32|33|41) |
167 (171 avec _\d+ : 4 lignes _30 hors fiche, L2:12087, 12097, 22396, 22406) ; dont _33 : 33 |
F4 CallFunc_GetSkeletalMesh_ReturnValue |
property CallFunc_GetSkeletalMesh_ReturnValue |
99 ; variante GI (multiligne, en-tête GI_C:ExecuteUbergraph_GI:) 96 |
| F5 « No SkeletalMesh » | No SkeletalMesh |
15 793 (51 % des 30 995 lignes) ; Person_C_2147481850 10 751, Person_C_2147481946 1 040 ; socket CenterBrow 3 264 |
| Dénominateurs | CHECKING: / index SPAWN / DestroyDummy was from CheckScenes / \(test0104\) for [0-9.]+ hours by 0 / Actor cleared and destroyed |
2 318 / 123 / 185 / 24 / 1 (L2:2226) |
Lien avec les lignes de scène (établi, même horodatage et même image) :
- F1 par le contrôle des scènes : L2:5226
CHECKING: …meet_random/meet_new_person.lpscenepuis L2:5227-5238 (UpdateCheckForScenes→CheckConditionsOther→CheckEachCondition→CalculateString→Calculator→ReturnStatIfNeeded). La ligne OTHER de la scène lit la stat d'un acteur peut-être absent :D:\Game\LifePlay-master 5.8\Content\Modules\vin_Base\Scenes\meet_random\meet_new_person.lpscene:5(isWithCompanion() && Random(0, 200) < CurrentCompanion:interpersonal). Même chose au démarrage d'une scène : L2:20166CHECKING: …family/child_sexual.lpscene→ L2:20167-20178 (PlayScene→CheckConditionsOther→ … →ReturnStatIfNeeded). - F1/F2/F3 par la lecture du script d'une scène lancée : L2:20189-20200 (hors bornes
Person_24+getActorVarsousPlayScene→ReadSceneLine→CallFunction), L2:20327-20339 (CallFunc_Array_Get_Item_33dansCallFunction), L2:20398-20411 (setActorVar). Chaque groupe33, 32, 31, 31, 31, 31est suivi de quelques dizaines de lignes par(test0104) for <n> hours by 0(ex. L2:20331 → L2:20397 ; L2:20581 → 20647 ; L2:29929 → 29995) : 24 démarrages d'action « by 0 », presque tous dans la rafale 21:32:09 à 21:32:21. - F4 : L2:5173-5199 :
CHECKING: …dating/sociable_dating.lpscene(WHO =getSpecific(Dating),...\Scenes\dating\sociable_dating.lpscene:4) →Person_C_2147481850 index SPAWN→ avertissement (pileUpdateCheckForScenes→CheckConditionsWho→ReadSceneLine→CallFunction→GetSpecific→LoadPreset→GenerateAndApplyStrings→PlayerChangeRace→UpdatePlayerMeshWithMorphs) →DESTROY… Slot: 1→DestroyDummy was from CheckScenes, WHO unmatched. 96 SPAWN sur 123 sont suivis à la ligne suivante de F4 (multiligneindex SPAWN \(test0304\)\r?\n[^\n]*property CallFunc_GetSkeletalMesh_ReturnValue in→ 96). - F5 : L2:5193
test0304 DESTROY… index Person_C_2147481850puis L2:5194-5198 et suivantes :GetSocketInfoByName(Head ×2, pelvis, chestUpper, hip, CenterBrow) à chaque image sur le même acteur recyclé. Écart à la fiche : « Actor cleared and destroyed » n'apparaît qu'une fois (L2:2226) ; le déclencheur réel est la libérationtest0304 DESTROYdu mannequin (acteur gardé en réserve, réutilisé au SPAWN suivant :Person_C_2147481850revient dans la plupart des 123 SPAWN).
Comptage par scène : sans objet au sens strict pour F3, F1 (getActorVar/setActorVar) : le fichier joué par PlayScene
n'est pas écrit dans le journal (aucune ligne lpscene hors CHECKING: et timed out, Grep
GI_C_\d+\] ([^C]|C[^H]).*(lpscene|lpaction|lpquest) → 17 lignes timed out seulement). Normalisation retenue :
par démarrage d'action « by 0 » (F1, F3), par ligne CHECKING: (F1, F2, F5), par SPAWN de mannequin CheckScenes (F4).
2. Hypothèse testée (une seule)
H : les cinq familles sont préexistantes au lot STB — (a) leur fréquence normalisée dans L2 égale celle d'un journal antérieur à STB, et (b) aucune fonction ni aucun événement de leur pile n'est modifié par CHG-281 à CHG-294.
3. Essai et résultat brut
3.1 Fonctions modifiées par STB (critère b)
Lecture de JM:1135-1148 (CHG-294 à CHG-281). Graphe GI touché : événements LoadSettings, PopulateRaws
(CHG-281, JM:1148), FocusOnMapMarkers et fonction clearVariable (CHG-282, JM:1147), nœuds de lecture
Clothes4 / MorphTags (CHG-283, JM:1146), clearDaily, PlayIdle, PlayDaily, PerTick et fonctions
determinePersonVars, clearScenePersons (CHG-290, JM:1139). Person : standIdle, rotation de tête
(HeadtrackTarget → CenterBrow), OccupyingFnt (CHG-284, JM:1145), assignHome (CHG-285, JM:1144). Autres :
MainMenu (CHG-286 retiré par CHG-294), StreetMap_Static, Room, SexInterface, garde C++ des marqueurs.
Aucun des noms de pile n'y figure : UpdateCheckForScenes, PlayScene, CheckConditionsWho,
CheckConditionsOther, CheckEachCondition, CalculateString, Calculator, ReturnStatIfNeeded, ReadSceneLine,
CallFunction, getActorVar, setActorVar, GetSpecific, getPerson, LoadPreset, GenerateAndApplyStrings,
PlayerChangeRace, UpdatePlayerMeshWithMorphs. Réserve : ExecuteUbergraph_GI (EventGraph) est modifié, mais dans
d'autres événements ; pour F4, le câblage de UpdatePlayerMeshWithMorphs est identique avant et après STB (§ 3.5).
Point de contact indirect pour F5 : CHG-284 (lecture CenterBrow dans l'EventGraph de Person), voir § 3.6.
3.2 Tableau des comptes bruts (Grep, mode count ; L1 et LU8 avec le motif neutre de format)
Motif F1 neutre (5.5 écrit …property Person sans « (real) … in ») : Accessed None trying to read (\(real\) )?property Person\b.
F3 en 5.5 : property CallFunc_Array_Get_Item_(31|32|33|41)\b. F4 variante GI : multiligne
property CallFunc_GetSkeletalMesh_ReturnValue( in not an UClass)?\r?\n\s+GI_C [^\n]*\n\s+Function /Game/BPs/GI\.GI_C:ExecuteUbergraph_GI:.
| Journal (moteur, date) | CHECKING | by 0 | SPAWN | Dummy CheckScenes | F1 | F2 | F3 | F3 _33 |
F4 (GI) | F5 |
|---|---|---|---|---|---|---|---|---|---|---|
| DC4 (5.5, 2026-10-08) | 5 410 | 56 | 76 | 0 | 664 | 1 379 | 395 | 77 | 0 | 10 974 |
| U6-55 (5.5) | 831 | — | 20 | 0 | 3 | 87 | 0 | — | 0 | 2 315 |
| P10-55 (5.5) | 213 | — | 6 | 0 | 1 | 23 | 0 | — | 0 | 1 254 |
| U6-58 (5.8) | 380 | — | 18 | 0 | 2 | 59 | 0 | — | 0 | 2 723 |
| P10-58 (5.8, avant STB) | 1 429 | — | 33 | 57 | 1 | 119 | 0 | — | 10 | 10 388 |
| LU8 (5.8, avant STB) | 374 | 0 | 15 | — | 2 | 39 | 0 | — | 0 | 871 (STA-T3-DOC.md:60 ; Grep combiné F4+F5+SPAWN = 886) |
| L1 (STB complet) | 2 515 | — | — | — | 152 | 204 | 84 | — | 97 | ≤ 18 226 (Grep combiné F5 + SPAWN + Dummy, non séparé) |
| L2 (STB, CHG-286 retiré) | 2 318 | 24 | 123 | 185 | 270 | 351 | 167 | 33 | 96 | 15 793 |
« — » = non compté (budget). by 0 = \(test0104\) for [0-9.]+ hours by 0 ; U58 : DC4 seul (56). Dummy CheckScenes =
DestroyDummy was from CheckScenes ; U58 : P10-58 seul (57).
3.3 F1 et F2 : ReturnStatIfNeeded, getActorVar, setActorVar (Person / tableau Person_24…)
- Mécanisme, lu dans STA-d
GI__ReturnStatIfNeeded.txt: chaîneX:statcoupée sur:(Split, :409-417) →GetVariable(Name = X)(:140-145) →Variable.Person[0](K2Node_GetArrayItem_10794, :156-159) →Set Person(:39-43) →Person.QueryStat(:160-168), sans test. Variable jamais affectée → tableau vide → F2 puis F1 ; variable affectée à une référence nulle → F1 seul (cas L2:5227, sans ligne F2 avant). Chemin sans:→PlayerCharacter(:31-53), toujours valide. - Même signature et même pile en 5.5 avant migration : DC4:13020-13031 (
Accessed None trying to read property Person,ReturnStatIfNeeded:036D, pileUpdateCheckForScenes→CheckConditionsOther→ … →ReturnStatIfNeeded). - Fréquence normalisée : F1 par démarrage « by 0 » : L2 270 / 24 = 11,3 ; DC4 664 / 56 = 11,9. Par
CHECKING:: L2 0,116 ; DC4 0,123. Les sessions U6/U7/U8 sans démarrage « by 0 » restent à 1-3. - F2 : présent dans tous les journaux 5.5 et 5.8 (DC4 1 379, U6-55 87, P10-58 119, LU8 39). Plus bas en L2 qu'en DC4
par démarrage (14,6 contre 24,6) : une partie de F2 en DC4 vient de
clearVariable(DC4:8624-8637, pileGeneratePerson→clearVariable), lecture supprimée par CHG-282 (estimé : non décompté par fonction).
3.4 F3 : CallFunc_Array_Get_Item_31/32/33/41 dans CallFunction
- Même nœuds, même pile en 5.5 : DC4:31616-31626 (
CallFunc_Array_Get_Item_33,CallFunction:ADF7, pilePlayScene→ReadSceneLine→CallFunction, précédé du hors bornesPerson_24) ;_32en DC4:31689-31691. - Fréquence :
_33par démarrage « by 0 » : L2 33 / 24 = 1,38 ; DC4 77 / 56 = 1,375. Journaux 5.8 antérieurs sans démarrage « by 0 » : 0 (aucune ligne F3 dansetat\U58hors DC4, ni dans LU8). - Cause : argument « personne » lu en
Variable.Person[0]sur une variable d'acteur vide, puis fonction appelée sur None (estimé : dump deCallFunctionabsent, § 3.7).
3.5 F4 : CallFunc_GetSkeletalMesh_ReturnValue (GI)
- Nœud : événement
UpdatePlayerMeshWithMorphs(STB-dGI__EventGraph.txt:1160-1197) :CharacterBeingEdited.Mesh(K2Node_VariableGet_7384) →LPMeshCompat::GetSkeletalMesh(K2Node_CallFunction_1101, :29255-29258) →MorphTargets(K2Node_VariableGet_7134, :1189-1191) →ForEachLoop, sans test.ULPMeshCompat::GetSkeletalMeshrendCast<USkeletalMesh>(GetSkinnedAsset()), donc nullptr sans message quand le composant n'a pas de maillage (D:\Game\LifePlay-master 5.8\Source\LifePlay\LPMeshCompat.cpp:9-19). Correspondance nom compiléCallFunc_GetSkeletalMesh_ReturnValue↔ nœud_1101: estimée (seulGetSkeletalMeshvu sur la chaîne de cet événement). - Câblage identique avant STB : STA-d
GI__EventGraph.txt:1041-1044, 1070-1072, 29148-29151. - Avant STB en 5.8 : P10-58:39196-39221, même pile (via
getPersonau lieu deGetSpecific), 10 avertissements pour 10 SPAWN de mannequin CheckScenes (index SPAWNsuivi de F4 : 10). Les SPAWN de génération (GeneratePerson,GenerateUnknown) étaient suivis decurrentMatchRace(P10-58 : 21 ; LU8 : 15/15), avertissement retiré par CHG-290 ; ils ne donnent pas F4. - En 5.5 : aucun SPAWN de mannequin CheckScenes dans les journaux disponibles (
DestroyDummy was from CheckScenes: 0 dans DC4, U6-55, P10-55) ; les 2 F4 de DC4 sont d'autres nœuds (CharGenPopulateGenitalSlidersDazDC4:7424-7432, PersonBackupMorphsDC4:58139-58148). Origine 5.5 ou migration 5.8 : non tranchée. - Rapport L2 : 96 F4 pour 96 SPAWN suivis immédiatement de F4 ; la hausse 10 → 96 suit le nombre de mannequins CheckScenes (57 → 185), lui-même lié au parcours (relations du personnage créé).
3.6 F5 : « GetSocketInfoByName(...): No SkeletalMesh » (STA-D23)
- Même schéma en 5.5 avant migration : DC4:8821-8828 (
index SPAWN,DESTROY… Slot: 1, puis Head ×2, pelvis, chestUpper, hip sur le même acteur). - Par
CHECKING:: L2 6,8 ; P10-58 (avant STB) 7,3 ; U6-58 7,2 ; LU8 2,3 ; 5.5 : DC4 2,0, U6-55 2,8, P10-55 5,9. L2 reste dans la plage 5.8 d'avant STB. - Part
CenterBrow(seul socket touché par CHG-284) : L2 3 264 / 15 793 = 20,7 % ; P10-58 6 953 / 10 388 = 66,9 % ; DC4 2 470 / 10 974 = 22,5 %. Aucune hausse après CHG-284, plutôt une baisse (cohérent avec l'évaluation conditionnelle qui remplace leSelectVector, JM:1145 ; estimé : la part dépend aussi du parcours). - Lecteur par image (tête, bassin, poitrine, hanche, sourcils) non identifié : EventGraph de Person ou AnimBP (point à confirmer).
3.7 Dumps
Présents : ReturnStatIfNeeded (STA-d), EventGraph GI avant / après STB (UpdateCheckForScenes, PlayScene,
UpdatePlayerMeshWithMorphs), EventGraph de Person (STB-d). Dump requis (non produit, copie gelée), tailles lues
dans STA-d GI__graphes.txt : CallFunction (1 538 nœuds, :50), getActorVar (15, :262), setActorVar (32, :263),
LoadPreset (109, :20), CheckConditionsWho (32, :42), ReadSceneLine (105, :49), GenerateAndApplyStrings
(391, :27) ; ainsi que GetSpecific, getPerson, PlayerChangeRace, CheckConditionsOther, Calculator (taille non relevée).
4. Verdict : confirmée (F1, F2, F3, F5) ; confirmée vis-à-vis de STB, indécise 5.5 / 5.8 pour F4
| Famille | Cause | Origine | Correctif proposé (non appliqué) | Effort |
|---|---|---|---|---|
F1 Person dans ReturnStatIfNeeded / getActorVar / setActorVar |
stat ou variable lue sur un acteur de scène vide ou nul (X:stat, ex. meet_new_person.lpscene:5), sans test avant QueryStat |
préexistante (5.5 : DC4:13020-13031 ; 11,3 contre 11,9 par démarrage) | ReturnStatIfNeeded : IsValidIndex(Variable.Person, 0) puis IsValid(Person) entre GetVariable (K2Node_CallFunction_81822) et QueryStat (K2Node_CallFunction_7798) ; sinon Float = 0.0 (valeur rendue aujourd'hui). Même garde dans getActorVar (valeur par défaut) et setActorVar (écriture sautée) |
S (≈ 5 nœuds par fonction, schéma de CHG-282) ; dumps get/set requis |
F2 hors bornes Person_24… |
même lecture Person[0] sur tableau vide |
préexistante (DC4 1 379, P10-58 119, LU8 39) ; baisse partielle due à CHG-282 (estimé) | couvert par F1 et F3 (même lecture) | — |
F3 CallFunc_Array_Get_Item_31/32/33/41 |
4 lectures Variable.Person[0] passées comme cible dans CallFunction, fonction appelée sur None |
préexistante (DC4:31616-31626 ; _33 1,38 contre 1,375 par démarrage) |
aide C++ GetPersonAtOrNone (modèle GetStringAtOrEmpty, CHG-283) pour la lecture, plus IsValid avant chaque appel ; ou abstention si l'on juge le cas normal (contenu de module, piège 5) |
M (1 538 nœuds ; dump requis pour situer les 4 cas) |
F4 CallFunc_GetSkeletalMesh_ReturnValue |
UpdatePlayerMeshWithMorphs lit MorphTargets du maillage du mannequin recyclé, sans maillage au moment de LoadPreset |
préexistante au lot STB (P10-58:39196-39221, 1 par SPAWN CheckScenes) ; indécise 5.5 / 5.8 (chemin absent des journaux 5.5) | garde IsValid(GetSkeletalMesh) avant le ForEachLoop (_1101 → _7134) ; cause amont (ordre maillage / changement de race) à instruire (§ 5) |
S (garde) ; M (cause) |
| F5 « No SkeletalMesh » | mannequin libéré (DESTROY) gardé en réserve sans maillage, toujours interrogé par image (5-6 sockets) |
préexistante (DC4:8821-8828 ; 6,8 par CHECKING contre 7,3 avant STB) ; STA-D23 | désactiver tick / animation du mannequin au DESTROY et réactiver au SPAWN, ou garde dans les lecteurs de sockets ; abstention conseillée tant qu'aucun effet visible (STA-D23, STA-T3-DOC.md:60) |
M (lecteur à identifier) |
Effet visible estimé (non vérifié en jeu) : F1, F2, F3 : stat lue à 0 et appel sauté, donc la branche de condition est
fausse et la ligne de script ne fait rien ; cohérent avec un acteur absent, aucun effet visible attendu. F4 : sans effet
pour un mannequin détruit aussitôt (WHO unmatched) ; incertain pour un mannequin gardé pour la scène
(P10-58:40222 → 40350, détruit plus tard par DestroyPerson) : morphs peut-être non appliqués au chargement. F5 :
acteur sans maillage, donc invisible ; coût = volume du journal (51 % de L2) et appels par image.
Origine STB : aucune famille ne l'est. Les hausses de L2 par rapport à LU8 suivent les dénominateurs (démarrages « by 0 » 0 → 24, mannequins CheckScenes 0 → 185, CHECKING 374 → 2 318), pas un changement de taux.
Établi / estimé / incertain :
- Établi : comptes du § 3.2 (Grep rejouables) ; piles identiques en 5.5 (DC4) pour F1, F3, F5 et en 5.8 avant STB
(P10-58) pour F4 ; mécanisme de
ReturnStatIfNeeded(dump STA) et deUpdatePlayerMeshWithMorphs(dumps STA et STB) ; aucune fonction de pile citée par CHG-281 à 294. - Estimé : taux comparés (même parcours non garanti) ; rôle de
CallFunction(sans dump) ; nœud_1101; effet partiel de CHG-282 sur F2 ; effet visible. - Incertain : fichier joué par
PlaySceneavant chaque démarrage « by 0 » ; origine 5.5 ou 5.8 de F4 ; lecteur de sockets de F5 ; morphs d'un mannequin gardé (F4).
5. Hypothèse suivante proposée, et à quel niveau
- H2 (F4, N3, lp-cart) : le maillage du mannequin recyclé est vidé au
DESTROYetLoadPreset→GenerateAndApplyStrings→PlayerChangeRacedéclencheUpdatePlayerMeshWithMorphsavant la réaffectation du corps. Essai : dumpsLoadPreset,GenerateAndApplyStrings,PlayerChangeRace,GetSpecific(copie dégelée), puis contre-épreuve 5.5 sur une partie ayant des relations (mannequins CheckScenes) pour trancher 5.5 / 5.8. - H3 (F1/F3, N2, lp-cart) : identifier la scène jouée par
PlaySceneavant chaque démarrage « by 0 » (dumpsPlayScenedans l'EventGraph STB-d,CallFunction,getActorVar,setActorVar) pour dire si l'acteur vide est normal (contenu) ou un défaut de moteur. - H4 (F5, N2) : identifier le lecteur par image des sockets (EventGraph Person STB-d, AnimBP à dumper).
Constats
Contre-épreuve U8 (parcours à rejouer par l'utilisateur, archive avant STB)
Archive : D:\Game\LifePlay_Build_5.8_Development_U8_essai\Windows\ (même moteur 5.8, sans CHG-281 à 294).
- Copier d'abord
...\Saved\Logs\LifePlay.log(contre-épreuve de 22:35) à part : le prochain lancement le renomme. - Lancer
LifePlay.exede l'archive U8 ; Nouvelle partie avec l'éditeur de personnage, valider. - En ville, enchaîner au moins 20 actions seul de plusieurs heures (but : ≥ 20 lignes
for … hours by 0). - Laisser tourner la ville au moins 3 minutes sans menu (but : ≥ 1 000 lignes
CHECKING:et des mannequinsDestroyDummy was from CheckScenes, qui demandent un personnage avec relations : celui de la nouvelle partie). - Obtenir une scène
meet_couplepuis une scène à deux, comme en STB-JEU2. - Quitter par le menu ; copier le
LifePlay.logproduit. Mesure (pwsh 7, depuisD:\Game\LifePlay-master 5.8) :& .\Tools\LogStats.ps1 -Compare <journal U8 neuf>,<L2>, puis les motifs Grep du § 3.2 sur les deux journaux. Décision : taux U8 ≈ L2 (± 50 %) pour F1 / « by 0 » (≈ 11), F3_33/ « by 0 » (≈ 1,4), F4 / SPAWN CheckScenes (≈ 1), F5 / CHECKING (≈ 7) → préexistence confirmée sur le même parcours ; famille absente de U8 avec dénominateur non nul → attribuer à STB et rouvrir.
État de reprise par famille
F1, F2, F3, F5 : origine tranchée, correctifs proposés, dumps get/set/CallFunction à produire avant toute SPEC. F4 : origine STB tranchée, origine 5.5 / 5.8 ouverte (H2). Aucune décision prise : choix des correctifs et de l'abstention (contenu de module) à l'utilisateur.