Why this is tricky

A table whose rows change at runtime — add, delete, search, and edit. Every row carries a stable data-row-id you can rely on even as rows are added or removed, so don't locate by position (row 3 today may not be row 3 after a delete). Searching hides non-matching rows rather than removing them — a row can be present in the DOM but not visible, which matters for tools that distinguish the two. The row counter always reflects the total row count, not just what's currently visible.

Rows: 5
IDNameDepartmentSalaryStatusActions
Initial state.