Files
KArtSell.Aegis/frontend/src/shared/ui/component-manifest.json
T
kjh2064 31b36ba226 V13-FE-005: consolidate approved UI governance and contract hardening
Consolidates KBX UI Boundary Governance framework with component manifest,
screen recipe registry, AI component gate, and exception lifecycle validation.

Evidence (evidence/V13-FE-005/*.log, 55+ files):
- Full frontend regression: 70 files / 180 tests PASS
- UI boundary gate: 37 files / 0 failures / 6 raw-color warnings (DEBT tracked)
- Component manifest validation: 0 failures
- Screen recipe governance: 0 failures
- AI component gate: 17 feature files / 23 known exports / 0 failures
- Accessibility E2E: 22 passed
- Production build: PASS (>500 kB chunk warning V13-FE-038 DECISION_REQUIRED)
- TypeCheck: PASS
- KBX validators: All 5 PASS (failures=0)

Added: 19 files (6 validator scripts, 6 test specs, 4 slice notes, 3 registries)
Modified: 9 files (CI workflow, WBS tracker, E2E specs, FE setup, Layout, TS configs)

Outstanding per V13-FE-005 note: AI prop-level validation, exception lifecycle,
browser/visual/AT/performance evidence. No completion overclaim.

AGENTS.md compliance: #9 (Traceability — evidence preserved), #11 (no placeholders),
#12 (right way, WBS execution completed).

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-14 10:35:15 +09:00

31 lines
5.3 KiB
JSON

{
"schemaVersion": "1.0",
"governance": "KBX_UI_BOUNDARY_GOVERNANCE",
"components": [
{"id":"C-010","name":"KsButton","tier":"L1","owner":"kbx-ui","source":"src/shared/ui/components/KsButton.vue","vendorPolicy":"explicit-props-only","requiredContracts":["accessibility","loading-disabled","keyboard"]},
{"id":"C-011","name":"KsTextField","tier":"L0","owner":"kbx-ui","source":"src/shared/ui/components/KsTextField.vue","vendorPolicy":"native-first","requiredContracts":["ime","label-describedby","invalid","focus"]},
{"id":"C-013","name":"KsDataGrid","tier":"L4","owner":"kbx-ui","source":"src/shared/ui/components/KsDataGrid.vue","vendorPolicy":"strong-facade-no-raw-api","requiredContracts":["selection","clipboard","keyboard","accessibility","performance"]},
{"id":"C-014","name":"KsDialog","tier":"L2","owner":"kbx-ui","source":"src/shared/ui/components/KsDialog.vue","vendorPolicy":"controlled-overlay","requiredContracts":["focus-restore","escape","aria","theme-density"]},
{"id":"C-015","name":"KsStatusTag","tier":"L1","owner":"kbx-ui","source":"src/shared/ui/components/KsStatusTag.vue","vendorPolicy":"semantic-status-only","requiredContracts":["text-not-color-only","state-matrix"]},
{"id":"V14-C-001","name":"KsDateField","tier":"L2","owner":"kbx-ui","source":"src/shared/ui/components/KsDateField.vue","vendorPolicy":"controlled-input","requiredContracts":["keyboard","readonly-disabled","invalid","theme-density"]},
{"id":"C-012","name":"KsSelect","tier":"L2","owner":"kbx-ui","source":"src/shared/ui/components/KsSelect.vue","vendorPolicy":"controlled-overlay","requiredContracts":["keyboard","options","invalid","readonly-disabled"]},
{"id":"C-016","name":"KsCheckbox","tier":"L1","owner":"kbx-ui","source":"src/shared/ui/components/KsCheckbox.vue","vendorPolicy":"explicit-props-only","requiredContracts":["label","keyboard","disabled"]},
{"id":"C-017","name":"KsTextArea","tier":"L0","owner":"kbx-ui","source":"src/shared/ui/components/KsTextArea.vue","vendorPolicy":"native-first","requiredContracts":["label-describedby","invalid","maxlength"]},
{"id":"C-018","name":"KsNumberField","tier":"L2","owner":"kbx-ui","source":"src/shared/ui/components/KsNumberField.vue","vendorPolicy":"controlled-input","requiredContracts":["decimal","min-max","invalid","readonly-disabled"]},
{"id":"C-019","name":"KsMoneyField","tier":"L3","owner":"kbx-ui","source":"src/shared/ui/components/KsMoneyField.vue","vendorPolicy":"business-semantic-facade","requiredContracts":["decimal","currency","rounding","server-truth"]},
{"id":"C-020","name":"KsQuantityField","tier":"L3","owner":"kbx-ui","source":"src/shared/ui/components/KsQuantityField.vue","vendorPolicy":"business-semantic-facade","requiredContracts":["decimal","unit","range","server-truth"]},
{"id":"C-021","name":"KsMultiSelect","tier":"L2","owner":"kbx-ui","source":"src/shared/ui/components/KsMultiSelect.vue","vendorPolicy":"controlled-overlay","requiredContracts":["keyboard","selection","invalid","readonly-disabled"]},
{"id":"C-022","name":"KsPaginator","tier":"L2","owner":"kbx-ui","source":"src/shared/ui/components/KsPaginator.vue","vendorPolicy":"controlled-navigation","requiredContracts":["server-pagination","keyboard","aria"]},
{"id":"C-023","name":"KsTabs","tier":"L2","owner":"kbx-ui","source":"src/shared/ui/components/KsTabs.vue","vendorPolicy":"controlled-navigation","requiredContracts":["keyboard","aria","focus"]},
{"id":"C-024","name":"KsInlineMessage","tier":"L1","owner":"kbx-ui","source":"src/shared/ui/components/KsInlineMessage.vue","vendorPolicy":"semantic-feedback","requiredContracts":["aria-live","severity","text-not-color-only"]},
{"id":"C-025","name":"KsCommandBar","tier":"L3","owner":"kbx-ui","source":"src/shared/ui/components/KsCommandBar.vue","vendorPolicy":"business-command-facade","requiredContracts":["permission","disabled","keyboard","idempotency-boundary"]},
{"id":"C-026","name":"KsListPage","tier":"L3","owner":"kbx-ui","source":"src/shared/ui/components/KsListPage.vue","vendorPolicy":"screen-template-facade","requiredContracts":["recipe","state-matrix","permission","server-read-model"]},
{"id":"C-027","name":"FieldShell","tier":"L1","owner":"kbx-ui","source":"src/shared/ui/components/FieldShell.vue","vendorPolicy":"explicit-slots-only","requiredContracts":["label-describedby","error","focus"]},
{"id":"C-028","name":"KsDataContextHeader","tier":"L3","owner":"kbx-ui","source":"src/shared/ui/components/KsDataContextHeader.vue","vendorPolicy":"evidence-context-facade","requiredContracts":["as-of","version","stale-state"]},
{"id":"C-029","name":"KsFormGrid","tier":"L0","owner":"kbx-ui","source":"src/shared/ui/components/KsFormGrid.vue","vendorPolicy":"layout-only","requiredContracts":["responsive","density"]},
{"id":"C-030","name":"KsFormSection","tier":"L0","owner":"kbx-ui","source":"src/shared/ui/components/KsFormSection.vue","vendorPolicy":"layout-only","requiredContracts":["heading","landmark"]},
{"id":"C-031","name":"KsFormSpan","tier":"L0","owner":"kbx-ui","source":"src/shared/ui/components/KsFormSpan.vue","vendorPolicy":"layout-only","requiredContracts":["responsive"]},
{"id":"C-032","name":"KsValidationSummary","tier":"L3","owner":"kbx-ui","source":"src/shared/ui/components/KsValidationSummary.vue","vendorPolicy":"validation-feedback-facade","requiredContracts":["aria","field-links","server-errors"]}
]
}