docs: update learner acceptance notes

This commit is contained in:
Xurkon
2026-06-06 06:42:27 -05:00
parent 82b5aa86dd
commit c3e31b5b81
4 changed files with 35 additions and 2 deletions
+1
View File
@@ -8,6 +8,7 @@
- **[QuestieLearner - Bystander Kill Suppression]** Changed visible nearby `UNIT_DIED` handling so kills from other players can update short-lived correlation evidence without immediately running full learner injection or pin refresh work.
- **[QuestieLearner - PARTY_KILL Event-Order Fix]** Fixed an edge case where a `UNIT_DIED` debounce entry could suppress a later authoritative `PARTY_KILL` for the same GUID. The debounce now tracks event type and allows the player's/group's kill event through while still suppressing true duplicates.
- **[QuestieLearner - Immediate Spawn Pin Rendering]** Learner kill evidence now becomes spawn coordinates immediately in learner mode so learned NPC kills can spawn map pins without waiting for the later confidence merge path.
- **[QuestieLearner - Quest Accept Resolver Hardening]** Removed the learner `QUEST_ACCEPTED` last-resort quest-ID fallback that could invent impossible quest IDs from raw event arguments. Accepted quests now only learn when the ID resolves back to a real quest-log entry, which prevents bogus keys from being persisted in learner SavedVariables or live overrides.
- **[QuestieLearner - Live Performance Options]** Added Advanced-tab controls for learner intensity, pin refresh delay, maximum pin refresh wait, minimum kills before learned pins, and live NPC update delay so users can tune the system for low-end PCs or heavy-activity zones.
- **[QuestieComms - User-Controlled Intensity]** Added Advanced-tab QuestieComms controls, including a full disable switch and live throttles for queue processing, quest-state broadcasts, and bulk sync pacing.
- **[QuestieComms - Disable Gate Fix]** Scoped the comms enable helper so the disable switch no longer calls a nil global and every send/process entry point consistently respects the setting.
+2 -1
View File
@@ -182,6 +182,7 @@
<li><strong>[QuestieLearner &mdash; Bystander Kill Suppression]</strong> Changed visible nearby <code>UNIT_DIED</code> handling so kills from other players can update short-lived correlation evidence without immediately running full learner injection or pin refresh work.</li>
<li><strong>[QuestieLearner &mdash; PARTY_KILL Event-Order Fix]</strong> Fixed an edge case where a <code>UNIT_DIED</code> debounce entry could suppress a later authoritative <code>PARTY_KILL</code> for the same GUID. The debounce now tracks event type and allows the player's/group's kill event through while still suppressing true duplicates.</li>
<li><strong>[QuestieLearner &mdash; Immediate Spawn Pin Rendering]</strong> Learner kill evidence now becomes spawn coordinates immediately in learner mode so learned NPC kills can spawn map pins without waiting for the later confidence merge path.</li>
<li><strong>[QuestieLearner &mdash; Quest Accept Resolver Hardening]</strong> Removed the learner <code>QUEST_ACCEPTED</code> last-resort quest-ID fallback that could invent impossible quest IDs from raw event arguments. Accepted quests now only learn when the ID resolves back to a real quest-log entry, which prevents bogus keys from being persisted in learner SavedVariables or live overrides.</li>
<li><strong>[QuestieLearner &mdash; Live Performance Options]</strong> Added Advanced-tab controls for learner intensity, pin refresh delay, maximum pin refresh wait, minimum kills before learned pins, and live NPC update delay so users can tune the system for low-end PCs or heavy-activity zones.</li>
<li><strong>[QuestieComms &mdash; User-Controlled Intensity]</strong> Added Advanced-tab QuestieComms controls, including a full disable switch and live throttles for queue processing, quest-state broadcasts, and bulk sync pacing.</li>
<li><strong>[QuestieComms &mdash; Disable Gate Fix]</strong> Scoped the comms enable helper so the disable switch no longer calls a nil global and every send/process entry point consistently respects the setting.</li>
@@ -196,7 +197,7 @@
<li><strong>[Tooltip Data Precedence]</strong> Updated tooltip handling so QuestieLearner defers to AscensionDB-owned tooltip/objective data instead of hiding or replacing server-plugin data for active quests.</li>
</ul>
<div class="important">
<strong>Release status:</strong> The most complete performance candidate is not yet a single branch. Merge <code>questie-learner-comms-improvements</code> with <code>phase3-measured-perf</code>, remove or revalidate the stale reverted <code>QuestieMap.ProcessQueue</code> profile-local commit, fix the unrelated Arrow asset test mismatch, and validate in game before stable release. Test learner-only/static-only switching, immediate spawn pin rendering, and available-quest scanning during real kill/loot gameplay.
<strong>Release status:</strong> The most complete performance candidate is not yet a single branch. Merge <code>questie-learner-comms-improvements</code> with <code>phase3-measured-perf</code>, remove or revalidate the stale reverted <code>QuestieMap.ProcessQueue</code> profile-local commit, fix the unrelated Arrow asset test mismatch, and validate in game before stable release. Test learner-only/static-only switching, immediate spawn pin rendering, available-quest scanning, and quest accept / NPC / item learning during real kill/loot gameplay.
</div>
<h2 id="v163">[v1.6.3] &mdash; Arrow Redesign, Minimap Pin Drift Fix (Live API + Corrected Pixel Math), Sunstrider Isle Arrow Distance, Map Pins, Tooltip Schema Fixes, QuestData String Safety</h2>
+2 -1
View File
@@ -12,6 +12,7 @@ Current branch work includes:
- Bystander `UNIT_DIED` suppression so nearby players killing mobs do not force local learner pin redraws.
- A `PARTY_KILL` event-order fix so legitimate local/group kills are not skipped after an earlier `UNIT_DIED`.
- Immediate learner spawn pin rendering so kill evidence can become map pins right away in learner mode.
- A hardened learner `QUEST_ACCEPTED` resolver so bogus quest IDs from raw event arguments are no longer persisted when they do not map back to a real quest-log entry.
- Learner-aware DB reads that can fall back to `Questie.dbLearner.global.*` when static data is missing.
- Advanced-tab performance controls for QuestieLearner, QuestieComms, and Arrow throttles.
- A full QuestieComms disable switch with live queue/broadcast/sync throttles.
@@ -19,7 +20,7 @@ Current branch work includes:
- Available quest draw-thread guarding so missing quest IDs skip safely instead of crashing redraws.
- A measured phase 3 branch with additional localization, quest eligibility, tooltip/map, cache, and allocation hot-path reductions.
Remaining before stable release: integrate the learner/comms branch with the measured phase 3 branch, remove or revalidate the stale reverted `QuestieMap.ProcessQueue` profile-local commit, fix unrelated Arrow asset test expectations, and validate in-game in heavy kill/loot zones with the minimap open, learner-only/static-only switching, and repeated loot/object objective testing.
Remaining before stable release: integrate the learner/comms branch with the measured phase 3 branch, remove or revalidate the stale reverted `QuestieMap.ProcessQueue` profile-local commit, fix unrelated Arrow asset test expectations, and validate in-game in heavy kill/loot zones with the minimap open, learner-only/static-only switching, repeated loot/object objective testing, and the new quest-accept / NPC / item learning paths.
## Highlights
@@ -6153,3 +6153,33 @@ full-precision grouping key in `_MergeSpawnEvidence` (`Modules/QuestieLearner.lu
disables proximity merge, and a larger radius widens merging.
`Tests/QuestiePinClustering_spec.lua` asserts the knob wiring (default + UI +
cache-clear redraw).
### Pass-54 - Quest accept resolver hardening and current NPC/item ID investigation (2026-06-06)
The learner was logging impossible quest IDs from `QUEST_ACCEPTED` because the
accept handler still had a last-resort `questId = firstArg` fallback. On this
client/server combination the raw event arguments can be misaligned, so that
fallback was persisting bogus quest keys such as `615514513` instead of waiting
for a real quest-log entry. The fix now resolves accepted quests only through a
real quest-log index / quest-log selection / quest ID that actually exists in
the log, and skips learning entirely if none of those resolve.
- `Modules/QuestieLearner.lua`
- Added a strict accepted-quest resolver that only accepts IDs that map back
to a real quest-log entry.
- Removed the raw-argument last-resort quest-ID fallback.
- `Tests/QuestieLearnerDataSourceMode_spec.lua`
- Added a regression proving a garbage accepted-quest value resolves from the
real quest log instead of being used directly.
- Added a regression proving impossible quest IDs are ignored when they do
not resolve to the quest log.
### Open follow-up
The current live logs also show a separate learner issue where NPC IDs can be
mis-read from Ascension GUIDs (`Arcanist Helion` learning as `168` instead of
`15297`), and item IDs are not yet being learned reliably from the same flows.
That points to a GUID / source-ID extraction issue in the learner capture path,
not the quest accept resolver above. The next pass should trace the exact GUID
parsing and item-source events used by the live client so those IDs are learned
correctly before any static export work continues.