{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "scanner-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-77316f2381b381a1", "name": "Stray `console.log` in TS/JS \u2014 website/supabase/functions/retention-manager/index.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 website/supabase/functions/retention-manager/index.ts:45"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-711f12ce95cd358d", "name": "Stray `console.log` in TS/JS \u2014 website/supabase/functions/push-notify/index.ts:94", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 website/supabase/functions/push-notify/index.ts:94"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1ae087753f2afcea", "name": "`truncate` class without `title=` for hover reveal \u2014 website/src/components/layout/Sidebar.tsx:211", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 website/src/components/layout/Sidebar.tsx:211"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2127b4073cd8c5a5", "name": "`truncate` class without `title=` for hover reveal \u2014 website/src/components/layout/Topbar.tsx:51", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 website/src/components/layout/Topbar.tsx:51"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f4f4b655be71863d", "name": "Stray `console.log` in TS/JS \u2014 website/src/components/layout/PWARegistration.tsx:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 website/src/components/layout/PWARegistration.tsx:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f7291dfb5863ca3d", "name": "`truncate` class without `title=` for hover reveal \u2014 website/src/components/dashboard/MobileCarControl.tsx:58", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 website/src/components/dashboard/MobileCarControl.tsx:58"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-401f61cb34becb00", "name": "`truncate` class without `title=` for hover reveal \u2014 website/src/components/dashboard/VehicleList.tsx:42", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 website/src/components/dashboard/VehicleList.tsx:42"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cde01267be34c481", "name": "`truncate` class without `title=` for hover reveal \u2014 website/src/components/dashboard/VehicleCard.tsx:38", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 website/src/components/dashboard/VehicleCard.tsx:38"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8db5608cbb6bacd6", "name": "`truncate` class without `title=` for hover reveal \u2014 website/src/components/dashboard/VehicleModal.tsx:122", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 website/src/components/dashboard/VehicleModal.tsx:122"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-15bf1f30bf61f7e8", "name": "`truncate` class without `title=` for hover reveal \u2014 website/src/components/pwa/VehicleMapView.tsx:479", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 website/src/components/pwa/VehicleMapView.tsx:479"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3c7934e75e5a0083", "name": "Stray `console.log` in TS/JS \u2014 website/src/app/api/vehicle/link/route.ts:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 website/src/app/api/vehicle/link/route.ts:75"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-51c39cde2e003f7c", "name": "`truncate` class without `title=` for hover reveal \u2014 website/src/app/dashboard/page.tsx:197", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 website/src/app/dashboard/page.tsx:197"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-96fe4bb80862e8c6", "name": "\"active\" state uses light bg in a dark theme \u2014 website/src/app/dashboard/map/page.tsx:56", "shortDescription": {"text": "\"active\" state uses light bg in a dark theme \u2014 website/src/app/dashboard/map/page.tsx:56"}, "fullDescription": {"text": "A ternary like `active ? 'bg-white' : '...'` (or bg-gray-100/200) on a dark theme produces jarring white pills. Use a dark-emphasized active state instead \u2014 border + ring or slightly brighter dark bg. Example: `active ? 'bg-gray-800 border-gray-500 ring-1 ring-blue-500/30' : '\u2026'`.\n\nWhy: P-E in CHECKLIST.md \u2014 light bg in a dark theme is a class of regression.\nRule id: fq.active-light-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-265180d800778ece", "name": "TODO/FIXME marker in shipping code \u2014 supabase/functions/process_intent/index.ts:17", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 supabase/functions/process_intent/index.ts:17"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-758120959fb2eb7c", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/push-notify/index.ts:253", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/push-notify/index.ts:253"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-de45046bf1b3cb87", "name": "Stray `console.log` in TS/JS \u2014 src/__tests__/gpsFusion.test.ts:85", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/__tests__/gpsFusion.test.ts:85"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-16e57cb7aeaf4761", "name": "Stray `console.log` in TS/JS \u2014 src/platform/debug/index.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/platform/debug/index.ts:14"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e57337382cefe844", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/OfflineDataPanel.tsx:96", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/OfflineDataPanel.tsx:96"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e7b67422b474e7e1", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/OtaUpdateCard.tsx:50", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/OtaUpdateCard.tsx:50"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-00e1a00eebf58a9c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/SettingsPage.tsx:1202", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/SettingsPage.tsx:1202"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0fd892e654f83a52", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/CanDiagPanel.tsx:224", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/CanDiagPanel.tsx:224"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d212966b82610c5c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/SupportSnapshotCard.tsx:57", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/SupportSnapshotCard.tsx:57"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0c56de9054a15d7c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/security/SecuritySuite.tsx:190", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/security/SecuritySuite.tsx:190"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8781e366fb549653", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/layout/NewHomeLayout.tsx:413", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/layout/NewHomeLayout.tsx:413"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3634ca9855758e35", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/layout/RadarAlertHUD.tsx:181", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/layout/RadarAlertHUD.tsx:181"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-625311fb96c09eda", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/modals/PassengerQRModal.tsx:135", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/modals/PassengerQRModal.tsx:135"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dcfbcba695bd5ca1", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/notifications/NotificationCenter.tsx:128", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/notifications/NotificationCenter.tsx:128"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-99ecfaafa89fa279", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/media/MediaScreen.tsx:694", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/media/MediaScreen.tsx:694"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5ed4c2c96d108938", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/media/LocalVideoBrowser.tsx:116", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/media/LocalVideoBrowser.tsx:116"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9f11485abb402473", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/media/LocalMusicBrowser.tsx:172", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/media/LocalMusicBrowser.tsx:172"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5a748adf1e38ec8c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/common/InAppBrowser.tsx:50", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/common/InAppBrowser.tsx:50"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-33c674279674cca5", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/common/ErrorToast.tsx:75", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/common/ErrorToast.tsx:75"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-add820c29c36101a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/common/AddressNavCard.tsx:41", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/common/AddressNavCard.tsx:41"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c5ab44714b200461", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/common/MagicContextCard.tsx:319", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/common/MagicContextCard.tsx:319"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9b0f266c45b30a94", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/apps/AppGrid.tsx:89", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/apps/AppGrid.tsx:89"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-510db5398ad3927e", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/split/SplitScreen.tsx:302", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/split/SplitScreen.tsx:302"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b974f27a03cd53d7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/themes/ProLayout.tsx:241", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/themes/ProLayout.tsx:241"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-085165ef965fa59a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/themes/TeslaLayout.tsx:335", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/themes/TeslaLayout.tsx:335"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1dec35d5b153dc82", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/camera/RearViewCamera.tsx:104", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/camera/RearViewCamera.tsx:104"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-376ec0c0755448b6", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/obd/OBDConnectModal.tsx:601", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/obd/OBDConnectModal.tsx:601"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e07bee884f4c4f81", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/traffic/TrafficPanel.tsx:99", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/traffic/TrafficPanel.tsx:99"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9106f5ebb53d3914", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/debug/ReverseLogView.tsx:64", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/debug/ReverseLogView.tsx:64"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ede276b86460e00f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/debug/BlackBoxReplayView.tsx:86", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/debug/BlackBoxReplayView.tsx:86"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-53d6101a22740c37", "name": "Icon-only button without accessible name \u2014 src/components/debug/TestControlPanel.tsx:238", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/components/debug/TestControlPanel.tsx:238"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6165e2a138c49824", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/debug/CanRawView.tsx:76", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/debug/CanRawView.tsx:76"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-db7d7a6944bed90c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/debug/devInspector/HazardInspector.tsx:204", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/debug/devInspector/HazardInspector.tsx:204"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6a7241bb5eefa4ae", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/debug/devInspector/InspectorPanel.tsx:278", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/debug/devInspector/InspectorPanel.tsx:278"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c417609e63896a7c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/phone/PhoneScreen.tsx:53", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/phone/PhoneScreen.tsx:53"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-10f69888d8cfcbf3", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/map/NavigationHUD.tsx:589", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/map/NavigationHUD.tsx:589"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eb26a41750805d45", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/map/MapSearchBar.tsx:137", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/map/MapSearchBar.tsx:137"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c448242dc6721c9f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/map/FullMapView.tsx:1613", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/map/FullMapView.tsx:1613"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-60004a7698f8a734", "name": "`truncate` class without `title=` for hover reveal \u2014 src/admin/components/layout/Sidebar.tsx:86", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/admin/components/layout/Sidebar.tsx:86"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-445c8668912f1bd9", "name": "`truncate` class without `title=` for hover reveal \u2014 src/admin/components/shared/StatCard.tsx:18", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/admin/components/shared/StatCard.tsx:18"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8b967fcb84bc004c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/admin/components/vehicles/VoiceDiagPanel.tsx:119", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/admin/components/vehicles/VoiceDiagPanel.tsx:119"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eb385032bc129339", "name": "`truncate` class without `title=` for hover reveal \u2014 src/admin/pages/SuperAdmin.tsx:381", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/admin/pages/SuperAdmin.tsx:381"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-40c92ebcef1d64ab", "name": "`truncate` class without `title=` for hover reveal \u2014 src/admin/pages/superadmin/FeatureFlags.tsx:235", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/admin/pages/superadmin/FeatureFlags.tsx:235"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4271962a7be21741", "name": "`truncate` class without `title=` for hover reveal \u2014 src/admin/layouts/SuperAdminShell.tsx:173", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/admin/layouts/SuperAdminShell.tsx:173"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-45097e160eff5e88", "name": "Insecure pattern 'direct_innerhtml_assignment' in android/app/src/main/java/com/cockpitos/pro/CarLauncherPlugin.java:270", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in android/app/src/main/java/com/cockpitos/pro/CarLauncherPlugin.java:2705"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-32690f52e4492de7", "name": "Insecure pattern 'exec_used' in android/app/src/main/java/com/cockpitos/pro/can/HiworldAdapter.java:404", "shortDescription": {"text": "Insecure pattern 'exec_used' in android/app/src/main/java/com/cockpitos/pro/can/HiworldAdapter.java:404"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b4ae4d604bc0026f", "name": "Insecure pattern 'node_child_process' in scripts/fetch-vosk-model.mjs:33", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/fetch-vosk-model.mjs:33"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0c2eb6f13c6f3b7e", "name": "Insecure pattern 'direct_innerhtml_assignment' in website/src/components/pwa/VehicleMapView.tsx:69", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in website/src/components/pwa/VehicleMapView.tsx:69"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9c371ff15082a705", "name": "Insecure pattern 'dangerous_innerhtml' in playwright-report/index.html:58", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in playwright-report/index.html:58"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9029cfde635dd36d", "name": "Insecure pattern 'direct_innerhtml_assignment' in playwright-report/index.html:57", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in playwright-report/index.html:57"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dd97d4b521c486ce", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/process_intent/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/process_intent/index.ts:4"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aa135d807be4b999", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/push-notify/index.ts:114", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/push-notify/index.ts:114"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8b8a385a2605e41f", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/get-fuel-prices/index.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/get-fuel-prices/index.ts:4"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1d7e834080dbebed", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-015412010d856039", "name": "Very large file: android/app/src/main/java/com/cockpitos/pro/CarLauncherPlugin.java (4333 lines)", "shortDescription": {"text": "Very large file: android/app/src/main/java/com/cockpitos/pro/CarLauncherPlugin.java (4333 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8301a9657fb9d266", "name": "Very large file: src/platform/obdService.ts (1195 lines)", "shortDescription": {"text": "Very large file: src/platform/obdService.ts (1195 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-262fa13da6ab964f", "name": "Very large file: src/platform/voiceService.ts (1133 lines)", "shortDescription": {"text": "Very large file: src/platform/voiceService.ts (1133 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-95d921b688cfd156", "name": "Very large file: src/platform/vehicleDataLayer/VehicleCompute.worker.ts (1260 lines)", "shortDescription": {"text": "Very large file: src/platform/vehicleDataLayer/VehicleCompute.worker.ts (1260 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0e1497bf9d3f758c", "name": "Very large file: src/components/settings/SettingsPage.tsx (2050 lines)", "shortDescription": {"text": "Very large file: src/components/settings/SettingsPage.tsx (2050 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6f0165fa40de0170", "name": "Very large file: src/components/media/MediaScreen.tsx (1263 lines)", "shortDescription": {"text": "Very large file: src/components/media/MediaScreen.tsx (1263 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4a82c9786c9e850a", "name": "Very large file: src/components/map/NavigationHUD.tsx (1972 lines)", "shortDescription": {"text": "Very large file: src/components/map/NavigationHUD.tsx (1972 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-876c03cf87a6c55f", "name": "Very large file: src/components/map/FullMapView.tsx (1671 lines)", "shortDescription": {"text": "Very large file: src/components/map/FullMapView.tsx (1671 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea3b5e389d8c9c0f", "name": "Low test-to-source ratio", "shortDescription": {"text": "Low test-to-source ratio"}, "fullDescription": {"text": "111 tests / 561 src (ratio 0.20)."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eb850abe5d3c8bc3", "name": "Node manifest has dependencies but no lockfile: e2e/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: e2e/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 17 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 176 placeholder/mock markers across 60 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, lockfile. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, lockfile. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-367b692c65c08908", "name": "Commented-code block (6 lines) in vite.config.ts:10", "shortDescription": {"text": "Commented-code block (6 lines) in vite.config.ts:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8a7f6cee50c00b75", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-vosk-model.mjs:92", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-vosk-model.mjs:92"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b5f6ad744ef43a0a", "name": "Commented-code block (7 lines) in website/supabase/functions/push-notify/index.ts:43", "shortDescription": {"text": "Commented-code block (7 lines) in website/supabase/functions/push-notify/index.ts:43"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b1b71f185d795180", "name": "`fetch()` without try/.catch or AbortSignal \u2014 website/supabase/functions/push-notify/index.ts:120", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 website/supabase/functions/push-notify/index.ts:120"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8db31825059a0c69", "name": "`fetch()` without try/.catch or AbortSignal \u2014 website/src/components/layout/Sidebar.tsx:118", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 website/src/components/layout/Sidebar.tsx:118"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bbf9a68fa39ad60d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 website/src/components/layout/Topbar.tsx:32", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 website/src/components/layout/Topbar.tsx:32"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4a852aa41fef470d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 website/src/components/dashboard/MobileCarControl.tsx:270", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 website/src/components/dashboard/MobileCarControl.tsx:270"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b5d2683dab9b0d8d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 website/src/components/pwa/DiagnosticsPanel.tsx:212", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 website/src/components/pwa/DiagnosticsPanel.tsx:212"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bccc1462a4c0b518", "name": "Commented-code block (5 lines) in website/src/app/api/vehicle/update/route.ts:67", "shortDescription": {"text": "Commented-code block (5 lines) in website/src/app/api/vehicle/update/route.ts:67"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ba387834037339c2", "name": "Commented-code block (5 lines) in website/src/app/api/vehicles/route.ts:29", "shortDescription": {"text": "Commented-code block (5 lines) in website/src/app/api/vehicles/route.ts:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a6aa83dc4d438e7e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 website/src/lib/deviceLinkClient.ts:24", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 website/src/lib/deviceLinkClient.ts:24"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7495cf1963f0b766", "name": "`fetch()` without try/.catch or AbortSignal \u2014 website/src/lib/commandService.ts:132", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 website/src/lib/commandService.ts:132"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2533e1fca8ec7e71", "name": "Commented-code block (6 lines) in supabase/functions/push-notify/index.ts:127", "shortDescription": {"text": "Commented-code block (6 lines) in supabase/functions/push-notify/index.ts:127"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ed688e451b15ed0a", "name": "Legacy-named symbol `ecdh_v1` in src/__tests__/soak.remoteCommand.test.ts:89", "shortDescription": {"text": "Legacy-named symbol `ecdh_v1` in src/__tests__/soak.remoteCommand.test.ts:89"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-badef021d5a9338f", "name": "Legacy-named symbol `ecdh_v1` in src/__tests__/soak.cross-service.test.ts:114", "shortDescription": {"text": "Legacy-named symbol `ecdh_v1` in src/__tests__/soak.cross-service.test.ts:114"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-755f8ce192402064", "name": "Legacy-named symbol `ecdh_v1` in src/__tests__/patentValidation.test.ts:248", "shortDescription": {"text": "Legacy-named symbol `ecdh_v1` in src/__tests__/patentValidation.test.ts:248"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c0156b9489a79a0d", "name": "Legacy-named symbol `ecdh_v1` in src/__tests__/commandCrypto.test.ts:86", "shortDescription": {"text": "Legacy-named symbol `ecdh_v1` in src/__tests__/commandCrypto.test.ts:86"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3742312be114f257", "name": "Legacy-named symbol `confOld` in src/__tests__/hazardService.test.ts:292", "shortDescription": {"text": "Legacy-named symbol `confOld` in src/__tests__/hazardService.test.ts:292"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2d5cd19aed5c2fd0", "name": "Commented-code block (8 lines) in src/platform/youtubeService.ts:71", "shortDescription": {"text": "Commented-code block (8 lines) in src/platform/youtubeService.ts:71"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4c012d0b8cd9d765", "name": "Commented-code block (5 lines) in src/platform/commandParser.ts:211", "shortDescription": {"text": "Commented-code block (5 lines) in src/platform/commandParser.ts:211"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e4c6abec01b739dc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/mapSourceStore.ts:59", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/mapSourceStore.ts:59"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8d91d9dc68018947", "name": "Commented-code block (5 lines) in src/platform/mapSourceManager.ts:54", "shortDescription": {"text": "Commented-code block (5 lines) in src/platform/mapSourceManager.ts:54"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0b566ba50108e376", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/mapSourceManager.ts:336", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/mapSourceManager.ts:336"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c86df93a390c01b5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/mapService.ts:46", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/mapService.ts:46"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-40892a292880d312", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/weatherService.ts:229", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/weatherService.ts:229"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-06be8198923f8dda", "name": "Commented-code block (5 lines) in src/platform/appDiscovery.ts:103", "shortDescription": {"text": "Commented-code block (5 lines) in src/platform/appDiscovery.ts:103"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2a1d0891cb45b16b", "name": "Commented-code block (5 lines) in src/platform/musicCommandParser.ts:141", "shortDescription": {"text": "Commented-code block (5 lines) in src/platform/musicCommandParser.ts:141"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b11f1531b4115afb", "name": "Commented-code block (7 lines) in src/platform/thermalWatchdog.ts:479", "shortDescription": {"text": "Commented-code block (7 lines) in src/platform/thermalWatchdog.ts:479"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c53aeb6c7febb303", "name": "Commented-code block (7 lines) in src/platform/vehicleIdentityService.ts:363", "shortDescription": {"text": "Commented-code block (7 lines) in src/platform/vehicleIdentityService.ts:363"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5127eca136234373", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/vehicleIdentityService.ts:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/vehicleIdentityService.ts:58"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dd05ddc22571d4ad", "name": "Commented-code block (5 lines) in src/platform/mediaService.ts:699", "shortDescription": {"text": "Commented-code block (5 lines) in src/platform/mediaService.ts:699"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-56f5a652b7eaa427", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/speedLimitService.ts:97", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/speedLimitService.ts:97"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b509434ed68780c1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/geocodingService.ts:202", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/geocodingService.ts:202"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eb0018ca0df16a45", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/aiVoiceService.ts:203", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/aiVoiceService.ts:203"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-29a860f3e1b5cf61", "name": "Commented-code block (6 lines) in src/platform/obdService.ts:70", "shortDescription": {"text": "Commented-code block (6 lines) in src/platform/obdService.ts:70"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-594000e36c989207", "name": "Commented-code block (5 lines) in src/platform/canSnapshotService.ts:161", "shortDescription": {"text": "Commented-code block (5 lines) in src/platform/canSnapshotService.ts:161"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e7110441ea2aa0b2", "name": "Legacy-named symbol `ecdh_v1` in src/platform/remoteCommandService.ts:288", "shortDescription": {"text": "Legacy-named symbol `ecdh_v1` in src/platform/remoteCommandService.ts:288"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9bcce28ee3dd3758", "name": "Commented-code block (5 lines) in src/platform/remoteCommandService.ts:286", "shortDescription": {"text": "Commented-code block (5 lines) in src/platform/remoteCommandService.ts:286"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cd81d980fb4c1aa1", "name": "Legacy-named symbol `matchesLegacy` in src/platform/wakeWordService.ts:75", "shortDescription": {"text": "Legacy-named symbol `matchesLegacy` in src/platform/wakeWordService.ts:75"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d6878e3647ec4668", "name": "Commented-code block (6 lines) in src/platform/nativePlugin.ts:434", "shortDescription": {"text": "Commented-code block (6 lines) in src/platform/nativePlugin.ts:434"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-638295ebe4d7b87d", "name": "Legacy-named symbol `rls_sent_watermark_v1` in src/platform/remoteLogService.ts:45", "shortDescription": {"text": "Legacy-named symbol `rls_sent_watermark_v1` in src/platform/remoteLogService.ts:45"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c0e5a9f14f76a6da", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/offlineDataService.ts:228", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/offlineDataService.ts:228"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d7e20f4ed18eef79", "name": "Legacy-named symbol `ecdh_v1` in src/platform/commandCrypto.ts:51", "shortDescription": {"text": "Legacy-named symbol `ecdh_v1` in src/platform/commandCrypto.ts:51"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5ac97150946f3dfb", "name": "Commented-code block (7 lines) in src/platform/routingService.ts:862", "shortDescription": {"text": "Commented-code block (7 lines) in src/platform/routingService.ts:862"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7afd722b527b37a0", "name": "Commented-code block (5 lines) in src/platform/voiceService.ts:577", "shortDescription": {"text": "Commented-code block (5 lines) in src/platform/voiceService.ts:577"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-90948c156fc117fe", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/trafficService.ts:69", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/trafficService.ts:69"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dc416934ad54131e", "name": "Commented-code block (8 lines) in src/platform/navigationService.ts:493", "shortDescription": {"text": "Commented-code block (8 lines) in src/platform/navigationService.ts:493"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a23003eaa6a694ca", "name": "Commented-code block (5 lines) in src/platform/gpsService.ts:87", "shortDescription": {"text": "Commented-code block (5 lines) in src/platform/gpsService.ts:87"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-431554e78f423f59", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/mapStyleBuilders.ts:461", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/mapStyleBuilders.ts:461"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d4ab970cd4c73aff", "name": "Commented-code block (5 lines) in src/platform/smartRecommendationEngine.ts:30", "shortDescription": {"text": "Commented-code block (5 lines) in src/platform/smartRecommendationEngine.ts:30"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-26bf9eedd9950716", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/spotify/spotifyService.ts:39", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/spotify/spotifyService.ts:39"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e6e6aa531b9b6f73", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/spotify/spotifyAuth.ts:114", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/spotify/spotifyAuth.ts:114"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fe6ad0b0b7ff535a", "name": "Commented-code block (6 lines) in src/platform/vehicleDataLayer/VehicleSignalResolver.ts:208", "shortDescription": {"text": "Commented-code block (6 lines) in src/platform/vehicleDataLayer/VehicleSignalResolver.ts:208"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3241dbc51fbe542c", "name": "Commented-code block (6 lines) in src/platform/vehicleDataLayer/VehicleCompute.worker.ts:181", "shortDescription": {"text": "Commented-code block (6 lines) in src/platform/vehicleDataLayer/VehicleCompute.worker.ts:181"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7044993786e12881", "name": "Commented-code block (5 lines) in src/platform/companion/companionChatProvider.ts:565", "shortDescription": {"text": "Commented-code block (5 lines) in src/platform/companion/companionChatProvider.ts:565"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-04feb0b9d41c1e2f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/companion/companionChatProvider.ts:269", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/companion/companionChatProvider.ts:269"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-00e19c92da237711", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/ai/semanticAiService.ts:152", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/ai/semanticAiService.ts:152"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dd75b1358adc676e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/media/jamendoProvider.ts:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/media/jamendoProvider.ts:33"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5087ffc655c103c2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/media/audiusProvider.ts:18", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/media/audiusProvider.ts:18"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0e70df21b03559d7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/media/archiveProvider.ts:35", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/media/archiveProvider.ts:35"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6c76ada557c602dd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/media/radioBrowserProvider.ts:25", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/media/radioBrowserProvider.ts:25"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6094931adee28895", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/media/ytDownloadService.ts:8", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/media/ytDownloadService.ts:8"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c6a8e0a9ac7f08a4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/media/pipedProvider.ts:134", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/media/pipedProvider.ts:134"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9ae66e29185a6f15", "name": "Commented-code block (7 lines) in src/platform/system/SystemHealthMonitor.ts:33", "shortDescription": {"text": "Commented-code block (7 lines) in src/platform/system/SystemHealthMonitor.ts:33"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-772747c2e3251912", "name": "Commented-code block (5 lines) in src/platform/system/SystemBoot.ts:554", "shortDescription": {"text": "Commented-code block (5 lines) in src/platform/system/SystemBoot.ts:554"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cc35238a7bcbf4f9", "name": "Commented-code block (5 lines) in src/platform/map/_mapState.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/platform/map/_mapState.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-14d6eb17f5353508", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/diagnostic/fuelAdvisorService.ts:193", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/diagnostic/fuelAdvisorService.ts:193"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-846bfd85da944a1d", "name": "Commented-code block (5 lines) in src/components/layout/MainLayout.tsx:154", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/layout/MainLayout.tsx:154"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f6a4b6366cfd9f60", "name": "Commented-code block (5 lines) in src/components/media/MediaScreen.tsx:567", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/media/MediaScreen.tsx:567"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4b791fbc502f76ac", "name": "Commented-code block (5 lines) in src/components/themes/HorizonLayout.tsx:320", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/themes/HorizonLayout.tsx:320"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-286058a65fd16ca6", "name": "Commented-code block (5 lines) in src/components/obd/OBDConnectModal.tsx:27", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/obd/OBDConnectModal.tsx:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f602c4b1cb83393b", "name": "Commented-code block (9 lines) in src/components/map/NavigationHUD.tsx:1763", "shortDescription": {"text": "Commented-code block (9 lines) in src/components/map/NavigationHUD.tsx:1763"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1138b34087524d31", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/map/NavigationHUD.tsx:1411", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/map/NavigationHUD.tsx:1411"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2a20d91b9966f6fa", "name": "Commented-code block (5 lines) in src/components/map/FullMapView.tsx:153", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/map/FullMapView.tsx:153"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b265d6ad0aed3fd6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/map/FullMapView.tsx:1081", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/map/FullMapView.tsx:1081"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-48826f8fed08f4a3", "name": "Commented-code block (6 lines) in src/admin/services/superadmin.service.ts:801", "shortDescription": {"text": "Commented-code block (6 lines) in src/admin/services/superadmin.service.ts:801"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1a44f4666ee2fdbf", "name": "Commented-code block (5 lines) in src/hooks/useLayoutServices.ts:93", "shortDescription": {"text": "Commented-code block (5 lines) in src/hooks/useLayoutServices.ts:93"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-22cb51b3afa1b048", "name": "Commented-code block (5 lines) in src/core/runtime/AdaptiveRuntimeManager.ts:167", "shortDescription": {"text": "Commented-code block (5 lines) in src/core/runtime/AdaptiveRuntimeManager.ts:167"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f824909d6490822a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/core/storage/CacheLRUManager.ts:140", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/core/storage/CacheLRUManager.ts:140"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e890a000d7495133", "name": "Commented-code block (5 lines) in src/store/useCarTheme.ts:112", "shortDescription": {"text": "Commented-code block (5 lines) in src/store/useCarTheme.ts:112"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6bebc79b471a8148", "name": "Frontend route `sa` has no Link/navigate to it \u2014 src/admin/App.tsx", "shortDescription": {"text": "Frontend route `sa` has no Link/navigate to it \u2014 src/admin/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f69927bad6859225", "name": "Frontend route `users` has no Link/navigate to it \u2014 src/admin/App.tsx", "shortDescription": {"text": "Frontend route `users` has no Link/navigate to it \u2014 src/admin/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-df4346487ee8306d", "name": "Frontend route `vehicles` has no Link/navigate to it \u2014 src/admin/App.tsx", "shortDescription": {"text": "Frontend route `vehicles` has no Link/navigate to it \u2014 src/admin/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-322010a0b857fe94", "name": "Frontend route `settings` has no Link/navigate to it \u2014 src/admin/App.tsx", "shortDescription": {"text": "Frontend route `settings` has no Link/navigate to it \u2014 src/admin/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f86a68df4f6f5359", "name": "Frontend route `superadmin` has no Link/navigate to it \u2014 src/admin/App.tsx", "shortDescription": {"text": "Frontend route `superadmin` has no Link/navigate to it \u2014 src/admin/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-69011199637dc7d4", "name": "Frontend route `chaos` has no Link/navigate to it \u2014 src/admin/App.tsx", "shortDescription": {"text": "Frontend route `chaos` has no Link/navigate to it \u2014 src/admin/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/19218"}, "properties": {"repository": "selimmujdeci/Car-launcher-pro", "repoUrl": "https://github.com/selimmujdeci/Car-launcher-pro", "branch": "main"}, "results": [{"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-77316f2381b381a1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 website/supabase/functions/retention-manager/index.ts:45"}, "properties": {"repobilityId": "5b65266ac1ac85d6", "scanner": "scanner-primary", "fingerprint": "77316f2381b381a1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-711f12ce95cd358d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 website/supabase/functions/push-notify/index.ts:94"}, "properties": {"repobilityId": "4bc83121162c2d17", "scanner": "scanner-primary", "fingerprint": "711f12ce95cd358d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1ae087753f2afcea", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 website/src/components/layout/Sidebar.tsx:211"}, "properties": {"repobilityId": "be5caad1d454a8b7", "scanner": "scanner-primary", "fingerprint": "1ae087753f2afcea", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2127b4073cd8c5a5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 website/src/components/layout/Topbar.tsx:51"}, "properties": {"repobilityId": "d33648432233c1b8", "scanner": "scanner-primary", "fingerprint": "2127b4073cd8c5a5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f4f4b655be71863d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 website/src/components/layout/PWARegistration.tsx:11"}, "properties": {"repobilityId": "a676b92a12304db1", "scanner": "scanner-primary", "fingerprint": "f4f4b655be71863d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f7291dfb5863ca3d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 website/src/components/dashboard/MobileCarControl.tsx:58"}, "properties": {"repobilityId": "1c658871bdb73b1a", "scanner": "scanner-primary", "fingerprint": "f7291dfb5863ca3d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-401f61cb34becb00", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 website/src/components/dashboard/VehicleList.tsx:42"}, "properties": {"repobilityId": "6012941fec43e199", "scanner": "scanner-primary", "fingerprint": "401f61cb34becb00", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cde01267be34c481", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 website/src/components/dashboard/VehicleCard.tsx:38"}, "properties": {"repobilityId": "b2beabbeddb699eb", "scanner": "scanner-primary", "fingerprint": "cde01267be34c481", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8db5608cbb6bacd6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 website/src/components/dashboard/VehicleModal.tsx:122"}, "properties": {"repobilityId": "5136f38415fb3b51", "scanner": "scanner-primary", "fingerprint": "8db5608cbb6bacd6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-15bf1f30bf61f7e8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 website/src/components/pwa/VehicleMapView.tsx:479"}, "properties": {"repobilityId": "581415c2b5ba4229", "scanner": "scanner-primary", "fingerprint": "15bf1f30bf61f7e8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3c7934e75e5a0083", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 website/src/app/api/vehicle/link/route.ts:75"}, "properties": {"repobilityId": "735eab95402d3ea3", "scanner": "scanner-primary", "fingerprint": "3c7934e75e5a0083", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-51c39cde2e003f7c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 website/src/app/dashboard/page.tsx:197"}, "properties": {"repobilityId": "f150c866d2e24b05", "scanner": "scanner-primary", "fingerprint": "51c39cde2e003f7c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-96fe4bb80862e8c6", "level": "note", "message": {"text": "\"active\" state uses light bg in a dark theme \u2014 website/src/app/dashboard/map/page.tsx:56"}, "properties": {"repobilityId": "f31228f0c1ea0d14", "scanner": "scanner-primary", "fingerprint": "96fe4bb80862e8c6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.active-light-bg"]}}, {"ruleId": "scanner-265180d800778ece", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 supabase/functions/process_intent/index.ts:17"}, "properties": {"repobilityId": "16e058197d759b97", "scanner": "scanner-primary", "fingerprint": "265180d800778ece", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-758120959fb2eb7c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/push-notify/index.ts:253"}, "properties": {"repobilityId": "0abd9f9befed1159", "scanner": "scanner-primary", "fingerprint": "758120959fb2eb7c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de45046bf1b3cb87", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/__tests__/gpsFusion.test.ts:85"}, "properties": {"repobilityId": "3afe39d3a4922f50", "scanner": "scanner-primary", "fingerprint": "de45046bf1b3cb87", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-16e57cb7aeaf4761", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/platform/debug/index.ts:14"}, "properties": {"repobilityId": "7576a0536bb068d6", "scanner": "scanner-primary", "fingerprint": "16e57cb7aeaf4761", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e57337382cefe844", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/OfflineDataPanel.tsx:96"}, "properties": {"repobilityId": "e9127f9878a8fd1d", "scanner": "scanner-primary", "fingerprint": "e57337382cefe844", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e7b67422b474e7e1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/OtaUpdateCard.tsx:50"}, "properties": {"repobilityId": "4dfb7a504f60d79f", "scanner": "scanner-primary", "fingerprint": "e7b67422b474e7e1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-00e1a00eebf58a9c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/SettingsPage.tsx:1202"}, "properties": {"repobilityId": "16aaf1a277334cb4", "scanner": "scanner-primary", "fingerprint": "00e1a00eebf58a9c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0fd892e654f83a52", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/CanDiagPanel.tsx:224"}, "properties": {"repobilityId": "13486a77eab616cf", "scanner": "scanner-primary", "fingerprint": "0fd892e654f83a52", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d212966b82610c5c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/settings/SupportSnapshotCard.tsx:57"}, "properties": {"repobilityId": "bd15436608f2e65a", "scanner": "scanner-primary", "fingerprint": "d212966b82610c5c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0c56de9054a15d7c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/security/SecuritySuite.tsx:190"}, "properties": {"repobilityId": "308bd700947748ea", "scanner": "scanner-primary", "fingerprint": "0c56de9054a15d7c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8781e366fb549653", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/layout/NewHomeLayout.tsx:413"}, "properties": {"repobilityId": "907f83eba8152fee", "scanner": "scanner-primary", "fingerprint": "8781e366fb549653", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3634ca9855758e35", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/layout/RadarAlertHUD.tsx:181"}, "properties": {"repobilityId": "546e3e1cfd81f12f", "scanner": "scanner-primary", "fingerprint": "3634ca9855758e35", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-625311fb96c09eda", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/modals/PassengerQRModal.tsx:135"}, "properties": {"repobilityId": "80059548f7b6019f", "scanner": "scanner-primary", "fingerprint": "625311fb96c09eda", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dcfbcba695bd5ca1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/notifications/NotificationCenter.tsx:128"}, "properties": {"repobilityId": "98c7869d62ffe449", "scanner": "scanner-primary", "fingerprint": "dcfbcba695bd5ca1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-99ecfaafa89fa279", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/media/MediaScreen.tsx:694"}, "properties": {"repobilityId": "73d324b5c1ac338e", "scanner": "scanner-primary", "fingerprint": "99ecfaafa89fa279", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5ed4c2c96d108938", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/media/LocalVideoBrowser.tsx:116"}, "properties": {"repobilityId": "844f6044d569899d", "scanner": "scanner-primary", "fingerprint": "5ed4c2c96d108938", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9f11485abb402473", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/media/LocalMusicBrowser.tsx:172"}, "properties": {"repobilityId": "61be122d085dedf9", "scanner": "scanner-primary", "fingerprint": "9f11485abb402473", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5a748adf1e38ec8c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/common/InAppBrowser.tsx:50"}, "properties": {"repobilityId": "bd34943bd2f1d285", "scanner": "scanner-primary", "fingerprint": "5a748adf1e38ec8c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-33c674279674cca5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/common/ErrorToast.tsx:75"}, "properties": {"repobilityId": "dc48894bb10d0e64", "scanner": "scanner-primary", "fingerprint": "33c674279674cca5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-add820c29c36101a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/common/AddressNavCard.tsx:41"}, "properties": {"repobilityId": "2ea0f168ce28417a", "scanner": "scanner-primary", "fingerprint": "add820c29c36101a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c5ab44714b200461", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/common/MagicContextCard.tsx:319"}, "properties": {"repobilityId": "169ef7bf4b597ef7", "scanner": "scanner-primary", "fingerprint": "c5ab44714b200461", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9b0f266c45b30a94", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/apps/AppGrid.tsx:89"}, "properties": {"repobilityId": "7e73c4327316b5b7", "scanner": "scanner-primary", "fingerprint": "9b0f266c45b30a94", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-510db5398ad3927e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/split/SplitScreen.tsx:302"}, "properties": {"repobilityId": "cb4a0cc88a44853f", "scanner": "scanner-primary", "fingerprint": "510db5398ad3927e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b974f27a03cd53d7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/themes/ProLayout.tsx:241"}, "properties": {"repobilityId": "609f86bb25ab26ab", "scanner": "scanner-primary", "fingerprint": "b974f27a03cd53d7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-085165ef965fa59a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/themes/TeslaLayout.tsx:335"}, "properties": {"repobilityId": "27d5f9a0f2fb6b4c", "scanner": "scanner-primary", "fingerprint": "085165ef965fa59a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1dec35d5b153dc82", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/camera/RearViewCamera.tsx:104"}, "properties": {"repobilityId": "295c4c8abd4ca894", "scanner": "scanner-primary", "fingerprint": "1dec35d5b153dc82", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-376ec0c0755448b6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/obd/OBDConnectModal.tsx:601"}, "properties": {"repobilityId": "fb92c7bca1d9e395", "scanner": "scanner-primary", "fingerprint": "376ec0c0755448b6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e07bee884f4c4f81", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/traffic/TrafficPanel.tsx:99"}, "properties": {"repobilityId": "23e0894599f9b58d", "scanner": "scanner-primary", "fingerprint": "e07bee884f4c4f81", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9106f5ebb53d3914", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/debug/ReverseLogView.tsx:64"}, "properties": {"repobilityId": "f1546759548bc402", "scanner": "scanner-primary", "fingerprint": "9106f5ebb53d3914", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ede276b86460e00f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/debug/BlackBoxReplayView.tsx:86"}, "properties": {"repobilityId": "39a8053a2c77fabf", "scanner": "scanner-primary", "fingerprint": "ede276b86460e00f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-53d6101a22740c37", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/components/debug/TestControlPanel.tsx:238"}, "properties": {"repobilityId": "f8ae4a693afca011", "scanner": "scanner-primary", "fingerprint": "53d6101a22740c37", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-6165e2a138c49824", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/debug/CanRawView.tsx:76"}, "properties": {"repobilityId": "9a726b022bce5b73", "scanner": "scanner-primary", "fingerprint": "6165e2a138c49824", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-db7d7a6944bed90c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/debug/devInspector/HazardInspector.tsx:204"}, "properties": {"repobilityId": "c0be8e116e91bbcb", "scanner": "scanner-primary", "fingerprint": "db7d7a6944bed90c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6a7241bb5eefa4ae", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/debug/devInspector/InspectorPanel.tsx:278"}, "properties": {"repobilityId": "bb4a7b38e2ca7654", "scanner": "scanner-primary", "fingerprint": "6a7241bb5eefa4ae", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c417609e63896a7c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/phone/PhoneScreen.tsx:53"}, "properties": {"repobilityId": "c44a78cba67b8edd", "scanner": "scanner-primary", "fingerprint": "c417609e63896a7c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-10f69888d8cfcbf3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/map/NavigationHUD.tsx:589"}, "properties": {"repobilityId": "4aca061838cb853b", "scanner": "scanner-primary", "fingerprint": "10f69888d8cfcbf3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-eb26a41750805d45", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/map/MapSearchBar.tsx:137"}, "properties": {"repobilityId": "7a36e4135970417c", "scanner": "scanner-primary", "fingerprint": "eb26a41750805d45", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c448242dc6721c9f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/map/FullMapView.tsx:1613"}, "properties": {"repobilityId": "a3050051e7dea8e6", "scanner": "scanner-primary", "fingerprint": "c448242dc6721c9f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-60004a7698f8a734", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/admin/components/layout/Sidebar.tsx:86"}, "properties": {"repobilityId": "05f2e332881f0311", "scanner": "scanner-primary", "fingerprint": "60004a7698f8a734", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-445c8668912f1bd9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/admin/components/shared/StatCard.tsx:18"}, "properties": {"repobilityId": "51faea35e8886b61", "scanner": "scanner-primary", "fingerprint": "445c8668912f1bd9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8b967fcb84bc004c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/admin/components/vehicles/VoiceDiagPanel.tsx:119"}, "properties": {"repobilityId": "8005dc0f86666b4b", "scanner": "scanner-primary", "fingerprint": "8b967fcb84bc004c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-eb385032bc129339", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/admin/pages/SuperAdmin.tsx:381"}, "properties": {"repobilityId": "13f9fa650841711b", "scanner": "scanner-primary", "fingerprint": "eb385032bc129339", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-40c92ebcef1d64ab", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/admin/pages/superadmin/FeatureFlags.tsx:235"}, "properties": {"repobilityId": "9331aca6c95db630", "scanner": "scanner-primary", "fingerprint": "40c92ebcef1d64ab", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4271962a7be21741", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/admin/layouts/SuperAdminShell.tsx:173"}, "properties": {"repobilityId": "f57dae0f28f950e1", "scanner": "scanner-primary", "fingerprint": "4271962a7be21741", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-45097e160eff5e88", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in android/app/src/main/java/com/cockpitos/pro/CarLauncherPlugin.java:2705"}, "properties": {"repobilityId": "e9b70f919207c203", "scanner": "scanner-primary", "fingerprint": "45097e160eff5e88", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "android/app/src/main/java/com/cockpitos/pro/CarLauncherPlugin.java"}, "region": {"startLine": 2705}}}]}, {"ruleId": "scanner-32690f52e4492de7", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in android/app/src/main/java/com/cockpitos/pro/can/HiworldAdapter.java:404"}, "properties": {"repobilityId": "58194965b84be142", "scanner": "scanner-primary", "fingerprint": "32690f52e4492de7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "android/app/src/main/java/com/cockpitos/pro/can/HiworldAdapter.java"}, "region": {"startLine": 404}}}]}, {"ruleId": "scanner-b4ae4d604bc0026f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/fetch-vosk-model.mjs:33"}, "properties": {"repobilityId": "144068d7591ca8ef", "scanner": "scanner-primary", "fingerprint": "b4ae4d604bc0026f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/fetch-vosk-model.mjs"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-0c2eb6f13c6f3b7e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in website/src/components/pwa/VehicleMapView.tsx:69"}, "properties": {"repobilityId": "cbc319726fb793dc", "scanner": "scanner-primary", "fingerprint": "0c2eb6f13c6f3b7e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "website/src/components/pwa/VehicleMapView.tsx"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-9c371ff15082a705", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in playwright-report/index.html:58"}, "properties": {"repobilityId": "5c1a4d4daf334529", "scanner": "scanner-primary", "fingerprint": "9c371ff15082a705", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "playwright-report/index.html"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-9029cfde635dd36d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in playwright-report/index.html:57"}, "properties": {"repobilityId": "72bf5b0e0e2b9155", "scanner": "scanner-primary", "fingerprint": "9029cfde635dd36d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "playwright-report/index.html"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-dd97d4b521c486ce", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/process_intent/index.ts:4"}, "properties": {"repobilityId": "e509ab529554d7c7", "scanner": "scanner-primary", "fingerprint": "dd97d4b521c486ce", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/process_intent/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-aa135d807be4b999", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/push-notify/index.ts:114"}, "properties": {"repobilityId": "e4cba928a3c90646", "scanner": "scanner-primary", "fingerprint": "aa135d807be4b999", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/push-notify/index.ts"}, "region": {"startLine": 114}}}]}, {"ruleId": "scanner-8b8a385a2605e41f", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/get-fuel-prices/index.ts:4"}, "properties": {"repobilityId": "89017998c7054e90", "scanner": "scanner-primary", "fingerprint": "8b8a385a2605e41f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/get-fuel-prices/index.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-1d7e834080dbebed", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "53ca989cff78d978", "scanner": "scanner-primary", "fingerprint": "1d7e834080dbebed", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/main.yml"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-1d7e834080dbebed", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "929bffda342e03e6", "scanner": "scanner-primary", "fingerprint": "1d7e834080dbebed", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/main.yml"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-1d7e834080dbebed", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "53ca989cff78d978", "scanner": "scanner-primary", "fingerprint": "1d7e834080dbebed", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/main.yml"}, "region": {"startLine": 80}}}]}, {"ruleId": "scanner-1d7e834080dbebed", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "929bffda342e03e6", "scanner": "scanner-primary", "fingerprint": "1d7e834080dbebed", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/main.yml"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-1d7e834080dbebed", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "00a00bd6ef45b732", "scanner": "scanner-primary", "fingerprint": "1d7e834080dbebed", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/main.yml"}, "region": {"startLine": 125}}}]}, {"ruleId": "scanner-1d7e834080dbebed", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7e36eb311541c5db", "scanner": "scanner-primary", "fingerprint": "1d7e834080dbebed", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/main.yml"}, "region": {"startLine": 135}}}]}, {"ruleId": "scanner-1d7e834080dbebed", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "53ca989cff78d978", "scanner": "scanner-primary", "fingerprint": "1d7e834080dbebed", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/main.yml"}, "region": {"startLine": 153}}}]}, {"ruleId": "scanner-1d7e834080dbebed", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "929bffda342e03e6", "scanner": "scanner-primary", "fingerprint": "1d7e834080dbebed", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/main.yml"}, "region": {"startLine": 156}}}]}, {"ruleId": "scanner-1d7e834080dbebed", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d38d18e4014babd9", "scanner": "scanner-primary", "fingerprint": "1d7e834080dbebed", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/main.yml"}, "region": {"startLine": 166}}}]}, {"ruleId": "scanner-1d7e834080dbebed", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7e36eb311541c5db", "scanner": "scanner-primary", "fingerprint": "1d7e834080dbebed", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/main.yml"}, "region": {"startLine": 189}}}]}, {"ruleId": "scanner-015412010d856039", "level": "note", "message": {"text": "Very large file: android/app/src/main/java/com/cockpitos/pro/CarLauncherPlugin.java (4333 lines)"}, "properties": {"repobilityId": "a2b97e0a36990a81", "scanner": "scanner-primary", "fingerprint": "015412010d856039", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8301a9657fb9d266", "level": "note", "message": {"text": "Very large file: src/platform/obdService.ts (1195 lines)"}, "properties": {"repobilityId": "eae8d696e03e9d48", "scanner": "scanner-primary", "fingerprint": "8301a9657fb9d266", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-262fa13da6ab964f", "level": "note", "message": {"text": "Very large file: src/platform/voiceService.ts (1133 lines)"}, "properties": {"repobilityId": "c7242ec8985d2f6f", "scanner": "scanner-primary", "fingerprint": "262fa13da6ab964f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-95d921b688cfd156", "level": "note", "message": {"text": "Very large file: src/platform/vehicleDataLayer/VehicleCompute.worker.ts (1260 lines)"}, "properties": {"repobilityId": "07cce4dc7a5e1c6a", "scanner": "scanner-primary", "fingerprint": "95d921b688cfd156", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0e1497bf9d3f758c", "level": "note", "message": {"text": "Very large file: src/components/settings/SettingsPage.tsx (2050 lines)"}, "properties": {"repobilityId": "30d36a8fa597f898", "scanner": "scanner-primary", "fingerprint": "0e1497bf9d3f758c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6f0165fa40de0170", "level": "note", "message": {"text": "Very large file: src/components/media/MediaScreen.tsx (1263 lines)"}, "properties": {"repobilityId": "4016eaba899b511c", "scanner": "scanner-primary", "fingerprint": "6f0165fa40de0170", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4a82c9786c9e850a", "level": "note", "message": {"text": "Very large file: src/components/map/NavigationHUD.tsx (1972 lines)"}, "properties": {"repobilityId": "4eccb7ec6ff1ea51", "scanner": "scanner-primary", "fingerprint": "4a82c9786c9e850a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-876c03cf87a6c55f", "level": "note", "message": {"text": "Very large file: src/components/map/FullMapView.tsx (1671 lines)"}, "properties": {"repobilityId": "6af357da73196bba", "scanner": "scanner-primary", "fingerprint": "876c03cf87a6c55f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea3b5e389d8c9c0f", "level": "note", "message": {"text": "Low test-to-source ratio"}, "properties": {"repobilityId": "ef7b2552cc00a375", "scanner": "scanner-primary", "fingerprint": "ea3b5e389d8c9c0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["tests"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "dd0fdc875d7d10e3", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-eb850abe5d3c8bc3", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: e2e/package.json"}, "properties": {"repobilityId": "4c9201e2b263799e", "scanner": "scanner-primary", "fingerprint": "eb850abe5d3c8bc3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "e2e/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "5c5cd67cbc07e997", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "78aefbf0ee157231", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "6b1a80abf4a8195d", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "69a657fdebfb66d1", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "6ce0a5e05896d5ce", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "6b4a4dccdf97e2d5", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "8e897b9e16078a55", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "64345fe8d1741fb5", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-367b692c65c08908", "level": "none", "message": {"text": "Commented-code block (6 lines) in vite.config.ts:10"}, "properties": {"repobilityId": "0cc0ed6ebdd9e050", "scanner": "scanner-primary", "fingerprint": "367b692c65c08908", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8a7f6cee50c00b75", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-vosk-model.mjs:92"}, "properties": {"repobilityId": "014aeee1ecd8f001", "scanner": "scanner-primary", "fingerprint": "8a7f6cee50c00b75", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b5f6ad744ef43a0a", "level": "none", "message": {"text": "Commented-code block (7 lines) in website/supabase/functions/push-notify/index.ts:43"}, "properties": {"repobilityId": "afee837e4acb34b8", "scanner": "scanner-primary", "fingerprint": "b5f6ad744ef43a0a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b1b71f185d795180", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 website/supabase/functions/push-notify/index.ts:120"}, "properties": {"repobilityId": "91e3dc54431ff703", "scanner": "scanner-primary", "fingerprint": "b1b71f185d795180", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8db31825059a0c69", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 website/src/components/layout/Sidebar.tsx:118"}, "properties": {"repobilityId": "bdcb98a73469b26b", "scanner": "scanner-primary", "fingerprint": "8db31825059a0c69", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bbf9a68fa39ad60d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 website/src/components/layout/Topbar.tsx:32"}, "properties": {"repobilityId": "5ae50774a7c9094b", "scanner": "scanner-primary", "fingerprint": "bbf9a68fa39ad60d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4a852aa41fef470d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 website/src/components/dashboard/MobileCarControl.tsx:270"}, "properties": {"repobilityId": "cc45a4c108157c36", "scanner": "scanner-primary", "fingerprint": "4a852aa41fef470d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b5d2683dab9b0d8d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 website/src/components/pwa/DiagnosticsPanel.tsx:212"}, "properties": {"repobilityId": "6a8aa4ba17fe4ee1", "scanner": "scanner-primary", "fingerprint": "b5d2683dab9b0d8d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bccc1462a4c0b518", "level": "none", "message": {"text": "Commented-code block (5 lines) in website/src/app/api/vehicle/update/route.ts:67"}, "properties": {"repobilityId": "449b197482b70aae", "scanner": "scanner-primary", "fingerprint": "bccc1462a4c0b518", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ba387834037339c2", "level": "none", "message": {"text": "Commented-code block (5 lines) in website/src/app/api/vehicles/route.ts:29"}, "properties": {"repobilityId": "854a1b05fca5e513", "scanner": "scanner-primary", "fingerprint": "ba387834037339c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a6aa83dc4d438e7e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 website/src/lib/deviceLinkClient.ts:24"}, "properties": {"repobilityId": "5e0c1cf6a2841e07", "scanner": "scanner-primary", "fingerprint": "a6aa83dc4d438e7e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7495cf1963f0b766", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 website/src/lib/commandService.ts:132"}, "properties": {"repobilityId": "52a49e5ec55825dd", "scanner": "scanner-primary", "fingerprint": "7495cf1963f0b766", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2533e1fca8ec7e71", "level": "none", "message": {"text": "Commented-code block (6 lines) in supabase/functions/push-notify/index.ts:127"}, "properties": {"repobilityId": "4f0ac283a0d2e4e8", "scanner": "scanner-primary", "fingerprint": "2533e1fca8ec7e71", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed688e451b15ed0a", "level": "note", "message": {"text": "Legacy-named symbol `ecdh_v1` in src/__tests__/soak.remoteCommand.test.ts:89"}, "properties": {"repobilityId": "eb625e000a602c86", "scanner": "scanner-primary", "fingerprint": "ed688e451b15ed0a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-badef021d5a9338f", "level": "note", "message": {"text": "Legacy-named symbol `ecdh_v1` in src/__tests__/soak.cross-service.test.ts:114"}, "properties": {"repobilityId": "f8c86e57ee6d2182", "scanner": "scanner-primary", "fingerprint": "badef021d5a9338f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-755f8ce192402064", "level": "note", "message": {"text": "Legacy-named symbol `ecdh_v1` in src/__tests__/patentValidation.test.ts:248"}, "properties": {"repobilityId": "abc33486903e3791", "scanner": "scanner-primary", "fingerprint": "755f8ce192402064", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c0156b9489a79a0d", "level": "note", "message": {"text": "Legacy-named symbol `ecdh_v1` in src/__tests__/commandCrypto.test.ts:86"}, "properties": {"repobilityId": "abbbb7a6cf7f7ed5", "scanner": "scanner-primary", "fingerprint": "c0156b9489a79a0d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3742312be114f257", "level": "note", "message": {"text": "Legacy-named symbol `confOld` in src/__tests__/hazardService.test.ts:292"}, "properties": {"repobilityId": "bbd0022131cc890e", "scanner": "scanner-primary", "fingerprint": "3742312be114f257", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2d5cd19aed5c2fd0", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/platform/youtubeService.ts:71"}, "properties": {"repobilityId": "692ee9a40a5e32a4", "scanner": "scanner-primary", "fingerprint": "2d5cd19aed5c2fd0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4c012d0b8cd9d765", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/platform/commandParser.ts:211"}, "properties": {"repobilityId": "5ece0db07f86c8e8", "scanner": "scanner-primary", "fingerprint": "4c012d0b8cd9d765", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e4c6abec01b739dc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/mapSourceStore.ts:59"}, "properties": {"repobilityId": "4b2a01c7288d564e", "scanner": "scanner-primary", "fingerprint": "e4c6abec01b739dc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8d91d9dc68018947", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/platform/mapSourceManager.ts:54"}, "properties": {"repobilityId": "80845d9a0ef4eac5", "scanner": "scanner-primary", "fingerprint": "8d91d9dc68018947", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b566ba50108e376", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/mapSourceManager.ts:336"}, "properties": {"repobilityId": "8e6283ab4c67dbf4", "scanner": "scanner-primary", "fingerprint": "0b566ba50108e376", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c86df93a390c01b5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/mapService.ts:46"}, "properties": {"repobilityId": "37e9e0403f310632", "scanner": "scanner-primary", "fingerprint": "c86df93a390c01b5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-40892a292880d312", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/weatherService.ts:229"}, "properties": {"repobilityId": "81a4f742fd230df8", "scanner": "scanner-primary", "fingerprint": "40892a292880d312", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-06be8198923f8dda", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/platform/appDiscovery.ts:103"}, "properties": {"repobilityId": "8d7311c557aa8809", "scanner": "scanner-primary", "fingerprint": "06be8198923f8dda", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a1d0891cb45b16b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/platform/musicCommandParser.ts:141"}, "properties": {"repobilityId": "107c93f0aafa6ea7", "scanner": "scanner-primary", "fingerprint": "2a1d0891cb45b16b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b11f1531b4115afb", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/platform/thermalWatchdog.ts:479"}, "properties": {"repobilityId": "447f2878920a5ede", "scanner": "scanner-primary", "fingerprint": "b11f1531b4115afb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c53aeb6c7febb303", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/platform/vehicleIdentityService.ts:363"}, "properties": {"repobilityId": "eda186eb17b17c30", "scanner": "scanner-primary", "fingerprint": "c53aeb6c7febb303", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5127eca136234373", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/vehicleIdentityService.ts:58"}, "properties": {"repobilityId": "dd0beda594451c11", "scanner": "scanner-primary", "fingerprint": "5127eca136234373", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dd05ddc22571d4ad", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/platform/mediaService.ts:699"}, "properties": {"repobilityId": "808ff109d2694025", "scanner": "scanner-primary", "fingerprint": "dd05ddc22571d4ad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-56f5a652b7eaa427", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/speedLimitService.ts:97"}, "properties": {"repobilityId": "078c9ca805c2b5f2", "scanner": "scanner-primary", "fingerprint": "56f5a652b7eaa427", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b509434ed68780c1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/geocodingService.ts:202"}, "properties": {"repobilityId": "36387829859fa82c", "scanner": "scanner-primary", "fingerprint": "b509434ed68780c1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eb0018ca0df16a45", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/aiVoiceService.ts:203"}, "properties": {"repobilityId": "31c91167e7f1cfef", "scanner": "scanner-primary", "fingerprint": "eb0018ca0df16a45", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-29a860f3e1b5cf61", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/platform/obdService.ts:70"}, "properties": {"repobilityId": "987618a1ffbf1795", "scanner": "scanner-primary", "fingerprint": "29a860f3e1b5cf61", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-594000e36c989207", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/platform/canSnapshotService.ts:161"}, "properties": {"repobilityId": "7e0ecaccad030f5f", "scanner": "scanner-primary", "fingerprint": "594000e36c989207", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e7110441ea2aa0b2", "level": "note", "message": {"text": "Legacy-named symbol `ecdh_v1` in src/platform/remoteCommandService.ts:288"}, "properties": {"repobilityId": "28e1df028a9759c3", "scanner": "scanner-primary", "fingerprint": "e7110441ea2aa0b2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9bcce28ee3dd3758", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/platform/remoteCommandService.ts:286"}, "properties": {"repobilityId": "8eff81ee37a2099c", "scanner": "scanner-primary", "fingerprint": "9bcce28ee3dd3758", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cd81d980fb4c1aa1", "level": "note", "message": {"text": "Legacy-named symbol `matchesLegacy` in src/platform/wakeWordService.ts:75"}, "properties": {"repobilityId": "518a95487ed2a9a4", "scanner": "scanner-primary", "fingerprint": "cd81d980fb4c1aa1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d6878e3647ec4668", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/platform/nativePlugin.ts:434"}, "properties": {"repobilityId": "cea2acb114f26f60", "scanner": "scanner-primary", "fingerprint": "d6878e3647ec4668", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-638295ebe4d7b87d", "level": "note", "message": {"text": "Legacy-named symbol `rls_sent_watermark_v1` in src/platform/remoteLogService.ts:45"}, "properties": {"repobilityId": "fbccb2c860cf4b01", "scanner": "scanner-primary", "fingerprint": "638295ebe4d7b87d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c0e5a9f14f76a6da", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/offlineDataService.ts:228"}, "properties": {"repobilityId": "5884aedd77fb1337", "scanner": "scanner-primary", "fingerprint": "c0e5a9f14f76a6da", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d7e20f4ed18eef79", "level": "note", "message": {"text": "Legacy-named symbol `ecdh_v1` in src/platform/commandCrypto.ts:51"}, "properties": {"repobilityId": "2e48d0162b540d52", "scanner": "scanner-primary", "fingerprint": "d7e20f4ed18eef79", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5ac97150946f3dfb", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/platform/routingService.ts:862"}, "properties": {"repobilityId": "32cdbe6c7cf8bda5", "scanner": "scanner-primary", "fingerprint": "5ac97150946f3dfb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7afd722b527b37a0", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/platform/voiceService.ts:577"}, "properties": {"repobilityId": "642358fe6a10cd0a", "scanner": "scanner-primary", "fingerprint": "7afd722b527b37a0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-90948c156fc117fe", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/trafficService.ts:69"}, "properties": {"repobilityId": "4abd7a4dd9a888ee", "scanner": "scanner-primary", "fingerprint": "90948c156fc117fe", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dc416934ad54131e", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/platform/navigationService.ts:493"}, "properties": {"repobilityId": "031dacba1bed7aef", "scanner": "scanner-primary", "fingerprint": "dc416934ad54131e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a23003eaa6a694ca", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/platform/gpsService.ts:87"}, "properties": {"repobilityId": "a019b1f4e078d8db", "scanner": "scanner-primary", "fingerprint": "a23003eaa6a694ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-431554e78f423f59", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/mapStyleBuilders.ts:461"}, "properties": {"repobilityId": "299c05a2e3c94992", "scanner": "scanner-primary", "fingerprint": "431554e78f423f59", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d4ab970cd4c73aff", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/platform/smartRecommendationEngine.ts:30"}, "properties": {"repobilityId": "df01434884bf6f38", "scanner": "scanner-primary", "fingerprint": "d4ab970cd4c73aff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-26bf9eedd9950716", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/spotify/spotifyService.ts:39"}, "properties": {"repobilityId": "55a65e23c6dde18c", "scanner": "scanner-primary", "fingerprint": "26bf9eedd9950716", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e6e6aa531b9b6f73", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/spotify/spotifyAuth.ts:114"}, "properties": {"repobilityId": "6651146da5621768", "scanner": "scanner-primary", "fingerprint": "e6e6aa531b9b6f73", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fe6ad0b0b7ff535a", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/platform/vehicleDataLayer/VehicleSignalResolver.ts:208"}, "properties": {"repobilityId": "c7fdec0bdf914725", "scanner": "scanner-primary", "fingerprint": "fe6ad0b0b7ff535a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3241dbc51fbe542c", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/platform/vehicleDataLayer/VehicleCompute.worker.ts:181"}, "properties": {"repobilityId": "85b6e9a902855e78", "scanner": "scanner-primary", "fingerprint": "3241dbc51fbe542c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7044993786e12881", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/platform/companion/companionChatProvider.ts:565"}, "properties": {"repobilityId": "b9d47230e02f058b", "scanner": "scanner-primary", "fingerprint": "7044993786e12881", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-04feb0b9d41c1e2f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/companion/companionChatProvider.ts:269"}, "properties": {"repobilityId": "156c21cf9eb572ec", "scanner": "scanner-primary", "fingerprint": "04feb0b9d41c1e2f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-00e19c92da237711", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/ai/semanticAiService.ts:152"}, "properties": {"repobilityId": "8acf54cf21d1bc35", "scanner": "scanner-primary", "fingerprint": "00e19c92da237711", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dd75b1358adc676e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/media/jamendoProvider.ts:33"}, "properties": {"repobilityId": "e2ca3a76f13eabb4", "scanner": "scanner-primary", "fingerprint": "dd75b1358adc676e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5087ffc655c103c2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/media/audiusProvider.ts:18"}, "properties": {"repobilityId": "4c5bd47f38405059", "scanner": "scanner-primary", "fingerprint": "5087ffc655c103c2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0e70df21b03559d7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/media/archiveProvider.ts:35"}, "properties": {"repobilityId": "ecc436451e6c7427", "scanner": "scanner-primary", "fingerprint": "0e70df21b03559d7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6c76ada557c602dd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/media/radioBrowserProvider.ts:25"}, "properties": {"repobilityId": "d72d104ef8fcdbbe", "scanner": "scanner-primary", "fingerprint": "6c76ada557c602dd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6094931adee28895", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/media/ytDownloadService.ts:8"}, "properties": {"repobilityId": "f282825f7a0550e1", "scanner": "scanner-primary", "fingerprint": "6094931adee28895", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c6a8e0a9ac7f08a4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/media/pipedProvider.ts:134"}, "properties": {"repobilityId": "ff726c6befe89969", "scanner": "scanner-primary", "fingerprint": "c6a8e0a9ac7f08a4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9ae66e29185a6f15", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/platform/system/SystemHealthMonitor.ts:33"}, "properties": {"repobilityId": "a6fbd1672a7a9208", "scanner": "scanner-primary", "fingerprint": "9ae66e29185a6f15", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-772747c2e3251912", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/platform/system/SystemBoot.ts:554"}, "properties": {"repobilityId": "320dc235139d3e8d", "scanner": "scanner-primary", "fingerprint": "772747c2e3251912", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc35238a7bcbf4f9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/platform/map/_mapState.ts:4"}, "properties": {"repobilityId": "2d6cc1d13d9d2194", "scanner": "scanner-primary", "fingerprint": "cc35238a7bcbf4f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-14d6eb17f5353508", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/platform/diagnostic/fuelAdvisorService.ts:193"}, "properties": {"repobilityId": "5ed9bd417d2a3de9", "scanner": "scanner-primary", "fingerprint": "14d6eb17f5353508", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-846bfd85da944a1d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/layout/MainLayout.tsx:154"}, "properties": {"repobilityId": "c729ba4f4d390842", "scanner": "scanner-primary", "fingerprint": "846bfd85da944a1d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6a4b6366cfd9f60", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/media/MediaScreen.tsx:567"}, "properties": {"repobilityId": "8598251b99ee8b57", "scanner": "scanner-primary", "fingerprint": "f6a4b6366cfd9f60", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b791fbc502f76ac", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/themes/HorizonLayout.tsx:320"}, "properties": {"repobilityId": "a7bfdf0326263dd6", "scanner": "scanner-primary", "fingerprint": "4b791fbc502f76ac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-286058a65fd16ca6", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/obd/OBDConnectModal.tsx:27"}, "properties": {"repobilityId": "925678c4f62e7c11", "scanner": "scanner-primary", "fingerprint": "286058a65fd16ca6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f602c4b1cb83393b", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/components/map/NavigationHUD.tsx:1763"}, "properties": {"repobilityId": "57ba535fbed288c4", "scanner": "scanner-primary", "fingerprint": "f602c4b1cb83393b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1138b34087524d31", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/map/NavigationHUD.tsx:1411"}, "properties": {"repobilityId": "47aab67bf53c995c", "scanner": "scanner-primary", "fingerprint": "1138b34087524d31", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2a20d91b9966f6fa", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/map/FullMapView.tsx:153"}, "properties": {"repobilityId": "3f78eec644699018", "scanner": "scanner-primary", "fingerprint": "2a20d91b9966f6fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b265d6ad0aed3fd6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/map/FullMapView.tsx:1081"}, "properties": {"repobilityId": "598f080cae1ef83e", "scanner": "scanner-primary", "fingerprint": "b265d6ad0aed3fd6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-48826f8fed08f4a3", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/admin/services/superadmin.service.ts:801"}, "properties": {"repobilityId": "62a5db55958c3bb8", "scanner": "scanner-primary", "fingerprint": "48826f8fed08f4a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1a44f4666ee2fdbf", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/hooks/useLayoutServices.ts:93"}, "properties": {"repobilityId": "5594564cc9841f2a", "scanner": "scanner-primary", "fingerprint": "1a44f4666ee2fdbf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-22cb51b3afa1b048", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/core/runtime/AdaptiveRuntimeManager.ts:167"}, "properties": {"repobilityId": "2916bc2cd32757b4", "scanner": "scanner-primary", "fingerprint": "22cb51b3afa1b048", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f824909d6490822a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/core/storage/CacheLRUManager.ts:140"}, "properties": {"repobilityId": "755313adc42031fe", "scanner": "scanner-primary", "fingerprint": "f824909d6490822a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e890a000d7495133", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/store/useCarTheme.ts:112"}, "properties": {"repobilityId": "f95217f5c03e89d7", "scanner": "scanner-primary", "fingerprint": "e890a000d7495133", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6bebc79b471a8148", "level": "warning", "message": {"text": "Frontend route `sa` has no Link/navigate to it \u2014 src/admin/App.tsx"}, "properties": {"repobilityId": "88a68d7839355234", "scanner": "scanner-primary", "fingerprint": "6bebc79b471a8148", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f69927bad6859225", "level": "warning", "message": {"text": "Frontend route `users` has no Link/navigate to it \u2014 src/admin/App.tsx"}, "properties": {"repobilityId": "e70179bade1dc2e5", "scanner": "scanner-primary", "fingerprint": "f69927bad6859225", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-df4346487ee8306d", "level": "warning", "message": {"text": "Frontend route `vehicles` has no Link/navigate to it \u2014 src/admin/App.tsx"}, "properties": {"repobilityId": "163d791a5556be13", "scanner": "scanner-primary", "fingerprint": "df4346487ee8306d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-322010a0b857fe94", "level": "warning", "message": {"text": "Frontend route `settings` has no Link/navigate to it \u2014 src/admin/App.tsx"}, "properties": {"repobilityId": "48fbec91d6c0e676", "scanner": "scanner-primary", "fingerprint": "322010a0b857fe94", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f86a68df4f6f5359", "level": "warning", "message": {"text": "Frontend route `superadmin` has no Link/navigate to it \u2014 src/admin/App.tsx"}, "properties": {"repobilityId": "9175caef05aa0726", "scanner": "scanner-primary", "fingerprint": "f86a68df4f6f5359", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-69011199637dc7d4", "level": "warning", "message": {"text": "Frontend route `chaos` has no Link/navigate to it \u2014 src/admin/App.tsx"}, "properties": {"repobilityId": "ba4b693eb070478e", "scanner": "scanner-primary", "fingerprint": "69011199637dc7d4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}]}]}