Resolves the 11 conflicting files blocking PR #41. Where both branches fixed
the same problem, the fixes are combined rather than one side dropped:
- a5.py: main's dual WP templates + require_visible pre-scan, bounded by
baalxp's town_world ROI (excludes the HUD band and party column)
- pindle.py: main's removal of the town-false-positive "already in temple"
shortcut (also dropped baalxp's post-nudge copy of it); kept baalxp's nudge,
click tuning and PORTAL_APPROACH node; main's detect-act retry
- town_manager.py: main's act-margin check in wait_for_town_spawn, then
baalxp's marker->location resolution; baalxp's in_act repair skip before
main's repair_npc destination table
- bot.py: baalxp's restructured leech cycle, with main's death recovery and
InGame miss tolerance ported into _baal_xp_hide_and_wait
- game_browser.py, skill_preflight.py, [hammerdin] binds: baalxp (lobby join
flow; binds verified against the live client 2026-09-04)
- params.ini: baalxp's "leech stays out of order=" rule with order=run_trav
- CLAUDE.md: both bug writeups kept; baalxp's 23-25 renumbered to 32-34 since
tests/docs reference main's numbering
- test_stealth_config.py: AFK-break invariant exempts the whole baal_xp block
instead of a 6-line window (the branch grew several handoffs)
Tests: 272 passed. Remaining failures are pre-existing on origin/main
(gems-tab transmute test, smoke_test/test_version_consistency collection).
Co-Authored-By: Claude Opus 5 <[email protected]>