OPT0-PIPELINE : organisation du pipeline de mesure et de test (axe B, par paliers)
2026-10-15, session Sonnet · OPT0-R, fiche K0. Décision de l'utilisateur pour l'axe B : par paliers, d'abord le banc console + CSV, puis un essai Gauntlet. Source des faits : OPT\BC\ (ids cités). Ce document organise ; il ne livre aucun outil installé ni essai.
Révision du 2026-10-15 (lot PIPE1, fiche PIPE1-IMPL-02) : paliers réalignés sur le barème M0 à M4 adopté par l'utilisateur (« approuve le modèle de xHigh »). Le choix du palier se fait par la grille question × enjeu du skill lp-perf (bareme.md) ; preuves dans etat\AG\PIPE1\PIPE1-REVUE-02-MODELE.md. L'ancien P1 (PresentMon en direct) devient M2 hors ligne ; P2a devient M1 ; P2b (Gauntlet) passe hors grille ; P3 (Tracy) est retiré.
Vue d'ensemble
| Palier |
Outil |
Mesure |
Build |
Statut en 5.8 |
BUILD-GO |
| M0 |
Tools\LogStats.ps1 -Compare -Stats |
compteurs du jeu : F5, DESTROY, à-coups (-LPHitchLog) |
Development |
en service |
non, si la build existe |
| M1 |
CSV Profiler par le lanceur Session C, SummarizeDebugCsv.ps1, PerfReportTool (R4-01 à R4-04, R11-08 à R11-10) |
cadence instrumentée, coût par fil, mémoire LLM |
Development |
éprouvé en 5.5, à éprouver en 5.8 |
oui si la build Development est à refaire |
| M2 |
trace ETW hors ligne puis PresentMon --etl_file (R11-01 à R11-06) |
cadence ressentie de la Shipping |
Shipping |
jamais essayé (B2-ter) |
non (la build existe) |
| M3 |
journal de performance d'AMD Adrenalin |
cadence (grain à relever) |
toutes |
format inconnu |
non |
| M4 |
Unreal Insights : lanceur Session A, export sans interface (R11-11, R4-05 et suivantes) |
quelle fonction, quel Blueprint |
DebugGame ou Development |
éprouvé en 5.5, à éprouver en 5.8 |
oui si la build est à refaire |
| hors grille |
Gauntlet (R3-12, R3-101, R11-17, R11-18) |
lancer, jouer et juger sans humain |
Development |
à éprouver après M1 |
oui (BuildCookRun) |
Pas de build Test : le moteur du lanceur ne l'installe pas (BaseEngine.ini:4002-4007, relevé dans PIPE1-REVUE-02.md F2). Tracy est retiré : Insights (M4) couvre les fonctions.
Règles communes
- Le palier se choisit par la grille de
bareme.md (skill lp-perf) ; la fiche porte la ligne Mesure : … avant tout lancement.
- Verdict = nombres comparés à la base (
bareme.md R8) : pour M0, M1 et M4 (Development), référence O0 (5.5 : médiane 16,7 ms, 159 images > 50 ms, 112 > 100 ms ; critère médiane ≤ 17 ms ± 1, Docs\18_Build_Debug.md:86-87, :128), rebasée sur O0-5.8 après l'épreuve de M1 ; pour M2 et M3 (Shipping), base Shipping de l'alpha établie par l'épreuve de M2, sans laquelle le verdict est « non jugé ». Jamais de comparaison entre les deux. Aucun seuil n'est inventé ici.
- Résultats rangés sous
D:\Game\LifePlay-master 5.8\Docs\Migration\etat\<projet>\<lot>\ ; jamais dans .hyperai\work\.
- Aucune installation par un agent : le téléchargement des outils tiers est un geste de l'utilisateur, avec relevé du MD5.
- Un palier rodé est lancé par la session (script, sortie d'une ligne par passe) ; un agent
lp-perf seulement si le script manque ou échoue ; un agent qui juge est lp-validator (relit les nombres, ne modifie rien).
- Rôle humain : jouer le scénario O0 (une partie par passe), ressenti (caméra, confort), décision, gestes de poste (session élevée, activation d'Adrenalin, téléchargements).
M0 : LogStats
| Rubrique |
Contenu |
| Déclencheur |
non-régression des compteurs du jeu (grille : Q0, ou plancher E1) |
| Entrées |
LifePlay.log de deux parties Development (A et B), même scénario |
| Commandes |
Tools\LogStats.ps1 -Compare <A>,<B> -Stats |
| Sorties |
compteurs normalisés, section trame / F5 / DESTROY / hitch |
| Verdict |
écart des compteurs A/B ; à-coups seulement si la partie a été lancée avec -LPHitchLog |
| Rôle humain |
jouer la partie (souvent la même passe que M1) |
| Emplacement |
etat\OPT\<lot>\logstats\ |
M1 : CSV Profiler (lanceur Session C)
| Rubrique |
Contenu |
| Déclencheur |
cadence instrumentée, coût par fil ou mémoire (Q1, Q3), plancher E2 et E3 |
| Entrées |
build Development (Tools\BuildDebug.ps1 -Config Development), scénario O0 |
| Commandes |
recette csvprofile.md : -csvGpuStats -llm -llmcsv -ExecCmds="csvprofile repeat=20, csvprofile frames=9000", sans -LPHitchLog, jamais -csvCaptureFrames |
| Sorties |
Saved\Profiling\CSV\*.csv, synthèse SummarizeDebugCsv.ps1, rapport PerfReportTool en option |
| Verdict |
médiane FrameTime, images > 50 et > 100 ms, GT ; contre la base O0 |
| Rôle humain |
jouer le scénario O0, une partie par passe |
| Emplacement |
etat\OPT\<lot>\csv\ |
M2 : PresentMon hors ligne
| Rubrique |
Contenu |
| Déclencheur |
cadence ressentie de la Shipping (Q2), plancher E3 |
| Entrées |
build Shipping (alpha), version de PresentMon figée (2.6.0) |
| Commandes |
trace ETW par wpr ou logman (fournisseurs relevés dans le source de PresentMon 2.6.0), puis PresentMon --etl_file ; recette presentmon.md |
| Sorties |
CSV de PresentMon, synthèse Tools\PresentMonStats.py |
| Verdict |
percentiles 95 et 99 de MsBetweenPresents, images au-dessus du seuil de la base Shipping (sans base : « non jugé »), MsGPUBusy contre MsBetweenPresents |
| Rôle humain |
session élevée ; jouer le scénario |
| Réserve |
la capture en direct ne capte rien sur ce poste (0 image en 6 essais, OPT0-TACHES.md:203-218) ; la voie hors ligne n'est pas essayée et peut échouer pour la même cause. Repli : M3 |
| Emplacement |
etat\OPT\<lot>\presentmon\ |
M3 : AMD Adrenalin
Repli de M2. Activation par l'utilisateur ; format et grain à relever sur un vrai fichier avant d'écrire une recette (OPT0-TACHES.md:217).
M4 : Unreal Insights
| Rubrique |
Contenu |
| Déclencheur |
quelle fonction ou quel Blueprint coûte (Q4) ; montée depuis M1 (bareme.md R3) |
| Entrées |
build DebugGame ou Development ; passe courte (4 min au plus), à part de M1 |
| Commandes |
canaux cpu,frame,bookmark,loadtime (sans memory), -statnamedevents, -tracefile ; export UnrealInsights.exe -OpenTraceFile=… -AutoQuit -NoUI -ExecOnAnalysisCompleteCmd="@=export.rsp" (TimingInsights.ExportTimerStatistics), bareme.md § 1.1 |
| Sorties |
.utrace, export CSV des minuteurs d'un fil |
| Verdict |
minuteurs en tête du fil visé ; la trace fausse la cadence, ses temps d'image ne servent pas de verdict |
| Rôle humain |
jouer la passe courte |
| Réserve |
traces longues : 3,3 Go pour 10 min, plus de 50 Go de mémoire à l'analyse (Docs\11_Audit_Optimisation.md:280-281) |
| Emplacement |
etat\OPT\<lot>\insights\ |
Hors grille : Gauntlet (après l'épreuve de M1)
| Rubrique |
Contenu |
| Déclencheur |
M1 stable ; décision de l'utilisateur de rejouer M1 sans humain |
| Entrées |
build empaquetée Development par BuildCookRun (tests compilés hors Test et Shipping, R11-17), nom de test |
| Commandes |
recette gauntlet.md |
| Sorties |
rapport JSON / HTML (-ReportExportPath, R3-02), code de sortie |
| Verdict |
code de sortie + comparaison des CSV de M1 |
| Rôle humain |
décider la fin de l'essai ; lire les rapports de plantage |
| Agents |
lp-impl pour la SPEC et les réglages, lp-builder pour lancer |
| Emplacement |
etat\OPT\<lot>\gauntlet\ |
| Réserve |
un éditeur hôte pilote le client (R11-18, estimé) |
Pilotage par agent (axe B, hors paliers)
Le MCP de l'éditeur et Remote Control (R6) servent à piloter l'éditeur ; Remote Control est désactivé en build empaquetée et s'active par drapeaux. Les paliers M0 à M4 ne dépendent pas du MCP.
Suite
- Épreuve de M1 en 5.8 (fiche à part) : donne la base O0-5.8 et la dispersion du poste, d'où les seuils et le nombre de passes de X2.
- Épreuve de M4 en 5.8 (lanceur Session A, export sans interface).
- Épreuve de M2 (fiche B2-ter, accord de l'utilisateur) ; en cas d'échec, M3.
- Après l'épreuve de M1 seulement : décision sur Gauntlet.
- K1 : versement des enseignements dans les skills, soumis à l'utilisateur.