LifePlay-Revival/Docs/Migration/etat/AG/VAG1/VAG1-VAL.md
edujiro5972 56dfcfc3d2 LifePlay UE 5.8 : état de développement au 2026-10-20
Tickets : PUB-20261020-T1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 17:35:10 +02:00

12 KiB
Raw Blame History

Fiche VAG1-VAL — Niveau N1 — Modèle prévu sonnet | utilisé sonnet (claude-sonnet-5-5) — Agent lp-validator (classe O de PIPE1-SPEC-03, distinct de l'auteur) — Skills sk-protocol, lp-validate, sk-recount, debug-verification

VAG1-VAL : validation de Tools\Vague.ps1 (2026-10-20, v1 FAIL puis reprise après correctifs E1 à E6)

Révision 2 : verdict global PASS (avec réserves, § 5). La révision 1 (FAIL) est conservée dans les tableaux « avant ».

Aucune écriture hors de ce livrable et du scratchpad. Essais uniquement sur les clones %TEMP%\claude\VAG1\{jeu,LifePlay-Sandbox,VERROU} avec -Racine, -Addon, -RacineVerrou explicites ; seules altérations des clones : reset --hard origin/ue5.8 + clean -fdq (garde de préfixe), un commit de préparation (fichier de 15 / 21 lignes) et des hooks post-commit / pre-commit posés puis déplacés (*.off*). Dépôts réels : jamais écrits par mes essais. Remarque : git status --short du jeu réel a changé entre le début et la fin de la reprise (Docs/37_Feuille_De_Route_Alpha2.md, CG2-TACHES.md modifiés, tickets/ROAD1-T2.md non suivi) : travail d'autres sessions (aucune de mes commandes ne vise le dépôt réel, le script n'a jamais reçu -Racine réel) ; non prouvé autrement, donc estimé.

1. Fiches amont relues

Fiche Relue
AG\VAG1\VAG1-SPEC-01.md § 1-9 oui (révision 1)
AG\VAG1\VAG1-IMPL.md § 1-7 et § 6 bis (fix E1 à E6) oui
Tools\Vague.ps1 v2, 494 lignes MD5 relu 24B2EF4F6A6729C98B6958C7E8D09619 = demandé (confirmé)
Copie v1 D:\Game\LifePlay_Backup_5.5\VAG1\Vague.ps1.v1-avant-fix diff v1 → v2 lu en entier (git diff --no-index -U0 : 29 insertions, 4 suppressions, 8 blocs)
Saved\VAG1\essais.ps1 v2 MD5 056E378967D1936E56A71A869A596AB3 = IMPL § 6 bis (confirmé)

Diff v1 → v2, par bloc : l.83-86 -File (premier mot de la cellule, code 2 si ligne illisible) ; l.185-194 P2 avant la vague (avant le verrou) ; l.238 quelconque seulement pour PARTAGES ; l.241 hash hexadécimal d'au moins 7 caractères ; l.262 chemin non normalisé refusé (\, / initial, X:, ./..) ; l.309-310 ReadAllLines().Length et seuil 1,6 ; l.364 status --porcelain -uall ; l.451-459 C12 deuxième moitié. Aucun push, --amend, --no-verify, reset --hard, add -A, forçage de verrou ajouté (le diff n'en contient aucun).

2. Points à confirmer des IMPL

Point (IMPL) Verdict r2 Preuve
-Json, journal CRLF, HEAD antérieur dans la vague, C12 name-status PASS (r1) non modifiés par le diff ; E5a rejoué ci-dessous
Écart assumé : seuil C8 1,6 × lignes (SPEC : 2 ×) PASS, écart accepté sous réserve E1a/E1b mesurent la frontière réelle (§ 3) ; à faire entériner par Big Boss dans la SPEC
Écart assumé : P2 avant la vague sans réécriture de statut PASS, écart accepté sous réserve E4 : ticket « en cours » intact, rien écrit ; la SPEC § 5 (statut refusé) ne s'applique plus qu'aux refus après démarrage (c6b r1)
Hook ecriture-gardien, garde-fou pre-commit (LP_REPO_TICKET) reporté / BLOCKED-clone non rejouables sans écrire sur les dépôts réels ; inchangé

