Skip to content

parser: time-aware pet ownership + queue capacity fixes + Sand Cascade fix - #246

Merged
Roddygithub merged 4 commits into
mainfrom
fix/buff-uptimes-merge
Aug 19, 2026
Merged

Roddygithub merged 4 commits into
mainfrom
fix/buff-uptimes-merge

Conversation

@Roddygithub

@Roddygithub Roddygithub commented Aug 19, 2026 •

Copy link
Copy Markdown
Owner

Summary

Four parser improvements for EI parity:

1. Time-aware pet/minion ownership resolution (CAP-4)

  • rotation.py: use ownership_resolver (TemporalIdentityResolver) for all pet spawn attribution
    • Ranger Pet Spawned (-28)
    • Siege Turtle (65418), Fern Hound (12717), Smokescale (31568), Warclaw (74314), Jungle Stalker (12658)
  • Falls back to static spawn_owner_by_target map when resolver unavailable

2. Sand Cascade skill ID fix (GW2 build 197490 cutoff)

  • rotation.py: effect GUIDs 23613E6E374EC6429FE9A69CC893984D and 44092AEF6D619F4093FEA4E9D9142D01 map to different skill IDs pre/post GW2 build 197490
  • Pre-197490: skill 62671 | 197490+: skill 43448
  • Uses fight.header.gw2_build (not arcdps build date)

3. Regeneration/Resolution queue capacity increase

  • buff_state.py: Regeneration capacity 5→15, Resolution 9→15
  • Matches EI's effective queue depth; fixes 52 buffUptimes diffs
  • Regeneration (718) and Resolution (873) diffs eliminated

Testing

  • All 532 tests pass (342 gw2_analytics + 190 gw2_evtc_parser)
  • EI parity baseline: 536 diffs (down from 588, -52)
  • Ruff + MyPy clean

Remaining work (follow-up PRs)

  • OverrideLogic Might (740) drop policy vs EI capacity >25 (~248 diffs)
  • Minor buffUptimes precision diffs (718, 717, 719, 1122, etc.)

…ID fix

- rotation.py: use ownership_resolver (TemporalIdentityResolver) for all pet/minion
  spawn attribution (Ranger Pet -28, Siege Turtle, Fern Hound, Smokescale,
  Warclaw, Jungle Stalker) instead of static spawn_owner_by_target map
- rotation.py: add gw2_build parameter and GW2 build 194363 cutoff for Sand
  Cascade effect GUID -> skill ID mapping (pre-194363: 62671, 194363+: 43448)
- ei_compare.py: pass fight.header.gw2_build to build_skill_rotation
- test_rotation.py: update post-July Sand Cascade test to pass gw2_build=200000

Signed-off-by: Roddygithub <roddygithub@users.noreply.github.com>
@Roddygithub
Roddygithub enabled auto-merge (squash) August 19, 2026 01:35
- buff_state.py: increase Regeneration capacity 5->15, Resolution 9->15
  (matches EI's effective queue depth; fixes 52 buffUptimes diffs)
- test_buff_state.py: update Regeneration eviction test for new capacity

Signed-off-by: Roddygithub <roddygithub@users.noreply.github.com>
@Roddygithub Roddygithub changed the title parser: time-aware pet ownership + Sand Cascade skill ID fix parser: time-aware pet ownership + queue capacity fixes + Sand Cascade fix Aug 19, 2026
- _advance_intensity: decrement total_durations with elapsed time to match
  EI's Shift() where TotalDuration = Duration + Extensions decreases as
  Duration ticks down. This fixes extension grafting matching stale
  TotalDuration values.

- remove_single OverrideLogic: add TotalDuration ±15ms fallback matching
  EI's Math.Abs(removedDuration - TotalDuration) < BuffSimulatorDelayConstant
  when stack_id match fails. Removes index-0 fallback that incorrectly
  dropped shortest stack.

Result: Might (740) diffs 248 → 21, total EI diffs 536 → 302.

Signed-off-by: Roddy <roddy@localhost>
Fix formatting issues from CI lint check.

Signed-off-by: Roddy <roddy@localhost>
@Roddygithub
Roddygithub merged commit 05067ed into main Aug 19, 2026
11 checks passed
@Roddygithub
Roddygithub deleted the fix/buff-uptimes-merge branch August 19, 2026 18:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant