Atualização 2.62
09/06/2026
v2.62.0BETA
Seymour
Blitzball Prize Explorer: read-only Atlas UI dedicado
- Novo módulo
Modules/BlitzballPrizeExplorer(aba Blitzball Prizes 🏐 no grupo Reference/RE, sem gate de projeto) que consome o catálogo already-closedSpiraDataAtlasCatalog.BlitzballPrizeDetails(domínioblitzball-prize): uma DataGrid pesquisável com colunas prize id · índice takara · recompensa resolvida · kind · evidência, filtros de status/evidência e kind, um banner com a RULEprize 0..100 -> takara 220..320 -> reward(proved-candidate offline) e um painel de detalhe com origem/regra/"onde aparece"/limitations +<common:AtlasEvidenceBadgeStrip>(badges Atlas/BIBLE). Honestidade preservada: treasure =proved-candidate(nunca RT2); os 64 script-sites de league/tournament/evento mostram explicitamente comoblocked(o prêmio per-event é runtime/save); tech =partial; overdrive =metadata-only— nada fica verde além do label atual. Novo accessor read-onlySpiraDataAtlasCatalog.BlitzballPrizeDetails(lazy, só devwork/) + 2 asserts--spiraatlas-rt0(229 linhas = 164 catálogo + 64 sites + 1 guardrail; check de domínio). Sem writer, sem runtime; não toca RIKKU/Shop/Treasure/Mix, o engineCommonde ANIMA (só consumido), nem Aurora/Bahamut/SIN. Build 0 erros / 361 avisos;--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 (elimina a divergência + corrige landmine de operando)
- Endurecimento do item-shop value-guard: o provider agora lê
slot_value_hexdo csv SAME (item_shop_command_crosslink.csv) que constrói o detalheatlas:item-shop, em vez de um segundo arquivo (item_shop_slots.csv) — valor e detalhe agora vêm de uma linha e não podem driftar. A pontebuild_spira_atlas_step0c_crosslinks.ps1agora emiteslot_value_hexcomo coluna de crosslink e remove uma armadilha latente: a matemáticaslot_value + 0x2000(escrita quandoslot_value_hexestava vazio/raw-index) agora computaria0x4000porque o parser emite o valor codificado completo (0x2000para Potion) → um join FALSE paraAttack(um comando AI) — exatamente o erro de categoria que os guardrails proíbem.item_operand_hexfica vazio por design (item game-index ≠ operando de comando AI). Verificado por um fluxo adversarial de 3 lentes (drift/single-source, operando/encoding, regressão/gear) —sound; 2 comentários obsoletos corrigidos. Nota de múltiplas frentes: a metade PROVIDER foi varrida parav2.62.0(commit2bc3d7b0, lane WAKKA, umgit add); este commit fornece a metade BRIDGE que torna o HEAD consistente. Gear intocado. Sem alterações em writer/UI/runtime, Treasure/Mix/Common/Aurora/native-menu. Build 0 erros / 361 avisos;--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
reader/diff de save Blitzball, read-only (scout prize-save RE)
- Ferramenta Read-only CLI (
Tools/BlitzballSaveRead.cs+ dispatchProgram.cs) que abre um save.date decodifica os 4 campos prize-index Blitzball (league/tournament×prize[3]/top-scorer) nos offsets RE-derived (SaveData @file+0x40, BlitzballData @+0x1984; prêmio de league @ save-file0x1A3C, torneio0x1A42, top-scorers0x1A48/0x1A4A), resolvendo cada valor para sua recompensa via o catálogo fechado do Atlas. Modos:--blitz-save-read <save>(decode) e--blitz-save-diff <before> <after>(save-compare: prêmios A vs B + diff de byte full-file, sinalizando runs dentro de BlitzballData e decodificando o u16old->new).--basesobrescrevível (a base on-disk não é live-confirmed). Base SaveData RVA0xD2CA90confirmada por IDA (sub_785300retornaimagebase+0xD2CA90) + Fahrenheit + MemoryMap;sub_8B5450(memcpy0x68C0deSaveFile+0x40) prova o layout do arquivo. 100% read-only: nada escrito no save/jogo/RAM. Validado por um smoke-test sintético (decode + resolução de recompensa + diff localizando a mudança). Sem mudanças de Atlas UI / Shop/Treasure/Mix / Common / Aurora/Bahamut/SIN. Build 0 erros / 361 avisos. Doc:docs/ai/BLITZBALL_SAVE_RUNTIME_WRITER_SCOUT_2026-06-09.md
v2.62.1