# AEG-V16-019 — CommandBar

## Scope

- **WBS / Requirement / UI / Test:** AEG-V16-019 / REQ-V16-FEC-03 / UI-V16-FEC-03 / T-V16-FEC-03
- **Classification:** shared FE component vertical slice; no API, policy, data, or provider contract change.

## Source / Assumption / Unknown / Decision Required

- **Source:** WBS Master, `KsCommandBar.vue`, `KsButton.vue`, and v4 native/Prime button adapters.
- **Assumption:** callers own command idempotency keys; this component prevents a local disabled/busy click from becoming a second UI event but cannot replace server-side idempotency.
- **Unknown:** predecessor AEG-V16-018 remains pending formal UX/a11y acceptance evidence.
- **Decision Required:** no new action ordering policy is introduced. Callers supply the approved action array order.

## Acceptance mapping

| Acceptance requirement | Implementation evidence |
| --- | --- |
| action order | the component renders the supplied readonly array in order. |
| disabled/busy | execution is blocked in the command boundary for either state; busy is exposed to assistive technology. |
| reproducibility | unit test covers order, event emission, disabled, and busy paths. |

## Execution evidence — 2026-08-08

- `frontend: pnpm typecheck`: passed.
- `frontend: pnpm test -- --run src/shared/ui/components/tests/KsCommandBar.spec.ts`: 1 file / 1 test passed.
