rebranding work

This commit is contained in:
2026-05-25 21:53:01 -04:00
parent 89822dedb8
commit c01c1a5636
52 changed files with 3090 additions and 70 deletions

View File

@@ -0,0 +1,37 @@
# 01. Update Monorepo Foundation
meta:
id: rebrand-to-kordant-01
feature: rebrand-to-kordant
priority: P0
depends_on: []
tags: [infrastructure, configuration]
objective:
- Update the root package name, workspace metadata, and environment configuration files from ShieldAI to Kordant.
deliverables:
- Root package.json name changed from "shieldai" to "kordant"
- Turbo pipeline `build:ext` and `test:ext` script references updated
- Root .env.example updated (DB user, database name, DD_SERVICE)
- .env.prod.example updated (GITHUB_REPOSITORY_OWNER)
- .editorconfig: no changes needed (not brand-specific)
steps:
1. Edit `package.json` — change `"name": "shieldai"` to `"name": "kordant"`
2. Edit `package.json` — update `"build:ext"` script: `@shieldai/browser-ext` → needs package scope update (will be done in task 03; for now just the script name stays but the scope resolves later)
3. Edit `.env.example` — update DATABASE_URL user/db from `shieldai` to `kordant`, update `DD_SERVICE="shieldai-api"` to `DD_SERVICE="kordant-api"`
4. Edit `.env.prod.example` — update `GITHUB_REPOSITORY_OWNER=shieldai` to `GITHUB_REPOSITORY_OWNER=kordant`
tests:
- Unit: Verify package.json `name` equals "kordant"
- Unit: Verify .env.example has no "shieldai" references
acceptance_criteria:
- `cat package.json | jq .name` returns "kordant"
- `grep -rn "shieldai" .env.example .env.prod.example` returns empty
- `grep "DD_SERVICE" .env.example` shows "kordant-api"
validation:
- Run `pnpm build` from root — should not fail (may have pre-existing errors unrelated to this change)
- Verify `pnpm --filter kordant*` style commands work

View File

@@ -0,0 +1,39 @@
# 02. Update Database Connection Strings and DB Names
meta:
id: rebrand-to-kordant-02
feature: rebrand-to-kordant
priority: P1
depends_on: [rebrand-to-kordant-01]
tags: [infrastructure, database]
objective:
- Update all Turso database URLs and PostgreSQL connection strings from shieldai-* to kordant-* and database names from shieldai to kordant.
deliverables:
- web/src/server/db/index.ts — Turso URL updated
- web/drizzle.config.ts — Turso URL updated
- web/.env.development — DATABASE_URL updated
- web/.env.example — DATABASE_URL db name updated
- .env.example — DATABASE_URL user/db updated
- .github/workflows/ci.yml — PostgreSQL credentials and DB name updated
steps:
1. Edit `web/src/server/db/index.ts` — change `libsql://shieldai-dev-*` to `libsql://kordant-dev-*`
2. Edit `web/drizzle.config.ts` — same Turso URL update
3. Edit `web/.env.development` — same URL update
4. Edit `web/.env.example` — update `.../shieldai` postgres db name to `.../kordant`
5. Edit `.env.example` — update `POSTGRES_DB: shieldai`, `POSTGRES_USER: shieldai`, `POSTGRES_PASSWORD: shieldai_dev`, and `pg_isready -U shieldai`, and `DATABASE_URL` all to use `kordant`
6. Edit `.github/workflows/ci.yml` — update all `shieldai` references in db service config (POSTGRES_DB, POSTGRES_USER, POSTGRES_PASSWORD, pg_isready, DATABASE_URL)
tests:
- Unit: grep for any remaining `shieldai.*turso.io` patterns — should be zero
- Config: verify all DATABASE_URL references use `kordant` db name
acceptance_criteria:
- No `shieldai-dev-` or `shieldai` database name remains in any connection string
- CI workflow uses `kordant` as PostgreSQL database name
validation:
- Run `grep -rn "libsql://shieldai" web/` — expect zero results
- Run `grep -rn "POSTGRES_DB: shieldai" .github/` — expect zero results

