diff --git a/docs/release-control/v6/internal/subsystems/unified-resources.md b/docs/release-control/v6/internal/subsystems/unified-resources.md index 270701266..1f08ad53e 100644 --- a/docs/release-control/v6/internal/subsystems/unified-resources.md +++ b/docs/release-control/v6/internal/subsystems/unified-resources.md @@ -248,6 +248,9 @@ That same overview now keeps AI intelligence and data-governance details inside a collapsed `Investigation context` disclosure, so runtime status and identity stay primary while secondary AI and policy signals remain available without competing with the first-screen monitoring story. +Inside that disclosure, the AI intelligence summary now reads as compact +label/value rows instead of metric tiles, so the opened investigation surface +stays scan-first before the change summary and correlation reveal appear. Inside that disclosure, learned dependency and correlation detail now sits behind its own reveal instead of rendering at full depth immediately, so the opened investigation surface stays label-first and leaves relationship pattern diff --git a/frontend-modern/src/components/Infrastructure/ResourceDetailDrawer.tsx b/frontend-modern/src/components/Infrastructure/ResourceDetailDrawer.tsx index b277b64bd..df992ed84 100644 --- a/frontend-modern/src/components/Infrastructure/ResourceDetailDrawer.tsx +++ b/frontend-modern/src/components/Infrastructure/ResourceDetailDrawer.tsx @@ -1844,24 +1844,22 @@ const DrawerContent: Component = (props) => {
AI Intelligence
-
-
-
Health
-
+
+
+ Health + {intel().health.grade} · {Math.round(intel().health.score)}/100 -
+
-
-
Trend
-
+
+ Trend + {intel().health.trend} -
+
-
-
Notes
-
- {intel().note_count} -
+
+ Notes + {intel().note_count}
diff --git a/frontend-modern/src/components/Infrastructure/__tests__/ResourceDetailDrawer.history.test.tsx b/frontend-modern/src/components/Infrastructure/__tests__/ResourceDetailDrawer.history.test.tsx index 85d676d6f..918927c12 100644 --- a/frontend-modern/src/components/Infrastructure/__tests__/ResourceDetailDrawer.history.test.tsx +++ b/frontend-modern/src/components/Infrastructure/__tests__/ResourceDetailDrawer.history.test.tsx @@ -241,9 +241,16 @@ describe('ResourceDetailDrawer change history section', () => { expect(screen.queryByText('VM Child')).toBeNull(); expect(screen.queryByText('Capabilities 1')).toBeNull(); expect(screen.queryByText('Relationships 1')).toBeNull(); + expect(screen.queryByText('AI Intelligence')).toBeNull(); fireEvent.click(screen.getByRole('button', { name: 'Show context' })); await screen.findByText('AI Intelligence'); + expect(screen.getByText('Health')).toBeInTheDocument(); + expect(screen.getByText('A · 92/100')).toBeInTheDocument(); + expect(screen.getByText('Trend')).toBeInTheDocument(); + expect(screen.getByText('stable')).toBeInTheDocument(); + expect(screen.getByText('Notes')).toBeInTheDocument(); + expect(screen.getByText('3')).toBeInTheDocument(); fireEvent.click(screen.getByRole('button', { name: 'Show correlations' })); expect( screen diff --git a/frontend-modern/src/components/Infrastructure/__tests__/ResourceDetailDrawer.identity-runtime.test.tsx b/frontend-modern/src/components/Infrastructure/__tests__/ResourceDetailDrawer.identity-runtime.test.tsx index c6f1a7507..c963da2fa 100644 --- a/frontend-modern/src/components/Infrastructure/__tests__/ResourceDetailDrawer.identity-runtime.test.tsx +++ b/frontend-modern/src/components/Infrastructure/__tests__/ResourceDetailDrawer.identity-runtime.test.tsx @@ -464,7 +464,12 @@ describe('ResourceDetailDrawer runtime and identity cards', () => { await waitFor(() => { expect(getByText('AI Intelligence')).toBeInTheDocument(); }); - expect(getByText('AI health A · 92/100 · 1 correlation')).toBeInTheDocument(); + expect(getByText('Health')).toBeInTheDocument(); + expect(getByText('A · 92/100')).toBeInTheDocument(); + expect(getByText('Trend')).toBeInTheDocument(); + expect(getByText('stable')).toBeInTheDocument(); + expect(getByText('Notes')).toBeInTheDocument(); + expect(getByText('3')).toBeInTheDocument(); expect(queryByText('Storage 1')).toBeNull(); fireEvent.click(getByRole('button', { name: 'Show correlations' })); await waitFor(() => {