263 lines
35 KiB
Markdown
263 lines
35 KiB
Markdown
|
|
Fiche U8-T7 — Niveau N1 — Modèle prévu lp-validator | utilisé claude-sonnet-5-5 — Agent lp-validator — Skills sk-protocol, sk-recount, debug-verification, lp-validate
|
|||
|
|
# U8-T7-VAL : VAL du Shipping candidat V2.0 `D:\Game\LifePlay_Build_5.8_Shipping_U8r` contre les critères 1 à 6 du plan 27 (2026-10-10)
|
|||
|
|
|
|||
|
|
Hors gabarit : les sections 1 à 6 suivent le gabarit VAL ; la fiche (§ 6) demande en plus une section 7 « Réserves » et une section 8 « Fichiers à commiter » ; les contre-vérifications 3a à 3f (fiche § 3) et le tableau des critères sont réunis dans la section 3.
|
|||
|
|
|
|||
|
|
Lecture seule : aucun fichier de jeu, d'archive, de journal ou de dépôt modifié ; ni jeu, ni éditeur, ni compilation lancés ; aucune commande git qui écrit. Seul fichier écrit dans le projet : ce livrable. Un résumé `Build.ps1 -FromLog` a été dirigé par `-EtatDir` vers le scratchpad de la session (hors projet), pour ne rien écrire sous `etat\`. `git status --short -- . ':!Docs'` relevé à l'ouverture et à la fin : une seule ligne, ` M Content/BPs/GI.uasset`, qui n'est pas de moi (réserve R1).
|
|||
|
|
|
|||
|
|
## Verdict (en tête)
|
|||
|
|
|
|||
|
|
**PASS avec réserves : candidat à la porte T11 sous réserve de T8a et T8b, et de R1, R2, R5 et R10 ci-dessous.**
|
|||
|
|
- Le **paquet** est conforme et recoupé : `CheckPackage` 4 PASS (code 0) rejoué ; 2 078 fichiers, 0 `*.pdb`, 0 `LastResort*`, 0 `Manifest_DebugFiles*`, 0 chemin `Modules/.git`, 0 `LPSandbox` au manifeste UFS, 0 `LPAnimMeasure` et 0 `LPSandbox` dans l'exe ; liste de fichiers identique à `…_Shipping_OBB2` ; SHA-256 du `.ucas` identique entre l'archive Shipping, `Releases\2026.10.2.0` et l'archive Development ; exe archivé = exe du projet = SHA-256 de `BUILD-ID.txt`.
|
|||
|
|
- Critères du plan 27 : **établi PASS** pour 1, 5 et 6 ; **non établi** pour 2, 3 et 4 en totalité (la partie cuisson / chargement du critère 2 et le smoke du critère 3 sont établis ; voir le tableau).
|
|||
|
|
- Une contre-vérification est négative **en l'état** : l'archive contient les 14 modules optionnels `vin_*` (626 fichiers), alors que la règle « jeu léger » n'en garde que 2. C'est attendu de la chaîne (l'éclatement est un pas de publication, `SplitModules.ps1`, T8c) et identique à `…_OBB2` ; l'archive n'est donc **pas** publiable telle quelle (3d, R10).
|
|||
|
|
|
|||
|
|
## 1. Fiches amont relues
|
|||
|
|
|
|||
|
|
Lues en entier, avec leurs sources recomptées (section 3) :
|
|||
|
|
|
|||
|
|
| Livrable | Verdict de l'auteur | Écart de gabarit relevé |
|
|||
|
|
|---|---|---|
|
|||
|
|
| `U8-TACHES.md` (section « Reprise du 2026-10-10 », D1 à D9, tableau de la reprise) | — | ligne T4r : « `Releases6.10.2.0` » pour `Releases\2026.10.2.0` (séquence `\2026` perdue à la saisie, sans effet) |
|
|||
|
|
| `U8-ETAT-2026-10-10.md` | — | hors gabarit (état des lieux) |
|
|||
|
|
| `U8-T0r-INV.md` | OK, HEAD `36d1fa4`, 20 chemins cuits | écart annoncé (« Hors gabarit ») ; recompté : 20 chemins, 70 commits |
|
|||
|
|
| `U8-T3p.md` | faite (référence déplacée, 5 fichiers, MD5 avant = après) | pas de gabarit (action de l'orchestrateur) |
|
|||
|
|
| `U8-T2r-BUILD.md` | code 0, 0 / 0, 1 unité, 62 s | conforme au gabarit BUILD (1 à 7) |
|
|||
|
|
| `U8-T3r-BUILD.md` | code 0, `FULL COOK`, 8 923 paquets, 0 / 0, 136 s | conforme |
|
|||
|
|
| `U8-T4r-BUILD.md` | code 0, 2 078 fichiers, `CheckPackage` 4 PASS | **section absente** : le gabarit BUILD veut 3 « Modules recompilés », 4 « Erreurs et avertissements », 5 « Toolchain », 6 « Preuve de chargement », 7 « Journal archivé » ; le livrable a 3 à 6 = étapes de la fiche, sans annonce « Hors gabarit » |
|
|||
|
|
| `U8-T5br-BUILD.md` | code 0, `.ucas` = T4r au SHA-256 | sections renommées (1 compilation, 2 empaquetage, 3 critères) : l'ordre du gabarit n'est pas suivi, sans annonce |
|
|||
|
|
| `U8-T5ar-VAL.md` | PASS (smoke utilisateur) | sections 1 à 6 du gabarit VAL absentes (ni points à confirmer, ni verdict numéroté) ; acceptable pour un relevé de partie jouée, à noter |
|
|||
|
|
| `U8-T5cr-VAL.md` | PASS avec réserve | conforme (sections 1 à 6 + Constats) ; la ligne « Tours » est après « Fichiers à commiter » et non avant « Constats » (mineur) |
|
|||
|
|
| `U8-T6-VAL.md` | ANNULÉE | gabarit VAL absent (livrable de constat) |
|
|||
|
|
| Références : `U8-T5c-VAL.md` (en-tête, § 1 et § 2), `OB\OBB\OBB-EVAL.md` (§ 7.1 l. 150-162, § 7.4, § 7.6, § 7.8), doc 21 l. 136 et 210-229, doc 27 l. 384-391, `15_Modules_Optionnels.md` § 3 et § 5, README racine l. 61 et 82 | — | — |
|
|||
|
|
|
|||
|
|
Aucune IMPL dans ce lot (builds, mesures, relevés). Le point de départ des builds est `36d1fa4` (0 fichier hors `Docs/` modifié à T0r, `U8-T0r-INV.md` a4).
|
|||
|
|
|
|||
|
|
## 2. Points à confirmer des livrables amont
|
|||
|
|
|
|||
|
|
Pas d'IMPL : les « points à confirmer » des BUILD et VAL tiennent lieu.
|
|||
|
|
|
|||
|
|
| Point (source) | Résultat | Preuve |
|
|||
|
|
|---|---|---|
|
|||
|
|
| T3r : ligne Display `Falling back to legacy iterative cook mode` (l. 239) n'est pas un avertissement | **PASS** | journal `U8-T3r_Cook_20261010-200000.log` : `grep -c "Warning: "` = 0, `grep -c "Error: "` = 0 ; l. 250 `FULL COOK … recooking all packages` ; l. 311 `Cooked packages 8923 Packages Remain 0 Total 8923` ; l. 560 `Success - 0 error(s), 0 warning(s)` ; l. 574-580 `ExitCode=0`, `BUILD SUCCESSFUL` |
|
|||
|
|
| T4r : correspondance PDB ↔ exe non prouvée | **reporté** (R6) | rejoué : SHA-256 de l'exe archivé = ligne de `BUILD-ID.txt` ; SHA-256 du PDB (`5C6FB4BD…8E7C65`) = `BUILD-ID.txt` ; l'enregistrement `RSDS` lu dans l'exe (octet 148 450 880) porte les octets du GUID `BE8D0875-47EC-F03F-160C-88AA…` écrit dans `BUILD-ID.txt` ; le GUID **du PDB lui-même** n'est lu par personne |
|
|||
|
|
| T5br : « Target is up to date », exe Development de 18:40 | **PASS** | `find Source Config LifePlay.uproject Plugins -newer Binaries/Win64/LifePlay.exe` (hors Marketplace et McpAutomationBridge) : 0 fichier ; l'exe de 18:40:44 sort de `STF_Build_20261010-184002.log` (`Compile Module.LifePlay.cpp`, `Result: Succeeded`, 43 s) ; sources du jeu les plus récentes 18:21 (T5br § 1) ; `git diff --name-only 16b126c HEAD -- . ':!Docs'` = 0 |
|
|||
|
|
| T5br / T4r : `.ucas` identique | **PASS** | SHA-256 recalculés (3c) |
|
|||
|
|
| T5cr case 1 (exposition STB-MAP : 0 ligne `MapMarkers`) | **reporté** (R3) | recompté sur le journal de la cible : `MapMarkers` = 0, `Gamethread hitch` = 0 ; pas de parcours « carte » |
|
|||
|
|
| T5cr case 2 (`No SkeletalMesh` 7 971, dont 6 121 d'un acteur) | **reporté** (R4) | recompté : 7 971 au total ; répartition par acteur non rejouée |
|
|||
|
|
| T5cr case 3 (parcours différent des références) | **reporté** (R15) | non rejouable en lecture seule |
|
|||
|
|
| T5cr case 4 (7 commandlets STE-D4 en parallèle 20:12-20:17) | **reporté** (R15 ; sans effet sur les comptes de lignes) | — |
|
|||
|
|
| T5cr case 5 (réf 1 = `LifePlay-backup-2026.10.09-16.46.02.log`) | **PASS** (estimé fort) | `U8-TACHES.md` l. 15 : T5c rejouée 18:43-18:46 locale, 15 SPAWN ; le journal couvre 16:43:03 → 16:46:02 UTC, soit +2 h |
|
|||
|
|
| T5cr : chiffres clés | **PASS** | recomptés par `grep -c` sur le journal de la cible (11 853 lignes, 2 300 912 o, 20:20) : `index SPAWN` 37, `ContactMenu` 0, `from array Floats_3_` 4, `Gamethread hitch` 0, `MapMarkers` 0, Fatal / Assertion / Ensure 0, `Error: ` 6, `Accessed None` 6, `No SkeletalMesh` 7 971 : identiques au livrable |
|
|||
|
|
| T5ar : smoke court, sans journal, sans sauvegarde puis rechargement | **reporté** (R2) | — |
|
|||
|
|
| T6 : annulée | **reporté** (R2) | décision de l'utilisateur ; doc 21 l. 210 reste ouvert |
|
|||
|
|
|
|||
|
|
## 3. Critères rejoués
|
|||
|
|
|
|||
|
|
### 3.0 Tableau des critères d'acceptation globaux (doc 27 l. 386-391)
|
|||
|
|
|
|||
|
|
Verdicts : établi PASS / établi FAIL / non établi.
|
|||
|
|
|
|||
|
|
| # | Critère | Preuve | Source | Verdict |
|
|||
|
|
|---|---|---|---|---|
|
|||
|
|
| 1 | Le jeu 5.8 compile (éditeur, Development, Shipping) sans l'addon et avec | **Shipping** : `U8-T2r` code 0, 0 erreur, 0 avertissement, 1 unité (recompté par `Build.ps1 -FromLog` : `erreurs=0 avertissements=0 autres=0 unites=1`, chaîne MSVC `14.50.35717`) ; exe `LifePlay-Win64-Shipping.exe` 164 843 520 o ; `CheckPackage` [3] PASS : `.rsp` de lien sans `LPAnimMeasure`, [2] 0 `LPSandbox` au manifeste, exe sans `LPAnimMeasure` ni `LPSandbox` (0 / 0, 3b) = Shipping **sans** l'addon, le `.uproject` déclarant toujours `AdditionalPluginDirectories`. **Development** : exe de 18:40:44 compilé sur les sources finales (`STF_Build_20261010-184002.log` : `Result: Succeeded`), aucune source plus récente. **Éditeur** : `LISIB-J1a_Build_20261010-183020.log` `LifePlayEditor Win64 Development` `Result: Succeeded` (incrémental, 4 actions), sans erreur de compilation (seuls des avertissements UBT du plugin tiers HyperAIStudio). Non rejoué sur ce HEAD : éditeur et Development **avec l'addon physiquement absent** (dernière preuve : lots DC1-DC4 en 5.5, `UA-PLUGINS.md:231`) | `U8-T2r-BUILD.md`, journaux ci-contre, 3a, 3b, 3f | **établi PASS** pour le Shipping (candidat) et pour la compilation éditeur / Development avec l'addon déclaré ; la mention « sans l'addon » en éditeur / Development n'est pas rejouée (R7, sans effet sur le paquet) |
|
|||
|
|
| 2 | Chargement et cuisson sans erreur ; villes et Blueprints identiques en données à la référence 5.5 | **Cuisson** : recomptée sur `U8-T3r_Cook_*.log` : `FULL COOK`, 8 923 paquets, 0 `Error: `, 0 `Warning: `, `Success - 0 error(s), 0 warning(s)`, `ExitCode=0` (cuisson complète, DDC gardée, décision D3). **Chargement** : parcours de 8 min, journal de la cible : 0 Fatal, 0 Assertion, 0 Ensure, `LogExit: Exiting`, mais 6 lignes `Error: ` (5 `Non-Focusable widget` + `r.MorphTarget.Mode is read only!`), toutes déjà présentes dans les deux journaux de référence (`U8-T5cr-VAL.md` § 5) : famille connue, pas « zéro ». **Identité des données** : `LPCheckStreetMap` 280 / 280 identique à 5.5 et `CompileAllBlueprints` 0 erreur datent du 2026-10-08 (`U5-VAL.md` V4b ; doc 28 l. 300) ; depuis, 8 Blueprints cuits ont changé (20 chemins cuits depuis `9242cdb`, dont `StreetMap_Static` le 2026-10-09 21:17) ; dernier `CompileAllBlueprints` : `STE-VAL_CompileAllBlueprints_20261010-174503.log` (`Success - 0 error(s), 0 warning(s)`), vraisemblablement antérieur au commit `5c55db4` de `GI` (19:29, estimé) ; aucun `LPCheckStreetMap` après STB-SMS (`grep -rl LPCheckStreetMap etat/ST` : 0 fichier) | `U8-T3r-BUILD.md`, 3e, `U5-VAL.md`, journal STE-VAL | **non établi** (cuisson : établi PASS ; chargement : PASS avec 6 erreurs connues ; données villes / Blueprints sur le contenu final : preuve manquante = `LPCheckStreetMap` + `CompileAllBlueprints` sur le HEAD final, copie UE ; aucune fiche du registre ne l'apporte : à ouvrir par l'orchestrateur ou à écarter à la porte T11) |
|
|||
|
|
| 3 | Comportement en jeu équivalent au build 5.5 (A/B, contrôle visuel), réglages vidéo fonctionnels | A/B et menu Vidéo : établis en U6 sur un build antérieur (`U6-VAL.md` PASS ; doc 28 l. 301 : « Recommended → High », relance, son, reprise de partie et rues OK selon l'utilisateur). Candidat : smoke Shipping joué par l'utilisateur (`U8-T5ar-VAL.md` : PASS, 0 plantage, `Crashes` absent, dossier réel 73 / 73 inchangé) ; parcours DC4 sur l'archive Development de la même cuisson (`U8-T5cr-VAL.md`, recompté : `ContactMenu` 0, `Floats_3_` 4 contre 2 591, `Accessed None` 6 contre 223, 0 hitch, 0 Fatal). **Manque** : brouillard / Effects Low-Med jamais comparé (T6 annulée, la V1.5 n'a pas le réglage, doc 21 l. 210) ; réglages vidéo non exercés sur le candidat après STC / STE (`LPUserSettings`, `LPSettingsSubsystem` changés) ; aucun parcours « carte » (R3) | `U6-VAL.md`, `U8-T5ar-VAL.md`, `U8-T5cr-VAL.md`, `U8-T6-VAL.md`, 2 | **non établi** (comportement de partie : établi PASS sur un parcours ; réglages vidéo et brouillard : preuve manquante = contrôle visuel et menu Vidéo sur le Shipping U8r, ou autre référence 5.5 dotée du réglage ; aucune fiche du registre ne l'apporte : décision de l'utilisateur à la porte T11) |
|
|||
|
|
| 4 | Mods : contrat inchangé, 3 mods recuits chargés, mods 5.5 signalés par l'avertissement de version | Contrat : aucun fichier du plugin de chargement des mods (`ModdingExtra`) parmi les 20 chemins cuits changés depuis `9242cdb` (T0r d1, recompté : 20) ; `LPStringCompat`, `MainMenu` et `GI` ont changé, leur effet sur les mods n'est pas rejoué (estimé). 3 mods recuits : les 3 archives `…-for-LifePlay-2026.10.2.0.zip` de `D:\Game\LifePlay_Publication\Mods` datent d'U7-T15 (ancienne référence, `U8-ETAT` § 2) ; T8a pas faite. Avertissement de version : établi en U7 (doc 21 l. 205, CHG-257), non rejoué sur U8r | `U8-T0r-INV.md`, `U8-TACHES.md` (T8a « à faire »), doc 21 l. 205 | **non établi** (preuve manquante = 3 × `BuildMod` contre la nouvelle référence et chargement en jeu avec garde acceptée : fiche **U8-T8a**) |
|
|||
|
|
| 5 | Plus aucun outil, critère ni réglage fondé sur 4.27 ; chemin moteur à un seul endroit | `grep -n "4\.27\|UE_4\.27" Tools/*.ps1 Config/*.ini` : **0 ligne** (témoin : 8 fichiers `Tools/*.ps1` contiennent « 5.8 », la recherche lit bien) ; `Tools` entier : 3 lignes, toutes dans `uasset.py` (2) et `uasset58.py` (1), commentaires de l'analyseur hors éditeur « UE 4.27 uniquement » (seul utilisateur de `uasset.py` : `uasset58.py`) ; `Source` : 15 lignes dans 13 fichiers, toutes en commentaire historique (« portage 4.27 », « défaut déjà présent en 4.27 ») ; `Plugins/ModdingExtra` : 1 fichier, idem. Chemin moteur : `grep -rIn 'Game.\{1,2\}Launcher' Tools` : `Engine.ps1:46` `$LPEngineBase = 'D:\Game\Launcher\Engine'` (les lignes 14 et 29 sont de la documentation) ; `UE_5.8` dans `Tools` : une seule ligne, `Engine.ps1:29` (exemple d'en-tête) ; aucun `.bat` / `.cmd` à la racine, aucun chemin moteur dans `Config\*.ini` ; version lue dans `EngineAssociation` | 3e, `Engine.ps1` l. 1-46, doc 28 l. 297 (U2) | **établi PASS** sur le périmètre de la fiche (`Tools/*.ps1`, `Config/*.ini`) ; case laissée à l'utilisateur : `Tools/uasset.py` est un outil qui ne lit que le format 4.27 (R8) |
|
|||
|
|
| 6 | CHG par lot, commits par phase, rien poussé sans accord | `git log --oneline 9242cdb..HEAD \| wc -l` = **70** commits ; 67 portent un `CHG-` dans le sujet ; 3 n'en portent pas : `36d1fa4` (U8, état des lieux), `e5b7968` (STF, clôture), `08e2148` (OBB, clôture) ; `git branch -r` : `c55/main`, `origin/HEAD`, `origin/main`, `vinfamy/master` (aucun `ue5.8`) ; `git rev-parse --abbrev-ref ue5.8@{u}` : « no upstream configured » ; `git log --oneline HEAD --not --remotes \| wc -l` = **77** ; `git merge-base ue5.8 origin/main` = `f953e03` = `origin/main` | 3e | **établi PASS** en local (rien de poussé d'après les références distantes locales ; aucune interrogation du serveur) ; réserve R9 (3 commits sans numéro de CHG dans le sujet ; CHG de la reprise U8 non encore réservé) |
|
|||
|
|
|
|||
|
|
### 3.1 Contre-vérifications rejouées (commande et sortie brute)
|
|||
|
|
|
|||
|
|
**3a. `CheckPackage`**
|
|||
|
|
|
|||
|
|
Commande : `pwsh -NoProfile -File "D:\Game\LifePlay-master 5.8\Tools\CheckPackage.ps1" -Build "D:\Game\LifePlay_Build_5.8_Shipping_U8r" -Config Shipping`
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
CheckPackage : build D:\Game\LifePlay_Build_5.8_Shipping_U8r ; configuration Shipping ; projet D:\Game\LifePlay-master 5.8
|
|||
|
|
exe archive : D:\Game\LifePlay_Build_5.8_Shipping_U8r\Windows\LifePlay\Binaries\Win64\LifePlay-Win64-Shipping.exe (2026-10-10 19:58:14, 164843520 o)
|
|||
|
|
exe du projet : D:\Game\LifePlay-master 5.8\Binaries\Win64\LifePlay-Win64-Shipping.exe (2026-10-10 19:58:14, 164843520 o)
|
|||
|
|
[1] PASS 0 D:\Game\LifePlay_Build_5.8_Shipping_U8r\Windows\Manifest_NonUFSFiles_Win64.txt
|
|||
|
|
[2] PASS 0 D:\Game\LifePlay_Build_5.8_Shipping_U8r\Windows\Manifest_UFSFiles_Win64.txt
|
|||
|
|
[3] PASS 0 D:\Game\LifePlay-master 5.8\Intermediate\Build\Win64\x64\LifePlay\Shipping\LifePlay-Win64-Shipping.exe.rsp
|
|||
|
|
[4] PASS 0 D:\Game\LifePlay-master 5.8\Binaries\Win64\LifePlay-Win64-Shipping.target
|
|||
|
|
Resultat : PASS (code 0)
|
|||
|
|
EXIT=0
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
[3] et [4] rendent 0 (pas 2) : l'exe du projet est resté celui de 19:58:14, personne n'a recompilé le Shipping depuis T2r. À relancer à la porte T11 : un Shipping recompilé par une autre session fait passer [3] / [4] à NON-CONCLUANT (code 2).
|
|||
|
|
|
|||
|
|
**3b. Archive Shipping**
|
|||
|
|
|
|||
|
|
Commande (PowerShell, `Get-ChildItem -Recurse -File -Force` sur l'archive et sur `…_Shipping_OBB2`, `Compare-Object` des chemins relatifs, recherche de motifs sur les noms ; `Select-String` sur le manifeste ; lecture binaire de l'exe en `Latin1`, recherche ordinale ASCII et UTF-16 ; témoins ci-dessous) :
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
U8r files: 2078 bytes: 1573304031
|
|||
|
|
OBB2 files: 2078 bytes: 1573286287
|
|||
|
|
pdb: 0
|
|||
|
|
LastResort*: 0
|
|||
|
|
Manifest_DebugFiles*: 0
|
|||
|
|
path Modules/.git: 0
|
|||
|
|
ucas count: 2
|
|||
|
|
manifest UFS exists: True lines: 22069 LPSandbox lines: 0
|
|||
|
|
diff lists (relative paths): 0
|
|||
|
|
size differs: \Windows\LifePlay\Binaries\Win64\LifePlay-Win64-Shipping.exe 164843520 vs 164830208
|
|||
|
|
size differs: \Windows\LifePlay\Content\Paks\global.ucas 3398864 vs 3398528
|
|||
|
|
size differs: \Windows\LifePlay\Content\Paks\LifePlay-Windows.ucas 1259281744 vs 1259277648
|
|||
|
|
files with different size: 3
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
- Nombre de fichiers : **2 078** (attendu 2 078). Écart d'octets avec OBB2 : 1 573 304 031 − 1 573 286 287 = 17 744 = 13 312 + 336 + 4 096 (les trois fichiers listés) : cohérent. Le total d'OBB2 est celui du doc 21 l. 227 (1 573 286 287).
|
|||
|
|
- Témoins : `*.ucas` = 2 (le filtre de noms voit des fichiers) ; `*.pdb` = 7 dans `Binaries\Win64` du projet (`U8-T4r-BUILD.md` § 4, témoin inverse, non rejoué).
|
|||
|
|
- Recherche de chaînes dans l'exe archivé (164 843 520 o), `IndexOf` ordinal sur la chaîne `Latin1`, ASCII et UTF-16 :
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
LPAnimMeasure: ascii=0 utf16=0
|
|||
|
|
LPSandbox: ascii=0 utf16=0
|
|||
|
|
LPAnimCore: ascii=0 utf16=1
|
|||
|
|
LPCoupleSim: ascii=1 utf16=0
|
|||
|
|
ModdingExtra: ascii=2 utf16=5
|
|||
|
|
LifePlay: ascii=9 utf16=25
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
`LPAnimMeasure` = 0 et `LPSandbox` = 0 (attendu 0). Témoins positifs : `ModdingExtra` 2 / 5 et `LifePlay` 9 / 25 (la recherche trouve des chaînes présentes). Information : `LPAnimCore` (plugin du jeu, DC1) et `LPCoupleSim` sont présents : ils appartiennent au jeu public (`LPAnimCore` n'est pas l'addon).
|
|||
|
|
|
|||
|
|
**3c. SHA-256, version, PDB**
|
|||
|
|
|
|||
|
|
Commandes : `Get-FileHash -Algorithm SHA256` sur chaque fichier (PowerShell) ; lecture de `Config/DefaultGame.ini` l. 1-6 ; `ls -la` du dossier PDB ; lecture de `BUILD-ID.txt`.
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
ship ucas D6AD1068973D4E6682A724B18EB1A74D706AD0E66BB76CD018314C89E7AA2D55 (…_Shipping_U8r\Windows\LifePlay\Content\Paks\LifePlay-Windows.ucas)
|
|||
|
|
ref ucas D6AD1068973D4E6682A724B18EB1A74D706AD0E66BB76CD018314C89E7AA2D55 (Releases\2026.10.2.0\Windows\LifePlay-Windows.ucas)
|
|||
|
|
dev ucas D6AD1068973D4E6682A724B18EB1A74D706AD0E66BB76CD018314C89E7AA2D55 (…_Development_U8r\Windows\LifePlay\Content\Paks\LifePlay-Windows.ucas)
|
|||
|
|
ship exe 06F6D29232738333660542AA8640EF97993F1BDE248E3D68B3640B528955FA9A
|
|||
|
|
proj exe 06F6D29232738333660542AA8640EF97993F1BDE248E3D68B3640B528955FA9A
|
|||
|
|
LifePlay-Windows.utoc: archive=4089A7862F5089E6 ref=4089A7862F5089E6 same=True
|
|||
|
|
LifePlay-Windows.pak: archive=EE54838BC7988EC9 ref=EE54838BC7988EC9 same=True
|
|||
|
|
pdb sha256: 5C6FB4BDDF30CEFE74AB899C27972BE431525E122245D798276D48160F8E7C65
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
- `.ucas` : les trois sont **identiques** (SHA-256 `D6AD1068…AA2D55`). `.utoc` et `.pak` de l'archive = ceux de `Releases` (16 premiers hex, comparaison complète dans la commande).
|
|||
|
|
- `Config/DefaultGame.ini` l. 4 : `ProjectVersion=2026.10.2.0` (`head -6 | cat -A`, fin de ligne LF). Le numéro écrit dans le paquet n'est pas lu (estimé : même `ProjectVersion` à la cuisson de 20:00, fichier non modifié).
|
|||
|
|
- `Releases\` : 5 fichiers (`AssetRegistry.bin` 4 569 308 ; `LifePlay-Windows.pak` 20 217 671 ; `.ucas` 1 259 281 744 ; `.utoc` 1 575 606 ; `Metadata\DevelopmentAssetRegistry.bin` 8 615 803), tailles = `U8-T4r-BUILD.md` § 3 ; l'ancienne référence est en sauvegarde (`U8-T3p.md`, non rouverte).
|
|||
|
|
- `D:\Game\LifePlay_Build_5.8_Shipping_U8r_PDB` : `BUILD-ID.txt` (568 o, 20:04) et `LifePlay-Win64-Shipping.pdb` (225 710 080 o, 19:58). `BUILD-ID.txt` : `exe archive … SHA-256 : 06F6D292…955FA9A` = exe archivé recalculé ; `PDB copie … SHA-256=5C6FB4BD…8E7C65` = PDB recalculé ; `RSDS GUID … BE8D0875-47EC-F03F-160C-88AA98FADA82`, `commit : 36d1fa4`. Lecture binaire de l'exe à l'offset 148 450 880 : la signature `RSDS` y est suivie des octets `75 08 8D BE EC 47 3F F0 16 0C 88 AA` (encodage petit-boutiste du GUID de `BUILD-ID.txt`) ; les 4 derniers octets (`98 FA DA 82`) ne sont pas lus par ma lecture décalée. GUID du PDB : non lu (R6).
|
|||
|
|
|
|||
|
|
**3d. Contenu public (règle « jeu léger »)**
|
|||
|
|
|
|||
|
|
Règle lue : README racine l. 61 (V1.5) « The packaged game only contains the base modules `vin_Base` and `vin_VanillaRealistic` » (l. 82, V1.4 : plus `lp_Revival`) ; `Docs/15_Modules_Optionnels.md` l. 48 et `Tools/modules/next.json` : `"essential": ["vin_Base", "vin_VanillaRealistic"]`, groupe `vin_Modules` = les 14 autres `vin_*`.
|
|||
|
|
|
|||
|
|
Dossiers sous `Windows\LifePlay\Content\Modules`, archive U8r et `…_OBB2` : **liste identique, 2 053 fichiers chacune** (commande : `Get-ChildItem -Force` du dossier, puis `-Recurse -File` par dossier) :
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
MorphTags 9 ; vin_Base 1396 ; vin_BDSM 21 ; vin_Bestiality 66 ; vin_Corruption 49 ; vin_Incest 150 ;
|
|||
|
|
vin_Interracial 45 ; vin_Netori 37 ; vin_NonConsensual 56 ; vin_NTR 52 ; vin_OldYoung 15 ;
|
|||
|
|
vin_Polyamorous 38 ; vin_Pregnancy 87 ; vin_Tentacles 8 ; vin_VanillaPorn 1 ; vin_VanillaRealistic 1 ;
|
|||
|
|
vin_Watersports 1 ; 21 fichiers texte à la racine (beauty_standards_default.txt, Clothes4.txt, … uniforms.txt)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
- Somme : 1 396 + 626 + 1 + 9 + 21 = 2 053. Dossiers `vin_*` : 16 (`ls -d`) ; fichiers hors `vin_Base` et `vin_VanillaRealistic` : **626** (`find … -path '*/vin_*' -not -path '*/vin_Base/*' -not -path '*/vin_VanillaRealistic/*'`) = les 14 modules du groupe `vin_Modules` (doc 15 l. 64 : 626 fichiers en V1.5). Le build 5.5 V1.5 (`LifePlay_Build_5.5_Shipping_V1.5`) ne contient que `vin_Base`, `vin_VanillaRealistic`, `MorphTags` et les fichiers texte.
|
|||
|
|
- Aucun mod d'assets : pas de dossier `Windows\LifePlay\Mods` dans l'archive (`ls` : introuvable), aucun `.lpmod` hors `vin_*` (`find -iname "*.lpmod"` hors `Modules/vin_*` : vide) ; ni `lp_Revival` ni `lpr_*`.
|
|||
|
|
- **Résultat : négatif en l'état.** L'archive Shipping contient 14 modules hors de la règle « jeu léger ». Même contenu qu'OBB2 : la chaîne `BuildCookRun` n'applique pas la règle, c'est `Tools/SplitModules.ps1 -Config Tools\modules\next.json` qui les déplace et les met en zip (publication, fiche **U8-T8c**). Constat de préparation pour T8c : `next.json` porte `"version": "2026.10.1.5"` (à aligner sur `2026.10.2.0`), et `OBB-EVAL.md` § 7.6 note que `SplitModules.ps1` laisse passer NON-CONCLUANT (code 2) en avertissement.
|
|||
|
|
|
|||
|
|
**3e. Critères 5 et 6, commandes de la fiche**
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
git -C "D:\Game\LifePlay-master 5.8" log --oneline 9242cdb..HEAD | wc -l -> 70
|
|||
|
|
git rev-list --count main..ue5.8 -> 77
|
|||
|
|
git rev-list --count origin/main..ue5.8 -> 81
|
|||
|
|
git log --oneline HEAD --not --remotes | wc -l -> 77
|
|||
|
|
git branch -r -> c55/main ; origin/HEAD -> origin/main ; origin/main ; vinfamy/master
|
|||
|
|
git rev-parse --abbrev-ref ue5.8@{u} -> fatal: no upstream configured for branch 'ue5.8'
|
|||
|
|
git merge-base ue5.8 origin/main -> f953e0393fce658446f25ed530e74f88e5f34e4c (= origin/main)
|
|||
|
|
git diff --name-only 9242cdb HEAD -- Content Source/LifePlay Config LifePlay.uproject Plugins | wc -l -> 20
|
|||
|
|
git log --format=%s 9242cdb..HEAD | grep -c "CHG-" -> 67 (sans CHG : 3)
|
|||
|
|
grep -n "4\.27\|UE_4\.27" Tools/*.ps1 Config/*.ini -> (aucune sortie)
|
|||
|
|
grep -rIn "4\.27" Tools | wc -l -> 3 ; grep -rIn "4\.27" Source | wc -l -> 15 (13 fichiers)
|
|||
|
|
grep -rn "UE_5\.8" Tools -> Tools/Engine.ps1:29 (exemple d'en-tête)
|
|||
|
|
grep -rIn 'Game.\{1,2\}Launcher' Tools (ps1, py, json) -> Engine.ps1:14 (doc), :29 (doc), :46 ($LPEngineBase)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Interprétation (estimée) : les 15 lignes de `Source` et les 3 de `Tools` sont des commentaires d'historique ou le commentaire d'en-tête de l'analyseur de paquets 4.27 ; aucun script de compilation, de cuisson ou de réglage ne dépend de 4.27. `77` commits non présents sur un distant (`OBB-EVAL.md` § 7.4 en comptait 64 à son époque) : tous les travaux de migration sont locaux ; `81` contre `origin/main` parce que `main` local a 4 commits d'avance sur `origin/main` (77 = 81 − 4, estimé). Limite : références distantes locales, `git fetch` et `ls-remote` non lancés.
|
|||
|
|
|
|||
|
|
**3f. Recompte du build Shipping depuis le journal (`lp-validate` § 2)**
|
|||
|
|
|
|||
|
|
Commande : `pwsh -NoProfile -File Tools/Build.ps1 -Lot U8-VAL -FromLog "D:\Game\LifePlay-master 5.8\Saved\Logs\portage\U8_Build_20261010-195713.log" -EtatDir "<scratchpad de la session>"`
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
code=-1 duree=0s erreurs=0 avertissements=0 autres=0 unites=1
|
|||
|
|
chaine : Using Visual Studio 14.50.35739 toolchain (C:\Program Files\Microsoft Visual Studio\18\Community\VC\Tools\MSVC\14.50.35717) and Windows 10.0.22621.0 SDK (C:\Program Files (x86)\Windows Kits\10).
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
`code=-1` = le code de sortie n'est pas dans le journal en mode `-FromLog` (le livrable T2r donne 0 ; `Total execution time: 61.24 seconds`). Erreurs 0, avertissements 0, 1 unité (`Module.LifePlay.cpp`), MSVC `14.50.35717` : conformes à `U8-T2r-BUILD.md`. Le journal de cuisson (`U8-T3r_Cook_*.log`) est recompté en section 2 (0 / 0).
|
|||
|
|
|
|||
|
|
## 4. Diff lu en entier
|
|||
|
|
|
|||
|
|
sans objet : aucune IMPL dans le lot ; lot de builds, de mesures et de relevés, aucun fichier source modifié par les rôles amont (`git diff --name-only 16b126c HEAD -- . ':!Docs'` = 0 ; `U8-T0r-INV.md` a4 : 0 fichier hors `Docs/` à T0r). Fins de ligne, `.uproject`, `LPTestStringCompat` : sans objet (aucun code ni configuration modifié, aucune compilation éditeur demandée). État git à l'ouverture de cette fiche : 21 éléments sous `Docs/Migration/etat/` (4 modifiés, 17 non suivis, dont les livrables U8 de la reprise) et ` M Content/BPs/GI.uasset` (non committé, MD5 `ee266d19de9819dd8577ae5f9e0d6e17` contre `b8b97c46b825a6af942baabd5bf74c56` au HEAD ; fichier daté du 2026-10-10 21:17, donc écrit après la cuisson de 20:00 et après l'empaquetage de 20:15 ; session STE en cours, `STE-H3c-SPEC.md` et `STE-H5b-SPEC.md` non suivis).
|
|||
|
|
|
|||
|
|
## 5. Verdict
|
|||
|
|
|
|||
|
|
**PASS avec réserves** (global ; chaque critère est au tableau 3.0).
|
|||
|
|
|
|||
|
|
| Critère | Verdict |
|
|||
|
|
|---|---|
|
|||
|
|
| 1 compilation | établi PASS (Shipping, Development, éditeur avec l'addon déclaré) ; « sans l'addon » en éditeur / Development non rejoué (R7) |
|
|||
|
|
| 2 chargement, cuisson, données | **non établi** (cuisson : PASS ; chargement : PASS avec 6 erreurs connues ; identité des données sur le contenu final : non établie, R5) |
|
|||
|
|
| 3 comportement en jeu, réglages vidéo | **non établi** (smoke et parcours : PASS ; brouillard et réglages vidéo : R2) |
|
|||
|
|
| 4 mods | **non établi** (T8a, R13) |
|
|||
|
|
| 5 plus de 4.27, un seul chemin moteur | établi PASS (R8 : `uasset.py`) |
|
|||
|
|
| 6 CHG, commits, rien poussé | établi PASS en local (R9) |
|
|||
|
|
| Contrôle de paquet (`CheckPackage` 4 PASS, listes, SHA-256, PDB, `BUILD-ID`) | établi PASS (R6 : GUID du PDB) |
|
|||
|
|
| Contenu public (règle « jeu léger ») | négatif en l'état : 14 modules `vin_*` (626 fichiers) ; à traiter par `SplitModules` en T8c (R10) |
|
|||
|
|
| Cohérence référence / archive | établi PASS (`.ucas`, `.utoc`, `.pak` identiques ; `ProjectVersion` 2026.10.2.0) |
|
|||
|
|
|
|||
|
|
Pas de FAIL établi. Ce qui empêche un PASS sec : trois critères non établis et deux faits nouveaux (R1 : `GI.uasset` modifié depuis la cuisson ; R10 : modules `vin_*` non éclatés).
|
|||
|
|
|
|||
|
|
## 6. Points à confirmer par l'utilisateur
|
|||
|
|
|
|||
|
|
- [ ] 1. Brouillard / Effects Low-Med (doc 21 l. 210) : accepter de publier sans comparaison 5.5 / 5.8, ou demander une autre référence 5.5 dotée du réglage (T6 annulée par l'utilisateur).
|
|||
|
|
- [ ] 2. Contrôle visuel et menu Vidéo sur le Shipping U8r (critère 3), à faire à la porte T11 ou par une fiche de reprise : non planifié au registre.
|
|||
|
|
- [ ] 3. Identité des données (`LPCheckStreetMap` 280 / 280, `CompileAllBlueprints`) sur le HEAD final (critère 2) : fiche à ouvrir sur la copie UE, ou accepter l'estimation (les changements STB-SMS et STE sont des gardes `IsValid` d'après les messages de commit, non relus en détail).
|
|||
|
|
- [ ] 4. `GI.uasset` modifié au 21:17 (R1) : si STE le commite avant T11, refaire T2r à T5br ; sinon le candidat reste la cuisson de 20:00 sur `36d1fa4`.
|
|||
|
|
- [ ] 5. `Tools/uasset.py` (analyseur 4.27, seul le format 4.27) : le garder (outil d'analyse de l'origine) ou le retirer au titre du critère 5.
|
|||
|
|
- [ ] 6. Parcours « carte » (R3) et volume `No SkeletalMesh` (R4) : à classer, comme demandé par `U8-T5cr-VAL.md` § 6.
|
|||
|
|
- [ ] 7. G-OB (doc 30) et sortie de ST (D2) : la porte T11 les exige ; STE est encore actif (R1, R16).
|
|||
|
|
|
|||
|
|
## 7. Réserves
|
|||
|
|
|
|||
|
|
| # | Objet | Effet | Fiche ou décision qui la lève |
|
|||
|
|
|---|---|---|---|
|
|||
|
|
| R1 | `Content/BPs/GI.uasset` modifié dans l'arbre au 21:17 (non committé, session STE), après la cuisson et l'empaquetage du candidat | si commité avant T11, le paquet U8r n'est plus l'état du jeu : `CheckPackage` ne le détecte pas (il compare l'exe, pas le contenu cuit) | refaire T2r à T5br après le dernier commit STE ; décision orchestrateur / utilisateur ; re-contrôle `git status --short -- . ':!Docs'` à T11 |
|
|||
|
|
| R2 | T6 annulée : brouillard / Effects non comparé (doc 21 l. 210) ; réglages vidéo non exercés sur le candidat | critère 3 non établi ; écart visuel possible entre 5.5 et 5.8 | décision de l'utilisateur à la porte T11 (cases 1 et 2, section 6) |
|
|||
|
|
| R3 | Parcours « carte » à faire : 0 ligne `MapMarkers`, 0 hitch = preuve par absence ; `STB-MAP` non exposé en T5cr (doc 21 l. 211) | le report des hitchs `MapMarkers_C` reste ouvert | un parcours qui ouvre la carte, hors registre : à planifier ou à porter au doc 29 |
|
|||
|
|
| R4 | `No SkeletalMesh` 7 971 dont 6 121 d'un acteur (`Person_C_2147481863`, d'après T5cr) | volume 9 fois la réf 1, pas de cause établie ; famille présente dans les deux références | classement par l'orchestrateur (doc 29), aucune action dans U8 |
|
|||
|
|
| R5 | Critère 2 : identité des données (villes, Blueprints) non rejouée sur le contenu final ; dernier `CompileAllBlueprints` vraisemblablement avant `5c55db4` | écart de données non exclu sur 8 Blueprints changés depuis `9242cdb` | fiche à ouvrir sur la copie UE (`LPCheckStreetMap` + `CompileAllBlueprints`) |
|
|||
|
|
| R6 | GUID du PDB lui-même non lu (SHA-256 du PDB, SHA-256 de l'exe et enregistrement `RSDS` de l'exe concordent avec `BUILD-ID.txt`) | un PDB d'une autre compilation de même taille passerait inaperçu | lecture de l'en-tête MSF du PDB ou `dumpbin /headers`, par T8c ou une fiche d'outillage |
|
|||
|
|
| R7 | Éditeur / Development « sans l'addon » non rejoué sur ce HEAD (dernier essai : DC1-DC4 en 5.5) | critère 1 : la moitié « sans addon » repose sur une preuve ancienne ; le Shipping candidat est sans addon (prouvé) | essai copie UE (`Makefile.bin` déplacé, `lp-build` § 8), à décider ; sans effet sur le paquet |
|
|||
|
|
| R8 | `Tools/uasset.py` et `uasset58.py` : analyseur borné au format 4.27 | lecture stricte du critère 5 : un outil « fondé sur 4.27 » reste | case 5, section 6 |
|
|||
|
|
| R9 | 3 commits sans `CHG-` dans le sujet (`36d1fa4`, `e5b7968`, `08e2148`) ; CHG de la reprise U8 (T0r à T7) non réservé ; rien vérifié côté serveur | critère 6 : traçabilité à compléter ; poussée à décider | gardien du dépôt et `NUMEROS.md` (CHG « un pour la reprise, un pour T2r-T5cr, un pour T8 » prévus en `U8-ETAT` § 8) ; push à la porte T11 (D8) |
|
|||
|
|
| R10 | 14 modules `vin_*` (626 fichiers) dans l'archive Shipping ; `next.json` à `2026.10.1.5` | l'archive n'est pas publiable telle quelle ; `SplitModules` laisse passer NON-CONCLUANT en avertissement (`OBB-EVAL.md` § 7.6) | **U8-T8c** (`SplitModules.ps1`, archive de base, 3 mods) puis contrôles PUB ; version de `next.json` alignée avant |
|
|||
|
|
| R11 | Dossier `Saved` du Shipping installé : `%LOCALAPPDATA%\LifePlay\Saved`, commun avec les versions précédentes (doc 21 l. 225) | un joueur qui met à jour réutilise ses sauvegardes et son `GameSettings.sav` de V1.x | décision D4 = a : texte au README par **U8-T8b**, sauvegardes à faire avant mise à jour |
|
|||
|
|
| R12 | `README.md` racine : l. 4 « UE 5.8 » et statut V2.0 pas encore écrits (doc 21 l. 229) | publication incomplète | **U8-T8b** |
|
|||
|
|
| R13 | Trois mods recuits non rejoués ; archives U7-T15 produites contre l'ancienne référence | critère 4 non établi | **U8-T8a** (`BuildMod` × 3, garde acceptée en jeu) |
|
|||
|
|
| R14 | Écarts de gabarit des livrables amont : T4r (sections 3 à 6 de BUILD absentes), T5br (ordre non suivi), T5ar et T6 (gabarit VAL absent) ; ligne T4r du registre : « `Releases6.10.2.0` » | traçabilité | correction par l'auteur ou l'orchestrateur, hors VAL |
|
|||
|
|
| R15 | Parcours de T5cr non identique aux références ; durées sous charge STE-D4 ; un parcours, un journal par cas | comparaisons « équivalent » restent estimées (T5cr § D3) | aucune fiche ; limite de méthode connue depuis U6 |
|
|||
|
|
| R16 | G-OB (doc 30) non clos et sortie de ST non déclarée (D2) | la porte T11 les exige | décision de l'utilisateur à T11 |
|
|||
|
|
|
|||
|
|
Réserve du brief levée par cette fiche : T5br « Target is up to date » (exe Development de 18:40) : aucune source, configuration ni plugin du jeu plus récent que l'exe, exe compilé sur les sources finales (section 2).
|
|||
|
|
|
|||
|
|
## 8. Fichiers à commiter
|
|||
|
|
|
|||
|
|
Dépôt du jeu `D:\Game\LifePlay-master 5.8`, branche `ue5.8` (aucune commande git d'écriture lancée) :
|
|||
|
|
- `A Docs/Migration/etat/U58/U8/U8-T7-VAL.md` (ce livrable, seul fichier écrit dans le projet ; fins de ligne LF).
|
|||
|
|
|
|||
|
|
Hors de cette fiche, non suivis ou modifiés avant elle et appartenant à d'autres rôles ou sessions : les livrables U8 de la reprise (`U8-T0r-INV`, `U8-T2r-BUILD`, `U8-T3p`, `U8-T3r-BUILD`, `U8-T4r-BUILD`, `U8-T5ar-VAL`, `U8-T5br-BUILD`, `U8-T5cr-VAL`, `U8-T6-VAL`, `U8-INT`, `fiches\`), `U8-TACHES.md` modifié, et ` M Content/BPs/GI.uasset` (R1) qui ne doit pas partir avec le ticket U8.
|
|||
|
|
|
|||
|
|
Tours : 25 / 40
|
|||
|
|
|
|||
|
|
## Constats
|
|||
|
|
|
|||
|
|
1. **Fait nouveau, important pour la porte** : `GI.uasset` a été réécrit à 21:17 dans l'arbre de travail pendant cette VAL (session STE, copie UE tenue par une autre session). Le candidat U8r correspond au commit `36d1fa4` (arbre propre à T0r, cuisson de 20:00). Rien dans les livrables U8 ne lie l'archive à un hash de contenu cuit, seulement à l'exe (`BUILD-ID.txt` : `commit : 36d1fa4`).
|
|||
|
|
2. **Cohérence des totaux** : 17 744 octets d'écart avec OBB2 = somme exacte des trois fichiers qui diffèrent (exe, `global.ucas`, `LifePlay-Windows.ucas`) ; 2 078 = 2 078 fichiers ; 2 053 fichiers de `Modules` = 1 396 + 626 + 1 + 9 + 21, recoupés par deux commandes (liste par dossier et `find`).
|
|||
|
|
3. **Pièges rencontrés** : `Build.ps1 -FromLog` écrit un résumé sous `etat\<projet>\<lot>\` par défaut (`-EtatDir` le redirige) ; `grep -c` sur plusieurs fichiers filtré par `grep -v ":0"` ne rend rien quand tout vaut 0, d'où un témoin positif explicite pour le critère 5 ; `Get-ChildItem` sans `-Force` manque les fichiers cachés (utilisé avec `-Force`).
|
|||
|
|
4. **Non rejoué** : `LPTestStringCompat` (aucune compilation éditeur dans la fiche) ; cycle de non-régression des correctifs STB / STE (retrait puis remise) ; relecture du contenu cuit des 8 Blueprints ; contrôle en jeu de quoi que ce soit (aucun lancement permis) ; interrogation du serveur git.
|