# Database Fix Tracker

Issues identified across HDG_VendorDB and HDG_AllDecorDB.
Generated 2026-02-07 from automated audit. Updated 2026-02-08.

---

## VendorDB Issues

### ~~HIGH: World-Space Coordinates (97 vendors)~~ FIXED

All 90 world-space vendors fixed via `Utilities/fix_vendor_coords.py` (4-phase resolution).
4 additional neighborhood-instance vendors (mapID 2735/2736) fixed manually to zone mapIDs.
Coord validation added to `ZonePctToMap()` with -5/105 tolerance + clamping.

### HIGH: Items with goldCost=0 and No Currency (294 items)

294 items have zero gold cost and no currency cost field. Two categories:
- **21 items with rep requirement** -- likely unlockable at standing, cost may be free or undocumented
- **273 items with nothing** -- class hall rewards, garrison unlocks, quest rewards, or missing data

Major clusters: Class Hall vendors (Legion), Garrison vendors (WoD), Midnight/Silvermoon vendors, Harandar/Voidstorm vendors, Zul'Aman vendors

**Status**: Many are likely legitimately free (class hall unlocks, garrison rewards). Needs in-game verification.

### MEDIUM: Zero Coords / Missing MapID (1 vendor)

| NPC | Name | Zone | Notes |
|-----|------|------|-------|
| 180268 | Ta'sam | K'aresh | mapID=0, x=0, y=0. Instanced Ethereal zone, may not have valid mapID |

### LOW: MapIDs Needing In-Game Verification (3 vendors)

| NPC | Name | Zone | MapID | Notes |
|-----|------|------|-------|-------|
| 106902 | Ransa Greyfeather | Thunder Totem | 750 | Could be 652 (micro-dungeon) |
| 112318 | Flamesmith Lanying | The Maelstrom | 1469 | Shaman class hall |
| 112338 | Caydori Brightstar | The Wandering Isle | 1514 | Monk class hall |

### LOW: Unknown Zone (1 vendor)

| NPC | Name | Zone | MapID |
|-----|------|------|-------|
| 93550 | Quartermaster Ozorg | Unknown Zone | 2147 |

Needs manual lookup. MapID 2147 may be a Legion class hall instance map.

---

## AllDecorDB Issues

### ~~HIGH: Unknown Source (58 items, sourceType=0)~~ MOSTLY FIXED

