# V13-FE-023 — Server-side grid contract slice note

- **Requirement:** REQ-FE-GRID
- **API/UI/Test:** UI-GRID-01 / T-FE-GRID-01
- **Source:** v60 server-side grid boundary; current `DataGridShell`, `KsDataGrid`, `KsPaginator`, and `CrudPageResult` contracts.
- **Assumption:** Page metadata is authoritative input from the query/read model; the UI emits a request intent and does not fetch or mutate server state.
- **Unknown:** Sort/filter event wiring and column-state persistence are not connected to an active production screen through this component.
- **Decision Required:** FE/BE must approve a per-resource query contract before adding server sort/filter event mapping.

## Applied boundary

- Added optional `page`, `pageSize`, and `total` metadata to `DataGridShell`.
- Rendered the shared paginator only when all page metadata is explicitly supplied.
- Forwarded page changes as an event; the component does not own fetching, caching, or server state.
- Preserved existing client-row callers without pagination metadata.

## Evidence

```text
pnpm test -- src/shared/ui/tests/DataGridShell.spec.ts
PASS: 1 file / 2 tests (2026-08-12)

pnpm typecheck
PASS (2026-08-12)
```

No server API, sort/filter event, column-state persistence, visual, AT, or browser E2E evidence is claimed.
