Mise à jour 2.64
10/06/2026
v2.64.0BETA
Seymour
croissance/customisation Aeon dans le Spira Data Atlas (lecture seule, `proved-candidate`, Aeon-only, compilé)
- Branche
sum_grow.bin(la table de customisation Aeon de FFX) dans le provider comme un kind de détail en lecture seule : nouveauSpiraDataAtlasDetailKind.AeonGrowthRecipe+ accesseur value-guardedSpiraDataAtlasCatalog.TryGetAeonGrowthRecipe(entryIndex, currentResultRaw, currentItemRaw). Aeon-ONLY :sum_grow.binfait 636 octets (0x14header + 77 × 8B entrées,Targettoujours0x007F=Aeon,jppc==inpcbyte-identique) → 67 recettes d'abilité (Result cat 3 → Commands) + 10 recettes de stat (Result cat 0 → StatOptions, Secondary=1). Aucune rangée PC et aucune rangée Sphere-Grid (PcAeonFineStatest un corpus séparé ; la topologie de grille vit danssphere.bin/panel.bin). Source non-work/: les 77 rangées viennent d'une table compilée byte-grounded (FfxLib/SpiraDataAtlas/SumGrowAeonRecipeData.cs, générée parbuild_sum_grow_aeon_fine_index.ps1 -EmitCSharpdepuissum_grow.bin), donc elles existent dans TOUT build sanswork/(contrairement à Alchimie/Sphere/Shop). Les noms/étiquettes sont résolus au runtime par lesAeonCustomizationEntry+dictionnaires de l'éditeur (source unique de vérité, RT0-prouvé par--customization-rt0), jamais ré-inventés. Coût de recette de stat =partial(l'éditeur rendPrimary× item; en jeu le coût est 1 item/application etPrimaryest l'incrément) — remonté dans la colonneevidence(;cost-semantics-partial), pas seulement en prose. Porte--spiraatlas-rt021219 → 21296détails (+77 Aeon ; tous uniques) + 13 nouvelles assertions (compte 77/67/10 ; Aeon-only ; pas de PC ; pas de Sphere ; lookup d'abilité 66→Ultima/Méga Magikoroc ; lookup de stat 67→HP+100/Sphère Physique/cost-partial ; value-guard0x9999caché ; index hors plage manqué ; recherche de domaine ; domaine BIBLE aeon-growth). Lecture seule : pas de writer/UI/runtime/SIN ; ne touche pas RIKKU/WAKKA/JECHT/BAHAMUT/AURORA, le moteur de badgeCommond'ANIMA, niWriteAeon/save. Débloque YUNA backlog Q1 (étaitblocked). Vérifié par un workflow adversarif 4-lens dans le scout. Build 0 erreur / 361 warning ;--customization-rt0+--spiraatlas-rt0+--aicmdmeta-rt0PASS. Docs :docs/ai/ATLAS_BRASKA_SUM_GROW_FINE_SCOUT_RESULT_2026-06-10.md+docs/ai/HANDOFF_BRASKA_SUM_GROW_FINE_INDEXER_NEXT_2026-06-10.md
v2.63.0
v2.64.1BETAPATCH
Seymour
badge de preuve Atlas dans le Alchimie Table Editor (lecture seule, value-guarded, hide-on-edit)
- UI en lecture seule branchant l'accesseur
SpiraDataAtlasCatalog.TryGetMixCombination(livré dansv2.63.0) dans leMixTableEditor: la carte "Combination Editor" (panneau de détail) montre désormais le<common:AtlasEvidenceBadgeStrip>de la combinaison de mix sélectionnée — une bande par combinaison (pas par rangée ; évite 6,328 lookups et le fouillis), un miroir exact de Treasure/Shop.MixTableEditor_DataModela gagné[ObservableProperty] AtlasEvidenceInfo? SelectedMixEvidence+RefreshSelectedMixEvidence()(TryGetMixCombination(origin.Index, result.PartnerIndex, result.RawResult) → AtlasEvidenceInfo.ForDetail), appelé dansOnSelectedResultChanged(couvre la combinaison ET le changement d'origine via cascade) et dansResultChangedquandRawResultchange (couvre l'édition du résultat viaResultRef→SyncBack→NotifyComputedChangedet "Set Empty"). Hide-on-edit : re-pointer le résultat vers un autre item, "Set Empty" (raw 0), une cellule miroir vide/upper-triangle, ou une paire hors corpus → accesseurfalse/null→ la bande se cache (IsVisible=false) ; l'ordre(origin,partner)est sans importance (canonicalisation max/min dans l'accesseur). RÉUTILISATION de la capacitév2.63.0+ l'infraCommond'ANIMA (consommée seulement) → (précédent : les badges Shopv2.61.2/v2.61.5étaient PATCH). Aucun nouvel écrivain :--mixtable-rt0reste byte-identique (25108/25108). Ne touche pas le moteurCommond'ANIMA, le provider, Treasure/Shop (RIKKU), ni BRASKA/WAKKA/AURORA/BAHAMUT/SIN. Revu par un workflow adversaratif 5-lens (hide-on-edit, writer/lecture seule, ANIMA-boundary, XAML-binding, honnêteté) + synthèse →ship, 0 défauts. Build 0 erreur / 361 warning ;--spiraatlas-rt0(Alchimie 6328) +--mixtable-rt0(byte-identique) +--aicmdmeta-rt0PASS. Doc :docs/ai/ATLAS_JECHT_MIX_BADGE_UI_RESULT_2026-06-10.md
v2.64.0
v2.64.2BETA
Seymour
écrivain de sauvegarde Blitzball LAB + offsets de prix PROUVÉS contre une vraie sauvegarde (pas de tournoi)
- Les offsets de prix Blitzball sont passés de RE à save-proved : j'ai localisé les vraies sauvegardes (
Documents\SQUARE ENIX\...\FINAL FANTASY X\ffx_000..006, 7 slots de0x6900=0x40 header + 0x68C0 SaveData) etffx_000décodé correctement (league = Megalixir/Mégapotion/Sphère Agilité, tournament = Elixir/Super Goalie/Potion, etc.) — la sauvegarde est plaintext, pas d'encryption/compression (gil/story/battle_count sains),--base 0x40confirmé. L'en-tête0x40a une signature"cxs"+ temps de jeu/lieu ; aucun champ ne correspond à un checksum SaveData (probablement pas de checksum bloquant, mais un chargement en jeu est encore nécessaire). Nouvel écrivain LABTools/BlitzballSaveWrite.cs(--blitz-save-write <in> <field> <value> <out>) : écrit un u16 d'index de prix vers un NOUVEAU fichier (NE JAMAIS écraser la source ; refuse l'écrasement in-place), avec avant/après résolu via le catalogue Atlas. Validé sur une COPIE deffx_006:tournament0 25 (Elixir) -> 50 (Saturn Crest), diff = exactement 2 octets, le reste byte-identique.BlitzballSaveRead.Resolveest devenuinternal ResolvePrize(réutilisé par l'écrivain). save (ffx_NNN) ≠ fichier de jeu : éditer la sauvegarde change CETTE partie ; changer le pool (takara.bin220..320) est Treasure/RIKKU. Aucun changement Atlas UI/Shop/Treasure/Alchimie/Common/Aurora/Bahamut/SIN. Build 0 erreur / 361 warning. Doc :docs/ai/BLITZBALL_SAVE_RUNTIME_WRITER_SCOUT_2026-06-09.md
v2.64.1
v2.64.3BETA
Seymour
badge de preuve Aeon Growth dans le Customization Editor (lecture seule, value-guarded, hide-on-edit)
- Branche
<common:AtlasEvidenceBadgeStrip>dans l'onglet "Aeon Grow / Teach" deCustomizationEditor(carte « Recette Editor »), consommant l'accesseur déjà construitSpiraDataAtlasCatalog.TryGetAeonGrowthRecipe(entryIndex, currentResultRaw, currentItemRaw)(v2.64.0). NouveauAtlasEvidenceInfo? SelectedAeonEvidencedansCustomizationEditor_DataModel, recalculé au changement de sélection et quand la rangée sélectionnée lèveRawResult(AeonRecipeChanged) → hide-on-edit : éditer la compétence/stat enseignée OU l'item de coût (mismatch brut) ou un index hors plage fait que l'accesseur renvoienullet la bande se cache (pas de badge obsolète), un miroir exact de Alchimie (v2.64.1). Les 10 recettes de stat montrent un badgepartial(sémantique de coût : l'éditeur rendPrimary× item, mais en jeu le coût est 1 item/application). Aucune correction d'écrivain ou d'affichage de coût (hors périmètre). Réutilise le moteurCommond'ANIMA (consommé seulement). PC resteblocked(aucune rangée PC) et Spheremetadata-only(aucune jointure) — rien à montrer. Aucun changement de provider/porte (--spiraatlas-rt0intact,21296détails / 77 Aeon). Build 0 erreur / 361 warning ;--customization-rt0+--spiraatlas-rt0+--aicmdmeta-rt0PASS. Ne touche pas JECHT/Alchimie, TIDUS/PC, AURON/Sphere, RIKKU/WAKKA/VALEFOR/AURORA/SIN. Doc :docs/ai/ATLAS_BRASKA_AEON_GROWTH_BADGE_UI_RESULT_2026-06-10.md
v2.64.2