diff --git a/docs/release-control/v6/internal/subsystems/frontend-primitives.md b/docs/release-control/v6/internal/subsystems/frontend-primitives.md
index 8215d940b..70f45815a 100644
--- a/docs/release-control/v6/internal/subsystems/frontend-primitives.md
+++ b/docs/release-control/v6/internal/subsystems/frontend-primitives.md
@@ -865,7 +865,10 @@ work extends shared components instead of creating new local variants.
shell therefore owns the shared `PageHeader` for support tools, and
`frontend-modern/src/pages/Operations.tsx` must stay a redirect-only
compatibility handoff instead of regrowing a second route-local heading,
- tab strip, or page shell for diagnostics, reporting, or logs.
+ tab strip, or page shell for diagnostics, reporting, or logs. Because the
+ dashboard route is retired, that audit must also discover live top-level
+ pages from `src/pages/` and may not keep a hard required-header entry for
+ `frontend-modern/src/pages/Dashboard.tsx`.
23. Keep the authenticated app root aligned with that same first-session path.
That same shared-primitive ownership now includes contextual row focus.
`frontend-modern/src/components/shared/contextualFocus.ts` is the canonical
diff --git a/frontend-modern/scripts/header-audit.mjs b/frontend-modern/scripts/header-audit.mjs
index 8b150d3cd..9ffbf8fef 100644
--- a/frontend-modern/scripts/header-audit.mjs
+++ b/frontend-modern/scripts/header-audit.mjs
@@ -7,7 +7,6 @@ const ROOT = process.cwd();
const REQUIRED_PAGE_HEADERS = new Map([
['src/pages/AIIntelligence.tsx', 'PageHeader'],
['src/pages/Ceph.tsx', 'PageHeader'],
- ['src/pages/Dashboard.tsx', 'PageHeader'],
['src/pages/Infrastructure.tsx', 'PageHeader'],
['src/pages/NotFound.tsx', 'PageHeader'],
['src/pages/PricingHandoff.tsx', 'PageHeader'],
diff --git a/frontend-modern/src/__tests__/App.architecture.test.ts b/frontend-modern/src/__tests__/App.architecture.test.ts
index 7da3680e7..893d9f49a 100644
--- a/frontend-modern/src/__tests__/App.architecture.test.ts
+++ b/frontend-modern/src/__tests__/App.architecture.test.ts
@@ -8,6 +8,7 @@ import routePreloadSource from '@/routing/routePreload.ts?raw';
import appRuntimeStateSource from '@/useAppRuntimeState.ts?raw';
const appStylesSource = readFileSync(join(process.cwd(), 'src/index.css'), 'utf8');
+const headerAuditSource = readFileSync(join(process.cwd(), 'scripts/header-audit.mjs'), 'utf8');
describe('App architecture', () => {
it('keeps App as the entry shell that delegates runtime and chrome ownership', () => {
@@ -46,6 +47,7 @@ describe('App architecture', () => {
'',
);
expect(appSource).not.toContain('DashboardPage');
+ expect(headerAuditSource).not.toContain("['src/pages/Dashboard.tsx', 'PageHeader']");
expect(appSource).toContain("import RuntimeHomePage from '@/pages/RuntimeHome';");
expect(appSource).toContain('');
expect(appSource).toContain('');