View File

@@ -0,0 +1,39 @@
# 03. Update @shieldai/* Package Scopes and Web Imports
meta:
id: rebrand-to-kordant-03
feature: rebrand-to-kordant
priority: P0
depends_on: [rebrand-to-kordant-01]
tags: [infrastructure, packages]
objective:
- Rename all `@shieldai/*` package scopes to `@kordant/*` across the monorepo and update all corresponding import statements.
deliverables:
- browser-ext/package.json — `"name": "@shieldai/browser-ext"``"@kordant/browser-ext"`
- All files importing `@shieldai/*` — import paths updated to `@kordant/*`
- All plan files referencing `@shieldai/*` — updated
steps:
1. Edit `browser-ext/package.json` — change package scope from `@shieldai` to `@kordant`
2. Search and replace all `@shieldai/``@kordant/` across:
- `web/src/**/*.ts`
- `web/src/**/*.tsx`
- `browser-ext/**/*.ts`
- `browser-ext/**/*.tsx`
- `plans/*.md`
3. Verify no `@shieldai/` references remain in source code
tests:
- Build: `pnpm build` succeeds (after scope update)
- Grep: `grep -rn "@shieldai/" web/src/ browser-ext/src/` returns empty
acceptance_criteria:
- `pnpm --filter @kordant/browser-ext ...` commands resolve correctly
- All import statements across the monorepo use `@kordant/` scope
- No `@shieldai/` string remains in any package.json or source file
validation:
- Run `grep -rn "from \"@shieldai/" web/src/ browser-ext/src/` — expect zero
- Run `grep -rn "@shieldai/" package.json browser-ext/package.json` — expect zero

View File

@@ -0,0 +1,46 @@
# 04. Replace "ShieldAI" Display Text Across Web UI
meta:
id: rebrand-to-kordant-04
feature: rebrand-to-kordant
priority: P1
depends_on: [rebrand-to-kordant-03]
tags: [frontend, ui]
objective:
- Replace all user-visible "ShieldAI" branding text across web UI components with "Kordant".
deliverables:
- Page titles in all route files updated (app.tsx, index.tsx, dashboard, auth, blog, ads, 404)
- Navbar, Sidebar, Footer, AppShell brand text updated
- Landing page (HeroSection, WhyShieldAISection, CTABannerSection) updated
- Auth layout testimonial text and brand references updated
- Ads page copy updated
- Tests updated to reference "Kordant" instead of "ShieldAI"
steps:
1. Update all `<Title>` tags in route files — replace "ShieldAI" with "Kordant" in page title strings
2. Update Navbar.tsx — replace "ShieldAI" brand text
3. Update Sidebar.tsx — replace "ShieldAI" brand text
4. Update Footer.tsx — replace "ShieldAI" and "ShieldAI. All rights reserved."
5. Update AppShell.tsx — replace default title
6. Update HeroSection.tsx — replace "ShieldAI evens"
7. Update WhyShieldAISection — rename component, id, and text references
8. Update CTABannerSection — replace "trust ShieldAI"
9. Update landing index.ts export and imports in routes/index.tsx
10. Update AuthLayout.tsx — replace testimonial/quote brand text
11. Update onboarding.tsx — replace "Your ShieldAI account is ready..."
12. Update ads.tsx — replace all marketing copy
13. Update all test files that assert "ShieldAI" in rendered output
tests:
- Unit: All tests pass after text changes
- Visual: Web app renders "Kordant" in all branded locations
acceptance_criteria:
- No "ShieldAI" text appears in any web UI page title, nav, sidebar, footer, landing, auth, blog, or ads page
- Test assertions updated to expect "Kordant" instead of "ShieldAI"
validation:
- Run `grep -rn "ShieldAI" web/src/components/ web/src/routes/` — check only legitimate remaining references (comments, third-party)
- Run `pnpm --filter web test` — all tests pass

View File