3. Critères rejoués

3.A Avant / après des FAIL et PARTIEL

Écart r1 (avant) Sonde à moi (après), attendu écrit avant r2
E1 C8 réécriture complète FAIL (Count=1) E1a 21 lignes, 17 changées (34 ≥ 33,6) : refus C8 … reecriture complete (17 17) ; E1b 16 changées (32 < 33,6) : essai-OK ; E1c 21 sur 21 : refus ; E1d fichier de 15 lignes entièrement changé : essai-OK (non concerné : seuil -gt 20, comportement voulu, constaté) ; E1e 1 ligne : essai-OK PASS
E2 -File FAIL E2a FILE.md réel complet : code 2 P1 plafond (13 tickets) (donc les 13 lignes sont toutes lues, sinon message « lignes lisibles ») ; E2b réel tronqué à 2 lignes (QG1-T2 (vague 4), QG1-T3 BAR (vague 4)) : tickets lus QG1-T2, QG1-T3 (le clone les contient, statut fait → refusé P2-STATUT, EN-FILE QG1-T3) ; E2c cellule vide : code 2 2 lignes de table, 1 tickets lisibles ; E2d cellule annotée seule : essai-OK PASS (réserve : E2b a donné autre chose que mon attendu « introuvable », car ces tickets existent dans le clone ; la conclusion de parsing est la même)
E3 C12 git status FAIL E3a hook post-commit modifie un fichier suivi hors ticket : refusé C12-ECART-POST … M Docs/21_Sandbox_Addon.md, code 1, verrou libre ; E3b hook crée un fichier non suivi : refus ?? …/hors-liste.md ; E3c fichier non suivi présent avant le commit : fait (pas de faux positif) PASS
E4 P2 avant la vague + statut PARTIEL E4 premier ticket « en cours », 2e « demandé », -Executer : VT-Q1 — refusé P2-STATUT, EN-FILE VT-Q2, HEAD inchangé, journal 192 → 192 lignes, dossiers VERROU [], VERROU LIBRE k=0 (verrou jamais pris) ; E4b 2e ticket « fait » : rien commité PASS
E5 HEAD attendu PARTIEL E5a hash 7 car. d'un HEAD ancien de la vague (2 tickets addon) : les deux fait ; E5b 7 car. hors vague : C2-HEAD ; E5d quelconque sur COMMIT : C2-HEAD … n'est admis que pour un ticket PARTAGES ; E5e abc : refus (< 7) ; E5c hash en MAJUSCULES du HEAD courant : refus C2-HEAD (limite mineure : comparaison sensible à la casse) PASS (réserve mineure, casse)
E6 C4 chemins PARTIEL E6a tools/x.ps1 et E6b TOOLS/x.ps1 : C4-CHEMIN-INTERDIT (regex insensible à la casse, sûr sous Windows) ; E6e Docs\x.md, ./Docs/x.md, C:/x.md : refus « chemin non normalisé » ; E6c Docs//VAGTEST/x.md : essai-OK (non couvert : le double / n'est pas dans le test de normalisation) ; E6d même ticket en exécution : refusé C6 add (ici à cause du sparse-checkout du clone, pas de C6-LISTE) et rien commité PARTIEL : trou résiduel // en essai à blanc ; l'exécution se protège (git normalise //, donc la chaîne du ticket diffère de la liste réelle : estimé, non prouvé hors sparse)

3.B Pilote complet r2

pwsh -NoProfile -File "…\Saved\VAG1\essais.ps1" : 36 PASS, 0 FAIL, TOTAL 36 sur 36, code 0 (comptés par grep -c '^PASS' = 36). Les nouveaux cas N1 à N6 sont ceux de l'auteur ; mes sondes E1 à E6 ci-dessus sont indépendantes (autre jeu de tickets, cas limites).

3.C Régression

