11 KiB
Fiche U7b-VAL — Niveau N1 — Modèle prévu lp-validator | utilisé claude-sonnet-5-5 — Agent lp-validator — Skills lp-validate, sk-recount, sk-protocol (debug-verification)
U7b-VAL : validation du lot U7b avant commit
Date : 2026-10-09. Rien modifié dans les dépôts, aucun UE lancé, aucun commit. Seuls fichiers créés hors livrable : essais dans le bloc-notes de session (scratchpad\val\ : faux UnrealEditor.exe, stub unreal.py).
Verdict global : PASS (avec 5 écarts de forme, aucun bloquant)
| Contrôle | Verdict | Résumé |
|---|---|---|
V1a Chaîne cmd /c du pilote |
PASS | ligne reçue par un faux exécutable = ligne observée en A2, à l'octet |
| V1b Usage interactif inchangé | PASS | ancien et nouveau .bat : lignes identiques à l'octet (sans argument, &, cmd /c) |
| V1c Garde-fou RetargetPack | PASS (essai avec stub, pas en éditeur réel) | placé l.436, avant toute suppression (l.265) ; 5.8/5.6/illisible refusés, 5.5 passe |
| V1d Fins de ligne / encodage | PASS | .ps1 et .py en LF, .bat en CRLF, sans BOM, comme à U7b-avant |
| V2 Poses | PASS | 28 _pose changées, 28 _anim identiques, aucun autre fichier Content touché ; poses NON suivies par git |
| V3 CompileAllBlueprints | PASS | avertissements de pose 56 -> 0 ; seule erreur : HyperAIStudio |
| V4 T6/A2 | PASS | géométrie 20/20 lignes, JSON 10/10, dimensions 20/20 |
| V5 État des dépôts | PASS (descriptif) | voir § V5 ; 3 fichiers d'une autre session signalés |
V1 Addon D:\Game\LifePlay-Sandbox-5.8 (tag U7b-avant)
git diff --stat U7b-avant : exactement 3 fichiers, 38 insertions, 3 suppressions : Tools/anim/AnimPipeline.ps1 (+9/-2), Tools/anim/RetargetPack.py (+23), Tools/debug/LifePlay_interaction_sandbox.bat (+6/-1). git status --short : les mêmes 3 M, rien d'indexé, rien d'untracked. HEAD d1efdd1. Diff lu en entier.
V1a Chaîne de commande (établi par essai)
AnimPipeline.ps1:$sbArgs = '-RenderOffScreen -ExecCmds="r.SetRes 1600x900w"';Start-Process -FilePath 'cmd.exe' -ArgumentList ('/c ""{0}" {1}"' -f $bat, $sbArgs). Même chaîne de format quescratchpad\t6_a2.ps1(A2) :('/c ""{0}" {1}"' -f $bat, $Extra).- Raisonnement : la chaîne contient 6 guillemets, donc la règle « deux guillemets exactement » de
cmd /cne s'applique pas ;cmdretire le premier et le dernier, il reste"<bat>" -RenderOffScreen -ExecCmds="r.SetRes 1600x900w". - Essai sans moteur (
scratchpad\val\t.ps1) : le script extrait du vraiAnimPipeline.ps1les lignes$sbArgsetStart-Processet les exécute, avec le vrai .bat de l'addon et un fauxUnrealEditor.exe(viaLP_ENGINE_ROOT,LP_GAMEROOT) qui consigneEnvironment.CommandLine. Reçu :… -game -windowed -ResX=1600 -ResY=900 "-ini:Engine:[/Script/EngineSettings.GameMapsSettings]:GameInstanceClass=/Script/Engine.GameInstance" -RenderOffScreen -ExecCmds="r.SetRes 1600x900w". - Identique à la ligne reçue avec la forme A2 (essai en même temps) et à la ligne observée en A2 (
T6\A2_pack\LifePlay.log:495, fin :-RenderOffScreen -ExecCmds="r.SetRes 1600x900w"; guillemets du-ini:retirés par le journal, comme pourCommand Line:). - Non rejoué : le pilote complet
AnimPipeline.ps1avec le vrai moteur ; l'essai A2 a utilisét6_a2.ps1, copie du § 9 de U7b-T4. Le pilote lui-même n'a pas fait tourner une tournée réelle (estimé équivalent, preuve ci-dessus).
V1b Usage interactif (établi par essai)
Même essai, ancien .bat (git show U7b-avant:…) et nouveau : sans argument, lancés par & et par cmd /c "<bat>" (double-clic), la ligne reçue se termine par …GameInstance" sans espace finale, identique dans les trois cas. set "EXTRA=%*" puis if defined EXTRA set "EXTRA= %EXTRA%" : rien d'ajouté sans argument.
V1c Garde-fou RetargetPack.py (établi par lecture + essai avec stub)
refuse_unported_engine()définie l.71, appelée l.436 derun(), aprèsload_config(aucununreal.dans l.81-112 : lecture de JSON seulement). Premières suppressions/créations d'asset : l.265delete_asset, l.270create_asset, l.287-288, l.333, l.417duplicate_and_retarget. Le garde précède aussi la bifurcationmode == "rigs".- Sortie en échec :
Refusalattrapée parmain()(l.476-478) :RETARGET echec : RetargetPack : API IK Retargeter 5.8 non portee … aucun asset modifie, puisquit_editor. - Essai (
scratchpad\val\g.py, stubunreal,python -I -B, vraiRetargetPack.py) : versions5.8.3-x,5.6.0-y,garbage: refus, appels de suppression/création/chargement d'asset : liste vide ; version5.5.4-z: le garde laisse passer (le stub échoue plus loin, attendu). Non fait : essai dans l'éditeur 5.8 réel (le moteur n'est pas lancé). - Aucun portage appliqué : le diff n'ajoute que le garde,
import reet les commentaires.
V1d Fins de ligne (commande python -c … count(b'\r\n'))
| Fichier | U7b-avant |
actuel | BOM |
|---|---|---|---|
| AnimPipeline.ps1 | CRLF 0, LF 568 | CRLF 0, LF 575 | non |
| RetargetPack.py | CRLF 0, LF 463 | CRLF 0, LF 486 | non |
| LifePlay_interaction_sandbox.bat | CRLF 10, LF seul 0 | CRLF 15, LF seul 0 | non |
| Le .bat reste 100 % CRLF. |
V2 Poses (établi)
Commande : script Python hashlib sur D:\Game\LifePlay_Backup_5.5\U7b\manifest.csv (56 lignes = 28 _anim + 28 _pose, tous Existed=True).
- 28/28
_anim: MD5 actuel = manifeste. 28/28_pose: MD5 différent du manifeste. L'instantanéBackup_5.5\U7b\Contentcontient les 28_posed'origine conformes au manifeste (28/28). - Dossier
Poses: 56 fichiers (28 + 28). Dates des_pose: 14:04:55 à 14:04:57 (--all). find Content -type f -newermt "2026-10-09 12:41:15"(heure du tagU7b-avantde la copie 5.8) : 28 fichiers, tous des_pose.uassetde ce dossier.git status --short -- Content: vide.- Contrôle ponctuel contre le tableau de U7b-T5 § 11.2 : 3 MD5 relus (
Manny_calf_l_poseBF334423…,Quinn_upperarm_r_poseB971C765…,Manny_hand_r_poseC0E86749…) conformes. - Suivi git : non.
git ls-files Content/FreeAnimationsPack= 0 ;git check-ignore -v:.gitignore:59:/Content/FreeAnimationsPack/(ligne présente dansHEAD:.gitignore, pas dans la modification en cours). Conséquence : ces 28 poses ne peuvent pas figurer dans un commit ; seul le dossierBackup_5.5\U7b(hors dépôt) permet le retour arrière.
V3 Journaux CompileAllBlueprints (établi, grep -c)
Dossier D:\Game\LifePlay-master 5.8\Saved\Logs\portage\.
avant …135244.log |
après …140525.log |
|
|---|---|---|
lignes n'est pas à jour avec son animation source |
56 (grep -c) |
0 |
lignes Warning: au total |
56 (28 LogAnimation + 28 rappels LogInit) |
0 |
lignes Error: |
2 (LogHyperAIStudioAutomation + son rappel LogInit) |
2 (idem) |
| bilan commandlet | 0 errors and 0 warnings and 0 blueprints that failed to load |
idem |
erreur/avertissement de Blueprint (LogBlueprint, [Compiler]) |
0 | 0 |
Les 13 lignes contenant « pose » après sont des Display: Component Pose was visible but ignored (pas des avertissements). Les 2 lignes d'erreur sont une seule erreur (HyperAIStudio, connue) répétée par le rappel LogInit. Un journal intermédiaire …135821.log (27 lignes, après essai d'une seule pose) existe et n'est pas utilisé. |
V4 T6/A2 (établi)
- Géométrie : script Python (regex
VIGNETTE|PLANCHE, octets retirés, chemin réduit au nom de fichier) entreD:\Game\LifePlay_Backup_5.5\U4-REF55\E4_freeanims.logetT6\A2_pack\LifePlay.log: 20 lignes contre 20 (10 VIGNETTE + 10 PLANCHE), listes triées égales : identiques. ExempleAS_AirKiss.png (carre 718 px a 649,151)des deux côtés. - JSON des planches : 10/10 identiques (sha256) entre
U4-REF55\freeanims\sandboxetT6\A2_pack\sandbox_out. Dimensions (PNG, JPG lues dans l'en-tête,python -I) : 20/20 identiques ; vignette AS_RightLegKick2 512x512, planche 3328x256. - Journal A2 :
LifePlay.log:495ligne de commande avec-RenderOffScreen -ExecCmds="r.SetRes 1600x900w";:2173r.SetRes = "1600x900w";Assertion failed: 0 ;out of bounds: 0. - Le résultat FAIL de T6 § 5-7 (essai
-RenderOffScreenseul, cadrage 0,555) est remplacé par A2 (même fichier, § A2). C'est la combinaison avec-ExecCmdsqui est validée. - Non vérifié : pixels (non critère, T1 § 3) ; absence de fenêtre pendant PACK2 (non ré-échantillonnée, aveu de T6).
V5 État des dépôts (établi)
- Copie 5.8
D:\Game\LifePlay-master 5.8(brancheue5.8, HEAD0ee5a76) :M .gitignore,M Docs/Migration/29_Projet_Stabilisation_V2.md,M LifePlay.uproject. Rien d'autre (poses ignorées par git). Ces 3 fichiers sont d'une autre session (HyperAIStudio : bloc.gitignore.hyperai/runtime/, +105 lignes de Toolsets dans.uproject, +52/-3 dans le doc 29) ; non jugés, hors U7b. - Addon
D:\Game\LifePlay-Sandbox-5.8(brancheue5.8, HEADd1efdd1) : les 3Mde V1, rien d'indexé. TagsU7b-avantprésents (addon et copie 5.8). - Dépôt
D:\Game\LifePlay-master 5.5(branchemain) :?? .txt(voir écart 1). - Ordre de commit à respecter (mémoire projet) : addon d'abord, puis pin dans le jeu ; les poses n'entrent dans aucun commit.
Écarts (aucun bloquant)
- Fichier parasite
D:\Game\LifePlay-master 5.5\.txt(26 octets, 14:17, contenuvignettes planches quitter) : produit par la ligne cassée du script de T6/A2 (incident 1). T6-VAL § incidents dit « non trouvé, incertain » : il existe. Il apparaît en?? .txtdansgit statusde la copie 5.5. Non supprimé (règle de retrait) ; à déplacer versBackup_5.5\U7bou ne pas commiter, décision orchestrateur. - T6-VAL cite en preuves
T6\t6_a2.ps1eta2_v1_stdout.txt: absents deetat\U58\U7b\T6\(ls).t6_a2.ps1existe dans le bloc-notes de session (relu, c'est lui qui a servi de comparaison en V1a) ;a2_v1_stdout.txtintrouvable. À copier avant clôture si la trace est voulue (t6_a2.ps1surtout). - T6-VAL § 1 (l.9) liste
Tools/anim/*et le .bat comme modifiés dans « copie 5.8 » : faux,Tools/animn'existe pas dans cette copie (ces fichiers sont dans l'addon, V5). Erreur de rapport sans effet. - T6-VAL signale lui-même « 20 clips » annoncés contre 10 en référence ; recompté : 10 clips (20 lignes), conforme à ce que dit T6.
- DLL addon plus ancienne que
LPHairFromStaticMeshCommandlet.cpp(T6 § 1) : non examiné ici (hors U7b), reste incertain.
Non rejoué
Pilote AnimPipeline.ps1 de bout en bout sous moteur ; garde-fou dans l'éditeur 5.8 réel ; aucune compilation (aucun C++ modifié) ; LPTestStringCompat (sans objet, aucun code C++/chaîne modifié).
Suite : orchestrateur doit décider des écarts 1 et 2, puis commiter l'addon (3 fichiers) et épingler le pin dans le jeu, état : validation faite, rien commité.