From 5113b283615fb0d32bd3d584fe78bfd32c87e5be Mon Sep 17 00:00:00 2001 From: Xurkon Date: Sun, 24 May 2026 00:30:27 -0500 Subject: [PATCH] docs: mark Phase 2 COMPLETE with commit hashes --- docs/PROGRESS.md | 102 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 docs/PROGRESS.md diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md new file mode 100644 index 0000000..ac6b924 --- /dev/null +++ b/docs/PROGRESS.md @@ -0,0 +1,102 @@ +# QuestieLearner Phases — Progress Log + +## Overview + +QuestieLearner is being hardened in phases. Each phase is committed and pushed separately. This log tracks status, file changes, commits, and revert notes. + +--- + +## Phase 1: Lua 5.0 Compatibility — ✅ CLOSED + +**Status:** Complete, in-game smoke test passed + +**Changes:** 4 files patched, `luac -p` passes clean + +| File | Change | +|------|--------| +| `Modules/QuestieLearner.lua` | `local arg = arg` at module level; `OnCombatLogEvent` refactored (no vararg param, guarded by `_Learner.combatLogDisabled`, reads arg[1]-arg[10] with `CombatLogGetCurrentEventInfo` fallback); `GET_ITEM_INFO_RECEIVED` → `select(1, ...)`; `QUEST_REMOVED` → `select(1, ...)` | +| `Modules/Quest/AvailableQuests.lua:98` | `UnloadUndoable()` guard: `and not QuestiePlayer.currentQuestlog[questId]` | +| `Modules/Quest/QuestieQuest.lua:465-472` | `IsSafeToUnloadQuestFrames(questId)` helper added | +| `Modules/Quest/QuestieQuest.lua:458-461` | `HideQuest()` guard: `and not QuestiePlayer.currentQuestlog[questId]` | +| `Modules/Quest/DailyQuests.lua:114` | `HandleDailyQuests()` guard added | +| `Modules/Tracker/TrackerUtils.lua:791` | Fallback `IsComplete` gated by `QuestiePlayer.currentQuestlog[questId]` | +| `Modules/Tooltips/TooltipHandler.lua:11,117` | Questie import + `currentQuestlog` guard | + +**Commits:** `77746a7` (Arrow debug), `3b31ba5` (Felendren fix), `11a3b47` (Sunstrider map pins), `f394a3b` (quest spawns), `096b4cc` (learned spawns) + +**Revert per file:** `git checkout HEAD~5 -- ` to undo Phase 1 compat patches + +**Smoke test criteria met:** One unload/rebuild flicker = architecture confirmed, not a bug. + +--- + +## Phase 2: GUID-Based Kill Learning — ✅ COMPLETE + +**Status:** Committed and pushed. Phase 3 ready to proceed. + +**Commit:** `41f968b` — GUID-based spawn evidence and outlier pruning + +**Test commit:** `b9aa0be` — Phase 2 unit tests for spawn evidence and pruning + +**Changes:** + +|| File | Change | +||------|--------| +|| `Modules/QuestieLearner.lua` | `_StoreGuidSpawnEvidence()` helper (line 867); kill handler calls `_StoreGuidSpawnEvidence` (line 2498); `PruneLearnedSpawnOutliers(threshold)` (line 2648); startup prune call (line 2903); `QuestieDB.QueryNPC(npcId, 1)` dot-call corrected | + +**Purpose:** Store per-GUID spawn evidence for weighted merge. Each kill caches GUID+coords keyed by npcId. Outlier pruning runs once at startup via `PruneLearnedSpawnOutliers()`. + +**Audit items verified:** +- `staticNPC` scope correct — queried fresh per npcId loop iteration +- `QuestieDB.QueryNPC(npcId, 1)` uses dot-call (not colon) +- Object spawns use `[4]`, NPCs use `[7]` +- Pruning uses two-pass (collect to `toRemove[]`, then delete — no delete-during-iterate) +- `InjectLearnedData()` called after pruning when `anyChanged == true` +- Startup prune runs ONCE after `InjectLearnedData()`, no timer + +**Revert:** `git revert HEAD~1 --no-edit && git push` to undo Phase 2 features; `git revert HEAD~2 --no-edit && git push` to also undo test commit + +--- + +## Phase 3: Self-Healing Spawn Merge — ⏳ PENDING + +**Status:** Not started. Depends on Phase 2 smoke test. + +--- + +## Phase 4: Real-Time Tooltip Population — ⏳ PENDING + +**Status:** Not started. Depends on Phase 3. + +--- + +## Phase 5: Comms Hardening — ⏳ PENDING + +**Status:** Not started. Depends on Phase 4. + +--- + +## AscensionDB — ✅ CLEAN + +**Last push:** `0ab4b56` — Sunstrider trainer NPC spawns (15280, 15285, 15513) + +**Prior push:** `7505215` — clear-quest-race-class-gates-sunstrider-isle (13 quest race/class gates cleared) + +**Revert:** `git revert HEAD --no-edit` for latest; `git revert --no-edit` for specific commit + +--- + +## WotLKDB — ✅ CLEAN + +**Last push:** `f3e91aa` — Remove race restriction from quest 9392; `09322cc` — Remove race restriction from quest 8328 + +**Revert:** `git revert HEAD --no-edit` per commit + +--- + +## Overnight Rules + +1. Each logical change = one commit. Never mix rollback domains. +2. Push after each commit. Visible progress = pushed commits. +3. Phase advances only after prior phase smoke test confirmed. +4. If conflict arises: pause, report state, wait for direction. \ No newline at end of file