LifePlay-Revival/Docs/Migration/etat/DOC/DOCMV/DOCMV-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

16 KiB

Fiche DOCMV-T6 — Niveau N1 — Modèle prévu sonnet | utilisé Sonnet 5.5 (claude-sonnet-5-5) — Agent lp-validator — Skills sk-protocol, sk-recount, debug-verification, lp-validate

DOCMV-VAL : validation statique du déplacement de 41 fichiers de Docs\Migration\ vers Docs\ (2026-10-10)

Verdict final : PASS-STATIC (voir « Suite de E1 » en fin de fichier). Le verdict initial de cette validation était FAIL (écart E1, § 5) ; il est conservé ci-dessous pour la trace.

Copie D:\Game\LifePlay-master 5.8, branche ue5.8, HEAD ee9dce2 = tag annoté DOCMV-avant (git rev-parse 'DOCMV-avant^{commit}' = ee9dce2cb882…). Lecture seule : seul ce livrable est écrit. Aucune commande git qui écrit, aucune compilation. Scripts de contrôle (lecture seule) dans le bloc-notes de la session : cmp.py, tagcmp.py, crcmp.py, links2.py.

1. Fiches amont relues

  • DOCMV-SPEC.md (D1-D5 § 2, S3 § 4, S5), DOCMV-IMPL.md (S0-S5 déclarés), DOCMV-T1-INV.md (inventaire, 1 190 références ; DOCMV-T1-references.csv = 1 191 lignes avec l'en-tête : wc -l), DOCMV-TACHES.md (présent, non audité ligne à ligne).
  • Il n'y a qu'une IMPL (T4 + T5 réunies) ; pas de fiche BUILD (lot documentaire, aucune compilation attendue).
  • Référence « avant » : tag DOCMV-avant et instantané D:\Game\LifePlay_Backup_5.5\DOCMV\ (+ -addon58, -addon55).
  • Contrôle de l'instantané : les 41 fichiers de D:\Game\LifePlay_Backup_5.5\DOCMV\Docs\Migration\ sont identiques octet pour octet à git show DOCMV-avant:Docs/Migration/<f> (tagcmp.py : 41 sur 41). L'instantané est donc une référence fiable.

2. Points à confirmer des IMPL

L'IMPL ne contient pas de section « points à confirmer » numérotée ; ses affirmations sont reprises ici.

# Affirmation de l'IMPL Résultat
P1 Détection de renommage git : 41 R au commit (« estimé », à vérifier par le gardien) reporté au gardien (git show --stat -M de DOCMV-R4). Indice statique : similarité en octets des 10 docs modifiés, recomptée (difflib) : 05 99,4 % ; 08 98,5 % ; 09 98,7 % ; 19 93,0 % ; 22 99,2 % ; 24 99,3 % ; 29 98,1 % ; 32 98,2 % ; Journal 99,4 % ; README 90,2 % (seuil git 50 %) ; les 25 autres docs (Registre compris) et les 6 patchs sont identiques. Estimé, non établi
P2 41 déplacés, 0 MD5 différent PASS (§ 3, C1-C2b)
P3 Fins de ligne : CR avant = après sur chaque fichier PASS (§ 3, C4)
P4 Anciens chemins : 0 hors exceptions décidées FAIL partiel à l'origine (14 occurrences non inventoriées, E1) ; PASS après D2-bis (voir « Suite de E1 »)
P5 0 lien cassé créé ; 12 liens README et 2 archives résolvent PASS (§ 3, C7)
P6 diff -rq des skills vide ; addon 5.5 = 5 skills recopiés PASS (§ 3, C9)
P7 Hors dépôt : CLAUDE.md, lp-writer.md, .cursor, mémoire PASS (§ 3, C5)
P8 « Addon58 : 1 » occurrence restante (SB0 l.4) écart à l'origine : 13 lignes dans l'addon 5.8 (SB0 + 12 en-têtes de code) ; l'IMPL a corrigé son compte (« 1 hors Plugins », 12 sous Plugins) : PASS après correction

3. Critères rejoués (commande → résultat brut)

# Critère Commande / méthode Attendu Constaté Verdict
C1 Présence ls Docs/*.md | wc -l ; ls Docs/correctifs | wc -l ; ls -A Docs/Migration 35 ; 6 ; etat seul 35 ; 6 ; etat PASS
C2 Aucun fichier perdu ni écrasé git ls-tree -r --name-only DOCMV-avant -- Docs/Migration hors etat/ : 41 noms ; comparaison au listing de Docs\ (35 + correctifs/*) : diff mêmes 41 noms 41 = 41, SAME_NAMES ; 32 suivi (git ls-tree DOCMV-avant le contient) ; Docs/*.md absents du tag (0 collision) ; git check-ignore -v sur 4 cibles : code 1 (aucune ignorée) PASS
C2b 6 patchs identiques MD5 Docs/correctifs/* contre …\DOCMV\Docs\Migration\correctifs\* 6 identiques 6 IDENT (P01 à P06) PASS
C3 Docs non modifiés identiques cmp.py : égalité d'octets instantané ↔ Docs\ sur les 35 .md 25 identiques (Registre compris), 10 modifiés 25 SAME, 10 DIFF (05, 08, 09, 19, 22, 24, 29, 32, Journal, README) PASS
C4 Fins de ligne cmp.py (CR, LF, BOM par fichier), crcmp.py (8 fichiers du jeu, 15 de l'addon 5.8, 5 de l'addon 5.5) ; Tools/FileCheck.ps1 -Lot DOCMV -OnlyChanged (+ -Lot DOCMV-addon58 -ProjectRoot …, DOCMV-addon55) CR avant = après, BOM inchangé 35 docs : CR identiques (18, 19, 22, 25, 26 en CRLF : 291/285/217/137/92 des deux côtés) ; LF +1 sur 08, 32, Journal, +6 sur 29, +4 sur README (lignes ajoutées) ; autres fichiers OK ; FileCheck jeu : fichiers=88 alertes=0 introuvables=0, absent=41 absent(prévu)=1 modifie=11 nouveau=35 ; addon 5.8 : alertes=0, identique=9 modifie=15 ; addon 5.5 : alertes=0, identique=8 modifie=5 PASS
C5 Fichiers hors dépôt diff instantané hors-depot\ et .cursor/CLAUDE.md contre l'état courant seulement chemins + trace CLAUDE.md : +1 ligne (l.22) ; lp-writer.md : description l.3 ; .cursor/…/SKILL.md l.18-19, reference.md l.80 : chemins ; mémoire docs-reference-5-8.md : l.8 (date) et l.17 réécrite. Rien d'autre PASS
C6 Anciens chemins Grep du motif Migration[/\\]+(Journal_Modifications|Registre_Erreurs|README|[0-9]{2}_|correctifs) ; voir le détail ci-dessous 0 hors exceptions décidées 0 dans 13 zones ; 14 lignes hors exceptions à l'origine (E1), couvertes ensuite par D2-bis FAIL à l'origine, PASS après D2-bis
C7 Liens Markdown links2.py : toutes les cibles ](…) de 35 docs, README.md racine, 15 fichiers etat/U58/U1 et UA (51 fichiers, 72 liens) ; « avant » = texte de l'instantané / git show DOCMV-avant: au chemin d'origine, existence simulée 0 cassé créé avant 0 cassé, après 0 cassé, NEW broken []. Témoin négatif : ancien texte au nouvel emplacement = 7 cassés (doc 19) + 1 (doc 22) + 12 (README) + 1 + 1 (archives U1 / UA) = 22, conforme à T1 § 3.1 PASS
C9 Skills identiques diff -rq D:\Game\LifePlay-Sandbox-5.8\Tools\claude\skills D:\Game\LifePlay-Sandbox\Tools\claude\skills vide vide, code 0 PASS
C10 Copie 5.5 intacte git -C "D:\Game\LifePlay-master 5.5" status --short ; ls Docs/Migration vide ; docs présents vide, branche main, 23_Cycle_De_Vie_Mod.md présent (lien de SB0 l.4 juste) PASS

Détail de C6 (motif identique pour toutes les zones ; le Grep d'une racine saute les dossiers ignorés : les chemins ignorés ont été passés en path) :

Zone Occurrences (lignes) Verdict
skills addon 5.8 (Tools\claude\skills) ; skills addon 5.5 ; ~\.claude\agents ; ~\.claude\skills ; CLAUDE.md ; Tools\ du jeu ; .cursor\ ; .hyperai\ ; README.md racine ; mémoire du projet ; Config\ ; .claude\ du jeu ; AGENTS.md 0 chacune conforme
Docs\*.md (hors etat) 58 lignes, toutes dans Journal_Modifications.md ; diff du journal = une seule ligne ajoutée (CHG-300) : les entrées passées sont intactes conforme (D4)
Source\LifePlay*\*.h du jeu 11 fichiers, 1 ligne chacun conforme (D2)
Docs\Migration\etat\** archives et lots (dont DOCMV-*, tickets) conforme (D3) ; non recompté fichier par fichier
addon 5.8, Docs\SB0-conception.md l.4 1 (LifePlay-master 5.5/Docs/Migration/23_…, chemin explicite de la copie 5.5, valide) conforme
addon 5.5 hors skills 27 lignes (15 décidées D5 + 12 en-têtes de code sous Plugins) D5 pour les 15 ; les 12 : D2-bis / D5
addon 5.8, Plugins\LPSandbox\Source\** 12 écart E1, couvert par D2-bis
jeu, Plugins\LPAnimCore\…\LPAnimCore.Build.cs l.1 et Plugins\ModdingExtra\…\Private\LPDataCache.h l.1 2 écart E1, couvert par D2-bis

4. Diff lu en entier (fichiers, compte)

Méthode : difflib unifié (-U0) entre l'instantané et Docs\ pour les 35 docs ; git diff -U0 pour README.md, les 5 Tools, les 2 archives, et pour les deux addons. Tout le diff a été lu ; ne contient que des corrections de chemins et la trace DOCMV.

Ensemble Fichiers changés Lignes Nature
Docs déplacés 10 sur 35 (05, 08, 09, 19, 22, 24, 29, 32, Journal, README) 05 : 1 ; 08 : 1 → 2 ; 09 : 1 ; 19 : 7 liens ../../ → ../ ; 22 : 1 (lien Migration/etat/…) ; 24 : 2 ; 29 : règle (3 lignes) + puce DOCMV (+4) ; 32 : l.129, 274, 285 (chemins) + 1 ligne au § 9 ; Journal : +1 ligne (CHG-300 en l.1135, après CHG-301) ; README : bandeau (+4 dont une vide), ligne journal sans la mention « CHG-300 réservé », ligne Migration/etat/ chemins ou trace DOCMV. 32 l.129 n'est pas listé par la SPEC S3-4 mais l'est dans l'IMPL et dans la CHG-300 (ancien chemin Docs/Migration/NN_Projet_<Nom>.md) : extension cohérente
6 patchs 0 — identiques
README.md racine 1 (12 lignes) l.79, 106, 129, 153, 154, 164-168, 170, 192 Docs/Migration/X → Docs/X (texte et cible) ; README + 5 Tools + 2 archives = 8 fichiers, 19 insertions, 19 suppressions (git diff --stat)
Tools du jeu 5 1 ligne chacun (en-tête) Docs/Migration/NN → Docs/NN
Archives etat 2 U1-MODS-MOTEUR.md l.5, UA-MODS.md l.4 ../../../27_ → ../../../../27_
Addon 5.8 15 (33 insertions, 29 suppressions) skills 5 (19 / 15) ; README.md 3 ; SB-plan.md 3 ; Creating_Asset_Mods.md 1 ; 7 Tools (1 chacun) chemins ; lp-doc ajoute 3 lignes « Emplacements » et une précision de commande
Addon 5.5 5 (19 / 15) skills seuls, diff -rq vide avec l'addon 5.8 idem
Hors dépôt 5 voir C5 chemins + trace
Aucune autre ligne changée. Aucun fichier modifié par script (l'IMPL déclare Edit/Write et Move-Item ; non vérifiable autrement : estimé). Docs/Migration/etat/U58/U1 et UA : seules les 2 lignes citées.

5. Verdict

Verdict initial : FAIL (un seul écart, d'inventaire et cosmétique) ; tout le reste conforme (PASS-STATIC). Verdict final : PASS-STATIC, voir « Suite de E1 ». Écart E1 — anciens chemins non inventoriés, hors exceptions décidées. Attendu 0 (SPEC § 4 S5-2, fiche T6 § 3) ; constaté 14 lignes :

  • Addon 5.8 D:\Game\LifePlay-Sandbox-5.8\Plugins\LPSandbox\Source\ (12 fichiers, commentaires de code, 1 ligne chacun) : LPAnimMeasure\LPAnimMeasurePaths.h:1 (cite le doc 24), LPAnimMeasure\LPSkeletonProfile.h:1 (20), LPSandbox\LPSandbox.Build.cs:3 (21), LPModTools\LPAnimCatalogCommandlet.h:1 (20), LPAnimChecks.h:1 (20), LPAnimEvalCommandlet.h:1 (20), LPAnimIdentifyCommandlet.h:1 (20), LPAnimMethodSelect.h:1 (20), LPAnimTwistCommandlet.h:1 (20), LPAuditBlueprintCallsCommandlet.h:1 (27), LPHairFromStaticMeshCommandlet.h:1 (11), LPModTools.Build.cs:1 (24) ; entre parenthèses le doc cité.
  • Jeu : Plugins\LPAnimCore\Source\LPAnimCore\LPAnimCore.Build.cs:1 (cite 24) ; Plugins\ModdingExtra\Source\ModdingExtra\Private\LPDataCache.h:1 (cite 11).
  • Cause (établie) : DOCMV-T1-INV.md § 1 exclut Plugins de la marche sur le jeu ; l'inventaire ne cite aucun de ces fichiers (Grep LPSandbox[/\\]Source dans le dossier DOCMV : 0). L'affirmation de l'IMPL « Addon58 : 1 » était donc inexacte (13 lignes), et le décompte « 11 Source/*.h » de D2 ignorait ces 2 + 12 (l'addon 5.5 porte les mêmes 12, soit 27 lignes hors skills, dont 15 décidées D5).
  • Gravité : commentaires de ligne 1 ou 3, aucun effet sur le build ni les outils ; même nature que D2. Dans le jeu, corriger LPDataCache.h ou LPAnimCore.Build.cs change un fichier compilé (recompilation). Aucune correction faite ici.

Écarts mineurs, sans effet sur le verdict : (i) Docs/README.md : la plage « CHG-001 à CHG-301 » est juste (CHG-301 présent, journal l.1134) alors que la SPEC S3-6 disait « jusqu'à CHG-300 » ; (ii) 32 l.129 hors liste SPEC (voir § 4) ; (iii) l'IMPL annonce 245 occurrences dans etat et 75 dans Docs/*.md : comptées en occurrences, non en lignes (je compte 58 lignes pour le journal) ; non recomptées à l'identique, pas de conséquence sur la conformité.

6. Points à confirmer par l'utilisateur (cases)

  • Les 14 lignes de l'écart E1 (12 addon 5.8, 2 jeu) : « Laisser, comme D2 » (2026-10-10, via l'orchestrateur ; SPEC § 2 D2-bis).
  • Pour le gardien (DOCMV-R4) : exiger git show --stat -M = 41 R ; similarité attendue ≥ 90 % (P1), seuil git 50 %.
  • Docs/Migration/etat/REPO/REPO-JOURNAL.md est modifié par deux sessions : lignes DOCMV-R1 (lot) et AG-R5 (autre lot) ; le gardien décide quoi commiter avec R4.
  • etat/REPO/NUMEROS.md : non modifié à cet instant (statut « utilisé » de CHG-300 prévu en S8, non constaté).

Fichiers du git status --short qui ne sont PAS du lot (à exclure du ticket DOCMV-R4)

git status --short : 107 lignes ; lot : 87 (41 D de Docs/Migration, 35 ?? Docs/*.md, ?? Docs/correctifs/, M README.md, 5 M Tools/…, 2 M archives U1 / UA, ?? …/DOC/DOCMV/, ?? …/REPO/tickets/DOCMV-R1.md) ; hors lot : 20.

  • M Content/UI/MainMenu.uasset (STF, binaire).
  • M sous Docs/Migration/etat/ : AG/AG-TACHES.md, AG/LANCEMENT.md, BOSS/BOSS-JOURNAL.md, OB/OBB/OBB-T1-SPEC.md, OB/OBB/OBB-TACHES.md, ST/STE/STE-TACHES.md, ST/STE/fiches/STE-D.md, STE-GI.md, STE-TXT.md, ST/STF/STF-TACHES.md (10) ; plus REPO/REPO-JOURNAL.md à partager (voir § 6, case 3).
  • ?? : REPO/tickets/AG-R4.md, AG-R5.md, ST/STE/STE-D-INV.md, ST/STE/fiches/STE-H2.md, STE-H3.md, ST/STF/STF-T1-CART.md, STF-T3-IMPL.md, STF-VAL.md (8).
  • Addons : git status --short = 15 fichiers (addon 5.8) et 5 (addon 5.5), tous attendus (tickets R2, R3) ; rien d'autre.

Tours : 20 / 40

Constats

  • Établi (preuve fraîche, commandes ci-dessus) : présence, identité des 6 patchs, absence de perte, contenu des 10 docs modifiés, fins de ligne, liens (22 cassés simulés si rien n'était corrigé, 0 après), skills identiques, copie 5.5 intacte.
  • Estimé : 41 R au commit (similarité calculée en octets, pas par git) ; absence de script d'édition (déclaration de l'IMPL).
  • Incertain : contenu du dossier etat hors U1 / UA (non relu, hors périmètre de la fiche) ; DOCMV-TACHES.md non audité.
  • Fichiers écrits par ce rôle : ce seul livrable. Fichiers à commiter : A Docs/Migration/etat/DOC/DOCMV/DOCMV-VAL.md (avec le dossier DOCMV, ticket DOCMV-R4).

Suite de E1 (2026-10-10)

Décision de l'utilisateur, transmise par l'orchestrateur DOCMV : « Laisser, comme D2 ». Contrôles rejoués après le message :

  1. D2-bis couvre exactement les 14 lignes. DOCMV-SPEC.md § 2, ligne 24 (lue avec Read) : jeu Plugins/LPAnimCore/Source/LPAnimCore/LPAnimCore.Build.cs l.1 et Plugins/ModdingExtra/Source/ModdingExtra/Private/LPDataCache.h l.1 (2) ; addon 5.8 Plugins/LPSandbox/Source/** : « 10 .h, LPModTools.Build.cs l.1, LPSandbox.Build.cs l.3 » (12) ; total 14 ; réponse « Laisser, comme D2 » ; les 12 mêmes lignes de l'addon 5.5 relèvent de D5. Mes 14 lignes (§ 5 E1) : 10 .h (LPAnimMeasurePaths, LPSkeletonProfile, LPAnimCatalogCommandlet, LPAnimChecks, LPAnimEvalCommandlet, LPAnimIdentifyCommandlet, LPAnimMethodSelect, LPAnimTwistCommandlet, LPAuditBlueprintCallsCommandlet, LPHairFromStaticMeshCommandlet) + 2 .Build.cs (l.3 et l.1) + 2 du jeu : identiques, aucune ligne en trop ni en moins.
  2. IMPL corrigée. DOCMV-IMPL.md l.48 : « Addon58 : 1 hors Plugins (SB0 l.4) » ; l.50-53 : « Correction après VAL (écart E1) », 14 commentaires, dont les 12 de l'addon 5.5 (D5). Cohérent avec mon recompte (P8).
  3. Rien d'autre n'a changé : git status --short du jeu = 107 lignes (inchangé), addon 5.8 = 15, addon 5.5 = 5 ; git diff --stat -- Plugins Source du jeu et git diff --stat -- Plugins de l'addon 5.8 : vides (aucun de ces 14 fichiers modifié, conforme à « Laisser »).
  4. Verdict final : PASS-STATIC. Les critères C1 à C10 sont conformes ; C6 est conforme avec les exceptions D2, D2-bis, D3, D4, D5 et SB0 l.4. Réserves restantes (cases § 6, non bloquantes pour la VAL) : 41 R à contrôler par le gardien, REPO-JOURNAL.md partagé avec AG-R5, NUMEROS.md à passer à « utilisé » en S8. Établi par lecture seule, aucune exécution ni build rejoués.