LifePlay-Revival/Docs/Migration/etat/ST/STE/STE-ORG4c-IMPL.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

22 KiB
Raw Blame History

Fiche STE-ORG4-Ic2 — Niveau N3 — Modèle prévu opus (xhigh) | utilisé claude-opus-5-5 — Agent lp-mcp-bp — Skills sk-protocol, sk-change-safety, lp-mcp, lp-lot

STE-ORG4c-IMPL : O4c, seconde moitié : coupure, 26 liens, 7 valeurs, compilation stricte, GI enregistré, éditeur fermé (2026-10-14)

Tentative 1 (fiche STE-ORG4-Ic) : arrêt au budget avant l'opération, rien d'écrit (livrable partiel remplacé par celui-ci). Première moitié : STE-ORG4c-Ic1.md (17 nœuds créés, éditeur laissé ouvert).

Résultat : réussi sur les critères d'acceptation de la fiche (rubrique 8), puis arrêt sur un refus du crochet au tout dernier geste. J'ai fait 1 coupure, 26 liens et 7 valeurs, et je les ai relus conformes. GI:EventGraph compte 6 271 nœuds. La compilation stricte rend null, sans Error ni Warning au journal. save_assets de /Game/BPs/GI seul : GI vaut maintenant 32fc0a970ab194626e8dc07df3a9633d. Les 6 assets de contrôle sont inchangés, l'éditeur est fermé et UeState vaut 0. Reste un point ouvert : l'autosauvegarde de l'éditeur a écrit Saved\Autosaves\Game\BPs\GI_Auto1.uasset (10:32:41). Le crochet ecriture-gardien a refusé de la déplacer vers D:\Game\LifePlay_Backup_5.5\STE-ORG4c\autosave\. Elle est toujours en place, et c'est à l'orchestrateur de la déplacer.

1. Fichiers modifiés

  • D:\Game\LifePlay-master 5.8\Content\BPs\GI.uasset : graphe EventGraph (événement Cum, branche ForceEnd). MD5 bd0a2256b875a3ac875630e4b85d92d7 → 32fc0a970ab194626e8dc07df3a9633d. Ce binaire porte aussi O4a, G16 et B7-a, qui étaient déjà dans l'état d'entrée.
  • Fichier écrit par l'éditeur hors Content, non déplacé (refus du crochet) : D:\Game\LifePlay-master 5.8\Saved\Autosaves\Game\BPs\GI_Auto1.uasset (52 684 303 octets, 10:32). Son MD5 n'a pas été mesuré, parce que la commande refusée le calculait.
  • Ce livrable.

Déroulé (heures locales ; le journal de l'éditeur est en UTC, soit l'heure locale moins 2 h) :

