learning_ai_common_plat/reports/rule-violations-baseline.md
saravanakumardb1 f1ebff5514 feat(scripts+ui): Tier 2 complete \u2014 common_plat 0 hex findings (was 59)
Scanner refinements:
- Exclude services/<svc>/src/        (Fastify backends, not UI)
- Exclude packages/config/           (schema/defaults, not UI)
- Exclude packages/devops/           (internal tooling)
- Exclude packages/create-app/.../templates (scaffolder templates)
- Exclude *.storybook/, /stories/, *.stories.{ts,tsx} (demo/docs)
- Exclude SVG fill=, stroke= hex (brand-mandated, e.g. Google G logo)
- Exclude ThemeEditor.tsx, theme-defaults.* (their content IS hex)
- Exclude /api/themes/ routes (server-side defaults)

Source fixes in shared packages (high leverage \u2014 consumed by every product):
- packages/auth-ui/src/*Form*.tsx + OnboardingShell + MfaChallenge (7)
- packages/dashboard-shell/src/{TopBar,ProfilePage}.tsx (3)
- dashboards/tracker-web/src/app/health/page.tsx (6)

All use the canonical var(--bl-<token>, #fallback) pattern that:
- Lets product themes override (e.g., each product sets --bl-danger differently)
- Falls back to a sensible default if tokens haven't loaded yet (defensive)

common_plat hex: 59 \u2192 0 \u2713 (Tier 2 complete)
Ecosystem total: 1569 \u2192 1402

Tier progress:
  Tier 1 (critical):       13 \u2192 0 \u2713
  Tier 2 (common_plat hex): 59 \u2192 0 \u2713
  Tier 3 (mac_tooling, efforise): NEXT
  Tier 4 (mindlyst, fastgap, flowmonk)
  Tier 5 (non-hex rules)
2026-05-23 14:37:51 -07:00

189 lines
20 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Rule Violations Report — 2026-05-23
> Generated by `scripts/check-rule-violations.sh` against canonical rules in
> [`AI.dev/SKILLS/agent-behavior-guidelines.md`](../AI.dev/SKILLS/agent-behavior-guidelines.md).
Severity legend: **critical** = data/security risk · **major** = rule violation · **minor** = style
## `learning_ai_common_plat`
**Counts:** critical=0 · major=80 · minor=86 · total=166
- **[major]** `packages/logger/src/logger.ts:40` — console.log: console.log(`${prefix} ${message}${extras}`);
- **[major]** `packages/create-app/src/scaffolder.ts:60` — console.log: console.log(`
- **[major]** `packages/create-app/src/scaffolder.ts:115` — console.log: console.log('\n📦 ByteLyst Product Scaffolder\n');
- **[major]** `packages/create-app/src/scaffolder.ts:126` — console.log: console.log('\nPlatforms (comma-separated: web, mobile, ios, android)');
- **[major]** `packages/create-app/src/scaffolder.ts:135` — console.log: console.log('\nFeatures (comma-separated: auth, billing, telemetry, flags, syn
- **[major]** `packages/create-app/src/scaffolder.ts:257` — console.log: console.log(`\n🚀 Scaffolding ${manifest.displayName}`);
- **[major]** `packages/create-app/src/scaffolder.ts:259` — console.log: console.log(` Product ID: ${manifest.productId}`);
- **[major]** `packages/create-app/src/scaffolder.ts:261` — console.log: console.log(` Output: ${outPath}`);
- **[major]** `packages/create-app/src/scaffolder.ts:263` — console.log: console.log(` Platforms: ${manifest.platforms.join(', ')}`);
- **[major]** `packages/create-app/src/scaffolder.ts:265` — console.log: console.log(` Features: ${manifest.features.join(', ')}`);
- **[major]** `packages/create-app/src/scaffolder.ts:268` — console.log: console.log(' ⚠️ DRY RUN\n');
- **[major]** `packages/create-app/src/scaffolder.ts:275` — console.log: console.log(`📄 ${files.length} files would be generated:\n`);
- **[major]** `packages/create-app/src/scaffolder.ts:278` — console.log: console.log(`── ${file.path} ──────────────────────────────────────`);
- **[major]** `packages/create-app/src/scaffolder.ts:280` — console.log: console.log(file.content);
- **[major]** `packages/create-app/src/scaffolder.ts:283` — console.log: console.log(`\n✨ Dry run complete. Re-run without --dry-run to write files.`
- **[major]** `packages/create-app/src/scaffolder.ts:293` — console.log: console.log(` ✅ ${file.path}`);
- **[major]** `packages/create-app/src/scaffolder.ts:297` — console.log: console.log(`\n✨ ${manifest.displayName} scaffolded at ${outPath}`);
- **[major]** `packages/create-app/src/scaffolder.ts:299` — console.log: console.log(`\nNext steps:`);
- **[major]** `packages/create-app/src/scaffolder.ts:301` — console.log: console.log(` cd ${outDir}/backend && npm install && npm run dev`);
- **[major]** `packages/create-app/src/scaffolder.ts:304` — console.log: console.log(` cd ${outDir}/web && npm install && npm run dev`);
- **[major]** `packages/create-app/src/generators/agents-md.ts:49` — console.log: console.log(`
- **[major]** `packages/create-app/src/generators/agents-md.ts:528` — console.log: console.log(` 📝 Would create symlink: ${target} → AGENTS.md`);
- **[major]** `packages/create-app/src/generators/agents-md.ts:533` — console.log: console.log(` ✅ ${target} → AGENTS.md`);
- **[major]** `packages/create-app/src/generators/agents-md.ts:535` — console.log: console.log(
- **[major]** `packages/create-app/src/generators/agents-md.ts:549` — console.log: console.log(`\n📄 AGENTS.md Generator`);
- **[major]** `packages/create-app/src/generators/agents-md.ts:550` — console.log: console.log(` Repo: ${repoPath}`);
- **[major]** `packages/create-app/src/generators/agents-md.ts:551` — console.log: if (dryRun) console.log(' ⚠️ DRY RUN — no files will be written\n');
- **[major]** `packages/create-app/src/generators/agents-md.ts:552` — console.log: if (update) console.log(' 🔄 UPDATE mode — preserving custom sections\n');
- **[major]** `packages/create-app/src/generators/agents-md.ts:556` — console.log: console.log(` Product: ${manifest.displayName} (${manifest.productId})`);
- **[major]** `packages/create-app/src/generators/agents-md.ts:560` — console.log: console.log(` Backend modules: ${info.backendModules.length}`);
- **[major]** `packages/create-app/src/generators/agents-md.ts:561` — console.log: console.log(` Tests: ~${info.backendTestCount + info.webTestCount + info.mob
- **[major]** `packages/create-app/src/generators/agents-md.ts:562` — console.log: console.log('');
- **[major]** `packages/create-app/src/generators/agents-md.ts:574` — console.log: console.log(` 🔄 Preserving ${customSections.size} custom section(s)`);
- **[major]** `packages/create-app/src/generators/agents-md.ts:578` — console.log: console.log(' No existing AGENTS.md to preserve custom sections from
- **[major]** `packages/create-app/src/generators/agents-md.ts:583` — console.log: console.log('── AGENTS.md ──────────────────────────────────────');
- **[major]** `packages/create-app/src/generators/agents-md.ts:584` — console.log: console.log(content);
- **[major]** `packages/create-app/src/generators/agents-md.ts:585` — console.log: console.log('\n── Symlinks ──────────────────────────────────────');
- **[major]** `packages/create-app/src/generators/agents-md.ts:587` — console.log: console.log('\n✨ Dry run complete.');
- **[major]** `packages/create-app/src/generators/agents-md.ts:594` — console.log: console.log(` ✅ AGENTS.md written`);
- **[major]** `packages/create-app/src/generators/agents-md.ts:599` — console.log: console.log(`\n✨ AGENTS.md generated for ${manifest.displayName}.`);
- **[major]** `packages/create-app/src/generators/api-routes.ts:92` — console.log: console.log(`
- **[major]** `packages/create-app/src/generators/api-routes.ts:670` — console.log: console.log(`\n🚀 Generating API routes: ${name}`);
- **[major]** `packages/create-app/src/generators/api-routes.ts:671` — console.log: console.log(` Mode: ${mode}`);
- **[major]** `packages/create-app/src/generators/api-routes.ts:672` — console.log: console.log(` Methods: ${methods.join(', ')}`);
- **[major]** `packages/create-app/src/generators/api-routes.ts:673` — console.log: console.log(` Target: ${target}`);
- **[major]** `packages/create-app/src/generators/api-routes.ts:674` — console.log: if (fields) console.log(` Fields: ${fields}`);
- **[major]** `packages/create-app/src/generators/api-routes.ts:675` — console.log: if (dryRun) console.log(' ⚠️ DRY RUN — no files will be written\n');
- **[major]** `packages/create-app/src/generators/api-routes.ts:725` — console.log: console.log('📄 Generated files:\n');
- **[major]** `packages/create-app/src/generators/api-routes.ts:727` — console.log: console.log(`── ${file.path} ──────────────────────────────────────`);
- **[major]** `packages/create-app/src/generators/api-routes.ts:728` — console.log: console.log(file.content);
- **[major]** `packages/create-app/src/generators/api-routes.ts:730` — console.log: console.log(`\n✨ Dry run complete. Re-run without --dry-run to write files.`
- **[major]** `packages/create-app/src/generators/api-routes.ts:742` — console.log: console.log(` ⚠️ SKIP ${file.path} (already exists)`);
- **[major]** `packages/create-app/src/generators/api-routes.ts:749` — console.log: console.log(` ✅ ${file.path}`);
- **[major]** `packages/create-app/src/generators/api-routes.ts:752` — console.log: console.log(`\n✨ API routes generated for "${name}".`);
- **[major]** `packages/create-app/src/generators/api-routes.ts:754` — console.log: console.log(`\nPrerequisites (if not already present):`);
- **[major]** `packages/create-app/src/generators/api-routes.ts:755` — console.log: console.log(` - lib/auth-server.ts — getCurrentUser(authHeader) function`)
- **[major]** `packages/create-app/src/generators/api-routes.ts:756` — console.log: console.log(` - lib/api-handler.ts — withErrorHandler HOF`);
- **[major]** `packages/create-app/src/generators/api-routes.ts:757` — console.log: console.log(` - lib/datastore.ts — getCosmosContainer + PRODUCT_ID`);
- **[major]** `packages/create-app/src/generators/api-routes.ts:758` — console.log: console.log(` - zod installed — npm install zod`);
- **[major]** `packages/create-app/src/generators/api-routes.ts:760` — console.log: console.log(`\nPrerequisites (if not already present):`);
- **[major]** `packages/create-app/src/generators/api-routes.ts:761` — console.log: console.log(` - lib/api-helpers.ts — getAccessToken(req) function`);
- **[major]** `packages/create-app/src/generators/api-routes.ts:762` — console.log: console.log(` - lib/api-handler.ts — withErrorHandler HOF`);
- **[major]** `packages/create-app/src/generators/api-routes.ts:763` — console.log: console.log(` - NEXT_PUBLIC_BACKEND_URL env var (or defaults to localhost:
- **[major]** `packages/mcp-client/src/index.ts:51` — console.log: console.log(
- **[major]** `packages/mcp-client/src/index.ts:76` — console.log: console.log('[MCP] Successfully connected to MCP server');
- **[major]** `packages/mcp-client/src/index.ts:102` — console.log: console.log('[MCP] Disconnected from MCP server');
- **[major]** `packages/mcp-client/src/index.ts:155` — console.log: console.log(`[MCP] Tool ${toolName} executed successfully`);
- **[major]** `packages/mcp-client/src/index.ts:321` — console.log: console.log(`[MCP-AUDIT] Tool called: ${toolName}, Args: ${JSON.stringify(sa
- **[major]** `packages/mcp-client/src/index.ts:325` — console.log: console.log(`[MCP-AUDIT] Tool succeeded: ${toolName}`);
- **[major]** `services/extraction-service/src/modules/extract/product-rate-limit.ts:408` — console.log: console.log(`[product-rate-limit] Cleaned up ${cleaned} expired entries`
- **[major]** `services/extraction-service/src/modules/extract/sidecar-monitor.ts:295` — console.log: console.log(
- **[major]** `services/monitoring/health-check.ts:39` — console.log: console.log(`🩺 Monitoring dashboard running on http://localhost:${PORT}`);
- **[major]** `services/monitoring/health-check.ts:40` — console.log: console.log(` Checking ${DEFAULT_SERVICES.length} services every request`)
- **[major]** `services/monitoring/health-check.ts:46` — console.log: console.log(`\n${icon[report.overall]} Overall: ${report.overall.toUpperCase()
- **[major]** `services/monitoring/health-check.ts:50` — console.log: console.log(
- **[major]** `services/monitoring/health-check.ts:55` — console.log: console.log(`\nHealthy: ${report.summary.healthy}/${report.summary.total}`);
- **[major]** `packages/swift-diagnostics/Sources/ByteLystDiagnostics/Core/Configuration.swift:88` — Swift print(): print("[DEBUG] \(message)")
- **[major]** `packages/swift-diagnostics/Sources/ByteLystDiagnostics/Core/Configuration.swift:93` — Swift print(): print("[INFO] \(message)")
- **[major]** `packages/swift-diagnostics/Sources/ByteLystDiagnostics/Core/Configuration.swift:97` — Swift print(): print("[WARN] \(message)")
- **[major]** `packages/swift-diagnostics/Sources/ByteLystDiagnostics/Core/Configuration.swift:101` — Swift print(): print("[ERROR] \(message)")
- **[minor]** `dashboards/admin-web/src/app/(dashboard)/ops/ab-testing/page.tsx:135` — any type: return <Badge variant={config.variant as any}>{config.label}</Badge>;
- **[minor]** `packages/mcp-client/src/index.ts:16` — any type: inputSchema?: any;
- **[minor]** `packages/mcp-client/src/index.ts:20` — any type: data: any;
- **[minor]** `packages/mcp-client/src/index.ts:77` — any type: } catch (error: any) {
- **[minor]** `packages/mcp-client/src/index.ts:103` — any type: } catch (error: any) {
- **[minor]** `packages/mcp-client/src/index.ts:109` — any type: async callTool(toolName: string, args: any = {}): Promise<any> {
- **[minor]** `packages/mcp-client/src/index.ts:143` — any type: const response = result.content as any[];
- **[minor]** `packages/mcp-client/src/index.ts:160` — any type: } catch (error: any) {
- **[minor]** `packages/mcp-client/src/index.ts:190` — any type: return response.tools.map((tool: any) => ({
- **[minor]** `packages/mcp-client/src/index.ts:195` — any type: } catch (error: any) {
- **[minor]** `packages/mcp-client/src/index.ts:225` — any type: private getCacheKey(toolName: string, args: any): string {
- **[minor]** `packages/mcp-client/src/index.ts:229` — any type: private getFromCache(key: string): any | null {
- **[minor]** `packages/mcp-client/src/index.ts:244` — any type: private setCache(key: string, data: any): void {
- **[minor]** `packages/mcp-client/src/index.ts:269` — any type: private isNonRetriableError(error: any): boolean {
- **[minor]** `packages/mcp-client/src/index.ts:318` — any type: private auditLogToolCall(toolName: string, args: any): void {
- **[minor]** `packages/mcp-client/src/index.ts:332` — any type: private sanitizeArgs(args: any): any {
- **[minor]** `services/platform-service/src/server.ts:304` — any type: const auth = (request as any).auth;
- **[minor]** `services/platform-service/src/server.ts:335` — any type: } catch (error: any) {
- **[minor]** `services/extraction-service/src/modules/transcribe/routes.ts:5` — any type: * Product-agnostic: any product backend can call this endpoint.
- **[minor]** `dashboards/admin-web/src/app/(dashboard)/surveys/[id]/page.tsx:21` — Emoji in code: 📊
- **[minor]** `dashboards/admin-web/src/app/(dashboard)/surveys/[id]/page.tsx:22` — Emoji in code: 📝
- **[minor]** `dashboards/admin-web/src/app/(dashboard)/surveys/[id]/page.tsx:23` — Emoji in code: 📄
- **[minor]** `dashboards/tracker-web/src/app/roadmap/page.tsx:513` — Emoji in code: 💬
- **[minor]** `dashboards/tracker-web/src/app/roadmap/page.tsx:569` — Emoji in code: 💬
- **[minor]** `dashboards/tracker-web/src/app/dashboard/items/[id]/page.tsx:232` — Emoji in code: 🌐
- **[minor]** `scripts/encrypt-migrate.ts:507` — Emoji in code: 📦
- **[minor]** `scripts/encrypt-migrate.ts:510` — Emoji in code: 🔐
- **[minor]** `scripts/encrypt-migrate.ts:589` — Emoji in code: 🏢
- **[minor]** `packages/dashboard-shell/src/TopBar.tsx:80` — Emoji in code: 🔔
- **[minor]** `packages/celebrations/src/index.ts:7` — Emoji in code: 👏
- **[minor]** `packages/celebrations/src/index.ts:12` — Emoji in code: 🎉
- **[minor]** `packages/celebrations/src/index.ts:14` — Emoji in code: 🔥
- **[minor]** `packages/celebrations/src/index.ts:15` — Emoji in code: 🏆
- **[minor]** `packages/swift-platform-sdk/Tests/BLFieldEncryptTests.swift:32` — Emoji in code: 🌍
- **[minor]** `packages/create-app/src/scaffolder.ts:115` — Emoji in code: 📦
- **[minor]** `packages/create-app/src/scaffolder.ts:257` — Emoji in code: 🚀
- **[minor]** `packages/create-app/src/scaffolder.ts:275` — Emoji in code: 📄
- **[minor]** `packages/create-app/src/generators/agents-md.ts:528` — Emoji in code: 📝
- **[minor]** `packages/create-app/src/generators/agents-md.ts:549` — Emoji in code: 📄
- **[minor]** `packages/create-app/src/generators/agents-md.ts:552` — Emoji in code: 🔄
- **[minor]** `packages/create-app/src/generators/agents-md.ts:574` — Emoji in code: 🔄
- **[minor]** `packages/create-app/src/generators/api-routes.ts:670` — Emoji in code: 🚀
- **[minor]** `packages/create-app/src/generators/api-routes.ts:725` — Emoji in code: 📄
- **[minor]** `packages/time-references/src/client.ts:16` — Emoji in code: 🎵
- **[minor]** `packages/time-references/src/client.ts:23` — Emoji in code: 📺
- **[minor]** `packages/time-references/src/client.ts:24` — Emoji in code: 🚶
- **[minor]** `packages/time-references/src/client.ts:31` — Emoji in code: 🧘
- **[minor]** `packages/time-references/src/client.ts:32` — Emoji in code: 📺
- **[minor]** `packages/time-references/src/client.ts:39` — Emoji in code: 🎬
- **[minor]** `packages/time-references/src/client.ts:40` — Emoji in code: 🚴
- **[minor]** `packages/time-references/src/client.ts:47` — Emoji in code: 🚗
- **[minor]** `packages/time-references/src/client.ts:48` — Emoji in code: 📺
- **[minor]** `packages/time-references/src/client.ts:55` — Emoji in code: 💼
- **[minor]** `packages/time-references/src/client.ts:56` — Emoji in code: 😴
- **[minor]** `packages/time-references/src/client.ts:64` — Emoji in code: 🌅
- **[minor]** `packages/time-references/src/client.ts:74` — Emoji in code: 🧙
- **[minor]** `packages/time-references/src/client.ts:83` — Emoji in code: 🌍
- **[minor]** `packages/time-references/src/client.ts:84` — Emoji in code: 🥾
- **[minor]** `packages/time-references/src/client.ts:91` — Emoji in code: 🏆
- **[minor]** `packages/time-references/src/client.ts:99` — Emoji in code: 🌟
- **[minor]** `packages/time-references/src/index.ts:11` — Emoji in code: 🎬
- **[minor]** `packages/time-references/src/index.ts:17` — Emoji in code: 🌙
- **[minor]** `packages/time-references/src/index.ts:20` — Emoji in code: 🏔
- **[minor]** `packages/time-references/src/index.ts:23` — Emoji in code: 🌍
- **[minor]** `packages/time-references/src/index.ts:26` — Emoji in code: 🚂
- **[minor]** `packages/time-references/src/index.ts:31` — Emoji in code: 🏕
- **[minor]** `services/mcp-server/src/modules/dev/changelog-tools.ts:156` — Emoji in code: 📊
- **[minor]** `services/mcp-server/src/modules/dev/changelog-tools.ts:164` — Emoji in code: 🚨
- **[minor]** `services/mcp-server/src/modules/dev/changelog-tools.ts:183` — Emoji in code: 🐛
- **[minor]** `services/mcp-server/src/modules/dev/changelog-tools.ts:185` — Emoji in code: 📚
- **[minor]** `services/mcp-server/src/modules/dev/changelog-tools.ts:186` — Emoji in code: 🧪
- **[minor]** `services/mcp-server/src/modules/dev/changelog-tools.ts:187` — Emoji in code: 🔧
- **[minor]** `services/mcp-server/src/modules/dev/changelog-tools.ts:189` — Emoji in code: 🎨
- **[minor]** `services/mcp-server/src/modules/dev/changelog-tools.ts:190` — Emoji in code: 🔄
- **[minor]** `services/mcp-server/src/modules/dev/changelog-tools.ts:191` — Emoji in code: 📝
- **[minor]** `services/platform-service/scripts/gen-module.ts:515` — Emoji in code: 📝
- **[minor]** `services/platform-service/scripts/gen-module.ts:551` — Emoji in code: 📝
- **[minor]** `services/platform-service/scripts/gen-module.ts:608` — Emoji in code: 🚀
- **[minor]** `services/platform-service/scripts/gen-module.ts:636` — Emoji in code: 📄
- **[minor]** `services/platform-service/src/modules/predictive-analytics/campaign-engine.ts:451` — Emoji in code: 🚨
- **[minor]** `services/platform-service/src/modules/diagnostics/auto-triggers.ts:393` — Emoji in code: 🚨
- **[minor]** `services/platform-service/src/modules/diagnostics/auto-triggers.ts:427` — Emoji in code: 🚨
- **[minor]** `services/platform-service/src/modules/delivery/templates.ts:203` — Emoji in code: 🚨
- **[minor]** `services/platform-service/src/modules/delivery/templates.ts:205` — Emoji in code: 🚨
- **[minor]** `services/platform-service/src/modules/delivery/templates.ts:214` — Emoji in code: 🚨
- **[minor]** `services/monitoring/health-check.ts:39` — Emoji in code: 🩺
## Ecosystem totals by rule
| Rule | Total findings |
|------|----------------|
| `b4-console-log` | 76 |
| `b7-emoji-in-code` | 67 |
| `ts-any-type` | 19 |
| `b4-swift-print` | 4 |
**Grand total: 166 findings across 1 repos.**