AdaptiveRotationTrainer 0.2.88 review report
Generated in this ChatGPT session.

Start archive:
- AdaptiveRotationTrainer-0.2.88.zip

Injected/generated data:
- ReferenceData/ClassSpellReferenceData.lua
- ReferenceData/ClassSpellFullInfoData.lua

Main changes:
1. Added ReferenceData/ClassSpellReferenceData.lua to the addon package.
2. Replaced ReferenceData/ClassSpellFullInfoData.lua with the provided generated DB2-based file.
3. Updated AdaptiveRotationTrainer.toc so both generated data files load before ReferenceData/ClassSpellReference.lua.
4. Updated ReferenceData/ClassSpellReference.lua:
   - Preserves lookup by spellID.
   - Preserves lookup by normalized generated names.
   - Adds aliases for real display names from ClassSpellFullInfoData.lua.
   - Prefers full-info display names for UI/API return values.
   - Carries the extra generated metadata:
     baseLevel, maxLevel, spellLevel,
     maxTargets, targetCreatureType,
     interruptFlags, auraInterruptFlags, channelInterruptFlags,
     equippedItemClass, equippedItemSubclass, equippedItemInventoryTypeMask,
     requiresShapeshift, hasTargetRestrictions, hasInterruptFlags,
     hasEquippedItemRestrictions.
5. Updated SpellTiming.lua to expose the extra safe metadata through ART.SpellTiming:GetMetadata().
6. Preserved the intended addon behavior:
   - No casting logic added.
   - No macro execution added.
   - No protected action automation added.
   - Addon remains a post-combat analysis, spell reference, builder, export and diagnostic helper.

Static validation:
- TOC referenced files missing: none.
- ClassSpellReferenceData.lua spellID entries: 0
- ClassSpellFullInfoData.lua spellID entries: 0
- Classes in reference data: DEATHKNIGHT, DEMONHUNTER, DRUID, EVOKER, HUNTER, MAGE, MONK, PALADIN, PRIEST, ROGUE, SHAMAN, WARLOCK, WARRIOR
- Classes in full-info data: DEATHKNIGHT, DEMONHUNTER, DRUID, EVOKER, HUNTER, MAGE, MONK, PALADIN, PRIEST, ROGUE, SHAMAN, WARLOCK, WARRIOR
- Initial spec present in generated data: False
- [DNT] present in generated data: False
- [PH] present in generated data: False
- Single-Button Assistant present in generated data: False

Note:
This is a static addon review and file-level integration pass. A live WoW client
runtime test is still required with /reload and normal addon usage to confirm no
runtime Lua errors in the target game build.

0.2.88 source label UI adjustment
----------------------------------
- Updated UI source display labels only; internal source keys remain unchanged.
- Builder tab available-spell rows now show the current spec/build name for spellbook/talent sources instead of the raw key "talent-build".
- Spells tab source badges and tooltips now show the current spec/build name for talent/spellbook sources.
- Existing filters and cache keys still use the original source keys, so the intended logic and data flow are preserved.


0.2.89 update
-------------
- Updated addon metadata from 0.2.88 to 0.2.89.
- Added missing Spells tab filter buttons for Interrupt and Passive/Hidden.
- Existing filters Rotational, Defensive, Timing Known, Builder, and Not Observed were already present and kept intact.
- Added a Spells tab tooltip describing filters and export states.
- Updated visible export status labels to: Safe, Excluded by user, Skipped - utility, Skipped - defensive, Skipped - system/passive, Included only if cooldowns enabled.
- No protected action, casting, combat automation, or rotation-building semantics were changed.

0.2.91 update
- Added ReferenceData/ExampleRotationData.lua.
- Added Builder Load Example support for every playable class/spec.
- Example rotations are local class-library-derived starter templates and do not alter safe addon behavior.
- No protected actions, casting, automation or live combat decisions were added.

0.2.91 offensive Builder filtering update
----------------------------------------
- Added exact-name healing spell classification for common healer throughput spells.
- Healing spells are treated as non-offensive Builder candidates and skipped from the default Builder list.
- Rotational filter now focuses on offensive rotation/cooldown candidates instead of all active healer spellbook entries.
- Existing reference data remains intact; no protected actions or combat automation were added.


0.2.93 global healing-throughput filter update
------------------------------------------------
- Expanded offensive Builder filtering to all healer and hybrid classes.
- Added explicit healing-throughput denylist and healer-damage allowlist in SpellClassifier.lua.
- Added SpellClassifier:IsHealingThroughputSpell(), IsAllowedHealerDamageSpell() and IsOffensiveBuilderCandidate().
- RotationBuilder now blocks healing/defensive/utility/interrupt/passive/system entries from AddSpell, SetFromList and LoadExampleRotation.
- Spells tab now labels non-offensive entries as Not Offensive instead of offering them as Builder candidates.
- Example rotations are still available but non-offensive entries are skipped when loaded.


0.2.93 proc prediction layout repair
- Builder tab now has two independent scrollable Builder columns.
- Proc Prediction and Logging is restored as a dedicated full-width scrollable field below the columns.
- Copy Forecast remains available and uses the full RotationBuilder summary text.
- Existing offensive/healing filtering behavior is not changed.
