diff --git a/docs/ross-030-verification.md b/docs/ross-030-verification.md
new file mode 100644
index 000000000..03b576fa5
--- /dev/null
+++ b/docs/ross-030-verification.md
@@ -0,0 +1,58 @@
+# ROSS-030 authenticated application rebrand verification
+
+Date: 2026-07-16
+
+Branch: `agent/ross-030-authenticated-app-rebrand`
+
+## Scope
+
+ROSS-030 replaces user-facing Mike identity in the inherited authenticated
+Next.js application with the approved ROSS identity. It does not change routes,
+API endpoints, database tables, authentication, authorization, document
+storage, legal-source providers, model providers, workflows, or application
+data.
+
+## Included
+
+- ROSS metadata, favicon, application logo, status icon, social card, sidebar,
+ sign-up links, support copy, account copy, export filenames, MFA device names,
+ prompts, and error-page title.
+- Central product configuration integration for the application name, URLs,
+ beta statement, terms, and privacy links.
+- An explicit CourtListener description as an optional inherited U.S. provider;
+ no Ontario source integration is claimed to be live.
+- Upstream Mike workflow attribution and links remain visible where the app
+ still integrates with `Open-Legal-Products/mike-workflows`.
+
+## Deliberately preserved compatibility identifiers
+
+The following inherited internal identifiers remain unchanged because renaming
+them could invalidate existing browser state, drag-and-drop contracts, events,
+or imports:
+
+- `mike.selectedModel`
+- `mike:mfa-verified-at`
+- `mike:close-row-actions`
+- `application/mike-doc`
+- `application/mike-folder`
+- `mikeApi.ts` and its existing imports
+- `mike-icon.tsx` as a compatibility re-export of the new `RossIcon`
+
+These identifiers are not presented as product branding.
+
+## Verification result
+
+| Check | Result | Notes |
+|---|---|---|
+| ROSS branding contracts | Pass | 5 ROSS-030 contracts pass within the 23-test baseline suite |
+| Authenticated frontend production build | Pass | Next.js production build completed; all inherited application routes remain present |
+| Preserved repository baseline | Pass | 23/23 baseline tests pass; inherited lint ceiling remains 25 errors and 42 warnings |
+| Full repository gate | Pass | Backend, authenticated frontend, public website, lint, and website route tests pass via `npm run check` |
+| GitHub Actions | Pending | Runs after browser upload and pull-request creation |
+
+## Boundaries
+
+- This package does not enable Ontario legal-source integrations.
+- Placeholder `.invalid` URLs remain production blockers.
+- No hosted authenticated application, authentication configuration, or real
+ user data is created by this package.
diff --git a/frontend/bun.lock b/frontend/bun.lock
index 9d95d1e4f..10d778a73 100644
--- a/frontend/bun.lock
+++ b/frontend/bun.lock
@@ -3,7 +3,7 @@
"configVersion": 1,
"workspaces": {
"": {
- "name": "mike",
+ "name": "ross-app",
"dependencies": {
"@aws-sdk/client-s3": "^3.1025.0",
"@aws-sdk/s3-request-presigner": "^3.1025.0",
diff --git a/frontend/next.config.ts b/frontend/next.config.ts
index 84dce26f7..32f7700d8 100644
--- a/frontend/next.config.ts
+++ b/frontend/next.config.ts
@@ -1,8 +1,17 @@
import type { NextConfig } from "next";
+import path from "node:path";
+import { fileURLToPath } from "node:url";
+
+const repositoryRoot = path.resolve(
+ path.dirname(fileURLToPath(import.meta.url)),
+ "..",
+);
const nextConfig: NextConfig = {
- /* config options here */
reactCompiler: true,
+ turbopack: {
+ root: repositoryRoot,
+ },
async rewrites() {
return [
{
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index a0a6a2d40..88e973806 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -1,11 +1,11 @@
{
- "name": "mike",
+ "name": "ross-app",
"version": "0.1.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
- "name": "mike",
+ "name": "ross-app",
"version": "0.1.0",
"dependencies": {
"@aws-sdk/client-s3": "^3.1025.0",
diff --git a/frontend/package.json b/frontend/package.json
index a76e08c96..f6eb2b855 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -1,5 +1,5 @@
{
- "name": "mike",
+ "name": "ross-app",
"version": "0.1.0",
"private": true,
"scripts": {
diff --git a/frontend/public/link-image.jpg b/frontend/public/link-image.jpg
deleted file mode 100644
index 796213e11..000000000
Binary files a/frontend/public/link-image.jpg and /dev/null differ
diff --git a/frontend/public/ross-social-card.png b/frontend/public/ross-social-card.png
new file mode 100644
index 000000000..ab805e8ff
Binary files /dev/null and b/frontend/public/ross-social-card.png differ
diff --git a/frontend/public/ross-social-card.svg b/frontend/public/ross-social-card.svg
new file mode 100644
index 000000000..5cf7120fe
--- /dev/null
+++ b/frontend/public/ross-social-card.svg
@@ -0,0 +1,15 @@
+
diff --git a/frontend/src/app/(pages)/account/api-keys/page.tsx b/frontend/src/app/(pages)/account/api-keys/page.tsx
index f9da3d36f..801f310ab 100644
--- a/frontend/src/app/(pages)/account/api-keys/page.tsx
+++ b/frontend/src/app/(pages)/account/api-keys/page.tsx
@@ -44,7 +44,7 @@ const OTHER_API_KEY_FIELDS = [
label: "CourtListener API Key",
placeholder: "Token...",
description:
- "Add a CourtListener API key if you want the latest CourtListener data. Otherwise, Mike will use the bulk data hosted by us.",
+ "Add a CourtListener API key for optional inherited U.S. case-law research. Otherwise, ROSS uses the inherited bulk CourtListener dataset when configured by the operator.",
},
] as const;
@@ -59,7 +59,7 @@ export default function ApiKeysPage() {
You must provide your own API keys for the app to work or add
your API keys into the .env file if you are running your own
- instance of Mike. All API keys are encrypted in storage.
+ instance of ROSS. All API keys are encrypted in storage.
diff --git a/frontend/src/app/components/workflows/OpenSourceWorkflowModal.tsx b/frontend/src/app/components/workflows/OpenSourceWorkflowModal.tsx
index bfd2ccf9f..3aff64a35 100644
--- a/frontend/src/app/components/workflows/OpenSourceWorkflowModal.tsx
+++ b/frontend/src/app/components/workflows/OpenSourceWorkflowModal.tsx
@@ -315,8 +315,8 @@ export function OpenSourceWorkflowModal({
htmlFor="open-source-disclosure-consent"
className="cursor-pointer"
>
- GitHub repository and on the
- mikeoss.com website.
+ upstream GitHub repository and on
+ the upstream Mike website.
diff --git a/frontend/src/app/components/workflows/WFEditColumnModal.tsx b/frontend/src/app/components/workflows/WFEditColumnModal.tsx
index 0ec1912f9..704ffb0f4 100644
--- a/frontend/src/app/components/workflows/WFEditColumnModal.tsx
+++ b/frontend/src/app/components/workflows/WFEditColumnModal.tsx
@@ -288,7 +288,7 @@ export function WFEditColumnModal({ column, onClose, onSave, onDelete }: Props)
rows={6}
value={draft.prompt}
onChange={(e) => update({ prompt: e.target.value })}
- placeholder="Write the analysis prompt — describe what Mike should extract from each document for this column…"
+ placeholder="Write the analysis prompt — describe what ROSS should extract from each document for this column…"
className="mt-2 min-h-36"
/>
diff --git a/frontend/src/app/components/workflows/WorkflowList.tsx b/frontend/src/app/components/workflows/WorkflowList.tsx
index fa7fb2757..c333bfe23 100644
--- a/frontend/src/app/components/workflows/WorkflowList.tsx
+++ b/frontend/src/app/components/workflows/WorkflowList.tsx
@@ -21,7 +21,7 @@ import { UseWorkflowModal } from "./UseWorkflowModal";
import { NewWorkflowModal } from "./NewWorkflowModal";
import { TableToolbar } from "../shared/TableToolbar";
import { RowActionMenuItems, RowActions } from "../shared/RowActions";
-import { MikeIcon } from "@/app/components/chat/mike-icon";
+import { RossIcon } from "@/app/components/chat/ross-icon";
import { PageHeader } from "@/app/components/shared/PageHeader";
import { workflowDetailPath } from "./workflowRoutes";
import {
@@ -610,7 +610,7 @@ export function WorkflowList() {
{wf.is_system ? (
-
+
System
) : wf.is_owner !== false ? (
diff --git a/frontend/src/app/favicon.ico b/frontend/src/app/favicon.ico
deleted file mode 100644
index 8c51e6a0a..000000000
Binary files a/frontend/src/app/favicon.ico and /dev/null differ
diff --git a/frontend/src/app/global-error.tsx b/frontend/src/app/global-error.tsx
index f72e10512..9ebc00b71 100644
--- a/frontend/src/app/global-error.tsx
+++ b/frontend/src/app/global-error.tsx
@@ -15,7 +15,7 @@ export default function GlobalError({
return (
- Something went wrong – Mike
+ Something went wrong – ROSS