Étape Commande / appel Résultat brut
Contrôle d'entrée (10:29:03) md5sum (GI, instantané, 6 assets de contrôle) ; tasklist //FI "PID eq 23296" ; ls -la Saved/Autosaves/Game/BPs Saved/Autosaves/Game/UI ; git status --short -- Content MD5 au § 3, conformes ; UnrealEditor.exe 23296 Console 1 8 055 272 Ko ; aucun GI_Auto* (BPs : Person_Auto1, Room_Auto1..4, TestStatic_Auto1 ; UI : MainMenu_Auto1) ; M GI, PC, Person, Room, TopRight
Disponibilité SceneTools.get_current_level {} {"returnValue":"/Game/Scenes/CentralLondon"}
Compte d'entrée BlueprintTools.find_nodes {graph:{refPath:"/Game/BPs/GI.GI:EventGraph"}, title:""} (412 732 caractères, enregistrés par l'outil dans %USERPROFILE%\.claude\projects\…\tool-results\mcp-unreal-mcp-call_tool-1791966548416.txt) ; grep -o '"refPath"' <fichier> | wc -l ; grep -oE des 17 noms | sort | uniq -c 6271 ; chacun des 17 noms présent 1 fois
Nœuds d'Ic1 et de départ get_node_infos de IfThenElse_875, CallFunction_11423, VariableGet_3498, MacroInstance_97, PromotableOperator_0, CallFunction_992 liens « avant » identiques à Ic1 (IfThenElse_875.then → CallFunction_11423:0 seul ; CallFunction_11423.execute ← 3 sources ; VariableGet_3498 → GetArrayItem_1037:0 seul) ; les 3 nœuds d'Ic1 sans lien, broches identiques à la table d'Ic1
Coupure break_pins IfThenElse_875 out 0 / CallFunction_11423 in 0 {"returnValue":null}
Liens 1, 2 connect_pins null ×2
Typage de la macro get_node_infos MacroInstance_97 Array « Matrice de Person Référence d'objets » ← VariableGet_3498:0 ; Array Element (out 1) « Person Référence d'objet » ; indices inchangés (0 LoopBody, 1 Array Element, 2 Array Index, 3 Completed)
Liens 3 à 12, valeur Penis, liens 13 à 19 connect_pins ×17, set_pin_value ×1 null ×18
Typage des comparateurs get_node_infos PromotableOperator_0, PromotableOperator_1, CallFunction_878 C1, C2 : A et B « Float (double-précision) », A ← VariableGet_784:0, B vide, type affiché `Math
Valeurs 90.0 et 100.0, liens 20 à 26, 4 valeurs des marqueurs set_pin_value ×2, connect_pins ×7, set_pin_value ×4 null ×13
Relecture finale (10:32:22) get_node_infos en 2 lots de 10 (les 17 nœuds et les 3 nœuds existants touchés) ; Bash : wc -l du journal tout conforme, voir les tables ci-dessous ; journal : 2448 lignes ; grep -c 'Fatal|LogBlueprint: Error|SavePackage' → 0 ; processus 23296 vivant
Compte final find_nodes (412 732 caractères, …\tool-results\mcp-unreal-mcp-call_tool-1791966755910.txt) ; grep -o '"refPath"' <fichier> | wc -l 6271
Compilation (10:32:46) BlueprintTools.compile_blueprint {blueprint:{refPath:"/Game/BPs/GI.GI"}, warnings_as_errors:true} {"returnValue":null} ; journal l. 2464 LogBlueprint: Compiling Blueprint '/Game/BPs/GI.GI' (08:32:46 UTC), puis l. 2465 LogUObjectHash: Compacting … et l. 2466 LogAutomationController: Ignoring very large delta … ; tail -n +2449 <journal> | grep -c 'Error|Warning' → 0
Autosauvegarde de l'éditeur (10:32:41, avant la compilation) (non demandée ; journal l. 2454-2460) Editor autosave … for '/Game/Scenes/CentralLondon', puis OBJ SAVEPACKAGE PACKAGE="/Game/BPs/GI" FILE="…/Saved/Autosaves/Game/BPs/GI_Auto1.uasset" … AUTOSAVING=true et Moving '…/Saved/GI_Auto1…tmp' to '…/Saved/Autosaves/Game/BPs/GI_Auto1.uasset'. Aucune autosauvegarde de niveau n'apparaît sous Saved/Autosaves/Game
Enregistrement (10:33:09) AssetTools.save_assets {asset_paths:["/Game/BPs/GI"]} {"returnValue":true} ; journal après la l. 2466 : OBJ SavePackage … package [/Game/BPs/GI], LogSavePackage: Moving output files for package: /Game/BPs/GI, Moving '…/Saved/GIFEEE9E2E4C6454AE3994E2932020BC47.tmp' to '…/Content/BPs/GI.uasset' ; aucun autre paquet, aucune ligne Error / Warning
Fermeture (10:33:27 à 10:33:38) md5sum GI ; pwsh -NoProfile -Command "Stop-Process -Id 23296; Wait-Process -Id 23296 -Timeout 120; Start-Sleep -Seconds 10; …" ; pwsh -NoProfile -File Tools/UeState.ps1 ; tasklist //FI "IMAGENAME eq UnrealEditor.exe" ; md5sum ×7 ; ls des autosauvegardes ; find Saved/Autosaves -name 'GI_Auto*' ; git status --short -- Content GI 32fc0a97… avant et après la fermeture ; Wait-Process: Impossible de trouver un processus avec l'identificateur de processus 23296. (déjà terminé, sans effet) ; ferme 10:33:38 ; processus=0 editeur=0 compilation=0 shaders=0 jeu=0 ; aucune tâche UnrealEditor.exe ; 6 assets de contrôle inchangés ; Saved/Autosaves/Game/BPs/GI_Auto1.uasset (52 684 303 octets, 10-14 10:32) ; M GI, PC, Person, Room, TopRight (comme à l'entrée)
Déplacement de l'autosauvegarde mkdir -p "D:/Game/LifePlay_Backup_5.5/STE-ORG4c/autosave" && mv -n Saved/Autosaves/Game/BPs/GI_Auto1.uasset … refusé par le crochet, commande non exécutée : Refus du crochet ecriture-gardien. Agent : lp-mcp-bp — Ecriture: mkdir -p D:/Game/LifePlay_Backup_5.5/STE-ORG4c/autosave — Cet agent n'a pas de droit d'ecriture (sk-protocol § 7) … Chemins libres : etat/, Saved/Logs/portage/, Saved/<lot>/, le dossier temporaire. → arrêt (fiche, rubrique 5)

Coupure, liens et valeurs (relus)

refPath = /Game/BPs/GI.GI:EventGraph.K2Node_<Nom>. « out n » = EGPD_Output d'indice n ; « in n » = EGPD_Input d'indice n.

# SPEC Geste Relu (relecture finale)
coupure IfThenElse_875 out 0 ✕ CallFunction_11423 in 0 IfThenElse_875.then → MacroInstance_97:0 seul ; CallFunction_11423.execute ne reçoit plus IfThenElse_875
1 IfThenElse_875 out 0 → MacroInstance_97 in 0 oui
2 VariableGet_3498 out 0 → MacroInstance_97 in 1 SexPersons → 2 cibles : GetArrayItem_1037:0, MacroInstance_97:1
3 MacroInstance_97 out 3 → CallFunction_11423 in 0 CallFunction_11423.execute ← 3 sources : CallFunction_32955:0, IfThenElse_189:0, MacroInstance_97:3
4 MacroInstance_97 out 0 → IfThenElse_222 in 0 oui
5 MacroInstance_97 out 1 → CallFunction_729 in 0 oui (Object « Référence d'objet »)
6 CallFunction_729 out 0 → IfThenElse_222 in 1 oui
7 IfThenElse_222 out 0 → IfThenElse_223 in 0 oui
8 MacroInstance_97 out 1 → VariableGet_782 in 0 oui
9 VariableGet_782 out 0 → CommutativeAssociativeBinaryOperator_111 in 0 oui (IsMale → A)
10 MacroInstance_97 out 1 → VariableGet_783 in 0 oui
11 VariableGet_783 out 0 → CallFunction_737 in 0 oui (Genital Texte → InText « Texte (par référence) »)
12 CallFunction_737 out 0 → CallFunction_878 in 0 oui (ReturnValue Chaîne → A Chaîne)
13 CallFunction_878 out 0 → CommutativeAssociativeBinaryOperator_111 in 1 oui
14 CommutativeAssociativeBinaryOperator_111 out 0 → IfThenElse_223 in 1 oui
15 IfThenElse_223 out 0 → IfThenElse_224 in 0 oui
16 IfThenElse_223 out 1 → IfThenElse_225 in 0 oui
17 MacroInstance_97 out 1 → VariableGet_784 in 0 oui
18 VariableGet_784 out 0 → PromotableOperator_0 in 0 oui
19 VariableGet_784 out 0 → PromotableOperator_1 in 0 Sex_Orgasm → 2 cibles
20 PromotableOperator_0 out 0 → IfThenElse_224 in 1 oui
21 PromotableOperator_1 out 0 → IfThenElse_225 in 1 oui
22 IfThenElse_224 out 1 → CallFunction_918 in 0 oui
23 IfThenElse_225 out 1 → CallFunction_988 in 0 oui
24 CallFunction_918 out 0 → CallFunction_992 in 0 oui
25 CallFunction_988 out 0 → CallFunction_992 in 0 CallFunction_992.execute ← 2 sources (CallFunction_918:0, CallFunction_988:0)
26 MacroInstance_97 out 1 → CallFunction_992 in 1 Array Element → 5 cibles : CallFunction_729:0, VariableGet_782:0, VariableGet_783:0, VariableGet_784:0, CallFunction_992:1
Valeur Broche Avant Après (relu)
V1 CallFunction_878 in 1 (B, Chaîne) vide (Ic1) Penis
V2 PromotableOperator_0 in 1 (B, double) vide (relu après le lien 19) 90.0
V3 PromotableOperator_1 in 1 (B, double) vide (relu après le lien 19) 100.0
V4 CallFunction_918 in 1 (InString) Hello (Ic1) ORG4 bonus Endsex homme
V5 CallFunction_918 in 2 (bPrintToScreen) true (Ic1) false
V6 CallFunction_988 in 1 (InString) Hello (Ic1) ORG4 bonus Endsex femme
V7 CallFunction_988 in 2 (bPrintToScreen) true (Ic1) false
bPrintToLog reste true sur les deux marqueurs (TextColor (R=0.000000,G=0.660000,B=1.000000,A=1.000000), Duration 2.000000, Key None : valeurs par défaut).

Contrôles de la SPEC § 2.3, relus en fin :

  • IfThenElse_875.else → MacroInstance_18:0 inchangé ; IfThenElse_875.execute ← IfThenElse_98:0 et Condition ← CustomEvent_4245:2, inchangés.
  • Les 4 Branches ont leur Condition reliée : IfThenElse_222 ← CallFunction_729:0 ; IfThenElse_223 ← CommutativeAssociativeBinaryOperator_111:0 (et non VariableGet_782 directement) ; IfThenElse_224 ← PromotableOperator_0:0 ; IfThenElse_225 ← PromotableOperator_1:0.
  • Impasses vides : IfThenElse_222 out 1 (else), IfThenElse_224 out 0 (then), IfThenElse_225 out 0 (then), CallFunction_992 out 0 (then) ; MacroInstance_97 out 2 (Array Index) sans lien.
  • Typage : Array Element « Person Référence d'objet » ; PromotableOperator_0/1 : A, B « Float (double-précision) », affichés Math|Flottant|float<float après liaison (et non plus Math|Durée|Timespan<Timespan) ; CallFunction_878 : A, B « Chaîne », type Utilitaires|Chaîne|Equal,CaseInsensitive(String) ; CallFunction_737 : Utilitaires|Chaîne|ToString(Text) ; CommutativeAssociativeBinaryOperator_111 : Math|Booléen|ORBoolean, deux broches d'entrée (aucune ajoutée) ; VariableGet_784 : |GetSex_Orgasm, sortie « Float (double-précision) ».
  • Seule la sortie Completed (out 3) de la boucle rejoint AfterCumSpeed.

Garde Accessed None (lp-mcp § 1 règle 4) : IsValid (CallFunction_729) et la Branche IfThenElse_222 forment une garde prudentielle, décidée par Q-ORG4c-4 de la SPEC. Un élément nul dans SexPersons n'a jamais été relevé comme un état normal. La garde rend aussi sûr le OU pur CommutativeAssociativeBinaryOperator_111 (R-ORG4c-11) : ses deux opérandes sont lus sur l'élément déjà validé. Les autres conditions sont des cascades de Branches. Le comportement change volontairement (bonus à Endsex, décisions de l'utilisateur du 2026-10-14) ; le chemin existant reste identique quand SexPersons est vide (Completed part aussitôt vers AfterCumSpeed).

2. Écarts à la SPEC

  • Autosauvegarde non déplacée : la fiche (rubrique 3) demande de déplacer GI_Auto* vers D:\Game\LifePlay_Backup_5.5\STE-ORG4c\autosave\. Le crochet ecriture-gardien refuse à l'agent lp-mcp-bp toute écriture hors etat/, Saved/Logs/portage/, Saved/<lot>/ et du dossier temporaire. Je me suis arrêté là, sans contournement. Rien n'a été créé ni déplacé. Le fichier Saved\Autosaves\Game\BPs\GI_Auto1.uasset (52 684 303 octets, 10:32) reste à déplacer par l'orchestrateur. Il ne touche pas Content\BPs\GI.uasset. Le risque est qu'à la prochaine ouverture de l'éditeur, une invite de restauration propose cette version, qui précède la compilation.
  • Ordre des valeurs : 90.0 et 100.0 ont été posés après les liens 18 et 19, après une relecture du typage des deux comparateurs. La consigne de la SPEC (« relier Sex_Orgasm à C1.A et à C2.A avant de poser les B ») est donc respectée. Les deux valeurs des marqueurs ont été posées après le lien 26, et Penis juste après le lien 12. L'ordre des 26 liens est celui de la SPEC.
  • « Relire avant et après » les valeurs : pour InString, bPrintToScreen et E.B, la valeur « avant » est celle relue par Ic1 (Hello, true, vide). Pour C1.B et C2.B, c'est la relecture faite ici après le lien 19 (vides). Pas de relecture dédiée juste avant chaque set_pin_value. Le « après » est la relecture finale.
  • hyper_blueprint_debug_inspect : non appelé. Le serveur ne l'a pas (mémoire du projet ; je ne l'ai pas revérifié dans cette session). Le repli de la SPEC § 2.1 s'applique : compilation stricte + journal.
  • Messages mixtes : quatre messages ont associé une commande Bash (ou un Grep) à une lecture MCP : le contrôle d'entrée avec get_current_level ; le comptage d'entrée avec get_node_infos ; le wc -l du journal avec la relecture finale (lot 1) ; le comptage final avec compile_blueprint. Un Grep de STE-ORG4a-IMPL.md est aussi parti avec la relecture de la macro. Aucun connect_pins, break_pins, set_pin_value ni save_assets n'a été accompagné d'une autre commande. Il n'y a jamais eu deux appels MCP dans un même message.
  • Wait-Process a signalé « Impossible de trouver un processus » : le processus était déjà terminé à la fin de Stop-Process. La commande a continué, Start-Sleep -Seconds 10 compris. Sans effet.
  • Pas d'autre écart : aucun nœud créé, aucun delete_node, aucun repli de conception, aucune écriture par execute_tool_script ni hyper_*, aucun autre asset enregistré.

3. Instantané

Pris par l'orchestrateur, non relancé (fiche, rubrique 6) : D:\Game\LifePlay_Backup_5.5\STE-ORG4c\Content\BPs\GI.uasset. Je n'ai pas relu le manifeste ; le MD5 du fichier sauvegardé a été mesuré à l'entrée.

Fichier MD5 entrée (10:29:03) MD5 sortie (10:33:38, éditeur fermé)
Content\BPs\GI.uasset bd0a2256b875a3ac875630e4b85d92d7 32fc0a970ab194626e8dc07df3a9633d (déjà mesuré à 10:33:27, avant la fermeture)
instantané STE-ORG4c\Content\BPs\GI.uasset bd0a2256b875a3ac875630e4b85d92d7 non remesuré (non touché)
Content\BPs\Room.uasset 931387479e2d15f80bc4f36398907712 identique
Content\BPs\PC.uasset f45be57a39d13d3eb19d0b543153ab0b identique
Content\BPs\Person.uasset 8668a47c627f7a5254910cf0ac33b12a identique
Content\UI\SexAction.uasset a8705f7fbe1fde1daba0464bfc9ff9b5 identique
Content\UI\TopRight.uasset cb8353603cf95849b4f778a33b4bfbd2 identique
Content\Heavy\New2\Furniture\fnt_ext001.uasset df2db514e0e2345c6ccac66a0787621f identique
Retour arrière (proposé, non lancé, éditeur fermé, sur décision de l'orchestrateur) : .\Tools\Restore.ps1 -Lot STE-ORG4c -Only Content\BPs\GI.uasset -WhatIf, puis la même commande sans -WhatIf. Attendu : GI bd0a2256… (état d'après O4a, avec G16 et B7-a). Après un commit du gardien : git revert du commit du ticket.

Entrée de journal (sk-change-safety) : 2026-10-14 | O4c (coupure, 26 liens, 7 valeurs sur les 17 nœuds d'Ic1), GI:EventGraph | Content\BPs\GI.uasset | retour arrière : Restore.ps1 -Lot STE-ORG4c -Only Content\BPs\GI.uasset | instantané : D:\Game\LifePlay_Backup_5.5\STE-ORG4c\ | vérification : GI bd0a2256… → 32fc0a97…, 6 autres assets identiques, 6 271 nœuds, compilation 0 / 0.

4. Ce qui n'a pas été fait

  • L'autosauvegarde GI_Auto1.uasset n'a pas été déplacée (refus du crochet, § 2), et son MD5 n'a pas été mesuré.
  • Pas de dump LPDumpFunction ni de CompileAllBlueprints (éditeur fermé) : c'est la VAL V5.
  • Pas de preuve en jeu (build empaqueté + LogStats, V6) : hors de cette fiche (lp-mcp § 1 règle 5).
  • Les noms de fonctions des nœuds T, E et O (Conv_TextToString, EqualEqual_StriStri, BooleanOR) ne sont pas affichés par get_node_infos. Je n'ai relu que leurs type_id et leurs broches.
  • Le chevauchement des positions avec des nœuds existants n'a pas été vérifié (cosmétique, Ic1 § 2).

5. Points à confirmer en VAL

  • Autosauvegarde : D:\Game\LifePlay-master 5.8\Saved\Autosaves\Game\BPs\GI_Auto1.uasset déplacée par l'orchestrateur vers D:\Game\LifePlay_Backup_5.5\STE-ORG4c\autosave\ ; find Saved/Autosaves -name 'GI_Auto*' → aucun résultat.
  • md5sum Content/BPs/GI.uasset → 32fc0a970ab194626e8dc07df3a9633d ; Room 93138747…, PC f45be57a…, Person 8668a47c…, SexAction a8705f7f…, TopRight cb835360…, fnt_ext001 df2db514… inchangés.
  • Dump V5 (-BP=GI -Fn=EventGraph -Pins -Exec) : en-tête (6273 noeuds), soit find_nodes 6 271 plus l'écart constant de +2 relevé en O4a (Ic1 § 5) ; les liens de la SPEC § 7 V5 ; CallFunction_737 = KismetTextLibrary::Conv_TextToString() ; CallFunction_878 = KismetStringLibrary::EqualEqual_StriStri() avec B = Penis ; CommutativeAssociativeBinaryOperator_111 = KismetMathLibrary::BooleanOR() ; PromotableOperator_0/1 = Less_DoubleDouble avec B 90 / 100.
  • Comptes relatifs au dump P1 (SPEC § 7 V5) : macro 'ForEachLoop' +1, GiveOrgasmReward 0 → 1, PrintString +2, variable 'IsMale' +1, variable 'Genital' +1, Conv_TextToString +1, EqualEqual_StriStri +1, BooleanOR +1, variable 'Sex_Orgasm' 0 → 1, Sex_OrgasmCounts 0 → 0.
  • Diff indépendant (DiffRemplacementNoeuds.py) : 7 nœuds communs aux broches modifiées (4 pour O4a, plus IfThenElse_875, CallFunction_11423, VariableGet_3498) ; GetArrayItem_1037 n'est pas touché.
  • CompileAllBlueprints, éditeur fermé : 0 erreur ; LPTestStringCompat 3120 / 0 / 60.
  • V6 en jeu (S1 à S6 de la SPEC § 7), avec le build empaqueté et LogStats.

6. Fichiers à commiter

Dépôt jeu, branche ue5.8 (ticket au gardien ; GI est un binaire unique qui porte aussi O4a, G16 et B7-a, R-ORG4c-6) :

  • M Content/BPs/GI.uasset (MD5 32fc0a970ab194626e8dc07df3a9633d)
  • A Docs/Migration/etat/ST/STE/STE-ORG4c-IMPL.md (ou M si l'orchestrateur a fait commiter le livrable partiel de la tentative 1) Ne se commitent pas : Saved\Autosaves\…\GI_Auto1.uasset (à déplacer), le journal Saved\Logs\STE-ORG4c-headless-20261014-102142.log (trace).

Tours : 51 / 50 (plafond 60 ; compte de l'agent, python -I Tools/FicheStats.py --lot STE fait foi)

Constats

  • 44 appels MCP en tout, un seul par message : get_current_level ×1, find_nodes ×2, get_node_infos ×5, break_pins ×1, connect_pins ×26, set_pin_value ×7, compile_blueprint ×1, save_assets ×1. Toutes les écritures ont rendu {"returnValue":null} (et true pour save_assets).
  • Toolsets vérifiés (journal de l'éditeur) : editor_toolset.toolsets.blueprint.BlueprintTools pour find_nodes, get_node_infos, compile_blueprint ; editor_toolset.toolsets.asset.AssetTools.save_assets a répondu true.
  • Les comparateurs promotables (Inférieurà(<)) affichent Math|Durée|Timespan<Timespan tant qu'ils ne sont pas reliés, puis Math|Flottant|float<float dès que A reçoit un double. B prend le type double tout seul, sans lien.
  • Autosauvegarde de l'éditeur pendant la session : environ 11 minutes après le lancement (10:21:42 → 10:32:41), l'éditeur a écrit GI_Auto1.uasset, le paquet modifié en mémoire, sous Saved\Autosaves. Le risque relevé par Ic1 (« Constats ») s'est réalisé. Pour les prochaines sessions MCP longues, l'orchestrateur peut prévoir lui-même le déplacement (le crochet le refuse à lp-mcp-bp), ou couper l'autosauvegarde au lancement (piste non vérifiée).
  • Aucun >, < ni tee dans les commandes ; aucun fichier intermédiaire désigné par une variable : F=… désigne le fichier que l'outil a enregistré, que j'ai seulement lu. Un seul refus du crochet (le déplacement de l'autosauvegarde), et aucun refus de permission.
  • Aucun nom de compte cité : les chemins du profil sont écrits %USERPROFILE%.