LifePlay-Revival/Docs/Migration/etat/REL/ALPHA/REL-ALPHA-T6a-VAL.md
edujiro5972 8084622450 LifePlay UE 5.8 : état de développement au 2026-10-19
Tickets : REP1-T4

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 22:57:42 +02:00

6.2 KiB

Fiche REL-ALPHA-T6a — Niveau N0 — Modèle prévu non précisé par la fiche | utilisé Sonnet 5.5 (claude-sonnet-5-5) — Agent lp-validator — Skills sk-protocol, sk-recount, debug-verification, lp-validate

REL-ALPHA-T6a-VAL : VAL statique de Tools/modules/2026.10.2.1a.json (2026-10-14)

Verdict de la VAL : PASS-STATIC (lecture et mesures sans exécuter SplitModules ni CheckPackage), avec une réserve sur (f).

1. Fiches amont relues

  • Fiche REL-ALPHA-T6a-VAL (message de l'orchestrateur) : contrôles (a) à (f).
  • D:\Game\LifePlay-master 5.8\Tools\modules\next.json (modèle, 13 lignes) : lu.
  • D:\Game\LifePlay-master 5.8\Tools\modules\2026.10.2.1a.json (cible, 14 lignes) : lu.
  • D:\Game\LifePlay-master 5.8\Tools\SplitModules.ps1 (lecteur, 168 lignes) : lu en entier.
  • Instantané D:\Game\LifePlay_Backup_5.5\REL-ALPHA\manifest.csv : ligne Tools\modules\2026.10.2.1a.json, Existed=False, Size 0 (donc fichier créé par la fiche).
  • Aucune IMPL amont (un fichier de configuration créé, pas de code).

2. Points à confirmer des IMPL amont

sans objet : aucune IMPL dans cette fiche (la fiche T6a ne fournit aucun livrable IMPL à relire ; fichier créé directement).

3. Critères rejoués

Contrôle Attendu Recompté Commande / lecture Verdict
(a) JSON valide ConvertFrom-Json sans erreur OK : version=2026.10.2.1a, out_dir, essential, per_module=True, 1 groupe Get-Content … -Raw | ConvertFrom-Json (powershell -NoProfile) PASS
MD5 fb644b9f7fd5070028e3823a517285da FB644B9F7FD5070028E3823A517285DA Get-FileHash -Algorithm MD5 PASS
(b) diff contre next.json version + ajout out_dir seuls Compare-Object : => version 2026.10.2.1a, => out_dir "Mods_2026.10.2.1a/_split", <= version 2026.10.1.5 ; rien d'autre (13 lignes -> 14) Compare-Object (Get-Content next.json) (Get-Content cible) + lecture des deux fichiers PASS
(c) fins de ligne identiques au modèle (CRLF) cible : 460 octets, CR=13, LF=13 ; modèle : 418 octets, CR=12, LF=12. Dans les deux, CR = LF = lignes - 1 (pas de saut de ligne final, dernier octet 125 }) ; le modèle est i/crlf w/crlf pour git. Convention identique lecture des octets [IO.File]::ReadAllBytes ; git ls-files --eol PASS
(c) BOM / ASCII UTF-8 sans BOM, ASCII BOM=False (premiers octets 123,13,10) ; octets > 127 : 0 idem PASS
(d) out_dir $cfg.out_dir avec / -> D:\Game\LifePlay_Publication\Mods_2026.10.2.1a\_split Join-Path "D:\Game\LifePlay_Publication" "Mods_2026.10.2.1a/_split" rend D:\Game\LifePlay_Publication\Mods_2026.10.2.1a\_split (le / est normalisé) SplitModules.ps1:71 ($dir = Join-Path $Out $(if ($cfg.out_dir) { $cfg.out_dir } else { "Modules_$($cfg.version)" })), rejoué dans PowerShell PASS
(d) essential vin_Base, vin_VanillaRealistic identique JSON lu ; lecteur SplitModules.ps1:51-53 et :54 PASS
(d) per_module true True ; branche if ($cfg.per_module) à SplitModules.ps1:69 idem PASS
(d) groupe motif vin_*, une archive vin_Modules-for-LifePlay-2026.10.2.1a.zip groupe vin_Modules, motif vin_* ; nom d'archive "$($p.Name)-for-LifePlay-$($cfg.version).zip" (SplitModules.ps1:112) = vin_Modules-for-LifePlay-2026.10.2.1a.zip. Les 14 modules optionnels vin_* (16 moins 2 essentiels) sont tous dans ce groupe (:83), donc aucun module hors groupe (:86), une seule archive rejoué + lecture PASS
(e) build visé existe, Windows\LifePlay\Content\Modules stage_alpha_2026.10.2.1a existe, dossier Modules existe Test-Path PASS
(e) dossiers vin_* 16 dont les 2 essentiels 17 dossiers : MorphTags + 16 vin_* ; les 16 vin_* ont tous leur <nom>.lpmod ; vin_Base.lpmod et vin_VanillaRealistic.lpmod présents. MorphTags n'a pas de .lpmod : il n'est donc pas pris comme module optionnel (SplitModules.ps1:54) et reste dans le build Get-ChildItem … -Directory, Test-Path des .lpmod PASS
(e) pas de Mods Windows\LifePlay\Mods absent False (SplitModules.ps1:48 ne lèvera donc pas) Test-Path PASS
(e) pas d'archive existante D:\Game\LifePlay_Publication\Mods_2026.10.2.1a absent False (:113 ne lèvera donc pas) Test-Path PASS
(f) git status --short -- Tools/ seul le fichier nouveau Deux lignes : D Tools/claude/hooks/ecriture-gardien.py et ?? Tools/modules/2026.10.2.1a.json git -C … status --short -- Tools/ PASS avec réserve (voir écart 1)

