From 15d30e4754ad954e37bfcb6757f91f3d33dbdc07 Mon Sep 17 00:00:00 2001 From: rcourtman Date: Tue, 24 Mar 2026 15:39:10 +0000 Subject: [PATCH] Govern dashboard presentation helpers --- .../subsystems/frontend-primitives.md | 12 ++++++++++ .../v6/internal/subsystems/registry.json | 24 +++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/docs/release-control/v6/internal/subsystems/frontend-primitives.md b/docs/release-control/v6/internal/subsystems/frontend-primitives.md index 5c0618313..7e0d54dc6 100644 --- a/docs/release-control/v6/internal/subsystems/frontend-primitives.md +++ b/docs/release-control/v6/internal/subsystems/frontend-primitives.md @@ -92,6 +92,10 @@ work extends shared components instead of creating new local variants. 63. `frontend-modern/src/utils/reportableResourceTypes.ts` 64. `frontend-modern/src/utils/reportingResourceTypes.ts` 65. `frontend-modern/src/utils/problemResourcePresentation.ts` +66. `frontend-modern/src/utils/dashboardEmptyStatePresentation.ts` +67. `frontend-modern/src/utils/dashboardGuestPresentation.ts` +68. `frontend-modern/src/utils/dashboardKpiPresentation.ts` +69. `frontend-modern/src/utils/dashboardTrendPresentation.ts` 61. `frontend-modern/src/pages/__tests__/Operations.helpers.test.ts` 59. `frontend-modern/src/components/Settings/NetworkDiscoverySection.tsx` 60. `frontend-modern/src/components/Settings/NetworkBoundarySettingsSection.tsx` @@ -250,6 +254,14 @@ must treat missing infrastructure history as a governed empty state rather than as a silent blank sparkline box. Error copy and empty-history copy belong to the feature shell, while the data path and chart-shaping logic must stay in the owned hook/model layers that feed it. +That same dashboard boundary now also owns the shared dashboard presentation +helpers through `frontend-modern/src/utils/dashboardEmptyStatePresentation.ts`, +`frontend-modern/src/utils/dashboardGuestPresentation.ts`, +`frontend-modern/src/utils/dashboardKpiPresentation.ts`, and +`frontend-modern/src/utils/dashboardTrendPresentation.ts`. Dashboard loading, +disconnect, and empty states; guest backup/disk fallback copy; KPI card +framing; and trend palette/error copy must extend those helpers instead of +being redefined inline in route shells, guest rows, or overview cards. That shell must also stay passive with respect to data ownership: dashboard trend cards may render the summary-range controls and operator-facing empty or error copy, but they must not reintroduce route-local metrics-history fetch diff --git a/docs/release-control/v6/internal/subsystems/registry.json b/docs/release-control/v6/internal/subsystems/registry.json index 009e97f6b..04868cb55 100644 --- a/docs/release-control/v6/internal/subsystems/registry.json +++ b/docs/release-control/v6/internal/subsystems/registry.json @@ -2351,6 +2351,10 @@ "frontend-modern/src/features/operations/OperationsPageSurface.tsx", "frontend-modern/src/pages/Operations.tsx", "frontend-modern/src/utils/aiSettingsPresentation.ts", + "frontend-modern/src/utils/dashboardEmptyStatePresentation.ts", + "frontend-modern/src/utils/dashboardGuestPresentation.ts", + "frontend-modern/src/utils/dashboardKpiPresentation.ts", + "frontend-modern/src/utils/dashboardTrendPresentation.ts", "frontend-modern/src/utils/diagnosticsPresentation.ts", "frontend-modern/src/utils/discoveryPresentation.ts", "frontend-modern/src/utils/problemResourcePresentation.ts", @@ -2495,6 +2499,26 @@ "frontend-modern/src/utils/__tests__/reportingResourceTypes.test.ts" ] }, + { + "id": "dashboard-presentation-helpers", + "label": "dashboard presentation helper proof", + "match_prefixes": [], + "match_files": [ + "frontend-modern/src/utils/dashboardEmptyStatePresentation.ts", + "frontend-modern/src/utils/dashboardGuestPresentation.ts", + "frontend-modern/src/utils/dashboardKpiPresentation.ts", + "frontend-modern/src/utils/dashboardTrendPresentation.ts" + ], + "allow_same_subsystem_tests": false, + "test_prefixes": [], + "exact_files": [ + "frontend-modern/src/components/Settings/__tests__/monitoredSystemModelGuardrails.test.ts", + "frontend-modern/src/utils/__tests__/dashboardEmptyStatePresentation.test.ts", + "frontend-modern/src/utils/__tests__/dashboardGuestPresentation.test.ts", + "frontend-modern/src/utils/__tests__/dashboardKpiPresentation.test.ts", + "frontend-modern/src/utils/__tests__/dashboardTrendPresentation.test.ts" + ] + }, { "id": "ai-settings-presentation-helper", "label": "AI settings presentation helper proof",