| TITAN-BULK-01 | Selecting the first row is what puts the page into selection mode. There is no separate “enter selection mode” control. | A mode the reader has to switch into deliberately is one extra step for the common case, which is checking a box because you want to act on that row. |
| TITAN-BULK-02 | A bulk action states its count and scope before it runs. | Follows the same rule Table’s own row-count actions already state, rather than restating it. |
| TITAN-BULK-03 | The header checkbox selects the current page only. Selecting every row matching a filter is a separate, explicitly-labeled action. | ”Select all” over a filtered table is ambiguous between the page, the filter, and everything. |
| TITAN-BULK-04 | The select-all checkbox shows checked only when every row on the page is selected. A partial selection is signaled by the bar’s count, never by the checkbox. | No indeterminate state exists to show “some” — see Known issues. Showing “checked” for a partial selection would misrepresent it. |
| TITAN-BULK-05 | Selected-row feedback does not rely on fill color alone. | background-hover and background-selected resolve to the same value today (see Known issues), so color cannot be the only carrier of selection state. The checkbox’s own checked state and the bar’s count are what actually carry it. |
| TITAN-BULK-06 | Selection clears when the filter, sort, or search that produced the current result set changes. | The selection was scoped to a specific set of visible rows. Carrying it forward silently applies it to a different set the reader never looked at. |
| TITAN-BULK-07 | A destructive bulk action is confirmed once, for the batch, via Destructive confirmation’s bulk-destructive variation — never once per row. | Per-item confirmation on a routine batch action is exactly the friction that trains users to click through dialogs. |
| TITAN-BULK-08 | On partial failure, rows that failed stay selected; rows that succeeded do not. The result states both counts. | The reader’s next likely action is retrying only the failures. Clearing the whole selection makes them reselect by hand; leaving succeeded rows selected invites re-running an action that already worked. |
| TITAN-BULK-09 | Every selection checkbox — row and header — carries an accessible name identifying its scope. | A column of controls all announcing “checkbox” is unusable, and a group needs a name distinct from any one option’s — the same rule Checkbox’s own page already states. |