4. Diff lu en entier

  • Fichiers : 1 nouveau (Tools/modules/2026.10.2.1a.json, non suivi), comparé à Tools/modules/next.json ; 14 lignes contre 13. Différence réelle = 2 lignes : "version" changée, "out_dir" ajoutée. Aucun autre fichier de Tools/ touché par T6a.
  • Nombre de CR recompté par lecture d'octets (pas par grep -c).

5. Verdict

PASS-STATIC pour le fichier de configuration : contrôles (a) à (e) conformes, (f) conforme sous la réserve ci-dessous. Non rejoué par choix de la fiche : SplitModules.ps1 et CheckPackage.ps1 (interdits) ; le comportement réel du découpage (taille des archives, 7-Zip, Get-ChildItem des restes) reste donc non mesuré.

6. Points à confirmer par l'utilisateur

  • La suppression D Tools/claude/hooks/ecriture-gardien.py (visible dans git status dès le début de la session, donc non produite par T6a) est connue et voulue (le crochet est dans le profil %USERPROFILE%\.claude\hooks). Elle n'est pas un écart de T6a mais fait que (f) lu à la lettre ("ne montre que ce fichier nouveau") n'est pas rempli.

Constats

  1. Écart 1 (réserve, non bloquant) : voir point 6 ; à trancher par l'orchestrateur et le gardien du dépôt (ne pas inclure ce fichier dans le commit de T6a).
  2. Le dossier MorphTags du build n'est pas un module .lpmod : il reste dans le build après découpage ; à ne pas confondre avec les 16 vin_*.
  3. Aucun fichier modifié par moi hors ce livrable.

Fichiers écrits : D:\Game\LifePlay-master 5.8\Docs\Migration\etat\REL\ALPHA\REL-ALPHA-T6a-VAL.md. Fichiers à commiter : A Docs/Migration/etat/REL/ALPHA/REL-ALPHA-T6a-VAL.md (dépôt jeu, branche ue5.8). Le fichier validé Tools/modules/2026.10.2.1a.json (A) vient de la fiche amont.

Tours : 4 / 40