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-avantet 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 exclutPluginsde la marche sur le jeu ; l'inventaire ne cite aucun de ces fichiers (Grep LPSandbox[/\\]Sourcedans le dossier DOCMV : 0). L'affirmation de l'IMPL « Addon58 : 1 » était donc inexacte (13 lignes), et le décompte « 11Source/*.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.houLPAnimCore.Build.cschange 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= 41R; similarité attendue ≥ 90 % (P1), seuil git 50 %. Docs/Migration/etat/REPO/REPO-JOURNAL.mdest modifié par deux sessions : lignesDOCMV-R1(lot) etAG-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).MsousDocs/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) ; plusREPO/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
Rau commit (similarité calculée en octets, pas par git) ; absence de script d'édition (déclaration de l'IMPL). - Incertain : contenu du dossier
etathors U1 / UA (non relu, hors périmètre de la fiche) ;DOCMV-TACHES.mdnon 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 :
- D2-bis couvre exactement les 14 lignes.
DOCMV-SPEC.md§ 2, ligne 24 (lue avec Read) : jeuPlugins/LPAnimCore/Source/LPAnimCore/LPAnimCore.Build.csl.1 etPlugins/ModdingExtra/Source/ModdingExtra/Private/LPDataCache.hl.1 (2) ; addon 5.8Plugins/LPSandbox/Source/**: « 10.h,LPModTools.Build.csl.1,LPSandbox.Build.csl.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. - IMPL corrigée.
DOCMV-IMPL.mdl.48 : « Addon58 : 1 horsPlugins(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). - Rien d'autre n'a changé :
git status --shortdu jeu = 107 lignes (inchangé), addon 5.8 = 15, addon 5.5 = 5 ;git diff --stat -- Plugins Sourcedu jeu etgit diff --stat -- Pluginsde l'addon 5.8 : vides (aucun de ces 14 fichiers modifié, conforme à « Laisser »). - 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.mdpartagé avecAG-R5,NUMEROS.mdà passer à « utilisé » en S8. Établi par lecture seule, aucune exécution ni build rejoués.