Vague indépendante (sonde R1) addon + jeu (avec ligne REPO-JOURNAL) + PARTAGES (HEAD quelconque) : essai essai-OK ×3 (code 0), puis -Executer : VT-Y1 — fait a6f8772, VT-Y2 — fait 922efc0, VAGUE-20261020-5-PARTAGES — fait b01e2af, code 0 ; statuts fait ×3 ; VERROU LIBRE k=1 ; seul reste de git status du clone du jeu : le fichier du ticket PARTAGES non suivi. Aucune régression constatée ; le S3 du pilote reste vert.

4. Diff lu en entier

Voir § 1 (diff v1 → v2 en 8 blocs). Outil local non suivi (CHG-357) : pas de git diff de dépôt. FileCheck / PubCheck sur le script v2 : non rejoués (l'IMPL § 6 bis annonce PubCheck 0 et \u00 = 0 : non vérifié par moi).

5. Verdict : PASS avec réserves

E1, E2, E3, E4, E5 : corrigés, prouvés par des sondes indépendantes, cas limites compris. E6 : corrigé pour \, ., .., absolu, casse ; trou résiduel // (essai à blanc seulement). Aucune régression.

Réserves, à décider par l'orchestrateur (non bloquantes pour l'usage en -Executer, où C6 / git refusent) :

  1. Docs//x.md passe essai-OK : ajouter // au test de normalisation.
  2. Hash en majuscules refusé : normaliser en minuscules.
  3. Écarts SPEC assumés à entériner dans la SPEC : seuil C8 à 1,6 ×, P2 sans réécriture de statut.
  4. Incertains : hook ecriture-gardien et garde-fou pre-commit en conditions réelles ; PubCheck / FileCheck sur le script v2 ; chemin déguisé non ignoré par git (c9 r1).
  5. Avant la première vague réelle : lancer -Essai -File sur le vrai FILE.md après avoir réduit à ≤ 8 tickets (E2a : le plafond s'applique, 13 lignes refusées), puis -Executer sous la responsabilité de Big Boss.

6. Points à confirmer par l'utilisateur

  • Entériner le seuil 1,6 × lignes et l'absence de statut refusé avant démarrage (SPEC § 4 C8, § 5).
  • Décider du correctif des réserves 1 et 2 (fiche IMPL mineure).
  • Premier usage réel sous surveillance (hook, pre-commit).

Mesuré

Commandes : pwsh -NoProfile -File …\Saved\VAG1\essais.ps1 > pilote2.txt ; pwsh -NoProfile -File …\scratchpad\sonde4.ps1 (E1 à E6, R1) ; sonde5.ps1 (E2b) ; (Get-FileHash -Algorithm MD5 …Vague.ps1).Hash ; git diff --no-index -U0 <v1> <v2>.

Get-FileHash MD5 Tools\Vague.ps1 -> 24B2EF4F6A6729C98B6958C7E8D09619
git diff --no-index --stat : 1 file changed, 29 insertions(+), 4 deletions(-)
grep -c '^PASS' pilote2.txt -> 36 ; TOTAL 36 sur 36 ; exit 0 ; MD5 essais.ps1 056E378967D1936E56A71A869A596AB3

E1a VERDICT VT-V1 — refusé C8-FINS-DE-LIGNE : …l21.md : reecriture complete (17	17	…)   rc=1
E1b VERDICT VT-V2 — essai-OK   rc=0     E1c VERDICT VT-V3 — refusé C8-FINS-DE-LIGNE … (21	21	…)   rc=1
E1d VERDICT VT-V4 — essai-OK (15 lignes toutes changées)   E1e VERDICT VT-V5 — essai-OK
E2a Vague.ps1 : P1 plafond V3 depasse (13 tickets, 8 au plus) : deux vagues de suite   rc=2
E2b VERDICT QG1-T2 — refusé P2-STATUT : Statut : fait ; EN-FILE QG1-T3   rc=1
E2c Vague.ps1 : FILE.md : 2 lignes de table, 1 tickets lisibles   rc=2
E2d VERDICT VT-J1 — essai-OK — fichiers 1   rc=0
E3a VERDICT VT-P1 — refusé C12-ECART-POST : git status a change hors du ticket (d2ed3f3 existe) :  M Docs/21_Sandbox_Addon.md   rc=1 ; VERROU LIBRE k=1
E3b VERDICT VT-P2 — refusé C12-ECART-POST : … (2d7b7af existe) : ?? Docs/Migration/etat/REPO/VAGTEST/hors-liste.md   rc=1
E3c VERDICT VT-P3 — fait 79810d8 — fichiers 1   rc=0
E4  VERDICT VT-Q1 — refusé P2-STATUT : Statut : en cours ; EN-FILE VT-Q2   rc=1
    HEAD inchange : True ; journal lignes 192 -> 192 ; statuts Statut : en cours / Statut : demandé ; dossiers VERROU : [] ; VERROU LIBRE k=0
E4b VERDICT VT-Q4 — refusé P2-STATUT : Statut : fait ; EN-FILE VT-Q3   rc=1 ; HEAD inchange : True
E5a VERDICT VT-AA1 — fait 80018ea ; VERDICT VT-AA2 — fait d010d14   rc=0
E5b VERDICT VT-W5 — refusé C2-HEAD : HEAD attendu : 11eb616 ; courant : 8ff3457   rc=1
E5c VERDICT VT-W6 — refusé C2-HEAD : HEAD attendu : 8FF3457 ; courant : 8ff3457   rc=1
E5d VERDICT VT-W7 — refusé C2-HEAD : HEAD attendu : quelconque n'est admis que pour un ticket PARTAGES
E5e VERDICT VT-W8 — refusé C2-HEAD : HEAD attendu : abc n'est pas un hash de 7 caracteres au moins
E6a VERDICT VT-X6a — refusé C4-CHEMIN-INTERDIT : A tools/x.ps1 ; E6b … A TOOLS/x.ps1
E6c VERDICT VT-X6c — essai-OK — fichiers 1 (A Docs//VAGTEST/x.md)   rc=0
E6d VERDICT VT-X6c — refusé C6 add : The following paths and/or pathspecs matched paths that exist / outside of your sparse-checkout definition … ; HEAD inchange : True ; Statut : refusé (C6 add)
E6e VERDICT VT-X6e/f/g — refusé C4-CHEMIN-INTERDIT : A Docs\x.md / A ./Docs/x.md / A C:/x.md (chemin non normalisé …)
R1  VERDICT VT-Y1 — fait a6f8772 ; VT-Y2 — fait 922efc0 ; VAGUE-20261020-5-PARTAGES — fait b01e2af ; rc=0 ; VERROU LIBRE k=1 ; statuts fait / fait / fait

Écarts attendu / obtenu : E2b (attendu « introuvable », obtenu P2-STATUT car les tickets existent dans le clone ; E2b a d'abord été mal tronqué par ma sonde, rejoué par sonde5.ps1), E5c (attendu essai-OK idéal, noté limite mineure), E6c (trou), E6d (refus par le sparse-checkout, pas par C6-LISTE). Autres essais conformes.

Non mesuré : exécution sur les dépôts réels ; hook ecriture-gardien ; pre-commit ; PubCheck / FileCheck sur v2 ; chemin // en exécution hors sparse ; ticket PIN au milieu d'une vague.

Constats

  • Établi : MD5 v2 et pilote conformes ; 36/36 rejoué ; E1 à E5 prouvés ; régression absente (S3 et R1 verts, verrou rendu).
  • Estimé : le trou // est sans conséquence en exécution (chaîne du ticket ≠ chemin git, C6).
  • Incertain : hooks réels.

Fichiers écrits : D:\Game\LifePlay-master 5.8\Docs\Migration\etat\AG\VAG1\VAG1-VAL.md (réécrit en entier). Fichiers à commiter : jeu (A) Docs/Migration/etat/AG/VAG1/VAG1-VAL.md. Tours : 21 (14 en r1 + 7 en reprise) / 25 de reprise À verser : lp-repo — Vague.ps1 v2 passe la VAL avec 2 réserves mineures (//, casse du hash) ; sk-windows-shell — un attendu de sonde doit tenir compte de l'état du clone (tickets réels déjà présents). Suite : orchestrateur doit décider des réserves 1 à 3 puis autoriser un premier essai réel par Big Boss, état : VAL r2 écrite, verdict PASS avec réserves.