22 KiB
22 KiB
| 1 | id | enonce | doc_ligne | categorie | statut |
|---|---|---|---|---|---|
| 2 | C2-001 | Une coiffure doit etre un SkeletalMesh dont les os portent les noms Genesis 8, avec poids repartis sur tete/cou/clavicules/poitrine, materiaux enfants de DazHair, nom unique et declaration dans un .lphair sous Modules | 13 §1 l.11-20 | PROD | en vigueur |
| 3 | C2-002 | Convertir une coiffure statique en suivant l'ordre HairImportFbx.py, commandlet LPHairFromStaticMesh (toujours un essai -DryRun avant, refus d'ecraser un asset), HairMaterials.py, deplacement du dossier _Work vers la sauvegarde, puis .lphair et BuildCollections.py | 13 §3 l.63-143 | OPE | en vigueur |
| 4 | C2-003 | Controler le journal LogLPHairFromStatic a l'essai a blanc: echelle entre 0,8 et 1,5, os head sans correction, largeur de coiffure 25 a 32 cm, sinon ajuster -Scale/-OffsetZ/-OffsetY/-Margin | 13 §3 l.81-103 | OPE | en vigueur |
| 5 | C2-004 | Avant d'importer une coiffure verifier la licence et ne retenir que les licences redistribuables (CC BY, CC0), la licence standard Fab est exclue, et ajouter l'attribution dans Licenses/Free_3D_Models_Credits.txt | 13 §3 l.51-52 et §7 l.237-238 | PROD | en vigueur |
| 6 | C2-005 | Telecharger une archive seulement avec l'accord de l'utilisateur, la copier dans la sauvegarde du lot et travailler sur des copies aux noms sans espaces (arguments Python separes par espaces) | 13 §3 l.52-55 | OPE | en vigueur |
| 7 | C2-006 | Ne rien supprimer sans copie: les dossiers de travail et assets retires sont deplaces vers D:\Game\LifePlay_Backup_5.5\<lot>, le retour arriere d'une coiffure consiste a retirer le .lphair puis deplacer les assets | 13 §3 l.122-123 et §6 l.242-243 | OPE | en vigueur |
| 8 | C2-007 | Apres ajout d'une coiffure faire un build Development dans un nouveau dossier d'archive (la mise en place avec -iterate ne retire pas les fichiers supprimes) et verifier la ligne de journal Coiffures : <Nom> ajoutee | 13 §3 l.146-151 | OPE | en vigueur |
| 9 | C2-008 | Le controle en jeu d'une coiffure est fait par l'utilisateur (liste du bon sexe, face, profil, couleur/epaisseur, mouvement, nouvelle partie et Continue) avant validation | 13 §3 l.153-162 | PROD | en vigueur |
| 10 | C2-009 | Le lot de coiffure se cloture par entree CHG, commit et tags <lot>-avant / <lot>-apres / <lot>-valide faits par l'agent | 13 §3 l.60 et l.164 | DOC | remplacée par skill sk-repo (commits et tags par le seul gardien lp-gardien) |
| 11 | C2-010 | Pour un lot de coiffures utiliser Tools/HairPipeline.ps1 -Config Tools/hairs/<lot>.json en deux temps (-Step Inspect puis lecture du rapport puis -Step Apply), champs auto recalcules mais valeurs manuelles jamais ecrasees, coiffure sautee si echelle hors 0,6-1,8, relancable apres interruption | 13 §7 l.191-230 | OPE | en vigueur |
| 12 | C2-011 | Les scripts de coiffure, ModSources et AnimSources vivent dans le depot addon LifePlay-Sandbox et se lancent depuis l'addon | 13 en-tete l.3 | OPE | en vigueur |
| 13 | C2-012 | La version affichee suit annee.mois.majeur.mineur (depuis la V1.5) lue dans ProjectVersion de Config/DefaultGame.ini par LPVersionSubsystem, traitee comme du texte (jamais comparee numeriquement) et mise a jour a chaque publication | 14 §2 l.22-29 | PROD | contradictoire avec README racine (CHG-361, version alpha 2026.10.2.1a avec suffixe non decrit) |
| 14 | C2-013 | Modifier un widget via la commandlet LPEditWidget pilotee par une spec JSON versionnee (Tools/ui/*.json) avec valeur attendue avant, essai a blanc puis compilation avant sauvegarde | 14 §2 l.30-35 | OPE | en vigueur |
| 15 | C2-014 | Sauvegarder les assets modifies dans D:\Game\LifePlay_Backup_5.5\<lot> et revenir en arriere par Tools\Restore.ps1 -Lot <lot> | 14 §3 l.46 | OPE | en vigueur |
| 16 | C2-015 | Build Shipping V1.4: ne garder que vin_Base, lp_Revival et vin_VanillaRealistic et livrer les autres modules dans une archive Optional_Modules via Tools/SplitModules.ps1 -Config Tools/modules/V1.4.json | 15 §1 l.6-14 et §3 l.33-39 | PROD | remplacée par 15 §5 l.46-65 (lp_Revival retire du jeu de base par 16 §8 l.196) |
| 17 | C2-016 | Les Blueprints ne lisent aucun fichier de module optionnel: ils testent seulement GI.IsModEnabled(id) et un module absent de GI.ModEnableds est inactif, removeDeletedMods retire les modules sans dossier | 15 §2 l.20-27 | PROD | en vigueur |
| 18 | C2-017 | SplitModules.ps1 ne supprime rien (deplace vers <build>_modules_optionnels), ajoute une notice LISEZMOI_README, cree l'archive, la teste avec 7-Zip et compare son contenu aux fichiers deplaces | 15 §3 l.37-39 | OPE | en vigueur |
| 19 | C2-018 | Depuis la publication suivant la V1.4 le build ne garde que vin_Base et vin_VanillaRealistic en texte, chaque autre mod a son zip <module>-for-LifePlay-<version>.zip avec README bilingue, et INDEX.txt (nom, archive, taille, SHA-256) alimente le message de diffusion | 15 §5 l.46-54 | PROD | en vigueur |
| 20 | C2-019 | Les modules vin_* optionnels forment un seul zip vin_Modules-for-LifePlay-<version>.zip (groupes dans Tools/modules/next.json), les autres mods gardent chacun leur zip | 15 §5 l.60-66 | PROD | en vigueur |
| 21 | C2-020 | Les modules sont diffuses sur Discord dans un premier temps, sans annonce sur GitHub | 15 §5 l.55 | PROD | en vigueur |
| 22 | C2-021 | SplitModules.ps1 refuse un build contenant un mod d'assets installe (LifePlay/Mods/<mod>): utiliser un build neuf | 15 §5 l.56-58 | OPE | en vigueur |
| 23 | C2-022 | Dans un jeu empaque le moteur lit toujours <jeu>/Mods: chaque Mods/<Nom>/<Nom>.uplugin devient un plugin Mod active par defaut, ses paks IoStore sont montes au demarrage (assets sous /<Nom>/), non signes, avec le registre d'assets du mod | 16 §1 l.13-19 | PROD | en vigueur |
| 24 | C2-023 | Un mod d'assets a deux moities au meme identifiant: plugin de contenu Mods/<Nom> (assets cuits) et module texte Content/Modules/<Nom>/<Nom>.lpmod, distribue en une archive a extraire dans le dossier du jeu | 16 §2 l.25-35 | PROD | en vigueur |
| 25 | C2-024 | Cuire un mod seul en DLC contre la version de reference (RunUAT BuildCookRun avec -dlcname et -basedonreleaseversion), avec le meme moteur que le jeu publie | 16 §2 l.37-43 et §5 l.88-89 | OPE | en vigueur |
| 26 | C2-025 | Chaque publication produit Releases/<version>/Windows (-createreleaseversion, environ 1,3 Go, hors git) livree avec les sources, et aucun build destine a la publication ne se fait sans recreer cette reference | 16 §2 l.49-51 et §7 l.166-170 | PROD | en vigueur |
| 27 | C2-026 | Les assets de base references par les mods (squelettes Genesis, materiau DazHair) ne sont plus renommes ni deplaces, un mod declare la version du jeu visee | 16 §3 l.60 | PROD | en vigueur |
| 28 | C2-027 | Depuis PowerShell passer -createreleaseversion=<version> par cmd /c (sinon la version est coupee a chaque point) et ecrire les commandes aux guillemets imbriques dans un fichier .cmd | 16 §5 l.94-96 et §6 l.153-154 | OPE | en vigueur |
| 29 | C2-028 | Le dossier <projet>/Mods reste vide: Tools/ModSource.ps1 y deplace un mod le temps d'un travail puis le remet dans ModSources, et ne jamais builder ni commiter avec Mods non vide | 16 §6 l.125-127 et 24 l.229 | OPE | en vigueur |
| 30 | C2-029 | Fabriquer un mod de coiffures par HairPipeline.ps1 -Config Tools\mods\<Nom>.json (Inspect puis Apply) puis Tools\BuildMod.ps1 -Name <Nom> -Version <jeu>, qui controle plugin, module, reference, absence d'autre plugin dans Mods, conteneur et teste l'archive | 16 §6 l.129-141 | OPE | en vigueur |
| 31 | C2-030 | Le jeu lit les .lpmod par position pour les lignes 1 a 3 (MODULE_UNIQUEID, NAME, AUTHOR), les cles ajoutees apres sont sans risque, ULPModInfoSubsystem avertit si MODULE_GAME_VERSION differe de ProjectVersion, BuildMod refuse un mod payant a licence non commerciale | 16 §8 l.176-188 | PROD | en vigueur |
| 32 | C2-031 | Le guide des moddeurs (Creating_Asset_Mods.md, explanation.lphair) et les outils NewMod.ps1 / EditMod.ps1 sont decrits dans Docs/Modding du jeu | 16 §7 l.158-165 | DOC | remplacée par 24 §Points ouverts l.69 (guide deplace dans LifePlay-Sandbox\Docs) |
| 33 | C2-032 | Le gestionnaire de mods accessible depuis l'ecran titre s'ajoute par la commandlet LPTitleModManager (essai -DryRun puis application, Blueprint deja traite saute), sans modifier le Blueprint GI | 17 §2 l.19-38 | PROD | remplacée par 27_Plan_Migration_UE58 (17 declare l'historique 4.27 non mis a jour, l.3) |
| 34 | C2-033 | La fermeture du gestionnaire depuis l'ecran titre n'enregistre que ModEnableds dans GameSettings.sav via ULPModSettingsLibrary::SaveModSelection, jamais GI.SaveSettings(slot) hors partie | 17 §2 l.30-33 et §3 l.45-46 | PROD | en vigueur |
| 35 | C2-034 | Deux builds de mesure: Development pour les chiffres comparables (baseline, non-regression) et DebugGame pour la plongee (ratios, piles), a ne reconstruire que si checks, PDB ou outil l'exigent | 18 §1 l.8-17 | OPE | en vigueur |
| 36 | C2-035 | Compiler sans l'addon est possible (avertissement AdditionalPluginDirectory not found) mais UBT reutilise alors un Makefile.bin sans les modules de l'addon: deplacer (pas supprimer) ces Makefile.bin avant de recompiler avec l'addon | 18 §1 l.19 | OPE | en vigueur |
| 37 | C2-036 | Empaqueter avec Tools\BuildDebug.ps1 [-Config DebugGame|Development] sans jamais -nodebuginfo, cuisson -pak -iostore -compressed, PDB recopie et lanceurs Tools/debug/*.bat copies a cote de l'exe, journal sous Saved\Logs\portage | 18 §2 l.23-36 | OPE | en vigueur |
| 38 | C2-037 | Sessions de capture: A (DebugGame, Insights, a-coups), B (DebugGame, memoire/physique), C (Development, CSV+LLM, non-regression), lancees par les bat Tools/debug sur un scenario unique d'environ 15 min | 18 §3 l.38-64 | OPE | en vigueur |
| 39 | C2-038 | Ne jamais passer -csvCaptureFrames (plantage RHI): demarrer le CSV par -ExecCmds, et mesurer un jeu empaquete et non UnrealEditor -game | 18 §3 l.66-69 | OPE | en vigueur |
| 40 | C2-039 | Collecter les preuves par Tools\CollectDebugArtifacts.ps1 -Lot -BuildDir -Session vers LifePlay_Backup_5.5\<lot>\Session<X> (echoue si rien copie) et resumer le CSV par SummarizeDebugCsv.ps1 | 18 §4 l.71-87 | OPE | en vigueur |
| 41 | C2-040 | Options runtime non-Shipping de ULPDebugSubsystem: -LPHitchLog, -LPHitchMs, -LPCollisionLog et commandes console LifePlay.Bookmark/MemSnapshot/CollisionDump/HitchSummary, tout derriere #if !UE_BUILD_SHIPPING (cout nul en Shipping) | 18 §5 l.89-103 et 19 §2 l.86 | OPE | en vigueur |
| 42 | C2-041 | Gates de la session C: au moins 9000 images, LLM, mediane <= 17 ms (plus ou moins 1) ou ecart explique, jouer sans -LPHitchLog | 18 §6 l.118-128 | OPE | en vigueur |
| 43 | C2-042 | Priorite d'outils: Unreal Insights, CSV/LLM, ChaosVD puis RenderDoc/PIX/Radeon, et Tracy, Optick, Superluminal, ASAN sont ecartes | 18 §7 l.144-145 et 19 §2 l.152-153 | OPE | contradictoire avec skill lp-perf (recettes PresentMon, CSV Profiler, Gauntlet et Tracy a la demande) |
| 44 | C2-043 | Le skill agent de la mesure est .cursor/skills/lifeplay-debug-build, a lire avant tout code et a ne pas contredire sans mise a jour du skill et du plan | 18 l.5 et 19 §3 l.167-174 | DOC | remplacée par skill lp-perf et skill lp-build (skills lp-* du projet) |
| 45 | C2-044 | Ne pas ouvrir de lot d'optimisation tant que les mesures de a-coups (I4) et de memoire (I5) n'ont pas leurs gates verts, et ne pas melanger correction et mesure dans le meme lot | 19 §1 l.47 et l.29-37 | ORG | en vigueur |
| 46 | C2-045 | Regle de sortie d'iteration: on ne passe a l'etape suivante que si tous les criteres mesurables sont verts, code sans artefact = rouge, puis corriger et re-mesurer sans sauter d'etape | 19 §4 l.180-184 | ORG | en vigueur |
| 47 | C2-046 | Go/No-Go a chaque gate avec criteres verts, un sous-lot = un objectif mesure, commit seulement si demande | 19 §1 l.74-77 | ORG | remplacée par skill sk-repo (commit uniquement par le gardien sur ticket) |
| 48 | C2-047 | Identifier le squelette d'un pack d'animations par LPAnimIdentify contre Tools/anim/profiles/*.json (un seul profil, au moins 95 pour cent des os obligatoires), a egalite le profil le plus complet l'emporte, methode ue4/ue5/genesis_direct choisie par -Methode=<id ou auto> | 20 §1 l.17 et §2 l.61 et §3 l.76 | OPE | en vigueur |
| 49 | C2-048 | AnimPipeline.ps1 (appele par BuildMod.ps1 -Anim <pack>) enchaine inventaire, import, identification, pose T, conversion, evaluation, catalogue, livraison, ecrit un rapport JSON par etape, s'arrete au premier controle en echec, reprend par -From et deplace l'ancien resultat vers precedent_<date> | 20 §3 l.67-83 | OPE | en vigueur |
| 50 | C2-049 | Un pack d'animations se declare dans AnimSources/<pack>/pack.json (origine, licence compatible, fichiers, SHA-256) avant tout import | 20 §3 l.74 | PROD | en vigueur |
| 51 | C2-050 | Chaque clip est classe accepte / a revoir / rejete selon les seuils de controle (ecart formule 1 pour cent, penetration 1 cm, sol 3 cm, continuite 10 degres...), un clip rejete bloque la livraison sauf exclusion dans pack.json | 20 §3 l.79 et §4 l.95-103 | PROD | en vigueur |
| 52 | C2-051 | Les clips livres sont renommes <cle>_F / <cle>_M sous /<Mod>/Anims (cle en minuscules prefixee, coupure au dernier _), appeles par ANIMATION: <cle> ou Actor.animate(<cle>) via Room.Dailies et ULPModDailiesSubsystem, avec essai de chargement en jeu | 20 §1 l.23 et §3 l.81-85 | PROD | en vigueur |
| 53 | C2-052 | Le catalogue d'animations (catalogue.json, catalogue.html, vignettes) est regenere a chaque passage et le pilote refuse de livrer un mod dont le catalogue n'a pas ete produit dans le meme passage | 20 §5 l.111-149 | PROD | en vigueur |
| 54 | C2-053 | Chaque lot d'animations suit le protocole 10: instantane, entree CHG, retour arriere par Restore.ps1 | 20 §6 l.165 | DOC | en vigueur |
| 55 | C2-054 | Tous les chemins d'assets et fichiers du sandbox passent par Config/LPSandbox.ini lu par FLPSandboxConfig::Get avec repli sur le litteral historique, le fichier vivant dans l'addon depuis DC3 | 21 §Contrat l.57-69 | PROD | en vigueur |
| 56 | C2-055 | LPAnimMeasure ne dépend ni de LifePlay ni de LifePlayEditorTools (graphe acyclique), la configuration lui est poussee par un setter, jamais l'inverse | 21 §Module l.98 et l.109 | PROD | en vigueur |
| 57 | C2-056 | Le jeu et l'addon sont deux depots siblings relies par AdditionalPluginDirectories dans LifePlay.uproject, sans submodule, et le jeu consomme un commit precis de l'addon | 21 §Strategie git l.117-127 | OPE | en vigueur |
| 58 | C2-057 | Le pin addon est consigne a la main dans le doc 21 et le README de l'addon a chaque evolution (pin 5.5 f73e017) | 21 §Strategie git l.127 | DOC | remplacée par 21 §Strategie git l.136 (copie 5.8, branche ue5.8) et skill lp-repo (pin tenu par le gardien) |
| 59 | C2-058 | La copie 5.8 suit la branche ue5.8 de l'addon via un worktree D:\Game\LifePlay-Sandbox-5.8 declare dans son LifePlay.uproject | 21 §Strategie git l.136 | OPE | en vigueur |
| 60 | C2-059 | Tout changement de geometrie du couple se fait dans LPCoupleSim cote addon puis bump du pin et le jeu ne reintroduit pas de copie locale | 21 §CoupleBox l.157 | PROD | contradictoire avec 21 §Module l.79 et 24 l.57 (LPCoupleSim rapatrie dans le plugin du jeu LPAnimCore par DC1) |
| 61 | C2-060 | LPSandbox est limite a l'editeur (TargetAllowList Editor) pour que l'addon prive ne finisse jamais dans un Shipping publie | 21 §Acceptation l.226 | PROD | en vigueur |
| 62 | C2-061 | Cuire sans -iterate tout build de reference ou de publication (cuisson complete), un build de test ne s'ecrit jamais dans un dossier d'archive existant, et compiler avec -NoUBA si erreurs internes C1001/C2206 | 21 §Acceptation l.212 et l.214 | OPE | en vigueur |
| 63 | C2-062 | Archiver les PDB du Shipping dans un dossier par numero de build a cote de Releases, avec BUILD-ID.txt (SHA-256 de l'exe) | 21 §Acceptation l.224 | OPE | en vigueur |
| 64 | C2-063 | Content/Modules/.git reste hors de l'arbre (D:\Game\LifePlay_ModulesGit) et chaque build candidat passe Tools\CheckPackage.ps1 (0 ligne Modules/.git au manifeste NonUFS) | 21 §Acceptation l.227 | OPE | en vigueur |
| 65 | C2-064 | Une copie de sauvegarde de test comprend Saved\SaveGames et Content\Saves, et le Shipping utilise %LOCALAPPDATA%\LifePlay\Saved (decision D4 de l'utilisateur) | 21 §Acceptation l.213 et l.225 | PROD | en vigueur |
| 66 | C2-065 | Les scripts d'etat ecrivent leurs livrables par Tools/EtatDir.ps1 dans etat/<projet>/<lot>, et chaque reste a faire entre dans la liste unique des reports du doc 21 avec un lot proprietaire | 21 §Acceptation l.215 et 24 l.198 | DOC | en vigueur |
| 67 | C2-066 | Politique de modeles par palier (M0 composer-2.5-fast, M2 sonnet-5-5-high, M3 opus thinking, M4 opus medium): palier bas pour VAL a checklist, M2 pour toute operation destructive ou inter-depots, M3 pour IMPL qui change un comportement, traçabilite Modele prevu | utilise (sinon FAIL-TRACE) | 22 §9 l.202-208 | ORG | remplacée par skill sk-orchestrate (niveaux N0-N5) et contradictoire avec 24 §Matrice l.124-131 (haiku/sonnet/opus) |
| 68 | C2-067 | Cloture git par lot avec un proprietaire: la fiche IMPL finit par un build vert, gate A-INT avec commit addon, bump du pin, commit jeu et identite git identique dans les deux depots | 22 §9 l.209-213 | ORG | remplacée par skill sk-repo (gardien unique) |
| 69 | C2-068 | Separer VAL et DOC (la VAL est en lecture seule sur les docs d'acceptation), passer par une SPEC avant toute decision d'architecture et tenir un registre unique des reports | 22 §9 l.214-217 et 24 l.197-198 | ORG | en vigueur |
| 70 | C2-069 | Mode multi-agents: GO conditionnel pour migrations a risque (extraction de code, refonte partagee), NO-GO pour lots simples (au plus un fichier de config ou doc, sans C++): un agent plus une VAL basse | 22 §8 l.193-196 | ORG | en vigueur |
| 71 | C2-070 | Un mod est un module texte plus un plugin de contenu au meme identifiant (MODULE_UNIQUEID = nom du plugin = point de montage /<id>/), desinstalle en supprimant Content/Modules/<id> et Mods/<id> | 23 §1 l.17-30 et §2.2 l.67-69 | PROD | en vigueur |
| 72 | C2-071 | Chaine de fabrication d'un mod: Tools/NewMod.ps1, EditMod.ps1 / ModSource.ps1, HairPipeline.ps1 ou anim/AnimPipeline.ps1, puis BuildMod.ps1 -Name <id> -Version <jeu> qui refuse un autre plugin dans Mods, une entree hors Mods/<id>/ ou une licence non commerciale sur un mod payant | 23 §2.1 l.50-57 | OPE | en vigueur |
| 73 | C2-072 | Un mod est cuit contre une version de reference precise du jeu et ne doit referencer aucun contenu /Engine/ non cuit par le jeu | 23 §2.1 l.59-63 | PROD | en vigueur |
| 74 | C2-073 | La case du gestionnaire n'agit que sur les textes (non lus par PopulateRaws), les coiffures (filtrees) et l'avertissement de version: les animations sont toujours ajoutees a Room.Dailies et le plugin Unreal reste monte (ecart E1) | 23 §2.4 l.93-101 | PROD | en vigueur |
| 75 | C2-074 | Pour les fichiers texte le premier lu gagne par nom de fichier, donc le module le plus bas dans la liste affichee l'emporte, ordre sans effet sur animations et assets, vin_Base verrouille en dur dans UI/ModuleTick | 23 §2.4 l.111-124 | PROD | en vigueur |
| 76 | C2-075 | Ne jamais declarer de dependance obligatoire entre mods dans le .uplugin (le jeu ne demarrerait pas), CanContainContent est indispensable, un mod Shipping n'apporte aucun code, et MODULE_REQUIREMENTS n'est pas verifie | 23 §3.1 l.326-330 et §3.3 l.364-365 | PROD | en vigueur |
| 77 | C2-076 | Les trois premieres lignes du .lpmod sont lues par position, les autres cles (VERSION, LICENSE, PRICE, PACKAGED, GAME_VERSION) ne sont qu'affichees, et NewMod.ps1 / BuildMod.ps1 les ecrivent | 23 §3.2 l.337-352 | PROD | en vigueur |
| 78 | C2-077 | Les descripteurs .uplugin, .lpmod, pack.json et README dupliquent titre, auteur et licence sans source de verite designee: BuildMod recopie version et lien auteur, DeliverAnims ne cree les descripteurs qu'une fois | 23 §3.4 l.367-392 | DOC | en vigueur |
| 79 | C2-078 | Ordre de priorite des evolutions de mod: E1 (animations selon la case) puis E2+E3 (prerequis et coherence des deux moities) puis E14 (descripteur unique) | 23 §6 l.449-450 | ORG | en vigueur |
| 80 | C2-079 | La separation physique de la sandbox en plugins a ete abandonnee a la porte G-SB3 et tout lancement automatise (tournee, test, pilote) ne doit jamais modifier l'etat persistant du joueur (Open non memorise) | 23 §7.2 l.487 et §7.3 l.503 | ORG | en vigueur |
| 81 | C2-080 | Le jeu doit compiler, se lancer et se cuire sans le depot prive LifePlay-Sandbox, l'atelier de mods (BuildMod, NewMod, HairPipeline, commandlets LPAnim*, ModSources) vit dans la sandbox, tandis que le chargement des mods, SplitModules et Releases restent dans le jeu | 24 §Decisions l.56-61 | ORG | en vigueur |
| 82 | C2-081 | Strategie git des lots DC: un commit par lot, aucun push sans accord, addon d'abord puis jeu, deplacement entre depots par copie plus SHA-256 identique puis git rm, jamais de suppression avant commit dans l'addon | 24 §Strategie git l.101-114 | ORG | remplacée par skill sk-repo (gardien unique, tickets) |
| 83 | C2-082 | Instantane avant toute modification par .\Tools\Snapshot.ps1 -Lot <lot> -Path ... (option -ProjectRoot pour l'addon) et retour arriere propose par .\Tools\Restore.ps1 -Lot | 24 §Strategie git l.109-112 | OPE | en vigueur |
| 84 | C2-083 | Matrice de modeles M0 a M4 (haiku, sonnet, opus), sous-classer une fiche haute complexite est interdit, surclasser exige un motif ecrit, reprise en fable apres deux echecs de M3 | 24 §Matrice l.118-136 | ORG | remplacée par skill sk-orchestrate (niveaux N0-N5, agents lp-*) et contradictoire avec 22 §9 l.202 |
| 85 | C2-084 | Un niveau rapide peut reecrire un script fourni malgre l'interdit ou rendre un resultat vide presente comme un succes: la fiche doit dire n'ecris ni ne modifie aucun script, recopier l'erreur et s'arreter, 0 resultat = echec probable | 24 §Matrice l.134-136 | ORG | en vigueur |
| 86 | C2-085 | Toute sous-tache est une fiche DC#-Tn (ID, agent, modele prevu | utilise, dependance, consigne, livrable, critere Done, handoff) et l'agent ne demarre que si le livrable amont existe et n'est pas vide | 24 §Protocole l.170-176 | DOC | remplacée par skill sk-orchestrate (fiche a 9 rubriques) |
| 87 | C2-086 | Regles d'orchestration: hors perimetre stop et signaler, FAIL de VAL = pas de DOC de cloture mais fiche -fix, la compilation appartient a l'IMPL et la VAL ne recompile pas, lot coupe = commit du valide | 24 §Regles l.191-199 | ORG | en vigueur |
| 88 | C2-087 | Roles A-CART, A-ARCH, A-IMPL-H/L, A-BUILD, A-INT, A-VAL, A-DOC associes aux paliers de modeles | 24 §Roles l.201-212 | ORG | remplacée par agents lp-cart, lp-impl, lp-builder, lp-gardien, lp-validator, lp-writer (skill sk-orchestrate) |
| 89 | C2-088 | Les livrables de lot vont dans etat\sandbox\DC#\ de la copie 5.5 (DC#-CART, SPEC, IMPL, BUILD, VAL) et les journaux de commandlets en .txt non suivis | 24 §Livrables l.185-189 | DOC | remplacée par doc 29 (livrables sous Docs\Migration\etat\<projet>\<lot>\ de la copie 5.8) |
| 90 | C2-089 | Avant de compiler fermer l'editeur et ne lancer qu'une compilation a la fois, verifier que les DLL des Binaries de l'addon et de LPAnimCore ne sont pas plus anciennes que celles du jeu, prouver le chargement par une ligne de journal du nouveau code | 24 §Pieges l.216-221 | OPE | en vigueur |
| 91 | C2-090 | La commande de compilation de reference est Build.bat LifePlayEditor Win64 Development avec -WaitMutex sur le chemin UE_5.5 et la copie 5.5 | 24 §Pieges l.216-218 | OPE | remplacée par skill lp-build (Tools/Build.ps1, moteur 5.8) |
| 92 | C2-091 | Pieges de lancement: lanceurs sandbox jamais derriere un tuyau (Start-Process cmd.exe), -run=pythonscript avec -FullStdOutLogOutput et scan_paths_synchronous avant does_asset_exist, toute recuisson par RetargetPack.py defait LPAnimTwist | 24 §Pieges l.223-228 | OPE | en vigueur |
| 93 | C2-092 | Le test jeu seul consiste a deplacer (pas supprimer) le dossier de l'addon sous un nom temporaire puis a le remettre, sans editeur ouvert | 24 §Pieges l.230-231 | OPE | en vigueur |
| 94 | C2-093 | Acceptation du decouplage: un clone propre sans addon compile (editeur et Development) et se lance, aucun Build.cs ni script du jeu ne reference LPAnimMeasure ou LPModTools, CHG par lot et pin a jour | 24 §Criteres l.380-387 | PROD | en vigueur |