LifePlay-Revival/Docs/Migration/etat/AG/AG-T2b-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

82 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Fiche AG-T2b — Niveau N1 — Modèle prévu sonnet | utilisé claude-sonnet-5-5 (Sonnet 5.5) — Agent lp-validator — Skills sk-protocol, sk-recount, debug-verification, lp-validate
# AG-T2b-VAL : revérification des 8 fichiers de skills des deux arbres de l'addon et du hook après la correction AG-T1b (2026-10-10)
Lecture seule. Seul écrit : ce fichier (Write). Aucune commande git qui écrit. Hook non installé. Aucun fichier de la copie 5.5 touché.
Preuve : « établi » = commande rejouée ou fichier lu (cité) ; « estimé » = déduit ; « incertain » = non vérifié.
## 1. Fiches amont relues
| Amont | Lu | Usage |
|---|---|---|
| `AG\fiches\AG-T2b.md` | en entier | fiche de cette VAL |
| `AG\AG-T2-VAL.md` | en entier | écarts E1, E2, E3 (§ 5) ; « tout le reste conforme, ne pas refaire l'ensemble » |
| `AG\AG-T1b-IMPL.md` | en entier | remplacements (§ 1), MD5 avant / après (§ 3), points à confirmer (§ 5) |
| `AG\fiches\AG-T1b.md` | en entier, § 4 en particulier | texte attendu des remplacements E1a, E1b, E1c, E2a, E2b, E2c, E3 |
| `lp-doc/gabarits.md` (VAL) | lu avant d'écrire | gabarit de ce livrable |
| `D:\Game\LifePlay_Backup_5.5\AG-fix\` | `manifest.csv` et 6 fichiers (`find`) | référence « avant » des diffs |
Arbres : `D:\Game\LifePlay-Sandbox-5.8` branche `ue5.8`, HEAD `8f6bc11` ; `D:\Game\LifePlay-Sandbox` branche `lot/DC3-atelier`, HEAD `3d0cb95`
(`git branch --show-current`, `git rev-parse --short HEAD`) : conformes à la fiche.
## 2. Points à confirmer des IMPL amont (AG-T1b-IMPL § 5)
| Réf. | Point | Résultat | Preuve |
|---|---|---|---|
| C1 | « 5 paires MD5 égales entre arbres » | **PASS** (8 paires sur 8, davantage que demandé) | § 3 ligne V4 |
| C2 | « les 7 remplacements, relus dans le fichier » | **PASS** | § 3 ligne V3 : `diff` fichier par fichier contre `AG-fix`, texte conforme au § 4 de AG-T1b |
| C3 | `git diff -- Tools/claude/skills \| md5sum` identique, `7f117a8e…` ; `AG-R1.md` l. 21 cite l'ancien `01860dfc…` | **PASS** (diff identique, valeur `7f117a8e…` rejouée) ; ticket : `AG-R1.md` l. 21 contient désormais `01860dfc` et `7f117a8e` (Grep `-o`) | V2 ; le texte exact de la ligne 21 n'a pas été relu en entier (ligne longue omise par Grep) : estimé mis à jour |
| C4 | E1 : `lp-repo` § 9 (« fichier du § 3 indexé ») cohérent avec le § 3 corrigé et le filtre du hook | **PASS-STATIC** (lecture + essai à sec du filtre) | `lp-repo/SKILL.md` l. 30-31 (§ 3 : `etat/` sauf `.md` et `.csv`), l. 82-85 (§ 9 renvoie au § 3), hook l. 29 (filtre `grep -vE` sur `.md` / `.csv`) ; V6 pour l'essai à sec. Remarque R2 sur `DC2-BUILD.md` |
| C5 | E3 : accepter le libellé imposé de `lp-mcp` l. 25 | **reporté** (décision de l'utilisateur, case § 6) ; conformité au texte imposé : **PASS** | `lp-mcp/SKILL.md` l. 24-25 lu ; texte = AG-T1b § 4 E3 ; phrase un peu elliptique, signalée par l'IMPL (§ 2) |
## 3. Critères rejoués
| Réf. | Critère | Commande | Résultat | Verdict |
|---|---|---|---|---|
| V1 | les mêmes 8 fichiers qu'en AG-T2, rien d'autre | `git -C <arbre> status --porcelain -uall` dans les deux arbres ; `diff --cached --name-only \| wc -l` | 6 ` M` (lp-build, lp-doc/SKILL, lp-doc/gabarits, lp-lot, lp-paths, lp-validate) + 2 `??` (`lp-mcp/SKILL.md`, `lp-repo/SKILL.md`), sortie identique dans les deux arbres ; index : 0 fichier dans chaque arbre | PASS |
| V2 | diff identique des deux arbres | `git diff -- Tools/claude/skills \| md5sum` ; `--stat` ; `grep -c '^@@'` | `7f117a8e325a8b03f7f4522e433a190a` des deux côtés ; 6 fichiers, 93 insertions, 57 suppressions ; 15 hunks (contexte 3) des deux côtés. Avant correction (AG-T2) : `01860dfc…`, +90 −54 ; le changement vient de lp-doc/gabarits (25/11) et lp-paths (18/15) : cohérent avec V3 (`--numstat`) | PASS |
| V3 | seules les lignes des remplacements ont changé | `diff` de chaque fichier contre `AG-fix\Tools\claude\skills\<f>` (5 skills) et contre `AG-fix\Docs\…\hooks\pre-commit` | **lp-repo** : l. 30 → 30-31 (E1a) et l. 74 → 75 (E2c) seulement ; **lp-paths** : l. 42-43 (E1b) seulement ; **lp-doc/SKILL.md** : l. 27-28 (E2a) seulement ; **lp-doc/gabarits.md** : l. 84-88 (E2b : mot « est dans `…REPO-JOURNAL.md` » → « se retrouve par `git log --grep <ticket>` (R-REPO1) », césure refaite sur 5 lignes, reste du paragraphe identique en sens et en mots) ; **lp-mcp** : l. 25 (E3) seulement ; **hook** : l. 7 (chemin `5.5` → `5.8`) et l. 29 (`\| grep -vE '^Docs/Migration/etat/.*\.(md\|csv)$'` ajouté, motif conservé) seulement. Textes conformes à AG-T1b § 4, sens conservé. Les 3 fichiers non touchés (lp-build, lp-lot, lp-validate) gardent les MD5 d'AG-T2 (`929d29ff…`, `a1cba1d9…`, `f99ffe9b…`) | PASS |
| V4 | 8 paires MD5 égales | `md5sum` des 8 fichiers dans chaque arbre (boucle, comparaison automatique) | 8 × `EGAL` : lp-build `929d29ff21e0208131ee0c3922c7f461`, lp-doc `e169eb4cc62880f3e8e61d47bb595372`, gabarits `0280a86d8217effd1744a19a38c01b85`, lp-lot `a1cba1d995c44c4afff20662da584b05`, lp-paths `a8a8597d5c788f672c283226d78e2ac9`, lp-validate `f99ffe9b04b32ab195e30d8b6511b758`, **lp-mcp `35983be22608e10c69114a1e77264a78`**, lp-repo `122d15b78985c66f06f173b6f46e55d4`. Valeurs égales à celles de l'IMPL § 3 ; MD5 « avant » rejoués sur `AG-fix` (806b7f78…, 53be296c…, c08e0f51…, ad38ca06…, 8a896676…) = manifeste | PASS |
| V5 | LF sans BOM | `pwsh -NoProfile -Command "& '…\Tools\FileCheck.ps1' @(8 skills + hook)"` | `fichiers=9 LF=9 alertes=0 introuvables=0`, `code=0`, CRLF 0 / CR 0 / BOM `-` partout (le hook compris) ; MD5 du hook relevé par FileCheck = `9451cf2d…` | PASS |
| V6 | hook : seules l. 7 et 29 ; `sh -n` ; essai à sec | `sh -n "…\hooks\pre-commit"` ; `printf 'Docs/Migration/etat/AG/x.md\nDocs/Migration/etat/AG/x.txt\nMods/a\nDocs/Migration/etat/AG/y.csv\n' \| grep -E '<motif l. 29>' \| grep -vE '^Docs/Migration/etat/.*\.(md\|csv)$'` | `sh -n` code 0, aucune sortie, 32 lignes ; essai à sec : sortie `Docs/Migration/etat/AG/x.txt` et `Mods/a` seuls (`.md` et `.csv` passent, `.txt` et `Mods/` restent refusés) ; `git config core.hooksPath` vide (code 1) : hook non installé ; `git check-ignore -v` : le hook est ignoré (`.gitignore:75`), non suivi | PASS |
| V7 | longueurs | `wc -l` ; longueur en caractères des lignes ajoutées (`diff` contre `AG-fix`, décodage UTF-8 par `python -I`) | lp-repo 93, lp-paths 72, lp-doc 64, gabarits 88, lp-mcp 62 (≤ 120) ; lignes modifiées : 89 à 116 caractères (max 116, lp-repo l. 75) ; lp-build 148 (141 à HEAD, antérieur, remarque AG-T2 R1) | PASS |
| V8 | plus de « hash … dans `REPO-JOURNAL.md` » | Grep `correspondance\|hash du commit est dans\|hash est dans\|ticket → hash` dans les deux arbres | 0 occurrence de l'ancienne formule dans lp-doc, gabarits, lp-repo (seule remontée : `lp-paths/SKILL.md:55`, « correspondances » d'index, sans rapport). Un motif plus large `hash.*REPO-JOURNAL\|REPO-JOURNAL.*hash` remonte 2 lignes dans chaque arbre, `lp-doc/SKILL.md:28` et `lp-repo/SKILL.md:42` : ce sont les textes corrigés, qui nient le hash (« note le HEAD d'avant, pas le hash », « ne portent pas le hash ») | PASS |
| V9 | plus de « tout le dossier, `.gitignore:74` » | Grep `tout le dossier\|gitignore:74` dans les deux arbres | 0 occurrence (`Found 0` ; les comptes de la sortie Grep ne remontent que lp-repo / lp-doc pour le motif large de V8) ; `lp-paths/SKILL.md` l. 42-43 lu : « sauf les `.md` et `.csv` … `.gitignore` l. 74-78 ; l. 53 pour les `.txt` » | PASS |
| V10 | `lp-mcp` : plus de « commit de ses seuls fichiers » | Grep `commit de ses seuls` dans les deux arbres ; lecture de `lp-mcp/SKILL.md` l. 24-25 | 0 occurrence ; l. 25 : « ses seuls fichiers et lignes, commités par ticket au gardien (`lp-repo`). » ; nouveau MD5 `35983be22608e10c69114a1e77264a78` (V4) ; `AG-R1.md` l. 12 et `AG-R2.md` l. 12 exigent déjà cette valeur (Grep) | PASS |
| V11 | numéros de ligne de `.gitignore` cités | lecture de `D:\Game\LifePlay-master 5.8\.gitignore` l. 48-80 | l. 53 `/Docs/Migration/etat/**/*.txt` ; l. 74 commentaire ETAT3 ; l. 75-78 `/Docs/Migration/etat/**`, `!…/**/`, `!…/**/*.md`, `!…/**/*.csv` : « l. 74-78 » et « l. 53 » exacts | PASS |
| V12 | fichiers hors périmètre non touchés | `git status --short -uall -- Docs/Migration/etat/AG/AG-T1-CONCEPTION.md Tools/claude` (copie 5.8) | sortie vide : `AG-T1-CONCEPTION.md` non modifié ; `Tools/claude` de la copie 5.8 non modifié | PASS |
## 4. Diff lu en entier
`git -C <arbre> diff -- Tools/claude/skills` : 15 hunks, 6 fichiers suivis, +93 −57, identique dans les deux arbres (V2) ; les 2 fichiers
non suivis (`lp-mcp`, `lp-repo`) sont couverts par le diff contre `AG-fix` (V3), plus les lignes 24-45 et 68-93 de `lp-repo` et 38-47 de `lp-paths` lues en entier.
Le delta par rapport à AG-T2 (valide, 90 / 54) est donc exactement : E1b, E2a, E2b dans les fichiers suivis (hunks déjà attribués à AG), plus E1a, E2c, E3
dans les fichiers nouveaux. Aucun hunk nouveau hors des 7 remplacements (V3). Le hook (2 lignes) n'est pas suivi par git : contrôlé par `diff` contre l'instantané seulement.
Écarts : **aucun**. E1, E2, E3 levés au sens de la fiche AG-T1b (E3 : texte imposé appliqué, acceptation par l'utilisateur reportée).
Remarques (pas des écarts) :
- R1. Faute de frappe « des copie 5.8 » de `lp-lot/SKILL.md` l. 55 : toujours là, hors décision (AG-T1b § 5).
- R2. Le filtre du hook (`.md` et `.csv` de `etat/` autorisés) laisse aussi passer `etat/sandbox/DC2/DC2-BUILD.md`, que `.gitignore` l. 80 ignore (donnée personnelle) : seul un `git add -f` l'indexerait ; la VAL AG-T2 proposait d'écrire cette exception dans `lp-repo` § 3, la fiche AG-T1b ne l'a pas retenue. Estimé sans risque courant (le gardien commite sur chemins explicites).
- R3. `AG-T1-CONCEPTION.md` l. 106 (spécification du hook, `^Docs/Migration/etat/` sans exception) reste ancienne : document daté, non modifié (conforme à la fiche) ; le fichier hook réel est corrigé.
- R4. `lp-build` 148 lignes > 120, antérieur au lot (AG-T2 R1).
## 5. Verdict
**PASS.** Critères de la rubrique 8 rejoués et tenus : E1 (V3, V6, V9, V11), E2 (V3, V8), E3 (V3, V10) levés ; aucune autre ligne n'a changé (V3, V12) ; 8 paires MD5 égales (V4) ; diffs des deux arbres identiques, MD5 `7f117a8e…` (V2) ; LF sans BOM (V5) ; `sh -n` = 0 et essai à sec conforme (V6) ; longueurs ≤ 120 (V7). Les tickets `AG-R1` / `AG-R2` exigent « VAL PASS » : cette condition est remplie, sous réserve de la case E3 du § 6.
## 6. Points à confirmer par l'utilisateur
- [ ] E3 : accepter le libellé imposé de `lp-mcp/SKILL.md` l. 25 (« ses seuls fichiers et lignes, commités par ticket au gardien (`lp-repo`). »), un peu elliptique ; MD5 `35983be2…` déjà inscrit dans `AG-R1` / `AG-R2` (l. 12).
- [ ] R2 : accepter que le hook laisse passer `DC2-BUILD.md` (protégé par `.gitignore` l. 80) ou demander l'exception dans `lp-repo` § 3 et le hook.
- [ ] Hook : pas d'installation (`core.hooksPath` inchangé) avant ticket du gardien ; `AG-T1-CONCEPTION.md` l. 106 à réviser si le document est repris.
Non rejoué : aucune compilation, aucun commandlet, aucun test en jeu (documentation d'outillage, sans objet) ; le texte intégral de `AG-R1.md` l. 21 n'a pas été relu (valeurs `01860dfc` et `7f117a8e` seulement repérées) ; le hook n'a pas été exécuté en vrai commit (seulement `sh -n` et un essai à sec du filtre) ; le contenu de `lp-build`, `lp-lot`, `lp-validate` n'a pas été relu (MD5 identiques à ceux validés en AG-T2).
Tours : 10 / 30
## Constats
Fichiers à commiter (dépôt du jeu, copie 5.8, suivi par git en texte seul depuis ETAT3) :
- A `Docs/Migration/etat/AG/AG-T2b-VAL.md`
Fichiers modifiés par moi : ce seul fichier (Write). Aucun script, aucune édition d'un autre fichier. Le hook `etat/REPO/hooks/pre-commit` n'est pas suivi (ignoré, `.gitignore:75`).