Aggiornamento 2.11
05/06/2026
v2.11.0BETA
Seymour
🧠 AI ASSEMBLER PRODUCTIZED (un editor monster-AI utilizzabile):
- l'"edit the AI 100% libero" del codec è diventato una FEATURE. Nuovo nella lane
FfxLib/Ai+Modules/MonsterAiEditor: - Libreria dei comportamenti (
AiSnippetLibrary): template parametrizzati i cui byte RISSPECCHIANO gli idiom (letterale tecnico: MIRROR) del corpus provato — lineari (force-cmd/perform-cmd/grant-field/set-stat/raw-call) e condizionali (RNG 1-in-K rotate, force-command on-event per counter/phase). - Pre-flight validator (
AiValidator): opcode∈48, HasOperand vs 0x80, ramo/punto di ingresso scollegato (nomina quale, invece del throw opaco), range operandi, self-check RT0, Rebuild dry-run, grow/shrink;SaveAssemblerora è difensivo (rifiuta di scrivere in caso di errori). - Selettore comando amichevole (
AiCommandId): operando performCommand ↔ nome via(cat<<12)|idsuCommandCharacter/CommandMonster1_Dictionary; dropdown UI (niente più hex grezzo). - Nuove primitive codec (
AiScript_File):GrowWorkerJumpTable(aggiunge slot alla jump-table di un worker — abilita un NUOVO branch) + (letterale tecnico: NEW)AppendGuardedAction(prepend una guarded action a un entrypoint, preservando l'handler originale) +OperandKindOf. - UI in
MonsterAiEditor: card Behavior Library + bottone Validate/report + dropdown comandi. - Gate
AiScriptLab --ai2PASS (corpus reale, 361): jump-grow 898/898 worker, guarded-action 692/692 (primo+ultimo entrypoint) + sentinel sintetico 1/1, validator pulito 346/346, AiCommandId 620/620, positive-catch 8/8/8 (jumpOOB via il percorso editor). Il gate RT0 originale--361/361 intatto. - Una review adversarial a 4 agenti ha trovato + fixato 2 bug (sentinel one-past-end self-loop; (letterale tecnico: A)
OperandKindscartato sul percorso di save dell'editor), ora bloccati dal gate. Docs:docs/reverse/FFX_AI_JUMPTABLE_GROW_PROVEN_2026-06-05.md+docs/ai/FFX_AI_ASSEMBLER_PRODUCTIZED_2026-06-05.md. - ⚠️ Struttura provata OFFLINE; comportamento in-game (RT2) in attesa dell'OK di Halyson (probe). I template "heal ally < 25% HP" e "enrage on turn N" NON shipped (anchor HP-field / turn-counter non byte-confermato). (letterale tecnico: NOT) (letterale tecnico: byte-confirmed)
SUCESSOR_FFX_HD_MODELOS_MASTER_2026-06-05.mdchiusi per sum/npc. - Textures (manifest-driven):
extract-texture-batchinRuntimeTools/PhyreModelExportLabha guadagnato--from-manifest, che legge<id>.ahwin32g_fileNames[](manifest autorevole degli asset) e estrae la TEXURE esatta che il gioco carica. (letterale tecnico: EXACT)305 PNG (pc/npc/sum), mappa di provenienzatexture-provenance-map.json, 0 mismatch silenzioso. RE: l'ahwin32è un C header leggibile — risolve i cross-ref ( (letterale tecnico: cross-refs)c906←c106,c908←c108,c806←c805) E multi-texture ( (letterale tecnico: AND)c101+c101_01,n238+n238_hair,n356←n238_hair) senza IDA. Bonus find: la chiave rig-inheritance degli NPC =0x6NNNnel.chr(mappa nXXX→kNNN, 222/222 valide). Docdocs/reverse/FFX_AHWIN32_ASSET_MANIFEST_2026-06-05.md. - Bake (mesh+texture+anim): driver
work/_scratch_mgrp/bake_cast.pyviaphyre_chr_gate. Statico 253/253 (intero cast texturizzato, pulito). Animato: sum ha motion propria, npc ereditaskl/<base>. - QA visiva (workflow, 21 agenti vision): 248 animati triaged via F3D — 157 puliti / 58 torsione / 33 esplosi. Il bind picker (rest/A1) sui 33 non ha risolto.
- 🔧 CORREZIONE Avvitamento (2026-06-06): F3D MENTIVA sull'animazione skinned. (letterale tecnico: CORRECTION) (letterale tecnico: LYING) La diagnosi Avvitamento (mesh
EXPLODE_RATIO≈1.0, nessuna crescita) + il render Eevee veritiero ha dimostrato che le istanze "esplose" hanno un corpo intatto, solo un arto/accessorio risulta stirato. La nuova QA (8 agenti sui render Avvitamento) (letterale tecnico: Re-QA)corregge a 175 puliti (71%) / 59 torsione (24%) / 14 esplosi (6%) — 20 modelli recuperati, il bake offline era sempre stato ~94% utilizzabile. I 14 genuini = 11 Aeon + 3 npc (rig non-umanoide; serve mocap/RE della parent-map). Regola aggiornata: (letterale tecnico: non-humanoid)decide lo SCHERMO BLENDER, F3D mente. Pipelinework/_scratch_mgrp/blender_{diagnose,render_anim,batch_render}.py. - 🎯 RETARGET RISOLTO via (letterale tecnico: RETARGET SOLVED)
--retarget-delta(2026-06-06): 175→215 puliti (87%). Nuovophyre_chr_gateflag che applica il motion ereditato come delta da frame0 sulla REST npc (M=restLocal·inv(m0)·mf), preservando le proporzioni npc invece di imporre quelle della base. La RE in IDA ha provato che il remap (letterale tecnico: IDA RE).chr@0x30era già applicato — la causa era il retarget della rest-pose, non il remap (docFFX_INHERITED_MOTION_REMAP_RUNTIME_2026-06-06.md). Pilota+batch di 73 fudidos + re-QA Avvitamento + per-model keep-best: +40 puliti, 44 recuperati, ZERO regressione (1 tenuto perché regredirebbe). NPC animati = 200/222 puliti (90%), 0 esplosi; 8 Aeon ancora esplosi (mesh immune → mocap). Risolve il MASTER §2.4 "A1-universal" senza il rischio di A1. - 🐉 INTERO CAST chiuso offline (2026-06-06): 498/643 puliti (77%), 90% utilizzabile. (letterale tecnico: WHOLE CAST) Estesa la truthful-Blender-QA + retarget-delta + keep-best al resto: obj/wep/pc (46 puliti/55, party puliti) E i (letterale tecnico: AND)340 MOSTRI (letterale tecnico: MONSTERS). La vecchia QA mostri (bbox) dichiarava "0 esplosioni" = una bugia; la truthful Avvitamento QA (29 agenti) ha trovato 127 fudidos reali; retarget-delta sui 66 ereditati → 36 promossi, mostri 206→237 puliti. Totale animati (643): 498 puliti / 86 torsione / 51 esplosi / 8 blank. Residuale (9%) = mesh divergente / bind degenerato → mocap/mesh-RE, non retarget.
- obj/wep/pc (2026-06-06): stessa pipeline estesa — statici obj 110/110 + wep 79/79 + pc 34/49 (15 fail pc = slot dummy
c8xxsenza.chrPS2). Intero cast HD statico = 476 modelli. obj/wep perlopiù rigidi (anim sparso 25/7); spot-check su schermo: f001/w001/c004=Auron pulito. - Gallery
work/cast_hd_gallery.html(model-viewer, toggle static/anim, filtro sum/npc/obj/wep/pc). Tutto inwork/(gitignored): solo i COMANDI sono codice. (letterale tecnico: COMMANDS)Nessun bump csproj (lab/RE in RuntimeTools).FFX_TOOLBOX_DISCOVERY_PLAYBOOK_2026-06-05.md): uno sweep online + license vetting degli strumenti FFX HD/PS2 esterni (VBF, Phyre, kernel.bin, ATEL, FMOD, TM2, FMV) e dei NuGet editor. Trovati chiave vettati: (letterale tecnico: NuGets)External File Loader (ffgriever, BSD-2) loose-file senza repack, Kaitai Struct (runtime C# MIT) per generare reader C#+JS, fahrenheit (MIT, C#) framework mod hook+DLL, e la conferma che FFXDataParser NON HA LICENZA (solo studio) (letterale tecnico: NO LICENSE). La colonnatested?è ancora❌— test oracle contro il corpus locale è pending, il piano è incluso nel doc stesso. Doc-only: nessun bump del csproj (regola lab/RE doc-only). 58dossier impacchettati;- un manifest per dossier;
- una copia mirror Git-safe sotto
docs/history/DOSSIÊ FFX 01-06-2026/; - un report di esclusione per l'unico gigantesco binario esterno bloccato dai limiti di dimensione di GitHub.
- knowledge base separate per range di workshop; (letterale tecnico: workshop-range)
- un atlante master aggregato;
- la root
KNOWLEDGE_BASE.mdcome unico entrypoint; - un piano di merge ufficiale;
- un'appendice
Pt6/Pt9dei workshop dipendenti; (letterale tecnico: dependent-workshops) - linee tecniche formali per famiglia per il progetto.
merge in docsExtras nowExtras laterfrozen researchhistorical cleanupps3dataffx_ps2- executive closeout
- child-workshop compendium
- runtime/AI atlas
- successor bootstrap
- short maturity board
Extras nowverdictExtras laterverdict- confini del frozen research
- derived
Pt67product role ps3datavsffx_ps2split- rulebook di provenienza
- facet di citazione obbligatori ### Added
important.bina_ability.binReadNo-Edit Byte IdentityReread- contratti token di testo additivi in
FFXProjectEditor/FfxLib/Text/* - un'utility di decisione pura validation / round-trip
TextLabTools/TextContractHarnesscome primo smoke consumer production-sidedocs/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### ChangedCurrentWorkspaceOverviewCurrentMonsterEditorCurrentItemsCurrentBattleExplorerCurrentLiveBattleLabCurrentStringExplorerEncodeSafeDecodeOnlyRawPreserveUnknownRiskReuseOriginalBytesReencodeAllowedBlocked- wrapper operativi per la
Extras / ps3datariga - micro-workshop AI utili
Pt6 / Pt23con conoscenza preservata e stato archive-safe (letterale tecnico: micro-workshops) merge nowmerge laterExtras/read-onlyknowledge onlyPt56,Pt52,Pt54,Pt58= attacco subito nel softwarePt57e parti diPt53/Pt55= attacco dopo, ancora read-onlyPt53,Pt55,Pt57= ricerca aggressiva senza overclaimPt50,Pt51= pulizia storica prima che contino come source puliteMagicPackageViewerBatEffPackageViewerMagicEffectCrosswalkExplorernever blind merge### Validated- scopo
- utilità
- probabilità di merge
- mini changelog per workshop (letterale tecnico: per-workshop)
binding truthlanguage- narrowing forte per
owner/target/parentage/commit - base guardrail per
Pt6ePt23 formation 0..7enemy actor rows 0..10rawMonsterId -> corpuscomposition truthvsactor-surface truthPt46 / AIBlobParityGrammarLabPt47 / AIRuntimeDispatchLabPt48 / SafeAIMicroProbeLabcome parte del legacy runtime/AI, anche senza claim di writer o patcher.- base old-wave
Pt2..Pt11 - base middle-wave
Pt12..Pt22 - base heavy-wave
Pt23..Pt45 - un unico atlante aggregato con memory/runtime/binding/guardrails
- satelliti di
Pt6 - satelliti di
Pt9 - eccezioni production-side
Pt29/30 Model Viewer / BindingBattle / AI / Runtime TruthText SafetyKernel / ShopTooling / Safety / ReleaseProduction Crashfixes### Notes ### Planned ### BacklogTextSourceCapabilityIndex*StringExplorerUI wiring0x10 + 0x120x13### Blocked ## [v2.13.0] - 2026-06-05 ### Added ### Notes ## [v2.12.0] - 2026-06-05 ### AddedFfxLib/BattleMap/BattleArenaPositionWriter.csri-stampa X/Y/Z di ogni actor nell'array anchor di chunk3 (letterale tecnico: re-stamps) IN PLACE (mostri on-field = puntatore+0x20; anche party/aeon/staging perrole), value-only: non tocca mai header/puntatori/count/altri chunk, preserva W verbatim. Poiché la trasformata battle→scene è IDENTITY (provata in IDA, v2.10.0.1), una coord scelta nello spazio scena viene scritta verbatim. Stesso pattern slot-safe di (letterale tecnico: IDA-proven)FormationSlotWriter(guard + backup-onceWriteLooseFile). ### Validated RT0 (no-edit == byte-identico) 862/862, POSITION-ONLY (diff confinato all'array (letterale tecnico: byte-identical)+0x20) 862/862, RE-READ 862/862, + SAVE LIFECYCLE (no-edit/edit/restore su una copia temp) PASS. BiancaCatalogLab + AuroraChamberLab + BattleArenaPositionLab (precedentemente esclusi). CI completa PASS (7/7 gate): ReverseHarness, AiScriptLab, FormationSlotLab, AbilityCommandLab + i 3 nuovi. ### Deferred offline; lo schermo in-game è l'arbitro. Add/remove dello slot mostro (variare il count) = strutturale (Rebuild), prossimo. ## [v2.11.1] - 2026-06-05 ### Added che filtra le righe del dialogo per contenuto testuale, e (2) un filtro lingua (checkbox English/Japanese, English di default) — prima JP e EN venivano scaricati nella STESSA lista (giapponese per primo = un muro di giapponese). (letterale tecnico: SAME) Refactoring diEventExplorer_DataModel(allTextRows+ApplyTextFilter, English-first) + axaml (TextBox di ricerca + CheckBox JP/US). (letterale tecnico: CheckBoxes)NON tocca il writer (letterale tecnico: NOT) (Tier 1 resta--event-rt0397/397 + edit 12/12). ### Notes un'iniezione di traduzione, fuori dallo scope del writer). La ricerca parole è dentro l'evento selezionato. ## [v2.10.0.1] - 2026-06-05 ### Proven (RE / IDA, offline) copies the chunk3 (battle-local) coordinates VERBATIM into the actor's world node — no flip-Z, scale, or rotation; only Y gains a per-actor model-height (actor+0x534). Since the.dae.phyrescene == the raw Phyre vertex frame 1:1, P_scene(X,Y,Z) = P_battle(X,Y,Z) (s=1, R=I, T=0). Proven chain:FFX_Battle_AreaChunk_GetSetPosition(0x7AC000; chunk3 base0x112A9B0; copies 4 floats verbatim; actor world pos @+0x3B0) →FFX_Battle_ResolveActorPlacement(0x7A9AE0) →FFX_Battle_GetActorByIndex(0x794030, stride0xF90== RT2 enemy). The flip-Z guess was an artifact of including off-field staging rows (party-back Z≈-168). Doc:docs/reverse/FFX_AURORA_BATTLE_TO_SCENE_TRANSFORM_IDA_PROVEN_2026-06-05.md(+ rename-queue for the real.i64). ### Changed (Aurora Chamber — honesty) piazza gli anchor direttamente in coord scena (il default era già identity) e il toggle flip-Z diventa DISPROVEN/comparison;aurora-actors.jsoncoordSpace=scene_world_identity_ida_proven. ### Deferred≈ chunk3(residuo ~0) + misurare il termine Y esatto. Probe AUTORIZZATO da Halyson; in attesa solo del gioco aperto (letterale tecnico: AUTHORIZED) (READ via la probe esistente, nessun codice nuovo). SPIRA FORGE resta in pausa. ## [v2.10.0] - 2026-06-05 ### Added container) non è più lettura-solo. (letterale tecnico: read-only)Modificare il dialogo di cutscene/evento ora è un BOTTONE. (letterale tecnico: BUTTON)FfxLib/Event/Event_File.Write.cs(nuovo): repack byte-faithful del container EV01 — ogni chunk ri-allineato a (letterale tecnico: re-aligned)0x40, la tabella offset assoluti + il terminatore EOF ricalcolati (magic + sentinella0xFFFFFFFFpreservate). No-edit = VERBATIM garantito; il testo modificato riusaTextTable_File.Write(chunk JP=1/EN=4); script ATEL (0), Sconosciuto 2 e FTCX (3) preservati byte-per-byte. Hook Tier 2 (letterale tecnico: byte-for-byte)ScriptChunkOverride(re-stitch di un chunk-0 modificato).Event_File.cs: cattura l'header grezzo + le text table; tollera le voci field-string a puntatore null (8 file) (letterale tecnico: null-pointer) preservando il chunk verbatim (frontiera text-editable documentata).TextTable_File.Write(includeTrailingPadding): emette tabella+pool senza padding interno (il container ri-padda a 0x40). (letterale tecnico: re-pads)NON rompe (letterale tecnico: NOT)--textstr-rt0(default = comportamento legacy).Modules/EventExplorerè diventato un EDITOR di dialogo: stringhe JP/EN editabili (TextBox TwoWay) + un bottone "Save dialogue" che re-impacchetta e scrive il (letterale tecnico: re-packs).ebp. (FfxLib/Ai/AiScript_File.cs, usato read-only come donatore) legge/modifica lo script evento (stessa famiglia AiFile).- PATCH operando byte-local PROVATO (12/12): (letterale tecnico: Byte-local) (letterale tecnico: PATCH PROVEN) modificare un operando di chunk-0 cambia solo quei byte; il container re-stitcha in modo identico altrove; la re-read porta il nuovo operando. (letterale tecnico: re-stitches)
- GROW (AppendCode) è una frontiera documentata: il
AppendCodedonatore (costruito per battle, descrittori in DATA) non riloca i descrittori header-resident che gli script evento usano ([0x38..scriptStart)) — serve una (letterale tecnico: event-aware) rilocazione event-aware (coordinarsi con la lane AI Assembler). ### Validated round-trip 12/12** (swap di una stringa → repack → re-read: la stringa modificata combacia, i chunk intatti verbatim, idempotente). 397/397; patch operando byte-local 12/12. L'editor compila 0 errori. (0 rotture), EOF==filesize, sentinella0xFFFFFFFF. Docs indocs/reverse/FFX_EVENT_*_2026-06-05.md. ### Honesty / Deferred text-editable). Tier 2 = patch provato; append/grow + authoring strutturale = Tier 3, documentato non chiuso. Verifica preferita offline byte-RT0; l'RT2 in-game del dialogo modificato è ancora raccomandato. ## [v2.9.0] - 2026-06-05 ### Added btlmap a 25 aree) al MapViewer e tira fuori le coordinate degli actor da chunk3. Dedicato ad Aurora & Bianca. 💛 - Scene Picker consuma
BattleMapCatalog_File/BattlefieldSceneResolver(read-only) — lista/selezione scene per area e map-key. - Render guida
PhyreMapExportLab(export glTF on-demand della scena btlmap) e apreFFXMapViewerWebvia il deep-link?catalog=/?map=/?actors=— un mini-catalogo per-scena (letterale tecnico: per-scene), senza mai toccare ilcatalog.jsoncondiviso né riscrivereapp.js. - Coordinates via il nuovo reader
FfxLib/BattleMap/BattleArenaAnchors_File.cs(puro/Avalonia-free): decodifica chunk3 (area-record 96B, puntatori+0x10..+0x2C, mostri live+0x20, elementi XYZW 16B Y-up), elenca gli (letterale tecnico: XYZW Y-up) anchor battle-local ed esporta JSON per Encounter Authoring. gizmo degli anchor da?actors=+ una modalità "pick" (raycast sul piano y=0 → coord world). Non intrusivo (hooka (letterale tecnico: Non-intrusive)window.ffxMapViewerDebug; no-op senza (letterale tecnico: no-ops)?actors/pick; non modifica maiapp.js). ### Validated klyt00_00/sins02_00/mihn00_00 == coord provate da doc); corpus (letterale tecnico: doc-proven)862/862 pulito (0 NaN/Inf, W==0 sui mostri live); deterministico; pipeline BIANCA→scene→battle→anchors 52/52 scene mappate portano gli anchor. 10.804 triangoli,gatePass: true). L'editor compila con 0 errori (verificato in un worktree HEAD isolato). ### Honesty / Deferred UNCALIBRATA (letterale tecnico: UNCALIBRATED)** (P_scene = R·s·P_battle + T; flip-Z/yaw-180 irrisolti) — gli anchor sono battle-local grezzi, non engine-exact. La calibrazione probe = Wave 3 (serve l'OK di Halyson). SPIRA FORGE resta IN PAUSA (letterale tecnico: PAUSED); Aurora si LIMITA a (letterale tecnico: CONSUMES) CONSUMARE MapViewer + BIANCA (read-only/additivo), senza mai avviare l'hub. ## [v2.8.0] - 2026-06-05 ### Added (cataloga le 25 aree / 56 scene dips3data/btlmapHD —<area>NN_<variant>conmdl/d3d11/<leaf>.dae.phyre) +FfxLib/BattleMap/BattlefieldSceneResolver.cs. Puro/Avalonia-free, compila dentro l'editor (0 errori). "azit03"), NON il (letterale tecnico: NOT)battlefieldu16 (quello è un id arena globale, condiviso tra le mappe —bf=1061copre nagi/test/tori/zzzz). Doc:docs/reverse/FFX_BATTLEFIELD_SCENE_BRIDGE_2026-06-05.md. puntatore+0x20(float32 X,Y,Z,W; Y-up; W=0; stride 16 byte; slot formazione ↔ entry). Party+0x10, aeon+0x18, camera+0x2C. Doc:docs/reverse/FFX_BATTLE_FORMATION_POSITION_CHUNK3_DECODED_2026-06-05.md. (-- export --ps3-root <ps3data> --area btlmap/azit/azit03_a). Piano actor-overlay + calibrazione coordinate probe (letterale tecnico: Actor-overlay) (DESIGN):docs/ai/FFX_AURORA_COORDINATE_SYSTEM_AND_CALIBRATION_2026-06-05.md(probe solo con l'OK di Halyson). ### Validated deterministico; 56/56 scene con esattamente un modello primario; ponte con 0 miss inspiegati (22 mappe (letterale tecnico: HD-orphan) HD-orphan = cut/PS2-only ATTESO; 4 scene orfane bika04/grid00/nagi03/sfia00 = boss/story ATTESO). (letterale tecnico: EXPECTED) (letterale tecnico: EXPECTED) ### Deferred la probe DINPUT8 richiede l'OK di Halyson e SPIRA FORGE è IN PAUSA. (letterale tecnico: PAUSED) ## [v2.7.1] - 2026-06-05 ### Added / Validated WeaponNameTable, MacroDictionary, NameDescriptionTextTable, NameDescriptionTextPrefixTable, BtlTextTable, SphereGrid, ShopGearCatalog, BukiGetTreasureCatalog, AlBhedDictionary, PointerScriptTable, BattleTextTable, ShopTable. Pattern Preserve-only (WriteIdentityper quelle lossy-rebuild). Nuovo gate-sweepTools/Wave1Rt0.cs. ## [v2.7.0] - 2026-06-05 ### Added scambia la partizione AiFile con una di LUNGHEZZA DIVERSA, (letterale tecnico: DIFFERENT)16-padda l'AiFile, sposta le sezioni successive e riscrive i puntatori di sezione dell'header (m###.bin), scrivendo l'AiFile verbatim (nessun clobber di codeLength). La UI dell'AI Assembler ora SALVA grow/shrink (prima era solo length-preserving). La causa del clobber è documentata + fixata by design (letterale tecnico: SAVES) (Opzione B: superficie minima, NON tocca (letterale tecnico: NOT)Monster_File.Write→--monster-rt0resta 361/361). VM da worker counts + per-worker datalen (round 16) (NON partition/DeclaredLength/codeLength) e (letterale tecnico: NOT)si fida dei puntatori in-file → la rilocazione grow è onorata e il trailing pad è safe. (golden rule: rename-queue.) ### Validated (insert → splice grow-aware → re-read pulita + tail/header preservati verbatim + 16-allineato + idempotente), SHRINK 346/346 (rimozione di un'istr non-target → delta negativo → re-read pulita + tail preservata). (letterale tecnico: non-targeted)--monster-rt0361/361 (nessuna regressione). Allineamento corpus: 16/32/64/128/256, 0 trailing pad. (free-edit)"** renderizzata con la lista istruzioni editabile (opcode/operando/remove) + Insert/Save Structural + anteprima. Screenshotwork/spira_forge_qa/monster_ai_assembler_v01.png. ### Deferred probe DINPUT8 (condivisa) — sotto l'OK esplicito di Halyson. Offline + RE provano byte/game-safety; lo schermo in-game è l'arbitro finale. ## [v2.6.0] - 2026-06-05 ### Added (insert / remove / modify) sopra l'editor operando byte-local. L'AiFile ricostruito viene daAiScript_File.Rebuild(provato RT0: riloca entrypoint + jump table via una mappa old→new). Lista editabile (letterale tecnico: RT0-proven) (opcode/operando hex + checkbox remove), insert-after-selected, anteprima delta. Save abilitato solo per edit length-preserving (codeLength invariato) → splice byte-safe viaSpliceAiFileIntoMonster. GROW/SHRINK è LAB (messaggio onesto): il save loose-file richiede un relayout mostro header-aware + padding di allineamento + prova in-game. --ctbbase-rt0→CtbBase_File(ctb_base.bin), preserve-only.--mixtable-rt0→MixTable_File(prepare.bin), preserve-only.--aiasm-rt0→ prova il save strutturale dell'AI Assembler (no-edit Rebuild + relayout + splice byte-identici) (letterale tecnico: byte-identical) e misura l'allineamento AiFile→WorkerFile del corpus. ### Validated l'editing length-preserving è byte-safe. Grow=LAB (causa: l'header 0x34 diMonster_Filesi sovrappone adAiFile[0..4)=codeLength + un cambio di lunghezza rompe l'allineamento WorkerFile; il corpus è 16/32/64/128/256-allineato, 0 trailing pad). ### Blocked / LAB ## [v2.5.0] - 2026-06-05 ### Added controlli (Open Spector,Capture Next Frame,Export Last Capture) più un primoMaterial Debugpanel con inventario live dei materiali glTF caricati, un selettore, fact chip, e card texture per-slot (map,normalMap,aoMap,envMap, ecc.). registra cosa è atterrato, cosa è stato validato, e cosa resta esplicitamente fuori dalla prova. ### Validated controlli sono apparsi, e il pannelloMaterial Debugsi è popolato dal glTF caricato. affidabile, il viewer degrada aFrame preview unavailable/Texture preview unavailable on this source surfaceinvece di fingere di mostrare evidenza visiva valida. ## [v2.4.4] - 2026-06-05 ### Added selezionabili; sceglierne una pubblica suFieldContext.SelectedBattleIde la Formation Editor salta dritto a quella battaglia (carica la sua formazione). Realizza il "click su una zona, swap della formazione" del masterplan via la spine condivisa, senza plumbing di shell.FieldContextha guadagnatoSelectedBattleId/SelectBattle. ### Validated 37 BattleId senza cartella + 37 cartelle mai referenziate (battaglie special/event) — l'handoff filtra verso (letterale tecnico: BattleIds) quelle che esistono. Editor saltato alla battaglia caricata). Screenshotwork/spira_forge_qa/handoff_encounter_to_formation_v04.png. ## [v2.4.3.1] - 2026-06-05 ### Reverse / Proof dell'handoff (CONTINUE_AQUI_PERNAS_HD): la mappa "52m_skeletonMatrices→ 79 joint" vive nel file Phyre, non in IDA.- La palette skin è
PMatrix4[0..51](linkata dalPMeshcampo 12); è uguale allem_skeletonMatricesbyte-per-byte (letterale tecnico: byte-for-byte) (maxDist=0.00000). - The slot→node map is the
intat offset 12 of eachPSkeletonJointBounds[j](52 slots → 52 nodes, bijection). - Comporre
m_defaultPoseattraversom_matrixParentsriproduce l'inverse-bind authorato EXACTLY:0/52nodi divergono. Quindi--hd-defpose+--hd-parentsè già il bind reale del gioco. - Causa root della spira storica: un bake senza
--hd-defpose/--hd-parentsricade suinvBind = PMatrix4[52+b](matrice LOCALE grezza) → la mesh esplode. La ricetta defpose+parents è il fix ed è già il default della gallery. - Nuove probe read-only:
work/_scratch_mgrp/phyre_palette_probe(localizza la palette, prova che il bind è esatto, emettenode_to_slot.json) ephyre_legs_probe(matcher; illustra la trappola della traslazione coincidente). (letterale tecnico: coincident-translation) ### Validated c007 (Rikku) — in rest forzato, battaglia (id5_c4318 t0.0–0.9), 4 angoli polpaccio in un deep crouch, e multi-clip (c4333/c4365/c4886). Numericamente: le matrici locali/world delle joint di gamba sono rigid perfetti (scale=1, det=+1, ortho 0.0000). (letterale tecnico: leg-joint) Nessuna IDA. Prova completa indocs/reverse/FFX_HD_SKIN_PALETTE_DECODED_LEGS_NOT_BIND_2026-06-05.md. ## [v2.4.3] - 2026-06-05 ### Added esistenti ma mai byte-gated, chiudendo 4 altre famiglie concrete di editable-base: --keyitem-rt0(Tools/KeyItemRt0) →KeyItem_File(important.bin), writer preserve-only (clona i byte originali + ri-stampa solo (letterale tecnico: re-stamps)PrimerByte10/OrderingByte13).--treasure-rt0(Tools/TreasureRt0) →Treasure_File(takara.bin), round-trip full-decode (4 byte/voc).--customization-rt0(Tools/CustomizationRt0) →Customization_Filegear kaizou.bin + aeon sum_grow.bin (preserva il prefisso/coda dell'header + ri-emette le voci decodificate). (letterale tecnico: re-emits)--autoability-rt0(Tools/AutoAbilityRt0) →AutoAbility_File.WriteAbilities(a_ability.bin, DATA section), preserve-only writer. (Readsarms_rate.binonly to satisfy the read contract; does NOT write arms_rate and does NOT coverWriteAbilitiesAndText/text repack.) ### Validated takara.bin (503 voci, 2012 B), kaizou.bin (125) + sum_grow.bin (77), a_ability.bin (134 voci, 19590 B). Save no-edit = byte-identico; edit = byte-local (letterale tecnico: No-edit) (letterale tecnico: byte-identical) (lo stesso pattern preserve-only che ha chiuso Monster/Encounter). Alza parzialmente il caveat storico "important.bin/a_ability.bin bloccati per claim di writer mutation-safe": l'editing di campo (data-section) ora è provato; il repack del text-pool resta non reclamato (lo stesso rischio (letterale tecnico: monmagic-style) di drift stile monmagic — fuori scope per questo gate). ## [v2.4.2] - 2026-06-05 ### Added inline (es. (letterale tecnico: e.g)[m003 - Murussu, m003 - Murussu, m009 - Dingo]). Lazy-loaded + cachato + limitato (≤90 battaglie visibili; con la lista completa chiede di filtrare per area). Read-only; porta nel editor il "zone dipinte con i mostri che spawnano lì" del masterplan (fusione encounter↔formation resa visibile). ## [v2.4.1] - 2026-06-05 ### Added di produzione (guardia solo-slot + backup una tantum (letterale tecnico: slot-only) (letterale tecnico: backup-once).spiraforge.bak+ scrittura). Ora usato dal Formation Editor (PersistSnapshot) E (letterale tecnico: AND) testato dal gate headless — stesso codice nell'editor e nel test, nessuna duplicazione. ### Validated workspace/asset, read-only rispettato): (a) Save no-edit = disco byte-identico + backup==originale; (b) edit Save = (letterale tecnico: byte-identical) solo-slot su disco + reread che combacia + backup preservato; (c) restore dal backup = byte-identico. (letterale tecnico: slot-only) (letterale tecnico: byte-identical)PASS. Chiude il gap di onestà v0.2 (save in-app provato su disco, reversibile). Corpus ancora 858/858;offline_ci4 gate PASS. ## [v2.4.0] - 2026-06-05 ### Added Entries/Groups/Formations (count VARIABILI + create tables), assegna dataOffsets freschi, ricostruisce chunk0 + (letterale tecnico: VARIABLE) la chunk table, preserva block-sharing + padding. Gate--encounter-rebuild-rt0. La base strutturale per "CREATE ENCOUNTERS". ### Validated (4096/4096)** + grow-test (add 1 formation, fine 0x1000→0x1002, 2 chunk intatti) valido. fixato il drift del trailing padding. Nota onesta: le registrazionihelp_txt.bindi StringExplorer sono MORTE in questa estrazione (file assente) — il writer è provato su un field-string reale ( (letterale tecnico: DEAD)spcodedic.bin). ## [v2.3.2] - 2026-06-05 ### Added (Ability_Command.ReadList→WriteList), cheKernelCommandsusa già per il Save ma non era mai stato byte-gated. Riferisce il progetto editor (deep dep tree), chiama solo metodi FfxLib statici. Cablato inoffline_ci.ps1. ### Validated (1 byte) 4/4. PASS. Questa è la fondazione provata per la feature dream "new Black magic" (vive in command.bin). ### Blocked monmagic originale condivide/dedup il testo mentreWriteListri-appende ( (letterale tecnico: re-appends)FfxEncoding.WriteBytesIntoTextFilesolo appende; command/item sono puro-append → combaciano). (letterale tecnico: pure-append)Rischio: il Save MonMagic di KernelCommands gonfia il file — gattalo finché un writer dedup-aware non passa. Audit + target di fix:docs/reverse/FFX_ABILITY_WRITER_AUDIT_2026-06-05.md. ## [v2.3.1] - 2026-06-04 ### Added oltre EOF (kino03_*,mihn05_*,cdsp00_02): tratta il chunk oltre-EOF (e oltre) come assente invece di (letterale tecnico: past-EOF) rifiutare l'intero file; i chunk precedenti (incl. formation @2) restano validi. Quelle battaglie ora sono editabili nell' Formation Editor. ### Validated re-read 858/858 PASS. I precedenti 843 invariati. ## [v2.3.0] - 2026-06-04 ### Added mostri (16 byte) di una formazione btl_* viaBattle_File.WriteWithFormationSlots, byte-safe slot-only. Consuma la spineFieldContext(pre-filtra le battaglie per l'area di campo selezionata nell'Hub). Monster picker (letterale tecnico: pre-filters) (Monster_Dictionary+ Empty, preserva il nibble alto grezzo). Il Save scrive un loose-file del workspace con.spiraforge.bakbackup + guardiaAssertSlotOnlyDiff, tramiteByteSnapshotEditorSession(Undo/Discard). Offline, nessuna probe.offline_ci.ps1(param-BtlRoot). Membri additivi read-only suBattle_File(FormationChunkOffset/FormationSlotsOffset/FormationSlotsLength). ### Validated (15 btl_* non parsabili dal reader all'epoca — fixati in v2.3.1.) ## [v2.2.0] - 2026-06-04 ### Added navigazione chiavata dafield_token. Field picker alimentato dal CSV bridge (ps3data-map-btlmap-fieldid-bridge.csv, 357 campi, structural-candidate). Selezionare un campo pubblica suFieldContext(singleton osservabile) e 2 consumer reagiscono read-only: map deep-link (?map=map/<area>/<field>per FFXMapViewerWeb) + encounter peek (leggebtl.binviaEncounterTable_File, join candidato area↔map). CSV copiato in output via<Content>del csproj. Offline; il picker gira senza progetto. Nessun writer, nessuna probe. ### Validated Screenshotwork/spira_forge_qa/field_hub_v01.png. ## [v2.1.1] - 2026-06-04 ### Validated--player-rt0gate:ply_save.bin(3098) +ply_rom.bin(2161) -> no-edit RT0 byte-identical. (I writer esistevano già slot-only; ora gated.) ## [v2.1.0] - 2026-06-04 ### Addedbtl.binbyte-for-byte e ri-stampa solo i campi editabili (tabella (letterale tecnico: re-stamps)Id/Unknown0C, groupBattlefield/Danger/TotalWeight, formationId/Weight). Gate--encounter-rt0nell'editor. ### Validated ## [v2.0.0] - 2026-06-04 > NUOVA ERA — MAJOR. (letterale tecnico: NEW ERA) L'editor è passato da "editing di file offline" a PROVEN LIVE RUNTIME EDITING: > modificare il bytecode AI di un mostro in RAM e vedere il comportamento cambiare su schermo, senza crash, reversibile — > il supreme goal #1 del progetto, realizzato. MAJOR = una nuova classe di capacità (non una rottura di contract/save/build > — abbiamo solo aggiunto e indurito).-betaperché RT2/God-Mode non sono ancora productizzati in UI gated. > Pietra miliare della ondata Claude Code / VSCode + l'unione con il 2° account Codex. ### Highlights cambia su schermo — Budino di fiamme Firaga→Thundaga, senza crash, reversibile. Catena:enemy-list(0xD34460) ->MemoryChr.Ptr_script_chunks(+0xF78) -> AiFile live === discom0NN.binbyte-identico (letterale tecnico: byte-identical). l'abilità globale — il mostro non deve "possederla". Prova: uno Scoor ha sputato le Fiamme infernali di Ifrit su schermo. data revive (flag di morte + KO), tutto viaMemoryChr+ probe. ### Added offset** (+delta) → un AiFile più grande e valido (il percorso verso "ADD AI", oltre il budget byte-local). etichette jump + tipo worker inferito), editing operandi + 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). ### Changed / Validated per StatSheet/Loot + header Signature/Padding preservato (il Padding si sovrapponeva adAiFile[0..3]). ### Blocked / Deferred (honest) (rebuild a gioco chiuso). Player trovato: (letterale tecnico: game-closed)FFX_FmodMusic_PlayTrackByIndex(181 tracce); il FIFO SPU PS2 è stubbato su HD. (letterale tecnico: PS2 SPU FIFO) ### Absorbed from Labs / Multi-agent l'unione con il 2° account Codex (lane MapViewer / model-texture): l'exporter ora espone segnali di (letterale tecnico: material-role) material-role (TextureSampler1/normalMap/reflection/water/PhyreWaterShader), confronto con viewer esterno (letterale tecnico: external-viewer) (glTF-Sample-Viewer come oracle; gap provato lato exporter, non shell), e il kickoff del masterplan (letterale tecnico: exporter-side)Spira Forge. La coordinazione multi-agente è loggata in (letterale tecnico: Multi-agent)docs/ai/CODEX_MAPVIEWER_WATCH_JARVIS.md. ## [v1.7.0] - 2026-06-04 ### AddedAppendCode: appende istruzioni alla fine + riloca la data section.Rebuild: insert/remove/modify di un'istruzione OVUNQUE (letterale tecnico: ANYWHERE) + riloca AUTOMATICAMENTE tutti i (letterale tecnico: AUTOMATICALLY) jump + entrypoint (mappa linker old→new) + la data section. Branch orfano (istr rimossa) -> errore onesto. ### Validated i worker risolvono, l'entrypoint post-inserzione rilocato (letterale tecnico: post-insertion)0x2D1→0x2D4da solo; grow-test (AppendCode) RT0. ## [v1.6.0] - 2026-06-04 ### Validated per StatSheet/Loot + headerSignature/Paddingpreservato (il Padding si sovrapponeva adAiFile[0..3]). ## [v1.5.0] - 2026-06-04 ### Validated / Blocked live BLOCCATO (letterale tecnico: BLOCKED)** (API FMOD (letterale tecnico: FMOD API)__thiscall, probe cdecl-only). DocFFX_MUSIC_SYSTEM_AND_MOD_IDEA(Music Remapper). ## [v1.4.0] - 2026-06-04 ### Validated (live) GLOBALE — il mostro non deve "possederla". Prova: uno Scoor ha sputato le Fiamme infernali di Ifrit su schermo. ## [v1.3.1] - 2026-06-04 ### Fixed / Validated (live) di morte). Auto-scan (statusScan) alternato live. ## [v1.3.0] - 2026-06-04 ### Validated (live) (POINTER_BATTLE_ENEMY_LIST 0xD34460, stride0xF90) + probe. ## [v1.2.0] - 2026-06-04 ### Added etichette jump) + editing operandi + Save loose-file. ## [v1.1.0] - 2026-06-04 ### Validated (🏆 HEADLINE — supreme goal #1) il comportamento cambia su schermo (Budino di fiamme Firaga→Thundaga), senza crash, reversibile. Catena:enemy-list 0xD34460->MemoryChr.Ptr_script_chunks +0xF78-> live AiFile === diskm0NN.binbyte-identico (letterale tecnico: byte-identical). Doc:docs/reverse/FFX_AI_RT2_LIVE_EDIT_PROVEN_2026-06-04.md. ## [v1.0.0] - 2026-06-01 Traguardo di maturità per l'editor come vera piattaforma di lettura, validazione e navigazione della conoscenza, con abbastanza superficie prodotto (letterale tecnico: knowledge-navigation)Extrasda giustificare un onesto1.0anche se i boss runtime, AI e body-playback restano aperti. ### HighlightsPS2 KnowledgeTextures (TM2 + TXC/CLT/FMT/SPS2 support lane)BIN-FTC AtlasProject / PipelineMagic EffectsPresentation ContainersBattle Corpus Crosswalk### AddedMagicPackageViewerBatEffPackageViewerMagicEffectCrosswalkExplorerFtcHeaderInspectorBinSidecarGraphSignature Groupnella shellTxcCltPairExplorer- cold
fmt/sps2metadata ### Changed ### Validated read-onlydo not promoteno runtime proofdove applicabilepipeline/support onlydove applicabile ### Notesmagic solvedAI solvedModelViewer playback solved- ampia autorizzazione writer ## [v0.11.0-beta.2] - 2026-06-01 Evoluzione prodotto reale per la linea
Extrasinmain. ### Highlights masterffx_ps2ps3dataPS2 KnowledgeTextures (TM2)BIN-FTC AtlasProject / Pipeline### AddedExtrasSourceResolverExtrasEvidenceBadgeModelExtrasProvenanceModelExtrasReadonlyBoundaryModelExtrasFileOpenServiceCdIndexExplorerProjectDescriptorViewerAbmapSupportGraphdocs/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### Changed ### Validated- nessun writer
- nessun repack
- nessun claim di decode finale
- nessuna mescolanza di ricerca cold con proof di runtime ### Notes
kernel -> mag_* -> bat_eff## [v0.10.0-beta.1] - 2026-05-31 Beta di consolidamento del ramo main dopo la prima ondata forte di assorbimento workshop curato. (letterale tecnico: Main-branch) ### Highlights ### AddedShop ExplorerFfxLib/ShopAssets/Shop- un writer guardato per
item_shop.binearms_shop.bin NameDescriptionTextPrefixTable_Filereader + no-edit guardperimportant.binreader + no-edit guardpera_ability.bin### Changed ### Validated ### Deferred ### Blocked ## [v0.9.0-beta.1] - 2026-05-31 Prima versione che assume onestamente la dimensione reale dell'editor e dell'ecosistema attorno. ### Main Branch Highlights ### Production Surface Present In Main ### Absorbed From WorkshopsTextLabTools;ProductionAuditTools;- harness e release conservativi di testo/mostri.
PlayerGrowthEditor;CtbBaseEditor;MixTableEditor;- la linea storica che ha poi sostenuto
KeyItemEditor. AutoAbilityEditor;- parser conservativi da
AutoAbility_File.cseArms_Rate.cs. Shop Explorer;FfxLib/Shop;Assets/Shop;- writer guardato per
item_shop.binearms_shop.bin. ### Governance And Versioning ### Validated ### Ancora bloccato ### Perché è ancora in beta ## Ricostruzione semantica storica Nota editoriale importante: ## [v0.8.0-beta.1] - historical reconstruction (pre-Git official SemVer) Pietra miliare in cui l'ecosistema opera già come un grande editor modulare con molti fronti specializzati vivi allo stesso tempo. ### Main Surface At This Stage ### Ecosystem Pressure ### Still Missing ## [v0.7.0] - historical reconstruction (pre-Git official SemVer) Pietra miliare in cui la linea principale passa da "più moduli" a "più proof". ### Added ### Changed ### Not Yet Safe ## [v0.6.0] - historical reconstruction (pre-Git official SemVer) Pietra miliare in cui la linea kernel e l'hardening conservativo dei sistemi secondari smettono di essere una promessa e diventano parte di un editor serio. ### Added ### Changed ### Still Missing ## [v0.5.0] - historical reconstruction (pre-Git official SemVer) Pietra miliare della forte ondataKernelTablesLab. ### Added ### Changed ### Still Missing ## [v0.4.0] - historical reconstruction (pre-Git official SemVer) Pietra miliare in cui il progetto impara a dire "sì" e "no" nel testo con criteri reali. ### Added ### Changed proven reader;conservative writer;blocked; ### Still Missing ## [v0.3.0] - historical reconstruction (pre-Git official SemVer) Pietra miliare in cui l'editor smette di essere solo un browser di file e inizia a toccare superfici AI, runtime e gameplay ad alto valore. (letterale tecnico: high-value) ### Added ### Changed ### Still Missing ## [v0.2.0] - historical reconstruction (pre-Git official SemVer) Pietra miliare dell'espansione strutturale dell'editor verso grandi sistemi visibili. ### Added ### Changed ### Still Missing ## [v0.1.0] - historical reconstruction (pre-Git official SemVer) Pietra miliare minima onesta in cui esisteva già un editor reale, ben sopra un prototipo usa-e-getta. ### Added ### Changed ### Still Missing ## [baseline-2026-05-31] - 2026-05-31 Import iniziale onesto della production in Git. ### Added ### Preserved ### Validated ### Notes ## Workshop Mini-Version History Nota: ## [pt2-v0.3.0-superseded.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt3-v0.8.0-freeze.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt4-v0.5.0-hold.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt5-v0.9.0-final.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt6-v0.7.0-beta.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt7-v0.9.0-final.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt8-v0.7.0-freeze.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch OutcomeShop Explorer;FfxLib/Shop;Assets/Shop;- guardrail documentati in
docs/history/PT8_SHOP_GUARDRAILS.md. ### Final Status ## [pt9-v0.6.0-alpha.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt10-v0.2.0-final.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt11-v0.3.0-blocked.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt12-v0.3.0-package.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt13-v0.3.0-package.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt14-v0.2.0-architecture.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt15-v0.2.0-architecture.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt16-v0.2.0-architecture.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt17-v0.3.0-guardrail.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt18-v0.3.0-governance.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt19-v0.3.0-surface.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt20-v0.2.0-strategy.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ##v2.227.0.0(2026-08-08) — Infra QA visuale: modelli FREE di opencode inverboo_router.py(limiti onesti + confronto di potenza). MINOR. Lane Jarvis-CLINE. [precedente:v2.226.0.0] ##v2.226.0.0(2026-08-08) — Infra QA visuale: integrazione OpenCode Go (gpt-5.6-luna) + modalitàdesc+ prompt UX umanizzato + fix del report. MINOR. Lane Jarvis-CLINE. [precedente:v2.225.2.0] ##v2.225.2.0(2026-08-06) — F7 Monster AI Swap: status-on-ability via RAM. MINOR. Lane Jarvis-HOOK. [precedente:v2.225.1.0] ##v2.225.1.0(2026-08-06) — Treasure Mappa: parse dell'header ATEL + fix glossario. PATCH. Lane Jarvis-CLINE. [prec:v2.225.0.0]
v2.11.0BETA
Seymour
🧠 AI ASSEMBLER PRODUCTIZED (un editor monster-AI utilizzabile):
- l'"edit the AI 100% libero" del codec è diventato una FEATURE. Nuovo nella lane
FfxLib/Ai+Modules/MonsterAiEditor: - Libreria dei comportamenti (
AiSnippetLibrary): template parametrizzati i cui byte RISSPECCHIANO gli idiom (letterale tecnico: MIRROR) del corpus provato — lineari (force-cmd/perform-cmd/grant-field/set-stat/raw-call) e condizionali (RNG 1-in-K rotate, force-command on-event per counter/phase). - Pre-flight validator (
AiValidator): opcode∈48, HasOperand vs 0x80, ramo/punto di ingresso scollegato (nomina quale, invece del throw opaco), range operandi, self-check RT0, Rebuild dry-run, grow/shrink;SaveAssemblerora è difensivo (rifiuta di scrivere in caso di errori). - Selettore comando amichevole (
AiCommandId): operando performCommand ↔ nome via(cat<<12)|idsuCommandCharacter/CommandMonster1_Dictionary; dropdown UI (niente più hex grezzo). - Nuove primitive codec (
AiScript_File):GrowWorkerJumpTable(aggiunge slot alla jump-table di un worker — abilita un NUOVO branch) + (letterale tecnico: NEW)AppendGuardedAction(prepend una guarded action a un entrypoint, preservando l'handler originale) +OperandKindOf. - UI in
MonsterAiEditor: card Behavior Library + bottone Validate/report + dropdown comandi. - Gate
AiScriptLab --ai2PASS (corpus reale, 361): jump-grow 898/898 worker, guarded-action 692/692 (primo+ultimo entrypoint) + sentinel sintetico 1/1, validator pulito 346/346, AiCommandId 620/620, positive-catch 8/8/8 (jumpOOB via il percorso editor). Il gate RT0 originale--361/361 intatto. - Una review adversarial a 4 agenti ha trovato + fixato 2 bug (sentinel one-past-end self-loop; (letterale tecnico: A)
OperandKindscartato sul percorso di save dell'editor), ora bloccati dal gate. Docs:docs/reverse/FFX_AI_JUMPTABLE_GROW_PROVEN_2026-06-05.md+docs/ai/FFX_AI_ASSEMBLER_PRODUCTIZED_2026-06-05.md. - ⚠️ Struttura provata OFFLINE; comportamento in-game (RT2) in attesa dell'OK di Halyson (probe). I template "heal ally < 25% HP" e "enrage on turn N" NON shipped (anchor HP-field / turn-counter non byte-confermato). (letterale tecnico: NOT) (letterale tecnico: byte-confirmed)
SUCESSOR_FFX_HD_MODELOS_MASTER_2026-06-05.mdchiusi per sum/npc. - Textures (manifest-driven):
extract-texture-batchinRuntimeTools/PhyreModelExportLabha guadagnato--from-manifest, che legge<id>.ahwin32g_fileNames[](manifest autorevole degli asset) e estrae la TEXURE esatta che il gioco carica. (letterale tecnico: EXACT)305 PNG (pc/npc/sum), mappa di provenienzatexture-provenance-map.json, 0 mismatch silenzioso. RE: l'ahwin32è un C header leggibile — risolve i cross-ref ( (letterale tecnico: cross-refs)c906←c106,c908←c108,c806←c805) E multi-texture ( (letterale tecnico: AND)c101+c101_01,n238+n238_hair,n356←n238_hair) senza IDA. Bonus find: la chiave rig-inheritance degli NPC =0x6NNNnel.chr(mappa nXXX→kNNN, 222/222 valide). Docdocs/reverse/FFX_AHWIN32_ASSET_MANIFEST_2026-06-05.md. - Bake (mesh+texture+anim): driver
work/_scratch_mgrp/bake_cast.pyviaphyre_chr_gate. Statico 253/253 (intero cast texturizzato, pulito). Animato: sum ha motion propria, npc ereditaskl/<base>. - QA visiva (workflow, 21 agenti vision): 248 animati triaged via F3D — 157 puliti / 58 torsione / 33 esplosi. Il bind picker (rest/A1) sui 33 non ha risolto.
- 🔧 CORREZIONE Avvitamento (2026-06-06): F3D MENTIVA sull'animazione skinned. (letterale tecnico: CORRECTION) (letterale tecnico: LYING) La diagnosi Avvitamento (mesh
EXPLODE_RATIO≈1.0, nessuna crescita) + il render Eevee veritiero ha dimostrato che le istanze "esplose" hanno un corpo intatto, solo un arto/accessorio risulta stirato. La nuova QA (8 agenti sui render Avvitamento) (letterale tecnico: Re-QA)corregge a 175 puliti (71%) / 59 torsione (24%) / 14 esplosi (6%) — 20 modelli recuperati, il bake offline era sempre stato ~94% utilizzabile. I 14 genuini = 11 Aeon + 3 npc (rig non-umanoide; serve mocap/RE della parent-map). Regola aggiornata: (letterale tecnico: non-humanoid)decide lo SCHERMO BLENDER, F3D mente. Pipelinework/_scratch_mgrp/blender_{diagnose,render_anim,batch_render}.py. - 🎯 RETARGET RISOLTO via (letterale tecnico: RETARGET SOLVED)
--retarget-delta(2026-06-06): 175→215 puliti (87%). Nuovophyre_chr_gateflag che applica il motion ereditato come delta da frame0 sulla REST npc (M=restLocal·inv(m0)·mf), preservando le proporzioni npc invece di imporre quelle della base. La RE in IDA ha provato che il remap (letterale tecnico: IDA RE).chr@0x30era già applicato — la causa era il retarget della rest-pose, non il remap (docFFX_INHERITED_MOTION_REMAP_RUNTIME_2026-06-06.md). Pilota+batch di 73 fudidos + re-QA Avvitamento + per-model keep-best: +40 puliti, 44 recuperati, ZERO regressione (1 tenuto perché regredirebbe). NPC animati = 200/222 puliti (90%), 0 esplosi; 8 Aeon ancora esplosi (mesh immune → mocap). Risolve il MASTER §2.4 "A1-universal" senza il rischio di A1. - 🐉 INTERO CAST chiuso offline (2026-06-06): 498/643 puliti (77%), 90% utilizzabile. (letterale tecnico: WHOLE CAST) Estesa la truthful-Blender-QA + retarget-delta + keep-best al resto: obj/wep/pc (46 puliti/55, party puliti) E i (letterale tecnico: AND)340 MOSTRI (letterale tecnico: MONSTERS). La vecchia QA mostri (bbox) dichiarava "0 esplosioni" = una bugia; la truthful Avvitamento QA (29 agenti) ha trovato 127 fudidos reali; retarget-delta sui 66 ereditati → 36 promossi, mostri 206→237 puliti. Totale animati (643): 498 puliti / 86 torsione / 51 esplosi / 8 blank. Residuale (9%) = mesh divergente / bind degenerato → mocap/mesh-RE, non retarget.
- obj/wep/pc (2026-06-06): stessa pipeline estesa — statici obj 110/110 + wep 79/79 + pc 34/49 (15 fail pc = slot dummy
c8xxsenza.chrPS2). Intero cast HD statico = 476 modelli. obj/wep perlopiù rigidi (anim sparso 25/7); spot-check su schermo: f001/w001/c004=Auron pulito. - Gallery
work/cast_hd_gallery.html(model-viewer, toggle static/anim, filtro sum/npc/obj/wep/pc). Tutto inwork/(gitignored): solo i COMANDI sono codice. (letterale tecnico: COMMANDS)Nessun bump csproj (lab/RE in RuntimeTools).FFX_TOOLBOX_DISCOVERY_PLAYBOOK_2026-06-05.md): uno sweep online + license vetting degli strumenti FFX HD/PS2 esterni (VBF, Phyre, kernel.bin, ATEL, FMOD, TM2, FMV) e dei NuGet editor. Trovati chiave vettati: (letterale tecnico: NuGets)External File Loader (ffgriever, BSD-2) loose-file senza repack, Kaitai Struct (runtime C# MIT) per generare reader C#+JS, fahrenheit (MIT, C#) framework mod hook+DLL, e la conferma che FFXDataParser NON HA LICENZA (solo studio) (letterale tecnico: NO LICENSE). La colonnatested?è ancora❌— test oracle contro il corpus locale è pending, il piano è incluso nel doc stesso. Doc-only: nessun bump del csproj (regola lab/RE doc-only). 58dossier impacchettati;- un manifest per dossier;
- una copia mirror Git-safe sotto
docs/history/DOSSIÊ FFX 01-06-2026/; - un report di esclusione per l'unico gigantesco binario esterno bloccato dai limiti di dimensione di GitHub.
- knowledge base separate per range di workshop; (letterale tecnico: workshop-range)
- un atlante master aggregato;
- la root
KNOWLEDGE_BASE.mdcome unico entrypoint; - un piano di merge ufficiale;
- un'appendice
Pt6/Pt9dei workshop dipendenti; (letterale tecnico: dependent-workshops) - linee tecniche formali per famiglia per il progetto.
merge in docsExtras nowExtras laterfrozen researchhistorical cleanupps3dataffx_ps2- executive closeout
- child-workshop compendium
- runtime/AI atlas
- successor bootstrap
- short maturity board
Extras nowverdictExtras laterverdict- confini del frozen research
- derived
Pt67product role ps3datavsffx_ps2split- rulebook di provenienza
- facet di citazione obbligatori ### Added
important.bina_ability.binReadNo-Edit Byte IdentityReread- contratti token di testo additivi in
FFXProjectEditor/FfxLib/Text/* - un'utility di decisione pura validation / round-trip
TextLabTools/TextContractHarnesscome primo smoke consumer production-sidedocs/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### ChangedCurrentWorkspaceOverviewCurrentMonsterEditorCurrentItemsCurrentBattleExplorerCurrentLiveBattleLabCurrentStringExplorerEncodeSafeDecodeOnlyRawPreserveUnknownRiskReuseOriginalBytesReencodeAllowedBlocked- wrapper operativi per la
Extras / ps3datariga - micro-workshop AI utili
Pt6 / Pt23con conoscenza preservata e stato archive-safe (letterale tecnico: micro-workshops) merge nowmerge laterExtras/read-onlyknowledge onlyPt56,Pt52,Pt54,Pt58= attacco subito nel softwarePt57e parti diPt53/Pt55= attacco dopo, ancora read-onlyPt53,Pt55,Pt57= ricerca aggressiva senza overclaimPt50,Pt51= pulizia storica prima che contino come source puliteMagicPackageViewerBatEffPackageViewerMagicEffectCrosswalkExplorernever blind merge### Validated- scopo
- utilità
- probabilità di merge
- mini changelog per workshop (letterale tecnico: per-workshop)
binding truthlanguage- narrowing forte per
owner/target/parentage/commit - base guardrail per
Pt6ePt23 formation 0..7enemy actor rows 0..10rawMonsterId -> corpuscomposition truthvsactor-surface truthPt46 / AIBlobParityGrammarLabPt47 / AIRuntimeDispatchLabPt48 / SafeAIMicroProbeLabcome parte del legacy runtime/AI, anche senza claim di writer o patcher.- base old-wave
Pt2..Pt11 - base middle-wave
Pt12..Pt22 - base heavy-wave
Pt23..Pt45 - un unico atlante aggregato con memory/runtime/binding/guardrails
- satelliti di
Pt6 - satelliti di
Pt9 - eccezioni production-side
Pt29/30 Model Viewer / BindingBattle / AI / Runtime TruthText SafetyKernel / ShopTooling / Safety / ReleaseProduction Crashfixes### Notes ### Planned ### BacklogTextSourceCapabilityIndex*StringExplorerUI wiring0x10 + 0x120x13### Blocked ## [v2.13.0] - 2026-06-05 ### Added ### Notes ## [v2.12.0] - 2026-06-05 ### AddedFfxLib/BattleMap/BattleArenaPositionWriter.csri-stampa X/Y/Z di ogni actor nell'array anchor di chunk3 (letterale tecnico: re-stamps) IN PLACE (mostri on-field = puntatore+0x20; anche party/aeon/staging perrole), value-only: non tocca mai header/puntatori/count/altri chunk, preserva W verbatim. Poiché la trasformata battle→scene è IDENTITY (provata in IDA, v2.10.0.1), una coord scelta nello spazio scena viene scritta verbatim. Stesso pattern slot-safe di (letterale tecnico: IDA-proven)FormationSlotWriter(guard + backup-onceWriteLooseFile). ### Validated RT0 (no-edit == byte-identico) 862/862, POSITION-ONLY (diff confinato all'array (letterale tecnico: byte-identical)+0x20) 862/862, RE-READ 862/862, + SAVE LIFECYCLE (no-edit/edit/restore su una copia temp) PASS. BiancaCatalogLab + AuroraChamberLab + BattleArenaPositionLab (precedentemente esclusi). CI completa PASS (7/7 gate): ReverseHarness, AiScriptLab, FormationSlotLab, AbilityCommandLab + i 3 nuovi. ### Deferred offline; lo schermo in-game è l'arbitro. Add/remove dello slot mostro (variare il count) = strutturale (Rebuild), prossimo. ## [v2.11.1] - 2026-06-05 ### Added che filtra le righe del dialogo per contenuto testuale, e (2) un filtro lingua (checkbox English/Japanese, English di default) — prima JP e EN venivano scaricati nella STESSA lista (giapponese per primo = un muro di giapponese). (letterale tecnico: SAME) Refactoring diEventExplorer_DataModel(allTextRows+ApplyTextFilter, English-first) + axaml (TextBox di ricerca + CheckBox JP/US). (letterale tecnico: CheckBoxes)NON tocca il writer (letterale tecnico: NOT) (Tier 1 resta--event-rt0397/397 + edit 12/12). ### Notes un'iniezione di traduzione, fuori dallo scope del writer). La ricerca parole è dentro l'evento selezionato. ## [v2.10.0.1] - 2026-06-05 ### Proven (RE / IDA, offline) copies the chunk3 (battle-local) coordinates VERBATIM into the actor's world node — no flip-Z, scale, or rotation; only Y gains a per-actor model-height (actor+0x534). Since the.dae.phyrescene == the raw Phyre vertex frame 1:1, P_scene(X,Y,Z) = P_battle(X,Y,Z) (s=1, R=I, T=0). Proven chain:FFX_Battle_AreaChunk_GetSetPosition(0x7AC000; chunk3 base0x112A9B0; copies 4 floats verbatim; actor world pos @+0x3B0) →FFX_Battle_ResolveActorPlacement(0x7A9AE0) →FFX_Battle_GetActorByIndex(0x794030, stride0xF90== RT2 enemy). The flip-Z guess was an artifact of including off-field staging rows (party-back Z≈-168). Doc:docs/reverse/FFX_AURORA_BATTLE_TO_SCENE_TRANSFORM_IDA_PROVEN_2026-06-05.md(+ rename-queue for the real.i64). ### Changed (Aurora Chamber — honesty) piazza gli anchor direttamente in coord scena (il default era già identity) e il toggle flip-Z diventa DISPROVEN/comparison;aurora-actors.jsoncoordSpace=scene_world_identity_ida_proven. ### Deferred≈ chunk3(residuo ~0) + misurare il termine Y esatto. Probe AUTORIZZATO da Halyson; in attesa solo del gioco aperto (letterale tecnico: AUTHORIZED) (READ via la probe esistente, nessun codice nuovo). SPIRA FORGE resta in pausa. ## [v2.10.0] - 2026-06-05 ### Added container) non è più lettura-solo. (letterale tecnico: read-only)Modificare il dialogo di cutscene/evento ora è un BOTTONE. (letterale tecnico: BUTTON)FfxLib/Event/Event_File.Write.cs(nuovo): repack byte-faithful del container EV01 — ogni chunk ri-allineato a (letterale tecnico: re-aligned)0x40, la tabella offset assoluti + il terminatore EOF ricalcolati (magic + sentinella0xFFFFFFFFpreservate). No-edit = VERBATIM garantito; il testo modificato riusaTextTable_File.Write(chunk JP=1/EN=4); script ATEL (0), Sconosciuto 2 e FTCX (3) preservati byte-per-byte. Hook Tier 2 (letterale tecnico: byte-for-byte)ScriptChunkOverride(re-stitch di un chunk-0 modificato).Event_File.cs: cattura l'header grezzo + le text table; tollera le voci field-string a puntatore null (8 file) (letterale tecnico: null-pointer) preservando il chunk verbatim (frontiera text-editable documentata).TextTable_File.Write(includeTrailingPadding): emette tabella+pool senza padding interno (il container ri-padda a 0x40). (letterale tecnico: re-pads)NON rompe (letterale tecnico: NOT)--textstr-rt0(default = comportamento legacy).Modules/EventExplorerè diventato un EDITOR di dialogo: stringhe JP/EN editabili (TextBox TwoWay) + un bottone "Save dialogue" che re-impacchetta e scrive il (letterale tecnico: re-packs).ebp. (FfxLib/Ai/AiScript_File.cs, usato read-only come donatore) legge/modifica lo script evento (stessa famiglia AiFile).- PATCH operando byte-local PROVATO (12/12): (letterale tecnico: Byte-local) (letterale tecnico: PATCH PROVEN) modificare un operando di chunk-0 cambia solo quei byte; il container re-stitcha in modo identico altrove; la re-read porta il nuovo operando. (letterale tecnico: re-stitches)
- GROW (AppendCode) è una frontiera documentata: il
AppendCodedonatore (costruito per battle, descrittori in DATA) non riloca i descrittori header-resident che gli script evento usano ([0x38..scriptStart)) — serve una (letterale tecnico: event-aware) rilocazione event-aware (coordinarsi con la lane AI Assembler). ### Validated round-trip 12/12** (swap di una stringa → repack → re-read: la stringa modificata combacia, i chunk intatti verbatim, idempotente). 397/397; patch operando byte-local 12/12. L'editor compila 0 errori. (0 rotture), EOF==filesize, sentinella0xFFFFFFFF. Docs indocs/reverse/FFX_EVENT_*_2026-06-05.md. ### Honesty / Deferred text-editable). Tier 2 = patch provato; append/grow + authoring strutturale = Tier 3, documentato non chiuso. Verifica preferita offline byte-RT0; l'RT2 in-game del dialogo modificato è ancora raccomandato. ## [v2.9.0] - 2026-06-05 ### Added btlmap a 25 aree) al MapViewer e tira fuori le coordinate degli actor da chunk3. Dedicato ad Aurora & Bianca. 💛 - Scene Picker consuma
BattleMapCatalog_File/BattlefieldSceneResolver(read-only) — lista/selezione scene per area e map-key. - Render guida
PhyreMapExportLab(export glTF on-demand della scena btlmap) e apreFFXMapViewerWebvia il deep-link?catalog=/?map=/?actors=— un mini-catalogo per-scena (letterale tecnico: per-scene), senza mai toccare ilcatalog.jsoncondiviso né riscrivereapp.js. - Coordinates via il nuovo reader
FfxLib/BattleMap/BattleArenaAnchors_File.cs(puro/Avalonia-free): decodifica chunk3 (area-record 96B, puntatori+0x10..+0x2C, mostri live+0x20, elementi XYZW 16B Y-up), elenca gli (letterale tecnico: XYZW Y-up) anchor battle-local ed esporta JSON per Encounter Authoring. gizmo degli anchor da?actors=+ una modalità "pick" (raycast sul piano y=0 → coord world). Non intrusivo (hooka (letterale tecnico: Non-intrusive)window.ffxMapViewerDebug; no-op senza (letterale tecnico: no-ops)?actors/pick; non modifica maiapp.js). ### Validated klyt00_00/sins02_00/mihn00_00 == coord provate da doc); corpus (letterale tecnico: doc-proven)862/862 pulito (0 NaN/Inf, W==0 sui mostri live); deterministico; pipeline BIANCA→scene→battle→anchors 52/52 scene mappate portano gli anchor. 10.804 triangoli,gatePass: true). L'editor compila con 0 errori (verificato in un worktree HEAD isolato). ### Honesty / Deferred UNCALIBRATA (letterale tecnico: UNCALIBRATED)** (P_scene = R·s·P_battle + T; flip-Z/yaw-180 irrisolti) — gli anchor sono battle-local grezzi, non engine-exact. La calibrazione probe = Wave 3 (serve l'OK di Halyson). SPIRA FORGE resta IN PAUSA (letterale tecnico: PAUSED); Aurora si LIMITA a (letterale tecnico: CONSUMES) CONSUMARE MapViewer + BIANCA (read-only/additivo), senza mai avviare l'hub. ## [v2.8.0] - 2026-06-05 ### Added (cataloga le 25 aree / 56 scene dips3data/btlmapHD —<area>NN_<variant>conmdl/d3d11/<leaf>.dae.phyre) +FfxLib/BattleMap/BattlefieldSceneResolver.cs. Puro/Avalonia-free, compila dentro l'editor (0 errori). "azit03"), NON il (letterale tecnico: NOT)battlefieldu16 (quello è un id arena globale, condiviso tra le mappe —bf=1061copre nagi/test/tori/zzzz). Doc:docs/reverse/FFX_BATTLEFIELD_SCENE_BRIDGE_2026-06-05.md. puntatore+0x20(float32 X,Y,Z,W; Y-up; W=0; stride 16 byte; slot formazione ↔ entry). Party+0x10, aeon+0x18, camera+0x2C. Doc:docs/reverse/FFX_BATTLE_FORMATION_POSITION_CHUNK3_DECODED_2026-06-05.md. (-- export --ps3-root <ps3data> --area btlmap/azit/azit03_a). Piano actor-overlay + calibrazione coordinate probe (letterale tecnico: Actor-overlay) (DESIGN):docs/ai/FFX_AURORA_COORDINATE_SYSTEM_AND_CALIBRATION_2026-06-05.md(probe solo con l'OK di Halyson). ### Validated deterministico; 56/56 scene con esattamente un modello primario; ponte con 0 miss inspiegati (22 mappe (letterale tecnico: HD-orphan) HD-orphan = cut/PS2-only ATTESO; 4 scene orfane bika04/grid00/nagi03/sfia00 = boss/story ATTESO). (letterale tecnico: EXPECTED) (letterale tecnico: EXPECTED) ### Deferred la probe DINPUT8 richiede l'OK di Halyson e SPIRA FORGE è IN PAUSA. (letterale tecnico: PAUSED) ## [v2.7.1] - 2026-06-05 ### Added / Validated WeaponNameTable, MacroDictionary, NameDescriptionTextTable, NameDescriptionTextPrefixTable, BtlTextTable, SphereGrid, ShopGearCatalog, BukiGetTreasureCatalog, AlBhedDictionary, PointerScriptTable, BattleTextTable, ShopTable. Pattern Preserve-only (WriteIdentityper quelle lossy-rebuild). Nuovo gate-sweepTools/Wave1Rt0.cs. ## [v2.7.0] - 2026-06-05 ### Added scambia la partizione AiFile con una di LUNGHEZZA DIVERSA, (letterale tecnico: DIFFERENT)16-padda l'AiFile, sposta le sezioni successive e riscrive i puntatori di sezione dell'header (m###.bin), scrivendo l'AiFile verbatim (nessun clobber di codeLength). La UI dell'AI Assembler ora SALVA grow/shrink (prima era solo length-preserving). La causa del clobber è documentata + fixata by design (letterale tecnico: SAVES) (Opzione B: superficie minima, NON tocca (letterale tecnico: NOT)Monster_File.Write→--monster-rt0resta 361/361). VM da worker counts + per-worker datalen (round 16) (NON partition/DeclaredLength/codeLength) e (letterale tecnico: NOT)si fida dei puntatori in-file → la rilocazione grow è onorata e il trailing pad è safe. (golden rule: rename-queue.) ### Validated (insert → splice grow-aware → re-read pulita + tail/header preservati verbatim + 16-allineato + idempotente), SHRINK 346/346 (rimozione di un'istr non-target → delta negativo → re-read pulita + tail preservata). (letterale tecnico: non-targeted)--monster-rt0361/361 (nessuna regressione). Allineamento corpus: 16/32/64/128/256, 0 trailing pad. (free-edit)"** renderizzata con la lista istruzioni editabile (opcode/operando/remove) + Insert/Save Structural + anteprima. Screenshotwork/spira_forge_qa/monster_ai_assembler_v01.png. ### Deferred probe DINPUT8 (condivisa) — sotto l'OK esplicito di Halyson. Offline + RE provano byte/game-safety; lo schermo in-game è l'arbitro finale. ## [v2.6.0] - 2026-06-05 ### Added (insert / remove / modify) sopra l'editor operando byte-local. L'AiFile ricostruito viene daAiScript_File.Rebuild(provato RT0: riloca entrypoint + jump table via una mappa old→new). Lista editabile (letterale tecnico: RT0-proven) (opcode/operando hex + checkbox remove), insert-after-selected, anteprima delta. Save abilitato solo per edit length-preserving (codeLength invariato) → splice byte-safe viaSpliceAiFileIntoMonster. GROW/SHRINK è LAB (messaggio onesto): il save loose-file richiede un relayout mostro header-aware + padding di allineamento + prova in-game. --ctbbase-rt0→CtbBase_File(ctb_base.bin), preserve-only.--mixtable-rt0→MixTable_File(prepare.bin), preserve-only.--aiasm-rt0→ prova il save strutturale dell'AI Assembler (no-edit Rebuild + relayout + splice byte-identici) (letterale tecnico: byte-identical) e misura l'allineamento AiFile→WorkerFile del corpus. ### Validated l'editing length-preserving è byte-safe. Grow=LAB (causa: l'header 0x34 diMonster_Filesi sovrappone adAiFile[0..4)=codeLength + un cambio di lunghezza rompe l'allineamento WorkerFile; il corpus è 16/32/64/128/256-allineato, 0 trailing pad). ### Blocked / LAB ## [v2.5.0] - 2026-06-05 ### Added controlli (Open Spector,Capture Next Frame,Export Last Capture) più un primoMaterial Debugpanel con inventario live dei materiali glTF caricati, un selettore, fact chip, e card texture per-slot (map,normalMap,aoMap,envMap, ecc.). registra cosa è atterrato, cosa è stato validato, e cosa resta esplicitamente fuori dalla prova. ### Validated controlli sono apparsi, e il pannelloMaterial Debugsi è popolato dal glTF caricato. affidabile, il viewer degrada aFrame preview unavailable/Texture preview unavailable on this source surfaceinvece di fingere di mostrare evidenza visiva valida. ## [v2.4.4] - 2026-06-05 ### Added selezionabili; sceglierne una pubblica suFieldContext.SelectedBattleIde la Formation Editor salta dritto a quella battaglia (carica la sua formazione). Realizza il "click su una zona, swap della formazione" del masterplan via la spine condivisa, senza plumbing di shell.FieldContextha guadagnatoSelectedBattleId/SelectBattle. ### Validated 37 BattleId senza cartella + 37 cartelle mai referenziate (battaglie special/event) — l'handoff filtra verso (letterale tecnico: BattleIds) quelle che esistono. Editor saltato alla battaglia caricata). Screenshotwork/spira_forge_qa/handoff_encounter_to_formation_v04.png. ## [v2.4.3.1] - 2026-06-05 ### Reverse / Proof dell'handoff (CONTINUE_AQUI_PERNAS_HD): la mappa "52m_skeletonMatrices→ 79 joint" vive nel file Phyre, non in IDA.- La palette skin è
PMatrix4[0..51](linkata dalPMeshcampo 12); è uguale allem_skeletonMatricesbyte-per-byte (letterale tecnico: byte-for-byte) (maxDist=0.00000). - The slot→node map is the
intat offset 12 of eachPSkeletonJointBounds[j](52 slots → 52 nodes, bijection). - Comporre
m_defaultPoseattraversom_matrixParentsriproduce l'inverse-bind authorato EXACTLY:0/52nodi divergono. Quindi--hd-defpose+--hd-parentsè già il bind reale del gioco. - Causa root della spira storica: un bake senza
--hd-defpose/--hd-parentsricade suinvBind = PMatrix4[52+b](matrice LOCALE grezza) → la mesh esplode. La ricetta defpose+parents è il fix ed è già il default della gallery. - Nuove probe read-only:
work/_scratch_mgrp/phyre_palette_probe(localizza la palette, prova che il bind è esatto, emettenode_to_slot.json) ephyre_legs_probe(matcher; illustra la trappola della traslazione coincidente). (letterale tecnico: coincident-translation) ### Validated c007 (Rikku) — in rest forzato, battaglia (id5_c4318 t0.0–0.9), 4 angoli polpaccio in un deep crouch, e multi-clip (c4333/c4365/c4886). Numericamente: le matrici locali/world delle joint di gamba sono rigid perfetti (scale=1, det=+1, ortho 0.0000). (letterale tecnico: leg-joint) Nessuna IDA. Prova completa indocs/reverse/FFX_HD_SKIN_PALETTE_DECODED_LEGS_NOT_BIND_2026-06-05.md. ## [v2.4.3] - 2026-06-05 ### Added esistenti ma mai byte-gated, chiudendo 4 altre famiglie concrete di editable-base: --keyitem-rt0(Tools/KeyItemRt0) →KeyItem_File(important.bin), writer preserve-only (clona i byte originali + ri-stampa solo (letterale tecnico: re-stamps)PrimerByte10/OrderingByte13).--treasure-rt0(Tools/TreasureRt0) →Treasure_File(takara.bin), round-trip full-decode (4 byte/voc).--customization-rt0(Tools/CustomizationRt0) →Customization_Filegear kaizou.bin + aeon sum_grow.bin (preserva il prefisso/coda dell'header + ri-emette le voci decodificate). (letterale tecnico: re-emits)--autoability-rt0(Tools/AutoAbilityRt0) →AutoAbility_File.WriteAbilities(a_ability.bin, DATA section), preserve-only writer. (Readsarms_rate.binonly to satisfy the read contract; does NOT write arms_rate and does NOT coverWriteAbilitiesAndText/text repack.) ### Validated takara.bin (503 voci, 2012 B), kaizou.bin (125) + sum_grow.bin (77), a_ability.bin (134 voci, 19590 B). Save no-edit = byte-identico; edit = byte-local (letterale tecnico: No-edit) (letterale tecnico: byte-identical) (lo stesso pattern preserve-only che ha chiuso Monster/Encounter). Alza parzialmente il caveat storico "important.bin/a_ability.bin bloccati per claim di writer mutation-safe": l'editing di campo (data-section) ora è provato; il repack del text-pool resta non reclamato (lo stesso rischio (letterale tecnico: monmagic-style) di drift stile monmagic — fuori scope per questo gate). ## [v2.4.2] - 2026-06-05 ### Added inline (es. (letterale tecnico: e.g)[m003 - Murussu, m003 - Murussu, m009 - Dingo]). Lazy-loaded + cachato + limitato (≤90 battaglie visibili; con la lista completa chiede di filtrare per area). Read-only; porta nel editor il "zone dipinte con i mostri che spawnano lì" del masterplan (fusione encounter↔formation resa visibile). ## [v2.4.1] - 2026-06-05 ### Added di produzione (guardia solo-slot + backup una tantum (letterale tecnico: slot-only) (letterale tecnico: backup-once).spiraforge.bak+ scrittura). Ora usato dal Formation Editor (PersistSnapshot) E (letterale tecnico: AND) testato dal gate headless — stesso codice nell'editor e nel test, nessuna duplicazione. ### Validated workspace/asset, read-only rispettato): (a) Save no-edit = disco byte-identico + backup==originale; (b) edit Save = (letterale tecnico: byte-identical) solo-slot su disco + reread che combacia + backup preservato; (c) restore dal backup = byte-identico. (letterale tecnico: slot-only) (letterale tecnico: byte-identical)PASS. Chiude il gap di onestà v0.2 (save in-app provato su disco, reversibile). Corpus ancora 858/858;offline_ci4 gate PASS. ## [v2.4.0] - 2026-06-05 ### Added Entries/Groups/Formations (count VARIABILI + create tables), assegna dataOffsets freschi, ricostruisce chunk0 + (letterale tecnico: VARIABLE) la chunk table, preserva block-sharing + padding. Gate--encounter-rebuild-rt0. La base strutturale per "CREATE ENCOUNTERS". ### Validated (4096/4096)** + grow-test (add 1 formation, fine 0x1000→0x1002, 2 chunk intatti) valido. fixato il drift del trailing padding. Nota onesta: le registrazionihelp_txt.bindi StringExplorer sono MORTE in questa estrazione (file assente) — il writer è provato su un field-string reale ( (letterale tecnico: DEAD)spcodedic.bin). ## [v2.3.2] - 2026-06-05 ### Added (Ability_Command.ReadList→WriteList), cheKernelCommandsusa già per il Save ma non era mai stato byte-gated. Riferisce il progetto editor (deep dep tree), chiama solo metodi FfxLib statici. Cablato inoffline_ci.ps1. ### Validated (1 byte) 4/4. PASS. Questa è la fondazione provata per la feature dream "new Black magic" (vive in command.bin). ### Blocked monmagic originale condivide/dedup il testo mentreWriteListri-appende ( (letterale tecnico: re-appends)FfxEncoding.WriteBytesIntoTextFilesolo appende; command/item sono puro-append → combaciano). (letterale tecnico: pure-append)Rischio: il Save MonMagic di KernelCommands gonfia il file — gattalo finché un writer dedup-aware non passa. Audit + target di fix:docs/reverse/FFX_ABILITY_WRITER_AUDIT_2026-06-05.md. ## [v2.3.1] - 2026-06-04 ### Added oltre EOF (kino03_*,mihn05_*,cdsp00_02): tratta il chunk oltre-EOF (e oltre) come assente invece di (letterale tecnico: past-EOF) rifiutare l'intero file; i chunk precedenti (incl. formation @2) restano validi. Quelle battaglie ora sono editabili nell' Formation Editor. ### Validated re-read 858/858 PASS. I precedenti 843 invariati. ## [v2.3.0] - 2026-06-04 ### Added mostri (16 byte) di una formazione btl_* viaBattle_File.WriteWithFormationSlots, byte-safe slot-only. Consuma la spineFieldContext(pre-filtra le battaglie per l'area di campo selezionata nell'Hub). Monster picker (letterale tecnico: pre-filters) (Monster_Dictionary+ Empty, preserva il nibble alto grezzo). Il Save scrive un loose-file del workspace con.spiraforge.bakbackup + guardiaAssertSlotOnlyDiff, tramiteByteSnapshotEditorSession(Undo/Discard). Offline, nessuna probe.offline_ci.ps1(param-BtlRoot). Membri additivi read-only suBattle_File(FormationChunkOffset/FormationSlotsOffset/FormationSlotsLength). ### Validated (15 btl_* non parsabili dal reader all'epoca — fixati in v2.3.1.) ## [v2.2.0] - 2026-06-04 ### Added navigazione chiavata dafield_token. Field picker alimentato dal CSV bridge (ps3data-map-btlmap-fieldid-bridge.csv, 357 campi, structural-candidate). Selezionare un campo pubblica suFieldContext(singleton osservabile) e 2 consumer reagiscono read-only: map deep-link (?map=map/<area>/<field>per FFXMapViewerWeb) + encounter peek (leggebtl.binviaEncounterTable_File, join candidato area↔map). CSV copiato in output via<Content>del csproj. Offline; il picker gira senza progetto. Nessun writer, nessuna probe. ### Validated Screenshotwork/spira_forge_qa/field_hub_v01.png. ## [v2.1.1] - 2026-06-04 ### Validated--player-rt0gate:ply_save.bin(3098) +ply_rom.bin(2161) -> no-edit RT0 identici a livello di byte (letterale tecnico: byte-identical). (I writer esistevano già slot-only; ora gated.) ## [v2.1.0] - 2026-06-04 ### Addedbtl.binbyte-for-byte e ri-stampa solo i campi editabili (tabella (letterale tecnico: re-stamps)Id/Unknown0C, groupBattlefield/Danger/TotalWeight, formationId/Weight). Gate--encounter-rt0nell'editor. ### Validated ## [v2.0.0] - 2026-06-04 > NUOVA ERA — MAJOR. (letterale tecnico: NEW ERA) L'editor è passato da "editing di file offline" a PROVEN LIVE RUNTIME EDITING: > modificare il bytecode AI di un mostro in RAM e vedere il comportamento cambiare su schermo, senza crash, reversibile — > il supreme goal #1 del progetto, realizzato. MAJOR = una nuova classe di capacità (non una rottura di contract/save/build > — abbiamo solo aggiunto e indurito).-betaperché RT2/God-Mode non sono ancora productizzati in UI gated. > Pietra miliare della ondata Claude Code / VSCode + l'unione con il 2° account Codex. ### Highlights cambia su schermo — Budino di fiamme Firaga→Thundaga, senza crash, reversibile. Catena:enemy-list(0xD34460) ->MemoryChr.Ptr_script_chunks(+0xF78) -> AiFile live === discom0NN.binbyte-identico (letterale tecnico: byte-identical). l'abilità globale — il mostro non deve "possederla". Prova: uno Scoor ha sputato le Fiamme infernali di Ifrit su schermo. data revive (flag di morte + KO), tutto viaMemoryChr+ probe. ### Added offset** (+delta) → un AiFile più grande e valido (il percorso verso "ADD AI", oltre il budget byte-local). etichette jump + tipo worker inferito), editing operandi + 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). ### Changed / Validated per StatSheet/Loot + header Signature/Padding preservato (il Padding si sovrapponeva adAiFile[0..3]). ### Blocked / Deferred (honest) (rebuild a gioco chiuso). Player trovato: (letterale tecnico: game-closed)FFX_FmodMusic_PlayTrackByIndex(181 tracce); il FIFO SPU PS2 è stubbato su HD. (letterale tecnico: PS2 SPU FIFO) ### Absorbed from Labs / Multi-agent l'unione con il 2° account Codex (lane MapViewer / model-texture): l'exporter ora espone segnali di (letterale tecnico: material-role) material-role (TextureSampler1/normalMap/reflection/water/PhyreWaterShader), confronto con viewer esterno (letterale tecnico: external-viewer) (glTF-Sample-Viewer come oracle; gap provato lato exporter, non shell), e il kickoff del masterplan (letterale tecnico: exporter-side)Spira Forge. La coordinazione multi-agente è loggata in (letterale tecnico: Multi-agent)docs/ai/CODEX_MAPVIEWER_WATCH_JARVIS.md. ## [v1.7.0] - 2026-06-04 ### AddedAppendCode: appende istruzioni alla fine + riloca la data section.Rebuild: insert/remove/modify di un'istruzione OVUNQUE (letterale tecnico: ANYWHERE) + riloca AUTOMATICAMENTE tutti i (letterale tecnico: AUTOMATICALLY) jump + entrypoint (mappa linker old→new) + la data section. Branch orfano (istr rimossa) -> errore onesto. ### Validated i worker risolvono, l'entrypoint post-inserzione rilocato (letterale tecnico: post-insertion)0x2D1→0x2D4da solo; grow-test (AppendCode) RT0. ## [v1.6.0] - 2026-06-04 ### Validated per StatSheet/Loot + headerSignature/Paddingpreservato (il Padding si sovrapponeva adAiFile[0..3]). ## [v1.5.0] - 2026-06-04 ### Validated / Blocked live BLOCCATO (letterale tecnico: BLOCKED)** (API FMOD (letterale tecnico: FMOD API)__thiscall, probe cdecl-only). DocFFX_MUSIC_SYSTEM_AND_MOD_IDEA(Music Remapper). ## [v1.4.0] - 2026-06-04 ### Validated (live) GLOBALE — il mostro non deve "possederla". Prova: uno Scoor ha sputato le Fiamme infernali di Ifrit su schermo. ## [v1.3.1] - 2026-06-04 ### Fixed / Validated (live) di morte). Auto-scan (statusScan) alternato live. ## [v1.3.0] - 2026-06-04 ### Validated (live) (POINTER_BATTLE_ENEMY_LIST 0xD34460, stride0xF90) + probe. ## [v1.2.0] - 2026-06-04 ### Added etichette jump) + editing operandi + Save loose-file. ## [v1.1.0] - 2026-06-04 ### Validated (🏆 HEADLINE — supreme goal #1) il comportamento cambia su schermo (Budino di fiamme Firaga→Thundaga), senza crash, reversibile. Catena:enemy-list 0xD34460->MemoryChr.Ptr_script_chunks +0xF78-> live AiFile === diskm0NN.binbyte-identico (letterale tecnico: byte-identical). Doc:docs/reverse/FFX_AI_RT2_LIVE_EDIT_PROVEN_2026-06-04.md. ## [v1.0.0] - 2026-06-01 Traguardo di maturità per l'editor come vera piattaforma di lettura, validazione e navigazione della conoscenza, con abbastanza superficie prodotto (letterale tecnico: knowledge-navigation)Extrasda giustificare un onesto1.0anche se i boss runtime, AI e body-playback restano aperti. ### HighlightsPS2 KnowledgeTextures (TM2 + TXC/CLT/FMT/SPS2 support lane)BIN-FTC AtlasProject / PipelineMagic EffectsPresentation ContainersBattle Corpus Crosswalk### AddedMagicPackageViewerBatEffPackageViewerMagicEffectCrosswalkExplorerFtcHeaderInspectorBinSidecarGraphSignature Groupnella shellTxcCltPairExplorer- cold
fmt/sps2metadata ### Changed ### Validated read-onlydo not promoteno runtime proofdove applicabilepipeline/support onlydove applicabile ### Notesmagic solvedAI solvedModelViewer playback solved- ampia autorizzazione writer ## [v0.11.0-beta.2] - 2026-06-01 Evoluzione prodotto reale per la linea
Extrasinmain. ### Highlights masterffx_ps2ps3dataPS2 KnowledgeTextures (TM2)BIN-FTC AtlasProject / Pipeline### AddedExtrasSourceResolverExtrasEvidenceBadgeModelExtrasProvenanceModelExtrasReadonlyBoundaryModelExtrasFileOpenServiceCdIndexExplorerProjectDescriptorViewerAbmapSupportGraphdocs/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### Changed ### Validated- nessun writer
- nessun repack
- nessun claim di decode finale
- nessuna mescolanza di ricerca cold con proof di runtime ### Notes
kernel -> mag_* -> bat_eff## [v0.10.0-beta.1] - 2026-05-31 Beta di consolidamento del ramo main dopo la prima ondata forte di assorbimento workshop curato. (letterale tecnico: Main-branch) ### Highlights ### AddedShop ExplorerFfxLib/ShopAssets/Shop- un writer guardato per
item_shop.binearms_shop.bin NameDescriptionTextPrefixTable_Filereader + no-edit guardperimportant.binreader + no-edit guardpera_ability.bin### Changed ### Validated ### Deferred ### Blocked ## [v0.9.0-beta.1] - 2026-05-31 Prima versione che assume onestamente la dimensione reale dell'editor e dell'ecosistema attorno. ### Main Branch Highlights ### Production Surface Present In Main ### Absorbed From WorkshopsTextLabTools;ProductionAuditTools;- harness e release conservativi di testo/mostri.
PlayerGrowthEditor;CtbBaseEditor;MixTableEditor;- la linea storica che ha poi sostenuto
KeyItemEditor. AutoAbilityEditor;- parser conservativi da
AutoAbility_File.cseArms_Rate.cs. Shop Explorer;FfxLib/Shop;Assets/Shop;- writer guardato per
item_shop.binearms_shop.bin. ### Governance And Versioning ### Validated ### Ancora bloccato ### Perché è ancora in beta ## Ricostruzione semantica storica Nota editoriale importante: ## [v0.8.0-beta.1] - historical reconstruction (pre-Git official SemVer) Pietra miliare in cui l'ecosistema opera già come un grande editor modulare con molti fronti specializzati vivi allo stesso tempo. ### Main Surface At This Stage ### Ecosystem Pressure ### Still Missing ## [v0.7.0] - historical reconstruction (pre-Git official SemVer) Pietra miliare in cui la linea principale passa da "più moduli" a "più proof". ### Added ### Changed ### Not Yet Safe ## [v0.6.0] - historical reconstruction (pre-Git official SemVer) Pietra miliare in cui la linea kernel e l'hardening conservativo dei sistemi secondari smettono di essere una promessa e diventano parte di un editor serio. ### Added ### Changed ### Still Missing ## [v0.5.0] - historical reconstruction (pre-Git official SemVer) Pietra miliare della forte ondataKernelTablesLab. ### Added ### Changed ### Still Missing ## [v0.4.0] - historical reconstruction (pre-Git official SemVer) Pietra miliare in cui il progetto impara a dire "sì" e "no" nel testo con criteri reali. ### Added ### Changed proven reader;conservative writer;blocked; ### Still Missing ## [v0.3.0] - historical reconstruction (pre-Git official SemVer) Pietra miliare in cui l'editor smette di essere solo un browser di file e inizia a toccare superfici AI, runtime e gameplay ad alto valore. (letterale tecnico: high-value) ### Added ### Changed ### Still Missing ## [v0.2.0] - historical reconstruction (pre-Git official SemVer) Pietra miliare dell'espansione strutturale dell'editor verso grandi sistemi visibili. ### Added ### Changed ### Still Missing ## [v0.1.0] - historical reconstruction (pre-Git official SemVer) Pietra miliare minima onesta in cui esisteva già un editor reale, ben sopra un prototipo usa-e-getta. ### Added ### Changed ### Still Missing ## [baseline-2026-05-31] - 2026-05-31 Import iniziale onesto della production in Git. ### Added ### Preserved ### Validated ### Notes ## Workshop Mini-Version History Nota: ## [pt2-v0.3.0-superseded.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt3-v0.8.0-freeze.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt4-v0.5.0-hold.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt5-v0.9.0-final.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt6-v0.7.0-beta.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt7-v0.9.0-final.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt8-v0.7.0-freeze.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch OutcomeShop Explorer;FfxLib/Shop;Assets/Shop;- guardrail documentati in
docs/history/PT8_SHOP_GUARDRAILS.md. ### Final Status ## [pt9-v0.6.0-alpha.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt10-v0.2.0-final.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt11-v0.3.0-blocked.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt12-v0.3.0-package.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt13-v0.3.0-package.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt14-v0.2.0-architecture.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt15-v0.2.0-architecture.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt16-v0.2.0-architecture.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt17-v0.3.0-guardrail.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt18-v0.3.0-governance.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt19-v0.3.0-surface.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status ## [pt20-v0.2.0-strategy.1] - 2026-05-31 ### Mission ### Evolution ### Main Branch Outcome ### Final Status