# Legacy adapter inventory and cleanup boundary

## Decision

Legacy adapter files are not bulk-deleted. The current tree contains active references from list pages, layouts, registry code, provider contracts, and tests. Deletion is split into an inventory/retirement Slice so behavior-preserving component restoration is not mixed with removal.

## Active or contract-required

- `KbxListPage.vue`: referenced by existing model and shadow-run list pages.
- `KsListPage.vue`: direct-owned replacement used by model and shadow-run list pages.
- `contracts.ts`, `compatibility.ts`, `useUiAdapter.ts`: provider and contract tests still use these symbols.
- `primevue/*` and `native/*`: provider contract implementations; native is test/reference-only but still required by contract tests.

## Removed after zero-reference verification

- `KbxButton.vue`, `KbxInput.vue`, `KbxDataGrid.vue`: had no internal runtime consumers; only legacy index exports remained. Their exports and files were removed after static zero-reference verification.
- `KbxListPage.vue`: replaced by `shared/ui/components/KsListPage.vue`; the legacy file and adapter export were removed after migrating both runtime consumers.

## Remaining cleanup candidates

- Duplicate `.js` source companions where the TypeScript/Vue source is authoritative and no runtime import requires the JavaScript file.
- Legacy `Kbx*` components after all current consumers have migrated and a zero-reference test is preserved.

## Required evidence before deletion

1. Static import graph shows zero runtime consumers.
2. Contract and feature tests pass without the candidate.
3. Production build no longer includes the candidate.
4. Rollback path and migration note identify the removed file set.

## Non-goals

- Do not delete adapter contracts merely because existing components now use direct vendors.
- Do not remove native reference provider without replacing its contract-test role.
- Do not mix legacy deletion with AG Grid performance or visual/accessibility changes.
