From 0a29f2384d8fe280c0a461b8fdc098ffaa009fc6 Mon Sep 17 00:00:00 2001 From: rcourtman Date: Fri, 20 Mar 2026 00:59:11 +0000 Subject: [PATCH] Flatten investigation intelligence block --- .../internal/subsystems/unified-resources.md | 3 +++ .../Infrastructure/ResourceDetailDrawer.tsx | 26 +++++++++---------- .../ResourceDetailDrawer.history.test.tsx | 7 +++++ ...urceDetailDrawer.identity-runtime.test.tsx | 7 ++++- 4 files changed, 28 insertions(+), 15 deletions(-) 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(() => {