Mise à jour 2.11
05/06/2026
v2.11.0BETA
Seymour
🧠 AI ASSEMBLER PRODUCTISÉ (un éditeur d'IA de monstre utilisable) :
- le « éditer l'IA 100 % librement » du codec est devenu une FONCTIONNALITÉ. Nouveau dans la voie
FfxLib/Ai+Modules/MonsterAiEditor: - Bibliothèque de comportements (
AiSnippetLibrary) : des modèles paramétrés dont les octets MIRRORENT des idiomes de corpus prouvés — linéaires (force-cmd/perform-cmd/grant-field/set-stat/raw-call) et conditionnels (rotation RNG 1-sur-K, force-command sur événement pour le contre/la phase). - Validateur de pré-vol (
AiValidator) : opcode∈48, HasOperand vs 0x80, branche/point d'entrée pendant (nomme lequel, au lieu du throw opaque), plages d'opérandes, auto-contrôle RT0, dry-run Rebuild, grow/shrink ;SaveAssemblerest désormais défensif (refuse d'écrire en cas d'erreurs). - Sélecteur de commande convivial (
AiCommandId) : opérande performCommand ↔ nom via(cat<<12)|idsurCommandCharacter/CommandMonster1_Dictionary; menu déroulant UI (plus d'hex brut). - Nouvelles primitives de codec (
AiScript_File) :GrowWorkerJumpTable(ajoute des slots à la jump-table d'un worker — permet une NOUVELLE branche) +AppendGuardedAction(préfixe une action gardée à un point d'entrée, préservant le gestionnaire d'origine) +OperandKindOf. - UI dans
MonsterAiEditor: carte Bibliothèque de comportements + bouton Validate/rapport + menu déroulant de commande. - Porte
AiScriptLab --ai2PASS (corpus réel, 361) : jump-grow 898/898 workers, guarded-action 692/692 (premier+dernier point d'entrée) + sentinelle synthétique 1/1, validateur propre 346/346, AiCommandId 620/620, capture positive 8/8/8 (jumpOOB via le chemin de l'éditeur). Porte--RT0 d'origine 361/361 intacte. - Une revue adverse à 4 agents a trouvé + corrigé 2 bugs (sentinelle self-loop one-past-end ;
OperandKindperdu sur le chemin de sauvegarde de l'éditeur), désormais verrouillés par la porte. Docs :docs/reverse/FFX_AI_JUMPTABLE_GROW_PROVEN_2026-06-05.md+docs/ai/FFX_AI_ASSEMBLER_PRODUCTIZED_2026-06-05.md. - ⚠️ Structure prouvée HORS LIGNE ; comportement en jeu (RT2) en attente de l'OK d'Halyson (sonde). Modèles « soigner un allié à moins de 25 % de PV » et « enrager au tour N » NON livrés (ancre champ-HP / compteur de tour non confirmée au niveau octet).
SUCESSOR_FFX_HD_MODELOS_MASTER_2026-06-05.mdfermés pour sum/npc. - Textures (pilotées par manifeste) :
extract-texture-batchdansRuntimeTools/PhyreModelExportLaba gagné--from-manifest, qui lit les<id>.ahwin32dug_fileNames[](manifeste d'assets autoritaire) et extrait la texture EXACTE que le jeu charge. 305 PNG (pc/npc/sum), carte de provenancetexture-provenance-map.json, 0 mismatch silencieux. RE : l'ahwin32est un en-tête C lisible — résout les cross-refs (c906←c106,c908←c108,c806←c805) ET multi-texture (c101+c101_01,n238+n238_hair,n356←n238_hair) sans IDA. Bonus find : la clé d'héritage de rig NPC =0x6NNNdans le.chr(carte npc→kNNN, 222/222 valides). Docdocs/reverse/FFX_AHWIN32_ASSET_MANIFEST_2026-06-05.md. - Bake (mesh+texture+anim) : driver
work/_scratch_mgrp/bake_cast.pyviaphyre_chr_gate. Statique 253/253 (tout le cast texturé, propre). Animé : sum son propre mouvement, npc hérite deskl/<base>. - QA visuelle (workflow, 21 agents vision) : 248 animés triés via F3D — 157 propres / 58 torsion / 33 explosés. Le picker de bind (rest/A1) sur les 33 n'a pas corrigé.
- 🔧 Correction Tourbillon (2026-06-06) : F3D MENTAIT sur l'animation skinée. Le diagnostic Tourbillon (mesh
EXPLODE_RATIO≈1.0, pas de croissance) + le rendu Eevee véridique ont prouvé que les « explosés » ont un corps intact, seulement un membre/accessoire étiré. Re-QA (8 agents sur des rendus Tourbillon) corrige à 175 propres (71 %) / 59 torsion (24 %) / 14 explosés (6 %) — 20 modèles sauvés, la cuisson hors ligne était toujours ~94 % utilisable. Les 14 authentiques = 11 Aeons + 3 npc (rig non humanoïde ; nécessite RE mocap/carte de parenté). Règle mise à jour : le ÉCRAN BLENDER décide, F3D ment. Pipelinework/_scratch_mgrp/blender_{diagnose,render_anim,batch_render}.py. - 🎯 RETARGET RÉSOLU via
--retarget-delta(2026-06-06) : 175→215 propres (87 %). Nouveau drapeauphyre_chr_gatequi applique le mouvement hérité comme un delta depuis frame0 sur la pose REST npc (M=restLocal·inv(m0)·mf), en préservant les proportions npc au lieu d'imposer celles de la base. La RE IDA a prouvé que le remap.chr@0x30était déjà appliqué — la cause était le retarget de pose de repos, pas le remap (docFFX_INHERITED_MOTION_REMAP_RUNTIME_2026-06-06.md). Pilot + lot de 73 ratés + re-QA Tourbillon + keep-best par modèle : +40 propres, 44 sauvés, ZÉRO régression (1 conservé parce qu'il régresserait). NPC animé = 200/222 propres (90 %), 0 explosé ; 8 Aeons toujours explosés (mesh immunisé → mocap). Résout le MASTER §2.4 « A1-universel » sans le risque d'A1. - 🐉 TOUT LE CAST fermé hors ligne (2026-06-06) : 498/643 propres (77 %), 90 % utilisable. QA Tourbillon véridique étendue + retarget-delta + keep-best au reste : obj/wep/pc (46 propres/55, partie propre) ET les 340 MONSTRES. L'ancienne QA monstre (bbox) prétendait « 0 explosion » = un mensonge ; la QA Tourbillon véridique (29 agents) a trouvé 127 vrais ratés ; retarget-delta sur les 66 hérités → 36 promus, monstres 206→237 propres. Total animé (643) : 498 propres / 86 torsion / 51 explosés / 8 vides. Résidu (9 %) = mesh divergent / bind dégénéré → mocap/mesh-RE, pas retarget.
- obj/wep/pc (2026-06-06) : même pipeline étendu — statique obj 110/110 + wep 79/79 + pc 34/49 (15 échecs pc = slots factices
c8xxsans.chrPS2). Cast HD statique entier = 476 modèles. obj/wep surtout rigides (anim clairsemée 25/7) ; spot-check à l'écran : f001/w001/c004=Auron propre. - Galerie
work/cast_hd_gallery.html(model-viewer, toggle statique/animé, filtre sum/npc/obj/wep/pc). Tout danswork/(gitignoré) : seules les COMMANDES sont du code. Pas de bump csproj (lab/RE dans RuntimeTools).FFX_TOOLBOX_DISCOVERY_PLAYBOOK_2026-06-05.md) : un sweep en ligne + vérification de licence de l'outillage externe FFX HD/PS2 (VBF, Phyre, kernel.bin, ATEL, FMOD, TM2, FMV) et des NuGets de l'éditeur. Trouvailles clés vérifiées : External File Loader (ffgriever, BSD-2) fichier-libre sans repack, Kaitai Struct (runtime C# MIT) pour générer des lecteurs C#+JS, fahrenheit (MIT, C#) framework de mod hook+DLL, et la confirmation que FFXDataParser n'a AUCUNE LICENCE (étude uniquement). La colonnetested?est toujours❌— le test oracle contre le corpus local est en attente, le plan est inclus dans le doc lui-même. Doc-only : pas de bump csproj (règle lab/RE doc-only). 58dossiers empaquetés ;- un manifeste par dossier ;
- une copie miroir Git-safe sous
docs/history/DOSSIÊ FFX 01-06-2026/; - un rapport d'exclusion pour le seul binaire externe géant bloqué par les limites de taille GitHub.
- des bases de connaissances séparées par plage d'atelier ;
- un atlas master agrégé ;
- une racine
KNOWLEDGE_BASE.mdcomme point d'entrée unique ; - un plan de fusion officiel ;
- une annexe des ateliers dépendants
Pt6/Pt9; - des lignées techniques familiales formelles pour le projet.
merge in docsExtras nowExtras laterfrozen researchhistorical cleanupps3dataffx_ps2- clôture exécutive
- compendium d'ateliers enfants
- atlas runtime/AI
- bootstrap successeur
- tableau de maturité court
Extras nowverdictExtras laterverdict- frontières de recherche gelée
- rôle produit
Pt67dérivé ps3datavsffx_ps2split- rulebook de provenance
- facettes de citation obligatoires ### Ajouté
important.bina_ability.binReadNo-Edit Byte IdentityReread- contrats de token texte additifs dans
FFXProjectEditor/FfxLib/Text/* - un utilitaire de décision pur de validation / round-trip
TextLabTools/TextContractHarnesscomme premier consommateur smoke côté productiondocs/history/BATTLE_AI_FRONTIER_2026-05-31.mddocs/history/MODELVIEWER_BINDING_FRONTIER_2026-05-31.mddocs/history/PT23_TO_PT34_KNOWLEDGE_BASE.mddocs/history/PT23_TO_PT34_CHANGELOGS.mddocs/history/PT23_TO_PT34_BRANCH_MAP.mddocs/history/PT23_TO_PT45_CODE_KNOWLEDGE_BASE.mddocs/history/PT23_TO_PT45_CHANGELOGS.mddocs/history/PT23_TO_PT45_BRANCH_MAP.mdKNOWLEDGE_BASE.mddocs/history/PT2_TO_PT11_KNOWLEDGE_BASE.mddocs/history/PT12_TO_PT22_KNOWLEDGE_BASE.mddocs/history/PT23_TO_PT45_KNOWLEDGE_BASE.mddocs/history/PT2_TO_PT45_MASTER_KNOWLEDGE_BASE.mddocs/history/PT6_PT9_DEPENDENT_WORKSHOPS_ANNEX.mddocs/history/NON_FFX_EDITOR_THREADS_ANNEX.mddocs/history/PT_FAMILY_LINES_ANNEX.mddocs/history/OFFICIAL_MERGE_PLAN_2026-05-31.mddocs/history/PS3DATA_FULL_TREE_RESEARCH_PLAN.mddocs/history/PS2_FULL_TREE_RESEARCH_PLAN.mddocs/history/PT50_TO_PT58_ABSORPTION_PLAN.mddocs/history/PT52_TO_PT58_CLOSEOUT_REPORT_2026-05-31.mddocs/history/PT50_PT51_HISTORICAL_CLEANUP_2026-05-31.mddocs/history/PT6_TEMPORARY_CLOSEOUT_2026-05-31.mddocs/history/PT6_CHILD_WORKSHOPS_COMPENDIUM.mddocs/history/PT6_RUNTIME_AI_DISCOVERY_ATLAS.mddocs/history/PT6_SUCCESSOR_BOOTSTRAP.mdhistory/pt23-battleai-structurehistory/pt24-exactlaunch-seamhistory/pt25-selectorbank-materializationhistory/pt26-battlestate-diffhistory/pt27-routereplay-truthhistory/pt28-battlecapacity-prephistory/pt29-keyitem-crashfixhistory/pt30-autoability-crashfixhistory/pt31-geometryviewport-blockhistory/pt32-chrcarrier-decodehistory/pt33-aislice-payloadhistory/pt34-legacybridge-narrowing### ModifiéCurrentWorkspaceOverviewCurrentMonsterEditorCurrentItemsCurrentBattleExplorerCurrentLiveBattleLabCurrentStringExplorerEncodeSafeDecodeOnlyRawPreserveUnknownRiskReuseOriginalBytesReencodeAllowedBlocked- wrappers opérationnels pour la ligne
Extras / ps3datacible - micro-ateliers IA
Pt6 / Pt23utiles avec connaissance préservée et statut archive-safe merge nowmerge laterExtras/read-onlyknowledge onlyPt56,Pt52,Pt54,Pt58= attaquer maintenant dans le logicielPt57et des parties dePt53/Pt55= attaquer plus tard, toujours en lecture seulePt53,Pt55,Pt57= recherche agressive sans sur-vendicationPt50,Pt51= nettoyage historique avant qu'ils ne comptent comme sources propresMagicPackageViewerBatEffPackageViewerMagicEffectCrosswalkExplorernever blind merge### Validé- le but
- l'utilité
- la probabilité de fusion
- un mini changelog par atelier
binding truthlangage- fort rétrécissement pour
owner/target/parentage/commit - base de garde-fou pour
Pt6etPt23 formation 0..7enemy actor rows 0..10rawMonsterId -> corpuscomposition truthvsactor-surface truthPt46 / AIBlobParityGrammarLabPt47 / AIRuntimeDispatchLabPt48 / SafeAIMicroProbeLabcomme partie de l'héritage runtime/AI, même sans revendication d'écrivain ou de patcher.- base de vague ancienne
Pt2..Pt11 - base de vague moyenne
Pt12..Pt22 - base de vague lourde
Pt23..Pt45 - un seul atlas agrégé avec mémoire/runtime/binding/guardrails
- satellites de
Pt6 - satellites de
Pt9 - exceptions côté production
Pt29/30 Model Viewer / BindingBattle / AI / Runtime TruthText SafetyKernel / ShopTooling / Safety / ReleaseProduction Crashfixes### Notes ### Planned ### BacklogTextSourceCapabilityIndex*StringExplorercâblage UI0x10 + 0x120x13### Blocked ## [v2.13.0] - 2026-06-05 ### Ajouté ### Notes ## [v2.12.0] - 2026-06-05 ### AjoutéFfxLib/BattleMap/BattleArenaPositionWriter.csre-estampille le X/Y/Z de chaque acteur dans le tableau d'ancres chunk3 EN PLACE (monstres sur le terrain = pointeur+0x20; aussi party/aeon/staging parrole), value-only : ne touche jamais l'en-tête/les pointeurs/le compte/les autres chunks, préserve W verbatim. Comme la transformée bataille→scène est IDENTITY (prouvée IDA, v2.10.0.1), une coordonnée choisie dans l'espace scène est écrite verbatim. Même pattern slot-safe queFormationSlotWriter(garde + backup-onceWriteLooseFile). ### Validé RT0 (no-edit == byte-identique) 862/862, POSITION-ONLY (diff confiné au tableau+0x20) 862/862, RE-READ 862/862, + SAVE LIFECYCLE (no-edit/edit/restore sur une copie temp) PASS. BiancaCatalogLab + AuroraChamberLab + BattleArenaPositionLab (auparavant laissées de côté). CI complète PASS (7/7 portes) : ReverseHarness, AiScriptLab, FormationSlotLab, AbilityCommandLab + les 3 nouvelles. ### Deferred hors ligne ; l'écran en jeu est l'arbitre. Ajouter/supprimer un slot de monstre (faire varier le compte) = structurel (Rebuild), ensuite. ## [v2.11.1] - 2026-06-05 ### Ajouté qui filtre les lignes de dialogue par contenu textuel, et (2) un filtre de langue (cases à cocher English/Japanese, English par défaut) — auparavant JP et EN étaient déversées dans la MÊME liste (le japonais d'abord = un mur de japonais). RefactoréEventExplorer_DataModel(allTextRows+ApplyTextFilter, anglais d'abord) + axaml (TextBox de recherche + CheckBoxes JP/US). Ne touche PAS l'écrivain (Tier 1 reste--event-rt0397/397 + edit 12/12). ### Notes injection de traduction, hors de la portée de l'écrivain). La recherche de mot se fait dans l'événement sélectionné. ## [v2.10.0.1] - 2026-06-05 ### Proven (RE / IDA, hors ligne) copie les coordonnées chunk3 (locales à la bataille) VERBATIM dans le nœud monde de l'acteur — pas de flip-Z, d'échelle ou de rotation ; seul Y gagne une hauteur de modèle par acteur (actor+0x534). Comme la scène.dae.phyre== la trame de sommets Phyre brute 1:1, P_scene(X,Y,Z) = P_battle(X,Y,Z) (s=1, R=I, T=0). Chaîne prouvée :FFX_Battle_AreaChunk_GetSetPosition(0x7AC000; base chunk30x112A9B0; copie 4 floats verbatim ; pos monde acteur @+0x3B0) →FFX_Battle_ResolveActorPlacement(0x7A9AE0) →FFX_Battle_GetActorByIndex(0x794030, stride0xF90== ennemi RT2). La supposition flip-Z était un artefact d'inclure les lignes de staging hors-terrain (party-back Z≈-168). Doc :docs/reverse/FFX_AURORA_BATTLE_TO_SCENE_TRANSFORM_IDA_PROVEN_2026-06-05.md(+ file de renommage pour le vrai.i64). ### Modifié (Aurora Chamber — honnêteté) trace les ancres directement en coordonnées de scène (le défaut était déjà l'identité) et le toggle flip-Z devient RÉFUTÉ/comparaison ;aurora-actors.jsoncoordSpace=scene_world_identity_ida_proven. ### Deferred≈ chunk3(résiduel ~0) + mesurer le terme Y exact. Sonde AUTORISÉE par Halyson ; en attente seulement du jeu ouvert (READ via la sonde existante, pas de nouveau code). SPIRA FORGE reste en pause. ## [v2.10.0] - 2026-06-05 ### Ajouté ) n'est plus en lecture seule. Éditer le dialogue de cutscene/événement est désormais un BOUTON.FfxLib/Event/Event_File.Write.cs(nouveau) : re-pack de conteneur EV01 byte-fidèle — chaque chunk réaligné sur0x40, la table d'offsets absolus + le terminateur EOF recalculés (magic + sentinelle0xFFFFFFFFpréservés). No-edit = VERBATIM garanti ; le texte édité réutiliseTextTable_File.Write(chunks JP=1/EN=4) ; le script ATEL (0), Inconnu 2 et FTCX (3) préservés octet pour octet. Hook Tier 2ScriptChunkOverride(re-stitch d'un chunk-0 édité).Event_File.cs: capture l'en-tête brut + les tables de texte ; tolère les entrées de chaîne de champ à pointeur null (8 fichiers) en préservant le chunk verbatim (frontière édit-texte documentée).TextTable_File.Writesurcharge additive (includeTrailingPadding): émettre table+pool sans padding interne (le conteneur re-pad à 0x40). Ne casse PAS--textstr-rt0(défaut = comportement hérité).Modules/EventExplorerest devenu un ÉDITEUR de dialogue : chaînes JP/EN éditables (TextBox TwoWay) + un bouton « Save dialogue » qui re-pack et écrit le.ebp. (FfxLib/Ai/AiScript_File.cs, utilisé en lecture seule comme donneur) lit/édite le script d'événement (même famille AiFile).- PATCH d'opérande byte-local PROUVÉ (12/12) : éditer un opérande de chunk-0 ne change que ces octets ; le conteneur re-stitche identiquement ailleurs ; la re-lecture porte le nouvel opérande.
- GROW (AppendCode) est une frontière documentée : le donneur
AppendCode(construit pour la bataille, descripteurs en DATA) ne relocalise pas les descripteurs résidant dans l'en-tête que les scripts d'événement utilisent ([0x38..scriptStart)) — nécessite une relocalisation consciente des événements (à coordonner avec la voie Assembleur d’IA). ### Validé round-trip 12/12** (échanger une chaîne → re-pack → re-lecture : la chaîne éditée correspond, les chunks intacts verbatim, idempotent). 397/397 ; patch d'opérande byte-local 12/12. L'éditeur compile 0 erreurs. (0 ruptures), EOF==taille de fichier, sentinelle0xFFFFFFFF. Docs dansdocs/reverse/FFX_EVENT_*_2026-06-05.md. ### Honesty / Deferred text-éditables). Tier 2 = patch prouvé ; append/grow + authoring structurel = Tier 3, documenté pas fermé. La vérification préférée est le byte-RT0 hors ligne ; le RT2 en jeu du dialogue édité est toujours recommandé. ## [v2.9.0] - 2026-06-05 ### Ajouté btlmap de 25 zones) au MapViewer et soulève les coordonnées d'acteur hors du chunk3. Dédié à Aurora & Bianca. 💛 - Scene Picker consomme
BattleMapCatalog_File/BattlefieldSceneResolver(lecture seule) — lister/sélectionner des scènes par zone et map-key. - Render pilote
PhyreMapExportLab(export glTF à la demande de la scène btlmap) et ouvreFFXMapViewerWebvia le deep-link?catalog=/?map=/?actors=— un mini-catalogue par scène, ne touchant jamais le partagécatalog.jsonni ne réécrivantapp.js. - Coordonnées via le nouveau lecteur
FfxLib/BattleMap/BattleArenaAnchors_File.cs(pur/sans Avalonia) : décode le chunk3 (enregistrement de zone 96B, pointeurs+0x10..+0x2C, monstres vivants+0x20, éléments XYZW 16B Y-up), liste les ancres locales à la bataille et exporte du JSON pour l'Encounter Authoring. gizmos d'ancres depuis?actors=+ un mode « pick » (raycast plan y=0 → coordonnées monde). Non-intrusif (hookswindow.ffxMapViewerDebug; no-op sans?actors/pick ; n'édite jamaisapp.js). ### Validé klyt00_00/sins02_00/mihn00_00 == coordonnées prouvées par doc) ; corpus 862/862 propre (0 NaN/Inf, W==0 sur les monstres vivants) ; déterministe ; pipeline BIANCA→scène→bataille→ancres 52/52 scènes mappées portent des ancres. 10 804 triangles,gatePass: true). L'éditeur compile avec 0 erreurs (vérifié dans un worktree HEAD isolé). ### Honesty / Deferred NON CALIBRÉE** (P_scene = R·s·P_battle + T ; flip-Z/yaw-180 non résolus) — les ancres sont brutes locales à la bataille, pas exactes moteur. Calibration par sonde = Wave 3 (nécessite l'OK d'Halyson). SPIRA FORGE reste EN PAUSE ; Aurora ne fait que CONSOMMER MapViewer + BIANCA (lecture seule/additif), ne démarre jamais le hub. ## [v2.8.0] - 2026-06-05 ### Ajouté (catalogue les 25 zones / 56 scènes du HDps3data/btlmap—<area>NN_<variant>avecmdl/d3d11/<leaf>.dae.phyre) +FfxLib/BattleMap/BattlefieldSceneResolver.cs. Pur/sans Avalonia, compile dans l'éditeur (0 erreurs). « azit03 »), PAS lebattlefieldu16 (c'est un id d'arène global, partagé entre les cartes —bf=1061s'étend sur nagi/test/tori/zzzz). Doc :docs/reverse/FFX_BATTLEFIELD_SCENE_BRIDGE_2026-06-05.md. pointeur+0x20(float32 X,Y,Z,W ; Y-up ; W=0 ; stride 16 octets ; slot de formation ↔ entrée). Party+0x10, aeon+0x18, caméra+0x2C. Doc :docs/reverse/FFX_BATTLE_FORMATION_POSITION_CHUNK3_DECODED_2026-06-05.md. (-- export --ps3-root <ps3data> --area btlmap/azit/azit03_a). Plan d'overlay d'acteurs + calibration de coordonnées par sonde (CONCEPTION) :docs/ai/FFX_AURORA_COORDINATE_SYSTEM_AND_CALIBRATION_2026-06-05.md(sonde seulement avec l'OK d'Halyson). ### Validé déterministe ; 56/56 scènes avec exactement un modèle primaire ; pont avec 0 misses inexpliqués (22 cartes orphelines HD = coupées/PS2-only ATTENDUES ; 4 scènes orphelines bika04/grid00/nagi03/sfia00 = boss/histoire ATTENDUS). ### Deferred la sonde DINPUT8 nécessite l'OK d'Halyson et SPIRA FORGE est EN PAUSE. ## [v2.7.1] - 2026-06-05 ### Ajouté / Validé WeaponNameTable, MacroDictionary, NameDescriptionTextTable, NameDescriptionTextPrefixTable, BtlTextTable, SphereGrid, ShopGearCatalog, BukiGetTreasureCatalog, AlBhedDictionary, PointerScriptTable, BattleTextTable, ShopTable. Pattern Preserve-only (WriteIdentitypour les rebuilds avec perte). Nouveau sweep de porteTools/Wave1Rt0.cs. ## [v2.7.0] - 2026-06-05 ### Ajouté échange la partition AiFile pour une de LONGUEUR DIFFÉRENTE, pad-16 l'AiFile, décale les sections suivantes et réécrit les pointeurs de section d'en-tête (m###.bin), écrivant l'AiFile verbatim (pas de clobber codeLength). L' UI Assembleur d’IA sauvegarde désormais grow/shrink (était préservant la longueur uniquement). Cause du clobber documentée + corrigée par conception (Option B : surface minimale, ne touche PASMonster_File.Write→--monster-rt0reste 361/361). VM depuis les comptes de workers + datalen par worker (round 16) (PAS partition/DeclaredLength/codeLength) et fait confiance aux pointeurs dans le fichier → la relocalisation grow est honorée et le pad de fin est sûr. (règle d'or : rename-queue.) ### Validé (insert → splice grow-aware → re-lecture propre + queue/en-tête préservés verbatim + aligné 16 + idempotent), SHRINK 346/346 (retirer une instr non ciblée → delta négatif → re-lecture propre + queue préservée).--monster-rt0361/361 (pas de régression). Alignement de corpus : 16/32/64/128/256, 0 pad de fin. (free-edit) »** rendue avec la liste d'instructions éditables (opcode/opérande/remove) + Insert/Save Structural + aperçu. Capturework/spira_forge_qa/monster_ai_assembler_v01.png. ### Deferred sonde DINPUT8 (partagée) — sous l'OK explicite d'Halyson. Hors ligne + RE prouvent la byte/game-safety ; l'écran en jeu est l'arbitre final. ## [v2.6.0] - 2026-06-05 ### Ajouté (insert / remove / modify) par-dessus l'éditeur d'opérande byte-local. L'AiFile reconstruit vient deAiScript_File.Rebuild(prouvé RT0 : relocalise les points d'entrée + les jump tables via une carte ancien→nouveau). Liste éditable (hex opcode/opérande + case remove), insert-after-selected, aperçu de delta. Save n'est activé que pour les éditions préservant la longueur (codeLength inchangé) → splice byte-safe viaSpliceAiFileIntoMonster. GROW/SHRINK est LAB (message honnête) : la sauvegarde loose-file nécessite une relayout de monstre consciente de l'en-tête + un padding d'alignement + une preuve en jeu. --ctbbase-rt0→CtbBase_File(ctb_base.bin), preserve-only.--mixtable-rt0→MixTable_File(prepare.bin), preserve-only.--aiasm-rt0→ prouve la sauvegarde structurelle Assembleur d’IA (no-edit Rebuild + relayout + splice byte-identique) et mesure l'alignement corpus AiFile→WorkerFile. ### Validé l'édition préservant la longueur est byte-safe. Grow=LAB (cause : l'en-tête 0x34 deMonster_FilechevaucheAiFile[0..4)=codeLength + un changement de longueur casse l'alignement WorkerFile ; le corpus est aligné 16/32/64/128/256, 0 pad de fin). ### Blocked / LAB ## [v2.5.0] - 2026-06-05 ### Ajouté locaux (Open Spector,Capture Next Frame,Export Last Capture) plus un premier panneauMaterial Debugavec inventaire live des matériaux glTF chargés, un sélecteur, des fact chips, et des cartes de texture par slot (map,normalMap,aoMap,envMap, etc.). enregistre ce qui a atterri, ce qui a été validé, et ce qui reste explicitement hors preuve. ### Validé contrôles sont apparus, et le panneauMaterial Debugs'est rempli depuis le glTF chargé. fiable, le visualiseur dégénère versFrame preview unavailable/Texture preview unavailable on this source surfaceau lieu de prétendre montrer des preuves visuelles valides. ## [v2.4.4] - 2026-06-05 ### Ajouté batailles sélectionnables du champ ; en choisir une publie versFieldContext.SelectedBattleIdet le Formation Editor saute directement vers cette bataille (charge sa formation). Réalise le « cliquer une zone, échanger la formation » du masterplan via la colonne partagée, sans plomberie de shell.FieldContexta gagnéSelectedBattleId/SelectBattle. ### Validé 37 BattleIds sans dossier + 37 dossiers jamais référencés (batailles spéciales/événements) — le handoff filtre vers ceux qui existent. Editor a sauté vers la bataille chargée). Capturework/spira_forge_qa/handoff_encounter_to_formation_v04.png. ## [v2.4.3.1] - 2026-06-05 ### Reverse / Proof (CONTINUE_AQUI_PERNAS_HD) : la carte « 52m_skeletonMatrices→ 79 joints » vit dans le fichier Phyre, pas dans IDA.- La palette de skin est
PMatrix4[0..51](liée depuis le champ 12 dePMesh) ; elle égale lem_skeletonMatriceslive octet pour octet (maxDist=0.00000). - La carte slot→nœud est l'
intà l'offset 12 de chaquePSkeletonJointBounds[j](52 slots → 52 nœuds, bijection). - Composer
m_defaultPoseà traversm_matrixParentsreproduit l'inverse-bind authoré EXACTEMENT :0/52nœuds divergent. Donc--hd-defpose+--hd-parentsest déjà le vrai bind du jeu. - Cause racine de la spirale historique : un bake sans
--hd-defpose/--hd-parentsretombe surinvBind = PMatrix4[52+b](matrice LOCAL brute) → le mesh explose. La recette defpose+parents est le correctif et est déjà le défaut de la galerie. - Nouvelles sondes en lecture seule :
work/_scratch_mgrp/phyre_palette_probe(localise la palette, prouve que le bind est exact, émetnode_to_slot.json) etphyre_legs_probe(matcher ; illustre le piège de la translation coïncidente). ### Validé c007 (Rikku) — en rest forcé, bataille (id5_c4318 t0.0–0.9), 4 angles de mollet en accroupissement profond, et multi-clip (c4333/c4365/c4886). Numériquement : les matrices locales/monde des joints de jambe sont des rigides parfaits (scale=1, det=+1, ortho 0.0000). Pas d'IDA. Preuve complète dansdocs/reverse/FFX_HD_SKIN_PALETTE_DECODED_LEGS_NOT_BIND_2026-06-05.md. ## [v2.4.3] - 2026-06-05 ### Ajouté existaient déjà mais n'avaient jamais été gatés au niveau octet, fermant 4 familles de base éditables concrètes de plus : --keyitem-rt0(Tools/KeyItemRt0) →KeyItem_File(important.bin), écrivain preserve-only (clone les octets d'origine + re-estampille seulementPrimerByte10/OrderingByte13).--treasure-rt0(Tools/TreasureRt0) →Treasure_File(takara.bin), round-trip full-decode (4 octets/entrée).--customization-rt0(Tools/CustomizationRt0) →Customization_Fileéquipement kaizou.bin + aeon sum_grow.bin (préserve le préfixe/la queue d'en-tête + ré-émet les entrées décodées).--autoability-rt0(Tools/AutoAbilityRt0) →AutoAbility_File.WriteAbilities(a_ability.bin, section DATA ), écrivain preserve-only. (Litarms_rate.binseulement pour satisfaire le contrat de lecture ; n'écrit PAS arms_rate et ne couvre PASWriteAbilitiesAndText/le repack de texte.) ### Validé takara.bin (503 entrées, 2012 B), kaizou.bin (125) + sum_grow.bin (77), a_ability.bin (134 entrées, 19590 B). Sauvegarde no-edit = byte-identique ; edit = byte-local (même pattern preserve-only qui a fermé Monster/Encounter). Lève partiellement la réserve historique « important.bin/a_ability.bin bloqués pour des revendications d'écrivain mutation-safe » : l'édition de champ (section de données) est désormais prouvée ; le re-pack du pool de texte reste non revendiqué (même risque de dérive style monmagic — hors de portée pour cette porte). ## [v2.4.2] - 2026-06-05 ### Ajouté en ligne (ex.[m003 - Murussu, m003 - Murussu, m009 - Dingo]). Lazy-loaded + mis en cache + plafonné (≤90 batailles visibles ; avec la liste complète, il demande de filtrer par zone). Lecture seule ; amène le « zones peintes avec les monstres qui y spawn » du masterplan dans l'éditeur (fusion encounter↔formation rendue visible). ## [v2.4.1] - 2026-06-05 ### Ajouté (garde slot-only + backup-once.spiraforge.bak+ écriture). Désormais utilisé par le Formation Editor (PersistSnapshot) ET testé par la porte headless — même code dans l'éditeur et le test, pas de duplication. ### Validé workspace/asset, lecture seule respectée) : (a) Save no-edit = disque byte-identique + backup==original ; (b) Save edit = slot-only sur disque + relecture correspond + backup préservé ; (c) restore depuis le backup = byte-identique. PASS. Ferme le fossé d'honnêteté v0.2 (sauvegarde in-app prouvée sur disque, réversible). Corpus toujours 858/858 ;offline_ci4 portes PASS. ## [v2.4.0] - 2026-06-05 ### Ajouté Entries/Groups/Formations (comptes VARIABLES + tables de création), assigne de nouveaux dataOffsets, reconstruit chunk0 + la table de chunks, préserve le partage de blocs + le padding. Porte--encounter-rebuild-rt0. La base structurelle pour « CRÉER DES ENCOUNTERS ». ### Validé (4096/4096)** + grow-test (ajouter 1 formation, fin 0x1000→0x1002, 2 chunks intacts) valide. ; corrige la dérive du padding de fin. Note honnête : les enregistrementshelp_txt.binde StringExplorer sont MORTS dans cette extraction (fichier absent) — l'écrivain est prouvé sur une vraie chaîne de champ (spcodedic.bin). ## [v2.3.2] - 2026-06-05 ### Ajouté (Ability_Command.ReadList→WriteList), queKernelCommandsutilise déjà pour Save mais qui n'avait jamais été gaté au niveau octet. Référence le projet éditeur (arbre de dépendances profond), appelle seulement des méthodes statiques FfxLib. Câblé dansoffline_ci.ps1. ### Validé (1 octet) 4/4. PASS. C'est la fondation prouvée pour la fonctionnalité rêvée « nouvelle Black magic » (vit dans command.bin). ### Blocked monmagic original partage/dedup le texte tandis queWriteListré-appende (FfxEncoding.WriteBytesIntoTextFilen'append que ; command/item sont pure-append → ils correspondent). Risque : le Save MonMagic de KernelCommands gonfle le fichier — gatez-le jusqu'à ce qu'un écrivain conscient du dedup passe. Audit + cible de correctif :docs/reverse/FFX_ABILITY_WRITER_AUDIT_2026-06-05.md. ## [v2.3.1] - 2026-06-04 ### Ajouté au-delà d'EOF (kino03_*,mihn05_*,cdsp00_02) : traite le chunk au-delà d'EOF (et au-delà) comme absent au lieu de rejeter tout le fichier ; les chunks antérieurs (incl. formation @2) restent valides. Ces batailles sont désormais éditables dans le Formation Editor. ### Validé re-lecture 858/858 PASS. Les 843 précédents inchangés. ## [v2.3.0] - 2026-06-04 ### Ajouté monstres (16 octets) d'une formation btl_* viaBattle_File.WriteWithFormationSlots, byte-safe slot-only. Consomme la colonneFieldContext(pré-filtre les batailles par la zone de champ sélectionnée du Hub). Sélecteur de monstre (Monster_Dictionary+ Empty, préserve le nibble haut brut). Save écrit un loose-file de workspace avec un backup.spiraforge.bak+ gardeAssertSlotOnlyDiff, viaByteSnapshotEditorSession(Undo/Discard). Hors ligne, pas de sonde.offline_ci.ps1(paramètre-BtlRoot). Membres additifs en lecture seule surBattle_File(FormationChunkOffset/FormationSlotsOffset/FormationSlotsLength). ### Validé (15 btl_* non analysables par le lecteur à l'époque — corrigés dans v2.3.1.) ## [v2.2.0] - 2026-06-04 ### Ajouté cléée parfield_token. Sélecteur de champ alimenté par le CSV de pont (ps3data-map-btlmap-fieldid-bridge.csv, 357 champs, candidat structurel). Sélectionner un champ publie versFieldContext(singleton observable) et 2 consommateurs réagissent en lecture seule : deep-link de carte (?map=map/<area>/<field>pour FFXMapViewerWeb) + aperçu d'encounter (litbtl.binviaEncounterTable_File, jointure candidate area↔map). CSV copié vers la sortie via<Content>du csproj. Hors ligne ; le sélecteur tourne sans projet. Pas d'écrivain, pas de sonde. ### Validé Capturework/spira_forge_qa/field_hub_v01.png. ## [v2.1.1] - 2026-06-04 ### Validé porte--player-rt0:ply_save.bin(3098) +ply_rom.bin(2161) -> no-edit RT0 byte-identique. (Les écrivains existaient déjà slot-only ; désormais gatés.) ## [v2.1.0] - 2026-06-04 ### Ajoutébtl.binoctet pour octet et re-estampille seulement les champs éditables (tableId/Unknown0C, groupeBattlefield/Danger/TotalWeight, formationId/Weight). Porte--encounter-rt0dans l'éditeur. ### Validé ## [v2.0.0] - 2026-06-04 > NOUVELLE ÈRE — MAJEUR. L'éditeur est passé de « édition de fichiers hors ligne » à ÉDITION RUNTIME LIVE PROUVÉE : > éditer le bytecode d'IA d'un monstre en RAM et voir le changement de comportement à l'écran, sans crash, réversible — > le but suprême #1 du projet, réalisé. MAJEUR = une nouvelle classe de capacité (pas une rupture de contrat/save/build > — nous avons seulement ajouté et durci).-betaparce que RT2/God-Mode ne sont pas encore productisés dans une UI gatée. > Jalon de la vague Claude Code / VSCode + l'union avec le 2e compte Codex. ### Highlights change à l'écran — Flambos de feu Brasier X→Foudre X, sans crash, réversible. Chaîne :enemy-list(0xD34460) ->MemoryChr.Ptr_script_chunks(+0xF78) -> AiFile live === disquem0NN.binbyte-identique. capacité globale — le monstre n'a pas besoin de la « posséder ». Preuve : un Lycaon a craché le Divine Comédie d'Ifrit à l'écran. data revive (drapeaux de mort + KO), tout viaMemoryChr+ sonde. ### Ajouté (+delta) -> un AiFile plus grand valide (le chemin vers « ADD AI », au-delà du budget byte-local). étiquettes de saut + type de worker inféré), édition d'opérande + Save loose-file.FFX_MUSIC_SYSTEM_AND_MOD_IDEA(Music Remapper),FFX_AI_BYTECODE_OPCODE_TABLE_PROVEN,CODEX_MAPVIEWER_WATCH_JARVIS,FFX_MAP_DEVELOPMENT_TOOL_MASTERPLAN(Spira Forge). ### Modifié / Validé StatSheet/Loot + préserve l'en-tête Signature/Padding (le Padding chevauchaitAiFile[0..3]). ### Blocked / Deferred (honnête) (rebuild jeu fermé). Lecteur trouvé :FFX_FmodMusic_PlayTrackByIndex(181 pistes) ; le FIFO SPU PS2 est stubé sur HD. ### Absorbé des Labs / Multi-agent l'union avec le 2e compte Codex (voie MapViewer / model-texture) : l'exportateur expose désormais des signaux de rôle de matériau (TextureSampler1/normalMap/reflection/water/PhyreWaterShader), comparaison de visualiseur externe (glTF-Sample-Viewer comme oracle ; fossé prouvé côté exportateur, pas shell), et le kickoff du masterplan Spira Forge. Coordination multi-agent journalisée dansdocs/ai/CODEX_MAPVIEWER_WATCH_JARVIS.md. ## [v1.7.0] - 2026-06-04 ### AjoutéAppendCode: ajoute des instructions à la fin + relocalise la section de données.Rebuild: insérer/retirer/modifier une instruction N'IMPORTE OÙ + relocalise AUTOMATIQUEMENT tous les sauts + points d'entrée (carte de lien ancien→nouveau) + la section de données. Branche orpheline (instr retirée) -> erreur honnête. ### Validé workers se résolvent, point d'entrée post-insertion relocalisé0x2D1→0x2D4tout seul ; grow-test (AppendCode) RT0. ## [v1.6.0] - 2026-06-04 ### Validé StatSheet/Loot + préserve l'en-têteSignature/Padding(le Padding chevauchaitAiFile[0..3]). ## [v1.5.0] - 2026-06-04 ### Validé / Blocked live BLOQUÉ** (API FMOD__thiscall, sonde cdecl-only). DocFFX_MUSIC_SYSTEM_AND_MOD_IDEA(Music Remapper). ## [v1.4.0] - 2026-06-04 ### Validé (live) — le monstre n'a pas besoin de la « posséder ». Preuve : un Lycaon a craché le Divine Comédie d'Ifrit à l'écran. ## [v1.3.1] - 2026-06-04 ### Corrigé / Validé (en direct) de mort). Auto-scan (statutScan) basculé live. ## [v1.3.0] - 2026-06-04 ### Validé (live) (POINTER_BATTLE_ENEMY_LIST 0xD34460, stride0xF90) + sonde. ## [v1.2.0] - 2026-06-04 ### Ajouté étiquettes de saut) + édition d'opérande + Save loose-file. ## [v1.1.0] - 2026-06-04 ### Validé (🏆 TITRE — but suprême #1) le comportement change à l'écran (Flambos de feu Brasier X→Foudre X), sans crash, réversible. Chaîne :enemy-list 0xD34460->MemoryChr.Ptr_script_chunks +0xF78-> live AiFile === diskm0NN.binbyte-identical. Doc :docs/reverse/FFX_AI_RT2_LIVE_EDIT_PROVEN_2026-06-04.md. ## [v1.0.0] - 2026-06-01 Jalon de maturité pour l'éditeur comme véritable plateforme de lecture, validation et navigation de connaissances, avec assez de surface produitExtraspour justifier un1.0honnête même si les boss runtime, AI et body-playback restent ouverts. ### HighlightsPS2 KnowledgeTextures (TM2 + TXC/CLT/FMT/SPS2 support lane)BIN-FTC AtlasProject / PipelineMagic EffectsPresentation ContainersBattle Corpus Crosswalk### AjoutéMagicPackageViewerBatEffPackageViewerMagicEffectCrosswalkExplorerFtcHeaderInspectorBinSidecarGraphSignature Groupdans le shellTxcCltPairExplorer- métadonnées froides
fmt/sps2métadonnées ### Modifié ### Validé read-onlydo not promoteno runtime proofle cas échéantpipeline/support onlyle cas échéant ### Notesmagic solvedAI solvedModelViewer playback solved- une large autorisation d'écrivain ## [v0.11.0-beta.2] - 2026-06-01 Vraie évolution produit pour la ligne
Extrasdansmain. ### Highlights masterffx_ps2ps3dataPS2 KnowledgeTextures (TM2)BIN-FTC AtlasProject / Pipeline### AjoutéExtrasSourceResolverExtrasEvidenceBadgeModelExtrasProvenanceModelExtrasReadonlyBoundaryModelExtrasFileOpenServiceCdIndexExplorerProjectDescriptorViewerAbmapSupportGraphdocs/history/PT52_BIN_FTC_FILE_MEANING_GUIDE_2026-06-01.mddocs/history/PT53_BATTLE_MAGIC_FILE_MEANING_GUIDE_2026-06-01.mddocs/history/PT54_PROJECT_ABMAP_FILE_MEANING_GUIDE_2026-06-01.mddocs/history/PT56_TEXTURE_PALETTE_FILE_MEANING_GUIDE_2026-06-01.mddocs/history/PT57_PRESENTATION_CONTAINER_FILE_MEANING_GUIDE_2026-06-01.mddocs/history/PT58_FFX_PS2_OWNERSHIP_AND_LINKAGE_GUIDE_2026-06-01.md### Modifié ### Validé- pas d'écrivain
- pas de repack
- pas de revendications de décodage final
- pas de mélange de recherche froide avec une preuve runtime ### Notes
kernel -> mag_* -> bat_eff## [v0.10.0-beta.1] - 2026-05-31 Bêta de consolidation de branche principale après la première vague forte d'absorption d'ateliers curatés. ### Highlights ### AjoutéShop ExplorerFfxLib/ShopAssets/Shop- un écrivain gardé pour
item_shop.binetarms_shop.bin NameDescriptionTextPrefixTable_Filereader + no-edit guardpourimportant.binreader + no-edit guardpoura_ability.bin### Modifié ### Validé ### Deferred ### Blocked ## [v0.9.0-beta.1] - 2026-05-31 Première version qui assume honnêtement la vraie taille de l'éditeur et de l'écosystème autour de lui. ### Points forts de la branche principale ### Surface de production présente dans main ### Absorbé des ateliersTextLabTools;ProductionAuditTools;- harnais et release texte/monstre conservateurs.
PlayerGrowthEditor;CtbBaseEditor;MixTableEditor;- la ligne historique qui a ensuite soutenu
KeyItemEditor. AutoAbilityEditor;- parseurs conservateurs de
AutoAbility_File.csetArms_Rate.cs. Shop Explorer;FfxLib/Shop;Assets/Shop;- écrivain gardé pour
item_shop.binetarms_shop.bin. ### Gouvernance et versionnage ### Validé ### Toujours bloqué ### Pourquoi c'est encore bêta ## Reconstruction sémantique historique Note éditoriale importante : ## [v0.8.0-beta.1] - reconstruction historique (SemVer officielle pré-Git) Jalon où l'écosystème opère déjà comme un grand éditeur modulaire avec plusieurs fronts spécialisés vivants en même temps. ### Surface principale à ce stade ### Pression de l'écosystème ### Toujours manquant ## [v0.7.0] - reconstruction historique (SemVer officielle pré-Git) Jalon où la ligne principale passe de « plus de modules » à « plus de preuve ». ### Ajouté ### Modifié ### Pas encore sûr ## [v0.6.0] - reconstruction historique (SemVer officielle pré-Git) Jalon où la ligne kernel et le durcissement conservateur des systèmes secondaires cessent d'être une promesse et deviennent partie d'un éditeur sérieux. ### Ajouté ### Modifié ### Toujours manquant ## [v0.5.0] - reconstruction historique (SemVer officielle pré-Git) Jalon de la forte vagueKernelTablesLab. ### Ajouté ### Modifié ### Toujours manquant ## [v0.4.0] - reconstruction historique (SemVer officielle pré-Git) Jalon où le projet apprend à dire « oui » et « non » dans le texte avec de vrais critères. ### Ajouté ### Modifié proven reader;conservative writer;blocked; ### Toujours manquant ## [v0.3.0] - reconstruction historique (SemVer officielle pré-Git) Jalon où l'éditeur cesse d'être seulement un navigateur de fichiers et commence à toucher les surfaces AI, runtime et gameplay à haute valeur. ### Ajouté ### Modifié ### Toujours manquant ## [v0.2.0] - reconstruction historique (SemVer officielle pré-Git) Jalon de l'expansion structurelle de l'éditeur vers de grands systèmes visibles. ### Ajouté ### Modifié ### Toujours manquant ## [v0.1.0] - reconstruction historique (SemVer officielle pré-Git) Jalon minimum honnête où un vrai éditeur existait déjà, bien au-dessus d'un prototype jetable. ### Ajouté ### Modifié ### Toujours manquant ## [baseline-2026-05-31] - 2026-05-31 Importer initial honnête de la production dans Git. ### Ajouté ### Préservé ### Validé ### Notes ## Historique des mini-versions d'ateliers Note : ## [pt2-v0.3.0-superseded.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt3-v0.8.0-freeze.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt4-v0.5.0-hold.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt5-v0.9.0-final.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt6-v0.7.0-beta.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt7-v0.9.0-final.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt8-v0.7.0-freeze.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principaleShop Explorer;FfxLib/Shop;Assets/Shop;- garde-fous documentés dans
docs/history/PT8_SHOP_GUARDRAILS.md. ### Statut final ## [pt9-v0.6.0-alpha.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt10-v0.2.0-final.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt11-v0.3.0-blocked.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt12-v0.3.0-package.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt13-v0.3.0-package.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt14-v0.2.0-architecture.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt15-v0.2.0-architecture.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt16-v0.2.0-architecture.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt17-v0.3.0-guardrail.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt18-v0.3.0-governance.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt19-v0.3.0-surface.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt20-v0.2.0-strategy.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ##v2.227.0.0(2026-08-08) — Infra QA visuelle : modèles opencode FREE dansverboo_router.py(limites honnêtes + comparaison de puissance). MINOR. Lane Jarvis-CLINE. [précédent :v2.226.0.0] ##v2.226.0.0(2026-08-08) — Infra QA visuelle : intégration OpenCode Go (gpt-5.6-luna) + modedesc+ prompt UX humanisé + correctif de rapport. MINOR. Jarvis-CLINE. [précédent :v2.225.2.0] ##v2.225.2.0(2026-08-06) — F7 Monster AI Swap : statut-sur-capacité via RAM. MINOR. Lane Jarvis-HOOK. [précédent :v2.225.1.0] ##v2.225.1.0(2026-08-06) — Treasure Carte : parse d'en-tête ATEL + correctif de glossaire. PATCH. Lane Jarvis-CLINE. [précédent :v2.225.0.0]
v2.11.0BETA
Seymour
🧠 AI ASSEMBLER PRODUCTISÉ (un éditeur d'IA monstre utilisable) :
- l'« éditer l'IA 100 % librement » du codec est devenu une FONCTIONNALITÉ. Nouveau dans la voie
FfxLib/Ai+Modules/MonsterAiEditor: - Behavior library (
AiSnippetLibrary) : des modèles paramétrés dont les octets MIRRORENT les idiomes prouvés du corpus — linéaires (force-cmd/perform-cmd/grant-field/set-stat/raw-call) et conditionnels (rotation RNG 1-sur-K, force-command sur événement pour contre/phase). - Validateur de pré-vol (
AiValidator) : opcode∈48, HasOperand vs 0x80, branche/point d'entrée pendant (nomme lequel, au lieu du throw opaque), plages d'opérandes, auto-vérification RT0, Rebuild dry-run, grow/shrink ;SaveAssemblerest désormais défensif (refuse d'écrire sur erreur). - Sélecteur de commande convivial (
AiCommandId) : opérande performCommand ↔ nom via(cat<<12)|idsurCommandCharacter/CommandMonster1_Dictionary; menu déroulant UI (plus d'hex brut). - Nouvelles primitives de codec (
AiScript_File) :GrowWorkerJumpTable(ajoute des slots à la table de sauts d'un worker — permet une NOUVELLE branche) +AppendGuardedAction(prépende une action gardée à un point d'entrée, en préservant le handler d'origine) +OperandKindOf. - UI dans
MonsterAiEditor: carte Bibliothèque de comportements + bouton/rapport Validate + menu déroulant de commande. - Porte
AiScriptLab --ai2PASS (corpus réel, 361) : jump-grow 898/898 workers, action gardée 692/692 (premier+dernier point d'entrée) + sentinelle synthétique 1/1, validateur propre 346/346, AiCommandId 620/620, capture positive 8/8/8 (jumpOOB via le chemin éditeur). Porte RT0--d'origine 361/361 intacte. - Une revue adverse à 4 agents a trouvé + corrigé 2 bugs (boucle auto de la sentinelle un-past-end ;
OperandKindabandonné sur le chemin de sauvegarde de l'éditeur), désormais verrouillés par la porte. Docs :docs/reverse/FFX_AI_JUMPTABLE_GROW_PROVEN_2026-06-05.md+docs/ai/FFX_AI_ASSEMBLER_PRODUCTIZED_2026-06-05.md. - ⚠️ Structure prouvée HORS LIGNE ; le comportement en jeu (RT2) en attente de l'OK de Halyson (sonde). Modèles « soigner un allié < 25 % HP » et « enrage au tour N » NON livrés (ancre champ-HP / compteur de tours non confirmée au niveau octet).
SUCESSOR_FFX_HD_MODELOS_MASTER_2026-06-05.mdfermés pour sum/npc. - Textures (pilotées par manifeste) :
extract-texture-batchdansRuntimeTools/PhyreModelExportLaba gagné--from-manifest, qui lit le<id>.ahwin32deg_fileNames[](manifeste d'actifs faisant autorité) et extrait la texture EXACTE que le jeu charge. 305 PNG (pc/npc/sum), carte de provenancetexture-provenance-map.json, 0 décalage silencieux. RE : l'ahwin32est un en-tête C lisible — résout les cross-refs (c906←c106,c908←c108,c806←c805) ET multi-texture (c101+c101_01,n238+n238_hair,n356←n238_hair) sans IDA. Bonus : la clé d'héritage de rig NPC =0x6NNNdans le.chr(map nXXX→kNNN, 222/222 valides). Docdocs/reverse/FFX_AHWIN32_ASSET_MANIFEST_2026-06-05.md. - Cuisson (mesh+texture+anim) : driver
work/_scratch_mgrp/bake_cast.pyviaphyre_chr_gate. Statique 253/253 (toute la distribution texturée, propre). Animé : sum utilise son propre mouvement, npc hérite deskl/<base>. - QA visuelle (workflow, 21 agents vision) : 248 animés triés via F3D — 157 propres / 58 torsion / 33 explosés. Le bind picker (rest/A1) sur les 33 n'a pas corrigé.
- 🔧 CORRECTION Tourbillon (2026-06-06) : F3D MENSAIT sur l'animation skinnée. Le diagnostic Tourbillon (mesh
EXPLODE_RATIO≈1.0, pas de croissance) + le rendu Eevee véridique ont prouvé que les « explosés » ont un corps intact, seul un membre/accessoire est étiré. Re-QA (8 agents sur des rendus Tourbillon) corrige à 175 propres (71 %) / 59 torsion (24 %) / 14 explosés (6 %) — 20 modèles sauvés, la cuisson hors ligne a toujours été ~94 % utilisable. Les 14 véritables = 11 Aeons + 3 npc (rig non humanoïde ; nécessite RE mocap/carte de parenté). Règle mise à jour : l'écran BLENDER décide, F3D ment. Pipelinework/_scratch_mgrp/blender_{diagnose,render_anim,batch_render}.py. - 🎯 RETARGET RÉSOLU via
--retarget-delta(2026-06-06) : 175→215 propres (87 %). Nouveau drapeauphyre_chr_gatequi applique le mouvement hérité comme un delta depuis frame0 sur le REST du npc (M=restLocal·inv(m0)·mf), préservant les proportions du npc au lieu d'imposer celles de la base. La RE IDA a prouvé que le remap.chr@0x30était déjà appliqué — la cause était le retarget de la pose de repos, pas le remap (docFFX_INHERITED_MOTION_REMAP_RUNTIME_2026-06-06.md). Pilot+batch de 73 ratés + re-QA Tourbillon + keep-best par modèle : +40 propres, 44 sauvés, ZÉRO régression (1 gardé car il régresse). NPC animé = 200/222 propres (90 %), 0 explosé ; 8 Aeons toujours explosés (mesh immunitaire → mocap). Résout le §2.4 « A1-universel » du MASTER sans le risque d'A1. - 🐉 DISTRIBUTION ENTIÈRE fermée hors ligne (2026-06-06) : 498/643 propres (77 %), 90 % utilisable. QA Tourbillon véridique étendue + retarget-delta + keep-best au reste : obj/wep/pc (46 propres/55, distribution des persos propre) ET les 340 MONSTRES. L'ancienne QA monstre (bbox) revendiquait « 0 explosion » = un mensonge ; la QA Tourbillon véridique (29 agents) a trouvé 127 vrais ratés ; retarget-delta sur les 66 hérités → 36 promus, monstres 206→237 propres. Total animé (643) : 498 propres / 86 torsion / 51 explosés / 8 vides. Résiduel (9 %) = mesh divergent / bind dégénéré → mocap/mesh-RE, pas du retarget.
- obj/wep/pc (2026-06-06) : même pipeline étendu — statique obj 110/110 + wep 79/79 + pc 34/49 (15 échecs pc = slots factices
c8xxsans.chrPS2). Distribution HD statique entière = 476 modèles. obj/wep surtout rigides (anim éparse 25/7) ; spot-check à l'écran : f001/w001/c004=Auron propres. - Galerie
work/cast_hd_gallery.html(model-viewer, bascule statique/anim, filtre sum/npc/obj/wep/pc). Tout danswork/(gitignoré) : seules les COMMANDES sont du code. Pas de bump csproj (lab/RE dans RuntimeTools).FFX_TOOLBOX_DISCOVERY_PLAYBOOK_2026-06-05.md) : un balayage en ligne + vérification de licence des outils externes FFX HD/PS2 (VBF, Phyre, kernel.bin, ATEL, FMOD, TM2, FMV) et des NuGets de l'éditeur. Découvertes clés vérifiées : External File Loader (ffgriever, BSD-2) fichiers détachés sans re-pack, Kaitai Struct (runtime C# MIT) pour générer des lecteurs C#+JS, fahrenheit (MIT, C#) framework de mod hook+DLL, et confirmation que FFXDataParser N'A PAS DE LICENCE (étude seulement). La colonnetested?est toujours❌— le test oracle contre le corpus local est en attente, plan inclus dans le doc lui-même. Doc-only : pas de bump csproj (règle doc-only lab/RE). 58dossiers empaquetés ;- un manifeste par dossier ;
- une copie miroir Git-safe sous
docs/history/DOSSIÊ FFX 01-06-2026/; - un rapport d'exclusion pour le seul binaire externe géant bloqué par les limites de taille de GitHub.
- des bases de connaissances séparées par portée d'atelier ;
- un atlas maître agrégé ;
- la racine
KNOWLEDGE_BASE.mdcomme point d'entrée unique ; - un plan de fusion officiel ;
- une annexe des ateliers dépendants
Pt6/Pt9; - des lignées de familles techniques formelles pour le projet.
merge in docsExtras nowExtras laterfrozen researchhistorical cleanupps3dataffx_ps2- clôture exécutive
- recueil des ateliers enfants
- atlas runtime/AI
- bootstrap du successeur
- tableau de maturité court
Extras nowverdictExtras laterverdict- frontières de la recherche figée
- rôle produit
Pt67dérivé ps3datavsffx_ps2séparation- livre de règles de provenance
- facettes de citation obligatoires ### Ajouté
important.bina_ability.binReadNo-Edit Byte IdentityReread- contrats de jetons de texte additifs dans
FFXProjectEditor/FfxLib/Text/* - un utilitaire de décision pure validation / round-trip
TextLabTools/TextContractHarnesscomme premier consommateur smoke côté productiondocs/history/BATTLE_AI_FRONTIER_2026-05-31.mddocs/history/MODELVIEWER_BINDING_FRONTIER_2026-05-31.mddocs/history/PT23_TO_PT34_KNOWLEDGE_BASE.mddocs/history/PT23_TO_PT34_CHANGELOGS.mddocs/history/PT23_TO_PT34_BRANCH_MAP.mddocs/history/PT23_TO_PT45_CODE_KNOWLEDGE_BASE.mddocs/history/PT23_TO_PT45_CHANGELOGS.mddocs/history/PT23_TO_PT45_BRANCH_MAP.mdKNOWLEDGE_BASE.mddocs/history/PT2_TO_PT11_KNOWLEDGE_BASE.mddocs/history/PT12_TO_PT22_KNOWLEDGE_BASE.mddocs/history/PT23_TO_PT45_KNOWLEDGE_BASE.mddocs/history/PT2_TO_PT45_MASTER_KNOWLEDGE_BASE.mddocs/history/PT6_PT9_DEPENDENT_WORKSHOPS_ANNEX.mddocs/history/NON_FFX_EDITOR_THREADS_ANNEX.mddocs/history/PT_FAMILY_LINES_ANNEX.mddocs/history/OFFICIAL_MERGE_PLAN_2026-05-31.mddocs/history/PS3DATA_FULL_TREE_RESEARCH_PLAN.mddocs/history/PS2_FULL_TREE_RESEARCH_PLAN.mddocs/history/PT50_TO_PT58_ABSORPTION_PLAN.mddocs/history/PT52_TO_PT58_CLOSEOUT_REPORT_2026-05-31.mddocs/history/PT50_PT51_HISTORICAL_CLEANUP_2026-05-31.mddocs/history/PT6_TEMPORARY_CLOSEOUT_2026-05-31.mddocs/history/PT6_CHILD_WORKSHOPS_COMPENDIUM.mddocs/history/PT6_RUNTIME_AI_DISCOVERY_ATLAS.mddocs/history/PT6_SUCCESSOR_BOOTSTRAP.mdhistory/pt23-battleai-structurehistory/pt24-exactlaunch-seamhistory/pt25-selectorbank-materializationhistory/pt26-battlestate-diffhistory/pt27-routereplay-truthhistory/pt28-battlecapacity-prephistory/pt29-keyitem-crashfixhistory/pt30-autoability-crashfixhistory/pt31-geometryviewport-blockhistory/pt32-chrcarrier-decodehistory/pt33-aislice-payloadhistory/pt34-legacybridge-narrowing### ModifiéCurrentWorkspaceOverviewCurrentMonsterEditorCurrentItemsCurrentBattleExplorerCurrentLiveBattleLabCurrentStringExplorerEncodeSafeDecodeOnlyRawPreserveUnknownRiskReuseOriginalBytesReencodeAllowedBlocked- wrappers opérationnels pour la ligne
Extras / ps3datacible - micro-ateliers AI
Pt6 / Pt23utiles avec connaissance préservée et statut archive-safe merge nowmerge laterExtras/read-onlyknowledge onlyPt56,Pt52,Pt54,Pt58= attaque maintenant dans le logicielPt57et des parties dePt53/Pt55= attaque plus tard, toujours en lecture seulePt53,Pt55,Pt57= recherche agressive sans sur-revendicationPt50,Pt51= nettoyage historique avant qu'ils ne comptent comme sources propresMagicPackageViewerBatEffPackageViewerMagicEffectCrosswalkExplorernever blind merge### Validé- l'objectif
- l'utilité
- la probabilité de fusion
- un mini-changelog par atelier
binding truthlangage- resserrement fort pour
owner/target/parentage/commit - base de garde-fous pour
Pt6etPt23 formation 0..7enemy actor rows 0..10rawMonsterId -> corpuscomposition truthvsactor-surface truthPt46 / AIBlobParityGrammarLabPt47 / AIRuntimeDispatchLabPt48 / SafeAIMicroProbeLabcomme partie de l'héritage runtime/AI, même sans revendication d'écrivain ou de patcheur.- base ancienne vague
Pt2..Pt11 - base vague moyenne
Pt12..Pt22 - base vague lourde
Pt23..Pt45 - un seul atlas agrégé avec mémoire/runtime/binding/guardrails
- satellites de
Pt6 - satellites de
Pt9 - exceptions côté production
Pt29/30 Model Viewer / BindingBattle / AI / Runtime TruthText SafetyKernel / ShopTooling / Safety / ReleaseProduction Crashfixes### Notes ### Prévu ### BacklogTextSourceCapabilityIndex*StringExplorercâblage UI0x10 + 0x120x13### Bloqué ## [v2.13.0] - 2026-06-05 ### Ajouté ### Notes ## [v2.12.0] - 2026-06-05 ### AjoutéFfxLib/BattleMap/BattleArenaPositionWriter.csqui ré-estampille les X/Y/Z de chaque acteur dans le tableau d'ancres du chunk3 EN PLACE (monstres sur le terrain = pointeur+0x20; aussi party/aeon/staging parrole), value-only : ne touche jamais l'en-tête/les pointeurs/le compte/les autres chunks, préserve W verbatim. Comme la transformée bataille→scène est IDENTITÉ (prouvée par IDA, v2.10.0.1), une coordonnée choisie dans l'espace de scène est écrite verbatim. Même motif slot-safe queFormationSlotWriter(garde + backup-onceWriteLooseFile). ### Validé RT0 (no-edit == byte-identique) 862/862, POSITION-ONLY (diff confiné au tableau+0x20) 862/862, RE-READ 862/862, + CYCLE DE VIE DE SAUVEGARDE (no-edit/edit/restore sur une copie temporaire) PASS. BiancaCatalogLab + AuroraChamberLab + BattleArenaPositionLab (auparavant omises). CI complet PASS (7/7 portes) : ReverseHarness, AiScriptLab, FormationSlotLab, AbilityCommandLab + les 3 nouvelles. ### Différé hors ligne ; l'écran en jeu est l'arbitre. Ajouter/retirer un slot de monstre (varier le compte) = structurel (Rebuild), ensuite. ## [v2.11.1] - 2026-06-05 ### Ajouté qui filtre les lignes de dialogue par contenu textuel, et (2) un filtre de langue (cases à cocher English/Japanese, English par défaut) — auparavant JP et EN étaient déversés dans la MÊME liste (le japonais en premier = un mur de japonais).EventExplorer_DataModelrefactoré (allTextRows+ApplyTextFilter, anglais en premier) + axaml (TextBox de recherche + CheckBoxes JP/US). NE touche PAS l'écrivain (Tier 1 reste--event-rt0397/397 + édition 12/12). ### Notes injection de traduction, hors du périmètre de l'écrivain). La recherche de mots se fait dans l'événement sélectionné. ## [v2.10.0.1] - 2026-06-05 ### Prouvé (RE / IDA, hors ligne) copie les coordonnées (locales à la bataille) du chunk3 VERBATIM dans le nœud monde de l'acteur — pas de flip-Z, d'échelle ou de rotation ; seul Y gagne une hauteur de modèle par acteur (actor+0x534). Comme la scène.dae.phyre== le cadre de sommets Phyre brut 1:1, P_scene(X,Y,Z) = P_battle(X,Y,Z) (s=1, R=I, T=0). Chaîne prouvée :FFX_Battle_AreaChunk_GetSetPosition(0x7AC000; base chunk30x112A9B0; copie 4 floats verbatim ; pos monde de l'acteur @+0x3B0) →FFX_Battle_ResolveActorPlacement(0x7A9AE0) →FFX_Battle_GetActorByIndex(0x794030, stride0xF90== ennemi RT2). La supposition flip-Z était un artefact d'inclure les rangées de staging hors terrain (arrière de party Z≈-168). Doc :docs/reverse/FFX_AURORA_BATTLE_TO_SCENE_TRANSFORM_IDA_PROVEN_2026-06-05.md(+ rename-queue pour le vrai.i64). ### Modifié (Aurora Chamber — honnêteté) place les ancres directement en coordonnées de scène (le défaut était déjà l'identité) et le toggle flip-Z devient DISPROVEN/comparaison ;aurora-actors.jsondecoordSpace=scene_world_identity_ida_proven. ### Différé≈ chunk3(résiduel ~0) + mesurer le terme Y exact. Sonde AUTORISÉE par Halyson ; n'attend plus que le jeu ouvert (LECTURE via la sonde existante, aucun code nouveau). SPIRA FORGE reste en pause. ## [v2.10.0] - 2026-06-05 ### Ajouté n'est plus en lecture seule. Éditer le dialogue de cutscene/événement est désormais un BOUTON.FfxLib/Event/Event_File.Write.cs(nouveau) : reconditionnement de conteneur EV01 fidèle aux octets — chaque chunk ré-aligné sur0x40, la table d'offsets absolus + le terminateur EOF recalculés (magic + sentinelle0xFFFFFFFFpréservés). No-edit = VERBATIM garanti ; le texte édité réutiliseTextTable_File.Write(chunks JP=1/EN=4) ; script ATEL (0), Inconnu 2 et FTCX (3) préservés octet pour octet. Hook Tier 2ScriptChunkOverride(re-stitch d'un chunk-0 édité).Event_File.cs: capture l'en-tête brut + les tables de texte ; tolère les entrées field-string à pointeur nul (8 fichiers) en préservant le chunk verbatim (frontière édit-texte documentée).TextTable_File.Writesurcharge additive (includeTrailingPadding): émet table+pool sans padding interne (le conteneur re-pad à 0x40). Ne casse PAS--textstr-rt0(défaut = comportement hérité).Modules/EventExplorerest devenu un ÉDITEUR de dialogue : chaînes JP/EN éditables (TextBox TwoWay) + un bouton « Save dialogue » qui re-conditionne et écrit le.ebp. (FfxLib/Ai/AiScript_File.cs, utilisé en lecture seule comme donneur) lit/édite le script d'événement (même famille AiFile).- PATCH d'opérande local aux octets PROUVÉ (12/12) : éditer un opérande du chunk-0 ne change que ces octets ; le conteneur re-coud identiquement ailleurs ; la relecture porte le nouvel opérande.
- GROW (AppendCode) est une frontière documentée : l'
AppendCodedonneur (fait pour la bataille, descripteurs en DATA) ne relocalise pas les descripteurs résidant en en-tête qu'utilisent les scripts d'événement ([0x38..scriptStart)) — nécessite une relocalisation consciente de l'événement (à coordonner avec la voie Assembleur d’IA). ### Validé 12/12** (échanger une chaîne → reconditionner → relire : la chaîne éditée correspond, les chunks intacts verbatim, idempotent). 397/397 ; patch d'opérande local aux octets 12/12. L'éditeur compile avec 0 erreurs. (0 ruptures), EOF==taille de fichier, sentinelle0xFFFFFFFF. Docs dansdocs/reverse/FFX_EVENT_*_2026-06-05.md. ### Honnêteté / Différé encore éditables en texte). Tier 2 = patch prouvé ; append/grow + création structurelle = Tier 3, documenté pas fermé. Vérification préférée hors ligne par byte-RT0 ; le RT2 en jeu du dialogue édité est toujours recommandé. ## [v2.9.0] - 2026-06-05 ### Ajouté de scènes btlmap des 25 zones) au MapViewer et sort les coordonnées des acteurs du chunk3. Dédié à Aurora & Bianca. 💛 - Scene Picker consomme
BattleMapCatalog_File/BattlefieldSceneResolver(lecture seule) — liste/sélectionne les scènes par zone et map-key. - Render pilote
PhyreMapExportLab(export glTF à la demande de la scène btlmap) et ouvreFFXMapViewerWebvia le deep-link?catalog=/?map=/?actors=— un mini-catalogue par scène, ne touchant jamais lecatalog.jsonpartagé ni ne réécrivantapp.js. - Coordonnées via le nouveau lecteur
FfxLib/BattleMap/BattleArenaAnchors_File.cs(pur/sans Avalonia) : décode le chunk3 (enregistrement de zone 96B, pointeurs+0x10..+0x2C, monstres vivants+0x20, éléments XYZW 16B Y-up), liste les ancres locales à la bataille et exporte du JSON pour l'Encounter Authoring. gizmos d'ancres depuis?actors=+ un mode « pick » (raycast sur le plan y=0 → coordonnées monde). Non-intrusif (hookwindow.ffxMapViewerDebug; no-op sans?actors/pick ; n'édite jamaisapp.js). ### Validé klyt00_00/sins02_00/mihn00_00 == coordonnées prouvées par doc) ; corpus 862/862 propre (0 NaN/Inf, W==0 sur les monstres vivants) ; déterministe ; pipeline BIANCA→scène→bataille→ancres 52/52 scènes mappées portent des ancres. 10 804 triangles,gatePass: true). L'éditeur compile avec 0 erreurs (vérifié dans un worktree HEAD isolé). ### Honnêteté / Différé NON CALIBRÉE** (P_scene = R·s·P_battle + T ; flip-Z/yaw-180 non résolus) — les ancres sont brutes et locales à la bataille, pas exactes pour le moteur. Calibration par sonde = Wave 3 (nécessite l'OK de Halyson). SPIRA FORGE reste EN PAUSE ; Aurora ne fait que CONSOMMER MapViewer + BIANCA (lecture seule/additif), sans jamais démarrer le hub. ## [v2.8.0] - 2026-06-05 ### Ajouté (catalogue les 25 zones / 56 scènes dups3data/btlmapHD —<area>NN_<variant>avecmdl/d3d11/<leaf>.dae.phyre) +FfxLib/BattleMap/BattlefieldSceneResolver.cs. Pur/sans Avalonia, compile dans l'éditeur (0 erreurs). « azit03 »), PAS le u16battlefield(c'est un id d'arène global, partagé entre les cartes —bf=1061couvre nagi/test/tori/zzzz). Doc :docs/reverse/FFX_BATTLEFIELD_SCENE_BRIDGE_2026-06-05.md. pointeur+0x20(float32 X,Y,Z,W ; Y-up ; W=0 ; stride 16 octets ; slot de formation ↔ entrée). Party+0x10, aeon+0x18, caméra+0x2C. Doc :docs/reverse/FFX_BATTLE_FORMATION_POSITION_CHUNK3_DECODED_2026-06-05.md. (-- export --ps3-root <ps3data> --area btlmap/azit/azit03_a). Plan d'overlay des acteurs + calibration des coordonnées par sonde (DESIGN) :docs/ai/FFX_AURORA_COORDINATE_SYSTEM_AND_CALIBRATION_2026-06-05.md(sonde uniquement avec l'OK de Halyson). ### Validé déterministe ; 56/56 scènes avec exactement un modèle primaire ; pont avec 0 ratés inexpliqués (22 cartes orphelines HD = cut/PS2-only ATTENDU ; 4 scènes orphelines bika04/grid00/nagi03/sfia00 = boss/histoire ATTENDU). ### Différé la sonde DINPUT8 nécessite l'OK de Halyson et SPIRA FORGE est EN PAUSE. ## [v2.7.1] - 2026-06-05 ### Ajouté / Validé WeaponNameTable, MacroDictionary, NameDescriptionTextTable, NameDescriptionTextPrefixTable, BtlTextTable, SphereGrid, ShopGearCatalog, BukiGetTreasureCatalog, AlBhedDictionary, PointerScriptTable, BattleTextTable, ShopTable. Motif Preserve-only (WriteIdentitypour les reconstructions avec perte). Nouveau gate-sweepTools/Wave1Rt0.cs. ## [v2.7.0] - 2026-06-05 ### Ajouté échange la partition AiFile contre une de LONGUEUR DIFFÉRENTE, pad de 16 sur l'AiFile, décale les sections suivantes et réécrit les pointeurs de sections de l'en-tête (m###.bin), en écrivant l'AiFile verbatim (pas de clobber codeLength). L' UI de l'Assembleur d’IA sauvegarde désormais le grow/shrink (avant, longueur préservée uniquement). Cause du clobber documentée + corrigée par design (Option B : surface minimale, ne touche PASMonster_File.Write→--monster-rt0reste 361/361). VM depuis les comptes de workers + le datalen par worker (arrondi à 16) (PAS partition/DeclaredLength/codeLength) et fait confiance aux pointeurs du fichier → la relocalisation grow est honorée et le pad de fin est sûr. (règle d'or : rename-queue.) ### Validé (insert → splice conscient du grow → relecture propre + queue/en-tête préservés verbatim + aligné sur 16 + idempotent), SHRINK 346/346 (retirer une instr non ciblée → delta négatif → relecture propre + queue préservée).--monster-rt0361/361 (aucune régression). Alignement du corpus : 16/32/64/128/256, 0 pad de fin. (free-edit) »** rendue avec la liste d'instructions éditables (opcode/operand/remove) + Insert/Save Structural + aperçu. Capturework/spira_forge_qa/monster_ai_assembler_v01.png. ### Différé sonde DINPUT8 (partagée) — sous l'OK explicite de Halyson. Hors ligne + RE prouvent la sûreté octets/jeu ; l'écran en jeu est l'arbitre final. ## [v2.6.0] - 2026-06-05 ### Ajouté (insert / remove / modify) par-dessus l'éditeur d'opérandes local aux octets. L'AiFile reconstruit vient deAiScript_File.Rebuild(prouvé RT0 : relocalise les points d'entrée + les tables de sauts via une map ancien→nouveau). Liste éditable (opcode/operand hex + case remove), insert-after-selected, aperçu de delta. La sauvegarde n'est activée que pour les éditions qui préservent la longueur (codeLength inchangé) → splice byte-safe viaSpliceAiFileIntoMonster. GROW/SHRINK est LAB (message honnête) : la sauvegarde loose-file nécessite un relayout de monstre conscient de l'en-tête + un padding d'alignement + une preuve en jeu. --ctbbase-rt0→CtbBase_File(ctb_base.bin), preserve-only.--mixtable-rt0→MixTable_File(prepare.bin), preserve-only.--aiasm-rt0→ prouve la sauvegarde structurelle de l'Assembleur d’IA (Rebuild no-edit + relayout + splice byte-identiques) et mesure l'alignement AiFile→WorkerFile du corpus. ### Validé l'édition préservant la longueur est byte-safe. Grow=LAB (cause : l'en-tête 0x34 deMonster_FilechevaucheAiFile[0..4)=codeLength + un changement de longueur casse l'alignement WorkerFile ; le corpus est aligné 16/32/64/128/256, 0 pad de fin). ### Bloqué / LAB ## [v2.5.0] - 2026-06-05 ### Ajouté (Open Spector,Capture Next Frame,Export Last Capture) plus un premier panneauMaterial Debugavec un inventaire en direct des matériaux glTF chargés, un sélecteur, des puces de faits et des cartes de texture par slot (map,normalMap,aoMap,envMap, etc.). enregistre ce qui a atterri, ce qui a été validé et ce qui reste explicitement hors preuve. ### Validé contrôles sont apparus et le panneauMaterial Debugs'est rempli depuis le glTF chargé. fiable, le visualiseur dégrade versFrame preview unavailable/Texture preview unavailable on this source surfaceau lieu de prétendre montrer une preuve visuelle valide. ## [v2.4.4] - 2026-06-05 ### Ajouté batailles sélectionnables du champ ; en choisir une publie versFieldContext.SelectedBattleIdet le Formation Editor saute directement à cette bataille (charge sa formation). Réalise le « cliquez une zone, échangez la formation » du masterplan via la colonne vertébrale partagée, sans plomberie de shell.FieldContexta gagnéSelectedBattleId/SelectBattle. ### Validé 37 BattleIds sans dossier + 37 dossiers jamais référencés (batailles spéciales/événements) — la passation filtre vers ceux qui existent. Editor a sauté vers la bataille chargée). Capturework/spira_forge_qa/handoff_encounter_to_formation_v04.png. ## [v2.4.3.1] - 2026-06-05 ### Reverse / Preuve de la passation (CONTINUE_AQUI_PERNAS_HD) : la map « 52m_skeletonMatrices→ 79 joints » vit dans le fichier Phyre, pas dans IDA.- La palette de skin est
PMatrix4[0..51](liée depuis le champ 12 dePMesh) ; elle égale lem_skeletonMatricesvivant octet pour octet (maxDist=0.00000). - La map slot→nœud est l'
intà l'offset 12 de chaquePSkeletonJointBounds[j](52 slots → 52 nœuds, bijection). - Composer
m_defaultPoseviam_matrixParentsreproduit l'inverse-bind authored EXACTEMENT :0/52nœuds divergent. Donc--hd-defpose+--hd-parentsest déjà le vrai bind du jeu. - Cause racine de la spirale historique : une cuisson sans
--hd-defpose/--hd-parentsretombe surinvBind = PMatrix4[52+b](matrice LOCAL brute) → le mesh explose. La recette defpose+parents est le correctif et est déjà le défaut de la galerie. - Nouvelles sondes en lecture seule :
work/_scratch_mgrp/phyre_palette_probe(localise la palette, prouve que le bind est exact, émetnode_to_slot.json) etphyre_legs_probe(matcher ; illustre le piège de la translation coïncidente). ### Validé c007 (Rikku) — en repos forcé, en bataille (id5_c4318 t0.0–0.9), 4 angles de mollet en accroupissement profond, et multi-clip (c4333/c4365/c4886). Numériquement : les matrices locales/monde des articulations de jambe sont des rigides parfaits (scale=1, det=+1, ortho 0.0000). Pas d'IDA. Preuve complète dansdocs/reverse/FFX_HD_SKIN_PALETTE_DECODED_LEGS_NOT_BIND_2026-06-05.md. ## [v2.4.3] - 2026-06-05 ### Ajouté existaient déjà mais n'avaient jamais été passés aux portes d'octets, fermant 4 familles de bases éditables de plus : --keyitem-rt0(Tools/KeyItemRt0) →KeyItem_File(important.bin), écrivain preserve-only (clone les octets d'origine + ré-estampille uniquementPrimerByte10/OrderingByte13).--treasure-rt0(Tools/TreasureRt0) →Treasure_File(takara.bin), round-trip full-decode (4 octets/entrée).--customization-rt0(Tools/CustomizationRt0) →Customization_Filegear kaizou.bin + aeon sum_grow.bin (préserve le préfixe/la queue de l'en-tête + ré-émet les entrées décodées).--autoability-rt0(Tools/AutoAbilityRt0) →AutoAbility_File.WriteAbilities(a_ability.bin, section DATA), écrivain preserve-only. (Litarms_rate.binuniquement pour satisfaire le contrat de lecture ; n'écrit PAS arms_rate et ne couvre PASWriteAbilitiesAndText/le re-pack de texte.) ### Validé takara.bin (503 entrées, 2012 B), kaizou.bin (125) + sum_grow.bin (77), a_ability.bin (134 entrées, 19590 B). Sauvegarde no-edit = byte-identique ; édition = locale aux octets (même motif preserve-only qui a fermé Monster/Encounter). Lève partiellement la réserve historique « important.bin/a_ability.bin bloqués pour les revendications d'écrivain mutation-safe » : l'édition de champs (section de données) est désormais prouvée ; le re-pack du pool de texte reste non revendiqué (même risque de dérive style monmagic — hors périmètre pour cette porte). ## [v2.4.2] - 2026-06-05 ### Ajouté en ligne (ex.[m003 - Murussu, m003 - Murussu, m009 - Dingo]). Chargé paresseusement + mis en cache + plafonné (≤90 batailles visibles ; avec la liste complète il demande de filtrer par zone). Lecture seule ; apporte le « zones peintes avec les monstres qui y apparaissent » du masterplan dans l'éditeur (fusion encounter↔formation rendue visible). ## [v2.4.1] - 2026-06-05 ### Ajouté (garde slot-only + backup-once.spiraforge.bak+ écriture). Désormais utilisé par le Formation Editor (PersistSnapshot) ET testé par la porte headless — même code dans l'éditeur et le test, aucune duplication. ### Validé workspace/l'actif, lecture seule respectée) : (a) Sauvegarde no-edit = disque byte-identique + backup==original ; (b) Sauvegarde éditée = slot-only sur disque + relecture conforme + backup préservé ; (c) restauration depuis le backup = byte-identique. PASS. Ferme le manque d'honnêteté v0.2 (sauvegarde in-app prouvée sur disque, réversible). Corpus toujours 858/858 ;offline_ci4 portes PASS. ## [v2.4.0] - 2026-06-05 ### Ajouté Entries/Groups/Formations (comptes VARIABLES + tables de création), attribue de nouveaux dataOffsets, reconstruit le chunk0 + la table de chunks, préserve le partage de blocs + le padding. Porte--encounter-rebuild-rt0. La base structurelle pour « CRÉER DES ENCOUNTERS ». ### Validé (4096/4096)** + test de croissance (ajouter 1 formation, fin 0x1000→0x1002, 2 chunks intacts) valide. famille ; corrigé la dérive du padding de fin. Note honnête : les enregistrementshelp_txt.binde StringExplorer sont MORTS dans cette extraction (fichier absent) — l'écrivain est prouvé sur un vrai field-string (spcodedic.bin). ## [v2.3.2] - 2026-06-05 ### Ajouté (Ability_Command.ReadList→WriteList), queKernelCommandsutilise déjà pour Sauvegarder mais qui n'avait jamais été passé aux portes d'octets. Référence le projet éditeur (arbre de dépendances profond), n'appelle que des méthodes FfxLib statiques. Câblé dansoffline_ci.ps1. ### Validé (1 octet) 4/4. PASS. C'est la fondation prouvée pour le rêve « nouvelle magie noire » (vit dans command.bin). ### Bloqué monmagic original partage/déduplique le texte alors queWriteListré-ajoute (FfxEncoding.WriteBytesIntoTextFilene fait qu'ajouter ; command/item sont en ajout pur → ils correspondent). Risque : la sauvegarde MonMagic de KernelCommands gonfle le fichier — passer à la porte jusqu'à ce qu'un écrivain conscient de la dédup passe. Cible d'audit + correctif :docs/reverse/FFX_ABILITY_WRITER_AUDIT_2026-06-05.md. ## [v2.3.1] - 2026-06-04 ### Ajouté au-delà de l'EOF (kino03_*,mihn05_*,cdsp00_02) : traite le chunk au-delà de l'EOF (et après) comme absent au lieu de rejeter tout le fichier ; les chunks précédents (dont la formation @2) restent valides. Ces batailles sont désormais éditables dans le Formation Editor. ### Validé relecture 858/858 PASS. Les 843 précédents inchangés. ## [v2.3.0] - 2026-06-04 ### Ajouté monstres (16 octets) d'une formation btl_* viaBattle_File.WriteWithFormationSlots, slot-only byte-safe. Consomme la colonneFieldContext(pré-filtre les batailles par la zone de champ sélectionnée du Hub). Picker de monstres (Monster_Dictionary+ Empty, préserve le high nibble brut). La sauvegarde écrit un loose-file de workspace avec un backup.spiraforge.bak+ la gardeAssertSlotOnlyDiff, viaByteSnapshotEditorSession(Undo/Discard). Hors ligne, sans sonde.offline_ci.ps1(paramètre-BtlRoot). Membres en lecture seule additifs surBattle_File(FormationChunkOffset/FormationSlotsOffset/FormationSlotsLength). ### Validé (15 btl_* non analysables par le lecteur à l'époque — corrigés en v2.3.1.) ## [v2.2.0] - 2026-06-04 ### Ajouté de navigation clé parfield_token. Picker de champ alimenté par le CSV de pont (ps3data-map-btlmap-fieldid-bridge.csv, 357 champs, candidat structurel). Sélectionner un champ publie versFieldContext(singleton observable) et 2 consommateurs réagissent en lecture seule : map deep-link (?map=map/<area>/<field>pour FFXMapViewerWeb) + aperçu d'encounter (litbtl.binviaEncounterTable_File, jointure candidate zone↔map). CSV copié vers la sortie via csproj<Content>. Hors ligne ; le picker tourne sans projet. Pas d'écrivain, pas de sonde. ### Validé Capturework/spira_forge_qa/field_hub_v01.png. ## [v2.1.1] - 2026-06-04 ### Validé porte--player-rt0:ply_save.bin(3098) +ply_rom.bin(2161) -> no-edit RT0 byte-identique. (Les écrivains existaient déjà en slot-only ; désormais passés aux portes.) ## [v2.1.0] - 2026-06-04 ### Ajoutébtl.binoctet pour octet et ré-estampille uniquement les champs éditables (tableId/Unknown0C, groupeBattlefield/Danger/TotalWeight, formationId/Weight). Porte--encounter-rt0dans l'éditeur. ### Validé ## [v2.0.0] - 2026-06-04 > NOUVELLE ÈRE — MAJEUR. L'éditeur est passé de « édition de fichiers hors ligne » à ÉDITION LIVE RUNTIME PROUVÉE : > éditer le bytecode IA d'un monstre en RAM et voir le comportement changer à l'écran, sans crash, réversible — > le but suprême n°1 du projet, réalisé. MAJEUR = une nouvelle classe de capacité (pas une rupture de contrat/sauvegarde/build > — nous avons seulement ajouté et durci).-betacar RT2/God-Mode ne sont pas encore productisés en UI passée aux portes. > Jalon de la vague Claude Code / VSCode + l'union avec le 2e compte Codex. ### Points forts change à l'écran — Flambos de feu Brasier X→Foudre X, sans crash, réversible. Chaîne :enemy-list(0xD34460) ->MemoryChr.Ptr_script_chunks(+0xF78) -> l'AiFile live === lem0NN.bindisque byte-identique. action globale — le monstre n'a pas besoin de la « posséder ». Preuve : un Lycaon a craché le Divine Comédie d'Ifrit à l'écran. revive de données (drapeaux de mort + KO), tout viaMemoryChr+ sonde. ### Ajouté données** (+delta) -> un AiFile plus grand valide (le chemin vers « ADD AI », au-delà du budget local aux octets). étiquettes de saut + type de worker inféré), édition d'opérandes + sauvegarde loose-file.FFX_MUSIC_SYSTEM_AND_MOD_IDEA(Music Remapper),FFX_AI_BYTECODE_OPCODE_TABLE_PROVEN,CODEX_MAPVIEWER_WATCH_JARVIS,FFX_MAP_DEVELOPMENT_TOOL_MASTERPLAN(Spira Forge). ### Modifié / Validé StatSheet/Loot + préserver la Signature/Padding de l'en-tête (le Padding chevauchaitAiFile[0..3]). ### Bloqué / Différé (honnête) (rebuild jeu-fermé). Lecteur trouvé :FFX_FmodMusic_PlayTrackByIndex(181 pistes) ; le FIFO SPU PS2 est stub sur HD. ### Absorbé depuis les Labs / Multi-agent union avec le 2e compte Codex (voie MapViewer / modèle-texture) : l'exporteur expose désormais des signaux de rôle de matériau (TextureSampler1/normalMap/reflection/water/PhyreWaterShader), comparaison par visualiseur externe (glTF-Sample-Viewer comme oracle ; écart prouvé côté exporteur, pas côté shell), et le kickoff du masterplan Spira Forge. Coordination multi-agent journalisée dansdocs/ai/CODEX_MAPVIEWER_WATCH_JARVIS.md. ## [v1.7.0] - 2026-06-04 ### AjoutéAppendCode: ajoute des instructions à la fin + relocalise la section de données.Rebuild: insère/supprime/modifie une instruction N'IMPORTE OÙ + relocalise AUTOMATIQUEMENT tous les sauts + points d'entrée (map de lien ancien→nouveau) + la section de données. Branche orpheline (instr supprimée) -> erreur honnête. ### Validé les workers se résolvent, le point d'entrée post-insertion relocalisé0x2D1→0x2D4tout seul ; grow-test (AppendCode) RT0. ## [v1.6.0] - 2026-06-04 ### Validé StatSheet/Loot + préserver laSignature/Paddingde l'en-tête (le Padding chevauchaitAiFile[0..3]). ## [v1.5.0] - 2026-06-04 ### Validé / Bloqué live BLOQUÉ** (API FMOD__thiscall, sonde cdecl-only). DocFFX_MUSIC_SYSTEM_AND_MOD_IDEA(Music Remapper). ## [v1.4.0] - 2026-06-04 ### Validé (live) — le monstre n'a pas besoin de la « posséder ». Preuve : un Lycaon a craché le Divine Comédie d'Ifrit à l'écran. ## [v1.3.1] - 2026-06-04 ### Corrigé / Validé (live) de mort). Auto-scan (statutScan) basculé en live. ## [v1.3.0] - 2026-06-04 ### Validé (live) (POINTER_BATTLE_ENEMY_LIST 0xD34460, stride0xF90) + sonde. ## [v1.2.0] - 2026-06-04 ### Ajouté étiquettes de saut) + édition d'opérandes + sauvegarde loose-file. ## [v1.1.0] - 2026-06-04 ### Validé (🏆 MANCHETTE — but suprême n°1) le comportement change à l'écran (Flambos de feu Brasier X→Foudre X), sans crash, réversible. Chaîne :enemy-list 0xD34460->MemoryChr.Ptr_script_chunks +0xF78-> live AiFile === diskm0NN.binbyte-identical. Doc :docs/reverse/FFX_AI_RT2_LIVE_EDIT_PROVEN_2026-06-04.md. ## [v1.0.0] - 2026-06-01 Jalon de maturité pour l'éditeur comme plateforme réelle de lecture, validation et navigation de connaissances, avec assez de surface produitExtraspour justifier un1.0honnête même si les boss runtime, AI et body-playback restent ouverts. ### Points fortsPS2 KnowledgeTextures (TM2 + TXC/CLT/FMT/SPS2 support lane)BIN-FTC AtlasProject / PipelineMagic EffectsPresentation ContainersBattle Corpus Crosswalk### AjoutéMagicPackageViewerBatEffPackageViewerMagicEffectCrosswalkExplorerFtcHeaderInspectorBinSidecarGraphSignature Groupgroupe dans le shellTxcCltPairExplorer- métadonnées froides
fmt/sps2métadonnées ### Modifié ### Validé read-onlydo not promoteno runtime proofle cas échéantpipeline/support onlyle cas échéant ### Notesmagic solvedAI solvedModelViewer playback solved- une autorisation large d'écrivain ## [v0.11.0-beta.2] - 2026-06-01 Vraie évolution produit pour la ligne
Extrasdansmain. ### Points forts masterffx_ps2ps3dataPS2 KnowledgeTextures (TM2)BIN-FTC AtlasProject / Pipeline### AjoutéExtrasSourceResolverExtrasEvidenceBadgeModelExtrasProvenanceModelExtrasReadonlyBoundaryModelExtrasFileOpenServiceCdIndexExplorerProjectDescriptorViewerAbmapSupportGraphdocs/history/PT52_BIN_FTC_FILE_MEANING_GUIDE_2026-06-01.mddocs/history/PT53_BATTLE_MAGIC_FILE_MEANING_GUIDE_2026-06-01.mddocs/history/PT54_PROJECT_ABMAP_FILE_MEANING_GUIDE_2026-06-01.mddocs/history/PT56_TEXTURE_PALETTE_FILE_MEANING_GUIDE_2026-06-01.mddocs/history/PT57_PRESENTATION_CONTAINER_FILE_MEANING_GUIDE_2026-06-01.mddocs/history/PT58_FFX_PS2_OWNERSHIP_AND_LINKAGE_GUIDE_2026-06-01.md### Modifié ### Validé- pas d'écrivain
- pas de re-pack
- aucune revendication de décodage final
- aucun mélange de recherche froide avec la preuve runtime ### Notes
kernel -> mag_* -> bat_eff## [v0.10.0-beta.1] - 2026-05-31 Bêta de consolidation de la branche principale après la première vague forte d'absorption d'ateliers curatée. ### Points forts ### AjoutéShop ExplorerFfxLib/ShopAssets/Shop- un écrivain gardé pour
item_shop.binetarms_shop.bin NameDescriptionTextPrefixTable_Filereader + no-edit guardpourimportant.binreader + no-edit guardpoura_ability.bin### Modifié ### Validé ### Différé ### Bloqué ## [v0.9.0-beta.1] - 2026-05-31 Première version qui assume honnêtement la taille réelle de l'éditeur et de son écosystème. ### Points forts de la branche principale ### Surface de production présente dans main ### Absorbé depuis les ateliersTextLabTools;ProductionAuditTools;- harness texte/monstre conservateur et release.
PlayerGrowthEditor;CtbBaseEditor;MixTableEditor;- la ligne historique qui a ensuite porté
KeyItemEditor. AutoAbilityEditor;- parseurs conservateurs de
AutoAbility_File.csetArms_Rate.cs. Shop Explorer;FfxLib/Shop;Assets/Shop;- écrivain gardé pour
item_shop.binetarms_shop.bin. ### Gouvernance et versionnage ### Validé ### Toujours bloqué ### Pourquoi c'est encore bêta ## Reconstruction sémantique historique Note éditoriale importante : ## [v0.8.0-beta.1] - reconstruction historique (pré-SemVer officielle Git) Jalon où l'écosystème fonctionne déjà comme un grand éditeur modulaire avec plusieurs fronts spécialisés vivants en même temps. ### Surface principale à ce stade ### Pression de l'écosystème ### Toujours manquant ## [v0.7.0] - reconstruction historique (pré-SemVer officielle Git) Jalon où la ligne principale passe de « plus de modules » à « plus de preuve ». ### Ajouté ### Modifié ### Pas encore sûr ## [v0.6.0] - reconstruction historique (pré-SemVer officielle Git) Jalon où la ligne kernel et le durcissement conservateur des systèmes secondaires cessent d'être une promesse et deviennent partie d'un éditeur sérieux. ### Ajouté ### Modifié ### Toujours manquant ## [v0.5.0] - reconstruction historique (pré-SemVer officielle Git) Jalon de la forte vagueKernelTablesLab. ### Ajouté ### Modifié ### Toujours manquant ## [v0.4.0] - reconstruction historique (pré-SemVer officielle Git) Jalon où le projet apprend à dire « oui » et « non » en texte avec de vrais critères. ### Ajouté ### Modifié proven reader;conservative writer;blocked; ### Toujours manquant ## [v0.3.0] - reconstruction historique (pré-SemVer officielle Git) Jalon où l'éditeur cesse d'être seulement un navigateur de fichiers et commence à toucher aux surfaces AI, runtime et gameplay à haute valeur. ### Ajouté ### Modifié ### Toujours manquant ## [v0.2.0] - reconstruction historique (pré-SemVer officielle Git) Jalon de l'expansion structurelle de l'éditeur vers de grands systèmes visibles. ### Ajouté ### Modifié ### Toujours manquant ## [v0.1.0] - reconstruction historique (pré-SemVer officielle Git) Jalon minimum honnête où un vrai éditeur existait déjà, bien au-dessus d'un prototype jetable. ### Ajouté ### Modifié ### Toujours manquant ## [baseline-2026-05-31] - 2026-05-31 Importer initial honnête de la production dans Git. ### Ajouté ### Préservé ### Validé ### Notes ## Historique des mini-versions d'ateliers Note : ## [pt2-v0.3.0-superseded.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt3-v0.8.0-freeze.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt4-v0.5.0-hold.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt5-v0.9.0-final.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt6-v0.7.0-beta.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt7-v0.9.0-final.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt8-v0.7.0-freeze.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principaleShop Explorer;FfxLib/Shop;Assets/Shop;- garde-fous documentés dans
docs/history/PT8_SHOP_GUARDRAILS.md. ### Statut final ## [pt9-v0.6.0-alpha.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt10-v0.2.0-final.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt11-v0.3.0-blocked.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt12-v0.3.0-package.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt13-v0.3.0-package.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt14-v0.2.0-architecture.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt15-v0.2.0-architecture.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt16-v0.2.0-architecture.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt17-v0.3.0-guardrail.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt18-v0.3.0-governance.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt19-v0.3.0-surface.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final ## [pt20-v0.2.0-strategy.1] - 2026-05-31 ### Mission ### Évolution ### Résultat sur la branche principale ### Statut final