@@ -0,0 +1,46 @@
# 05. Update Email Templates, Notification Content, and Queue Names
meta:
id: rebrand-to-kordant-05
feature: rebrand-to-kordant
priority: P1
depends_on: [rebrand-to-kordant-01]
tags: [backend, email]
objective:
- Replace all "ShieldAI" references in email templates, notification services, report generators, and BullMQ queue names.
deliverables:
- email.templates.ts — brand text, subjects, bodies, headers, footers updated
- email.templates.test.ts — test assertions updated
- notification.service.ts — from address updated to kordant.ai
- alert.publisher.ts — push notification title prefix updated
- reports.service.ts — report title updated
- reports/generator.ts — report text updated
- reports/templates/*.html — HTML report templates updated
- queue.ts — BullMQ queue name updated from "shieldai-jobs" to "kordant-jobs"
- waitlist-email-sequence-implementation.md — domain references updated
steps:
1. Edit email.templates.ts — replace all "ShieldAI" brand text in subjects, HTML, plain text bodies, footers, team signatures
2. Edit email.templates.ts — update from/noreply email to `noreply@kordant.ai`
3. Edit email.templates.test.ts — update test assertions to expect "Kordant"
4. Edit notification.service.ts — update `noreply@shieldai.app``noreply@kordant.ai`
5. Edit alert.publisher.ts — update `` `[ShieldAI] ${alert.title}` `` → `` `[Kordant] ${alert.title}` ``
6. Edit reports.service.ts — update report title from "ShieldAI" to "Kordant"
7. Edit reports/generator.ts — update all brand text references
8. Edit reports/templates/*.html — update title and footer in weekly-digest, monthly-plus, annual-premium
9. Edit queue.ts — update queue name "shieldai-jobs" → "kordant-jobs"
tests:
- Unit: Email template tests pass with new brand name
- Unit: Report generator tests pass
acceptance_criteria:
- No "ShieldAI" remains in any email template, notification, or report
- Email from address uses `@kordant.ai`
- BullMQ queue name uses "kordant-jobs"
validation:
- Run `grep -rn "ShieldAI" web/src/server/services/` — expect zero results
- Run `grep "shieldai-jobs" web/src/server/jobs/queue.ts` — expect zero

View File

@@ -0,0 +1,37 @@
# 06. Update Browser Storage Keys, Theme Keys, and User-Agent Headers
meta:
id: rebrand-to-kordant-06
feature: rebrand-to-kordant
priority: P2
depends_on: [rebrand-to-kordant-03]
tags: [frontend, config]
objective:
- Update all localStorage keys, theme storage keys, unread count keys, device name strings, and user-agent headers from ShieldAI to Kordant.
deliverables:
- web/src/lib/theme.tsx — STORAGE_KEY updated
- web/src/lib/theme.test.ts — assertions updated (11 occurrences)
- web/src/entry-server.tsx — theme key updated
- web/src/hooks/useRealtimeAlerts.ts — UNREAD_STORAGE_KEY updated
- web/src/server/api/routers/extension.ts — "ShieldAI Browser Extension" updated
- web/src/server/services/darkwatch/scan.engine.ts — user-agent header updated
steps:
1. Edit `web/src/lib/theme.tsx` — change `STORAGE_KEY = "shieldai-theme"` to `"kordant-theme"`
2. Edit `web/src/lib/theme.test.ts` — update all `"shieldai-theme"` assertions to `"kordant-theme"`
3. Edit `web/src/entry-server.tsx` — update `'shieldai-theme'` to `'kordant-theme'`
4. Edit `web/src/hooks/useRealtimeAlerts.ts` — update `UNREAD_STORAGE_KEY = "shieldai_unread_count"` to `"kordant_unread_count"`
5. Edit `web/src/server/api/routers/extension.ts` — update device name from `"ShieldAI Browser Extension"` to `"Kordant Browser Extension"`
6. Edit `web/src/server/services/darkwatch/scan.engine.ts` — update `"user-agent": "ShieldAI-DarkWatch"` to `"Kordant-DarkWatch"`
tests:
- Unit: Theme tests pass after key update
- Integration: DarkWatch scanner user-agent header updated
acceptance_criteria:
- No `shieldai-theme`, `shieldai_unread_count`, `ShieldAI Browser Extension`, or `ShieldAI-DarkWatch` remain in source
validation:
- Run `grep -rn "shieldai-theme\|shieldai_unread_count\|ShieldAI Browser Extension\|ShieldAI-DarkWatch" web/src/` — expect zero

View File

@@ -0,0 +1,32 @@
# 07. Update Seed Data, Blog Content, and Landing Page Copy
meta:
id: rebrand-to-kordant-07
feature: rebrand-to-kordant
priority: P2
depends_on: [rebrand-to-kordant-03]
tags: [frontend, content]
objective:
- Update seed data references, blog content, and remaining landing page copy from ShieldAI to Kordant.
deliverables:
- web/src/server/db/seed.ts — author name and description updated
- web/src/routes/blog.tsx — blog page title, post titles, copy updated
- web/src/routes/blog/[slug].tsx — blog post content, metadata, author updated
steps:
1. Edit `web/src/server/db/seed.ts` — update `authorName: "ShieldAI Team"` to `"Kordant Team"`, update description text
2. Edit `web/src/routes/blog.tsx` — update page title, blog descriptions, post slugs containing "shieldai", post titles
3. Edit `web/src/routes/blog/[slug].tsx` — update all brand references in blog post content, metadata, author role
tests:
- Unit: Seed data tests pass
- Unit: Blog page renders correctly with updated content
acceptance_criteria:
- No "ShieldAI" remains in seed data or blog content
- Blog post slugs no longer contain "shieldai"
validation:
- Run `grep -rn "ShieldAI" web/src/server/db/seed.ts web/src/routes/blog.tsx web/src/routes/blog/` — expect zero

View File

@@ -0,0 +1,47 @@
# 08. Update Browser Extension Branding
meta:
id: rebrand-to-kordant-08
feature: rebrand-to-kordant
priority: P1
depends_on: [rebrand-to-kordant-01, rebrand-to-kordant-03]
tags: [browser-ext, frontend]
objective:
- Update all ShieldAI branding in the browser extension: manifest, HTML pages, storage keys, log messages, and domain references.
deliverables:
- browser-ext/public/manifest.json — name and host permissions updated
- browser-ext/src/popup/popup.html — title and brand text updated
- browser-ext/src/options/options.html — title, heading, API URL placeholder updated
- browser-ext/src/options/options.ts — device name updated
- browser-ext/src/background/index.ts — device name, log prefixes, storage keys, error messages updated
- browser-ext/src/content/index.ts — log prefixes updated
- browser-ext/src/lib/settings.ts — STORAGE_KEY and API URL updated
- browser-ext/src/lib/phishing-detector.ts — phishing domain reference data updated
- browser-ext/tests/ — all test assertions updated
steps:
1. Edit `manifest.json` — update `"name": "ShieldAI"` to `"Kordant"`, update host permissions from `*.shieldai.com` to `*.kordant.ai`
2. Edit `popup.html` — update `<title>` and `<span>ShieldAI</span>`
3. Edit `options.html` — update title, heading, API URL placeholder
4. Edit `options.ts` — update device name
5. Edit `background/index.ts` — update device name, log prefixes, storage keys, error messages
6. Edit `content/index.ts` — update log prefixes
7. Edit `lib/settings.ts` — update STORAGE_KEY and base URL
8. Edit `lib/phishing-detector.ts` — update phishing domain examples from shieldai-* to kordant-*
9. Edit all test files — update assertions
tests:
- Unit: Extension tests pass
- Manual: Load unpacked extension in Chrome — verify "Kordant" displays correctly
acceptance_criteria:
- Extension manifest name shows "Kordant"
- All storage keys use `kordant:` prefix
- No `shieldai` / `ShieldAI` remains in extension source
- API domain uses `kordant.ai`
validation:
- Run `grep -rn "shieldai\|ShieldAI" browser-ext/` — expect zero
- Load extension in Chrome, verify name in toolbar

View File

@@ -0,0 +1,47 @@
# 09. Update iOS App Branding
meta:
id: rebrand-to-kordant-09
feature: rebrand-to-kordant
priority: P1
depends_on: [rebrand-to-kordant-01]
tags: [ios, mobile]
objective:
- Update all ShieldAI branding in the iOS app: Xcode project, Swift source files, bundle identifiers, display text, storage keys, and URL schemes.
deliverables:
- iOS/ShieldAI/ directory renamed to iOS/Kordant/
- Xcode project file (.pbxproj) — all ShieldAI references updated (bundle IDs, target names, product names, entitlements, URL schemes, info plist strings)
- ShieldAIApp.swift — app struct renamed
- ShieldAITheme.swift — theme struct renamed; ShieldAITheme.cornerRadius references in all View files updated
- AuthView, OnboardingView — display text updated
- BiometricAuthService — auth prompt messages updated
- CameraService — usage description strings updated
- APIClient, PushNotificationService, NetworkMonitor — subsystem strings updated
- Route.swift — URL scheme updated from "shieldai" to "kordant"
- ThemeManager — storage key updated
- OfflineQueue, CacheManager — storage keys updated
- ShieldAITests, ShieldAIUITests — all references updated
- Deep link URL strings in tests updated
steps:
1. Rename iOS directory from `iOS/ShieldAI` to `iOS/Kordant` (this will require updating all paths in pbxproj)
2. Edit pbxproj — find/replace all ShieldAI → Kordant (bundle IDs, target names, product names, paths, info plist strings, URL schemes)
3. Edit Swift source files — update ShieldAIApp, ShieldAITheme, display text, storage keys, URL schemes, subsystem strings, biometric prompts
4. Update test files — @testable import, class names, URL strings
tests:
- Build: iOS project opens in Xcode and builds successfully
- Unit: All iOS tests pass
acceptance_criteria:
- Xcode project loads without errors
- All build targets compile
- Bundle identifier uses `com.kordant.*`
- URL scheme is `kordant://`
- No "ShieldAI" remains in any Swift source file
validation:
- Run `grep -rn "ShieldAI\|shieldai" iOS/Kordant/ — expect zero
- Open project in Xcode, verify build succeeds

View File

@@ -0,0 +1,54 @@
# 10. Update Android App Branding
meta:
id: rebrand-to-kordant-10
feature: rebrand-to-kordant
priority: P1
depends_on: [rebrand-to-kordant-01]
tags: [android, mobile]
objective:
- Update all ShieldAI branding in the Android app: package names, Kotlin source files, resources, build config, and class names.
deliverables:
- android/ShieldAI/ directory renamed to android/Kordant/
- build.gradle.kts — namespace, applicationId, and API URLs updated
- settings.gradle.kts — rootProject.name updated
- All Kotlin source files — package declarations updated from `com.shieldai.android.*` to `com.kordant.*`
- ShieldAIApp.kt renamed to KordantApp.kt
- ShieldAIDatabase.kt renamed to KordantDatabase.kt — DATABASE_NAME updated
- All import statements across ~70+ Kotlin files updated
- AndroidManifest.xml — app class name, theme references updated
- strings.xml — app_name updated
- themes.xml — style name updated
- Storage key strings updated (shieldai_database, shieldai_auth_prefs, shieldai_biometric_prefs)
- UI display text strings updated (ShieldAI → Kordant)
- Theme.kt — ShieldAITheme fun renamed to KordantTheme
steps:
1. Rename directory from `android/ShieldAI` to `android/Kordant`
2. Edit build.gradle.kts — update namespace, applicationId, API URLs
3. Edit settings.gradle.kts — update rootProject.name
4. Update all Kotlin package declarations from `com.shieldai.android` to `com.kordant`
5. Update all import statements referencing `com.shieldai.android.*` to `com.kordant.*`
6. Rename ShieldAIApp.kt → KordantApp.kt (update class name)
7. Rename ShieldAIDatabase.kt → KordantDatabase.kt (update class name and DATABASE_NAME)
8. Update AndroidManifest.xml — android:name, theme, app_name
9. Update strings.xml, themes.xml
10. Update Theme.kt — fun ShieldAITheme → fun KordantTheme
11. Update all storage keys from shieldai_* to kordant_*
12. Update all UI display text (ComponentShowcase, AuthScreen, BiometricAuthScreen)
tests:
- Build: Android project builds successfully
- Unit: All Android tests pass
acceptance_criteria:
- Android project compiles without errors
- Application ID is `com.kordant.*`
- No "ShieldAI" or "shieldai" remains in any Kotlin source, XML resource, or build config
- Database name uses "kordant_database"
validation:
- Run `grep -rn "ShieldAI\|shieldai\|com\.shieldai" android/Kordant/` — expect zero
- Open project in Android Studio, verify build succeeds

View File

@@ -0,0 +1,39 @@
# 11. Update CI/CD and Infrastructure References
meta:
id: rebrand-to-kordant-11
feature: rebrand-to-kordant
priority: P1
depends_on: [rebrand-to-kordant-01]
tags: [infrastructure, ci-cd]
objective:
- Update all CI/CD workflow files, Docker image tags, Terraform state bucket names, ECS cluster names, and service names from ShieldAI to Kordant.
deliverables:
- .github/workflows/ci.yml — Docker tags, coverage artifact name, service names updated
- .github/workflows/deploy.yml — bucket name, image tags, cluster names, service names all updated
- scripts/setup-ga4.sh — display name, property name, domain references updated
- scripts/load-test/run-all.sh — test description and service references updated
steps:
1. Edit `.github/workflows/ci.yml` — update all `shieldai:` Docker tags to `kordant:`, update `name: shieldai-coverage` to `kordant-coverage`
2. Edit `.github/workflows/deploy.yml` — update:
- S3 bucket `shieldai-*` to `kordant-*`
- Docker image tags `shieldai-${{ matrix.name }}` to `kordant-${{ matrix.name }}`
- ECS cluster names `shieldai-${ENV}` to `kordant-${ENV}`
- Service name references
3. Edit `scripts/setup-ga4.sh` — update display name from "ShieldAI" to "Kordant", domain from `shieldai.com` to `kordant.ai`
4. Edit `scripts/load-test/run-all.sh` — update "ShieldAI" references
tests:
- None (CI/CD changes are validated on next pipeline run)
acceptance_criteria:
- No `shieldai-` prefix remains in any CI/CD workflow for Docker tags, cluster names, or bucket names
- GA4 script uses kordant.ai domain
- Load test script references Kordant
validation:
- Run `grep -rn "shieldai-\.*" .github/workflows/ scripts/` — expect zero
- Review updated deploy.yml for consistency

View File

@@ -0,0 +1,40 @@
# 12. Update SVG Ad Creatives and Marketing Assets
meta:
id: rebrand-to-kordant-12
feature: rebrand-to-kordant
priority: P3
depends_on: []
tags: [assets, marketing]
objective:
- Update all SVG ad creative files in the assets/ directory to replace "ShieldAI" branding with "Kordant".
deliverables:
- assets/ads/meta_c_1x1_1080x1080.svg — headline updated
- assets/ads/meta_b_45_1080x1350.svg — terminal prompt, body text, tagline updated
- assets/ads/meta_b_1x1_1080x1080.svg — terminal prompt, product name updated
- assets/ads/meta_a_1x1_1080x1080.svg — headline updated
- assets/ads/linkedin/variant1_professional.svg — body text, logo updated
- assets/ads/linkedin/variant2_datasecurity.svg — product name, logo updated
- assets/ads/linkedin/variant3_family_professional.svg — badge, logo updated
- assets/ads/gd_portrait_600x750.svg — tagline updated
steps:
1. For each SVG file, search for "ShieldAI" text nodes and replace with "Kordant"
2. For terminal prompts like `darkwatch@shieldai:~$`, update to `darkwatch@kordant:~$`
3. For taglines like "ShieldAI — AI-Powered Identity Protection", update to "Kordant — AI-Powered Identity Protection"
4. Verify SVG files remain valid after replacements
tests:
- Visual: Open SVGs in browser — verify text renders correctly with new name
- Structural: SVGs remain valid XML
acceptance_criteria:
- No "ShieldAI" text remains in any SVG asset file
- Terminal prompts use `@kordant` instead of `@shieldai`
- Taglines and headlines use "Kordant"
validation:
- Run `grep -rn "ShieldAI" assets/ads/` — expect zero
- Run `grep -rn "shieldai" assets/ads/` — expect zero (check for prompt variants)

View File

@@ -0,0 +1,39 @@
# 13. Update READMEs, Plan Documents, and Task References
meta:
id: rebrand-to-kordant-13
feature: rebrand-to-kordant
priority: P3
depends_on: [rebrand-to-kordant-01]
tags: [documentation]
objective:
- Update all README files, plan documents, and task directory references from ShieldAI to Kordant.
deliverables:
- README.md — title, description, package references, plan file links updated
- plans/SHIELDAI-product-plan.md — filename renamed to plans/KORDANT-product-plan.md, content updated
- plans/SHIELDAI-technical-architecture.md — filename renamed, content updated
- tasks/shieldai-unified-restructure/ — directory renamed to tasks/kordant-unified-restructure/, all task ID frontmatter updated
- tasks/clerk-integration/README.md — reference to "ShieldAI/web" updated
steps:
1. Rename plan files: `SHIELDAI-product-plan.md``KORDANT-product-plan.md`, `SHIELDAI-technical-architecture.md``KORDANT-technical-architecture.md`
2. Update README.md — replace "ShieldAI" with "Kordant" throughout, update plan file links
3. Rename task directory `tasks/shieldai-unified-restructure/``tasks/kordant-unified-restructure/`
4. Update all task file frontmatter in `tasks/kordant-unified-restructure/` — change `feature: shieldai-unified-restructure` and task IDs
5. Update `tasks/clerk-integration/README.md` — reference to ShieldAI/web
6. Update README filter package references: `@shieldai/spamshield``@kordant/spamshield`, etc.
tests:
- None (documentation only)
acceptance_criteria:
- README.md no longer mentions "ShieldAI"
- Plan filenames use Kordant prefix
- Task directory names use kordant prefix
- All internal task references updated
validation:
- Run `grep -rn "ShieldAI\|shieldai" README.md plans/` — expect zero
- Verify plan files compile/make sense with new name

View File

@@ -0,0 +1,63 @@
# 14. Final Sweep and Verification of Rebrand Completeness
meta:
id: rebrand-to-kordant-14
feature: rebrand-to-kordant
priority: P0
depends_on: [rebrand-to-kordant-13]
tags: [quality-assurance]
objective:
- Perform a comprehensive final sweep of the entire codebase to verify zero "ShieldAI" or "shieldai" references remain in source code (excluding git history and third-party dependencies), and that all builds and tests pass.
deliverables:
- Final verification report
- Any straggling references cleaned up
steps:
1. Run comprehensive grep searches across the repo for "ShieldAI" and "shieldai", filtering out:
- `.git/` directory
- `node_modules/`
- `pnpm-lock.yaml`, `bun.lock`
- Any false positives (e.g., in git history references)
2. For each remaining reference, determine if it needs updating
3. Run `pnpm build` — verify all packages build
4. Run `pnpm test` — verify all tests pass
5. Verify web app renders correctly with "Kordant" branding
6. Verify browser extension loads with new name
7. Review all changed files for consistency (punctuation, casing, sentence flow)
8. Run a second sweep to catch any missed references
tests:
- Build: `pnpm build` succeeds across all packages
- Unit: `pnpm test` passes across all packages
- Integration: Web app, extension, and mobile builds succeed
acceptance_criteria:
- Zero `ShieldAI` or `shieldai` references remain in source code
- All packages build successfully
- All tests pass
- Domain `kordant.ai` is correctly referenced throughout
validation:
```bash
# Final sweep commands
echo "=== ShieldAI (PascalCase) ==="
grep -rn "ShieldAI" --include="*.{ts,tsx,js,jsx,kt,swift,html,svg,yml,yaml,sh,env,toml,json}" . \
--exclude-dir=.git --exclude-dir=node_modules --exclude-dir=.turbo \
| grep -v "pnpm-lock\|bun.lock\|\.next\|dist"
echo "=== shieldai (lowercase) ==="
grep -rn "shieldai" --include="*.{ts,tsx,js,jsx,kt,swift,html,svg,yml,yaml,sh,env,toml,json}" . \
--exclude-dir=.git --exclude-dir=node_modules --exclude-dir=.turbo \
| grep -v "pnpm-lock\|bun.lock\|\.next\|dist"
echo "=== SHIELD (pattern check) ==="
grep -rn "SHIELD" --include="*.{ts,tsx,kt,swift}" . \
--exclude-dir=.git --exclude-dir=node_modules | grep -v "nodemon"
```
notes:
- The `.git` directory contains the old name in commit history — that's expected and should NOT be changed
- Third-party dependencies in `node_modules/` may reference "shieldai" in cached packages — ignore these
- The `tasks/` directory contains historical task files with "shieldai" IDs — these are internal planning docs and may optionally be skipped

View File

@@ -0,0 +1,42 @@
# Rebrand ShieldAI → Kordant
Objective: Complete rebrand of the ShieldAI platform to Kordant across all packages, apps, infrastructure, and assets.
Status legend: [ ] todo, [~] in-progress, [x] done
Tasks
- [x] 01 — Update monorepo foundation (root package, env, config) → `01-update-monorepo-foundation.md`
- [x] 02 — Update database connection strings and DB names → `02-update-database-connection-strings.md`
- [x] 03 — Update @shieldai/* package scopes and web imports → `03-update-web-package-scope-and-imports.md`
- [ ] 04 — Replace "ShieldAI" display text across web UI → `04-update-web-ui-brand-text.md`
- [ ] 05 — Update email templates, notification content, and queue names → `05-update-web-email-notification-templates.md`
- [ ] 06 — Update browser storage keys, theme keys, and user-agent headers → `06-update-web-storage-keys-and-constants.md`
- [ ] 07 — Update seed data, blog content, and landing page copy → `07-update-web-seed-data-and-blog-content.md`
- [ ] 08 — Update browser extension manifest, HTML, and storage keys → `08-update-browser-extension-branding.md`
- [ ] 09 — Update iOS bundle ID, Xcode project, and Swift source branding → `09-update-ios-app-branding.md`
- [ ] 10 — Update Android package names, Kotlin source, and resources → `10-update-android-app-branding.md`
- [ ] 11 — Update CI/CD workflows, Docker tags, and service names → `11-update-ci-cd-and-infrastructure.md`
- [ ] 12 — Update SVG ad creatives and marketing assets → `12-update-assets-and-ad-creatives.md`
- [ ] 13 — Update READMEs, plan documents, and task references → `13-update-documentation-and-plan-files.md`
- [ ] 14 — Final sweep and verification of rebrand completeness → `14-verify-rebrand-completeness.md`
Dependencies
- 01 → 03 (package scope must be updated first before web imports)
- 03 → 04 (web scope must resolve before changing text)
- 01 → 05 (env changes needed for email domain)
- 01 → 08 (root package affects extension)
- 01 → 11 (env vars feed CI/CD)
- 03 → 06 (package resolution needed)
- 01 → 09 (root package naming)
- 01 → 10 (root package naming)
- 13 → 14 (docs update before final sweep)
Exit criteria
- Zero occurrences of "ShieldAI" or "shieldai" remain in source code (excluding third-party dependencies and git history)
- All packages build successfully (`pnpm build`)
- All tests pass (`pnpm test`)
- iOS and Android projects open without errors in Xcode / Android Studio
- Browser extension loads successfully in Chrome
- Web app renders with "Kordant" branding throughout
- Domain `kordant.ai` is functional for all environments
- CI/CD pipelines reference kordant-* services and tags