Problem
Components 4 deliberately applies table search, column filtering, and sorting only to the currently loaded page. Arc's paginator totals still describe the complete server result. A consumer can otherwise mistake a convenient loaded-page interaction for complete-result behavior and miss matches on unloaded pages.
The deprecated clientFiltering compatibility prop does not toggle this behavior; loaded-page filtering is always available. Issue #159 tracks that old silent-no-op contract and is resolved by the explicit v4 semantics. This issue owns the distinct complete-result capability.
Direction
Complete-result filtering and sorting belong in explicit Arc query arguments and server query logic, applied before paging. Components may provide typed UI state and callbacks that a consumer maps to generated query arguments, but it must not infer backend field names, operators, or authorization policy and must not silently mix loaded-page and complete-result modes.
Coordinate with #109 if consumer proof shows a reusable Arc React state seam. Do not block a server-capable consumer on a new Components table abstraction.
Acceptance criteria
- Documentation names loaded-page and complete-result behavior distinctly.
- A representative generated query accepts explicit sort/filter arguments and applies them before paging.
- Table state changes reset or validate the current page and cannot show stale totals/results during races.
- Snapshot and observable query paths have specs for argument changes, paging, empty results, and server failures.
- The UI indicates which behavior is active and does not claim complete-result search/filter/sort when only the loaded page is affected.
- Public contracts remain renderer-neutral where they represent Arc query state and Cratis-owned where they represent table UI.
Problem
Components 4 deliberately applies table search, column filtering, and sorting only to the currently loaded page. Arc's paginator totals still describe the complete server result. A consumer can otherwise mistake a convenient loaded-page interaction for complete-result behavior and miss matches on unloaded pages.
The deprecated
clientFilteringcompatibility prop does not toggle this behavior; loaded-page filtering is always available. Issue #159 tracks that old silent-no-op contract and is resolved by the explicit v4 semantics. This issue owns the distinct complete-result capability.Direction
Complete-result filtering and sorting belong in explicit Arc query arguments and server query logic, applied before paging. Components may provide typed UI state and callbacks that a consumer maps to generated query arguments, but it must not infer backend field names, operators, or authorization policy and must not silently mix loaded-page and complete-result modes.
Coordinate with #109 if consumer proof shows a reusable Arc React state seam. Do not block a server-capable consumer on a new Components table abstraction.
Acceptance criteria