# KBX v25 Standard Traceability

| KBX source requirement | v25 implementation |
|---|---|
| Grid First: 조회/선택/편집/대량입력/복사/붙여넣기/검증/Drill-down | `KbxDataGrid`, `KbxGridEditingPolicy`, drill-down/context events |
| T04 Fast Grid Entry | `KbxFastEntryPage` keyboard guide + OMS-ORD-002 editing policy |
| Enter 연속입력 / F2 Lookup / multi-cell paste / Fill Down | existing Enter/F2 + paste normalization + Fill Down |
| 대량 Paste 오류를 Modal로 반복하지 않음 | `KbxGridPasteResult` + inline error count + first/next error navigation |
| Header checkbox/대량 선택 의미 명확화 | `KbxSelectionState` + `KbxBulkSelectionRequest` |
| 현재 검색조건 전체선택은 Server-side Bulk | all-filtered + excludedIds + PostgreSQL target CTE |
| Read Model은 Backend에서 업무용 Projection 제공 | `oms_order_search_projection`을 Search/Bulk 공통 target source로 사용 |
| Client-side business truth 금지 | selection UX와 Domain 상태전이 분리; server state predicate 유지 |
| Idempotency | `oms.orders.ship` receipt replay 유지 |
| Audit by default | accepted CTE 기반 `audit.entries` set-based insert |
| Outbox | accepted CTE 기반 `integration.outbox` set-based insert |
| 오류 위치는 rowKey + field | `KbxValidationError`, Grid error navigator |
| Context menu 전용 핵심 기능 금지 | Add/Duplicate/Fill Down/Error Navigation은 Toolbar 제공 |
| 화면 변경 재현성 | OMS-ORD-001 `1.1.0`, OMS-ORD-002 `1.2.0` version bump |
| Component versioning | KbxDataGrid `1.3.0`, KbxFastEntryPage `1.2.0` |
| Playwright/Vitest 업무동작 검증 | v25 unit/e2e + canonical scenario contracts |

## Boundary decision

v25는 자체 Spreadsheet/Grid Engine을 만들지 않는다. AG Grid의 검증된 편집 기능을 사용하되, 업무 화면이 의존하는 API는 `KbxDataGrid`와 KBX contract로 제한한다.

또한 전체선택을 Browser ID materialization으로 구현하지 않고, 검색조건을 서버 Command로 넘기는 방식으로 성능과 정합성을 동시에 보장한다.
