Update 2.62
6/9/2026
v2.62.0BETA
Seymour
Blitzball Prize Explorer: dedicated read-only Atlas UI
- New
Modules/BlitzballPrizeExplorermodule (Blitzball Prizes 🏐 tab in the Reference/RE group, no project gate) that consumes the already-closed catalogSpiraDataAtlasCatalog.BlitzballPrizeDetails(domainblitzball-prize): a searchable DataGrid with prize id · takara index · resolved reward · kind · evidence columns, status/evidence and kind filters, a banner with the RULEprize 0..100 -> takara 220..320 -> reward(proved-candidate offline), and a detail panel with origin/rule/"where it appears"/limitations +<common:AtlasEvidenceBadgeStrip>(Atlas/BIBLE badges). Honesty preserved: treasure =proved-candidate(never RT2); the 64 league/tournament/event script-sites show explicitly asblocked(the per-event prize is runtime/save); tech =partial; overdrive =metadata-only— nothing goes green beyond the current label. New tiny read-only accessorSpiraDataAtlasCatalog.BlitzballPrizeDetails(lazy, devwork/only) + 2--spiraatlas-rt0asserts (229 rows = 164 catalog + 64 sites + 1 guardrail; domain check). No writer, no runtime; does not touch RIKKU/Shop/Treasure/Mix, ANIMA'sCommonengine (consumed only), or Aurora/Bahamut/SIN. Build 0 errors / 361 warnings;--spiraatlas-rt0+--aicmdmeta-rt0PASS. Doc:docs/ai/ATLAS_WAKKA_BLITZBALL_UI_RESULT_2026-06-09.md
v2.61.5
v2.62.1BETA
Seymour
Item-shop value-guard SINGLE SOURCE (removes drift + fixes operand landmine)
- Hardening of the item-shop value-guard: the provider now reads
slot_value_hexfrom the SAME csv (item_shop_command_crosslink.csv) that builds theatlas:item-shopdetail, instead of a second file (item_shop_slots.csv) — value and detail now come from one row and cannot drift. The bridgebuild_spira_atlas_step0c_crosslinks.ps1now emitsslot_value_hexas a crosslink column AND removes a latent landmine: theslot_value + 0x2000math (written whenslot_value_hexwas empty/raw-index) would now compute0x4000because the parser emits the full encoded value (0x2000for Potion) → a FALSE join toAttack(an AI command) — exactly the category error the guardrails forbid.item_operand_hexstays empty by design (item game-index ≠ AI command operand). Verified by a 3-lens adversarial workflow (drift/single-source, operand/encoding, regression/gear) —sound; 2 stale comments fixed. Multi-lane note: the PROVIDER half was swept intov2.62.0(commit2bc3d7b0, WAKKA lane, a broad concurrentgit add); this commit brings the BRIDGE half that makes HEAD consistent. Gear untouched. No writer/UI/runtime; no Treasure/Mix/Common/Aurora/native-menu changes. Build 0 errors / 361 warnings;--spiraatlas-rt0PASS (9 shop asserts: 5 gear + 4 item) +--aicmdmeta-rt0PASS. Doc:docs/ai/ATLAS_RIKKU_ITEM_SHOP_SINGLE_SOURCE_RESULT_2026-06-09.md
v2.62.0
v2.62.1.1BETA
Seymour
Blitzball save reader/diff, read-only (prize-save RE scout)
- Read-only CLI tool (
Tools/BlitzballSaveRead.cs+Program.csdispatch) that opens a.datsave and decodes the 4 Blitzball prize-index fields (league/tournament×prize[3]/top-scorer) at the RE-derived offsets (SaveData @file+0x40, BlitzballData @+0x1984; league prize @ save-file0x1A3C, tournament0x1A42, top-scorers0x1A48/0x1A4A), resolving each value to its reward via the closed Atlas catalog. Modes:--blitz-save-read <save>(decode) and--blitz-save-diff <before> <after>(save-compare: prizes A vs B + full-file byte diff, flagging runs inside BlitzballData and decoding theold->newu16).--baseoverridable (the on-disk base is not live-confirmed). SaveData base RVA0xD2CA90confirmed by IDA (sub_785300returnsimagebase+0xD2CA90) + Fahrenheit + MemoryMap;sub_8B5450(memcpy0x68C0fromSaveFile+0x40) proves the file layout. 100% read-only: nothing written to the save/game/RAM. Validated by a synthetic smoke-test (decode + reward resolution + diff locating the change). 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.62.1