24 of 58 items resolved via `Utilities/fix_databases.py`:
- 11 items -> Vendor (confirmed via Wowhead/housing.wowdb.com)
- 5 items -> Crafted (Alchemy, Inscription, Engineering)
- 6 items -> Drop (Midnight Delves, Magisters' Terrace, Murder Row)
- 1 item -> Treasure (Stellar Stash / Slayer's Rise)
- 1 item -> Quest (Flowers for Amalthea / Eversong Woods)

**34 items remain unknown** -- unreleased Midnight content (launches March 2, 2026).
Includes: Spring Blossom cluster (6), Crimson Crystal cluster (3), Lunar Celebrant cluster (11), misc (14).

### ~~HIGH: VendorDB Items Missing from AllDecorDB (88 items)~~ FIXED

94 items added to AllDecorDB via `fix_databases.py` with sourceType=5 (Vendor), decorID=0 placeholder.
DecorIDs will be populated on next catalog rebuild from SavedVariables.

### ~~HIGH: Vendor-Sourced Items Missing from VendorDB (22 items)~~ MOSTLY FIXED

17 of 22 items resolved:
- **Corlen Hordralin** (NPC 252915, Silvermoon City) -- new vendor added, 13 items, 5000g each
- **Bob** (NPC 87022, Stormshield) -- new vendor added, 1 item
- **Breanni** (NPC 96479, Dalaran) -- new vendor added, 1 item
- **Duskcaller Erthix** (NPC 256946, Talador) -- new vendor added, 1 item (100,000g)
- **Balen Starfinder** (NPC 255216) -- item 253256 added to existing vendor

**5 items remain unresolved**:
- "Eastern Kingdoms World Vendors" (246424) -- generic, can't map to specific NPC
- "Unknown Vendor" / "Midnight" (265653, 265654, 266064, 266130) -- unreleased content

### ~~MEDIUM: Internal/Placeholder Source Names (4 items)~~ FIXED

All 4 "8.1 Darkshore Outdoor Final Phase" items changed to "Darkshore Warfront" / "Darkshore".

### MEDIUM: Generic/Unknown Vendor Names (9 items)

| itemID | sourceName | sourceDetail | Status |
|--------|-----------|-------------|--------|
| 244321, 244322, 245444, 245445 | "Draenor World Vendors" | "" | Needs research |
| 246424 | "Eastern Kingdoms World Vendors" | "" | Can't map to NPC |
| 265653, 265654, 266064, 266130 | "Unknown Vendor" | "Midnight" | Unreleased |

### ~~MEDIUM: WorldQuest Misclassification (~30 items)~~ FIXED

36 items reclassified from sourceType=3 (WorldQuest) to sourceType=4 (Drop):
- 32 boss/dungeon drops (Scourgelord Tyrannus, Chimaerus, Alleria Windrunner, etc.)
- 4 Delves drops (Collegiate Calamity, Shadow Enclave)

### ~~LOW: Stale Header Comments~~ FIXED

Header recalculated: 1697 items, 412 acquirable.
Stats: unknown=34, achievement=121, quest=110, world_quest=93, drop=68, vendor=941, crafted=310, treasure=3, promotion=17

### LOW: Empty sourceDetail (12 items with non-zero sourceType)

4 of 12 fixed ("Darkshore Warfront" → added "Darkshore" detail, "Deadmines" → added "Westfall").
8 remaining: 4 "Draenor World Vendors" items + 2 Treasure items + 2 others need research.

### LOW: Items in VendorDB with Different sourceType (181 items)

181 items exist in VendorDB but AllDecorDB lists them under a different source. Most are intentional:
- ~107 achievement-gated vendor items (primary source = Achievement)
- ~74 quest/world-quest-gated vendor items (primary source = Quest)
No action needed -- dual-source items correctly show primary acquisition method.

---

## VendorDB New Entries Added

| NPC ID | Name | Zone | Faction | Items | Source |
|--------|------|------|---------|-------|--------|
| 252915 | Corlen Hordralin | Silvermoon City | H | 13 | fix_databases.py |
| 87022 | Bob | Stormshield | A | 1 | fix_databases.py |
| 96479 | Breanni | Dalaran (Broken Isles) | N | 1 | fix_databases.py |
| 256946 | Duskcaller Erthix | Talador | H | 1 | fix_databases.py |
| 248854 | The Last Architect | Founder's Point | N | 1 | fix_databases.py |

Items also added to existing vendors: Balen Starfinder (+4), Jehzar Starfall (+3), Botanist Boh'an (+1),
"Yen" Malone (+4 each, 2 NPCs), Trevor Grenner (+3), "High Tides" Ren (+2 each, 2 NPCs),
Xiao Dan (+2), Sage Lotusbloom (+1), Sage Whiteheart (+1).

---

## Format Changes

### Timestamps Added (2026-02-08)

Both databases now include timestamp fields for tracking when entries were added:

- **AllDecorDB**: Field 5 = `addedTimestamp` (0=legacy, Unix epoch=when added)
  - Format: `[itemID] = {decorID, sourceType, "sourceName", "sourceDetail", addedTimestamp}`
- **VendorDB**: Named field `added = timestamp` (0=legacy, Unix epoch=when added)
  - Format: `[npcID] = {"Name", "Zone", mapID, x, y, "faction", added = timestamp, items = {...}}`

All existing entries set to 0 (legacy). New entries added by build scripts get current Unix epoch.
Build scripts updated: `build_all_decor_db.py`, `build_vendor_db.py`, `fix_databases.py`.

---

## Summary by Priority

| Priority | Category | Status |
|----------|----------|--------|
| ~~HIGH~~ | ~~VendorDB: World-space coords~~ | FIXED (94 vendors) |
| HIGH | VendorDB: Zero-cost items (no currency) | 294 items, likely intentional |
| ~~HIGH~~ | ~~AllDecorDB: Unknown source items~~ | 24/58 FIXED, 34 unreleased |
| ~~HIGH~~ | ~~VendorDB items missing from AllDecorDB~~ | FIXED (94 items added) |
| ~~HIGH~~ | ~~AllDecorDB vendor items missing from VendorDB~~ | 17/22 FIXED, 5 unresolvable |
| ~~MEDIUM~~ | ~~AllDecorDB: Internal/placeholder names~~ | FIXED |
| MEDIUM | AllDecorDB: Generic vendor names | 5 "Draenor" items remain |
| ~~MEDIUM~~ | ~~AllDecorDB: WorldQuest misclassification~~ | FIXED (36 items) |
| LOW | AllDecorDB: Empty sourceDetail | 8 items remain |
| LOW | VendorDB: Zero coords (Ta'sam) | Can't fix (instanced zone) |
| LOW | VendorDB: MapIDs needing verification | 3 vendors, needs in-game check |
| LOW | VendorDB: Unknown zone (Ozorg) | Needs manual lookup |
| LOW | AllDecorDB: Different sourceType cross-ref | 181 items, intentional dual-source |
