de3a6e4660
Elements detected as interactive via heuristic methods (cursor:pointer style, interactive class names, event listeners) had empty attributes because `isInteractiveCandidate()` was used as the gate for attribute extraction. This function only recognizes standard HTML tags and ARIA attributes, missing heuristic detections. After interactivity is confirmed by `isInteractiveElement()`, backfill attributes for elements that were missed. This ensures `includeAttributes` (e.g. `['class']`) works correctly for all interactive elements, not just semantically standard ones. Closes #124 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>