# Architecture guardrails

## Must

- Business modules import `@kbx/ui`, not PrimeVue/AG Grid directly.
- Search/list screens use server-side read models.
- Bulk selection distinguishes explicit IDs from all-filtered selection.
- Domain mutation is server validated; UI state is not authoritative.
- Errors are normalized into KBX validation/business/conflict contracts.
- Golden Screen keyboard path is covered by Playwright.

## Must not

- Build 80-line `gridOptions` in each screen.
- Client-join orders/customers/items to produce a business grid.
- Trust AI or Zod as final business validation.
- Use physical delete for normal transaction cancellation.
- Add new UX patterns when an existing KBX component/template already covers the use case.
