"""Element side file — what every recorded action targeted. PRIVILEGED: it sits next to a trajectory for analysis/debugging and is never exported (export.py never reads it). episodes//a/elements.json every attempt (kept or failure pool), by recording index accepted//elements.json aligned with trajectory.json: `history[k]` <-> history[k], `steps[k]` <-> steps[k] (same `i` and `screenshot`) One entry per step (FORMAT miniwebgen.elements/v1): i, span, screenshot, type recording index, prefix|target, frame before the action, action type element the targeted element, or for key/type the focused one: role_in_action target | focused | scroll_at | scroll_target | drag_source selector the dom query the script used to find it ({css, text, tag}), if any css_path unique CSS path computed at action time tag, role, accessible_name (ARIA: aria-labelledby/aria-label/