Update 2.64
6/10/2026
v2.64.0BETA
Seymour
Aeon growth/customization in the Spira Data Atlas (read-only, `proved-candidate`, Aeon-only, compiled)
- Plugs
sum_grow.bin(FFX's Aeon customization table) into the provider as a read-only detail kind: newSpiraDataAtlasDetailKind.AeonGrowthRecipe+ value-guarded accessorSpiraDataAtlasCatalog.TryGetAeonGrowthRecipe(entryIndex, currentResultRaw, currentItemRaw). Aeon-ONLY:sum_grow.binis 636 bytes (0x14header + 77 × 8B entries,Targetalways0x007F=Aeon,jppc==inpcbyte-identical) → 67 ability recipes (Result cat 3 → Commands) + 10 stat recipes (Result cat 0 → StatOptions, Secondary=1). No PC rows and no Sphere-Grid rows (PcAeonFineStatis a separate corpus; grid topology lives insphere.bin/panel.bin). Non-work/source: the 77 rows come from a byte-grounded compiled table (FfxLib/SpiraDataAtlas/SumGrowAeonRecipeData.cs, generated bybuild_sum_grow_aeon_fine_index.ps1 -EmitCSharpfromsum_grow.bin), so they exist in ANY build withoutwork/(unlike Mix/Sphere/Shop). Names/labels are resolved at runtime by the editor's ownAeonCustomizationEntry+dictionaries (single source of truth, RT0-proved by--customization-rt0), never re-invented. Stat-recipe cost =partial(the editor rendersPrimary× item; in-game cost is 1 item/application andPrimaryis the increment) — surfaced in theevidencecolumn (;cost-semantics-partial), not just prose. Gate--spiraatlas-rt021219 → 21296details (+77 Aeon; all unique) + 13 new asserts (count 77/67/10; Aeon-only; no PC; no Sphere; ability lookup 66→Ultima/Supreme Gem; stat lookup 67→HP+100/Power Sphere/cost-partial; value-guard0x9999hides; out-of-range index miss; domain search; BIBLE domain aeon-growth). Read-only: no writer/UI/runtime/SIN; does not touch RIKKU/WAKKA/JECHT/BAHAMUT/AURORA, ANIMA'sCommonbadge engine, orWriteAeon/save paths. Unblocks YUNA backlog Q1 (wasblocked). Verified by a 4-lens adversarial workflow in the scout. Build 0 errors / 361 warnings;--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
Atlas evidence badge in the Mix Table Editor (read-only, value-guarded, hide-on-edit)
- Read-only UI plugging the
SpiraDataAtlasCatalog.TryGetMixCombinationaccessor (shipped inv2.63.0) into theMixTableEditor: the "Combination Editor" card (detail panel) now shows the selected mix combination's<common:AtlasEvidenceBadgeStrip>— one strip per combination (not per row; avoids 6,328 lookups and clutter), an exact mirror of Treasure/Shop.MixTableEditor_DataModelgained[ObservableProperty] AtlasEvidenceInfo? SelectedMixEvidence+RefreshSelectedMixEvidence()(TryGetMixCombination(origin.Index, result.PartnerIndex, result.RawResult) → AtlasEvidenceInfo.ForDetail), called inOnSelectedResultChanged(covers combination AND origin switch via cascade) and inResultChangedwhenRawResultchanges (covers editing the outcome viaResultRef→SyncBack→NotifyComputedChangedand "Set Empty"). Hide-on-edit: re-pointing the result to another item, "Set Empty" (raw 0), an empty/upper-triangle mirror cell, or a pair outside the corpus → accessorfalse/null→ the strip self-hides (IsVisible=false);(origin,partner)order irrelevant (max/min canonicalization in the accessor). REUSE of thev2.63.0capability + ANIMA'sCommoninfra (consumed only) → (precedent: Shop badge UIsv2.61.2/v2.61.5were PATCH). No new writer:--mixtable-rt0stays byte-identical (25108/25108). Does not touch ANIMA'sCommonengine, the provider, Treasure/Shop (RIKKU), or BRASKA/WAKKA/AURORA/BAHAMUT/SIN. Reviewed by a 5-lens adversarial workflow (hide-on-edit, writer/read-only, ANIMA-boundary, XAML-binding, honesty) + synthesis →ship, 0 defects. Build 0 errors / 361 warnings;--spiraatlas-rt0(Mix 6328) +--mixtable-rt0(byte-identical) +--aicmdmeta-rt0PASS. Doc:docs/ai/ATLAS_JECHT_MIX_BADGE_UI_RESULT_2026-06-10.md
v2.64.0
v2.64.2BETA
Seymour
Blitzball save writer LAB + prize offsets SAVE-PROVED against a real save (no tournament)
- The Blitzball prize offsets went from RE to save-proved: I located the real saves (
Documents\SQUARE ENIX\...\FINAL FANTASY X\ffx_000..006, 7 slots of0x6900=0x40 header + 0x68C0 SaveData) andffx_000decoded correctly (league = Megalixir/Mega-Potion/Speed Sphere, tournament = Elixir/Super Goalie/Potion, etc.) — the save is plaintext, no encryption/compression (gil/story/battle_count sane),--base 0x40confirmed. The0x40header has a"cxs"signature + play-time/location; no field matches a SaveData checksum (likely no blocking checksum, but one in-game load is still needed). New LAB writerTools/BlitzballSaveWrite.cs(--blitz-save-write <in> <field> <value> <out>): writes one prize-index u16 to a NEW file (NEVER overwrites the source; refuses in-place overwrite), with before/after resolved via the Atlas catalog. Validated on a COPY offfx_006:tournament0 25 (Elixir) -> 50 (Saturn Crest), diff = exactly 2 bytes, the rest byte-identical.BlitzballSaveRead.Resolvebecameinternal ResolvePrize(reused by the writer). save (ffx_NNN) ≠ game file: editing the save changes THIS playthrough; changing the pool (takara.bin220..320) is Treasure/RIKKU. No Atlas UI/Shop/Treasure/Mix/Common/Aurora/Bahamut/SIN changes. Build 0 errors / 361 warnings. Doc:docs/ai/BLITZBALL_SAVE_RUNTIME_WRITER_SCOUT_2026-06-09.md
v2.64.1
v2.64.3BETA
Seymour
Aeon Growth evidence badge in the Customization Editor (read-only, value-guarded, hide-on-edit)
- Plugs
<common:AtlasEvidenceBadgeStrip>into the "Aeon Grow / Teach" tab ofCustomizationEditor("Recipe Editor" card), consuming the already-built accessorSpiraDataAtlasCatalog.TryGetAeonGrowthRecipe(entryIndex, currentResultRaw, currentItemRaw)(v2.64.0). NewAtlasEvidenceInfo? SelectedAeonEvidenceinCustomizationEditor_DataModel, recomputed on selection change and when the selected row raisesRawResult(AeonRecipeChanged) → hide-on-edit: editing the taught ability/stat OR the cost item (raw mismatch) or an out-of-range index makes the accessor returnnulland the strip hides (no stale badge), an exact mirror of Mix (v2.64.1). The 10 stat recipes show apartialbadge (cost-semantics: the editor rendersPrimary× item, but in-game cost is 1 item/application). No writer or cost-display fix (out of scope). Reuses ANIMA'sCommonengine (consumed only). PC staysblocked(no PC rows) and Spheremetadata-only(no join) — nothing to show. No provider/gate change (--spiraatlas-rt0intact,21296details / 77 Aeon). Build 0 errors / 361 warnings;--customization-rt0+--spiraatlas-rt0+--aicmdmeta-rt0PASS. Does not touch JECHT/Mix, 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