582e82899b
Review 02 P1 / Wave 2 rule (d): AbLegacy runs PollGroupEngine but raised only the per-tag OnDataChange, so every changed tag paid its own trip through the actor chain. The engine's per-cycle batch is now raised as OnDataChangeBatch (one per poll cycle), alongside the per-tag event for legacy consumers. Refs #738 Claude-Session: https://claude.ai/code/session_01Ub9hGmYLQvn9XETzw7CMsT