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

20 KiB
Raw Blame History

Rule Violations Report — 2026-05-23

Generated by scripts/check-rule-violations.sh against canonical rules in 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};
  • [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 {
  • [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.