Skip to content

docs(dashboard): UI kit migration — docs, ratchets and final report (KEA-7886, Task 42) - #17918

Merged
diegosouzapw merged 6 commits into
feat/new-uikitfrom
feat/new-uikit-task42
Oct 22, 2026
Merged

diegosouzapw merged 6 commits into
feat/new-uikitfrom
feat/new-uikit-task42

Conversation

@diegosouzapw

Copy link
Copy Markdown
Collaborator

⚠️ base-red inherited: #17219

Task 42 of the Keak CI UI Kit migration (KEA-7886): final documentation, ratchets and changelog fragments, on top of feat/new-uikit @ af385849 (F4-A #17896 back-merged). No production code changes.

Docs (verified behaviour only — every path, name and flag was grepped)

File Change
docs/architecture/DESIGN_SYSTEM.md On top of F4-A's text: where the vendored kit lives and how it is consumed (subpath imports, never the barrel; tsconfig/vitest aliases), the token bridge incl. the text-primary ink and chart tokens, theme preference (system by default, appConfig.ts), the adapter list and prop mapping, the shell (DashboardShell, skip link first, Header title hidden while a PageHeader is mounted, CommandPalette on Dialog), icon guards, the dashboard-kit-sweep rules, and new sections Adding a screen and Adding or changing an adapter
docs/architecture/ARCHITECTURE.md "Dashboard Surface": one paragraph on the UI layer (shell, adapters, kit subpaths, icons, theme)
docs/architecture/CODEBASE_DOCUMENTATION.md Dashboard UI row; the three npm workspaces (it said open-sse was the only one); @omniroute/ui-kit path aliases; packages/ in the layout tree; components/ adapter layer
docs/architecture/REPOSITORY_MAP.md packages/ in the tree + a packages/ section (ui-kit with UPSTREAM.md/PATCHES.md, browser-pool); src/shared/components and iconMap.ts rows; the 4 kit tooling scripts
docs/reference/FEATURE_FLAGS.md After F4-A the headings say 111 flags / Runtime 53, but the table had 112 rows: COMBO_EMPTY_POOL_NO_ELIGIBLE_TARGETS_ENABLED was listed twice (identical rows added by #16255 and #16256, already on release/v3.8.53). Duplicate removed

Not touched on purpose:

  • AGENTS.md — the plan's Task 42 brief proposed one line (UI kit — packages/ui-kit (vendored Keak CI UI Kit; adapters in src/shared/components/) → docs/architecture/DESIGN_SYSTEM.md). AGENTS.md is an agent-instruction surface, so it needs the owner's explicit approval; recorded as a pending owner decision. Owner: approve/decline adding that line in the final PR.
  • README — its tech-stack row ("Next.js 16 + React 19 + Tailwind CSS 4") is still true; editing it would add drift to 66 mirrors.
  • i18n mirrors — the 66 mirrors of the five docs above are left for the i18n wave. ARCHITECTURE / CODEBASE_DOCUMENTATION / REPOSITORY_MAP are new drift sources from this PR (DESIGN_SYSTEM and FEATURE_FLAGS were already drifted on the base); the PR-scoped "i18n docs drift" step will report them.

npm run check:docs-all rc 0.

Changelog fragments

  • changelog.d/features/0000-dashboard-keak-ci-ui-kit.md — feat(dashboard): the dashboard on the vendored kit
  • changelog.d/maintenance/0000-dashboard-legacy-ui-removal.md — refactor(dashboard): legacy shell + UI_KIT_SHELL, Material Symbols font/package, dead Footer, unused token aliases removed

Prefix 0000 because the final PR number is not known yet (rename at the final PR if wanted). check:changelog-integrity OK. No AI credit anywhere.

Ratchets (measured on this branch after the F4-A back-merge)

Policy: the velocity phase (quality-baseline.json → _policy, 20 % headroom until v4.0) is kept. No blind --update; where a metric genuinely improved the baseline goes to min(current, ceil(live × 1.2)).

Ratchet File Before Live After Note
check:dashboard-typecheck config/quality/dashboard-typecheck-baseline.json sum 322 194 sum 270 16 pairs: 14 pairs now at 0 removed (cache/discovery tests, RedisLauncherPanel 14, MemoriesTab, CompatibleModelsSection, RuntimePageClient, QuotaEnvGroup, sseMerger); combos/page.tsx TS2322 16→15, OAuthModal.tsx TS2769 4→3. Every other pair already sits at ceil(live×1.2). The gate still prints "N baselined errors no longer present" — that is the kept headroom, by design
rtlPhysicalClasses (check:rtl-ratchet) config/quality/quality-baseline.json 1214 702 843 ceil(702×1.2); note _tighten_2026_10_22_kea7886
axe /login tests/e2e/a11y.spec.ts 1 0 0 REQUIRE_AXE=1, 5/5 passed (dev server, after the F4-A merge)
axe /dashboard same 4 1 1 color-contrast on the partner banners (brand colours, owner decision)
axe /dashboard/providers same 3 0 0 F4-B fixed the /N contrast
axe /dashboard/settings same 5 0 0 lote 5a converted SystemStorageTab
check:cycles:ratchet quality-baseline.json 14 14 14 unchanged
deadExports (check:dead-code) quality-baseline.json 377 362 377 unchanged: ceil(362×1.2) = 435 > 377
duplication (check:duplication) duplication-baseline.json 6.86 % 3.27 % 6.86 % not changed — the same rule would allow 3.93 %, but the drop was not attributed (base not re-measured) and this PR's ratchet scope was rtl + dashboard-typecheck + axe; flagged for a follow-up
eslintWarnings, coverage, bundleSize, openapiCoverage, i18nUiCoverage quality-baseline.json — — unchanged not measurable locally (CI-collected) or not affected; npm run lint rc 0

Validation (local devbox, this branch)

Gate Result
npm run check:docs-all rc 0
npm run check:dashboard-typecheck rc 0 (194 live, new baseline 270)
npm run check:rtl-ratchet -- --ratchet OK (702 ≤ 843)
npm run check:cycles:ratchet OK (14 ≤ 14)
npm run check:known-symbols OK
npm run check:changelog-integrity OK
npm run lint -- --concurrency=6 (local gate lock) rc 0
npx playwright test tests/e2e/a11y.spec.ts (REQUIRE_AXE=1, dev server) 5/5 passed — 0 / 1 / 0 / 0
node: feature-flags doc-sync + settings 68/68
node: baseline/ratchet tests (check-rtl-ratchet, quality-ratchet, coverage-floor) 92/92
node: material-symbols-removed, dashboard-kit-sweep, icon-map-coverage, icon-map-object-values, design-kit-bridge, ratchet tests 61/61
check-key-completeness --warn advisory: 111 keys missing in 64 locales (i18n wave)

No build: no production code changed (docs, baselines, one e2e baseline block, changelog fragments).

Reports (private _tasks, published by the controller)

  • _tasks/reports/uikit/final-report.md — scope, PR list with merge commits, checkpoint gates, before/after counts, ratchets, deviations, deploy note, lessons, KEA-7886 status text
  • _tasks/reports/uikit/pendencias.md — final deduplicated pendências: kit gaps (upstream), screen follow-ups by owner, test/infra, i18n wave, owner decisions, resolved items

License (for the final PR): packages/ui-kit/UPSTREAM.md → license-authorization: Diego Souza (Keak, dono do repositório), 2026-10-19, … — unchanged here.

…s (KEA-7886)

ARCHITECTURE.md (Dashboard Surface) describes the one shell every page
renders in and where screens get components, icons and theme from;
CODEBASE_DOCUMENTATION.md gains the Dashboard UI row, the three npm
workspaces, the @omniroute/ui-kit path aliases and the components/
adapter layer; REPOSITORY_MAP.md lists packages/ (ui-kit, browser-pool),
src/shared/components + iconMap and the kit tooling scripts.
…egacy UI removal (KEA-7886)

features/: the dashboard on the vendored kit (identity, theme default
system, retired accent presets, kit shell, adapters, Lucide icons).
maintenance/: legacy shell + UI_KIT_SHELL, Material Symbols font and
package, dead shared Footer and unused token aliases removed.
Prefix 0000: the final PR number is not known yet.
… and how to add a screen (KEA-7886)

DESIGN_SYSTEM.md, on top of F4-A's text: where the vendored kit lives and
how it is consumed (subpath imports, never the barrel), the token bridge
incl. the text-primary ink, the theme preference (system by default),
the adapter list and prop mapping, the shell (DashboardShell, skip link,
Header title vs PageHeader, CommandPalette on Dialog), the icon guards,
the dashboard-kit-sweep rules, and new sections on adding a screen and
adding or changing an adapter.

FEATURE_FLAGS.md: drop the duplicated COMBO_EMPTY_POOL_NO_ELIGIBLE_TARGETS_ENABLED
row (added by both #16255 and #16256), so the catalog has the 111 rows
and Runtime the 53 its headings state.
…wn after the UI kit migration (KEA-7886)

Both keep the velocity-phase 20% headroom (quality-baseline.json _policy)
instead of freezing at the live count:
- dashboard-typecheck-baseline.json: (file, code) pairs now at 0 removed,
  the rest set to min(baseline, ceil(live * 1.2)); live 194, sum of
  counts 322 -> 270 (16 pairs changed).
- rtlPhysicalClasses: 1214 -> 843 = ceil(live 702 * 1.2).
cycles (14/14), deadExports (362 <= 377) and the rest are unchanged.
…7886)

Measured with REQUIRE_AXE=1 on this branch (feat/new-uikit af38584 +
docs): /login 1 -> 0, /dashboard 4 -> 1, /dashboard/providers 3 -> 0,
/dashboard/settings 5 -> 0. 5/5 passed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant