You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fix(importer): normalize build 5875 Spell columns before deriving effects #460
The general Spell importer reads shifted build 5875 effect arrays. This can treat an equipment inventory mask as an effect, move valid effects to the wrong slot, and omit the third effect.
importer/src/spell.rs documents that wow_dbc 0.3 omits InterruptFlags, but incorrectly says the arrays resynchronize. push_spell_effect_rows and resolve_effect_kind still read the shifted SpellRow.effect, effect_aura and related fields directly.
Observed against Spell.dbc SHA-256 913d01c0376d88310ed4a44ea1115f30fd8be15af64ce304f4f17b6bc51cf15b:
Spell
Raw build 5875 fields
Named wow_dbc fields
7748
Equipment class 4, inventory mask 1048608, effects [53,0,0]
Equipment class 0, effects [1048608,53,0]
7747
Equipment class -1, effects [6,0,0], auras [34,0,0], base points [14,0,0]
Equipment class 0, effects [0,6,0], auras [0,34,0], base points [0,14,0]
The #31 Random Property Tracer found this through real-data import and now reads canonical build 5875 columns for its item catalogue. General Spell import still needs correction.
Implement a normalized build 5875 Spell reader for general import and its snapshots. Reuse the item catalogue reader where appropriate. Audit every consumed field against the pinned source layout, including effect targets, ranges, magnitudes and all three slots. Review curated corrections that may compensate for shifted input before removing them.
Done when source-shaped fixtures prove all three effect slots and the preceding equipment fields, actual DBC checks cover known spells, importer tests and affected durable gameplay tests pass, and the changed import output has been reviewed. Record any World Import Profile reimport requirement. Do not update a live Realm as part of implementation.
Found during #31 implementation. Model: GPT-6 Astra. Harness: Codex.
Fixed by #465, merged as 044b93531ed6afe13202cd541d105d3d634d5b0d.
The normalized build 5875 reader now preserves all three effect slots and the preceding equipment fields, reads every consumed column from the pinned layout, and derives targets from explicit flags and source defaults. The source comparison retained 22,357 headers, restored 874 third effects, removed 204 false effects, and corrected target routing without a schema change.
Validation included 360 importer tests, actual-source audits for the shifted-column and target cases, three disposable Standalone gameplay cases, strict lint, formatting, and all seven PR checks. No existing Realm was accessed.
Operator follow-up remains deployment work: run the normal Spell reimport and curated class-spell pass on each World Shard and Instance Pool, rebuild Base Snapshots, and review Package Deltas that name affected effect indices before replaying them. Publishing the Module alone does not correct stored rows.
Activity
Mathih13 commentedon Sep 7, 2026
Fixed by #465, merged as
044b93531ed6afe13202cd541d105d3d634d5b0d.The normalized build 5875 reader now preserves all three effect slots and the preceding equipment fields, reads every consumed column from the pinned layout, and derives targets from explicit flags and source defaults. The source comparison retained 22,357 headers, restored 874 third effects, removed 204 false effects, and corrected target routing without a schema change.
Validation included 360 importer tests, actual-source audits for the shifted-column and target cases, three disposable Standalone gameplay cases, strict lint, formatting, and all seven PR checks. No existing Realm was accessed.
Operator follow-up remains deployment work: run the normal Spell reimport and curated class-spell pass on each World Shard and Instance Pool, rebuild Base Snapshots, and review Package Deltas that name affected effect indices before replaying them. Publishing the Module alone does not correct stored rows.