diff --git a/docs/release-control/v6/internal/subsystems/alerts.md b/docs/release-control/v6/internal/subsystems/alerts.md index 33fe2d96ce..232a77fc2b 100644 --- a/docs/release-control/v6/internal/subsystems/alerts.md +++ b/docs/release-control/v6/internal/subsystems/alerts.md @@ -1401,6 +1401,15 @@ coverage, duplicate and delayed reports, wall-clock changes, suppression reset, migration/restart continuity, backup hard-cap behavior, preview immutability, and first-match lifecycle identity. +The thresholds resource rows expose that same policy owner directly through a +per-resource alert-delay action. The action carries the canonical resource id +and the first supported CPU, memory, or disk signal into the versioned +intent-policy editor, expands it, and leaves persistence and inheritance with +`/api/alerts/intent-policies`. Resources without a supported metric open on +`state.offline`. Threshold rows must not create a parallel delay field in the +legacy threshold override document or save intent changes through the +threshold-config endpoint. + ### Provider-observed storage and workload incident lifecycle Provider observations use one stable alert identity composed from provider, diff --git a/docs/release-control/v6/internal/subsystems/frontend-primitives.md b/docs/release-control/v6/internal/subsystems/frontend-primitives.md index 6c26b144ca..693a5dc3ce 100644 --- a/docs/release-control/v6/internal/subsystems/frontend-primitives.md +++ b/docs/release-control/v6/internal/subsystems/frontend-primitives.md @@ -4758,6 +4758,14 @@ rendering remains in `frontend-modern/src/components/Alerts/AlertResourceTableRow.tsx`, and shared metric normalization remains in `frontend-modern/src/components/Alerts/alertResourceTableModel.ts`. +Desktop rows and mobile resource cards also share one alert-delay handoff: +their timer action emits the canonical resource id plus the first supported +CPU, memory, or disk signal, while `ThresholdsTab.tsx` owns selection state and +`AlertIntentPolicyPanel.tsx` owns expansion, scrolling, field inheritance, and +API persistence. The action remains available for non-threshold-editable rows +and falls back to `state.offline` when no supported metric exists. New +platform threshold sections must forward this shared handoff rather than add a +platform-local delay editor or a second intent-policy transport. `frontend-modern/src/features/alerts/useAlertDestinationsTabState.ts` now owns destination test actions, retry orchestration, and delivery-health loading while `frontend-modern/src/features/alerts/tabs/DestinationsTab.tsx` stays the diff --git a/frontend-modern/src/components/Alerts/AlertResourceTableDesktop.tsx b/frontend-modern/src/components/Alerts/AlertResourceTableDesktop.tsx index 3c6e0ba596..dd846d9f7c 100644 --- a/frontend-modern/src/components/Alerts/AlertResourceTableDesktop.tsx +++ b/frontend-modern/src/components/Alerts/AlertResourceTableDesktop.tsx @@ -519,6 +519,7 @@ export function AlertResourceTableDesktop(props: AlertResourceTableDesktopProps) onSetOfflineState={props.table.onSetOfflineState} onToggleBackup={props.table.onToggleBackup} onToggleSnapshot={props.table.onToggleSnapshot} + onConfigureResourceIntent={props.table.onConfigureResourceIntent} globalDisableFlag={props.table.globalDisableFlag} globalDisableOfflineFlag={props.table.globalDisableOfflineFlag} editingNote={props.table.editingNote} @@ -560,6 +561,7 @@ export function AlertResourceTableDesktop(props: AlertResourceTableDesktopProps) onSetOfflineState={props.table.onSetOfflineState} onToggleBackup={props.table.onToggleBackup} onToggleSnapshot={props.table.onToggleSnapshot} + onConfigureResourceIntent={props.table.onConfigureResourceIntent} globalDisableFlag={props.table.globalDisableFlag} globalDisableOfflineFlag={props.table.globalDisableOfflineFlag} editingNote={props.table.editingNote} diff --git a/frontend-modern/src/components/Alerts/AlertResourceTableMobile.tsx b/frontend-modern/src/components/Alerts/AlertResourceTableMobile.tsx index 472555c73b..f3915398cc 100644 --- a/frontend-modern/src/components/Alerts/AlertResourceTableMobile.tsx +++ b/frontend-modern/src/components/Alerts/AlertResourceTableMobile.tsx @@ -2,6 +2,7 @@ import { For, Show } from 'solid-js'; import Check from 'lucide-solid/icons/check'; import Pencil from 'lucide-solid/icons/pencil'; import RotateCcw from 'lucide-solid/icons/rotate-ccw'; +import Timer from 'lucide-solid/icons/timer'; import X from 'lucide-solid/icons/x'; import { ActionIconButton } from '@/components/shared/Button'; @@ -296,6 +297,28 @@ export function AlertResourceTableMobile(props: AlertResourceTableMobileProps) {