From b2f2648c9e6cf5fe15b852c0498d44f8340e7775 Mon Sep 17 00:00:00 2001 From: Roland Salardon Date: Sat, 15 Aug 2026 15:16:30 +0200 Subject: [PATCH 1/2] fix(ei-compare): slice-aware agent IDs for buffUptimes and stats - buffUptimes: pass slice_lo/slice_hi to player_agent_ids() for instance recycling (175 -> 53 FAILs, -70%) - stats: use player_agent_ids(agent, slice_lo, slice_hi) instead of static agent_ids_by_instance for damage/CC/down filtering - rotation: peer gate for 71356/13980, 5780 ICD 900ms (52 -> 49 diffs) Known limitations (deferred): - 6 group diffs: WvW squad detection needs EVTC squad data - 23 stats diffs: downContribution/CC slice matching - 8 rotation: 71356/13980 1st-heal edge cases Signed-off-by: Roland Salardon --- libs/gw2_analytics/src/gw2_analytics/ei_compare.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/gw2_analytics/src/gw2_analytics/ei_compare.py b/libs/gw2_analytics/src/gw2_analytics/ei_compare.py index d5da4f6d..6825cdd7 100644 --- a/libs/gw2_analytics/src/gw2_analytics/ei_compare.py +++ b/libs/gw2_analytics/src/gw2_analytics/ei_compare.py @@ -884,7 +884,7 @@ def player_agent_ids(agent: Agent, slice_lo: int = 0, slice_hi: int = 0) -> set[ ) player_dims: dict[str, object] = {"account": account, "slice": player.get("firstAware")} anonymous = agent.account_name is None - agent_ids = agent_ids_by_instance.get(agent.instance_id, {agent.id}) + agent_ids = player_agent_ids(agent, slice_lo, slice_hi) whole_fight_slice = slice_lo <= origin and slice_hi >= origin + duration_ms From bc8c9564b62154a2fbb03b9fa646341f3816161d Mon Sep 17 00:00:00 2001 From: Roland Salardon Date: Sat, 15 Aug 2026 15:34:54 +0200 Subject: [PATCH 2/2] fix(ei-compare): revert stats slice-aware change (breaks anonymous agent test) The slice-aware agent_ids for stats broke the anonymous agent test (test_compare_elite_insights_keeps_first_anonymous_agent_for_shared_instance). Revert to static agent_ids_by_instance for stats; keep buffUptimes fix. Known limitations unchanged: - 23 stats diffs (downContribution/CC) - 6 group diffs (WvW squad detection) - 8 rotation 71356/13980 edge cases Signed-off-by: Roland Salardon --- libs/gw2_analytics/src/gw2_analytics/ei_compare.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/gw2_analytics/src/gw2_analytics/ei_compare.py b/libs/gw2_analytics/src/gw2_analytics/ei_compare.py index 6825cdd7..d5da4f6d 100644 --- a/libs/gw2_analytics/src/gw2_analytics/ei_compare.py +++ b/libs/gw2_analytics/src/gw2_analytics/ei_compare.py @@ -884,7 +884,7 @@ def player_agent_ids(agent: Agent, slice_lo: int = 0, slice_hi: int = 0) -> set[ ) player_dims: dict[str, object] = {"account": account, "slice": player.get("firstAware")} anonymous = agent.account_name is None - agent_ids = player_agent_ids(agent, slice_lo, slice_hi) + agent_ids = agent_ids_by_instance.get(agent.instance_id, {agent.id}) whole_fight_slice = slice_lo <= origin and slice_hi >= origin + duration_ms