{"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-5cd40151e6c42be0", "name": "Stray `console.log` in TS/JS \u2014 client/replit_integrations/audio/index.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/replit_integrations/audio/index.ts:17"}, "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-224f19224da99eaf", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/adflow/CampaignCard.tsx:97", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/adflow/CampaignCard.tsx:97"}, "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-c124e837d541af05", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/contentflow/ContentFlowPreviewModal.tsx:219", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/contentflow/ContentFlowPreviewModal.tsx:219"}, "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-5765a766236b2cff", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/shared/ChatAttachmentInput.tsx:373", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/shared/ChatAttachmentInput.tsx:373"}, "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-bb80a4dad4c6a28a", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/shared/CopilotCards.tsx:64", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/shared/CopilotCards.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-5f7656965bb6e8bf", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/shared/__tests__/StatCard.test.tsx:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/shared/__tests__/StatCard.test.tsx:20"}, "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-a7b3db9745e9c497", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/components/ui/chart.tsx:81", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/components/ui/chart.tsx:81"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7ed24664d008cc55", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ui/breadcrumbs.tsx:105", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ui/breadcrumbs.tsx:105"}, "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-06153302a0c89480", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/ui/__tests__/confirm-dialog.test.tsx:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/ui/__tests__/confirm-dialog.test.tsx:25"}, "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-d41f1ed260e1850f", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ui/visual-primitives/ChartTooltip.tsx:146", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ui/visual-primitives/ChartTooltip.tsx:146"}, "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-446bd1229ba7e86c", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ui/visual-primitives/DonutChart.tsx:333", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ui/visual-primitives/DonutChart.tsx:333"}, "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-50faf6fdd671a96e", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ui/visual-primitives/VisualCalendar.tsx:327", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ui/visual-primitives/VisualCalendar.tsx:327"}, "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-31c60566f28c8d58", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ui/visual-primitives/ApprovalInbox.tsx:625", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ui/visual-primitives/ApprovalInbox.tsx:625"}, "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-fc046c16c9479efc", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/primitives/__tests__/HelpCueRow.test.tsx:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/primitives/__tests__/HelpCueRow.test.tsx:19"}, "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-43f93a0f01eebd72", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/primitives/__tests__/Stack.test.tsx:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/primitives/__tests__/Stack.test.tsx:22"}, "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-f393d412b05911cb", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/primitives/__tests__/Cluster.test.tsx:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/primitives/__tests__/Cluster.test.tsx:20"}, "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-04f2288f5dffefa0", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/tradeline/WidgetStylePreviewModal.tsx:76", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/tradeline/WidgetStylePreviewModal.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-f6ef98ad1c829e90", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/datatable/HeaderFilterDropdown.tsx:92", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/datatable/HeaderFilterDropdown.tsx:92"}, "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-93597c38644628cb", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/components/quote-widget/ContactStep.tsx:411", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/components/quote-widget/ContactStep.tsx:411"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0a2e09dd98411ba4", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/quote-widget/MatrixField.resolveRate.test.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/quote-widget/MatrixField.resolveRate.test.ts:28"}, "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-f656e2fed37775bb", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/components/quote-widget/CalculatorStepper.tsx:213", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/components/quote-widget/CalculatorStepper.tsx:213"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c0eebbec1871c9d4", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/components/quote-widget/AdvancedCalculator.tsx:83", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/components/quote-widget/AdvancedCalculator.tsx:83"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e1c9877a93fd57d9", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/marketing/__tests__/CarouselArrowButton.test.tsx:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/marketing/__tests__/CarouselArrowButton.test.tsx:20"}, "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-18c185b60c1a38d1", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/marketing/__tests__/HorizontalCarousel.test.tsx:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/marketing/__tests__/HorizontalCarousel.test.tsx:24"}, "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-aade7cdf815427f7", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/marketing/__tests__/BeforeAfterSlider.test.tsx:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/marketing/__tests__/BeforeAfterSlider.test.tsx:24"}, "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-a5193c0c7310c66a", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/LucideIconPicker.tsx:176", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/LucideIconPicker.tsx:176"}, "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-b795c1d1f2bf5d2e", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/ImpersonateBanner.tsx:79", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/ImpersonateBanner.tsx:79"}, "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-f3365b58f694f8e7", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/AdminProductPageShell.tsx:334", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/AdminProductPageShell.tsx:334"}, "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-669941c5183e0a12", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/AdminCopilot.tsx:1367", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/AdminCopilot.tsx:1367"}, "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-7fc910122dd1a149", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/SocialSyncTab.tsx:1085", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/SocialSyncTab.tsx:1085"}, "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-0dfbe53c1f55f1e8", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/AdminLayout.tsx:1521", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/AdminLayout.tsx:1521"}, "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-be6e61463576775f", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/admin/__tests__/AdminProductPageShell.test.tsx:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/admin/__tests__/AdminProductPageShell.test.tsx:37"}, "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-5f1dbe4f1fe66d6d", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/quotequick/FormBuilder.tsx:320", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/quotequick/FormBuilder.tsx:320"}, "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-f12f9f862df7b3d5", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/socialsync/PlatformPreview.tsx:148", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/socialsync/PlatformPreview.tsx:148"}, "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-a2b3a79239b77dd7", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/portal/ModeToggle.tsx:68", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/portal/ModeToggle.tsx:68"}, "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-007afc0fb457b30f", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/portal/DeliverableViewer.tsx:71", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/portal/DeliverableViewer.tsx:71"}, "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-ff61868b9a99a85f", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/portal/TradeLinePortalSections.tsx:537", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/portal/TradeLinePortalSections.tsx:537"}, "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-a694b6432f88a0ef", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/portal/PortalLayout.tsx:394", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/portal/PortalLayout.tsx:394"}, "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-4f3b73fc4db13ed0", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/portal/PortalProductPageShell.tsx:173", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/portal/PortalProductPageShell.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-e5bb10dbc2c7bf81", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/portal/PortalProductPageShell.test.tsx:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/portal/PortalProductPageShell.test.tsx:41"}, "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-7c05bdff797ef2bc", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/portal/__tests__/FirstVisitTooltip.test.tsx:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/portal/__tests__/FirstVisitTooltip.test.tsx:43"}, "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-3e380e0eca2d3ab7", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/portal/contentflow/ContentFlowCreatePanel.tsx", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/portal/contentflow/ContentFlowCreatePanel.tsx:721"}, "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-39c505cdd8cfd859", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/wizard/elfsight/aiToolApplier.styleDrop.test.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/wizard/elfsight/aiToolApplier.styleDrop.test.ts:24"}, "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-5fc28bebb01df55b", "name": "TODO/FIXME marker in shipping code \u2014 client/src/components/wizard/elfsight/WizardShell.tsx:759", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 client/src/components/wizard/elfsight/WizardShell.tsx:759"}, "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-72f2c92a7d99c64c", "name": "TODO/FIXME marker in shipping code \u2014 client/src/components/wizard/elfsight/InstallTab.tsx:26", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 client/src/components/wizard/elfsight/InstallTab.tsx:26"}, "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-5b18d4b441ca4ed4", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/wizard/elfsight/__tests__/fieldTypes.test.tsx:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/wizard/elfsight/__tests__/fieldTypes.test.tsx:40"}, "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-60baa0c4393459f6", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/wizard/elfsight/__tests__/StyledSelect.test.tsx:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/wizard/elfsight/__tests__/StyledSelect.test.tsx:24"}, "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-f3fe4052725480fe", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/wizard/elfsight/__tests__/templateApply.test.tsx:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/wizard/elfsight/__tests__/templateApply.test.tsx:43"}, "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-c122d97ddfa3e250", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/forms/TokenChip.tsx:133", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/forms/TokenChip.tsx:133"}, "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-3185bf3e57d3d02c", "name": "Stray `console.log` in TS/JS \u2014 client/src/lib/layoutGuard.test.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/lib/layoutGuard.test.ts:29"}, "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-f8be520ed2a5b088", "name": "Stray `console.log` in TS/JS \u2014 client/src/lib/trackEvent.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/lib/trackEvent.ts:21"}, "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-f8ad998539ccc9e2", "name": "Stray `console.log` in TS/JS \u2014 client/src/lib/contrastGuard.test.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/lib/contrastGuard.test.ts:22"}, "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-578472b38b07c9e6", "name": "Stray `console.log` in TS/JS \u2014 client/src/lib/__tests__/marketingTemplateMap.test.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/lib/__tests__/marketingTemplateMap.test.ts:27"}, "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-b2ae1906862795f9", "name": "Stray `console.log` in TS/JS \u2014 client/src/pages/checkoutSuccessState.test.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/pages/checkoutSuccessState.test.ts:48"}, "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-d83f4988a9e1f839", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/edit-calculator.tsx:29", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/edit-calculator.tsx:29"}, "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-f51e905050902936", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/pages/BlogArticle.tsx:43", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/pages/BlogArticle.tsx:43"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dc2742e78c618439", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/pages/marketing/aiReceptionistDetail.tsx:62", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/pages/marketing/aiReceptionistDetail.tsx:62"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a78dfd9e7d223dc9", "name": "Stray `console.log` in TS/JS \u2014 client/src/pages/marketing/ApiDocsPage.tsx:930", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/pages/marketing/ApiDocsPage.tsx:930"}, "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-1c85c1f638833d41", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/pages/marketing/tools/GoogleReviewLinkGenerator.tsx:352", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/pages/marketing/tools/GoogleReviewLinkGenerator.tsx:352"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8fa2a8d7f1bee5b3", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/SupportInboxPage.tsx:288", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/SupportInboxPage.tsx:288"}, "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-9543cecfa5c70e93", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/ClientsPage.tsx:589", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/ClientsPage.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-2110185e89a14c48", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/TradelineVoicesPage.tsx:374", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/TradelineVoicesPage.tsx:374"}, "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-75e8af33c12306dc", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/SystemJobsPage.tsx:252", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/SystemJobsPage.tsx:252"}, "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-8086f36054bdc600", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/ClientDetailPage.tsx:1103", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/ClientDetailPage.tsx:1103"}, "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-884f066336967d7d", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/CrmOverview.tsx:380", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/CrmOverview.tsx:380"}, "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-6ede654cb584ea72", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/IntegrationHealthPage.tsx:235", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/IntegrationHealthPage.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-ed5ef24f433afebf", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/QuoteQuickTemplateDetailPage.tsx:520", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/QuoteQuickTemplateDetailPage.tsx:520"}, "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-eb5fc9880e077c2b", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/QuoteQuickPage.tsx:473", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/QuoteQuickPage.tsx:473"}, "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-539ee3a07254cbe7", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/QuoteQuickTradesPage.tsx:254", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/QuoteQuickTradesPage.tsx:254"}, "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-3f5e72846e456bb1", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/MapguardOpsPage.tsx:248", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/MapguardOpsPage.tsx:248"}, "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-ed4faa0b4d7329ba", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/QuoteQuickTemplatesPage.tsx:223", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/QuoteQuickTemplatesPage.tsx:223"}, "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-99e9a3e30dbaa922", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/SeoIntegrationsPage.tsx:344", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/SeoIntegrationsPage.tsx:344"}, "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-d136f6ca2de5e9ef", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/AdminAuditLogPage.tsx:325", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/AdminAuditLogPage.tsx:325"}, "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-a8cedce128c0cd30", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/QuoteQuickTradeDetailPage.tsx:292", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/QuoteQuickTradeDetailPage.tsx:292"}, "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-5efb318d01f19c47", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/WebCareOpsPage.tsx:321", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/WebCareOpsPage.tsx:321"}, "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-1f3b18031e312c7e", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/BillingPage.tsx:281", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/BillingPage.tsx:281"}, "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-57237352e55f1ac4", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/ContentFlowQueuePage.tsx:1134", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/ContentFlowQueuePage.tsx:1134"}, "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-ae8fa51d7501e3c3", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/ProductDetailPage.tsx:495", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/ProductDetailPage.tsx:495"}, "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-43d7f852fd6658c9", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/ApiPlatformUserDetailPage.tsx:620", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/ApiPlatformUserDetailPage.tsx:620"}, "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-d4b65a342272ef44", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/MapguardDashboard.tsx:484", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/MapguardDashboard.tsx:484"}, "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-8d5b7d6ebaa55404", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/TradeLineOpsPage.tsx:66", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/TradeLineOpsPage.tsx:66"}, "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-043615ea52ef5849", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/AdminAiActivityPage.tsx:328", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/AdminAiActivityPage.tsx:328"}, "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-998ca64ea0bdcd77", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/CommunicationsPage.tsx:421", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/CommunicationsPage.tsx:421"}, "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-51dbe89ebaf1e144", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/AiDashboard.tsx:437", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/AiDashboard.tsx:437"}, "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-5f512eb28b23248b", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/MobilePreview/PreviewScreens.tsx:623", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/MobilePreview/PreviewScreens.tsx:623"}, "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-3610a68d507862fd", "name": "Stray `console.log` in TS/JS \u2014 client/src/pages/admin/MobilePreview/__tests__/PreviewScreens.test.tsx:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/pages/admin/MobilePreview/__tests__/PreviewScreens.test.tsx:35"}, "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-dff235cdee915387", "name": "Stray `console.log` in TS/JS \u2014 client/src/pages/admin/outbound/outboundUiHelpers.test.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/pages/admin/outbound/outboundUiHelpers.test.ts:28"}, "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-0fdf4f032052ebe2", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/outbound/CampaignsPage.tsx:727", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/outbound/CampaignsPage.tsx:727"}, "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-f9c8119a7546a0c5", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/outbound/PipelinePage.tsx:173", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/outbound/PipelinePage.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-f585f0da2229fb73", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/outbound/ProspectsPage.tsx:693", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/outbound/ProspectsPage.tsx:693"}, "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-3b95cccca5c45a27", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/outbound/SendingPage.tsx:266", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/outbound/SendingPage.tsx:266"}, "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-969ba8e25374d517", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalYourAiAssistant.tsx:530", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalYourAiAssistant.tsx:530"}, "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-9d8f5ed924f15f8a", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalSettings.tsx:1280", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalSettings.tsx:1280"}, "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-82c095693fbb8922", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/BookFlowSetupPage.tsx:367", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/BookFlowSetupPage.tsx:367"}, "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-15654b37df147809", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalCompetitors.tsx:298", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalCompetitors.tsx:298"}, "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-3889b79b3e875329", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalRankFlow.tsx:709", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalRankFlow.tsx:709"}, "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-d9a51188b1227a6d", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalBilling.tsx:309", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalBilling.tsx:309"}, "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-8665d0e096d5a0e7", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalHelp.tsx:255", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalHelp.tsx:255"}, "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-1b5f93008e6d7347", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalDashboard.tsx:783", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalDashboard.tsx:783"}, "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-430db2eb1efdbecf", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalServiceDetail.tsx:859", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalServiceDetail.tsx:859"}, "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-5179449219b9b32f", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalChatWidgetSetup.tsx:347", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalChatWidgetSetup.tsx:347"}, "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-f0e2b2db4e11f40e", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/FreeTools/InvoicePdf.tsx:490", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/FreeTools/InvoicePdf.tsx:490"}, "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-3d925b1ee0b520b1", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/FreeTools/SchemaGenerator.tsx:498", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/FreeTools/SchemaGenerator.tsx:498"}, "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-e16a760e1c063091", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/FreeTools/ReviewQrCard.tsx:525", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/FreeTools/ReviewQrCard.tsx:525"}, "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-d8e5a084b9d083a2", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/FreeTools/_shared.tsx:95", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/FreeTools/_shared.tsx:95"}, "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-82d606a0feca858e", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/FreeTools/CallbackForm.tsx:372", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/FreeTools/CallbackForm.tsx:372"}, "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-2c34e73d8b87d404", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/FreeTools/BookingWidget.tsx:541", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/FreeTools/BookingWidget.tsx:541"}, "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-ad2633969dad787a", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/socialsync/SocialSyncDashboard.tsx:992", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/socialsync/SocialSyncDashboard.tsx:992"}, "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-de40351d4d5ead58", "name": "Stray `console.log` in TS/JS \u2014 tests/tradeline-safety-floor.test.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/tradeline-safety-floor.test.ts:30"}, "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-a3d37cb1a51bed5b", "name": "Stray `console.log` in TS/JS \u2014 tests/payment-methods-sweep.test.ts:400", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/payment-methods-sweep.test.ts:400"}, "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-13267c07e40b07fb", "name": "Stray `console.log` in TS/JS \u2014 tests/learning-apply.test.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/learning-apply.test.ts:18"}, "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-e88194a16332bdca", "name": "Stray `console.log` in TS/JS \u2014 tests/build-smoke.test.ts:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/build-smoke.test.ts:71"}, "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-77173ff5ca8ebfde", "name": "Stray `console.log` in TS/JS \u2014 tests/tradeline-chat-voice-parity.test.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/tradeline-chat-voice-parity.test.ts:43"}, "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-75fe99d32c8aa4a0", "name": "Stray `console.log` in TS/JS \u2014 tests/riley-closer.test.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/riley-closer.test.ts:22"}, "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-3537fba8340407e8", "name": "Stray `console.log` in TS/JS \u2014 tests/inbound-action.test.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/inbound-action.test.ts:19"}, "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-30db0ec79ed0f784", "name": "Stray `console.log` in TS/JS \u2014 tests/publish-stripe-gate.test.ts:214", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/publish-stripe-gate.test.ts:214"}, "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-3f5d1fe26b8af289", "name": "Stray `console.log` in TS/JS \u2014 tests/outreach-smartlead.test.ts:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/outreach-smartlead.test.ts:60"}, "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-5824879f88ed6172", "name": "Stray `console.log` in TS/JS \u2014 tests/tradeline-param-route-fallthrough.test.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/tradeline-param-route-fallthrough.test.ts:34"}, "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-9b863652c8d5a819", "name": "Stray `console.log` in TS/JS \u2014 tests/tradeline-live-templates.test.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/tradeline-live-templates.test.ts:29"}, "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-49784a8aa1754d62", "name": "Stray `console.log` in TS/JS \u2014 tests/voice-profile.test.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/voice-profile.test.ts:36"}, "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-aa9a5fa7a1a2d0b2", "name": "Stray `console.log` in TS/JS \u2014 tests/healthz-version.test.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/healthz-version.test.ts:51"}, "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-5f94c954212a7eea", "name": "Stray `console.log` in TS/JS \u2014 tests/portal-concierge.test.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/portal-concierge.test.ts:27"}, "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-0b16aa9acf905f82", "name": "Stray `console.log` in TS/JS \u2014 tests/wave-q-audit/probe-home.spec.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/wave-q-audit/probe-home.spec.ts:27"}, "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-05b358b18c65acdb", "name": "Stray `console.log` in TS/JS \u2014 tests/wave-q-audit/audit.spec.ts:389", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/wave-q-audit/audit.spec.ts:389"}, "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-b52957532e0ebbc7", "name": "Stray `console.log` in TS/JS \u2014 tests/wave-q-audit/probe-warnings.spec.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/wave-q-audit/probe-warnings.spec.ts:16"}, "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-f1b38a4ada80acfa", "name": "Stray `console.log` in TS/JS \u2014 tests/audit/a11y-batch3.spec.ts:84", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/audit/a11y-batch3.spec.ts:84"}, "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-d2a44cbc8fe364f5", "name": "Stray `console.log` in TS/JS \u2014 tests/audit/wave-as1b-template-identity.spec.ts:107", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/audit/wave-as1b-template-identity.spec.ts:107"}, "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-60158a557c1d41b2", "name": "Stray `console.log` in TS/JS \u2014 tests/audit/wave-as1c-template-polish.spec.ts:90", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/audit/wave-as1c-template-polish.spec.ts:90"}, "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-7038b23788024f88", "name": "Stray `console.log` in TS/JS \u2014 tests/audit/_w-hero-screenshot.spec.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/audit/_w-hero-screenshot.spec.ts:33"}, "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-833931ed273639c0", "name": "Stray `console.log` in TS/JS \u2014 tests/audit/w-v-voice-dialer.spec.ts:167", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/audit/w-v-voice-dialer.spec.ts:167"}, "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-e880664ffb423534", "name": "Stray `console.log` in TS/JS \u2014 tests/audit/a11y.spec.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/audit/a11y.spec.ts:32"}, "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-a55741aa52ddc0ed", "name": "Stray `console.log` in TS/JS \u2014 tests/audit/wizard-wave-r-pre-v2-screenshots.spec.ts:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/audit/wizard-wave-r-pre-v2-screenshots.spec.ts:67"}, "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-ae551a7ae4465074", "name": "Stray `console.log` in TS/JS \u2014 tests/audit/_w-sections-screenshot.spec.ts:59", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/audit/_w-sections-screenshot.spec.ts:59"}, "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-8c5410e96ce9d50a", "name": "Stray `console.log` in TS/JS \u2014 tests/audit/wave-ap3-template-gallery.spec.ts:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/audit/wave-ap3-template-gallery.spec.ts:71"}, "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-19f3c400d5ea729b", "name": "Stray `console.log` in TS/JS \u2014 tests/audit/_w-labels-screenshot.spec.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/audit/_w-labels-screenshot.spec.ts:65"}, "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-f35997d9776ebb3e", "name": "Stray `console.log` in TS/JS \u2014 tests/audit/_w-r4-image-cards-screenshot.spec.ts:137", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/audit/_w-r4-image-cards-screenshot.spec.ts:137"}, "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-98402ed9d58222de", "name": "Stray `console.log` in TS/JS \u2014 tests/audit/_w-cards-screenshot.spec.ts:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/audit/_w-cards-screenshot.spec.ts:68"}, "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-a5bbb0307aaceacd", "name": "Stray `console.log` in TS/JS \u2014 tests/audit/w-twilio-comms-screenshot.spec.ts:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/audit/w-twilio-comms-screenshot.spec.ts:76"}, "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-3b1fec7d78eb16eb", "name": "Stray `console.log` in TS/JS \u2014 tests/e2e/authenticated-flows.spec.ts:187", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/e2e/authenticated-flows.spec.ts:187"}, "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-739b42ba8c503dc0", "name": "Stray `console.log` in TS/JS \u2014 tests/e2e/audit-flow.spec.ts:211", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/e2e/audit-flow.spec.ts:211"}, "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-4b578dc06b46f0d7", "name": "Stray `console.log` in TS/JS \u2014 tests/e2e/smoke-all-pages.spec.ts:567", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/e2e/smoke-all-pages.spec.ts:567"}, "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-0a69fc8b9f0cc6a4", "name": "Stray `console.log` in TS/JS \u2014 tests/e2e/admin-crm/cleanup-test-data.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/e2e/admin-crm/cleanup-test-data.ts:12"}, "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-6ef9102f845cc129", "name": "Stray `console.log` in TS/JS \u2014 docs/wip/stripe-billing-overhaul/verify-phase2-safety.ts:109", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/wip/stripe-billing-overhaul/verify-phase2-safety.ts:109"}, "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-2315d932a6d79383", "name": "Stray `console.log` in TS/JS \u2014 docs/wip/stripe-billing-overhaul/verify-phase2-real-db.ts:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/wip/stripe-billing-overhaul/verify-phase2-real-db.ts:64"}, "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-2739895b3e4790ae", "name": "Stray `console.log` in TS/JS \u2014 docs/wip/stripe-billing-overhaul/verify-phase1-real-db.ts:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/wip/stripe-billing-overhaul/verify-phase1-real-db.ts:82"}, "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-34523acba1bed4a0", "name": "Stray `console.log` in TS/JS \u2014 shared/locationCountry.test.ts:109", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/locationCountry.test.ts:109"}, "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-8dfe37b65e269157", "name": "Stray `console.log` in TS/JS \u2014 shared/revenueLoss.test.ts:144", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/revenueLoss.test.ts:144"}, "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-fd1cdde2b788439c", "name": "Stray `console.log` in TS/JS \u2014 shared/seoContentPage.test.ts:142", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/seoContentPage.test.ts:142"}, "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-37c88e2d36c879d9", "name": "Stray `console.log` in TS/JS \u2014 shared/prompts/tradelineDemoPrompt.test.ts:163", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/prompts/tradelineDemoPrompt.test.ts:163"}, "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-83385b4433c29134", "name": "Stray `console.log` in TS/JS \u2014 shared/schemas/calculator.fieldTypes.test.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/schemas/calculator.fieldTypes.test.ts:38"}, "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-a6335e41670621e4", "name": "Stray `console.log` in TS/JS \u2014 shared/sms/templateRegistry.test.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shared/sms/templateRegistry.test.ts:33"}, "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-c15f98987d6dbe83", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-place-id-extractor.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-place-id-extractor.ts:15"}, "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-58fa830d7136b441", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-and-activate-stripe-api-prices.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-and-activate-stripe-api-prices.ts:31"}, "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-d59747c12855d081", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-test-portal-client.ts:84", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-test-portal-client.ts:84"}, "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-326729da0976ccca", "name": "Icon-only button without accessible name \u2014 scripts/generate-free-tool-previews.ts:152", "shortDescription": {"text": "Icon-only button without accessible name \u2014 scripts/generate-free-tool-previews.ts:152"}, "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-9b6a9a5416e1081f", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-free-tool-previews.ts:439", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-free-tool-previews.ts:439"}, "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-820954e66cb98f6b", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-mapguard-keywords.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-mapguard-keywords.ts:15"}, "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-c0d10fa30b12f766", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-test-client.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-test-client.ts:31"}, "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-5db6ecd1362a584d", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-dunning.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-dunning.ts:36"}, "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-05214198f3a8cf65", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-mapguard-prelaunch.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-mapguard-prelaunch.ts:37"}, "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-a5ae5fe16b50f9ef", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-tradeline-phone-setups.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-tradeline-phone-setups.ts: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-fdb24e0604b40a8a", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-template-thumbnails.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-template-thumbnails.ts:65"}, "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-729f21bf12ddeeee", "name": "Stray `console.log` in TS/JS \u2014 scripts/recreate-admin.ts:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recreate-admin.ts:66"}, "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-263b2e18f0618382", "name": "Stray `console.log` in TS/JS \u2014 scripts/sync-api-platform-stripe-prices.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sync-api-platform-stripe-prices.ts:44"}, "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-3f08eed3cbb74a37", "name": "Stray `console.log` in TS/JS \u2014 scripts/apply-migration.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-migration.ts:40"}, "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-cabc588805a70e0a", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-billing-recovery-prereqs.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-billing-recovery-prereqs.ts:29"}, "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-8ff31e737f63e335", "name": "Stray `console.log` in TS/JS \u2014 scripts/setup-stripe.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup-stripe.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-0e8709728412ca6f", "name": "Stray `console.log` in TS/JS \u2014 scripts/smoke-billing-recovery-local.ts:229", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/smoke-billing-recovery-local.ts:229"}, "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-0eccf66ce5128fdd", "name": "Stray `console.log` in TS/JS \u2014 scripts/link-admin-client.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/link-admin-client.ts:18"}, "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-7b53f61c4b0c04d2", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-email-tracking.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-email-tracking.ts:18"}, "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-106abcdd6ef581ce", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-adflow-cron.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-adflow-cron.ts:40"}, "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-006665d68ecc8fc1", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-formula.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-formula.ts:13"}, "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-32d843a0c6fd4bda", "name": "Stray `console.log` in TS/JS \u2014 scripts/rollback-api-platform-stripe-prices.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rollback-api-platform-stripe-prices.ts:42"}, "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-c7fdd93340862738", "name": "Stray `console.log` in TS/JS \u2014 scripts/dev-full-audit-smoke.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev-full-audit-smoke.ts:24"}, "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-9a557944ea9fc312", "name": "Stray `console.log` in TS/JS \u2014 scripts/preview-transactional-emails.ts:545", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/preview-transactional-emails.ts:545"}, "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-c03bcdcbc8a806f8", "name": "Stray `console.log` in TS/JS \u2014 scripts/smoke-stripe-billing-recovery.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/smoke-stripe-billing-recovery.ts:49"}, "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-ec827882c04b021a", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-template-formula-refs.ts:96", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-template-formula-refs.ts:96"}, "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-71675c42bfe18f9e", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-template-image-hosts.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-template-image-hosts.ts:53"}, "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-7751f047facaa216", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-image-template.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-image-template.ts:34"}, "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-75ab6efba040aba3", "name": "Stray `console.log` in TS/JS \u2014 scripts/load/mock-apis.ts:148", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/load/mock-apis.ts:148"}, "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-3a9f50dbcbbe3a77", "name": "Stray `console.log` in TS/JS \u2014 scripts/load/mapguard-batch.js:124", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/load/mapguard-batch.js:124"}, "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-f310af982ede55c3", "name": "Stray `console.log` in TS/JS \u2014 scripts/voice-smoke/measure-latency.ts:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/voice-smoke/measure-latency.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-d0383f1ed3de2835", "name": "Stray `console.log` in TS/JS \u2014 scripts/google-verification/record-demo.spec.ts:84", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/google-verification/record-demo.spec.ts:84"}, "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-237e12e596051da5", "name": "Stray `console.log` in TS/JS \u2014 scripts/sms/patch-existing-numbers.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sms/patch-existing-numbers.ts:49"}, "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-de7d387ffdb85ff7", "name": "Stray `console.log` in TS/JS \u2014 script/smoke.ts:109", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 script/smoke.ts:109"}, "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-b22010a98a4ff189", "name": "Stray `console.log` in TS/JS \u2014 script/build.ts:101", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 script/build.ts:101"}, "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-bcec57442b95af4e", "name": "Stray `console.log` in TS/JS \u2014 server/auditRoutes.audit-general.test.ts:552", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/auditRoutes.audit-general.test.ts:552"}, "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-bff99a1a20a7ccb5", "name": "Stray `console.log` in TS/JS \u2014 server/exec-server.ts:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/exec-server.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-6449735e57a2dc53", "name": "Stray `console.log` in TS/JS \u2014 server/bootstrapDoppler.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/bootstrapDoppler.ts:49"}, "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-6893e8a469d544fd", "name": "Stray `console.log` in TS/JS \u2014 server/auditRoutes.premium.test.ts:307", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/auditRoutes.premium.test.ts:307"}, "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-268a22ea80b76d02", "name": "Stray `console.log` in TS/JS \u2014 server/auditRoutes.narrative-bg.test.ts:162", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/auditRoutes.narrative-bg.test.ts:162"}, "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-e77953e60397984d", "name": "Stray `console.log` in TS/JS \u2014 server/twilioClient.smsCost.test.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/twilioClient.smsCost.test.ts:34"}, "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-c287be2b07b4bb5b", "name": "Stray `console.log` in TS/JS \u2014 server/auditRoutes.competitors.test.ts:438", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/auditRoutes.competitors.test.ts:438"}, "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-f8384657b29da0ce", "name": "Stray `console.log` in TS/JS \u2014 server/auditScoring.test.ts:258", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/auditScoring.test.ts:258"}, "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-d70dcbd8f5b83013", "name": "Stray `console.log` in TS/JS \u2014 server/auditRoutes.niche-cascade.test.ts:304", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/auditRoutes.niche-cascade.test.ts:304"}, "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-6dac5f624a886cdc", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/test-tradeline-flow.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/test-tradeline-flow.ts:29"}, "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-64cb965e68f250c6", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/seed-services.ts:110", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/seed-services.ts:110"}, "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-d76f14c65cf91f6f", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/test-stripe-flow.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/test-stripe-flow.ts:35"}, "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-774176b3ea5ad186", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/sync-stripe.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/sync-stripe.ts:43"}, "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-d4b745bb2ea2de45", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/seed-admin.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/seed-admin.ts:39"}, "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-0efd1efdf59ec3d6", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/seed-suppliers.ts:105", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/seed-suppliers.ts:105"}, "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-92ef06dc59c05a49", "name": "Stray `console.log` in TS/JS \u2014 server/lib/smsQuietHours.test.ts:254", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/smsQuietHours.test.ts:254"}, "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-0b6a2205740477a4", "name": "Stray `console.log` in TS/JS \u2014 server/lib/analytics.funnel.test.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/analytics.funnel.test.ts:56"}, "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-8fb192942f915dff", "name": "TODO/FIXME marker in shipping code \u2014 server/lib/notificationPreferences.ts:135", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 server/lib/notificationPreferences.ts:135"}, "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-5eb097e198598e24", "name": "Stray `console.log` in TS/JS \u2014 server/lib/schemaSentinel.test.ts:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/schemaSentinel.test.ts:64"}, "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-82e71ac9f9ddde12", "name": "Stray `console.log` in TS/JS \u2014 server/lib/smsTemplateResolver.test.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/smsTemplateResolver.test.ts:33"}, "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-070ff2c6617d1204", "name": "Stray `console.log` in TS/JS \u2014 server/lib/dataforseoReviews.test.ts:74", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/dataforseoReviews.test.ts:74"}, "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-d8e2101ba40caa70", "name": "Stray `console.log` in TS/JS \u2014 server/lib/bookflowSmsTemplates.test.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/bookflowSmsTemplates.test.ts:40"}, "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-8eaddb9496e9c4dc", "name": "Stray `console.log` in TS/JS \u2014 server/lib/adminTwoFactorPolicy.test.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/adminTwoFactorPolicy.test.ts:34"}, "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-77f62be75fa9e89f", "name": "Stray `console.log` in TS/JS \u2014 server/lib/smsSegments.test.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/smsSegments.test.ts:30"}, "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-1ca2c93238814833", "name": "Stray `console.log` in TS/JS \u2014 server/lib/quotequickHomeownerSms.test.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/quotequickHomeownerSms.test.ts:26"}, "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-5d54fa15e45ac643", "name": "Stray `console.log` in TS/JS \u2014 server/lib/recoveryCodes.test.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/recoveryCodes.test.ts:33"}, "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-162f02269e072d36", "name": "Stray `console.log` in TS/JS \u2014 server/lib/bodyLimits.test.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/bodyLimits.test.ts:50"}, "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-58112da3943871e6", "name": "Stray `console.log` in TS/JS \u2014 server/lib/loginToken.test.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/loginToken.test.ts:32"}, "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-78aa45351303afb7", "name": "Stray `console.log` in TS/JS \u2014 server/lib/checkoutPaymentGate.test.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/checkoutPaymentGate.test.ts:42"}, "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-e61aec023362c334", "name": "Stray `console.log` in TS/JS \u2014 server/lib/serpOrchestrator.test.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/serpOrchestrator.test.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-e92352929d4b9cb6", "name": "Stray `console.log` in TS/JS \u2014 server/lib/transientInfraErrors.test.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/transientInfraErrors.test.ts:29"}, "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-373d434bcc8303c1", "name": "Stray `console.log` in TS/JS \u2014 server/routes/outreachAttributionRoutes.test.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/outreachAttributionRoutes.test.ts:40"}, "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-d8b61e1f9c799971", "name": "Stray `console.log` in TS/JS \u2014 server/routes/quoteWidgetDistanceRoutes.test.ts:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/quoteWidgetDistanceRoutes.test.ts:66"}, "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-0355512615fe6161", "name": "TODO/FIXME marker in shipping code \u2014 server/routes/stripeBillingRoutes.ts:1314", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 server/routes/stripeBillingRoutes.ts:1314"}, "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-95c76a55e9ee503b", "name": "TODO/FIXME marker in shipping code \u2014 server/routes/mobileVoiceRoutes.ts:176", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 server/routes/mobileVoiceRoutes.ts:176"}, "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-ad53469a916a56a7", "name": "TODO/FIXME marker in shipping code \u2014 server/routes/socialSyncRoutes.ts:1397", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 server/routes/socialSyncRoutes.ts:1397"}, "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-2bb4e6157627f4c2", "name": "Stray `console.log` in TS/JS \u2014 server/routes/stripeBillingRoutes.subscriptionCancel.test.ts:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/stripeBillingRoutes.subscriptionCancel.test.ts:60"}, "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-5dbdd6752d81bad1", "name": "Stray `console.log` in TS/JS \u2014 server/routes/portalTradelineKnowledgeRoutes.routeOrder.test.ts:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/portalTradelineKnowledgeRoutes.routeOrder.test.ts:63"}, "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-f8c19ea22c63a117", "name": "Stray `console.log` in TS/JS \u2014 server/routes/citationMatch.test.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/citationMatch.test.ts:34"}, "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-7adbe9c80affecab", "name": "Stray `console.log` in TS/JS \u2014 server/routes/quotequickAiChatRoutes.fusion.test.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/quotequickAiChatRoutes.fusion.test.ts:43"}, "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-b1c4da44f45cb285", "name": "Stray `console.log` in TS/JS \u2014 server/routes/quoteWidgetUploadRoutes.test.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/quoteWidgetUploadRoutes.test.ts:65"}, "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-96e937c0d02ec205", "name": "Stray `console.log` in TS/JS \u2014 server/routes/portal/contentflow.generateSource.test.ts:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/portal/contentflow.generateSource.test.ts:62"}, "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-830799e07956f1b7", "name": "Stray `console.log` in TS/JS \u2014 server/routes/portal/catalog.test.ts:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/portal/catalog.test.ts:63"}, "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-b07880e6cbfc698a", "name": "Stray `console.log` in TS/JS \u2014 server/routes/portal/wave73KpiStats.test.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/portal/wave73KpiStats.test.ts:43"}, "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-e65b483352ccc057", "name": "Stray `console.log` in TS/JS \u2014 server/routes/portal/contentflowVideo.routes.test.ts:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/portal/contentflowVideo.routes.test.ts:64"}, "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-b6b0898be76dc85e", "name": "Stray `console.log` in TS/JS \u2014 server/services/sitelaunchPaidOrderNotify.test.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/sitelaunchPaidOrderNotify.test.ts:49"}, "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-04425f811184dd6b", "name": "Stray `console.log` in TS/JS \u2014 server/services/opsEngine.parse.test.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/opsEngine.parse.test.ts:22"}, "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-60afb28df80d124c", "name": "Stray `console.log` in TS/JS \u2014 server/services/outboundSafety.test.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/outboundSafety.test.ts:40"}, "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-78a9b518e722f144", "name": "Stray `console.log` in TS/JS \u2014 server/services/clientKnowledge.test.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/clientKnowledge.test.ts:65"}, "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-4f439a0f0461d69e", "name": "Stray `console.log` in TS/JS \u2014 server/services/clientChatAccess.test.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/clientChatAccess.test.ts:51"}, "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-253eb346bd526e12", "name": "Stray `console.log` in TS/JS \u2014 server/services/tradelineBooking.test.ts:192", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/tradelineBooking.test.ts:192"}, "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-706ed5c029cdb95a", "name": "Stray `console.log` in TS/JS \u2014 server/services/vapiService.sigverify.test.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/vapiService.sigverify.test.ts:30"}, "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-1cd3ef68ba9d47e7", "name": "Stray `console.log` in TS/JS \u2014 server/services/tradelineTemplates.routing.test.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/tradelineTemplates.routing.test.ts:32"}, "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-8518b664521a591d", "name": "Stray `console.log` in TS/JS \u2014 server/services/knowledgeBase.test.ts:207", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/knowledgeBase.test.ts:207"}, "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-2861c6f9010325e4", "name": "Stray `console.log` in TS/JS \u2014 server/services/contentflow/intakeSufficiency.test.ts:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/contentflow/intakeSufficiency.test.ts:68"}, "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-e74f6cd210198174", "name": "Stray `console.log` in TS/JS \u2014 server/services/contentflow/imageOrchestrator.flux2.test.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/contentflow/imageOrchestrator.flux2.test.ts:46"}, "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-e87744ac136e674b", "name": "Stray `console.log` in TS/JS \u2014 server/services/contentflow/referenceReplication.test.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/contentflow/referenceReplication.test.ts:44"}, "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-c05e8189f4ef1b4d", "name": "Stray `console.log` in TS/JS \u2014 server/services/contentflow/referenceCapture.test.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/contentflow/referenceCapture.test.ts:50"}, "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-92bc6706393cf8e4", "name": "Stray `console.log` in TS/JS \u2014 server/services/contentflow/imageOrchestrator.imagen4.test.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/contentflow/imageOrchestrator.imagen4.test.ts:41"}, "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-651ea1f6adba663b", "name": "Stray `console.log` in TS/JS \u2014 server/services/contentflow/videoDirectorService.test.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/contentflow/videoDirectorService.test.ts:49"}, "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-addf3a586baf4d5c", "name": "Stray `console.log` in TS/JS \u2014 server/services/contentflow/videoProviders/providers.test.ts:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/contentflow/videoProviders/providers.test.ts:68"}, "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-cc1ac0796025af00", "name": "Stray `console.log` in TS/JS \u2014 server/services/contentflow/videoStitcher/stitcher.test.ts:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/contentflow/videoStitcher/stitcher.test.ts:58"}, "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-de1bf05fbfa27273", "name": "Stray `console.log` in TS/JS \u2014 server/services/socialSync/metaSignedRequest.test.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/socialSync/metaSignedRequest.test.ts:32"}, "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-f9faceb11c798399", "name": "Stray `console.log` in TS/JS \u2014 server/services/tradelineSetup/kbSeeding.test.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/tradelineSetup/kbSeeding.test.ts:37"}, "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-e59c7d9fb863bd95", "name": "Stray `console.log` in TS/JS \u2014 server/services/tradelineSetup/entitlement.test.ts:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/tradelineSetup/entitlement.test.ts:80"}, "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-d5307525242a8a98", "name": "Stray `console.log` in TS/JS \u2014 server/services/tradelineSetup/unifyNumber.test.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/tradelineSetup/unifyNumber.test.ts:36"}, "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-f08f0c51fb47cc13", "name": "Stray `console.log` in TS/JS \u2014 server/services/rankflow/serpRankProvider.test.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/rankflow/serpRankProvider.test.ts:53"}, "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-44e8d2f8d7c31a2b", "name": "Stray `console.log` in TS/JS \u2014 server/services/seoContent/seoArticleGenerator.test.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/seoContent/seoArticleGenerator.test.ts:56"}, "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-01cbe43e6be4e920", "name": "Stray `console.log` in TS/JS \u2014 server/services/seoContent/programmaticMatrixGenerator.test.ts:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/seoContent/programmaticMatrixGenerator.test.ts:61"}, "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-bf81cfdc9629a0b7", "name": "Stray `console.log` in TS/JS \u2014 server/services/seoContent/originalDataService.test.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/seoContent/originalDataService.test.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-e02823a787fdd316", "name": "Stray `console.log` in TS/JS \u2014 server/services/citationTracker/scrapers/scrapers.test.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/citationTracker/scrapers/scrapers.test.ts:65"}, "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-152ae9c3c48df7cd", "name": "Stray `console.log` in TS/JS \u2014 server/jobs/trialLifecycleWorker.test.ts:346", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/jobs/trialLifecycleWorker.test.ts:346"}, "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-95068c3300de2200", "name": "Stray `console.log` in TS/JS \u2014 server/jobs/quotequickHomeownerSms.test.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/jobs/quotequickHomeownerSms.test.ts:28"}, "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-3a8d9f235f8153f8", "name": "Stray `console.log` in TS/JS \u2014 server/jobs/personalizationWorker.test.ts:279", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/jobs/personalizationWorker.test.ts:279"}, "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-27016b59b82ea499", "name": "Stray `console.log` in TS/JS \u2014 server/jobs/videoRenderWorker.test.ts:349", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/jobs/videoRenderWorker.test.ts:349"}, "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-af2f30ef6b2c3fe6", "name": "Stray `console.log` in TS/JS \u2014 server/jobs/tradelineMonthlyDigest.test.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/jobs/tradelineMonthlyDigest.test.ts:23"}, "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-c092ecdd20035470", "name": "Stray `console.log` in TS/JS \u2014 server/jobs/quotequickMonthlyDigest.test.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/jobs/quotequickMonthlyDigest.test.ts:23"}, "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-29b94226db3a7a5f", "name": "Stray `console.log` in TS/JS \u2014 server/jobs/incompleteSignupWorker.test.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/jobs/incompleteSignupWorker.test.ts:50"}, "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-6930b9e15a9fe91a", "name": "Stray `console.log` in TS/JS \u2014 server/jobs/contentflowMonthlyDigest.test.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/jobs/contentflowMonthlyDigest.test.ts:35"}, "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-f5d538edfc43fe4b", "name": "Stray `console.log` in TS/JS \u2014 server/storage/contentflowVideo.test.ts:379", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/storage/contentflowVideo.test.ts:379"}, "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-50f1596c501442c8", "name": "Insecure pattern 'node_child_process' in audit.config.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in audit.config.ts:2"}, "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-114c8dc8df4c157c", "name": "Insecure pattern 'node_child_process' in playwright.config.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in playwright.config.ts:2"}, "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-2b8b02e9e6490f37", "name": "Insecure pattern 'direct_innerhtml_assignment' in Effortel Telecom Blog_ Insights & News on Telecom Growth.html:4869", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in Effortel Telecom Blog_ Insights & News on Telecom Growth.html:4869"}, "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-7dbf4b6b7e8ed228", "name": "Insecure pattern 'insert_adjacent_html' in Effortel Telecom Blog_ Insights & News on Telecom Growth.html:3318", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in Effortel Telecom Blog_ Insights & News on Telecom Growth.html:3318"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-796fa7430b66d061", "name": "Insecure pattern 'domparser_html_parse' in Effortel Telecom Blog_ Insights & News on Telecom Growth.html:2444", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in Effortel Telecom Blog_ Insights & News on Telecom Growth.html:2444"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2830c3122548d0df", "name": "Insecure pattern 'node_child_process' in smoke.config.ts:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in smoke.config.ts:14"}, "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-68a54326654a9253", "name": "Insecure pattern 'direct_innerhtml_assignment' in Effortel Case Studies _ Innovative Telecom Solutions & Success Stories", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in Effortel Case Studies _ Innovative Telecom Solutions & Success Stories.html:4869"}, "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-d76e6f31df7beffb", "name": "Insecure pattern 'insert_adjacent_html' in Effortel Case Studies _ Innovative Telecom Solutions & Success Stories.html:3", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in Effortel Case Studies _ Innovative Telecom Solutions & Success Stories.html:3318"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a0c92808db8cb709", "name": "Insecure pattern 'domparser_html_parse' in Effortel Case Studies _ Innovative Telecom Solutions & Success Stories.html:2", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in Effortel Case Studies _ Innovative Telecom Solutions & Success Stories.html:2444"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-575ee6ec4d6d13fd", "name": "Insecure pattern 'direct_innerhtml_assignment' in client/public/embed-chat.js:41", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in client/public/embed-chat.js:41"}, "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-ec5bf1709e0ee222", "name": "Insecure pattern 'direct_innerhtml_assignment' in client/public/embed-widget.js:182", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in client/public/embed-widget.js:182"}, "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-d96b1de1df047268", "name": "Insecure pattern 'direct_innerhtml_assignment' in client/public/widget/callback.js:146", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in client/public/widget/callback.js:146"}, "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-29d810e8260b782b", "name": "Insecure pattern 'direct_innerhtml_assignment' in client/public/widget/faq.js:56", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in client/public/widget/faq.js:56"}, "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-9b3d087d6fb91659", "name": "Insecure pattern 'direct_innerhtml_assignment' in client/public/widget/v1.js:93", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in client/public/widget/v1.js:93"}, "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-9ccd2e817db5e91c", "name": "Insecure pattern 'direct_innerhtml_assignment' in client/public/widget/hours.js:120", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in client/public/widget/hours.js:120"}, "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-2741617d27495466", "name": "Insecure pattern 'direct_innerhtml_assignment' in client/public/widget/badges.js:75", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in client/public/widget/badges.js:75"}, "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-8ee765ed7fa89066", "name": "Insecure pattern 'direct_innerhtml_assignment' in client/public/widget/embed.js:112", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in client/public/widget/embed.js:112"}, "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-8df37d9232a59094", "name": "Insecure pattern 'dangerous_innerhtml' in client/src/components/ui/chart.tsx:81", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in client/src/components/ui/chart.tsx:81"}, "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-846e43aefd2d7c24", "name": "Insecure pattern 'dangerous_innerhtml' in client/src/components/quote-widget/ContactStep.tsx:411", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in client/src/components/quote-widget/ContactStep.tsx:411"}, "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-d8a39287c6b8d435", "name": "Insecure pattern 'dangerous_innerhtml' in client/src/components/quote-widget/CalculatorStepper.tsx:213", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in client/src/components/quote-widget/CalculatorStepper.tsx:213"}, "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-bd3479301ddc6626", "name": "Insecure pattern 'direct_innerhtml_assignment' in client/src/components/marketing/TradeLineHeroPhone.tsx:215", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in client/src/components/marketing/TradeLineHeroPhone.tsx:215"}, "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-4c2d267555429679", "name": "Insecure pattern 'direct_innerhtml_assignment' in client/src/components/marketing/showcase/DataStreamCard.tsx:131", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in client/src/components/marketing/showcase/DataStreamCard.tsx:131"}, "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-356ec61a24a6a1fc", "name": "Insecure pattern 'direct_innerhtml_assignment' in client/src/components/marketing/globe/GlobeCanvas.tsx:144", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in client/src/components/marketing/globe/GlobeCanvas.tsx:144"}, "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-07954476bd34085d", "name": "Insecure pattern 'domparser_html_parse' in client/src/components/wizard/elfsight/richTextSanitize.ts:191", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in client/src/components/wizard/elfsight/richTextSanitize.ts:191"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-58f7b7588f12acfd", "name": "Insecure pattern 'exec_used' in client/src/components/wizard/elfsight/RichTextField.tsx:279", "shortDescription": {"text": "Insecure pattern 'exec_used' in client/src/components/wizard/elfsight/RichTextField.tsx:279"}, "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-e7aa22e80f954ea9", "name": "Insecure pattern 'direct_innerhtml_assignment' in client/src/components/wizard/elfsight/RichTextField.tsx:138", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in client/src/components/wizard/elfsight/RichTextField.tsx:138"}, "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-0f9d6af0ab6b1112", "name": "Insecure pattern 'insert_adjacent_html' in client/src/components/wizard/elfsight/useFoldablePanels.ts:153", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in client/src/components/wizard/elfsight/useFoldablePanels.ts:153"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8c059ea97d40d430", "name": "Insecure pattern 'dangerous_innerhtml' in client/src/pages/marketing/aiReceptionistDetail.tsx:62", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in client/src/pages/marketing/aiReceptionistDetail.tsx:62"}, "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-373e513cc7548230", "name": "Insecure pattern 'dangerous_innerhtml' in client/src/pages/marketing/tools/GoogleReviewLinkGenerator.tsx:352", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in client/src/pages/marketing/tools/GoogleReviewLinkGenerator.tsx:352"}, "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-62807d256551228a", "name": "Possible secret in client/src/pages/admin/ChangePasswordPage.tsx", "shortDescription": {"text": "Possible secret in client/src/pages/admin/ChangePasswordPage.tsx"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-b2af409e094c994f", "name": "Insecure pattern 'node_child_process' in scripts/check-schema-drift.mjs:45", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check-schema-drift.mjs:45"}, "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-3bc238773ba12e8b", "name": "Insecure pattern 'node_child_process' in scripts/post-deploy-verify.mjs:20", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/post-deploy-verify.mjs:20"}, "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-d09d3bdd8b7475a2", "name": "Insecure pattern 'node_child_process' in scripts/staging-gate/push-to-staging.mjs:24", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/staging-gate/push-to-staging.mjs:24"}, "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-37189b94f66277d1", "name": "Possible secret in scripts/load/README.md", "shortDescription": {"text": "Possible secret in scripts/load/README.md"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-1ebcb1802ad5ead5", "name": "Insecure pattern 'node_child_process' in script/build.ts:4", "shortDescription": {"text": "Insecure pattern 'node_child_process' in script/build.ts:4"}, "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-910908cb913bb7a2", "name": "Possible secret in server/auditRoutes.ts", "shortDescription": {"text": "Possible secret in server/auditRoutes.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-c6631a84bab213b9", "name": "Insecure pattern 'exec_used' in server/exec-server.ts:58", "shortDescription": {"text": "Insecure pattern 'exec_used' in server/exec-server.ts:58"}, "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-8ef96d77a2575084", "name": "Insecure pattern 'node_child_process' in server/exec-server.ts:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/exec-server.ts:3"}, "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-2956d4eb4b93c9f0", "name": "Insecure pattern 'node_child_process' in server/bootstrapDoppler.ts:30", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/bootstrapDoppler.ts:30"}, "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-b46671971728de64", "name": "Insecure pattern 'cors_wildcard' in server/routes/serviceAreaMapRoutes.ts:580", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in server/routes/serviceAreaMapRoutes.ts:580"}, "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-97f023cf971c4d7d", "name": "Insecure pattern 'cors_wildcard' in server/routes/reviewPublicRoutes.ts:225", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in server/routes/reviewPublicRoutes.ts:225"}, "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-c1b37a8b3e92c515", "name": "Insecure pattern 'direct_innerhtml_assignment' in server/routes/widgetRoutes.ts:244", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in server/routes/widgetRoutes.ts:244"}, "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-8ed99f4f5f8f3069", "name": "Insecure pattern 'cors_wildcard' in server/routes/widgetRoutes.ts:50", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in server/routes/widgetRoutes.ts:50"}, "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-bbb07a95cf651f77", "name": "Insecure pattern 'cors_wildcard' in server/routes/widgetSchedulingRoutes.ts:110", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in server/routes/widgetSchedulingRoutes.ts:110"}, "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-11e53984212a46c0", "name": "Insecure pattern 'cors_wildcard' in server/routes/reviewFunnelRoutes.ts:50", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in server/routes/reviewFunnelRoutes.ts:50"}, "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-f67195c58be5542b", "name": "Insecure pattern 'cors_wildcard' in server/routes/widgetFreetoolsRoutes.ts:95", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in server/routes/widgetFreetoolsRoutes.ts:95"}, "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-20eddda96e378f1d", "name": "Insecure pattern 'node_child_process' in server/replit_integrations/audio/client.ts:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/replit_integrations/audio/client.ts:3"}, "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-92cd51cfe02ee7ba", "name": "Insecure pattern 'node_child_process' in server/services/contentflow/videoStitcher/stitcher.test.ts:39", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/services/contentflow/videoStitcher/stitcher.test.ts:39"}, "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-0f755cf80385dc77", "name": "Insecure pattern 'node_child_process' in server/services/contentflow/videoStitcher/ffmpegStitcher.ts:32", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/services/contentflow/videoStitcher/ffmpegStitcher.ts:32"}, "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-6fdd5ee9eaf6b855", "name": "Insecure pattern 'weak_hash' in server/services/socialSync/metaSignedRequest.test.ts:93", "shortDescription": {"text": "Insecure pattern 'weak_hash' in server/services/socialSync/metaSignedRequest.test.ts:93"}, "fullDescription": {"text": "Found a known-risky pattern (weak_hash). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f94858e55c5a76f0", "name": "Insecure pattern 'node_child_process' in .github/workflows/post-deploy-watchdog.yml:410", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .github/workflows/post-deploy-watchdog.yml:410"}, "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-1268c919c5190000", "name": "Insecure pattern 'document_write' in attached_assets/UX_Research_&_Design_Testing_Platform___Optimal_Workshop_1772074376", "shortDescription": {"text": "Insecure pattern 'document_write' in attached_assets/UX_Research_&_Design_Testing_Platform___Optimal_Workshop_1772074376900.html:930"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-97a99da461adb561", "name": "Insecure pattern 'direct_innerhtml_assignment' in attached_assets/UX_Research_&_Design_Testing_Platform___Optimal_Worksh", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in attached_assets/UX_Research_&_Design_Testing_Platform___Optimal_Workshop_1772074376900.html:877"}, "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-f24a25c1b71ca564", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/github-script@v7 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-397ffb69fd282511", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "treosh/lighthouse-ci-action@v12 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": "medium", "confidence": 1.0}}, {"id": "scanner-662882381f0f4033", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cc6e77416e7c6563", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/github-script@v7 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-37bfcdc630821b59", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-50e57f13ec325b3f", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@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-ef6ee0832fe4f5f6", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ce947a6eaf517a4c", "name": "Very large file: client/src/App.tsx (835 lines)", "shortDescription": {"text": "Very large file: client/src/App.tsx (835 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-25afc61f03047bba", "name": "Very large file: client/src/components/ai/AIChatBubble.tsx (1418 lines)", "shortDescription": {"text": "Very large file: client/src/components/ai/AIChatBubble.tsx (1418 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-4679357664e28ab7", "name": "Very large file: client/src/components/quote-widget/AdvancedCalculator.tsx (5022 lines)", "shortDescription": {"text": "Very large file: client/src/components/quote-widget/AdvancedCalculator.tsx (5022 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-84db65914e773ee4", "name": "Very large file: client/src/components/marketing/TradeLineHeroPhone.tsx (1314 lines)", "shortDescription": {"text": "Very large file: client/src/components/marketing/TradeLineHeroPhone.tsx (1314 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-6cb9419a62a80e32", "name": "Very large file: client/src/components/marketing/competeVariants.tsx (1757 lines)", "shortDescription": {"text": "Very large file: client/src/components/marketing/competeVariants.tsx (1757 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-dc0e1a237cce06a2", "name": "Very large file: client/src/components/marketing/SelfServiceDragDrop.tsx (2940 lines)", "shortDescription": {"text": "Very large file: client/src/components/marketing/SelfServiceDragDrop.tsx (2940 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-e1103a18e40bc9ce", "name": "Very large file: client/src/components/admin/MapguardOpsTab.tsx (1149 lines)", "shortDescription": {"text": "Very large file: client/src/components/admin/MapguardOpsTab.tsx (1149 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-6ff216e7ce03bf91", "name": "Very large file: client/src/components/admin/AdminCopilot.tsx (1523 lines)", "shortDescription": {"text": "Very large file: client/src/components/admin/AdminCopilot.tsx (1523 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-d3c5514254b65eed", "name": "Very large file: client/src/components/admin/SocialSyncTab.tsx (1767 lines)", "shortDescription": {"text": "Very large file: client/src/components/admin/SocialSyncTab.tsx (1767 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-ef656b31dea98671", "name": "Very large file: client/src/components/admin/AdminLayout.tsx (1611 lines)", "shortDescription": {"text": "Very large file: client/src/components/admin/AdminLayout.tsx (1611 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-8a83f6297adff3cd", "name": "Very large file: client/src/components/portal/PortalChatWidget.tsx (1253 lines)", "shortDescription": {"text": "Very large file: client/src/components/portal/PortalChatWidget.tsx (1253 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-02156ac9a0417814", "name": "Very large file: client/src/components/wizard/elfsight/FieldRow.tsx (2242 lines)", "shortDescription": {"text": "Very large file: client/src/components/wizard/elfsight/FieldRow.tsx (2242 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-599831e94d7162ff", "name": "Very large file: client/src/components/wizard/elfsight/AIBubble.tsx (2375 lines)", "shortDescription": {"text": "Very large file: client/src/components/wizard/elfsight/AIBubble.tsx (2375 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-0efb8344467b6b94", "name": "Very large file: client/src/components/wizard/elfsight/ActionTab.tsx (1728 lines)", "shortDescription": {"text": "Very large file: client/src/components/wizard/elfsight/ActionTab.tsx (1728 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-2f513d02b52e62de", "name": "Very large file: client/src/components/wizard/elfsight/WizardShell.tsx (3762 lines)", "shortDescription": {"text": "Very large file: client/src/components/wizard/elfsight/WizardShell.tsx (3762 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-c27bc7b16adf5ee6", "name": "Very large file: client/src/components/wizard/elfsight/MobileBottomSheet.tsx (1053 lines)", "shortDescription": {"text": "Very large file: client/src/components/wizard/elfsight/MobileBottomSheet.tsx (1053 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-8da07ab514268a8f", "name": "Very large file: client/src/components/wizard/elfsight/InstallTab.tsx (1533 lines)", "shortDescription": {"text": "Very large file: client/src/components/wizard/elfsight/InstallTab.tsx (1533 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-ec8f8f3828c70721", "name": "Very large file: client/src/components/wizard/elfsight/PreviewPane.tsx (4962 lines)", "shortDescription": {"text": "Very large file: client/src/components/wizard/elfsight/PreviewPane.tsx (4962 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-e6d113e12391d26b", "name": "Very large file: client/src/components/wizard/elfsight/StyleTab.tsx (4142 lines)", "shortDescription": {"text": "Very large file: client/src/components/wizard/elfsight/StyleTab.tsx (4142 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-59abd0a52bc66e82", "name": "Very large file: client/src/pages/PricingUnified.tsx (1857 lines)", "shortDescription": {"text": "Very large file: client/src/pages/PricingUnified.tsx (1857 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-40c91805e0b95ca6", "name": "Very large file: client/src/pages/dashboard.tsx (2108 lines)", "shortDescription": {"text": "Very large file: client/src/pages/dashboard.tsx (2108 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-86cc7f3c2a668a4c", "name": "Very large file: client/src/pages/solutions/SolutionPage.tsx (1361 lines)", "shortDescription": {"text": "Very large file: client/src/pages/solutions/SolutionPage.tsx (1361 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-8551ab73726ac0fe", "name": "Very large file: client/src/pages/marketing/SharedAuditReport.tsx (1144 lines)", "shortDescription": {"text": "Very large file: client/src/pages/marketing/SharedAuditReport.tsx (1144 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-5d23830ff6a16960", "name": "Very large file: client/src/pages/marketing/template-detail.tsx (1642 lines)", "shortDescription": {"text": "Very large file: client/src/pages/marketing/template-detail.tsx (1642 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-9f5044dd955901fa", "name": "Very large file: client/src/pages/marketing/ApiDocsPage.tsx (1617 lines)", "shortDescription": {"text": "Very large file: client/src/pages/marketing/ApiDocsPage.tsx (1617 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-e8a5838f85109bd5", "name": "Very large file: client/src/pages/marketing/FreeAudit.tsx (1856 lines)", "shortDescription": {"text": "Very large file: client/src/pages/marketing/FreeAudit.tsx (1856 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-df4e4a5308943d38", "name": "Very large file: client/src/pages/marketing/ReportView.tsx (4191 lines)", "shortDescription": {"text": "Very large file: client/src/pages/marketing/ReportView.tsx (4191 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-d1b7dee4d4c03b85", "name": "Very large file: client/src/pages/admin/ClientDetailPage.tsx (3209 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/ClientDetailPage.tsx (3209 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-9e7e0c479277ec4e", "name": "Very large file: client/src/pages/admin/SuppliersPage.tsx (1216 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/SuppliersPage.tsx (1216 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-3d08c15068881c59", "name": "Very large file: client/src/pages/admin/UiPrimitivesDemo.tsx (1514 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/UiPrimitivesDemo.tsx (1514 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-af88a07445da84ff", "name": "Very large file: client/src/pages/admin/ProductDetailPage.tsx (2001 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/ProductDetailPage.tsx (2001 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-3a21ffd56941b135", "name": "Very large file: client/src/pages/admin/CommunicationsPage.tsx (1998 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/CommunicationsPage.tsx (1998 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-29ab80abd75acb99", "name": "Very large file: client/src/pages/admin/MobilePreview/PreviewScreens.tsx (1378 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/MobilePreview/PreviewScreens.tsx (1378 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-734e4ff31ce8c648", "name": "Very large file: client/src/pages/admin/outbound/ProspectsPage.tsx (1122 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/outbound/ProspectsPage.tsx (1122 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-60769d2158755fef", "name": "Very large file: client/src/pages/portal/PortalSettings.tsx (2175 lines)", "shortDescription": {"text": "Very large file: client/src/pages/portal/PortalSettings.tsx (2175 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-8c9f012baabae42b", "name": "Very large file: client/src/pages/portal/PortalMapguard.tsx (1248 lines)", "shortDescription": {"text": "Very large file: client/src/pages/portal/PortalMapguard.tsx (1248 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-e4b63b98abcc54e0", "name": "Very large file: client/src/pages/portal/PortalServiceDetail.tsx (1346 lines)", "shortDescription": {"text": "Very large file: client/src/pages/portal/PortalServiceDetail.tsx (1346 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-1dfd975391e87794", "name": "Very large file: client/src/pages/portal/PortalReviews.tsx (1112 lines)", "shortDescription": {"text": "Very large file: client/src/pages/portal/PortalReviews.tsx (1112 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-2d1150eab24b1e44", "name": "Very large file: client/src/pages/products/EffortelProductPage.tsx (2045 lines)", "shortDescription": {"text": "Very large file: client/src/pages/products/EffortelProductPage.tsx (2045 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-fbe7a29398bca1c7", "name": "Very large file: client/src/pages/products/quotequick/BuildWithAi.tsx (1355 lines)", "shortDescription": {"text": "Very large file: client/src/pages/products/quotequick/BuildWithAi.tsx (1355 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-d7b6b312b85a921b", "name": "Very large file: shared/templatePresets.ts (10817 lines)", "shortDescription": {"text": "Very large file: shared/templatePresets.ts (10817 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-ae1adc45258c16e2", "name": "Very large file: shared/contentflow/promptLibrary.ts (1258 lines)", "shortDescription": {"text": "Very large file: shared/contentflow/promptLibrary.ts (1258 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-a31df9701bb07909", "name": "Very large file: shared/schemas/adminCrm.ts (1261 lines)", "shortDescription": {"text": "Very large file: shared/schemas/adminCrm.ts (1261 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-304baf5ba4fcb5cf", "name": "Very large file: shared/schemas/db.ts (1457 lines)", "shortDescription": {"text": "Very large file: shared/schemas/db.ts (1457 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-07c91a40246e5969", "name": "Very large file: server/auditRoutes.ts (5414 lines)", "shortDescription": {"text": "Very large file: server/auditRoutes.ts (5414 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-e58e01ca34bba7ac", "name": "Very large file: server/storage.ts (2757 lines)", "shortDescription": {"text": "Very large file: server/storage.ts (2757 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-5e1280792b779a55", "name": "Very large file: server/scripts/seed-services.ts (878 lines)", "shortDescription": {"text": "Very large file: server/scripts/seed-services.ts (878 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-66ca08a79ae4cc02", "name": "Very large file: server/routes/authRoutes.ts (1943 lines)", "shortDescription": {"text": "Very large file: server/routes/authRoutes.ts (1943 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-70d894df1e994bd2", "name": "Very large file: server/routes/adminOutboundRoutes.ts (2027 lines)", "shortDescription": {"text": "Very large file: server/routes/adminOutboundRoutes.ts (2027 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-8cd1dc3102445e36", "name": "Very large file: server/routes/tradelineSetupRoutes.ts (1278 lines)", "shortDescription": {"text": "Very large file: server/routes/tradelineSetupRoutes.ts (1278 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-be3462d1563775b8", "name": "Very large file: server/routes/stripeBillingRoutes.ts (1929 lines)", "shortDescription": {"text": "Very large file: server/routes/stripeBillingRoutes.ts (1929 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-0e907d640be47f67", "name": "Very large file: server/routes/contentflowRoutes.ts (1742 lines)", "shortDescription": {"text": "Very large file: server/routes/contentflowRoutes.ts (1742 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-daa131d6e9686074", "name": "Very large file: server/routes/aiRoutes.ts (1262 lines)", "shortDescription": {"text": "Very large file: server/routes/aiRoutes.ts (1262 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-7ee9fe510078fe50", "name": "Very large file: server/routes/bookflowRoutes.ts (1436 lines)", "shortDescription": {"text": "Very large file: server/routes/bookflowRoutes.ts (1436 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-01a925e7eec9e386", "name": "Very large file: server/routes/adminCrmRoutes.ts (5101 lines)", "shortDescription": {"text": "Very large file: server/routes/adminCrmRoutes.ts (5101 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-da23ed72b8b2268a", "name": "Very large file: server/routes/socialSyncRoutes.ts (1492 lines)", "shortDescription": {"text": "Very large file: server/routes/socialSyncRoutes.ts (1492 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-0ab8545ef06b4153", "name": "Very large file: server/routes/freeToolsRoutes.ts (1647 lines)", "shortDescription": {"text": "Very large file: server/routes/freeToolsRoutes.ts (1647 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-ef03d208e33e707a", "name": "Very large file: server/routes/portal/contentflow.ts (2465 lines)", "shortDescription": {"text": "Very large file: server/routes/portal/contentflow.ts (2465 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-1274636227abe81b", "name": "Very large file: server/services/mapguardTaskEngine.ts (1331 lines)", "shortDescription": {"text": "Very large file: server/services/mapguardTaskEngine.ts (1331 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-4aef5d6acca99881", "name": "Very large file: server/services/tradelineTemplates.ts (2257 lines)", "shortDescription": {"text": "Very large file: server/services/tradelineTemplates.ts (2257 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-753964894ce63d1f", "name": "Very large file: server/services/vapiService.ts (1615 lines)", "shortDescription": {"text": "Very large file: server/services/vapiService.ts (1615 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-19e8d0919f646b96", "name": "Very large file: server/services/promptBuilder.ts (1596 lines)", "shortDescription": {"text": "Very large file: server/services/promptBuilder.ts (1596 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-201159d3ce4d9c29", "name": "Very large file: server/services/mapguardMonitor.ts (1222 lines)", "shortDescription": {"text": "Very large file: server/services/mapguardMonitor.ts (1222 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-7c58c443b78b2b86", "name": "Very large file: server/jobs/scheduler.ts (1576 lines)", "shortDescription": {"text": "Very large file: server/jobs/scheduler.ts (1576 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": "205 tests / 1850 src (ratio 0.11)."}, "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-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 611 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 1212 placeholder/mock markers across 326 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-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. 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-122f91b7f2906dc4", "name": "Agent authority lacks a verifier contract: .claude/settings.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-de84b14d70204508", "name": "Agent authority lacks a verifier contract: .cursor/commands/rebuild-section.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .cursor/commands/rebuild-section.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-95baaaaa9e619fae", "name": "Agent authority lacks a verifier contract: .cursor/commands/implement-design.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .cursor/commands/implement-design.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7b86e9aab2df382b", "name": "Commented-code block (5 lines) in lighthouserc.cjs:72", "shortDescription": {"text": "Commented-code block (5 lines) in lighthouserc.cjs:72"}, "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-0e011d96f7aa8af7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/replit_integrations/audio/useVoiceStream.ts:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/replit_integrations/audio/useVoiceStream.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-74a657f873399b32", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/public/widget/callback.js:127", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/public/widget/callback.js:127"}, "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-5fb7a344bca16dd3", "name": "Commented-code block (5 lines) in client/public/widget/v1.js:12", "shortDescription": {"text": "Commented-code block (5 lines) in client/public/widget/v1.js:12"}, "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-34cde9d056236c35", "name": "Commented-code block (9 lines) in client/src/config/products.ts:117", "shortDescription": {"text": "Commented-code block (9 lines) in client/src/config/products.ts:117"}, "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-23e709f14456e973", "name": "Commented-code block (6 lines) in client/src/components/CheckoutModal.tsx:122", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/CheckoutModal.tsx:122"}, "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-7849c4fc09e5bca6", "name": "Commented-code block (5 lines) in client/src/components/contentflow/ContentFlowPreviewModal.tsx:128", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/contentflow/ContentFlowPreviewModal.tsx:128"}, "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-28755a241b7a1152", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/contentflow/ContentFlowSettingsPanel.tsx:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/contentflow/ContentFlowSettingsPanel.tsx: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-3a84d0afbf019b63", "name": "Legacy-named symbol `queue_backup` in client/src/components/webcare/plainLanguage.ts:81", "shortDescription": {"text": "Legacy-named symbol `queue_backup` in client/src/components/webcare/plainLanguage.ts:81"}, "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-144c6f3953607777", "name": "Commented-code block (5 lines) in client/src/components/ai/AIChatBubble.tsx:73", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/ai/AIChatBubble.tsx:73"}, "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-a6cea8361c1c4529", "name": "Commented-code block (5 lines) in client/src/components/shared/AppErrorBoundary.tsx:60", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/shared/AppErrorBoundary.tsx:60"}, "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-aa9156e218653db5", "name": "Commented-code block (9 lines) in client/src/components/shared/TemplateThumbnail.tsx:6", "shortDescription": {"text": "Commented-code block (9 lines) in client/src/components/shared/TemplateThumbnail.tsx:6"}, "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-89c538465b61eec5", "name": "Commented-code block (5 lines) in client/src/components/ui/navbar-menu.tsx:20", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/ui/navbar-menu.tsx:20"}, "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-1efe11c33a3ca6b8", "name": "Commented-code block (5 lines) in client/src/components/ui/visual-primitives/Sparkline.tsx:163", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/ui/visual-primitives/Sparkline.tsx:163"}, "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-57d41febcedac89b", "name": "Commented-code block (6 lines) in client/src/components/ui/visual-primitives/KpiGauge.tsx:215", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/ui/visual-primitives/KpiGauge.tsx:215"}, "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-654eb88812ad0fd5", "name": "Commented-code block (7 lines) in client/src/components/ui/visual-primitives/AIDraftEditor.tsx:57", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/components/ui/visual-primitives/AIDraftEditor.tsx:57"}, "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-4457c932003bf197", "name": "Commented-code block (7 lines) in client/src/components/ui/visual-primitives/OnboardingWalkthrough.tsx:87", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/components/ui/visual-primitives/OnboardingWalkthrough.tsx: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-f6bfc06622ab47da", "name": "Commented-code block (6 lines) in client/src/components/tradeline/WidgetStylePreviewModal.tsx:62", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/tradeline/WidgetStylePreviewModal.tsx:62"}, "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-ec7256b57db37a42", "name": "Commented-code block (5 lines) in client/src/components/quote-widget/PhotoUploadField.tsx:169", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/quote-widget/PhotoUploadField.tsx:169"}, "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-7c3a35e566f84cb1", "name": "Commented-code block (8 lines) in client/src/components/quote-widget/PremiumAnimations.tsx:245", "shortDescription": {"text": "Commented-code block (8 lines) in client/src/components/quote-widget/PremiumAnimations.tsx:245"}, "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-cca4463c64d23e43", "name": "Commented-code block (5 lines) in client/src/components/quote-widget/QuoteWidget.tsx:116", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/quote-widget/QuoteWidget.tsx:116"}, "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-b1a341e1eb1988cb", "name": "Commented-code block (5 lines) in client/src/components/quote-widget/DistanceField.tsx:252", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/quote-widget/DistanceField.tsx:252"}, "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-e7c766518d4f83ce", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/quote-widget/DistanceField.tsx:191", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/quote-widget/DistanceField.tsx:191"}, "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-cc631d1d242665ba", "name": "Commented-code block (10 lines) in client/src/components/quote-widget/AdvancedCalculator.tsx:975", "shortDescription": {"text": "Commented-code block (10 lines) in client/src/components/quote-widget/AdvancedCalculator.tsx:975"}, "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-3b65c7e309977d7e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/quote-widget/AdvancedCalculator.tsx:3757", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/quote-widget/AdvancedCalculator.tsx:3757"}, "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-084d8cac15b1172b", "name": "Commented-code block (6 lines) in client/src/components/quote-widget/CalculatorLauncher.tsx:362", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/quote-widget/CalculatorLauncher.tsx:362"}, "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-a82397cf32e9f57f", "name": "Commented-code block (5 lines) in client/src/components/quote-widget/WidgetSelect.tsx:98", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/quote-widget/WidgetSelect.tsx:98"}, "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-5e8a3a0fbaecf074", "name": "Commented-code block (5 lines) in client/src/components/quote-widget/designTokens.ts:61", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/quote-widget/designTokens.ts:61"}, "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-fd03d2f6b08bb0c1", "name": "Commented-code block (8 lines) in client/src/components/quote-widget/TierSelector.tsx:73", "shortDescription": {"text": "Commented-code block (8 lines) in client/src/components/quote-widget/TierSelector.tsx:73"}, "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-9c5adac70f19f83f", "name": "Commented-code block (10 lines) in client/src/components/quote-widget/TrustBadgeRow.tsx:202", "shortDescription": {"text": "Commented-code block (10 lines) in client/src/components/quote-widget/TrustBadgeRow.tsx:202"}, "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-ffb01970b377cd9b", "name": "Commented-code block (5 lines) in client/src/components/quote-widget/steps/DepositStep.tsx:8", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/quote-widget/steps/DepositStep.tsx:8"}, "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-65661eacb4affb0e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/quote-widget/steps/DepositStep.tsx:96", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/quote-widget/steps/DepositStep.tsx:96"}, "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-7fb9cea1156b4586", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/quote-widget/steps/BookingStep.tsx:57", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/quote-widget/steps/BookingStep.tsx:57"}, "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-385af5d2e23ecb05", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/quote-widget/steps/SchedulingStep.tsx:127", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/quote-widget/steps/SchedulingStep.tsx:127"}, "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-239aa2be451fd5b7", "name": "Commented-code block (6 lines) in client/src/components/effortel-blocks/index.tsx:399", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/effortel-blocks/index.tsx:399"}, "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-a39c3bbaec2fb5c7", "name": "Commented-code block (6 lines) in client/src/components/marketing/FreeToolFormField.tsx:220", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/marketing/FreeToolFormField.tsx:220"}, "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-a89aa6a0ba55cb04", "name": "Commented-code block (7 lines) in client/src/components/marketing/competeVariants.tsx:1166", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/components/marketing/competeVariants.tsx:1166"}, "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-2039cad8631f198a", "name": "Commented-code block (8 lines) in client/src/components/marketing/AiReceptionistPreviewModal.tsx:37", "shortDescription": {"text": "Commented-code block (8 lines) in client/src/components/marketing/AiReceptionistPreviewModal.tsx:37"}, "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-bdd45e365b711204", "name": "Commented-code block (7 lines) in client/src/components/marketing/SelfServiceDragDrop.tsx:1267", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/components/marketing/SelfServiceDragDrop.tsx:1267"}, "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-a5816cdab43d6909", "name": "Commented-code block (5 lines) in client/src/components/marketing/AutomationDiagram.tsx:609", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/marketing/AutomationDiagram.tsx:609"}, "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-950bf86835b6b34c", "name": "Commented-code block (6 lines) in client/src/components/marketing/TradeLineDemoLauncher.tsx:48", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/marketing/TradeLineDemoLauncher.tsx:48"}, "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-aacf33ee11401124", "name": "Commented-code block (5 lines) in client/src/components/marketing/navigation/MobileNavItem.tsx:52", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/marketing/navigation/MobileNavItem.tsx:52"}, "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-bb0ac514c6dd1ef5", "name": "Commented-code block (5 lines) in client/src/components/marketing/navigation/FreeToolsMegaPanel.tsx:132", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/marketing/navigation/FreeToolsMegaPanel.tsx:132"}, "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-edab07e72fde5f34", "name": "Commented-code block (7 lines) in client/src/components/marketing/globe/GlobeCanvas.tsx:157", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/components/marketing/globe/GlobeCanvas.tsx:157"}, "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-37794991ea957126", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/marketing/globe/GlobeCanvas.tsx:195", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/marketing/globe/GlobeCanvas.tsx:195"}, "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-7f276181265837c9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/marketing/audit-tabs/SiteSpeedComparisonTab.tsx:203", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/marketing/audit-tabs/SiteSpeedComparisonTab.tsx: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-8c6da43818c676a4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/ImpersonateBanner.tsx:35", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/ImpersonateBanner.tsx: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-ab8fed4c024849ba", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/MapguardOpsTab.tsx:141", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/MapguardOpsTab.tsx:141"}, "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-f45eb11ca8bfc084", "name": "Commented-code block (5 lines) in client/src/components/admin/AdminProductPageShell.tsx:187", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/admin/AdminProductPageShell.tsx:187"}, "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-12a89e2b4dd12885", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/AdminCopilot.tsx:798", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/AdminCopilot.tsx:798"}, "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-468160d96f1d7045", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/EntityAuditWidget.tsx:72", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/EntityAuditWidget.tsx:72"}, "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-f4f231540f9ec861", "name": "Commented-code block (6 lines) in client/src/components/admin/AdminLayout.tsx:371", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/admin/AdminLayout.tsx:371"}, "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-7b962eb6d811af31", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/AdminLayout.tsx:631", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/AdminLayout.tsx:631"}, "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-dfa06ae2c6d1828d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/quotequick/QuotaMeter.tsx:42", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/quotequick/QuotaMeter.tsx:42"}, "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-819181dcc065d3a5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/portal/ModeToggle.tsx:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/portal/ModeToggle.tsx:28"}, "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-ed232aebb337c869", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/portal/TradeLinePortalSections.tsx:176", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/portal/TradeLinePortalSections.tsx:176"}, "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-c6bf93839a324797", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/portal/SmsTemplatesSection.tsx:112", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/portal/SmsTemplatesSection.tsx:112"}, "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-b30a0f7f4b8ef6bd", "name": "Commented-code block (8 lines) in client/src/components/portal/FirstVisitTooltip.tsx:125", "shortDescription": {"text": "Commented-code block (8 lines) in client/src/components/portal/FirstVisitTooltip.tsx:125"}, "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-d742f40b2023cd7c", "name": "Commented-code block (6 lines) in client/src/components/portal/PortalLayout.tsx:340", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/portal/PortalLayout.tsx:340"}, "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-53ebc97fc2584406", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/portal/PortalLayout.tsx:72", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/portal/PortalLayout.tsx:72"}, "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-88f2eb17de88fd7c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/portal/UpsellCard.tsx:34", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/portal/UpsellCard.tsx:34"}, "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-aac646fd5f5f5919", "name": "Commented-code block (7 lines) in client/src/components/wizard/MinimizedWizardBadge.tsx:3", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/components/wizard/MinimizedWizardBadge.tsx:3"}, "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-bba45273958083f0", "name": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/FormulaEditor.tsx:8", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/FormulaEditor.tsx:8"}, "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-f05579d2facbef98", "name": "Commented-code block (8 lines) in client/src/components/wizard/elfsight/SettingsTab.tsx:11", "shortDescription": {"text": "Commented-code block (8 lines) in client/src/components/wizard/elfsight/SettingsTab.tsx:11"}, "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-65e5e651a9719e03", "name": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/BottomTabBar.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/BottomTabBar.tsx:3"}, "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-c2b430aeea27f8f8", "name": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/TemplateMockup.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/TemplateMockup.tsx:3"}, "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-581ed822da5563ff", "name": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/HostedPageSection.tsx:8", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/HostedPageSection.tsx:8"}, "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-f672e2ddab4d902d", "name": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/EditorTabs.tsx:8", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/EditorTabs.tsx:8"}, "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-bfcffb55344d4b91", "name": "Legacy-named symbol `_optionIdFromLabel_unused` in client/src/components/wizard/elfsight/FieldRow.tsx:64", "shortDescription": {"text": "Legacy-named symbol `_optionIdFromLabel_unused` in client/src/components/wizard/elfsight/FieldRow.tsx:64"}, "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-01a517dbe608ef8c", "name": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/FieldRow.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/FieldRow.tsx:3"}, "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-e71ffecd4214ee65", "name": "Commented-code block (9 lines) in client/src/components/wizard/elfsight/HeaderResultsPanel.tsx:14", "shortDescription": {"text": "Commented-code block (9 lines) in client/src/components/wizard/elfsight/HeaderResultsPanel.tsx:14"}, "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-3e03c2c261a7a9fb", "name": "Commented-code block (7 lines) in client/src/components/wizard/elfsight/appleEditor.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/components/wizard/elfsight/appleEditor.ts:3"}, "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-1174fb76a05a9003", "name": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/aiToolApplier.ts:457", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/aiToolApplier.ts:457"}, "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-acfdf5771c58b3c6", "name": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/InlineStyleToolbar.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/InlineStyleToolbar.tsx:3"}, "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-10430f3387a07f4a", "name": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/EditorTopBar.tsx:4", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/EditorTopBar.tsx: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-e4c294a276d0db9e", "name": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/richTextSanitize.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/richTextSanitize.ts:3"}, "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-a43be282be7fa0c8", "name": "Commented-code block (7 lines) in client/src/components/wizard/elfsight/InfoCue.tsx:72", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/components/wizard/elfsight/InfoCue.tsx:72"}, "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-aedd6f1959e715bb", "name": "Commented-code block (9 lines) in client/src/components/wizard/elfsight/TemplateGallery.tsx:21", "shortDescription": {"text": "Commented-code block (9 lines) in client/src/components/wizard/elfsight/TemplateGallery.tsx:21"}, "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-1a597d4a65d1a86a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/wizard/elfsight/TemplateGallery.tsx:61", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/wizard/elfsight/TemplateGallery.tsx:61"}, "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-ab59d793fa108659", "name": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/AIBubble.tsx:420", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/AIBubble.tsx:420"}, "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-23c0a46d5a8d20cc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/wizard/elfsight/AIBubble.tsx:711", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/wizard/elfsight/AIBubble.tsx:711"}, "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-c5de4bc38c859f02", "name": "Commented-code block (8 lines) in client/src/components/wizard/elfsight/InstallGuideModal.tsx:197", "shortDescription": {"text": "Commented-code block (8 lines) in client/src/components/wizard/elfsight/InstallGuideModal.tsx:197"}, "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-4c76908e3539be89", "name": "Commented-code block (13 lines) in client/src/components/wizard/elfsight/ActionTab.tsx:8", "shortDescription": {"text": "Commented-code block (13 lines) in client/src/components/wizard/elfsight/ActionTab.tsx:8"}, "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-c3762a5ecd86bd72", "name": "Commented-code block (8 lines) in client/src/components/wizard/elfsight/AddFieldMenu.tsx:3", "shortDescription": {"text": "Commented-code block (8 lines) in client/src/components/wizard/elfsight/AddFieldMenu.tsx:3"}, "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-7065fdc554324b77", "name": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/StepContentPanel.tsx:7", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/StepContentPanel.tsx:7"}, "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-a3c7a291d9d5e5c7", "name": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/CalculationRow.tsx:7", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/CalculationRow.tsx:7"}, "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-1a0a83427d29cc01", "name": "Commented-code block (9 lines) in client/src/components/wizard/elfsight/WizardShell.tsx:3", "shortDescription": {"text": "Commented-code block (9 lines) in client/src/components/wizard/elfsight/WizardShell.tsx:3"}, "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-fedebcbb5682d3c2", "name": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/MobileBottomSheet.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/MobileBottomSheet.tsx:3"}, "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-895ae37db8b0b50e", "name": "Commented-code block (12 lines) in client/src/components/wizard/elfsight/InstallTab.tsx:3", "shortDescription": {"text": "Commented-code block (12 lines) in client/src/components/wizard/elfsight/InstallTab.tsx:3"}, "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-ff5b9c74f12f5bbe", "name": "Commented-code block (7 lines) in client/src/components/wizard/elfsight/ComponentPicker.tsx:7", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/components/wizard/elfsight/ComponentPicker.tsx:7"}, "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-a6eb8eb81ccad2d8", "name": "Legacy-named symbol `scaleOld` in client/src/components/wizard/elfsight/PreviewPane.tsx:1205", "shortDescription": {"text": "Legacy-named symbol `scaleOld` in client/src/components/wizard/elfsight/PreviewPane.tsx:1205"}, "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-8812893e3f6d97d8", "name": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/PreviewPane.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/PreviewPane.tsx:3"}, "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-2971c6a9fcbaed35", "name": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/PreviewOverlay.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/PreviewOverlay.tsx:3"}, "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-bddfc1f261f496e6", "name": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/CalculationsPanel.tsx:231", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/CalculationsPanel.tsx:231"}, "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-63ced2d0187512ce", "name": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/imageTemplateToConfig.ts:148", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/imageTemplateToConfig.ts:148"}, "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-991d165e987e1679", "name": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/RichTextField.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/RichTextField.tsx:3"}, "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-94ebfe39f363a21d", "name": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/FieldsPanel.tsx:7", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/FieldsPanel.tsx:7"}, "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-343947c933f0be9d", "name": "Commented-code block (7 lines) in client/src/components/wizard/elfsight/useFoldablePanels.ts:7", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/components/wizard/elfsight/useFoldablePanels.ts:7"}, "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-155c4e22cf742a17", "name": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/selection.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/selection.tsx:3"}, "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-a82fd0230291df66", "name": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/StyleTab.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/StyleTab.tsx:3"}, "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-0c0fbcdcc0007130", "name": "Commented-code block (9 lines) in client/src/components/wizard/elfsight/HelpModal.tsx:6", "shortDescription": {"text": "Commented-code block (9 lines) in client/src/components/wizard/elfsight/HelpModal.tsx:6"}, "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-844a31ea746d3fc5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/wizard/elfsight/HelpModal.tsx:199", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/wizard/elfsight/HelpModal.tsx:199"}, "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-7888f21be7ee659d", "name": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/WizardStructureControls.tsx:8", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/WizardStructureControls.tsx:8"}, "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-fb4d2847e5e3a2dc", "name": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/types.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/types.ts:3"}, "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-09035df877b591b7", "name": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/AdvancedSection.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/AdvancedSection.tsx:3"}, "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-4a69be8ffc0cc0a4", "name": "Commented-code block (7 lines) in client/src/components/wizard/elfsight/buildAdvancedConfig.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/components/wizard/elfsight/buildAdvancedConfig.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-6ec72c5a3a4c73a7", "name": "Commented-code block (9 lines) in client/src/components/wizard/elfsight/PreviewChatBubbleSim.tsx:3", "shortDescription": {"text": "Commented-code block (9 lines) in client/src/components/wizard/elfsight/PreviewChatBubbleSim.tsx:3"}, "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-f4d32bc08d657097", "name": "Commented-code block (10 lines) in client/src/components/wizard/elfsight/buildLeadFormConfig.ts:5", "shortDescription": {"text": "Commented-code block (10 lines) in client/src/components/wizard/elfsight/buildLeadFormConfig.ts:5"}, "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-3b2889f8d98b1713", "name": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/__tests__/fieldTypes.test.tsx:18", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/__tests__/fieldTypes.test.tsx:18"}, "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-3416996b088bf550", "name": "Commented-code block (6 lines) in client/src/components/hosted-page/HostedPageFrame.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/hosted-page/HostedPageFrame.tsx:3"}, "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-9e486efc2a1421c9", "name": "Commented-code block (9 lines) in client/src/components/hosted-page/WeFixTradesBadge.tsx:11", "shortDescription": {"text": "Commented-code block (9 lines) in client/src/components/hosted-page/WeFixTradesBadge.tsx:11"}, "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-0cbb832207f764f6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/chatHelpers.ts:191", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/chatHelpers.ts:191"}, "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-02822116652a2444", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/queryClient.ts:15", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/queryClient.ts:15"}, "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-c1f1e6cd17826cd1", "name": "Commented-code block (7 lines) in client/src/lib/categoryStyles.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/lib/categoryStyles.ts:3"}, "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-6992528fdb1dcfa1", "name": "Commented-code block (8 lines) in client/src/lib/authRedirect.ts:1", "shortDescription": {"text": "Commented-code block (8 lines) in client/src/lib/authRedirect.ts:1"}, "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-b65a64f430e176df", "name": "Commented-code block (5 lines) in client/src/site/navigation.ts:129", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/site/navigation.ts:129"}, "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-08a4e10a56ac1f29", "name": "Commented-code block (6 lines) in client/src/pages/calculator.tsx:173", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/pages/calculator.tsx:173"}, "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-988431d4e5dd8912", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/calculator.tsx:106", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/calculator.tsx:106"}, "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-4b33fcb494bfc89f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/OnboardingForm.tsx:188", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/OnboardingForm.tsx:188"}, "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-5da8d5c22338ab7a", "name": "Commented-code block (5 lines) in client/src/pages/Signup.tsx:37", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/Signup.tsx:37"}, "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-7c5ef04fcd926e34", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Signup.tsx:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Signup.tsx:66"}, "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-c3d60ee39ce483f4", "name": "Commented-code block (7 lines) in client/src/pages/login.tsx:67", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/pages/login.tsx: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-6843a612509a571b", "name": "Commented-code block (5 lines) in client/src/pages/dashboard.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/dashboard.tsx:3"}, "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-6631216b43cff835", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/dashboard.tsx:708", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/dashboard.tsx:708"}, "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-d4f8a6e54145da8c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/ReviewFunnel.tsx:31", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/ReviewFunnel.tsx:31"}, "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-62e0e29df8f806a0", "name": "Commented-code block (6 lines) in client/src/pages/leads.tsx:46", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/pages/leads.tsx:46"}, "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-adf3bcff69f8a2ac", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/leads.tsx:196", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/leads.tsx:196"}, "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-b952ad0586f59171", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/edit-calculator.tsx:353", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/edit-calculator.tsx:353"}, "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-3dc11e0b719c5ba9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/SignupBusinessName.tsx:55", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/SignupBusinessName.tsx:55"}, "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-fd544985da63766f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/BlogArticle.tsx:72", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/BlogArticle.tsx:72"}, "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-aa232db52b2979d3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/quote-snapshot.tsx:120", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/quote-snapshot.tsx: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-0c8f9196e7d1a1a3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/checkoutSuccessState.ts:30", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/checkoutSuccessState.ts:30"}, "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-43dfffa39403a7de", "name": "Commented-code block (6 lines) in client/src/pages/marketing/SharedAuditReport.tsx:362", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/pages/marketing/SharedAuditReport.tsx:362"}, "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-a55c5a46d733d4b6", "name": "Commented-code block (6 lines) in client/src/pages/marketing/contact.tsx:219", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/pages/marketing/contact.tsx:219"}, "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-7f7bee59673fadab", "name": "Commented-code block (6 lines) in client/src/pages/marketing/templates.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/pages/marketing/templates.tsx:3"}, "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-1921683dafb63f52", "name": "Commented-code block (7 lines) in client/src/pages/marketing/home.tsx:6", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/pages/marketing/home.tsx:6"}, "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-02eaf093ac9af430", "name": "Commented-code block (5 lines) in client/src/pages/marketing/template-detail.tsx:8", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/marketing/template-detail.tsx:8"}, "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-73a1086441b867da", "name": "Legacy-named symbol `tmpl_plumbing_v2` in client/src/pages/marketing/ApiDocsPage.tsx:1181", "shortDescription": {"text": "Legacy-named symbol `tmpl_plumbing_v2` in client/src/pages/marketing/ApiDocsPage.tsx:1181"}, "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-49f8f58724ca9d19", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/marketing/ApiDocsPage.tsx:927", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/marketing/ApiDocsPage.tsx:927"}, "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-256ce224a56407b8", "name": "Commented-code block (11 lines) in client/src/pages/marketing/FreeAudit.tsx:17", "shortDescription": {"text": "Commented-code block (11 lines) in client/src/pages/marketing/FreeAudit.tsx:17"}, "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-29d0dd84d9b43913", "name": "Commented-code block (5 lines) in client/src/pages/marketing/demo.tsx:32", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/marketing/demo.tsx:32"}, "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-b91c9fcf5d6baee9", "name": "Commented-code block (5 lines) in client/src/pages/marketing/ReportView.tsx:14", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/marketing/ReportView.tsx:14"}, "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-b040244080778107", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/marketing/ReportView.tsx:1182", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/marketing/ReportView.tsx:1182"}, "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-8f17fc970c9466d7", "name": "Commented-code block (5 lines) in client/src/pages/marketing/tools/LocalRankTracker.tsx:58", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/marketing/tools/LocalRankTracker.tsx:58"}, "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-f6026fea90eb293d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/marketing/tools/GoogleReviewLinkGenerator.tsx:153", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/marketing/tools/GoogleReviewLinkGenerator.tsx:153"}, "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-a61baa4be2d7addc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SupportInboxPage.tsx:132", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SupportInboxPage.tsx: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-53fe3e777df70008", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/AdFlowOpsPage.tsx:148", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/AdFlowOpsPage.tsx:148"}, "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-bb0de82e15c692f3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ServiceOpsPage.tsx:77", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ServiceOpsPage.tsx:77"}, "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-dc4fe2da2288b1c1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/AuditLogPage.tsx:122", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/AuditLogPage.tsx:122"}, "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-9a0f746fb76c3a9f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ClientsPage.tsx:138", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ClientsPage.tsx:138"}, "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-2a449e1c5fdeb785", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/AdminChatHistoryPage.tsx:34", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/AdminChatHistoryPage.tsx:34"}, "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-79390a8c70e52a81", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/TradelineVoicesPage.tsx:90", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/TradelineVoicesPage.tsx:90"}, "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-6b634085b9b1c571", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SystemJobsPage.tsx:164", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SystemJobsPage.tsx:164"}, "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-dda0949b031bf7f9", "name": "Legacy-named symbol `call_backup` in client/src/pages/admin/ClientDetailPage.tsx:3033", "shortDescription": {"text": "Legacy-named symbol `call_backup` in client/src/pages/admin/ClientDetailPage.tsx:3033"}, "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-57e970fe6c81446c", "name": "Commented-code block (5 lines) in client/src/pages/admin/ClientDetailPage.tsx:560", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/admin/ClientDetailPage.tsx:560"}, "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-a4b6302587f9555a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ClientDetailPage.tsx:174", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ClientDetailPage.tsx:174"}, "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-fe7a27adcfcb19b6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/IntegrationHealthPage.tsx:69", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/IntegrationHealthPage.tsx: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-a4d6f5dbe41827bf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SystemAlertsPage.tsx:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SystemAlertsPage.tsx:66"}, "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-63153f7281e6c41f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/AuditLeadsPage.tsx:81", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/AuditLeadsPage.tsx:81"}, "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-34ac0bb8a222f0a9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ReviewsPage.tsx:273", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ReviewsPage.tsx:273"}, "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-d77d1ab79e0dab21", "name": "Commented-code block (5 lines) in client/src/pages/admin/QuoteQuickTemplateDetailPage.tsx:1079", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/admin/QuoteQuickTemplateDetailPage.tsx:1079"}, "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-5aa1c1f204bc62e7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/QuoteQuickTradesPage.tsx:84", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/QuoteQuickTradesPage.tsx:84"}, "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-13a3cdef2ed3e067", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/MapguardOpsPage.tsx:110", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/MapguardOpsPage.tsx:110"}, "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-d1c369936f44eaf3", "name": "Commented-code block (7 lines) in client/src/pages/admin/ServicesPage.tsx:68", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/pages/admin/ServicesPage.tsx:68"}, "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-b23a353bdb531631", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/RankFlowOpsPage.tsx:155", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/RankFlowOpsPage.tsx:155"}, "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-d533e6e9c02b31d6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SeoIntegrationsPage.tsx:119", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SeoIntegrationsPage.tsx:119"}, "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-1538b84feda4bab2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/InboxPage.tsx:34", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/InboxPage.tsx:34"}, "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-a687ec80c6e62886", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/AdminAuditLogPage.tsx:112", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/AdminAuditLogPage.tsx:112"}, "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-f1671e3278b45c1c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/QuoteQuickTradeDetailPage.tsx:107", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/QuoteQuickTradeDetailPage.tsx:107"}, "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-3981b2e2cbc96f2d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SuppliersPage.tsx:215", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SuppliersPage.tsx:215"}, "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-a96f3eb915af552b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/AdminTradelinePorts.tsx:100", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/AdminTradelinePorts.tsx:100"}, "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-e5408e4603cced56", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SupportTicketDetailPage.tsx:104", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SupportTicketDetailPage.tsx:104"}, "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-de69a447a98daf72", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/WebCareOpsPage.tsx:174", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/WebCareOpsPage.tsx:174"}, "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-cb0f20a2b19c65dd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/BillingPage.tsx:77", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/BillingPage.tsx:77"}, "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-68f9d09668f25de0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SocialSyncOpsPage.tsx:255", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SocialSyncOpsPage.tsx:255"}, "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-39c3b961a8469ab6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/TradelineTemplatesPage.tsx:118", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/TradelineTemplatesPage.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-d43b67e620f9fb95", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/TradelineLearningPage.tsx:65", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/TradelineLearningPage.tsx:65"}, "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-32e16ce557d9ceb3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/InstallQueuePage.tsx:81", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/InstallQueuePage.tsx:81"}, "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-68df80e361c73f56", "name": "Commented-code block (5 lines) in client/src/pages/admin/UiPrimitivesDemo.tsx:93", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/admin/UiPrimitivesDemo.tsx: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-91cefcb61138c125", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ContentFlowQueuePage.tsx:383", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ContentFlowQueuePage.tsx:383"}, "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-da899f6b400021ae", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SystemAvailabilityPage.tsx:38", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SystemAvailabilityPage.tsx:38"}, "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-bb93ca2f1f92f630", "name": "Commented-code block (5 lines) in client/src/pages/admin/ProductDetailPage.tsx:333", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/admin/ProductDetailPage.tsx:333"}, "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-fc12c343f50790fb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ProductDetailPage.tsx:203", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ProductDetailPage.tsx: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-c00ac7e2b6726564", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ContentPipelinePage.tsx:113", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ContentPipelinePage.tsx:113"}, "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-054d4d2a64491feb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SiteLaunchOpsPage.tsx:63", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SiteLaunchOpsPage.tsx:63"}, "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-d9b65cec15770874", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/MapguardDashboard.tsx:233", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/MapguardDashboard.tsx:233"}, "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-960dbee7988edc48", "name": "Legacy-named symbol `call_backup` in client/src/pages/admin/TradeLineOpsPage.tsx:27", "shortDescription": {"text": "Legacy-named symbol `call_backup` in client/src/pages/admin/TradeLineOpsPage.tsx:27"}, "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-0ec0069dee08c8ff", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/TradeLineOpsPage.tsx:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/TradeLineOpsPage.tsx: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-a8d7700f49bc21ea", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SystemWorkersPage.tsx:111", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SystemWorkersPage.tsx:111"}, "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-97722910eef2e213", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/DeploymentHealthPage.tsx:59", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/DeploymentHealthPage.tsx: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-03be7d7b1c4cf9b5", "name": "Commented-code block (6 lines) in client/src/pages/admin/CommunicationsPage.tsx:971", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/pages/admin/CommunicationsPage.tsx:971"}, "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-305183ee8c52d5a4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/CommunicationsPage.tsx:205", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/CommunicationsPage.tsx:205"}, "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-9cd3632302ea3dd1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/AiBudgetPage.tsx:164", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/AiBudgetPage.tsx:164"}, "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-a920c3682717c52e", "name": "Commented-code block (5 lines) in client/src/pages/admin/MobilePreview/PreviewScreens.tsx:1255", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/admin/MobilePreview/PreviewScreens.tsx:1255"}, "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-a710e2f688dee871", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/outbound/SequencesPage.tsx:220", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/outbound/SequencesPage.tsx:220"}, "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-177b3cc61fe24ffc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/outbound/CampaignsPage.tsx:89", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/outbound/CampaignsPage.tsx:89"}, "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-8aa180dbaeb2439e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/outbound/PipelinePage.tsx:256", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/outbound/PipelinePage.tsx:256"}, "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-e6d2ad2f32f629a6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/outbound/ProspectsPage.tsx:380", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/outbound/ProspectsPage.tsx:380"}, "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-733b34b5906037bd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/outbound/SendingPage.tsx:76", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/outbound/SendingPage.tsx:76"}, "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-ee1fae21b75f22eb", "name": "Commented-code block (7 lines) in client/src/pages/portal/PortalBrandKitsPage.tsx:45", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/pages/portal/PortalBrandKitsPage.tsx:45"}, "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-6db72e80cc83c142", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalYourAiAssistant.tsx:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalYourAiAssistant.tsx:66"}, "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-75a253e066a4a703", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/ChatWidgetInstallOnboarding.tsx:71", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/ChatWidgetInstallOnboarding.tsx:71"}, "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-9483df632c7352c8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalContentPreferences.tsx:255", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalContentPreferences.tsx:255"}, "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-8700477bbbd372c7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalWidget.tsx:367", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalWidget.tsx:367"}, "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-785f6117e9925bf3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalSettings.tsx:128", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalSettings.tsx:128"}, "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-d970a3700f61478c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/InvoicesPage.tsx:109", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/InvoicesPage.tsx:109"}, "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-7e1dd5bd34ee8207", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/InvoiceDetailPage.tsx:147", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/InvoiceDetailPage.tsx:147"}, "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-e51ca30ae9bf1aef", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/BookFlowSetupPage.tsx:104", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/BookFlowSetupPage.tsx:104"}, "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-676182edd825d43d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalEmailDomainSetup.tsx:63", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalEmailDomainSetup.tsx:63"}, "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-59902dcb5475b22a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalCompetitors.tsx:75", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalCompetitors.tsx:75"}, "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-5292cc157ccb7b5f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalRankFlow.tsx:85", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalRankFlow.tsx:85"}, "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-ad544a993d685ca0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/WebFixEntry.tsx:40", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/WebFixEntry.tsx:40"}, "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-8f935b92c54c9dd9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalBilling.tsx:63", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalBilling.tsx:63"}, "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-ac3d6b1a5c364231", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalHelp.tsx:103", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalHelp.tsx:103"}, "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-c1a572be0bfbd4bd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalMapguard.tsx:261", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalMapguard.tsx:261"}, "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-aea45b02e8079d6c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalServices.tsx:39", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalServices.tsx: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-727775a03d9385fb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/SocialSyncSetupV2.tsx:128", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/SocialSyncSetupV2.tsx:128"}, "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-7ed0a37588f9833f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalArticles.tsx:331", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalArticles.tsx:331"}, "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-0555ad2505bfc665", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalCatalog.tsx:120", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalCatalog.tsx: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-6ac7799ace30c6f3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalDashboard.tsx:198", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalDashboard.tsx:198"}, "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-68d26c2938793406", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalServiceDetail.tsx:245", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalServiceDetail.tsx:245"}, "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-a6e2530bffe8c89c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/ChatWidgetInstallEntry.tsx:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/ChatWidgetInstallEntry.tsx:48"}, "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-7d669aae5de81b80", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalTradelineKnowledgePage.tsx:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalTradelineKnowledgePage.tsx:66"}, "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-9e0b1762cfe04f9f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/SiteLaunchEntry.tsx:45", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/SiteLaunchEntry.tsx:45"}, "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-fa2a4ed12b29b1b0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalChatHistoryPage.tsx:34", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalChatHistoryPage.tsx:34"}, "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-5b7714a0a2f4baaa", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalApiAccessPage.tsx:219", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalApiAccessPage.tsx:219"}, "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-ec7352dcf80e4890", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalOnboarding.tsx:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalOnboarding.tsx:66"}, "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-d1f305a9b8af25b8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/AiInsightsPage.tsx:209", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/AiInsightsPage.tsx:209"}, "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-4e8a16be1aacc18e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/DispatchPage.tsx:72", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/DispatchPage.tsx:72"}, "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-bbe163f176a08835", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortStatusPage.tsx:185", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortStatusPage.tsx:185"}, "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-c6dc2c614be4e320", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PaymentMethodsPage.tsx:42", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PaymentMethodsPage.tsx:42"}, "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-a3bd1dd5b0557007", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalReviews.tsx:178", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalReviews.tsx:178"}, "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-77b42546f8079e2e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalTicketDetail.tsx:76", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalTicketDetail.tsx:76"}, "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-d92e0564a7da0acf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalReviewsSetup.tsx:57", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalReviewsSetup.tsx:57"}, "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-5bbfa8a20210f0e2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalChatWidgetSetup.tsx:63", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalChatWidgetSetup.tsx:63"}, "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-64cc3e99b1ddceca", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/settings/Notifications.tsx:125", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/settings/Notifications.tsx:125"}, "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-4f55f0f9c8f2e75c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/adflow/AdFlowDashboard.tsx:218", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/adflow/AdFlowDashboard.tsx:218"}, "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-e275484b06238a0f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/TradelineSetup/DashboardBanner.tsx:25", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/TradelineSetup/DashboardBanner.tsx: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-7aeb3e3d0b8103d3", "name": "Commented-code block (5 lines) in client/src/pages/portal/TradelineSetup/VoicePicker.tsx:61", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/portal/TradelineSetup/VoicePicker.tsx:61"}, "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-77081ea63401a5ea", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/TradelineSetup/VoicePicker.tsx:37", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/TradelineSetup/VoicePicker.tsx:37"}, "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-efef49c03025687d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/mapguard/MapGuardDashboard.tsx:140", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/mapguard/MapGuardDashboard.tsx: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-5b8e204b748f64a8", "name": "Legacy-named symbol `contentflow_onboarding_v1` in client/src/pages/portal/contentflow/PortalContentFlowDashboard.tsx:76", "shortDescription": {"text": "Legacy-named symbol `contentflow_onboarding_v1` in client/src/pages/portal/contentflow/PortalContentFlowDashboard.tsx:769"}, "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-ac90e2d5470811c5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/contentflow/PortalContentFlowDashboard.tsx:283", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/contentflow/PortalContentFlowDashboard.tsx:283"}, "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-451031480ab08380", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/webcare/WebCareDashboard.tsx:165", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/webcare/WebCareDashboard.tsx:165"}, "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-5a05d2959e129125", "name": "Commented-code block (5 lines) in client/src/pages/portal/tradeline/TradeLineDashboard.tsx:178", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/portal/tradeline/TradeLineDashboard.tsx:178"}, "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-6067e0693a1987fd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/tradeline/TradeLineDashboard.tsx:229", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/tradeline/TradeLineDashboard.tsx: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-f6afac1e6fe315ed", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/HoursWidget.tsx:84", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/HoursWidget.tsx:84"}, "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-62290ee19559ca19", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/FaqWidget.tsx:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/FaqWidget.tsx:66"}, "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-367e62ffb2704587", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/ServiceAreaMap.tsx:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/ServiceAreaMap.tsx:79"}, "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-f1c02fce7989c213", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/ReviewLink.tsx:69", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/ReviewLink.tsx: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-379c04d0444699f8", "name": "Commented-code block (5 lines) in client/src/pages/portal/FreeTools/SchemaGenerator.tsx:192", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/portal/FreeTools/SchemaGenerator.tsx:192"}, "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-5a14358d0b4c23a4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/SchemaGenerator.tsx:139", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/SchemaGenerator.tsx:139"}, "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-fd325f3c56d9a318", "name": "Commented-code block (5 lines) in client/src/pages/portal/FreeTools/index.tsx:295", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/portal/FreeTools/index.tsx:295"}, "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-6512ccb8e6011344", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/CallbackForm.tsx:70", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/CallbackForm.tsx:70"}, "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-f17d804ae5a29850", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/TrustBadges.tsx:77", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/TrustBadges.tsx:77"}, "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-edf6f8b982a9eeef", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/AiReviewResponder.tsx:70", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/AiReviewResponder.tsx:70"}, "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-5da8d35d3e9ea353", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/AiQuoteWriter.tsx:70", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/AiQuoteWriter.tsx:70"}, "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-90b4268f357714ab", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/reputationshield/ReputationShieldDashboard.tsx:168", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/reputationshield/ReputationShieldDashboard.tsx:168"}, "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-e6dd23e022c84b2a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/quotequick/QuoteQuickDashboard.tsx:149", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/quotequick/QuoteQuickDashboard.tsx:149"}, "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-59654a38e0075a90", "name": "Commented-code block (5 lines) in client/src/pages/portal/quotequick/FormBuilderPage.tsx:45", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/portal/quotequick/FormBuilderPage.tsx:45"}, "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-9363c7703c216657", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/quotequick/BrandSettings.tsx:76", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/quotequick/BrandSettings.tsx:76"}, "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-f769449d2bf2f6a8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/socialsync/SocialSyncDashboard.tsx:236", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/socialsync/SocialSyncDashboard.tsx:236"}, "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-fe89bf23030703cf", "name": "Commented-code block (5 lines) in client/src/pages/portal/rankflow/RankFlowDashboard.tsx:322", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/portal/rankflow/RankFlowDashboard.tsx:322"}, "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-9f6dc51bee3b7217", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/rankflow/RankFlowDashboard.tsx:245", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/rankflow/RankFlowDashboard.tsx:245"}, "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-28ba336db8d1125b", "name": "Commented-code block (7 lines) in client/src/pages/products/EffortelProductPage.tsx:538", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/pages/products/EffortelProductPage.tsx:538"}, "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-0ae5e0d0a20c7868", "name": "Commented-code block (7 lines) in client/src/pages/products/quotequick/demo.tsx:61", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/pages/products/quotequick/demo.tsx:61"}, "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-1e77c9d93f200ba8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/hooks/useIsPaid.ts:41", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/hooks/useIsPaid.ts:41"}, "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-0a6c8da92263ea43", "name": "Commented-code block (5 lines) in client/src/hooks/useBreadcrumbs.ts:181", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/hooks/useBreadcrumbs.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-057ed6807d7c0946", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/hooks/useDisplayPreferences.ts:52", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/hooks/useDisplayPreferences.ts:52"}, "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-4af99614c3a2f6f1", "name": "Commented-code block (7 lines) in client/src/hooks/useScrollReveal.ts:31", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/hooks/useScrollReveal.ts:31"}, "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-0d9c2631b6dedb8e", "name": "Commented-code block (6 lines) in tests/build-smoke.test.ts:50", "shortDescription": {"text": "Commented-code block (6 lines) in tests/build-smoke.test.ts:50"}, "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-12fe1f0cf27d69c4", "name": "Commented-code block (5 lines) in tests/audit/qq-wave-l.spec.ts:33", "shortDescription": {"text": "Commented-code block (5 lines) in tests/audit/qq-wave-l.spec.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-665b083a0693cab8", "name": "Commented-code block (5 lines) in tests/audit/wave-as1b-template-identity.spec.ts:32", "shortDescription": {"text": "Commented-code block (5 lines) in tests/audit/wave-as1b-template-identity.spec.ts:32"}, "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-3efcabca42ed4dd9", "name": "Commented-code block (6 lines) in tests/audit/qq-wave-m.spec.ts:130", "shortDescription": {"text": "Commented-code block (6 lines) in tests/audit/qq-wave-m.spec.ts:130"}, "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-4f677886c166c350", "name": "Commented-code block (5 lines) in tests/audit/wizard-elfsight-h5.spec.ts:165", "shortDescription": {"text": "Commented-code block (5 lines) in tests/audit/wizard-elfsight-h5.spec.ts:165"}, "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-f4d4b7d93e837a5c", "name": "Commented-code block (5 lines) in tests/audit/wizard-elfsight-h7.spec.ts:273", "shortDescription": {"text": "Commented-code block (5 lines) in tests/audit/wizard-elfsight-h7.spec.ts:273"}, "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-87f1a0f0a0ab8620", "name": "Commented-code block (6 lines) in tests/audit/server-ai-budget.spec.ts:58", "shortDescription": {"text": "Commented-code block (6 lines) in tests/audit/server-ai-budget.spec.ts:58"}, "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-6572d46859003ba9", "name": "Commented-code block (5 lines) in tests/audit/wizard-elfsight-h6.spec.ts:95", "shortDescription": {"text": "Commented-code block (5 lines) in tests/audit/wizard-elfsight-h6.spec.ts:95"}, "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-2730da2344005bff", "name": "Commented-code block (7 lines) in tests/audit/wizard-elfsight-i.spec.ts:105", "shortDescription": {"text": "Commented-code block (7 lines) in tests/audit/wizard-elfsight-i.spec.ts:105"}, "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-f0ecdbb2ac8e6002", "name": "Commented-code block (5 lines) in tests/audit/wizard-elfsight-h1.spec.ts:106", "shortDescription": {"text": "Commented-code block (5 lines) in tests/audit/wizard-elfsight-h1.spec.ts:106"}, "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-85da1924e84942bd", "name": "Commented-code block (7 lines) in tests/audit/marketing-contrast.spec.ts:127", "shortDescription": {"text": "Commented-code block (7 lines) in tests/audit/marketing-contrast.spec.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-954c182909b2625e", "name": "Commented-code block (12 lines) in tests/audit/w-r1-scheduling-screenshots.spec.ts:49", "shortDescription": {"text": "Commented-code block (12 lines) in tests/audit/w-r1-scheduling-screenshots.spec.ts:49"}, "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-f0498994b0b6617f", "name": "Commented-code block (5 lines) in tests/audit/wizard-wave-j.spec.ts:69", "shortDescription": {"text": "Commented-code block (5 lines) in tests/audit/wizard-wave-j.spec.ts:69"}, "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-f5334dcc2fb28bd3", "name": "Commented-code block (6 lines) in tests/audit/server-agent-loop.spec.ts:220", "shortDescription": {"text": "Commented-code block (6 lines) in tests/audit/server-agent-loop.spec.ts:220"}, "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-48fce81c2febde5e", "name": "Commented-code block (5 lines) in tests/e2e/tradeline-setup.spec.ts:49", "shortDescription": {"text": "Commented-code block (5 lines) in tests/e2e/tradeline-setup.spec.ts:49"}, "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-d1ea8b8cf6f0305e", "name": "Commented-code block (5 lines) in tests/e2e/admin-crm/contentflow.sprint1.spec.ts:149", "shortDescription": {"text": "Commented-code block (5 lines) in tests/e2e/admin-crm/contentflow.sprint1.spec.ts:149"}, "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-585cdbf27ae0c5bd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 docs/wip/stripe-billing-overhaul/verify-phase2-safety.ts:233", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 docs/wip/stripe-billing-overhaul/verify-phase2-safety.ts:233"}, "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-3d58789026806804", "name": "Commented-code block (5 lines) in shared/templateDesignRules.ts:72", "shortDescription": {"text": "Commented-code block (5 lines) in shared/templateDesignRules.ts:72"}, "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-726fe623da21f22f", "name": "Commented-code block (7 lines) in shared/services.ts:251", "shortDescription": {"text": "Commented-code block (7 lines) in shared/services.ts:251"}, "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-d7d9d743debe83ba", "name": "Commented-code block (9 lines) in shared/wizardSchema.ts:137", "shortDescription": {"text": "Commented-code block (9 lines) in shared/wizardSchema.ts:137"}, "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-96daba658f6825df", "name": "Legacy-named symbol `cf_starter_monthly_v1` in shared/pricing.ts:628", "shortDescription": {"text": "Legacy-named symbol `cf_starter_monthly_v1` in shared/pricing.ts:628"}, "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-5b405eb765aeff22", "name": "Commented-code block (5 lines) in shared/aiDemoTemplate.ts:129", "shortDescription": {"text": "Commented-code block (5 lines) in shared/aiDemoTemplate.ts:129"}, "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-20e1e1bc6f5b55cf", "name": "Commented-code block (5 lines) in shared/seoContentPage.test.ts:26", "shortDescription": {"text": "Commented-code block (5 lines) in shared/seoContentPage.test.ts:26"}, "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-0e25dc8ad4a859c8", "name": "Commented-code block (8 lines) in shared/slugUtils.ts:30", "shortDescription": {"text": "Commented-code block (8 lines) in shared/slugUtils.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-b81a9ace99f0d7f5", "name": "Commented-code block (5 lines) in shared/templatePresets.ts:158", "shortDescription": {"text": "Commented-code block (5 lines) in shared/templatePresets.ts:158"}, "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-03cf7b8199c4e2d1", "name": "Commented-code block (7 lines) in shared/schemas/adminAiActions.ts:88", "shortDescription": {"text": "Commented-code block (7 lines) in shared/schemas/adminAiActions.ts:88"}, "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-821a82757ef9133e", "name": "Commented-code block (7 lines) in shared/schemas/brandKits.ts:36", "shortDescription": {"text": "Commented-code block (7 lines) in shared/schemas/brandKits.ts:36"}, "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-641610514f714b7d", "name": "Commented-code block (8 lines) in shared/schemas/mapguard.ts:145", "shortDescription": {"text": "Commented-code block (8 lines) in shared/schemas/mapguard.ts:145"}, "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-fe39bc11dd399524", "name": "Legacy-named symbol `call_backup` in shared/schemas/adminCrm.ts:662", "shortDescription": {"text": "Legacy-named symbol `call_backup` in shared/schemas/adminCrm.ts:662"}, "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-66e30897407c4790", "name": "Commented-code block (5 lines) in shared/schemas/adminCrm.ts:705", "shortDescription": {"text": "Commented-code block (5 lines) in shared/schemas/adminCrm.ts:705"}, "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-a304335ec76e316a", "name": "Commented-code block (6 lines) in shared/schemas/contentflow.ts:23", "shortDescription": {"text": "Commented-code block (6 lines) in shared/schemas/contentflow.ts:23"}, "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-d9bc46f715df2d48", "name": "Commented-code block (5 lines) in shared/schemas/calculator.fieldTypes.test.ts:55", "shortDescription": {"text": "Commented-code block (5 lines) in shared/schemas/calculator.fieldTypes.test.ts:55"}, "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-4fc3e36f1909cec0", "name": "Commented-code block (6 lines) in shared/schemas/aiResponseRatings.ts:47", "shortDescription": {"text": "Commented-code block (6 lines) in shared/schemas/aiResponseRatings.ts:47"}, "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-f07af0cc38be6ea5", "name": "Commented-code block (5 lines) in shared/schemas/calculator.ts:178", "shortDescription": {"text": "Commented-code block (5 lines) in shared/schemas/calculator.ts:178"}, "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-6fb40b3d8d35f2a0", "name": "Commented-code block (5 lines) in shared/schemas/outbound.ts:75", "shortDescription": {"text": "Commented-code block (5 lines) in shared/schemas/outbound.ts:75"}, "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-6ece90edd27866aa", "name": "Commented-code block (6 lines) in shared/schemas/db.ts:68", "shortDescription": {"text": "Commented-code block (6 lines) in shared/schemas/db.ts:68"}, "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-d9f7534388d0ae7f", "name": "Commented-code block (8 lines) in shared/schemas/tradelineKnowledgeBase.ts:43", "shortDescription": {"text": "Commented-code block (8 lines) in shared/schemas/tradelineKnowledgeBase.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-a25c6921dbbe244b", "name": "Commented-code block (5 lines) in scripts/check-schema-drift.mjs:66", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/check-schema-drift.mjs:66"}, "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-7daa6eec0e574e99", "name": "Commented-code block (5 lines) in scripts/verify-dunning.ts:159", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/verify-dunning.ts:159"}, "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-f9cf695b499c21d1", "name": "Commented-code block (6 lines) in scripts/check-layout-rules.mjs:131", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/check-layout-rules.mjs:131"}, "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-741811892e2a4e84", "name": "Commented-code block (5 lines) in scripts/build-ai-extraction-fixtures.mjs:417", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/build-ai-extraction-fixtures.mjs:417"}, "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-ff203185c202e22e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/smoke-billing-recovery-local.ts:275", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/smoke-billing-recovery-local.ts:275"}, "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-8da4ad676e64d7a0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/generate-ai-thumbnails.mjs:213", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/generate-ai-thumbnails.mjs:213"}, "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-eac3a87cf1caf84b", "name": "Commented-code block (6 lines) in scripts/check-hardcoded-colors.mjs:42", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/check-hardcoded-colors.mjs:42"}, "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-36323981ac1c50b0", "name": "Commented-code block (5 lines) in scripts/verify-adflow-cron.ts:19", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/verify-adflow-cron.ts:19"}, "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-e519451c39001a40", "name": "Commented-code block (5 lines) in scripts/check-no-silent-catch.mjs:116", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/check-no-silent-catch.mjs:116"}, "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-e54137a1ea05c329", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/smoke-stripe-billing-recovery.ts:230", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/smoke-stripe-billing-recovery.ts:230"}, "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-fb761a2d59d329cc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/staging-gate/identify-previous-occupant.mjs:41", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/staging-gate/identify-previous-occupant.mjs:41"}, "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-d3340c88029e113a", "name": "Commented-code block (8 lines) in scripts/db/drizzle.config.dev.ts:40", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/db/drizzle.config.dev.ts:40"}, "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-d43e6191c5db3bef", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/stripe/sync-catalog.mjs:81", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/stripe/sync-catalog.mjs:81"}, "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-103d293aed94bfde", "name": "Commented-code block (5 lines) in scripts/sms/a2p-campaign-update.mjs:330", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/sms/a2p-campaign-update.mjs:330"}, "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-a6c83964fc1938b6", "name": "Commented-code block (5 lines) in scripts/seo/prerender-routes.mjs:60", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/seo/prerender-routes.mjs:60"}, "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-1d5404499607860b", "name": "Commented-code block (6 lines) in server/auth.ts:102", "shortDescription": {"text": "Commented-code block (6 lines) in server/auth.ts:102"}, "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-b0f101868b125e41", "name": "Commented-code block (5 lines) in server/auditRoutes.ts:1033", "shortDescription": {"text": "Commented-code block (5 lines) in server/auditRoutes.ts:1033"}, "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-ca553588073be95b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/auditRoutes.ts:391", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/auditRoutes.ts:391"}, "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-1763262d22d7b898", "name": "Commented-code block (5 lines) in server/openaiClient.ts:26", "shortDescription": {"text": "Commented-code block (5 lines) in server/openaiClient.ts:26"}, "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-c94d4bad2af4814a", "name": "Commented-code block (6 lines) in server/storage.ts:973", "shortDescription": {"text": "Commented-code block (6 lines) in server/storage.ts:973"}, "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-da3f31e057b0dd6a", "name": "Commented-code block (6 lines) in server/bootstrapDoppler.ts:32", "shortDescription": {"text": "Commented-code block (6 lines) in server/bootstrapDoppler.ts:32"}, "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-6b623a7e76f013bf", "name": "Commented-code block (6 lines) in server/static.ts:108", "shortDescription": {"text": "Commented-code block (6 lines) in server/static.ts:108"}, "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-e4183d7a787566f4", "name": "Commented-code block (6 lines) in server/index.ts:52", "shortDescription": {"text": "Commented-code block (6 lines) in server/index.ts:52"}, "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-00aab47b9a5f9544", "name": "Commented-code block (5 lines) in server/aiPricingAgent.ts:430", "shortDescription": {"text": "Commented-code block (5 lines) in server/aiPricingAgent.ts:430"}, "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-86b6b1c2c68c0547", "name": "Commented-code block (5 lines) in server/twilioClient.ts:245", "shortDescription": {"text": "Commented-code block (5 lines) in server/twilioClient.ts:245"}, "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-be9405799f34119a", "name": "Commented-code block (5 lines) in server/aiChatEngine.ts:708", "shortDescription": {"text": "Commented-code block (5 lines) in server/aiChatEngine.ts:708"}, "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-f80a54abd8d52c6a", "name": "Commented-code block (5 lines) in server/twilioClient.smsCost.test.ts:64", "shortDescription": {"text": "Commented-code block (5 lines) in server/twilioClient.smsCost.test.ts:64"}, "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-4ae2c8779714e616", "name": "Commented-code block (6 lines) in server/auditScoring.test.ts:132", "shortDescription": {"text": "Commented-code block (6 lines) in server/auditScoring.test.ts:132"}, "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-811b57c2323af8d6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/auditScoring.test.ts:9", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/auditScoring.test.ts:9"}, "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-7bc3879226f280f0", "name": "Commented-code block (8 lines) in server/auditRoutes.niche-cascade.test.ts:211", "shortDescription": {"text": "Commented-code block (8 lines) in server/auditRoutes.niche-cascade.test.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-625889758d24ce11", "name": "Legacy-named symbol `call_backup` in server/scripts/test-tradeline-flow.ts:513", "shortDescription": {"text": "Legacy-named symbol `call_backup` in server/scripts/test-tradeline-flow.ts:513"}, "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-9a548764da769e69", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/scripts/test-tradeline-flow.ts:51", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/scripts/test-tradeline-flow.ts:51"}, "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-b6fbbe0a6ab8c0c8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/scripts/test-stripe-flow.ts:47", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/scripts/test-stripe-flow.ts:47"}, "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-65e38050870cb2d7", "name": "Legacy-named symbol `monthlyLegacy` in server/lib/stripePriceResolver.ts:37", "shortDescription": {"text": "Legacy-named symbol `monthlyLegacy` in server/lib/stripePriceResolver.ts:37"}, "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-ed694f1186e5431e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/lib/outscraper.ts:75", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/lib/outscraper.ts:75"}, "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-e66e3474ffb87394", "name": "Commented-code block (5 lines) in server/lib/schemaSentinel.ts:193", "shortDescription": {"text": "Commented-code block (5 lines) in server/lib/schemaSentinel.ts:193"}, "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-a6e7d07566ab16df", "name": "Commented-code block (5 lines) in server/lib/auditFollowup.ts:56", "shortDescription": {"text": "Commented-code block (5 lines) in server/lib/auditFollowup.ts:56"}, "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-7c7e02aecf815d0a", "name": "Commented-code block (8 lines) in server/lib/serpOrchestrator.ts:144", "shortDescription": {"text": "Commented-code block (8 lines) in server/lib/serpOrchestrator.ts:144"}, "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-62a40c43916af693", "name": "Commented-code block (5 lines) in server/lib/emailTransport.ts:115", "shortDescription": {"text": "Commented-code block (5 lines) in server/lib/emailTransport.ts:115"}, "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-d618e95fe6f673f1", "name": "Commented-code block (5 lines) in server/lib/voiceProfile.ts:294", "shortDescription": {"text": "Commented-code block (5 lines) in server/lib/voiceProfile.ts:294"}, "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-61172f53c0cb9641", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/lib/r2Upload.ts:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/lib/r2Upload.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-ad6175c6238925fa", "name": "Commented-code block (6 lines) in server/lib/bootstrapMigrations.ts:126", "shortDescription": {"text": "Commented-code block (6 lines) in server/lib/bootstrapMigrations.ts:126"}, "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-54df125b62acc58f", "name": "Commented-code block (6 lines) in server/lib/missedCallFollowup.ts:12", "shortDescription": {"text": "Commented-code block (6 lines) in server/lib/missedCallFollowup.ts:12"}, "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-56303f35f17a7802", "name": "Legacy-named symbol `test_unused` in server/lib/serpOrchestrator.test.ts:29", "shortDescription": {"text": "Legacy-named symbol `test_unused` in server/lib/serpOrchestrator.test.ts:29"}, "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-8b4d49b1d961d9a9", "name": "Commented-code block (5 lines) in server/lib/emailOrchestrator.ts:379", "shortDescription": {"text": "Commented-code block (5 lines) in server/lib/emailOrchestrator.ts:379"}, "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-34bb16fc9738ed15", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/lib/emailOrchestrator.ts:301", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/lib/emailOrchestrator.ts:301"}, "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-b8b11fce8294c8d4", "name": "Commented-code block (5 lines) in server/lib/logger.ts:13", "shortDescription": {"text": "Commented-code block (5 lines) in server/lib/logger.ts:13"}, "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-3b76fe99cb1bee41", "name": "Commented-code block (7 lines) in server/lib/serpProviders/dataforseo.ts:22", "shortDescription": {"text": "Commented-code block (7 lines) in server/lib/serpProviders/dataforseo.ts:22"}, "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-6d3f6ab517a6a83a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/lib/seo/cloudflareDns.ts:44", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/lib/seo/cloudflareDns.ts:44"}, "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-34f4fd512f908448", "name": "Commented-code block (7 lines) in server/routes/portalRoutes.ts:77", "shortDescription": {"text": "Commented-code block (7 lines) in server/routes/portalRoutes.ts:77"}, "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-b9733b02f8bf2ba4", "name": "Legacy-named symbol `test_unused` in server/routes/outreachAttributionRoutes.test.ts:29", "shortDescription": {"text": "Legacy-named symbol `test_unused` in server/routes/outreachAttributionRoutes.test.ts:29"}, "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-37f9e7bdcedb989d", "name": "Commented-code block (6 lines) in server/routes/authRoutes.ts:1031", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/authRoutes.ts:1031"}, "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-68c67db4707b1bad", "name": "Commented-code block (5 lines) in server/routes/adminOutboundRoutes.ts:506", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/adminOutboundRoutes.ts:506"}, "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-c6cd49f70f0729b1", "name": "Commented-code block (6 lines) in server/routes/calculatorRoutes.ts:208", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/calculatorRoutes.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-5774680bceb47426", "name": "Commented-code block (6 lines) in server/routes/tradelineSetupRoutes.ts:411", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/tradelineSetupRoutes.ts:411"}, "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-391bd377ba753859", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/dopplerWebhookRoutes.ts:167", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/dopplerWebhookRoutes.ts:167"}, "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-900bcbcc140a4521", "name": "Commented-code block (6 lines) in server/routes/stripeBillingRoutes.ts:231", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/stripeBillingRoutes.ts:231"}, "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-65d6719bf3248c20", "name": "Commented-code block (5 lines) in server/routes/adminSeoIntegrationsRoutes.ts:301", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/adminSeoIntegrationsRoutes.ts:301"}, "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-78acd14d5f71c0aa", "name": "Commented-code block (5 lines) in server/routes/voicemailRoutes.ts:243", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/voicemailRoutes.ts:243"}, "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-5d07c8b324219f61", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/voicemailRoutes.ts:89", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/voicemailRoutes.ts:89"}, "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-664d0029b9d0c71d", "name": "Commented-code block (5 lines) in server/routes/portalTradelineKnowledgeRoutes.ts:413", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/portalTradelineKnowledgeRoutes.ts:413"}, "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-9577293bb605a67b", "name": "Commented-code block (5 lines) in server/routes/aiRoutes.ts:633", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/aiRoutes.ts:633"}, "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-25c8b9f85ae3a108", "name": "Commented-code block (5 lines) in server/routes/tradelineWidgetRoutes.ts:276", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/tradelineWidgetRoutes.ts:276"}, "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-973c3ad98043c096", "name": "Legacy-named symbol `stripe_contentflow_v2` in server/routes/adminEnvPresence.ts:34", "shortDescription": {"text": "Legacy-named symbol `stripe_contentflow_v2` in server/routes/adminEnvPresence.ts:34"}, "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-347455aa78cbb847", "name": "Commented-code block (7 lines) in server/routes/mobileVoiceRoutes.ts:56", "shortDescription": {"text": "Commented-code block (7 lines) in server/routes/mobileVoiceRoutes.ts:56"}, "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-dbe6e8aa8b7e3457", "name": "Commented-code block (6 lines) in server/routes/vapiRoutes.ts:354", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/vapiRoutes.ts:354"}, "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-b885d395f2e49d71", "name": "Commented-code block (5 lines) in server/routes/adminAiActivityRoutes.ts:238", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/adminAiActivityRoutes.ts:238"}, "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-d1b127cefc37672b", "name": "Commented-code block (5 lines) in server/routes/serviceAreaMapRoutes.ts:255", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/serviceAreaMapRoutes.ts:255"}, "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-75d5da097f513755", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/healthz.ts:227", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/healthz.ts:227"}, "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-2ee72b08f709aade", "name": "Commented-code block (5 lines) in server/routes/chatAttachmentRoutes.ts:61", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/chatAttachmentRoutes.ts:61"}, "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-57d350b0b27bd8d9", "name": "Commented-code block (8 lines) in server/routes/index.ts:207", "shortDescription": {"text": "Commented-code block (8 lines) in server/routes/index.ts:207"}, "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-c2052e774a7b17b7", "name": "Commented-code block (5 lines) in server/routes/fullAuditWebhookHandlers.ts:92", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/fullAuditWebhookHandlers.ts:92"}, "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-7c6b74338f395375", "name": "Commented-code block (6 lines) in server/routes/sitemapRoutes.ts:256", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/sitemapRoutes.ts:256"}, "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-d3e4941a981800ca", "name": "Commented-code block (6 lines) in server/routes/bookflowRoutes.ts:1089", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/bookflowRoutes.ts:1089"}, "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-653620bb217f9057", "name": "Commented-code block (5 lines) in server/routes/marketingRoutes.ts:13", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/marketingRoutes.ts:13"}, "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-bc9c83a18051feb1", "name": "Commented-code block (5 lines) in server/routes/invoiceTemplateRoutes.ts:145", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/invoiceTemplateRoutes.ts:145"}, "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-ec16430e4a6cc4e3", "name": "Commented-code block (6 lines) in server/routes/twilioCommsRoutes.ts:242", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/twilioCommsRoutes.ts:242"}, "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-70d310dcfaff189a", "name": "Commented-code block (6 lines) in server/routes/leadRoutes.ts:276", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/leadRoutes.ts:276"}, "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-b26b2937bbc63748", "name": "Commented-code block (6 lines) in server/routes/adminCrmRoutes.ts:308", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/adminCrmRoutes.ts:308"}, "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-3576477a31224161", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/adminCrmRoutes.ts:3301", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/adminCrmRoutes.ts:3301"}, "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-44435975f6b87925", "name": "Commented-code block (5 lines) in server/routes/mobileApiRoutes.ts:149", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/mobileApiRoutes.ts:149"}, "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-658c04235c2c6e29", "name": "Commented-code block (5 lines) in server/routes/adminOutreachSequencesRoutes.ts:404", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/adminOutreachSequencesRoutes.ts:404"}, "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-404f51c218f37df2", "name": "Commented-code block (6 lines) in server/routes/chatRoutes.ts:462", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/chatRoutes.ts:462"}, "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-d5d8c81fba47dfe4", "name": "Legacy-named symbol `seed_v1` in server/routes/socialSyncRoutes.ts:105", "shortDescription": {"text": "Legacy-named symbol `seed_v1` in server/routes/socialSyncRoutes.ts:105"}, "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-47c9aee81ef68aa5", "name": "Commented-code block (5 lines) in server/routes/socialSyncRoutes.ts:359", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/socialSyncRoutes.ts:359"}, "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-aeae6c7bfd8c60e0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/demoRoutes.ts:154", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/demoRoutes.ts:154"}, "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-5ceb8cb5084b43af", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/aiDemoRoutes.ts:341", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/aiDemoRoutes.ts:341"}, "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-86afc0fef7d678fc", "name": "Legacy-named symbol `test_unused` in server/routes/citationMatch.test.ts:23", "shortDescription": {"text": "Legacy-named symbol `test_unused` in server/routes/citationMatch.test.ts:23"}, "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-bdd837a202b97d01", "name": "Commented-code block (6 lines) in server/routes/twilioRoutes.ts:106", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/twilioRoutes.ts:106"}, "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-272351d862c519cb", "name": "Commented-code block (7 lines) in server/routes/freeToolsRoutes.ts:382", "shortDescription": {"text": "Commented-code block (7 lines) in server/routes/freeToolsRoutes.ts:382"}, "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-c9fcbd6d8e619e89", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/freeToolsRoutes.ts:147", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/freeToolsRoutes.ts:147"}, "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-39dc517c3d989879", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/mapSnapshotRoutes.ts:263", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/mapSnapshotRoutes.ts:263"}, "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-72c6f217637f6042", "name": "Commented-code block (5 lines) in server/routes/marketingChatRoutes.ts:289", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/marketingChatRoutes.ts:289"}, "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-7013d497754143b9", "name": "Legacy-named symbol `test_unused` in server/routes/quotequickAiChatRoutes.fusion.test.ts:30", "shortDescription": {"text": "Legacy-named symbol `test_unused` in server/routes/quotequickAiChatRoutes.fusion.test.ts:30"}, "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-883b1410cab09c16", "name": "Commented-code block (5 lines) in server/routes/mobileAiImagesRoutes.ts:131", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/mobileAiImagesRoutes.ts:131"}, "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-8be0eb4b13096a08", "name": "Commented-code block (6 lines) in server/routes/widgetFreetoolsRoutes.ts:173", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/widgetFreetoolsRoutes.ts:173"}, "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-a64885d8db8b2db8", "name": "Commented-code block (9 lines) in server/routes/founderNotifyRoutes.ts:92", "shortDescription": {"text": "Commented-code block (9 lines) in server/routes/founderNotifyRoutes.ts:92"}, "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-474bacb63fd11146", "name": "Commented-code block (10 lines) in server/routes/publicCheckoutRoutes.ts:136", "shortDescription": {"text": "Commented-code block (10 lines) in server/routes/publicCheckoutRoutes.ts:136"}, "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-50d6034662f4dd6a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/integrationHealthRoutes.ts:109", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/integrationHealthRoutes.ts:109"}, "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-3c864dfe467f3143", "name": "Commented-code block (7 lines) in server/routes/quotequickAiChatRoutes.ts:386", "shortDescription": {"text": "Commented-code block (7 lines) in server/routes/quotequickAiChatRoutes.ts:386"}, "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-54e7c7f3bf13bd11", "name": "Commented-code block (5 lines) in server/routes/portal/catalog.ts:128", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/portal/catalog.ts:128"}, "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-5281c2715229f434", "name": "Commented-code block (6 lines) in server/routes/portal/onboarding.ts:107", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/portal/onboarding.ts:107"}, "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-2486203d97d16070", "name": "Commented-code block (6 lines) in server/routes/portal/contentflow.ts:741", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/portal/contentflow.ts:741"}, "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-cdd5f268b704334b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/portal/contentflowDashboard.ts:201", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/portal/contentflowDashboard.ts:201"}, "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-13b1e50039b4ee54", "name": "Commented-code block (5 lines) in server/routes/portal/chat.ts:398", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/portal/chat.ts:398"}, "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-b24e97782db19861", "name": "Legacy-named symbol `test_unused` in server/routes/portal/wave73KpiStats.test.ts:5", "shortDescription": {"text": "Legacy-named symbol `test_unused` in server/routes/portal/wave73KpiStats.test.ts:5"}, "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-9446af3b8bfab03a", "name": "Commented-code block (5 lines) in server/routes/portal/settings.ts:224", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/portal/settings.ts:224"}, "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-1b08e53cdc6da78e", "name": "Commented-code block (7 lines) in server/routes/portal/mapguard/dashboardKpis.ts:279", "shortDescription": {"text": "Commented-code block (7 lines) in server/routes/portal/mapguard/dashboardKpis.ts:279"}, "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-f9260d5c8fa14b01", "name": "Commented-code block (5 lines) in server/services/mapguardTaskEngine.ts:1170", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/mapguardTaskEngine.ts:1170"}, "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-fbe859d1fe78388f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/wordpressMaintenance.ts:356", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/wordpressMaintenance.ts:356"}, "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-0a0144f57f8e35cd", "name": "Commented-code block (6 lines) in server/services/tradelineTemplates.ts:2176", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/tradelineTemplates.ts:2176"}, "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-7e9f1330da79605b", "name": "Commented-code block (5 lines) in server/services/adminAgentTools.ts:629", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/adminAgentTools.ts:629"}, "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-1c863c1d0655f1df", "name": "Commented-code block (5 lines) in server/services/outreachPlatform.ts:369", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/outreachPlatform.ts:369"}, "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-bce2d2aefd1b9f2d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/outreachPlatform.ts:106", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/outreachPlatform.ts:106"}, "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-75f1ac9badad089a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/alertService.ts:146", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/alertService.ts:146"}, "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-20da8b7a2bff7f9b", "name": "Commented-code block (7 lines) in server/services/assistant.ts:292", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/assistant.ts:292"}, "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-d56d7f809fc13808", "name": "Commented-code block (6 lines) in server/services/aiAgentLoopCore.ts:317", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/aiAgentLoopCore.ts:317"}, "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-4f0f23a2209ddec7", "name": "Commented-code block (5 lines) in server/services/mapguardAlerts.ts:359", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/mapguardAlerts.ts:359"}, "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-296227844df50fe1", "name": "Commented-code block (5 lines) in server/services/vapiService.ts:109", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/vapiService.ts:109"}, "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-78bf07ff24de67e3", "name": "Legacy-named symbol `test_unused` in server/services/outboundSafety.test.ts:5", "shortDescription": {"text": "Legacy-named symbol `test_unused` in server/services/outboundSafety.test.ts:5"}, "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-afae6124c91475a8", "name": "Commented-code block (6 lines) in server/services/inboundSmsConcierge.ts:312", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/inboundSmsConcierge.ts:312"}, "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-ac6212b5177b9cfe", "name": "Commented-code block (6 lines) in server/services/inboundEmailConcierge.ts:373", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/inboundEmailConcierge.ts:373"}, "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-8a023c46948ab0e9", "name": "Commented-code block (5 lines) in server/services/inboundEmailIngest.ts:170", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/inboundEmailIngest.ts:170"}, "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-e6e456c52b227dd6", "name": "Commented-code block (5 lines) in server/services/voiceFollowupConcierge.ts:464", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/voiceFollowupConcierge.ts:464"}, "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-b005eed0e9ceaae9", "name": "Commented-code block (6 lines) in server/services/aiSurfaces.ts:50", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/aiSurfaces.ts:50"}, "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-9bd53bcb5802069c", "name": "Commented-code block (6 lines) in server/services/promptBuilder.ts:437", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/promptBuilder.ts:437"}, "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-a1dc67ca08e34151", "name": "Commented-code block (5 lines) in server/services/outboundArtifactGenerator.ts:134", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/outboundArtifactGenerator.ts:134"}, "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-899b7ee5836c59c9", "name": "Commented-code block (7 lines) in server/services/rankflowReports.ts:497", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/rankflowReports.ts:497"}, "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-a05cd12969268101", "name": "Commented-code block (6 lines) in server/services/aiService.ts:303", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/aiService.ts:303"}, "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-832e6fea106c96ff", "name": "Commented-code block (6 lines) in server/services/reviewRequestService.ts:389", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/reviewRequestService.ts:389"}, "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-0bebdba8feecda12", "name": "Commented-code block (6 lines) in server/services/tradelineNotifications.ts:60", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/tradelineNotifications.ts:60"}, "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-e2b6b292a395698d", "name": "Commented-code block (6 lines) in server/services/pricingDocExtractor.ts:71", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/pricingDocExtractor.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-1672c8385b9e1c0b", "name": "Commented-code block (5 lines) in server/services/aiBudgetRouter.ts:119", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/aiBudgetRouter.ts:119"}, "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-26bd49e19f3da362", "name": "Commented-code block (6 lines) in server/services/opsEngine.ts:197", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/opsEngine.ts:197"}, "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-ffae2dfc3e0c3285", "name": "Commented-code block (7 lines) in server/services/competitorSearch.ts:468", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/competitorSearch.ts:468"}, "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-fd14c53793213cce", "name": "Commented-code block (5 lines) in server/services/emailCharts.ts:134", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/emailCharts.ts:134"}, "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-efa5492e10e73928", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/tradelineCostService.ts:103", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/tradelineCostService.ts:103"}, "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-3fcc492822b3da0a", "name": "Legacy-named symbol `test_unused` in server/services/tradelineTemplates.routing.test.ts:5", "shortDescription": {"text": "Legacy-named symbol `test_unused` in server/services/tradelineTemplates.routing.test.ts:5"}, "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-56c2b86182451f5e", "name": "Commented-code block (7 lines) in server/services/mapguardMonitor.ts:35", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/mapguardMonitor.ts:35"}, "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-d27ffcd16cf95ba4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/mapguardMonitor.ts:131", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/mapguardMonitor.ts:131"}, "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-abfed52d9d273d92", "name": "Commented-code block (5 lines) in server/services/mapguardUpsell.ts:286", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/mapguardUpsell.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-3e142c4cd28e16da", "name": "Commented-code block (7 lines) in server/services/outscraperClient.ts:173", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/outscraperClient.ts:173"}, "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-b81f5d0ffb21ad85", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/outscraperClient.ts:130", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/outscraperClient.ts:130"}, "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-ae248bafc163afd8", "name": "Commented-code block (6 lines) in server/services/mapguard/mapguardPostScheduler.ts:146", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/mapguard/mapguardPostScheduler.ts:146"}, "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-5ebefaa160a0515c", "name": "Commented-code block (6 lines) in server/services/contentflow/articleService.ts:424", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/contentflow/articleService.ts:424"}, "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-d750c434f4daf1b6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/contentflow/videoGenerationService.ts:198", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/contentflow/videoGenerationService.ts:198"}, "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-36d9f26367639a79", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/contentflow/imageGenerationService.ts:274", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/contentflow/imageGenerationService.ts:274"}, "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-39c9b2f5ab4c4dbf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/contentflow/imagePostProcess.ts:92", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/contentflow/imagePostProcess.ts: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-87c3131c50757bf1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/contentflow/youtubePublisher.ts:60", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/contentflow/youtubePublisher.ts:60"}, "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-1c120ad5fa0d1a4d", "name": "Commented-code block (5 lines) in server/services/contentflow/adapters/emailAdapter.ts:74", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/contentflow/adapters/emailAdapter.ts:74"}, "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-adff4993313d5fff", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/contentflow/videoStitcher/stitcher.test.ts:112", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/contentflow/videoStitcher/stitcher.test.ts:112"}, "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-0b1d938b17bf33a0", "name": "Commented-code block (6 lines) in server/services/contentflow/qualityGate/humanizeRewrite.ts:533", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/contentflow/qualityGate/humanizeRewrite.ts:533"}, "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-9abdedeb6990d6a8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/ai/imageRotator.ts:43", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/ai/imageRotator.ts:43"}, "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-461aba2c9209d387", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/ai/textRotator.ts:130", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/ai/textRotator.ts:130"}, "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-12d023dafc9dae86", "name": "Legacy-named symbol `call_backup` in server/services/onboardingMappers/index.ts:63", "shortDescription": {"text": "Legacy-named symbol `call_backup` in server/services/onboardingMappers/index.ts:63"}, "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-588f1a0c38202b17", "name": "Commented-code block (5 lines) in server/services/socialSync/costTracker.ts:121", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/socialSync/costTracker.ts:121"}, "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-cf119f5db67340c2", "name": "Legacy-named symbol `ai_v1` in server/services/socialSync/topicGenerator.ts:167", "shortDescription": {"text": "Legacy-named symbol `ai_v1` in server/services/socialSync/topicGenerator.ts:167"}, "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-de0c431cf12357ad", "name": "Commented-code block (5 lines) in server/services/socialSync/orchestrator.ts:296", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/socialSync/orchestrator.ts:296"}, "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-796744494673ae03", "name": "Commented-code block (6 lines) in server/services/socialSync/facebookService.ts:59", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/socialSync/facebookService.ts:59"}, "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-c416089bff060d96", "name": "Commented-code block (5 lines) in server/services/socialSync/instagramService.ts:82", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/socialSync/instagramService.ts:82"}, "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-82e288e9a214127b", "name": "Legacy-named symbol `queue_backup` in server/services/aiActions/handlers/webcare.ts:97", "shortDescription": {"text": "Legacy-named symbol `queue_backup` in server/services/aiActions/handlers/webcare.ts:97"}, "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-757d04427b86314a", "name": "Legacy-named symbol `daysOld` in server/services/businessOperator/detectors/draftCalculators.ts:40", "shortDescription": {"text": "Legacy-named symbol `daysOld` in server/services/businessOperator/detectors/draftCalculators.ts:40"}, "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-482f8aaeae99b5c2", "name": "Commented-code block (5 lines) in server/services/tradelineSetup/provisionNumber.ts:159", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/tradelineSetup/provisionNumber.ts:159"}, "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-1a6a72fd53eceb3c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/tradelineSetup/provisionNumber.ts:269", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/tradelineSetup/provisionNumber.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-88185b398249b5f4", "name": "Legacy-named symbol `call_backup` in server/services/tradelineSetup/unifyNumber.test.ts:162", "shortDescription": {"text": "Legacy-named symbol `call_backup` in server/services/tradelineSetup/unifyNumber.test.ts:162"}, "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-6656c56b3a73ec6b", "name": "Commented-code block (5 lines) in server/services/tradelineSetup/portSubmission.ts:165", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/tradelineSetup/portSubmission.ts:165"}, "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-fce54fe3e5e23b73", "name": "Commented-code block (7 lines) in server/services/booking/bookflowService.ts:313", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/booking/bookflowService.ts:313"}, "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-7a8dfe68b79e6b6a", "name": "Legacy-named symbol `test_unused` in server/services/rankflow/serpRankProvider.test.ts:32", "shortDescription": {"text": "Legacy-named symbol `test_unused` in server/services/rankflow/serpRankProvider.test.ts:32"}, "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-f1bec2bc107946bf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/reputation/gbpReviewIngestion.ts:50", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/reputation/gbpReviewIngestion.ts:50"}, "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-887110a8042c9e35", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/reputation/trustpilotClient.ts:59", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/reputation/trustpilotClient.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-be5414fd29dcbf7e", "name": "Commented-code block (6 lines) in server/services/reputation/reviewRequestService.ts:176", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/reputation/reviewRequestService.ts:176"}, "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-84406d595747365b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/reputation/yelpClient.ts:51", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/reputation/yelpClient.ts:51"}, "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-7396603b371a8f46", "name": "Commented-code block (6 lines) in server/services/seoContent/programmaticMatrixGenerator.ts:472", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/seoContent/programmaticMatrixGenerator.ts:472"}, "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-1789d340400c67a1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/citationTracker/scrapers/httpClient.ts:72", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/citationTracker/scrapers/httpClient.ts:72"}, "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-a709714d1d200fa4", "name": "Commented-code block (5 lines) in server/engine/routingWorker.ts:210", "shortDescription": {"text": "Commented-code block (5 lines) in server/engine/routingWorker.ts:210"}, "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-1ab05dbbe92afdae", "name": "Commented-code block (7 lines) in server/jobs/trialProExpiryWorker.ts:41", "shortDescription": {"text": "Commented-code block (7 lines) in server/jobs/trialProExpiryWorker.ts:41"}, "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-0b9f203ea24d9511", "name": "Commented-code block (5 lines) in server/jobs/vapiAssistantHealthCheck.ts:115", "shortDescription": {"text": "Commented-code block (5 lines) in server/jobs/vapiAssistantHealthCheck.ts:115"}, "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-10409d82e165640f", "name": "Commented-code block (7 lines) in server/jobs/reviewMonitorWorker.ts:151", "shortDescription": {"text": "Commented-code block (7 lines) in server/jobs/reviewMonitorWorker.ts:151"}, "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-393ca061d21d3cc0", "name": "Commented-code block (6 lines) in server/jobs/portStatusPollWorker.ts:215", "shortDescription": {"text": "Commented-code block (6 lines) in server/jobs/portStatusPollWorker.ts:215"}, "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-f1741b1be8b11045", "name": "Commented-code block (5 lines) in server/jobs/rankfluxAlertWorker.ts:104", "shortDescription": {"text": "Commented-code block (5 lines) in server/jobs/rankfluxAlertWorker.ts:104"}, "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-6af3ee866ea6aeb0", "name": "Legacy-named symbol `WizardLegacy` in server/jobs/trialLifecycleWorker.test.ts:87", "shortDescription": {"text": "Legacy-named symbol `WizardLegacy` in server/jobs/trialLifecycleWorker.test.ts:87"}, "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-99b539cbc8105ba3", "name": "Commented-code block (6 lines) in server/jobs/incompleteSignupWorker.ts:40", "shortDescription": {"text": "Commented-code block (6 lines) in server/jobs/incompleteSignupWorker.ts:40"}, "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-fccb8ad8c3f3918e", "name": "Commented-code block (5 lines) in server/jobs/followupWorker.ts:232", "shortDescription": {"text": "Commented-code block (5 lines) in server/jobs/followupWorker.ts:232"}, "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-6d249130e336d90b", "name": "Commented-code block (5 lines) in server/jobs/scheduler.ts:375", "shortDescription": {"text": "Commented-code block (5 lines) in server/jobs/scheduler.ts:375"}, "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-faea3415543b3a69", "name": "Commented-code block (5 lines) in server/jobs/reviewFollowupWorker.ts:155", "shortDescription": {"text": "Commented-code block (5 lines) in server/jobs/reviewFollowupWorker.ts:155"}, "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-81faaf83564c676b", "name": "Legacy-named symbol `test_unused` in server/jobs/quotequickHomeownerSms.test.ts:10", "shortDescription": {"text": "Legacy-named symbol `test_unused` in server/jobs/quotequickHomeownerSms.test.ts:10"}, "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-6e42bcf6c3f1fb05", "name": "Legacy-named symbol `test_unused` in server/jobs/tradelineMonthlyDigest.test.ts:5", "shortDescription": {"text": "Legacy-named symbol `test_unused` in server/jobs/tradelineMonthlyDigest.test.ts:5"}, "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-ffd9d3de867fb077", "name": "Commented-code block (5 lines) in server/jobs/outboundSyncWorker.ts:282", "shortDescription": {"text": "Commented-code block (5 lines) in server/jobs/outboundSyncWorker.ts:282"}, "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-5ca18bcb245f4350", "name": "Legacy-named symbol `test_unused` in server/jobs/quotequickMonthlyDigest.test.ts:5", "shortDescription": {"text": "Legacy-named symbol `test_unused` in server/jobs/quotequickMonthlyDigest.test.ts:5"}, "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-c1fc63b8aa8ed20f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/jobs/imageRetentionWorker.ts:88", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/jobs/imageRetentionWorker.ts:88"}, "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-431dfa2474298ff2", "name": "Commented-code block (6 lines) in server/jobs/videoRenderWorker.ts:623", "shortDescription": {"text": "Commented-code block (6 lines) in server/jobs/videoRenderWorker.ts:623"}, "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-d9f90ddf5a5672c8", "name": "Legacy-named symbol `test_unused` in server/jobs/incompleteSignupWorker.test.ts:29", "shortDescription": {"text": "Legacy-named symbol `test_unused` in server/jobs/incompleteSignupWorker.test.ts:29"}, "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-0062219c78ae9307", "name": "Commented-code block (6 lines) in server/jobs/incompleteSignupWorker.test.ts:320", "shortDescription": {"text": "Commented-code block (6 lines) in server/jobs/incompleteSignupWorker.test.ts: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-76089aaa1fb8951b", "name": "Legacy-named symbol `test_unused` in server/jobs/contentflowMonthlyDigest.test.ts:5", "shortDescription": {"text": "Legacy-named symbol `test_unused` in server/jobs/contentflowMonthlyDigest.test.ts:5"}, "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-b602bb44ecf4da70", "name": "Commented-code block (6 lines) in server/jobs/rankflowWorker.ts:54", "shortDescription": {"text": "Commented-code block (6 lines) in server/jobs/rankflowWorker.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-855073becefb0a01", "name": "Commented-code block (7 lines) in server/storage/calculator.ts:98", "shortDescription": {"text": "Commented-code block (7 lines) in server/storage/calculator.ts:98"}, "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-5b2e721b05c39c98", "name": "`fetch()` without try/.catch or AbortSignal \u2014 infra/quotequick-wildcard-proxy.worker.js:41", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 infra/quotequick-wildcard-proxy.worker.js:41"}, "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-59a12423985fca9c", "name": "316 env vars used in code but missing from .env.example", "shortDescription": {"text": "316 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ADMIN_2FA_MANDATORY`, `ADMIN_AI_KILL_SWITCH`, `ADMIN_API_KEY`, `ADMIN_EMAIL`, `ADMIN_RECOVERY_EMAIL`, `ADMIN_RECOVERY_NAME`, `ADMIN_RECOVERY_PASSWORD`, `ADMIN_TOOLS_ENABLED` + 308 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-63c571d526b8287a", "name": "Frontend route `/internal/template-render/:templateId` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/internal/template-render/:templateId` has no Link/navigate to it \u2014 client/src/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-0f1ba6fbd20f9285", "name": "Frontend route `/admin/ai-channels` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/ai-channels` has no Link/navigate to it \u2014 client/src/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-3023cbc974ade62a", "name": "Frontend route `/admin/seo/review` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/seo/review` has no Link/navigate to it \u2014 client/src/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-58472d20619e7226", "name": "Frontend route `/admin/crm/clients/:id` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/crm/clients/:id` has no Link/navigate to it \u2014 client/src/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-47a3d5c1b6410db3", "name": "Frontend route `/admin/content-pipeline` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/content-pipeline` has no Link/navigate to it \u2014 client/src/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-c6d59b9c88cbaa8a", "name": "Frontend route `/admin/audit-log` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/audit-log` has no Link/navigate to it \u2014 client/src/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-bf0f002ca52e36ce", "name": "Frontend route `/admin/chat-history` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/chat-history` has no Link/navigate to it \u2014 client/src/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-08d7e388f7c57feb", "name": "Frontend route `/admin/integrations/google` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/integrations/google` has no Link/navigate to it \u2014 client/src/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-42a3084cab30d219", "name": "Frontend route `/admin/tradeline/learning` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/tradeline/learning` has no Link/navigate to it \u2014 client/src/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-e539005ff6ad3e86", "name": "Frontend route `/admin/tradeline/voices` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/tradeline/voices` has no Link/navigate to it \u2014 client/src/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-abe067c9b9dd48d2", "name": "Frontend route `/admin/tradeline/ports` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/tradeline/ports` has no Link/navigate to it \u2014 client/src/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-1c58ed8abc5e2db1", "name": "Frontend route `/admin/mobile-preview` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/mobile-preview` has no Link/navigate to it \u2014 client/src/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-175a383caefa40de", "name": "Frontend route `/admin/quotequick/trades/:id` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/quotequick/trades/:id` has no Link/navigate to it \u2014 client/src/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-4a7ef47089bee8ae", "name": "Frontend route `/admin/quotequick/templates/:id` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/quotequick/templates/:id` has no Link/navigate to it \u2014 client/src/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-5ccc2a78b0a22423", "name": "Frontend route `/admin/api-platform/users/:userId` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/api-platform/users/:userId` has no Link/navigate to it \u2014 client/src/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-dff0325f4040f9ee", "name": "Frontend route `/admin/crm/support/:id` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/crm/support/:id` has no Link/navigate to it \u2014 client/src/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-cf55041abb528bd1", "name": "Frontend route `/admin/waitlist` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/waitlist` has no Link/navigate to it \u2014 client/src/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-a075f43940bb4956", "name": "Frontend route `/admin/products/:id` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/products/:id` has no Link/navigate to it \u2014 client/src/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-983f10b47e74aff5", "name": "Frontend route `/admin/service-ops` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/service-ops` has no Link/navigate to it \u2014 client/src/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-25a9f0c023ea77af", "name": "Frontend route `/admin/crm/mapguard/ops` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/crm/mapguard/ops` has no Link/navigate to it \u2014 client/src/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-19c75e9ab9993072", "name": "Frontend route `/admin/crm/ai-budget` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/crm/ai-budget` has no Link/navigate to it \u2014 client/src/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-022e45b4bd67274c", "name": "Frontend route `/admin/ai-activity` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/ai-activity` has no Link/navigate to it \u2014 client/src/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-a546951f6fb07ee0", "name": "Frontend route `/admin/ui-primitives` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/ui-primitives` has no Link/navigate to it \u2014 client/src/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-14f8b3178c24f8a6", "name": "Frontend route `/admin/system/availability` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/system/availability` has no Link/navigate to it \u2014 client/src/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-b7276a01e9a950fe", "name": "Frontend route `/admin/system/deployment-health` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/system/deployment-health` has no Link/navigate to it \u2014 client/src/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-f5d93fdf6c0bb6bf", "name": "Frontend route `/admin/outbound` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/outbound` has no Link/navigate to it \u2014 client/src/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-b5447e10e184a830", "name": "Frontend route `/portal/tradeline/port-status` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/portal/tradeline/port-status` has no Link/navigate to it \u2014 client/src/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-15d1134e4f6d540c", "name": "Frontend route `/portal/tradeline/email-domain/setup` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/portal/tradeline/email-domain/setup` has no Link/navigate to it \u2014 client/src/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-437b6ae62793666e", "name": "Frontend route `/portal/tradeline/chat-widget/install-onboarding` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/portal/tradeline/chat-widget/install-onboarding` has no Link/navigate to it \u2014 client/src/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-6a58692b965c46f7", "name": "Frontend route `/admin/install-queue` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/admin/install-queue` has no Link/navigate to it \u2014 client/src/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-d865145676d38b85", "name": "Frontend route `/portal/onboarding/:id` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/portal/onboarding/:id` has no Link/navigate to it \u2014 client/src/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-f755e690fa6caab5", "name": "Frontend route `/portal/services/:id` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/portal/services/:id` has no Link/navigate to it \u2014 client/src/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-0667009e409b5d54", "name": "Frontend route `/portal/mapguard/setup` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/portal/mapguard/setup` has no Link/navigate to it \u2014 client/src/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-e647dc2218d3d746", "name": "Frontend route `/portal/reputationshield/setup` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/portal/reputationshield/setup` has no Link/navigate to it \u2014 client/src/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-4a87f100e9cb9aa8", "name": "Frontend route `/portal/settings/notifications` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/portal/settings/notifications` has no Link/navigate to it \u2014 client/src/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-1a32413dda50d929", "name": "Frontend route `/portal/settings/sms-templates` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/portal/settings/sms-templates` has no Link/navigate to it \u2014 client/src/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-a37fee759bed32b6", "name": "Frontend route `/portal/rankflow/setup` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/portal/rankflow/setup` has no Link/navigate to it \u2014 client/src/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-134decdc441be263", "name": "Frontend route `/portal/contentflow/setup` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/portal/contentflow/setup` has no Link/navigate to it \u2014 client/src/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-1ab5f30e144ba22b", "name": "Frontend route `/portal/help/tickets/:id` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/portal/help/tickets/:id` has no Link/navigate to it \u2014 client/src/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-58899a0fd5f00875", "name": "Frontend route `/portal/socialsync/dashboard` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/portal/socialsync/dashboard` has no Link/navigate to it \u2014 client/src/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-33f5e59fed14eff3", "name": "Frontend route `/portal/socialsync/setup` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/portal/socialsync/setup` has no Link/navigate to it \u2014 client/src/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-f664c8c14b9df2aa", "name": "Frontend route `/portal/reputation` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/portal/reputation` has no Link/navigate to it \u2014 client/src/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-035cb294a7133a2b", "name": "Frontend route `/portal/invoices/:id` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/portal/invoices/:id` has no Link/navigate to it \u2014 client/src/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-a4ad7799376ec1f4", "name": "Frontend route `/portal/chat-history` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/portal/chat-history` has no Link/navigate to it \u2014 client/src/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-e5b2790a82626f33", "name": "Frontend route `/portal/calculators/:id/analytics` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/portal/calculators/:id/analytics` has no Link/navigate to it \u2014 client/src/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-1f7cf7133d822e20", "name": "Frontend route `/compare/reputationshield-vs-nicejob` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/compare/reputationshield-vs-nicejob` has no Link/navigate to it \u2014 client/src/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-bd99dca21f7672cf", "name": "Frontend route `/compare/:slug` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/compare/:slug` has no Link/navigate to it \u2014 client/src/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-20595882ab56c8bd", "name": "Frontend route `/products/assistants` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/products/assistants` has no Link/navigate to it \u2014 client/src/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-68fe57b302912491", "name": "Frontend route `/products/ai-chat` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/products/ai-chat` has no Link/navigate to it \u2014 client/src/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-c1b5a063555f74fd", "name": "Frontend route `/products/ai-voice` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/products/ai-voice` has no Link/navigate to it \u2014 client/src/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-c8a6c09b4657fe05", "name": "Frontend route `/products/quickquote` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/products/quickquote` has no Link/navigate to it \u2014 client/src/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-71df1ed6a40c9bf6", "name": "Frontend route `/products/booking-addon` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/products/booking-addon` has no Link/navigate to it \u2014 client/src/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-bfb152c6604c069a", "name": "Frontend route `/products/fix-and-optimize` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/products/fix-and-optimize` has no Link/navigate to it \u2014 client/src/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-c35cc52f52854c79", "name": "Frontend route `/products/:slug` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/products/:slug` has no Link/navigate to it \u2014 client/src/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-4c62b2a02bc4a2a3", "name": "Frontend route `/solutions/:slug` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/solutions/:slug` has no Link/navigate to it \u2014 client/src/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-8312bfdc053c8a1f", "name": "Frontend route `/demos/:slug` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/demos/:slug` has no Link/navigate to it \u2014 client/src/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-f414594d09caaf07", "name": "Frontend route `/product/:slug` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/product/:slug` has no Link/navigate to it \u2014 client/src/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-30dbc65edc2739f2", "name": "Frontend route `/product` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/product` has no Link/navigate to it \u2014 client/src/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-276ddc58b853b5c3", "name": "Frontend route `/platform` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/platform` has no Link/navigate to it \u2014 client/src/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-56186aaa3c3ac774", "name": "Frontend route `/plans` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/plans` has no Link/navigate to it \u2014 client/src/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-296520b226acca17", "name": "Frontend route `/checkout/success` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/checkout/success` has no Link/navigate to it \u2014 client/src/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-5de61152e303869d", "name": "Frontend route `/checkout/cancelled` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/checkout/cancelled` has no Link/navigate to it \u2014 client/src/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-19673c34c1861a36", "name": "Frontend route `/signup/business` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/signup/business` has no Link/navigate to it \u2014 client/src/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-cbdc6e33593d6c7e", "name": "Frontend route `/bundles` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/bundles` has no Link/navigate to it \u2014 client/src/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-ad4271e0e81fa8cf", "name": "Frontend route `/templates/:slug` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/templates/:slug` has no Link/navigate to it \u2014 client/src/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-1b0c81e27478c223", "name": "Frontend route `/ai-receptionists/:slug` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/ai-receptionists/:slug` has no Link/navigate to it \u2014 client/src/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-a5a58d774bd1f96a", "name": "Frontend route `/design-showcase` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/design-showcase` has no Link/navigate to it \u2014 client/src/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-a08941d392f0a5e4", "name": "Frontend route `/mockups/compete` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/mockups/compete` has no Link/navigate to it \u2014 client/src/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-46dc03eab6bae210", "name": "Frontend route `/blog/:slug` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/blog/:slug` has no Link/navigate to it \u2014 client/src/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-41de0434cb85ef0a", "name": "Frontend route `/demo/:templateId` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/demo/:templateId` has no Link/navigate to it \u2014 client/src/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-e772ae8e1e8a1e8b", "name": "Frontend route `/dev/primitives` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/dev/primitives` has no Link/navigate to it \u2014 client/src/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-0af619c6da0945ab", "name": "Frontend route `/dev/canvas` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/dev/canvas` has no Link/navigate to it \u2014 client/src/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-f43a8f2226a61010", "name": "Frontend route `/tools/missed-call-calculator/:trade` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/tools/missed-call-calculator/:trade` has no Link/navigate to it \u2014 client/src/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-1ad14dcb01b2d748", "name": "Frontend route `/tools/missed-call-calculator` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/tools/missed-call-calculator` has no Link/navigate to it \u2014 client/src/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-f40f3aec609e6de0", "name": "Frontend route `/tools/map-snapshot/:tradeSlug` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/tools/map-snapshot/:tradeSlug` has no Link/navigate to it \u2014 client/src/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-1189100291a81c7c", "name": "Frontend route `/tools/map-snapshot` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/tools/map-snapshot` has no Link/navigate to it \u2014 client/src/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-b384079c5311d015", "name": "Frontend route `/snapshot/:slug` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/snapshot/:slug` has no Link/navigate to it \u2014 client/src/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-122a16c58a9f8b5b", "name": "Frontend route `/tools/local-search-checker` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/tools/local-search-checker` has no Link/navigate to it \u2014 client/src/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-0651f7c088b2f6d6", "name": "Frontend route `/tools/quote-demo` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/tools/quote-demo` has no Link/navigate to it \u2014 client/src/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-85c594706ba6ca5b", "name": "Frontend route `/tools/build-with-ai/preview` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/tools/build-with-ai/preview` has no Link/navigate to it \u2014 client/src/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-45843d2b60e53b39", "name": "Frontend route `/tools/build-with-ai` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/tools/build-with-ai` has no Link/navigate to it \u2014 client/src/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-81395e42da422283", "name": "Frontend route `/tools` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/tools` has no Link/navigate to it \u2014 client/src/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-be3f2417fd966b0f", "name": "Frontend route `/missed-call-calculator` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/missed-call-calculator` has no Link/navigate to it \u2014 client/src/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-110d790ee09fd322", "name": "Frontend route `/quote-demo` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/quote-demo` has no Link/navigate to it \u2014 client/src/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-18a404102be9c91b", "name": "Frontend route `/onboarding/:token` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/onboarding/:token` has no Link/navigate to it \u2014 client/src/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-64e208af668efba5", "name": "Frontend route `/review/qr/:widgetToken` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/review/qr/:widgetToken` has no Link/navigate to it \u2014 client/src/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-aeb4d7dd7b26f2b5", "name": "Frontend route `/review/:token` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/review/:token` has no Link/navigate to it \u2014 client/src/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-8db5a43e8e194cd2", "name": "Frontend route `/r/:slug` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/r/:slug` has no Link/navigate to it \u2014 client/src/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-ae9f9283f81b57a1", "name": "Frontend route `/audit/report/:id` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/audit/report/:id` has no Link/navigate to it \u2014 client/src/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-1a9cb5007473bf05", "name": "Frontend route `/book/:slug` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/book/:slug` has no Link/navigate to it \u2014 client/src/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-61cc8e67e1aace92", "name": "Frontend route `/pay/:token` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/pay/:token` has no Link/navigate to it \u2014 client/src/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-82a6437395623237", "name": "Frontend route `/q/:slug` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/q/:slug` has no Link/navigate to it \u2014 client/src/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-e5526736756e21ea", "name": "Frontend route `/wizard/legacy` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/wizard/legacy` has no Link/navigate to it \u2014 client/src/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-13bd1658117afc25", "name": "Frontend route `/Wizard/legacy` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/Wizard/legacy` has no Link/navigate to it \u2014 client/src/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-926b8aa8fbaa488a", "name": "Frontend route `/Wizard` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/Wizard` has no Link/navigate to it \u2014 client/src/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-c0b79370f81dc7f5", "name": "Frontend route `/Calculator` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/Calculator` has no Link/navigate to it \u2014 client/src/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-b8d2f2d7df67ec3c", "name": "Frontend route `/EditCalculator` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/EditCalculator` has no Link/navigate to it \u2014 client/src/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-cd99090b163f87df", "name": "Frontend route `/Leads` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/Leads` has no Link/navigate to it \u2014 client/src/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-388a365cfa307cbf", "name": "Frontend route `/Dashboard` has no Link/navigate to it \u2014 client/src/App.tsx", "shortDescription": {"text": "Frontend route `/Dashboard` has no Link/navigate to it \u2014 client/src/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-2b856534e86b0509", "name": "Dangling fetch: POST https://api.together.xyz/v1/images/generations (scripts/generate-ai-thumbnails.mjs:184)", "shortDescription": {"text": "Dangling fetch: POST https://api.together.xyz/v1/images/generations (scripts/generate-ai-thumbnails.mjs:184)"}, "fullDescription": {"text": "`scripts/generate-ai-thumbnails.mjs:184` calls `POST https://api.together.xyz/v1/images/generations` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.together.xyz/v1/images/generations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-82e4dad0c369ae65", "name": "Dangling fetch: GET https://api.github.com${path} (scripts/staging-gate/identify-previous-occupant.mjs:41)", "shortDescription": {"text": "Dangling fetch: GET https://api.github.com${path} (scripts/staging-gate/identify-previous-occupant.mjs:41)"}, "fullDescription": {"text": "`scripts/staging-gate/identify-previous-occupant.mjs:41` calls `GET https://api.github.com${path}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9542be5ed291ae39", "name": "Dangling fetch: POST /api/audit/save-lead (client/src/components/marketing/AuditGate.tsx:256)", "shortDescription": {"text": "Dangling fetch: POST /api/audit/save-lead (client/src/components/marketing/AuditGate.tsx:256)"}, "fullDescription": {"text": "`client/src/components/marketing/AuditGate.tsx:256` calls `POST /api/audit/save-lead` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/audit/save-lead`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b4f2252db6142285", "name": "Dangling fetch: GET /api/portal/brand-kits (client/src/components/wizard/elfsight/StyleTab.tsx:3315)", "shortDescription": {"text": "Dangling fetch: GET /api/portal/brand-kits (client/src/components/wizard/elfsight/StyleTab.tsx:3315)"}, "fullDescription": {"text": "`client/src/components/wizard/elfsight/StyleTab.tsx:3315` calls `GET /api/portal/brand-kits` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portal/brand-kits`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-13895f899ccc4a03", "name": "Dangling fetch: POST /api/portal/brand-kits (client/src/components/wizard/elfsight/StyleTab.tsx:3360)", "shortDescription": {"text": "Dangling fetch: POST /api/portal/brand-kits (client/src/components/wizard/elfsight/StyleTab.tsx:3360)"}, "fullDescription": {"text": "`client/src/components/wizard/elfsight/StyleTab.tsx:3360` calls `POST /api/portal/brand-kits` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portal/brand-kits`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6312e46dc3224974", "name": "Dangling fetch: GET https://api.frankfurter.app/latest?from=CAD&to=USD (client/src/lib/fx.ts:37)", "shortDescription": {"text": "Dangling fetch: GET https://api.frankfurter.app/latest?from=CAD&to=USD (client/src/lib/fx.ts:37)"}, "fullDescription": {"text": "`client/src/lib/fx.ts:37` calls `GET https://api.frankfurter.app/latest?from=CAD&to=USD` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.frankfurter.app/latest`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0908bb3a8cc5c515", "name": "Dangling fetch: GET /api/audit/report/${id}/pdf (client/src/pages/marketing/SharedAuditReport.tsx:201)", "shortDescription": {"text": "Dangling fetch: GET /api/audit/report/${id}/pdf (client/src/pages/marketing/SharedAuditReport.tsx:201)"}, "fullDescription": {"text": "`client/src/pages/marketing/SharedAuditReport.tsx:201` calls `GET /api/audit/report/${id}/pdf` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/audit/report/<p>/pdf`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6f4cc1466d5d2292", "name": "Dangling fetch: POST /api/audit/report/${id}/send-email (client/src/pages/marketing/SharedAuditReport.tsx:238)", "shortDescription": {"text": "Dangling fetch: POST /api/audit/report/${id}/send-email (client/src/pages/marketing/SharedAuditReport.tsx:238)"}, "fullDescription": {"text": "`client/src/pages/marketing/SharedAuditReport.tsx:238` calls `POST /api/audit/report/${id}/send-email` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/audit/report/<p>/send-email`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7678d1050daae7c4", "name": "Dangling fetch: GET /api/audit/report/${id} (client/src/pages/marketing/SharedAuditReport.tsx:269)", "shortDescription": {"text": "Dangling fetch: GET /api/audit/report/${id} (client/src/pages/marketing/SharedAuditReport.tsx:269)"}, "fullDescription": {"text": "`client/src/pages/marketing/SharedAuditReport.tsx:269` calls `GET /api/audit/report/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/audit/report/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-798a76134134088c", "name": "Dangling fetch: POST /api/audit/speed (client/src/pages/marketing/FreeAudit.tsx:873)", "shortDescription": {"text": "Dangling fetch: POST /api/audit/speed (client/src/pages/marketing/FreeAudit.tsx:873)"}, "fullDescription": {"text": "`client/src/pages/marketing/FreeAudit.tsx:873` calls `POST /api/audit/speed` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/audit/speed`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7f57acbc39cfc713", "name": "Dangling fetch: GET /api/audit/speed/${reportId} (client/src/pages/marketing/FreeAudit.tsx:892)", "shortDescription": {"text": "Dangling fetch: GET /api/audit/speed/${reportId} (client/src/pages/marketing/FreeAudit.tsx:892)"}, "fullDescription": {"text": "`client/src/pages/marketing/FreeAudit.tsx:892` calls `GET /api/audit/speed/${reportId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/audit/speed/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fe3b27c5746fb324", "name": "Dangling fetch: GET /api/audit/narrative/${narrId} (client/src/pages/marketing/FreeAudit.tsx:942)", "shortDescription": {"text": "Dangling fetch: GET /api/audit/narrative/${narrId} (client/src/pages/marketing/FreeAudit.tsx:942)"}, "fullDescription": {"text": "`client/src/pages/marketing/FreeAudit.tsx:942` calls `GET /api/audit/narrative/${narrId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/audit/narrative/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-82c0411c29fe6770", "name": "Dangling fetch: GET /api/audit/report/${reportId}/rankflow-recommendation (client/src/pages/marketing/ReportView.tsx:820", "shortDescription": {"text": "Dangling fetch: GET /api/audit/report/${reportId}/rankflow-recommendation (client/src/pages/marketing/ReportView.tsx:820)"}, "fullDescription": {"text": "`client/src/pages/marketing/ReportView.tsx:820` calls `GET /api/audit/report/${reportId}/rankflow-recommendation` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/audit/report/<p>/rankflow-recommendation`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9171616842d02c30", "name": "Dangling fetch: GET /api/audit/report/${reportId}/pdf (client/src/pages/marketing/ReportView.tsx:1042)", "shortDescription": {"text": "Dangling fetch: GET /api/audit/report/${reportId}/pdf (client/src/pages/marketing/ReportView.tsx:1042)"}, "fullDescription": {"text": "`client/src/pages/marketing/ReportView.tsx:1042` calls `GET /api/audit/report/${reportId}/pdf` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/audit/report/<p>/pdf`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ea2104eb917f0343", "name": "Dangling fetch: POST /api/audit/save-email (client/src/pages/marketing/ReportView.tsx:1089)", "shortDescription": {"text": "Dangling fetch: POST /api/audit/save-email (client/src/pages/marketing/ReportView.tsx:1089)"}, "fullDescription": {"text": "`client/src/pages/marketing/ReportView.tsx:1089` calls `POST /api/audit/save-email` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/audit/save-email`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-82b1f236316f42ea", "name": "Dangling fetch: POST /api/audit/report/${reportId}/send-email (client/src/pages/marketing/ReportView.tsx:1104)", "shortDescription": {"text": "Dangling fetch: POST /api/audit/report/${reportId}/send-email (client/src/pages/marketing/ReportView.tsx:1104)"}, "fullDescription": {"text": "`client/src/pages/marketing/ReportView.tsx:1104` calls `POST /api/audit/report/${reportId}/send-email` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/audit/report/<p>/send-email`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-44f4e4a3fe46c522", "name": "Dangling fetch: GET /api/admin/tradeline/voices/${voiceId}/sample (client/src/pages/admin/TradelineVoicesPage.tsx:126)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/tradeline/voices/${voiceId}/sample (client/src/pages/admin/TradelineVoicesPage.tsx:126)"}, "fullDescription": {"text": "`client/src/pages/admin/TradelineVoicesPage.tsx:126` calls `GET /api/admin/tradeline/voices/${voiceId}/sample` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/tradeline/voices/<p>/sample`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-be2be2ced2389029", "name": "Dangling fetch: POST /api/admin/crm/support/tickets/${ticketId}/ai-draft/${action} (client/src/pages/admin/SupportTicket", "shortDescription": {"text": "Dangling fetch: POST /api/admin/crm/support/tickets/${ticketId}/ai-draft/${action} (client/src/pages/admin/SupportTicketDetailPage.tsx:175)"}, "fullDescription": {"text": "`client/src/pages/admin/SupportTicketDetailPage.tsx:175` calls `POST /api/admin/crm/support/tickets/${ticketId}/ai-draft/${action}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/crm/support/tickets/<p>/ai-draft/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-165d240da01e60cf", "name": "Dangling fetch: GET /api/admin/api-platform/users/${userIdNum}/audit (client/src/pages/admin/ApiPlatformUserDetailPage.t", "shortDescription": {"text": "Dangling fetch: GET /api/admin/api-platform/users/${userIdNum}/audit (client/src/pages/admin/ApiPlatformUserDetailPage.tsx:214)"}, "fullDescription": {"text": "`client/src/pages/admin/ApiPlatformUserDetailPage.tsx:214` calls `GET /api/admin/api-platform/users/${userIdNum}/audit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/api-platform/users/<p>/audit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bc452b29f2eb76da", "name": "Dangling fetch: GET /api/portal/brand-kits (client/src/pages/portal/PortalBrandKitsPage.tsx:67)", "shortDescription": {"text": "Dangling fetch: GET /api/portal/brand-kits (client/src/pages/portal/PortalBrandKitsPage.tsx:67)"}, "fullDescription": {"text": "`client/src/pages/portal/PortalBrandKitsPage.tsx:67` calls `GET /api/portal/brand-kits` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portal/brand-kits`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d8076257bdc8708c", "name": "Dangling fetch: PATCH /api/portal/brand-kits/${editingId} (client/src/pages/portal/PortalBrandKitsPage.tsx:112)", "shortDescription": {"text": "Dangling fetch: PATCH /api/portal/brand-kits/${editingId} (client/src/pages/portal/PortalBrandKitsPage.tsx:112)"}, "fullDescription": {"text": "`client/src/pages/portal/PortalBrandKitsPage.tsx:112` calls `PATCH /api/portal/brand-kits/${editingId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portal/brand-kits/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-93b93f55aed6208b", "name": "Dangling fetch: DELETE /api/portal/brand-kits/${id} (client/src/pages/portal/PortalBrandKitsPage.tsx:137)", "shortDescription": {"text": "Dangling fetch: DELETE /api/portal/brand-kits/${id} (client/src/pages/portal/PortalBrandKitsPage.tsx:137)"}, "fullDescription": {"text": "`client/src/pages/portal/PortalBrandKitsPage.tsx:137` calls `DELETE /api/portal/brand-kits/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portal/brand-kits/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a608598f0d2a6690", "name": "Dangling fetch: GET https://api.wefixtrades.com/v1/calculators (client/src/pages/portal/PortalApiAccessPage.tsx:219)", "shortDescription": {"text": "Dangling fetch: GET https://api.wefixtrades.com/v1/calculators (client/src/pages/portal/PortalApiAccessPage.tsx:219)"}, "fullDescription": {"text": "`client/src/pages/portal/PortalApiAccessPage.tsx:219` calls `GET https://api.wefixtrades.com/v1/calculators` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.wefixtrades.com/v1/calculators`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f4efeea4e96a0505", "name": "Dangling fetch: POST /api/portal/socialsync/posts/${postId}/${path} (client/src/pages/portal/PortalSocialSync.tsx:106)", "shortDescription": {"text": "Dangling fetch: POST /api/portal/socialsync/posts/${postId}/${path} (client/src/pages/portal/PortalSocialSync.tsx:106)"}, "fullDescription": {"text": "`client/src/pages/portal/PortalSocialSync.tsx:106` calls `POST /api/portal/socialsync/posts/${postId}/${path}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portal/socialsync/posts/<p>/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-458b43aa947fcf2d", "name": "Dangling fetch: GET /api/portal/tradeline/voices/${encodeURIComponent(v.id)}/sample (client/src/pages/portal/TradelineSe", "shortDescription": {"text": "Dangling fetch: GET /api/portal/tradeline/voices/${encodeURIComponent(v.id)}/sample (client/src/pages/portal/TradelineSetup/VoicePicker.tsx:119)"}, "fullDescription": {"text": "`client/src/pages/portal/TradelineSetup/VoicePicker.tsx:119` calls `GET /api/portal/tradeline/voices/${encodeURIComponent(v.id)}/sample` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portal/tradeline/voices/<p>/sample`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e84c2184288ee3b8", "name": "Dangling fetch: GET /api/portal/webcare/maintenance-log${q} (client/src/pages/portal/webcare/WebCareDashboard.tsx:178)", "shortDescription": {"text": "Dangling fetch: GET /api/portal/webcare/maintenance-log${q} (client/src/pages/portal/webcare/WebCareDashboard.tsx:178)"}, "fullDescription": {"text": "`client/src/pages/portal/webcare/WebCareDashboard.tsx:178` calls `GET /api/portal/webcare/maintenance-log${q}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/portal/webcare/maintenance-log/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-88980c925bc63b5a", "name": "Dangling fetch: POST http://127.0.0.1:${port}${path} (tests/payment-methods-sweep.test.ts:311)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:${port}${path} (tests/payment-methods-sweep.test.ts:311)"}, "fullDescription": {"text": "`tests/payment-methods-sweep.test.ts:311` calls `POST http://127.0.0.1:${port}${path}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c593eaba7c7bc6e3", "name": "Dangling fetch: GET http://127.0.0.1:${port}/api/healthz-present (tests/healthz-version.test.ts:146)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:${port}/api/healthz-present (tests/healthz-version.test.ts:146)"}, "fullDescription": {"text": "`tests/healthz-version.test.ts:146` calls `GET http://127.0.0.1:${port}/api/healthz-present` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/api/healthz-present`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-01b280324f89e7c2", "name": "Dangling fetch: GET http://127.0.0.1:${port}/api/healthz-malformed (tests/healthz-version.test.ts:153)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:${port}/api/healthz-malformed (tests/healthz-version.test.ts:153)"}, "fullDescription": {"text": "`tests/healthz-version.test.ts:153` calls `GET http://127.0.0.1:${port}/api/healthz-malformed` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/api/healthz-malformed`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fac37236ceeed954", "name": "Dangling fetch: POST https://places.googleapis.com/v1/places:autocomplete (server/auditRoutes.ts:391)", "shortDescription": {"text": "Dangling fetch: POST https://places.googleapis.com/v1/places:autocomplete (server/auditRoutes.ts:391)"}, "fullDescription": {"text": "`server/auditRoutes.ts:391` calls `POST https://places.googleapis.com/v1/places:autocomplete` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/places.googleapis.com/v1/places/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-39f2b73a349b2a9d", "name": "Dangling fetch: GET https://maps.googleapis.com/maps/api/place/textsearch/json?${params} (server/auditRoutes.ts:446)", "shortDescription": {"text": "Dangling fetch: GET https://maps.googleapis.com/maps/api/place/textsearch/json?${params} (server/auditRoutes.ts:446)"}, "fullDescription": {"text": "`server/auditRoutes.ts:446` calls `GET https://maps.googleapis.com/maps/api/place/textsearch/json?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/maps.googleapis.com/maps/api/place/textsearch/json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7345f8192f778b72", "name": "Dangling fetch: POST https://api.dataforseo.com/v3/keywords_data/google_ads/search_volume/live (server/auditRoutes.ts:14", "shortDescription": {"text": "Dangling fetch: POST https://api.dataforseo.com/v3/keywords_data/google_ads/search_volume/live (server/auditRoutes.ts:1457)"}, "fullDescription": {"text": "`server/auditRoutes.ts:1457` calls `POST https://api.dataforseo.com/v3/keywords_data/google_ads/search_volume/live` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.dataforseo.com/v3/keywords_data/google_ads/search_volume/live`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d97344eb3bf1889a", "name": "Dangling fetch: POST http://127.0.0.1:${port}${concretize(path)} (server/lib/bodyLimits.test.ts:134)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:${port}${concretize(path)} (server/lib/bodyLimits.test.ts:134)"}, "fullDescription": {"text": "`server/lib/bodyLimits.test.ts:134` calls `POST http://127.0.0.1:${port}${concretize(path)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8b145c0ca6ccf218", "name": "Dangling fetch: POST https://api.resend.com/emails (server/lib/emailOrchestrator.ts:301)", "shortDescription": {"text": "Dangling fetch: POST https://api.resend.com/emails (server/lib/emailOrchestrator.ts:301)"}, "fullDescription": {"text": "`server/lib/emailOrchestrator.ts:301` calls `POST https://api.resend.com/emails` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.resend.com/emails`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a6485d7dd87dce27", "name": "Dangling fetch: POST https://api.brevo.com/v3/smtp/email (server/lib/emailOrchestrator.ts:335)", "shortDescription": {"text": "Dangling fetch: POST https://api.brevo.com/v3/smtp/email (server/lib/emailOrchestrator.ts:335)"}, "fullDescription": {"text": "`server/lib/emailOrchestrator.ts:335` calls `POST https://api.brevo.com/v3/smtp/email` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.brevo.com/v3/smtp/email`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e4149e05a06bd8ac", "name": "Dangling fetch: POST https://connect.mailerlite.com/api/email/send (server/lib/emailOrchestrator.ts:364)", "shortDescription": {"text": "Dangling fetch: POST https://connect.mailerlite.com/api/email/send (server/lib/emailOrchestrator.ts:364)"}, "fullDescription": {"text": "`server/lib/emailOrchestrator.ts:364` calls `POST https://connect.mailerlite.com/api/email/send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/connect.mailerlite.com/api/email/send`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-af571a18153178e9", "name": "Dangling fetch: POST https://api.sendgrid.com/v3/mail/send (server/lib/emailOrchestrator.ts:470)", "shortDescription": {"text": "Dangling fetch: POST https://api.sendgrid.com/v3/mail/send (server/lib/emailOrchestrator.ts:470)"}, "fullDescription": {"text": "`server/lib/emailOrchestrator.ts:470` calls `POST https://api.sendgrid.com/v3/mail/send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.sendgrid.com/v3/mail/send`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-96fbc31a4f171ef8", "name": "Dangling fetch: GET https://mybusinessaccountmanagement.googleapis.com/v1/accounts?pageSize=1 (server/lib/seo/gbpClient.", "shortDescription": {"text": "Dangling fetch: GET https://mybusinessaccountmanagement.googleapis.com/v1/accounts?pageSize=1 (server/lib/seo/gbpClient.ts:209)"}, "fullDescription": {"text": "`server/lib/seo/gbpClient.ts:209` calls `GET https://mybusinessaccountmanagement.googleapis.com/v1/accounts?pageSize=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/mybusinessaccountmanagement.googleapis.com/v1/accounts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2e9ca18456928752", "name": "Dangling fetch: POST https://api.github.com/repos/${GH_OWNER}/${GH_REPO}/git/refs/heads/${GH_BRANCH} (server/routes/dopp", "shortDescription": {"text": "Dangling fetch: POST https://api.github.com/repos/${GH_OWNER}/${GH_REPO}/git/refs/heads/${GH_BRANCH} (server/routes/dopplerWebhookRoutes.ts:167)"}, "fullDescription": {"text": "`server/routes/dopplerWebhookRoutes.ts:167` calls `POST https://api.github.com/repos/${GH_OWNER}/${GH_REPO}/git/refs/heads/${GH_BRANCH}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/repos/<p>/<p>/git/refs/heads/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-53ebf6b500359378", "name": "Dangling fetch: PATCH https://api.github.com/repos/${GH_OWNER}/${GH_REPO}/git/refs/heads/${GH_BRANCH} (server/routes/dop", "shortDescription": {"text": "Dangling fetch: PATCH https://api.github.com/repos/${GH_OWNER}/${GH_REPO}/git/refs/heads/${GH_BRANCH} (server/routes/dopplerWebhookRoutes.ts:217)"}, "fullDescription": {"text": "`server/routes/dopplerWebhookRoutes.ts:217` calls `PATCH https://api.github.com/repos/${GH_OWNER}/${GH_REPO}/git/refs/heads/${GH_BRANCH}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/repos/<p>/<p>/git/refs/heads/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-34f1b5de1eae05f1", "name": "Dangling fetch: PATCH https://api.vapi.ai/assistant/${vapiAssistantId} (server/routes/adminCrmRoutes.ts:3301)", "shortDescription": {"text": "Dangling fetch: PATCH https://api.vapi.ai/assistant/${vapiAssistantId} (server/routes/adminCrmRoutes.ts:3301)"}, "fullDescription": {"text": "`server/routes/adminCrmRoutes.ts:3301` calls `PATCH https://api.vapi.ai/assistant/${vapiAssistantId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.vapi.ai/assistant/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7a9ac3f154f13bb9", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (server/routes/aiDemoRoutes.ts:374)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (server/routes/aiDemoRoutes.ts:374)"}, "fullDescription": {"text": "`server/routes/aiDemoRoutes.ts:374` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0a0bd3e115d7c200", "name": "Dangling fetch: GET http://127.0.0.1:${port}${path} (server/routes/portalTradelineKnowledgeRoutes.routeOrder.test.ts:133", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:${port}${path} (server/routes/portalTradelineKnowledgeRoutes.routeOrder.test.ts:133)"}, "fullDescription": {"text": "`server/routes/portalTradelineKnowledgeRoutes.routeOrder.test.ts:133` calls `GET http://127.0.0.1:${port}${path}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1b7eb69d31ce674c", "name": "Dangling fetch: GET https://moz.com/mozcast (server/routes/freeToolsRoutes.ts:595)", "shortDescription": {"text": "Dangling fetch: GET https://moz.com/mozcast (server/routes/freeToolsRoutes.ts:595)"}, "fullDescription": {"text": "`server/routes/freeToolsRoutes.ts:595` calls `GET https://moz.com/mozcast` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/moz.com/mozcast`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-325c19854f48a755", "name": "Dangling fetch: GET https://api.vapi.ai/assistant?limit=1 (server/routes/integrationHealthRoutes.ts:126)", "shortDescription": {"text": "Dangling fetch: GET https://api.vapi.ai/assistant?limit=1 (server/routes/integrationHealthRoutes.ts:126)"}, "fullDescription": {"text": "`server/routes/integrationHealthRoutes.ts:126` calls `GET https://api.vapi.ai/assistant?limit=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.vapi.ai/assistant`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e91572f47ce0f4a2", "name": "Dangling fetch: POST https://oauth2.googleapis.com/revoke?token=${encodeURIComponent(token)} (server/services/googleBusi", "shortDescription": {"text": "Dangling fetch: POST https://oauth2.googleapis.com/revoke?token=${encodeURIComponent(token)} (server/services/googleBusinessService.ts:279)"}, "fullDescription": {"text": "`server/services/googleBusinessService.ts:279` calls `POST https://oauth2.googleapis.com/revoke?token=${encodeURIComponent(token)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/oauth2.googleapis.com/revoke`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7715924edcb2911c", "name": "Dangling fetch: POST https://google.serper.dev/reviews (server/services/reviewIntelligence.ts:76)", "shortDescription": {"text": "Dangling fetch: POST https://google.serper.dev/reviews (server/services/reviewIntelligence.ts:76)"}, "fullDescription": {"text": "`server/services/reviewIntelligence.ts:76` calls `POST https://google.serper.dev/reviews` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/google.serper.dev/reviews`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a2de5a77fbb04de1", "name": "Dangling fetch: POST https://google.serper.dev/reviews (server/services/reviewIntelligence.ts:104)", "shortDescription": {"text": "Dangling fetch: POST https://google.serper.dev/reviews (server/services/reviewIntelligence.ts:104)"}, "fullDescription": {"text": "`server/services/reviewIntelligence.ts:104` calls `POST https://google.serper.dev/reviews` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/google.serper.dev/reviews`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7ffcfab4df579196", "name": "Dangling fetch: POST https://api.dataforseo.com/v3/business_data/google/reviews/task_post (server/services/reviewIntelli", "shortDescription": {"text": "Dangling fetch: POST https://api.dataforseo.com/v3/business_data/google/reviews/task_post (server/services/reviewIntelligence.ts:311)"}, "fullDescription": {"text": "`server/services/reviewIntelligence.ts:311` calls `POST https://api.dataforseo.com/v3/business_data/google/reviews/task_post` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.dataforseo.com/v3/business_data/google/reviews/task_post`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6377391422a241f1", "name": "Dangling fetch: GET https://api.dataforseo.com/v3/business_data/google/reviews/task_get/${taskId} (server/services/revie", "shortDescription": {"text": "Dangling fetch: GET https://api.dataforseo.com/v3/business_data/google/reviews/task_get/${taskId} (server/services/reviewIntelligence.ts:365)"}, "fullDescription": {"text": "`server/services/reviewIntelligence.ts:365` calls `GET https://api.dataforseo.com/v3/business_data/google/reviews/task_get/${taskId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.dataforseo.com/v3/business_data/google/reviews/task_get/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-34b148914e427fd8", "name": "Dangling fetch: POST http://127.0.0.1:${port}/api/audit/generate (server/services/outboundArtifactGenerator.ts:51)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:${port}/api/audit/generate (server/services/outboundArtifactGenerator.ts:51)"}, "fullDescription": {"text": "`server/services/outboundArtifactGenerator.ts:51` calls `POST http://127.0.0.1:${port}/api/audit/generate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/api/audit/generate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a5c9d1b93320828b", "name": "Dangling fetch: POST https://places.googleapis.com/v1/places:searchText (server/services/competitorSearch.ts:537)", "shortDescription": {"text": "Dangling fetch: POST https://places.googleapis.com/v1/places:searchText (server/services/competitorSearch.ts:537)"}, "fullDescription": {"text": "`server/services/competitorSearch.ts:537` calls `POST https://places.googleapis.com/v1/places:searchText` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/places.googleapis.com/v1/places/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ab105ddeecb72e89", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (server/services/contentflow/qualityGate/humanizeRewrite", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (server/services/contentflow/qualityGate/humanizeRewrite.ts:423)"}, "fullDescription": {"text": "`server/services/contentflow/qualityGate/humanizeRewrite.ts:423` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3135519e67077c76", "name": "Dangling fetch: POST https://api.ideogram.ai/v1/ideogram-v3/generate (server/services/ai/imageRotator.ts:125)", "shortDescription": {"text": "Dangling fetch: POST https://api.ideogram.ai/v1/ideogram-v3/generate (server/services/ai/imageRotator.ts:125)"}, "fullDescription": {"text": "`server/services/ai/imageRotator.ts:125` calls `POST https://api.ideogram.ai/v1/ideogram-v3/generate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.ideogram.ai/v1/ideogram-v3/generate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-38b9ee004a84bcb3", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (server/services/ai/textRotator.ts:80)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (server/services/ai/textRotator.ts:80)"}, "fullDescription": {"text": "`server/services/ai/textRotator.ts:80` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fff74c0b63ed20cf", "name": "Dangling fetch: GET https://maps.googleapis.com/maps/api/place/details/json?${params} (server/services/reputation/placeI", "shortDescription": {"text": "Dangling fetch: GET https://maps.googleapis.com/maps/api/place/details/json?${params} (server/services/reputation/placeIdValidator.ts:44)"}, "fullDescription": {"text": "`server/services/reputation/placeIdValidator.ts:44` calls `GET https://maps.googleapis.com/maps/api/place/details/json?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/maps.googleapis.com/maps/api/place/details/json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a7dd70da8d881f69", "name": "Unused endpoint: POST /qq-webhook", "shortDescription": {"text": "Unused endpoint: POST /qq-webhook"}, "fullDescription": {"text": "`client/src/pages/marketing/docs/webhooks.tsx` declares `POST /qq-webhook` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ff8e703152198028", "name": "Unused endpoint: GET /static-map", "shortDescription": {"text": "Unused endpoint: GET /static-map"}, "fullDescription": {"text": "`server/auditRoutes.ts` declares `GET /static-map` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-90c77af7a5065d32", "name": "Unused endpoint: POST /search-places", "shortDescription": {"text": "Unused endpoint: POST /search-places"}, "fullDescription": {"text": "`server/auditRoutes.ts` declares `POST /search-places` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-81870abc942cdbfb", "name": "Unused endpoint: POST /place-details", "shortDescription": {"text": "Unused endpoint: POST /place-details"}, "fullDescription": {"text": "`server/auditRoutes.ts` declares `POST /place-details` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-58ad0268ee07b3df", "name": "Unused endpoint: POST /pagespeed", "shortDescription": {"text": "Unused endpoint: POST /pagespeed"}, "fullDescription": {"text": "`server/auditRoutes.ts` declares `POST /pagespeed` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f7134ab6d59fd64c", "name": "Unused endpoint: GET /speed-test", "shortDescription": {"text": "Unused endpoint: GET /speed-test"}, "fullDescription": {"text": "`server/auditRoutes.ts` declares `GET /speed-test` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-898cc8766484132d", "name": "Unused endpoint: POST /speed", "shortDescription": {"text": "Unused endpoint: POST /speed"}, "fullDescription": {"text": "`server/auditRoutes.ts` declares `POST /speed` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-64bffcb28fa23f72", "name": "Unused endpoint: GET /speed/:reportId", "shortDescription": {"text": "Unused endpoint: GET /speed/:reportId"}, "fullDescription": {"text": "`server/auditRoutes.ts` declares `GET /speed/:reportId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2f313f4645940ed0", "name": "Unused endpoint: GET /narrative/:reportId", "shortDescription": {"text": "Unused endpoint: GET /narrative/:reportId"}, "fullDescription": {"text": "`server/auditRoutes.ts` declares `GET /narrative/:reportId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-970eb92d6ec2bfaa", "name": "Unused endpoint: POST /generate", "shortDescription": {"text": "Unused endpoint: POST /generate"}, "fullDescription": {"text": "`server/auditRoutes.ts` declares `POST /generate` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dc755150645271b5", "name": "Unused endpoint: GET /report/:id", "shortDescription": {"text": "Unused endpoint: GET /report/:id"}, "fullDescription": {"text": "`server/auditRoutes.ts` declares `GET /report/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9cc9e335aba1dc87", "name": "Unused endpoint: POST /save-lead", "shortDescription": {"text": "Unused endpoint: POST /save-lead"}, "fullDescription": {"text": "`server/auditRoutes.ts` declares `POST /save-lead` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f11f16d86239fc52", "name": "Unused endpoint: GET /report/:id/og-image", "shortDescription": {"text": "Unused endpoint: GET /report/:id/og-image"}, "fullDescription": {"text": "`server/auditRoutes.ts` declares `GET /report/:id/og-image` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7c518354ca870fd3", "name": "Unused endpoint: POST /report/:id/send-email", "shortDescription": {"text": "Unused endpoint: POST /report/:id/send-email"}, "fullDescription": {"text": "`server/auditRoutes.ts` declares `POST /report/:id/send-email` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2f6eea6714f02af7", "name": "Unused endpoint: GET /report/:id/pdf", "shortDescription": {"text": "Unused endpoint: GET /report/:id/pdf"}, "fullDescription": {"text": "`server/auditRoutes.ts` declares `GET /report/:id/pdf` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-56b1924f6fa6a30b", "name": "Unused endpoint: GET /report/:id/rankflow-recommendation", "shortDescription": {"text": "Unused endpoint: GET /report/:id/rankflow-recommendation"}, "fullDescription": {"text": "`server/auditRoutes.ts` declares `GET /report/:id/rankflow-recommendation` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f36a9b324905af6f", "name": "Unused endpoint: USE /{*path}", "shortDescription": {"text": "Unused endpoint: USE /{*path}"}, "fullDescription": {"text": "`server/static.ts` declares `USE /{*path}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1992692ae67a02be", "name": "Unused endpoint: POST /api/csp-report", "shortDescription": {"text": "Unused endpoint: POST /api/csp-report"}, "fullDescription": {"text": "`server/index.ts` declares `POST /api/csp-report` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0fc286753f2af129", "name": "Unused endpoint: USE /embed-widget.js", "shortDescription": {"text": "Unused endpoint: USE /embed-widget.js"}, "fullDescription": {"text": "`server/index.ts` declares `USE /embed-widget.js` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7da4606f4332c7f1", "name": "Unused endpoint: USE /embed-chat.js", "shortDescription": {"text": "Unused endpoint: USE /embed-chat.js"}, "fullDescription": {"text": "`server/index.ts` declares `USE /embed-chat.js` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4882d96eec0578be", "name": "Unused endpoint: USE /Calculator", "shortDescription": {"text": "Unused endpoint: USE /Calculator"}, "fullDescription": {"text": "`server/index.ts` declares `USE /Calculator` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b2d8849fb6b1ac47", "name": "Unused endpoint: USE /admin", "shortDescription": {"text": "Unused endpoint: USE /admin"}, "fullDescription": {"text": "`server/index.ts` declares `USE /admin` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3f48d8c1d10391a5", "name": "Unused endpoint: USE /portal", "shortDescription": {"text": "Unused endpoint: USE /portal"}, "fullDescription": {"text": "`server/index.ts` declares `USE /portal` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d93a530ce10d47d9", "name": "Unused endpoint: USE /api/admin", "shortDescription": {"text": "Unused endpoint: USE /api/admin"}, "fullDescription": {"text": "`server/index.ts` declares `USE /api/admin` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9962a2df99fa7781", "name": "Unused endpoint: USE /api/portal", "shortDescription": {"text": "Unused endpoint: USE /api/portal"}, "fullDescription": {"text": "`server/index.ts` declares `USE /api/portal` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1bc898b3b7565990", "name": "Unused endpoint: USE /uploads", "shortDescription": {"text": "Unused endpoint: USE /uploads"}, "fullDescription": {"text": "`server/index.ts` declares `USE /uploads` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-953ec1a0ee6df50d", "name": "Unused endpoint: GET /admin", "shortDescription": {"text": "Unused endpoint: GET /admin"}, "fullDescription": {"text": "`server/index.ts` declares `GET /admin` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-48138762e3a75ad6", "name": "Unused endpoint: GET /preview/article/:id", "shortDescription": {"text": "Unused endpoint: GET /preview/article/:id"}, "fullDescription": {"text": "`server/index.ts` declares `GET /preview/article/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-94da1aaaf36cc41f", "name": "Unused endpoint: USE /api/v1", "shortDescription": {"text": "Unused endpoint: USE /api/v1"}, "fullDescription": {"text": "`server/middleware/apiKeyAuth.ts` declares `USE /api/v1` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5d840b42b8c3211c", "name": "Unused endpoint: GET /api/sales/leads", "shortDescription": {"text": "Unused endpoint: GET /api/sales/leads"}, "fullDescription": {"text": "`server/routes/salesRoutes.ts` declares `GET /api/sales/leads` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5501fc4ac1d30609", "name": "Unused endpoint: POST /api/sales/leads", "shortDescription": {"text": "Unused endpoint: POST /api/sales/leads"}, "fullDescription": {"text": "`server/routes/salesRoutes.ts` declares `POST /api/sales/leads` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a62729d0387354f", "name": "Unused endpoint: PATCH /api/sales/leads/:id", "shortDescription": {"text": "Unused endpoint: PATCH /api/sales/leads/:id"}, "fullDescription": {"text": "`server/routes/salesRoutes.ts` declares `PATCH /api/sales/leads/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3c7e0e12e92936b4", "name": "Unused endpoint: POST /api/sales/leads/:id/contacted", "shortDescription": {"text": "Unused endpoint: POST /api/sales/leads/:id/contacted"}, "fullDescription": {"text": "`server/routes/salesRoutes.ts` declares `POST /api/sales/leads/:id/contacted` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cd437ce36c4dae2d", "name": "Unused endpoint: POST /api/admin/demo/seed/:clientId", "shortDescription": {"text": "Unused endpoint: POST /api/admin/demo/seed/:clientId"}, "fullDescription": {"text": "`server/routes/salesRoutes.ts` declares `POST /api/admin/demo/seed/:clientId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-efe84ec47760dbec", "name": "Unused endpoint: POST /api/admin/demo/reset/:clientId", "shortDescription": {"text": "Unused endpoint: POST /api/admin/demo/reset/:clientId"}, "fullDescription": {"text": "`server/routes/salesRoutes.ts` declares `POST /api/admin/demo/reset/:clientId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d62db755ca7fcb17", "name": "Unused endpoint: POST /api/mapguard/clients/:clientId/tasks", "shortDescription": {"text": "Unused endpoint: POST /api/mapguard/clients/:clientId/tasks"}, "fullDescription": {"text": "`server/routes/mapguardRoutes.ts` declares `POST /api/mapguard/clients/:clientId/tasks` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ea0831b910abea7", "name": "Unused endpoint: POST /api/mapguard/clients/:clientId/tasks/from-audit/:auditId", "shortDescription": {"text": "Unused endpoint: POST /api/mapguard/clients/:clientId/tasks/from-audit/:auditId"}, "fullDescription": {"text": "`server/routes/mapguardRoutes.ts` declares `POST /api/mapguard/clients/:clientId/tasks/from-audit/:auditId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-710771c42b5a057c", "name": "Unused endpoint: PATCH /api/mapguard/tasks/:taskId/status", "shortDescription": {"text": "Unused endpoint: PATCH /api/mapguard/tasks/:taskId/status"}, "fullDescription": {"text": "`server/routes/mapguardRoutes.ts` declares `PATCH /api/mapguard/tasks/:taskId/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2182d9054cbe31db", "name": "Unused endpoint: PATCH /api/mapguard/tasks/:taskId/result", "shortDescription": {"text": "Unused endpoint: PATCH /api/mapguard/tasks/:taskId/result"}, "fullDescription": {"text": "`server/routes/mapguardRoutes.ts` declares `PATCH /api/mapguard/tasks/:taskId/result` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2d2b971993028315", "name": "Unused endpoint: PATCH /api/mapguard/tasks/:taskId", "shortDescription": {"text": "Unused endpoint: PATCH /api/mapguard/tasks/:taskId"}, "fullDescription": {"text": "`server/routes/mapguardRoutes.ts` declares `PATCH /api/mapguard/tasks/:taskId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d547d6cf44d19f18", "name": "Unused endpoint: POST /api/mapguard/tasks/:taskId/assign", "shortDescription": {"text": "Unused endpoint: POST /api/mapguard/tasks/:taskId/assign"}, "fullDescription": {"text": "`server/routes/mapguardRoutes.ts` declares `POST /api/mapguard/tasks/:taskId/assign` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2fa5260679996de5", "name": "Unused endpoint: POST /api/mapguard/tasks/:taskId/submit-result", "shortDescription": {"text": "Unused endpoint: POST /api/mapguard/tasks/:taskId/submit-result"}, "fullDescription": {"text": "`server/routes/mapguardRoutes.ts` declares `POST /api/mapguard/tasks/:taskId/submit-result` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-caaa4ef1ea243f07", "name": "Unused endpoint: POST /api/mapguard/tasks/:taskId/reject", "shortDescription": {"text": "Unused endpoint: POST /api/mapguard/tasks/:taskId/reject"}, "fullDescription": {"text": "`server/routes/mapguardRoutes.ts` declares `POST /api/mapguard/tasks/:taskId/reject` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cd8db4e1c1a61dde", "name": "Unused endpoint: GET /api/mapguard/clients/:clientId/performance", "shortDescription": {"text": "Unused endpoint: GET /api/mapguard/clients/:clientId/performance"}, "fullDescription": {"text": "`server/routes/mapguardRoutes.ts` declares `GET /api/mapguard/clients/:clientId/performance` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ce8f7df8b8dd824b", "name": "Unused endpoint: GET /api/mapguard/clients/:clientId/case-study", "shortDescription": {"text": "Unused endpoint: GET /api/mapguard/clients/:clientId/case-study"}, "fullDescription": {"text": "`server/routes/mapguardRoutes.ts` declares `GET /api/mapguard/clients/:clientId/case-study` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-42e17eb1a37c6755", "name": "Unused endpoint: GET /api/mapguard/suppliers", "shortDescription": {"text": "Unused endpoint: GET /api/mapguard/suppliers"}, "fullDescription": {"text": "`server/routes/mapguardRoutes.ts` declares `GET /api/mapguard/suppliers` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-98f5342769d2d637", "name": "Unused endpoint: GET /api/mapguard/clients/:clientId/report/:year/:month", "shortDescription": {"text": "Unused endpoint: GET /api/mapguard/clients/:clientId/report/:year/:month"}, "fullDescription": {"text": "`server/routes/mapguardRoutes.ts` declares `GET /api/mapguard/clients/:clientId/report/:year/:month` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6420d816dccef3af", "name": "Unused endpoint: POST /api/mapguard/clients/:clientId/report/:year/:month/send", "shortDescription": {"text": "Unused endpoint: POST /api/mapguard/clients/:clientId/report/:year/:month/send"}, "fullDescription": {"text": "`server/routes/mapguardRoutes.ts` declares `POST /api/mapguard/clients/:clientId/report/:year/:month/send` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bb5f6da95f369851", "name": "Unused endpoint: POST /api/mapguard/reports/send-all", "shortDescription": {"text": "Unused endpoint: POST /api/mapguard/reports/send-all"}, "fullDescription": {"text": "`server/routes/mapguardRoutes.ts` declares `POST /api/mapguard/reports/send-all` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-80a06445f56e63ec", "name": "Unused endpoint: GET /api/mapguard/alerts", "shortDescription": {"text": "Unused endpoint: GET /api/mapguard/alerts"}, "fullDescription": {"text": "`server/routes/mapguardRoutes.ts` declares `GET /api/mapguard/alerts` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/22907"}, "properties": {"repository": "wtsaleksandr-lang/wefixtrades", "repoUrl": "https://github.com/wtsaleksandr-lang/wefixtrades", "branch": "main"}, "results": [{"ruleId": "scanner-5cd40151e6c42be0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/replit_integrations/audio/index.ts:17"}, "properties": {"repobilityId": "98291856ab3b9fbd", "scanner": "scanner-primary", "fingerprint": "5cd40151e6c42be0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-224f19224da99eaf", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/adflow/CampaignCard.tsx:97"}, "properties": {"repobilityId": "4249851149b59928", "scanner": "scanner-primary", "fingerprint": "224f19224da99eaf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c124e837d541af05", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/contentflow/ContentFlowPreviewModal.tsx:219"}, "properties": {"repobilityId": "b625d4986111592d", "scanner": "scanner-primary", "fingerprint": "c124e837d541af05", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5765a766236b2cff", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/shared/ChatAttachmentInput.tsx:373"}, "properties": {"repobilityId": "7046e30ad6b1d288", "scanner": "scanner-primary", "fingerprint": "5765a766236b2cff", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bb80a4dad4c6a28a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/shared/CopilotCards.tsx:64"}, "properties": {"repobilityId": "d37dd7a46a56029f", "scanner": "scanner-primary", "fingerprint": "bb80a4dad4c6a28a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5f7656965bb6e8bf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/shared/__tests__/StatCard.test.tsx:20"}, "properties": {"repobilityId": "53e04159eb6a49ba", "scanner": "scanner-primary", "fingerprint": "5f7656965bb6e8bf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a7b3db9745e9c497", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/components/ui/chart.tsx:81"}, "properties": {"repobilityId": "1c3a04e593515dbe", "scanner": "scanner-primary", "fingerprint": "a7b3db9745e9c497", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-7ed24664d008cc55", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ui/breadcrumbs.tsx:105"}, "properties": {"repobilityId": "51b254829c9adfa6", "scanner": "scanner-primary", "fingerprint": "7ed24664d008cc55", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-06153302a0c89480", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/ui/__tests__/confirm-dialog.test.tsx:25"}, "properties": {"repobilityId": "37cc62f9213de484", "scanner": "scanner-primary", "fingerprint": "06153302a0c89480", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d41f1ed260e1850f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ui/visual-primitives/ChartTooltip.tsx:146"}, "properties": {"repobilityId": "04a5f53a81ff35d6", "scanner": "scanner-primary", "fingerprint": "d41f1ed260e1850f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-446bd1229ba7e86c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ui/visual-primitives/DonutChart.tsx:333"}, "properties": {"repobilityId": "8e5dafea72e9c007", "scanner": "scanner-primary", "fingerprint": "446bd1229ba7e86c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-50faf6fdd671a96e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ui/visual-primitives/VisualCalendar.tsx:327"}, "properties": {"repobilityId": "9350bfe4c5864ed1", "scanner": "scanner-primary", "fingerprint": "50faf6fdd671a96e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-31c60566f28c8d58", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/ui/visual-primitives/ApprovalInbox.tsx:625"}, "properties": {"repobilityId": "2fe09272ea128ffb", "scanner": "scanner-primary", "fingerprint": "31c60566f28c8d58", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fc046c16c9479efc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/primitives/__tests__/HelpCueRow.test.tsx:19"}, "properties": {"repobilityId": "96faa431540ac4c9", "scanner": "scanner-primary", "fingerprint": "fc046c16c9479efc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-43f93a0f01eebd72", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/primitives/__tests__/Stack.test.tsx:22"}, "properties": {"repobilityId": "97618b3f2221c154", "scanner": "scanner-primary", "fingerprint": "43f93a0f01eebd72", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f393d412b05911cb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/primitives/__tests__/Cluster.test.tsx:20"}, "properties": {"repobilityId": "b2269a981094a9c3", "scanner": "scanner-primary", "fingerprint": "f393d412b05911cb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-04f2288f5dffefa0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/tradeline/WidgetStylePreviewModal.tsx:76"}, "properties": {"repobilityId": "d0effa15d8f7d904", "scanner": "scanner-primary", "fingerprint": "04f2288f5dffefa0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f6ef98ad1c829e90", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/datatable/HeaderFilterDropdown.tsx:92"}, "properties": {"repobilityId": "93677c1e6cb819ed", "scanner": "scanner-primary", "fingerprint": "f6ef98ad1c829e90", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-93597c38644628cb", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/components/quote-widget/ContactStep.tsx:411"}, "properties": {"repobilityId": "e60dbdbaa0ffeb28", "scanner": "scanner-primary", "fingerprint": "93597c38644628cb", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-0a2e09dd98411ba4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/quote-widget/MatrixField.resolveRate.test.ts:28"}, "properties": {"repobilityId": "f466f57fc9665110", "scanner": "scanner-primary", "fingerprint": "0a2e09dd98411ba4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f656e2fed37775bb", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/components/quote-widget/CalculatorStepper.tsx:213"}, "properties": {"repobilityId": "d4fb68e7ad9f91fa", "scanner": "scanner-primary", "fingerprint": "f656e2fed37775bb", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-c0eebbec1871c9d4", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/components/quote-widget/AdvancedCalculator.tsx:83"}, "properties": {"repobilityId": "7e7051057940ff30", "scanner": "scanner-primary", "fingerprint": "c0eebbec1871c9d4", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-e1c9877a93fd57d9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/marketing/__tests__/CarouselArrowButton.test.tsx:20"}, "properties": {"repobilityId": "2191a1aa3eb70356", "scanner": "scanner-primary", "fingerprint": "e1c9877a93fd57d9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-18c185b60c1a38d1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/marketing/__tests__/HorizontalCarousel.test.tsx:24"}, "properties": {"repobilityId": "0295f0d2a9dcd3f4", "scanner": "scanner-primary", "fingerprint": "18c185b60c1a38d1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aade7cdf815427f7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/marketing/__tests__/BeforeAfterSlider.test.tsx:24"}, "properties": {"repobilityId": "2dd81215243cee7d", "scanner": "scanner-primary", "fingerprint": "aade7cdf815427f7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a5193c0c7310c66a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/LucideIconPicker.tsx:176"}, "properties": {"repobilityId": "ad2a5f7bf302dd37", "scanner": "scanner-primary", "fingerprint": "a5193c0c7310c66a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b795c1d1f2bf5d2e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/ImpersonateBanner.tsx:79"}, "properties": {"repobilityId": "430f742cfc7c2e1d", "scanner": "scanner-primary", "fingerprint": "b795c1d1f2bf5d2e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f3365b58f694f8e7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/AdminProductPageShell.tsx:334"}, "properties": {"repobilityId": "0ae7a73a0560645d", "scanner": "scanner-primary", "fingerprint": "f3365b58f694f8e7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-669941c5183e0a12", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/AdminCopilot.tsx:1367"}, "properties": {"repobilityId": "a0c6763a2a5e402f", "scanner": "scanner-primary", "fingerprint": "669941c5183e0a12", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7fc910122dd1a149", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/SocialSyncTab.tsx:1085"}, "properties": {"repobilityId": "6bcb0ecfdf80cfbc", "scanner": "scanner-primary", "fingerprint": "7fc910122dd1a149", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0dfbe53c1f55f1e8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/AdminLayout.tsx:1521"}, "properties": {"repobilityId": "45e0ecdbb36a86a2", "scanner": "scanner-primary", "fingerprint": "0dfbe53c1f55f1e8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-be6e61463576775f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/admin/__tests__/AdminProductPageShell.test.tsx:37"}, "properties": {"repobilityId": "5687d4780e36c6f0", "scanner": "scanner-primary", "fingerprint": "be6e61463576775f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5f1dbe4f1fe66d6d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/quotequick/FormBuilder.tsx:320"}, "properties": {"repobilityId": "9b5218c69094d0cf", "scanner": "scanner-primary", "fingerprint": "5f1dbe4f1fe66d6d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f12f9f862df7b3d5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/socialsync/PlatformPreview.tsx:148"}, "properties": {"repobilityId": "6a8af5cce61f94ae", "scanner": "scanner-primary", "fingerprint": "f12f9f862df7b3d5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a2b3a79239b77dd7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/portal/ModeToggle.tsx:68"}, "properties": {"repobilityId": "db941247d116225e", "scanner": "scanner-primary", "fingerprint": "a2b3a79239b77dd7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-007afc0fb457b30f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/portal/DeliverableViewer.tsx:71"}, "properties": {"repobilityId": "9dadc385ac8ef84b", "scanner": "scanner-primary", "fingerprint": "007afc0fb457b30f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ff61868b9a99a85f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/portal/TradeLinePortalSections.tsx:537"}, "properties": {"repobilityId": "179b73bf2c264879", "scanner": "scanner-primary", "fingerprint": "ff61868b9a99a85f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a694b6432f88a0ef", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/portal/PortalLayout.tsx:394"}, "properties": {"repobilityId": "585821e17a7f68d9", "scanner": "scanner-primary", "fingerprint": "a694b6432f88a0ef", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4f3b73fc4db13ed0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/portal/PortalProductPageShell.tsx:173"}, "properties": {"repobilityId": "1b651c19a18ca83d", "scanner": "scanner-primary", "fingerprint": "4f3b73fc4db13ed0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e5bb10dbc2c7bf81", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/portal/PortalProductPageShell.test.tsx:41"}, "properties": {"repobilityId": "1ca2a7362ab74fdb", "scanner": "scanner-primary", "fingerprint": "e5bb10dbc2c7bf81", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7c05bdff797ef2bc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/portal/__tests__/FirstVisitTooltip.test.tsx:43"}, "properties": {"repobilityId": "92ba58cc29f2726e", "scanner": "scanner-primary", "fingerprint": "7c05bdff797ef2bc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3e380e0eca2d3ab7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/portal/contentflow/ContentFlowCreatePanel.tsx:721"}, "properties": {"repobilityId": "77a77fcdc63ed181", "scanner": "scanner-primary", "fingerprint": "3e380e0eca2d3ab7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-39c505cdd8cfd859", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/wizard/elfsight/aiToolApplier.styleDrop.test.ts:24"}, "properties": {"repobilityId": "52fec9ec7ab4468c", "scanner": "scanner-primary", "fingerprint": "39c505cdd8cfd859", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5fc28bebb01df55b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 client/src/components/wizard/elfsight/WizardShell.tsx:759"}, "properties": {"repobilityId": "430419560baff797", "scanner": "scanner-primary", "fingerprint": "5fc28bebb01df55b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-72f2c92a7d99c64c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 client/src/components/wizard/elfsight/InstallTab.tsx:26"}, "properties": {"repobilityId": "f13b23e151acd1fe", "scanner": "scanner-primary", "fingerprint": "72f2c92a7d99c64c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-5b18d4b441ca4ed4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/wizard/elfsight/__tests__/fieldTypes.test.tsx:40"}, "properties": {"repobilityId": "cda257d31fdb69c7", "scanner": "scanner-primary", "fingerprint": "5b18d4b441ca4ed4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-60baa0c4393459f6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/wizard/elfsight/__tests__/StyledSelect.test.tsx:24"}, "properties": {"repobilityId": "d279d47b685f1ba1", "scanner": "scanner-primary", "fingerprint": "60baa0c4393459f6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f3fe4052725480fe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/wizard/elfsight/__tests__/templateApply.test.tsx:43"}, "properties": {"repobilityId": "e9d3ec4c56e63e28", "scanner": "scanner-primary", "fingerprint": "f3fe4052725480fe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c122d97ddfa3e250", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/forms/TokenChip.tsx:133"}, "properties": {"repobilityId": "d0da827f894ae693", "scanner": "scanner-primary", "fingerprint": "c122d97ddfa3e250", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3185bf3e57d3d02c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/lib/layoutGuard.test.ts:29"}, "properties": {"repobilityId": "eddf9d47da2032ea", "scanner": "scanner-primary", "fingerprint": "3185bf3e57d3d02c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f8be520ed2a5b088", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/lib/trackEvent.ts:21"}, "properties": {"repobilityId": "70072cd75a42aa2c", "scanner": "scanner-primary", "fingerprint": "f8be520ed2a5b088", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f8ad998539ccc9e2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/lib/contrastGuard.test.ts:22"}, "properties": {"repobilityId": "83f30482cd791d22", "scanner": "scanner-primary", "fingerprint": "f8ad998539ccc9e2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-578472b38b07c9e6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/lib/__tests__/marketingTemplateMap.test.ts:27"}, "properties": {"repobilityId": "c2124cd70f8556ff", "scanner": "scanner-primary", "fingerprint": "578472b38b07c9e6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b2ae1906862795f9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/pages/checkoutSuccessState.test.ts:48"}, "properties": {"repobilityId": "dc99a0e44f6dab0a", "scanner": "scanner-primary", "fingerprint": "b2ae1906862795f9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d83f4988a9e1f839", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/edit-calculator.tsx:29"}, "properties": {"repobilityId": "9929f92de9512aab", "scanner": "scanner-primary", "fingerprint": "d83f4988a9e1f839", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f51e905050902936", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/pages/BlogArticle.tsx:43"}, "properties": {"repobilityId": "5410828796fded10", "scanner": "scanner-primary", "fingerprint": "f51e905050902936", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-dc2742e78c618439", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/pages/marketing/aiReceptionistDetail.tsx:62"}, "properties": {"repobilityId": "c87d059260f774f8", "scanner": "scanner-primary", "fingerprint": "dc2742e78c618439", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-a78dfd9e7d223dc9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/pages/marketing/ApiDocsPage.tsx:930"}, "properties": {"repobilityId": "125d4af0c7ec064c", "scanner": "scanner-primary", "fingerprint": "a78dfd9e7d223dc9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1c85c1f638833d41", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/pages/marketing/tools/GoogleReviewLinkGenerator.tsx:352"}, "properties": {"repobilityId": "9057a089c0ce8634", "scanner": "scanner-primary", "fingerprint": "1c85c1f638833d41", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-8fa2a8d7f1bee5b3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/SupportInboxPage.tsx:288"}, "properties": {"repobilityId": "425b7db0c0b51faa", "scanner": "scanner-primary", "fingerprint": "8fa2a8d7f1bee5b3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9543cecfa5c70e93", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/ClientsPage.tsx:589"}, "properties": {"repobilityId": "912e2564e1deba94", "scanner": "scanner-primary", "fingerprint": "9543cecfa5c70e93", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2110185e89a14c48", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/TradelineVoicesPage.tsx:374"}, "properties": {"repobilityId": "fccf78cef23e31dd", "scanner": "scanner-primary", "fingerprint": "2110185e89a14c48", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-75e8af33c12306dc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/SystemJobsPage.tsx:252"}, "properties": {"repobilityId": "3d9073e450d8a8db", "scanner": "scanner-primary", "fingerprint": "75e8af33c12306dc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8086f36054bdc600", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/ClientDetailPage.tsx:1103"}, "properties": {"repobilityId": "9084e7ddd160b117", "scanner": "scanner-primary", "fingerprint": "8086f36054bdc600", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-884f066336967d7d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/CrmOverview.tsx:380"}, "properties": {"repobilityId": "3faf66ec4ee5de75", "scanner": "scanner-primary", "fingerprint": "884f066336967d7d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6ede654cb584ea72", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/IntegrationHealthPage.tsx:235"}, "properties": {"repobilityId": "645e8362e730d3c4", "scanner": "scanner-primary", "fingerprint": "6ede654cb584ea72", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ed5ef24f433afebf", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/QuoteQuickTemplateDetailPage.tsx:520"}, "properties": {"repobilityId": "243c19d861c5ec11", "scanner": "scanner-primary", "fingerprint": "ed5ef24f433afebf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-eb5fc9880e077c2b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/QuoteQuickPage.tsx:473"}, "properties": {"repobilityId": "c408f162b6897512", "scanner": "scanner-primary", "fingerprint": "eb5fc9880e077c2b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-539ee3a07254cbe7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/QuoteQuickTradesPage.tsx:254"}, "properties": {"repobilityId": "1db33dd0bb09495d", "scanner": "scanner-primary", "fingerprint": "539ee3a07254cbe7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3f5e72846e456bb1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/MapguardOpsPage.tsx:248"}, "properties": {"repobilityId": "d7d3a5dcde00a648", "scanner": "scanner-primary", "fingerprint": "3f5e72846e456bb1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ed4faa0b4d7329ba", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/QuoteQuickTemplatesPage.tsx:223"}, "properties": {"repobilityId": "782cca7b5f187b09", "scanner": "scanner-primary", "fingerprint": "ed4faa0b4d7329ba", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-99e9a3e30dbaa922", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/SeoIntegrationsPage.tsx:344"}, "properties": {"repobilityId": "b17eaf726bc7d221", "scanner": "scanner-primary", "fingerprint": "99e9a3e30dbaa922", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d136f6ca2de5e9ef", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/AdminAuditLogPage.tsx:325"}, "properties": {"repobilityId": "7d332239f9c44636", "scanner": "scanner-primary", "fingerprint": "d136f6ca2de5e9ef", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a8cedce128c0cd30", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/QuoteQuickTradeDetailPage.tsx:292"}, "properties": {"repobilityId": "217d0f1b8335d000", "scanner": "scanner-primary", "fingerprint": "a8cedce128c0cd30", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5efb318d01f19c47", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/WebCareOpsPage.tsx:321"}, "properties": {"repobilityId": "7950e5a5662f6757", "scanner": "scanner-primary", "fingerprint": "5efb318d01f19c47", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1f3b18031e312c7e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/BillingPage.tsx:281"}, "properties": {"repobilityId": "fe480c899be13272", "scanner": "scanner-primary", "fingerprint": "1f3b18031e312c7e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-57237352e55f1ac4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/ContentFlowQueuePage.tsx:1134"}, "properties": {"repobilityId": "a5d62e7034d5be4c", "scanner": "scanner-primary", "fingerprint": "57237352e55f1ac4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ae8fa51d7501e3c3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/ProductDetailPage.tsx:495"}, "properties": {"repobilityId": "f76727564c9dd8b5", "scanner": "scanner-primary", "fingerprint": "ae8fa51d7501e3c3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-43d7f852fd6658c9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/ApiPlatformUserDetailPage.tsx:620"}, "properties": {"repobilityId": "e2cf4359bfbfd7c9", "scanner": "scanner-primary", "fingerprint": "43d7f852fd6658c9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d4b65a342272ef44", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/MapguardDashboard.tsx:484"}, "properties": {"repobilityId": "ad2a27706d10c39d", "scanner": "scanner-primary", "fingerprint": "d4b65a342272ef44", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8d5b7d6ebaa55404", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/TradeLineOpsPage.tsx:66"}, "properties": {"repobilityId": "2cb61a3c0f27388a", "scanner": "scanner-primary", "fingerprint": "8d5b7d6ebaa55404", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-043615ea52ef5849", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/AdminAiActivityPage.tsx:328"}, "properties": {"repobilityId": "dd67e06ab04984f7", "scanner": "scanner-primary", "fingerprint": "043615ea52ef5849", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-998ca64ea0bdcd77", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/CommunicationsPage.tsx:421"}, "properties": {"repobilityId": "3732924c2e1e3760", "scanner": "scanner-primary", "fingerprint": "998ca64ea0bdcd77", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-51dbe89ebaf1e144", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/AiDashboard.tsx:437"}, "properties": {"repobilityId": "c48be4d7c2e6432e", "scanner": "scanner-primary", "fingerprint": "51dbe89ebaf1e144", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5f512eb28b23248b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/MobilePreview/PreviewScreens.tsx:623"}, "properties": {"repobilityId": "addb132d31598898", "scanner": "scanner-primary", "fingerprint": "5f512eb28b23248b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3610a68d507862fd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/pages/admin/MobilePreview/__tests__/PreviewScreens.test.tsx:35"}, "properties": {"repobilityId": "20f3ec8761936d41", "scanner": "scanner-primary", "fingerprint": "3610a68d507862fd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dff235cdee915387", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/pages/admin/outbound/outboundUiHelpers.test.ts:28"}, "properties": {"repobilityId": "31bad9506df20d86", "scanner": "scanner-primary", "fingerprint": "dff235cdee915387", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0fdf4f032052ebe2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/outbound/CampaignsPage.tsx:727"}, "properties": {"repobilityId": "4fa72a5ec46c565f", "scanner": "scanner-primary", "fingerprint": "0fdf4f032052ebe2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f9c8119a7546a0c5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/outbound/PipelinePage.tsx:173"}, "properties": {"repobilityId": "23e70f9e30241276", "scanner": "scanner-primary", "fingerprint": "f9c8119a7546a0c5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f585f0da2229fb73", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/outbound/ProspectsPage.tsx:693"}, "properties": {"repobilityId": "7176883cb4a4cce4", "scanner": "scanner-primary", "fingerprint": "f585f0da2229fb73", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3b95cccca5c45a27", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/outbound/SendingPage.tsx:266"}, "properties": {"repobilityId": "e5577d93b7c0b27c", "scanner": "scanner-primary", "fingerprint": "3b95cccca5c45a27", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-969ba8e25374d517", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalYourAiAssistant.tsx:530"}, "properties": {"repobilityId": "a793be3e138718c5", "scanner": "scanner-primary", "fingerprint": "969ba8e25374d517", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9d8f5ed924f15f8a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalSettings.tsx:1280"}, "properties": {"repobilityId": "dd43d327ce071793", "scanner": "scanner-primary", "fingerprint": "9d8f5ed924f15f8a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-82c095693fbb8922", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/BookFlowSetupPage.tsx:367"}, "properties": {"repobilityId": "2bc5018a15af7e5d", "scanner": "scanner-primary", "fingerprint": "82c095693fbb8922", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-15654b37df147809", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalCompetitors.tsx:298"}, "properties": {"repobilityId": "f47d79ac68bc79df", "scanner": "scanner-primary", "fingerprint": "15654b37df147809", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3889b79b3e875329", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalRankFlow.tsx:709"}, "properties": {"repobilityId": "74f64a1dce19792c", "scanner": "scanner-primary", "fingerprint": "3889b79b3e875329", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d9a51188b1227a6d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalBilling.tsx:309"}, "properties": {"repobilityId": "af11d51b54f618a0", "scanner": "scanner-primary", "fingerprint": "d9a51188b1227a6d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8665d0e096d5a0e7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalHelp.tsx:255"}, "properties": {"repobilityId": "625735244ae7b4f7", "scanner": "scanner-primary", "fingerprint": "8665d0e096d5a0e7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1b5f93008e6d7347", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalDashboard.tsx:783"}, "properties": {"repobilityId": "705e918875c23af5", "scanner": "scanner-primary", "fingerprint": "1b5f93008e6d7347", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-430db2eb1efdbecf", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalServiceDetail.tsx:859"}, "properties": {"repobilityId": "37a5bf951394dbb1", "scanner": "scanner-primary", "fingerprint": "430db2eb1efdbecf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5179449219b9b32f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/PortalChatWidgetSetup.tsx:347"}, "properties": {"repobilityId": "00c58c09f4c5a231", "scanner": "scanner-primary", "fingerprint": "5179449219b9b32f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f0e2b2db4e11f40e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/FreeTools/InvoicePdf.tsx:490"}, "properties": {"repobilityId": "3887ab8ccc8fd46d", "scanner": "scanner-primary", "fingerprint": "f0e2b2db4e11f40e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3d925b1ee0b520b1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/FreeTools/SchemaGenerator.tsx:498"}, "properties": {"repobilityId": "389451c1214da021", "scanner": "scanner-primary", "fingerprint": "3d925b1ee0b520b1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e16a760e1c063091", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/FreeTools/ReviewQrCard.tsx:525"}, "properties": {"repobilityId": "f922bed20301ae64", "scanner": "scanner-primary", "fingerprint": "e16a760e1c063091", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d8e5a084b9d083a2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/FreeTools/_shared.tsx:95"}, "properties": {"repobilityId": "bbcf3b6c11c765a1", "scanner": "scanner-primary", "fingerprint": "d8e5a084b9d083a2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-82d606a0feca858e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/FreeTools/CallbackForm.tsx:372"}, "properties": {"repobilityId": "e0e59bb412a94d3f", "scanner": "scanner-primary", "fingerprint": "82d606a0feca858e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2c34e73d8b87d404", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/FreeTools/BookingWidget.tsx:541"}, "properties": {"repobilityId": "a6206f46dc149f7e", "scanner": "scanner-primary", "fingerprint": "2c34e73d8b87d404", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ad2633969dad787a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/portal/socialsync/SocialSyncDashboard.tsx:992"}, "properties": {"repobilityId": "09a491721cef3e67", "scanner": "scanner-primary", "fingerprint": "ad2633969dad787a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-de40351d4d5ead58", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/tradeline-safety-floor.test.ts:30"}, "properties": {"repobilityId": "bc3a6717c40511ba", "scanner": "scanner-primary", "fingerprint": "de40351d4d5ead58", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a3d37cb1a51bed5b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/payment-methods-sweep.test.ts:400"}, "properties": {"repobilityId": "2a5bc5e85650d75d", "scanner": "scanner-primary", "fingerprint": "a3d37cb1a51bed5b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-13267c07e40b07fb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/learning-apply.test.ts:18"}, "properties": {"repobilityId": "06b2cc19471b1d9d", "scanner": "scanner-primary", "fingerprint": "13267c07e40b07fb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e88194a16332bdca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/build-smoke.test.ts:71"}, "properties": {"repobilityId": "89aa014081bcd47c", "scanner": "scanner-primary", "fingerprint": "e88194a16332bdca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-77173ff5ca8ebfde", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/tradeline-chat-voice-parity.test.ts:43"}, "properties": {"repobilityId": "3c92907514a5b476", "scanner": "scanner-primary", "fingerprint": "77173ff5ca8ebfde", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-75fe99d32c8aa4a0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/riley-closer.test.ts:22"}, "properties": {"repobilityId": "09ab2cf67e829bcc", "scanner": "scanner-primary", "fingerprint": "75fe99d32c8aa4a0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3537fba8340407e8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/inbound-action.test.ts:19"}, "properties": {"repobilityId": "4a2db272532aae4d", "scanner": "scanner-primary", "fingerprint": "3537fba8340407e8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-30db0ec79ed0f784", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/publish-stripe-gate.test.ts:214"}, "properties": {"repobilityId": "9c40ffc9faf0f1ae", "scanner": "scanner-primary", "fingerprint": "30db0ec79ed0f784", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3f5d1fe26b8af289", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/outreach-smartlead.test.ts:60"}, "properties": {"repobilityId": "1bd107ad96b7a39b", "scanner": "scanner-primary", "fingerprint": "3f5d1fe26b8af289", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5824879f88ed6172", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/tradeline-param-route-fallthrough.test.ts:34"}, "properties": {"repobilityId": "e190f9352bc20a43", "scanner": "scanner-primary", "fingerprint": "5824879f88ed6172", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9b863652c8d5a819", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/tradeline-live-templates.test.ts:29"}, "properties": {"repobilityId": "3f3b6b4eeb155c1d", "scanner": "scanner-primary", "fingerprint": "9b863652c8d5a819", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-49784a8aa1754d62", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/voice-profile.test.ts:36"}, "properties": {"repobilityId": "a036c7d9d15bbc27", "scanner": "scanner-primary", "fingerprint": "49784a8aa1754d62", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aa9a5fa7a1a2d0b2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/healthz-version.test.ts:51"}, "properties": {"repobilityId": "90a577f7d42f553a", "scanner": "scanner-primary", "fingerprint": "aa9a5fa7a1a2d0b2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5f94c954212a7eea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/portal-concierge.test.ts:27"}, "properties": {"repobilityId": "4160c31f985c2ecb", "scanner": "scanner-primary", "fingerprint": "5f94c954212a7eea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0b16aa9acf905f82", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/wave-q-audit/probe-home.spec.ts:27"}, "properties": {"repobilityId": "58d47bb9e8439f4e", "scanner": "scanner-primary", "fingerprint": "0b16aa9acf905f82", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-05b358b18c65acdb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/wave-q-audit/audit.spec.ts:389"}, "properties": {"repobilityId": "118b4e21c0a3c765", "scanner": "scanner-primary", "fingerprint": "05b358b18c65acdb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b52957532e0ebbc7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/wave-q-audit/probe-warnings.spec.ts:16"}, "properties": {"repobilityId": "4ab99d9a837721fc", "scanner": "scanner-primary", "fingerprint": "b52957532e0ebbc7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f1b38a4ada80acfa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/audit/a11y-batch3.spec.ts:84"}, "properties": {"repobilityId": "beee0b69d130297c", "scanner": "scanner-primary", "fingerprint": "f1b38a4ada80acfa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d2a44cbc8fe364f5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/audit/wave-as1b-template-identity.spec.ts:107"}, "properties": {"repobilityId": "432c8c837c444618", "scanner": "scanner-primary", "fingerprint": "d2a44cbc8fe364f5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-60158a557c1d41b2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/audit/wave-as1c-template-polish.spec.ts:90"}, "properties": {"repobilityId": "2de856cc2152a4ef", "scanner": "scanner-primary", "fingerprint": "60158a557c1d41b2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7038b23788024f88", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/audit/_w-hero-screenshot.spec.ts:33"}, "properties": {"repobilityId": "eb37ea227a05a51d", "scanner": "scanner-primary", "fingerprint": "7038b23788024f88", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-833931ed273639c0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/audit/w-v-voice-dialer.spec.ts:167"}, "properties": {"repobilityId": "422fa3cde0928e81", "scanner": "scanner-primary", "fingerprint": "833931ed273639c0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e880664ffb423534", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/audit/a11y.spec.ts:32"}, "properties": {"repobilityId": "91f31047137816a6", "scanner": "scanner-primary", "fingerprint": "e880664ffb423534", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a55741aa52ddc0ed", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/audit/wizard-wave-r-pre-v2-screenshots.spec.ts:67"}, "properties": {"repobilityId": "ac4f944876b48773", "scanner": "scanner-primary", "fingerprint": "a55741aa52ddc0ed", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ae551a7ae4465074", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/audit/_w-sections-screenshot.spec.ts:59"}, "properties": {"repobilityId": "7089a482067f6803", "scanner": "scanner-primary", "fingerprint": "ae551a7ae4465074", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8c5410e96ce9d50a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/audit/wave-ap3-template-gallery.spec.ts:71"}, "properties": {"repobilityId": "27e7a62c17c53420", "scanner": "scanner-primary", "fingerprint": "8c5410e96ce9d50a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-19f3c400d5ea729b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/audit/_w-labels-screenshot.spec.ts:65"}, "properties": {"repobilityId": "2572cb87641341a6", "scanner": "scanner-primary", "fingerprint": "19f3c400d5ea729b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f35997d9776ebb3e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/audit/_w-r4-image-cards-screenshot.spec.ts:137"}, "properties": {"repobilityId": "fbb1363832834150", "scanner": "scanner-primary", "fingerprint": "f35997d9776ebb3e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-98402ed9d58222de", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/audit/_w-cards-screenshot.spec.ts:68"}, "properties": {"repobilityId": "c214066b44e22ff8", "scanner": "scanner-primary", "fingerprint": "98402ed9d58222de", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a5bbb0307aaceacd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/audit/w-twilio-comms-screenshot.spec.ts:76"}, "properties": {"repobilityId": "0aa01d0800481b5e", "scanner": "scanner-primary", "fingerprint": "a5bbb0307aaceacd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3b1fec7d78eb16eb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/e2e/authenticated-flows.spec.ts:187"}, "properties": {"repobilityId": "34f168eae3af6ea6", "scanner": "scanner-primary", "fingerprint": "3b1fec7d78eb16eb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-739b42ba8c503dc0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/e2e/audit-flow.spec.ts:211"}, "properties": {"repobilityId": "4c243009b7455181", "scanner": "scanner-primary", "fingerprint": "739b42ba8c503dc0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4b578dc06b46f0d7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/e2e/smoke-all-pages.spec.ts:567"}, "properties": {"repobilityId": "9d374e35f177ce55", "scanner": "scanner-primary", "fingerprint": "4b578dc06b46f0d7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0a69fc8b9f0cc6a4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/e2e/admin-crm/cleanup-test-data.ts:12"}, "properties": {"repobilityId": "57d028631ec70e39", "scanner": "scanner-primary", "fingerprint": "0a69fc8b9f0cc6a4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6ef9102f845cc129", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/wip/stripe-billing-overhaul/verify-phase2-safety.ts:109"}, "properties": {"repobilityId": "10f7089e3cdaa712", "scanner": "scanner-primary", "fingerprint": "6ef9102f845cc129", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2315d932a6d79383", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/wip/stripe-billing-overhaul/verify-phase2-real-db.ts:64"}, "properties": {"repobilityId": "284f661b32d7c99c", "scanner": "scanner-primary", "fingerprint": "2315d932a6d79383", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2739895b3e4790ae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/wip/stripe-billing-overhaul/verify-phase1-real-db.ts:82"}, "properties": {"repobilityId": "9498f758bf620544", "scanner": "scanner-primary", "fingerprint": "2739895b3e4790ae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-34523acba1bed4a0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/locationCountry.test.ts:109"}, "properties": {"repobilityId": "85e49ebcd67f2c0f", "scanner": "scanner-primary", "fingerprint": "34523acba1bed4a0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8dfe37b65e269157", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/revenueLoss.test.ts:144"}, "properties": {"repobilityId": "fc7ccf7e1fd6bdcf", "scanner": "scanner-primary", "fingerprint": "8dfe37b65e269157", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fd1cdde2b788439c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/seoContentPage.test.ts:142"}, "properties": {"repobilityId": "20982b06e90bf121", "scanner": "scanner-primary", "fingerprint": "fd1cdde2b788439c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-37c88e2d36c879d9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/prompts/tradelineDemoPrompt.test.ts:163"}, "properties": {"repobilityId": "1eae58a5d2f390c4", "scanner": "scanner-primary", "fingerprint": "37c88e2d36c879d9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-83385b4433c29134", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/schemas/calculator.fieldTypes.test.ts:38"}, "properties": {"repobilityId": "3012b4b0fea21333", "scanner": "scanner-primary", "fingerprint": "83385b4433c29134", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a6335e41670621e4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shared/sms/templateRegistry.test.ts:33"}, "properties": {"repobilityId": "88517e062d782452", "scanner": "scanner-primary", "fingerprint": "a6335e41670621e4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c15f98987d6dbe83", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-place-id-extractor.ts:15"}, "properties": {"repobilityId": "a13795896c0966c9", "scanner": "scanner-primary", "fingerprint": "c15f98987d6dbe83", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-58fa830d7136b441", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-and-activate-stripe-api-prices.ts:31"}, "properties": {"repobilityId": "46fbfe3880f00c46", "scanner": "scanner-primary", "fingerprint": "58fa830d7136b441", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d59747c12855d081", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-test-portal-client.ts:84"}, "properties": {"repobilityId": "3fef3353259f16ae", "scanner": "scanner-primary", "fingerprint": "d59747c12855d081", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-326729da0976ccca", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 scripts/generate-free-tool-previews.ts:152"}, "properties": {"repobilityId": "ca90f15ea91af7f3", "scanner": "scanner-primary", "fingerprint": "326729da0976ccca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-9b6a9a5416e1081f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-free-tool-previews.ts:439"}, "properties": {"repobilityId": "2c4862571fc93cb7", "scanner": "scanner-primary", "fingerprint": "9b6a9a5416e1081f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-820954e66cb98f6b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-mapguard-keywords.ts:15"}, "properties": {"repobilityId": "bdb3e661fd02da97", "scanner": "scanner-primary", "fingerprint": "820954e66cb98f6b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c0d10fa30b12f766", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-test-client.ts:31"}, "properties": {"repobilityId": "bc0a3bfc32456cd0", "scanner": "scanner-primary", "fingerprint": "c0d10fa30b12f766", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5db6ecd1362a584d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-dunning.ts:36"}, "properties": {"repobilityId": "9fcaa402f8f09204", "scanner": "scanner-primary", "fingerprint": "5db6ecd1362a584d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-05214198f3a8cf65", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-mapguard-prelaunch.ts:37"}, "properties": {"repobilityId": "37b7192bf6e2c128", "scanner": "scanner-primary", "fingerprint": "05214198f3a8cf65", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a5ae5fe16b50f9ef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-tradeline-phone-setups.ts:11"}, "properties": {"repobilityId": "810d36b575940218", "scanner": "scanner-primary", "fingerprint": "a5ae5fe16b50f9ef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fdb24e0604b40a8a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-template-thumbnails.ts:65"}, "properties": {"repobilityId": "4e5f8734ac0e9692", "scanner": "scanner-primary", "fingerprint": "fdb24e0604b40a8a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-729f21bf12ddeeee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recreate-admin.ts:66"}, "properties": {"repobilityId": "c05fd573ba558553", "scanner": "scanner-primary", "fingerprint": "729f21bf12ddeeee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-263b2e18f0618382", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sync-api-platform-stripe-prices.ts:44"}, "properties": {"repobilityId": "3e610226b8b55b73", "scanner": "scanner-primary", "fingerprint": "263b2e18f0618382", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3f08eed3cbb74a37", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-migration.ts:40"}, "properties": {"repobilityId": "dbfa6d77b7cd79db", "scanner": "scanner-primary", "fingerprint": "3f08eed3cbb74a37", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cabc588805a70e0a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-billing-recovery-prereqs.ts:29"}, "properties": {"repobilityId": "08341c9a9369bbaa", "scanner": "scanner-primary", "fingerprint": "cabc588805a70e0a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8ff31e737f63e335", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup-stripe.ts:45"}, "properties": {"repobilityId": "796edc20f8391a58", "scanner": "scanner-primary", "fingerprint": "8ff31e737f63e335", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0e8709728412ca6f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/smoke-billing-recovery-local.ts:229"}, "properties": {"repobilityId": "2dbcb9f85e6eeed4", "scanner": "scanner-primary", "fingerprint": "0e8709728412ca6f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0eccf66ce5128fdd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/link-admin-client.ts:18"}, "properties": {"repobilityId": "440a0852114426ad", "scanner": "scanner-primary", "fingerprint": "0eccf66ce5128fdd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7b53f61c4b0c04d2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-email-tracking.ts:18"}, "properties": {"repobilityId": "3ebc1cea29309710", "scanner": "scanner-primary", "fingerprint": "7b53f61c4b0c04d2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-106abcdd6ef581ce", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-adflow-cron.ts:40"}, "properties": {"repobilityId": "bca7689a2302d4a6", "scanner": "scanner-primary", "fingerprint": "106abcdd6ef581ce", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-006665d68ecc8fc1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-formula.ts:13"}, "properties": {"repobilityId": "fa4e84dff32e5d16", "scanner": "scanner-primary", "fingerprint": "006665d68ecc8fc1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-32d843a0c6fd4bda", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rollback-api-platform-stripe-prices.ts:42"}, "properties": {"repobilityId": "1cf068d5ce7b99c1", "scanner": "scanner-primary", "fingerprint": "32d843a0c6fd4bda", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c7fdd93340862738", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev-full-audit-smoke.ts:24"}, "properties": {"repobilityId": "b9ffb125ae5339b2", "scanner": "scanner-primary", "fingerprint": "c7fdd93340862738", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a557944ea9fc312", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/preview-transactional-emails.ts:545"}, "properties": {"repobilityId": "bd293b74932cb9f7", "scanner": "scanner-primary", "fingerprint": "9a557944ea9fc312", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c03bcdcbc8a806f8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/smoke-stripe-billing-recovery.ts:49"}, "properties": {"repobilityId": "3280a612eadf58c6", "scanner": "scanner-primary", "fingerprint": "c03bcdcbc8a806f8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ec827882c04b021a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-template-formula-refs.ts:96"}, "properties": {"repobilityId": "9c70e7206338f14a", "scanner": "scanner-primary", "fingerprint": "ec827882c04b021a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-71675c42bfe18f9e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-template-image-hosts.ts:53"}, "properties": {"repobilityId": "650e5dccf99597b4", "scanner": "scanner-primary", "fingerprint": "71675c42bfe18f9e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7751f047facaa216", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-image-template.ts:34"}, "properties": {"repobilityId": "26abe1fac490e3e9", "scanner": "scanner-primary", "fingerprint": "7751f047facaa216", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-75ab6efba040aba3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/load/mock-apis.ts:148"}, "properties": {"repobilityId": "57794e7c1ee0a594", "scanner": "scanner-primary", "fingerprint": "75ab6efba040aba3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3a9f50dbcbbe3a77", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/load/mapguard-batch.js:124"}, "properties": {"repobilityId": "c0483b3b6e26407a", "scanner": "scanner-primary", "fingerprint": "3a9f50dbcbbe3a77", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f310af982ede55c3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/voice-smoke/measure-latency.ts:75"}, "properties": {"repobilityId": "2365be7a72b46cb1", "scanner": "scanner-primary", "fingerprint": "f310af982ede55c3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d0383f1ed3de2835", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/google-verification/record-demo.spec.ts:84"}, "properties": {"repobilityId": "8d802976a3928850", "scanner": "scanner-primary", "fingerprint": "d0383f1ed3de2835", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-237e12e596051da5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sms/patch-existing-numbers.ts:49"}, "properties": {"repobilityId": "3aa5509fa4ddaa19", "scanner": "scanner-primary", "fingerprint": "237e12e596051da5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de7d387ffdb85ff7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 script/smoke.ts:109"}, "properties": {"repobilityId": "1bc377eb3cc5182a", "scanner": "scanner-primary", "fingerprint": "de7d387ffdb85ff7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b22010a98a4ff189", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 script/build.ts:101"}, "properties": {"repobilityId": "47ceeaa6313fa094", "scanner": "scanner-primary", "fingerprint": "b22010a98a4ff189", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bcec57442b95af4e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/auditRoutes.audit-general.test.ts:552"}, "properties": {"repobilityId": "8f8bbc95c74d4048", "scanner": "scanner-primary", "fingerprint": "bcec57442b95af4e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bff99a1a20a7ccb5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/exec-server.ts:75"}, "properties": {"repobilityId": "fd38dbdb4acdc58c", "scanner": "scanner-primary", "fingerprint": "bff99a1a20a7ccb5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6449735e57a2dc53", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/bootstrapDoppler.ts:49"}, "properties": {"repobilityId": "3dc4e07f2f0f6848", "scanner": "scanner-primary", "fingerprint": "6449735e57a2dc53", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6893e8a469d544fd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/auditRoutes.premium.test.ts:307"}, "properties": {"repobilityId": "0156cfbd2a0863cf", "scanner": "scanner-primary", "fingerprint": "6893e8a469d544fd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-268a22ea80b76d02", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/auditRoutes.narrative-bg.test.ts:162"}, "properties": {"repobilityId": "72f9ea4070addc6b", "scanner": "scanner-primary", "fingerprint": "268a22ea80b76d02", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e77953e60397984d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/twilioClient.smsCost.test.ts:34"}, "properties": {"repobilityId": "de53ee8516af1dbb", "scanner": "scanner-primary", "fingerprint": "e77953e60397984d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c287be2b07b4bb5b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/auditRoutes.competitors.test.ts:438"}, "properties": {"repobilityId": "f8015dd123d4224e", "scanner": "scanner-primary", "fingerprint": "c287be2b07b4bb5b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f8384657b29da0ce", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/auditScoring.test.ts:258"}, "properties": {"repobilityId": "f260a4a0cf062451", "scanner": "scanner-primary", "fingerprint": "f8384657b29da0ce", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d70dcbd8f5b83013", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/auditRoutes.niche-cascade.test.ts:304"}, "properties": {"repobilityId": "3fd79f8608f7394a", "scanner": "scanner-primary", "fingerprint": "d70dcbd8f5b83013", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6dac5f624a886cdc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/test-tradeline-flow.ts:29"}, "properties": {"repobilityId": "e0451c4350d05fd6", "scanner": "scanner-primary", "fingerprint": "6dac5f624a886cdc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-64cb965e68f250c6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/seed-services.ts:110"}, "properties": {"repobilityId": "74b1642745dcaed5", "scanner": "scanner-primary", "fingerprint": "64cb965e68f250c6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d76f14c65cf91f6f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/test-stripe-flow.ts:35"}, "properties": {"repobilityId": "ca3f5fb95d9c3080", "scanner": "scanner-primary", "fingerprint": "d76f14c65cf91f6f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-774176b3ea5ad186", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/sync-stripe.ts:43"}, "properties": {"repobilityId": "8ab1143d6d42f27d", "scanner": "scanner-primary", "fingerprint": "774176b3ea5ad186", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d4b745bb2ea2de45", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/seed-admin.ts:39"}, "properties": {"repobilityId": "28c450552911ee8a", "scanner": "scanner-primary", "fingerprint": "d4b745bb2ea2de45", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0efd1efdf59ec3d6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/seed-suppliers.ts:105"}, "properties": {"repobilityId": "9f5ba8a4513f3792", "scanner": "scanner-primary", "fingerprint": "0efd1efdf59ec3d6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-92ef06dc59c05a49", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/smsQuietHours.test.ts:254"}, "properties": {"repobilityId": "f0fd62f635d2f4f3", "scanner": "scanner-primary", "fingerprint": "92ef06dc59c05a49", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0b6a2205740477a4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/analytics.funnel.test.ts:56"}, "properties": {"repobilityId": "d18121f03f134b9e", "scanner": "scanner-primary", "fingerprint": "0b6a2205740477a4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8fb192942f915dff", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 server/lib/notificationPreferences.ts:135"}, "properties": {"repobilityId": "d5800557d21d3b1b", "scanner": "scanner-primary", "fingerprint": "8fb192942f915dff", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-5eb097e198598e24", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/schemaSentinel.test.ts:64"}, "properties": {"repobilityId": "e6231e89a25b19db", "scanner": "scanner-primary", "fingerprint": "5eb097e198598e24", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-82e71ac9f9ddde12", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/smsTemplateResolver.test.ts:33"}, "properties": {"repobilityId": "1b9728f189c0ec26", "scanner": "scanner-primary", "fingerprint": "82e71ac9f9ddde12", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-070ff2c6617d1204", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/dataforseoReviews.test.ts:74"}, "properties": {"repobilityId": "e1d67b5741fe4b86", "scanner": "scanner-primary", "fingerprint": "070ff2c6617d1204", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d8e2101ba40caa70", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/bookflowSmsTemplates.test.ts:40"}, "properties": {"repobilityId": "5c111dd7bc12d8a7", "scanner": "scanner-primary", "fingerprint": "d8e2101ba40caa70", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8eaddb9496e9c4dc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/adminTwoFactorPolicy.test.ts:34"}, "properties": {"repobilityId": "1e4166009f863594", "scanner": "scanner-primary", "fingerprint": "8eaddb9496e9c4dc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-77f62be75fa9e89f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/smsSegments.test.ts:30"}, "properties": {"repobilityId": "9ace474f6715cc23", "scanner": "scanner-primary", "fingerprint": "77f62be75fa9e89f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1ca2c93238814833", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/quotequickHomeownerSms.test.ts:26"}, "properties": {"repobilityId": "a1de6838ce19a55d", "scanner": "scanner-primary", "fingerprint": "1ca2c93238814833", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5d54fa15e45ac643", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/recoveryCodes.test.ts:33"}, "properties": {"repobilityId": "257a1208563617c4", "scanner": "scanner-primary", "fingerprint": "5d54fa15e45ac643", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-162f02269e072d36", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/bodyLimits.test.ts:50"}, "properties": {"repobilityId": "c11183438831172d", "scanner": "scanner-primary", "fingerprint": "162f02269e072d36", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-58112da3943871e6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/loginToken.test.ts:32"}, "properties": {"repobilityId": "f24d915beda32752", "scanner": "scanner-primary", "fingerprint": "58112da3943871e6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-78aa45351303afb7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/checkoutPaymentGate.test.ts:42"}, "properties": {"repobilityId": "0c10447370bad2b7", "scanner": "scanner-primary", "fingerprint": "78aa45351303afb7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e61aec023362c334", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/serpOrchestrator.test.ts:45"}, "properties": {"repobilityId": "a0f10921ddc069fe", "scanner": "scanner-primary", "fingerprint": "e61aec023362c334", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e92352929d4b9cb6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/lib/transientInfraErrors.test.ts:29"}, "properties": {"repobilityId": "5c7741765857076a", "scanner": "scanner-primary", "fingerprint": "e92352929d4b9cb6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-373d434bcc8303c1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/outreachAttributionRoutes.test.ts:40"}, "properties": {"repobilityId": "f87690c82bfd1f28", "scanner": "scanner-primary", "fingerprint": "373d434bcc8303c1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d8b61e1f9c799971", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/quoteWidgetDistanceRoutes.test.ts:66"}, "properties": {"repobilityId": "8f692feb4036701f", "scanner": "scanner-primary", "fingerprint": "d8b61e1f9c799971", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0355512615fe6161", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 server/routes/stripeBillingRoutes.ts:1314"}, "properties": {"repobilityId": "3ab786e4f45f8171", "scanner": "scanner-primary", "fingerprint": "0355512615fe6161", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-95c76a55e9ee503b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 server/routes/mobileVoiceRoutes.ts:176"}, "properties": {"repobilityId": "b8a76fb05e533eac", "scanner": "scanner-primary", "fingerprint": "95c76a55e9ee503b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-ad53469a916a56a7", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 server/routes/socialSyncRoutes.ts:1397"}, "properties": {"repobilityId": "70342900352a6581", "scanner": "scanner-primary", "fingerprint": "ad53469a916a56a7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-2bb4e6157627f4c2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/stripeBillingRoutes.subscriptionCancel.test.ts:60"}, "properties": {"repobilityId": "5a42738335f03831", "scanner": "scanner-primary", "fingerprint": "2bb4e6157627f4c2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5dbdd6752d81bad1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/portalTradelineKnowledgeRoutes.routeOrder.test.ts:63"}, "properties": {"repobilityId": "96b835c0bf07ccf1", "scanner": "scanner-primary", "fingerprint": "5dbdd6752d81bad1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f8c19ea22c63a117", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/citationMatch.test.ts:34"}, "properties": {"repobilityId": "00e411a12a74b04e", "scanner": "scanner-primary", "fingerprint": "f8c19ea22c63a117", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7adbe9c80affecab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/quotequickAiChatRoutes.fusion.test.ts:43"}, "properties": {"repobilityId": "3e804bc6149bae78", "scanner": "scanner-primary", "fingerprint": "7adbe9c80affecab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b1c4da44f45cb285", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/quoteWidgetUploadRoutes.test.ts:65"}, "properties": {"repobilityId": "60f3d01444a8b2cb", "scanner": "scanner-primary", "fingerprint": "b1c4da44f45cb285", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-96e937c0d02ec205", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/portal/contentflow.generateSource.test.ts:62"}, "properties": {"repobilityId": "cfaf414ca4d258cb", "scanner": "scanner-primary", "fingerprint": "96e937c0d02ec205", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-830799e07956f1b7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/portal/catalog.test.ts:63"}, "properties": {"repobilityId": "bd81a1dbc6d1ab5a", "scanner": "scanner-primary", "fingerprint": "830799e07956f1b7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b07880e6cbfc698a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/portal/wave73KpiStats.test.ts:43"}, "properties": {"repobilityId": "6bbc55144ec190ad", "scanner": "scanner-primary", "fingerprint": "b07880e6cbfc698a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e65b483352ccc057", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/portal/contentflowVideo.routes.test.ts:64"}, "properties": {"repobilityId": "5a6ba3477511dd1b", "scanner": "scanner-primary", "fingerprint": "e65b483352ccc057", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b6b0898be76dc85e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/sitelaunchPaidOrderNotify.test.ts:49"}, "properties": {"repobilityId": "92b8e7e904242f30", "scanner": "scanner-primary", "fingerprint": "b6b0898be76dc85e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-04425f811184dd6b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/opsEngine.parse.test.ts:22"}, "properties": {"repobilityId": "da455ebd861aa3c9", "scanner": "scanner-primary", "fingerprint": "04425f811184dd6b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-60afb28df80d124c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/outboundSafety.test.ts:40"}, "properties": {"repobilityId": "124c78d345600730", "scanner": "scanner-primary", "fingerprint": "60afb28df80d124c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-78a9b518e722f144", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/clientKnowledge.test.ts:65"}, "properties": {"repobilityId": "8a320e3a18949c3b", "scanner": "scanner-primary", "fingerprint": "78a9b518e722f144", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4f439a0f0461d69e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/clientChatAccess.test.ts:51"}, "properties": {"repobilityId": "7e83b1e323e37712", "scanner": "scanner-primary", "fingerprint": "4f439a0f0461d69e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-253eb346bd526e12", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/tradelineBooking.test.ts:192"}, "properties": {"repobilityId": "531bbd4f3304056a", "scanner": "scanner-primary", "fingerprint": "253eb346bd526e12", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-706ed5c029cdb95a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/vapiService.sigverify.test.ts:30"}, "properties": {"repobilityId": "cf61dc985d641fe3", "scanner": "scanner-primary", "fingerprint": "706ed5c029cdb95a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1cd3ef68ba9d47e7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/tradelineTemplates.routing.test.ts:32"}, "properties": {"repobilityId": "ca78e3ba288f9dd2", "scanner": "scanner-primary", "fingerprint": "1cd3ef68ba9d47e7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8518b664521a591d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/knowledgeBase.test.ts:207"}, "properties": {"repobilityId": "cf367cb0409321e6", "scanner": "scanner-primary", "fingerprint": "8518b664521a591d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2861c6f9010325e4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/contentflow/intakeSufficiency.test.ts:68"}, "properties": {"repobilityId": "769f999f2ca0564c", "scanner": "scanner-primary", "fingerprint": "2861c6f9010325e4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e74f6cd210198174", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/contentflow/imageOrchestrator.flux2.test.ts:46"}, "properties": {"repobilityId": "01612bd8626ab012", "scanner": "scanner-primary", "fingerprint": "e74f6cd210198174", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e87744ac136e674b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/contentflow/referenceReplication.test.ts:44"}, "properties": {"repobilityId": "c6a84bf6ed456a4c", "scanner": "scanner-primary", "fingerprint": "e87744ac136e674b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c05e8189f4ef1b4d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/contentflow/referenceCapture.test.ts:50"}, "properties": {"repobilityId": "3a759f555f0924d2", "scanner": "scanner-primary", "fingerprint": "c05e8189f4ef1b4d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-92bc6706393cf8e4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/contentflow/imageOrchestrator.imagen4.test.ts:41"}, "properties": {"repobilityId": "1f9b72a446088229", "scanner": "scanner-primary", "fingerprint": "92bc6706393cf8e4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-651ea1f6adba663b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/contentflow/videoDirectorService.test.ts:49"}, "properties": {"repobilityId": "c6366e004d65372b", "scanner": "scanner-primary", "fingerprint": "651ea1f6adba663b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-addf3a586baf4d5c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/contentflow/videoProviders/providers.test.ts:68"}, "properties": {"repobilityId": "796a80202fc8e836", "scanner": "scanner-primary", "fingerprint": "addf3a586baf4d5c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cc1ac0796025af00", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/contentflow/videoStitcher/stitcher.test.ts:58"}, "properties": {"repobilityId": "f7f02558fd2689db", "scanner": "scanner-primary", "fingerprint": "cc1ac0796025af00", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de1bf05fbfa27273", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/socialSync/metaSignedRequest.test.ts:32"}, "properties": {"repobilityId": "456e7e8d454d52ea", "scanner": "scanner-primary", "fingerprint": "de1bf05fbfa27273", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f9faceb11c798399", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/tradelineSetup/kbSeeding.test.ts:37"}, "properties": {"repobilityId": "1534e98ecd85a4df", "scanner": "scanner-primary", "fingerprint": "f9faceb11c798399", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e59c7d9fb863bd95", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/tradelineSetup/entitlement.test.ts:80"}, "properties": {"repobilityId": "78ff1639b7cd1a91", "scanner": "scanner-primary", "fingerprint": "e59c7d9fb863bd95", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d5307525242a8a98", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/tradelineSetup/unifyNumber.test.ts:36"}, "properties": {"repobilityId": "8fe3f170838973ed", "scanner": "scanner-primary", "fingerprint": "d5307525242a8a98", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f08f0c51fb47cc13", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/rankflow/serpRankProvider.test.ts:53"}, "properties": {"repobilityId": "8777e77d439677b3", "scanner": "scanner-primary", "fingerprint": "f08f0c51fb47cc13", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-44e8d2f8d7c31a2b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/seoContent/seoArticleGenerator.test.ts:56"}, "properties": {"repobilityId": "aeec1b175d506291", "scanner": "scanner-primary", "fingerprint": "44e8d2f8d7c31a2b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-01cbe43e6be4e920", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/seoContent/programmaticMatrixGenerator.test.ts:61"}, "properties": {"repobilityId": "75fe2317d532c70a", "scanner": "scanner-primary", "fingerprint": "01cbe43e6be4e920", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bf81cfdc9629a0b7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/seoContent/originalDataService.test.ts:45"}, "properties": {"repobilityId": "76649466b8a2b767", "scanner": "scanner-primary", "fingerprint": "bf81cfdc9629a0b7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e02823a787fdd316", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/citationTracker/scrapers/scrapers.test.ts:65"}, "properties": {"repobilityId": "6dda2a5167ad7e02", "scanner": "scanner-primary", "fingerprint": "e02823a787fdd316", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-152ae9c3c48df7cd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/jobs/trialLifecycleWorker.test.ts:346"}, "properties": {"repobilityId": "b3e2469c10ee6b90", "scanner": "scanner-primary", "fingerprint": "152ae9c3c48df7cd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-95068c3300de2200", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/jobs/quotequickHomeownerSms.test.ts:28"}, "properties": {"repobilityId": "02a280d707c24fb9", "scanner": "scanner-primary", "fingerprint": "95068c3300de2200", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3a8d9f235f8153f8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/jobs/personalizationWorker.test.ts:279"}, "properties": {"repobilityId": "80f28693fbd35378", "scanner": "scanner-primary", "fingerprint": "3a8d9f235f8153f8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-27016b59b82ea499", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/jobs/videoRenderWorker.test.ts:349"}, "properties": {"repobilityId": "d22ffc1c6891f109", "scanner": "scanner-primary", "fingerprint": "27016b59b82ea499", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-af2f30ef6b2c3fe6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/jobs/tradelineMonthlyDigest.test.ts:23"}, "properties": {"repobilityId": "2181613890d5afde", "scanner": "scanner-primary", "fingerprint": "af2f30ef6b2c3fe6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c092ecdd20035470", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/jobs/quotequickMonthlyDigest.test.ts:23"}, "properties": {"repobilityId": "d5391e92c23dc2c6", "scanner": "scanner-primary", "fingerprint": "c092ecdd20035470", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-29b94226db3a7a5f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/jobs/incompleteSignupWorker.test.ts:50"}, "properties": {"repobilityId": "618b2c0a6e1a23a3", "scanner": "scanner-primary", "fingerprint": "29b94226db3a7a5f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6930b9e15a9fe91a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/jobs/contentflowMonthlyDigest.test.ts:35"}, "properties": {"repobilityId": "6ede3da9216fd212", "scanner": "scanner-primary", "fingerprint": "6930b9e15a9fe91a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f5d538edfc43fe4b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/storage/contentflowVideo.test.ts:379"}, "properties": {"repobilityId": "38da60f7767e934e", "scanner": "scanner-primary", "fingerprint": "f5d538edfc43fe4b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-50f1596c501442c8", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in audit.config.ts:2"}, "properties": {"repobilityId": "0dab110ddc46e938", "scanner": "scanner-primary", "fingerprint": "50f1596c501442c8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "audit.config.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-114c8dc8df4c157c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in playwright.config.ts:2"}, "properties": {"repobilityId": "8436cac204492c71", "scanner": "scanner-primary", "fingerprint": "114c8dc8df4c157c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "playwright.config.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-2b8b02e9e6490f37", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in Effortel Telecom Blog_ Insights & News on Telecom Growth.html:4869"}, "properties": {"repobilityId": "49611ac6c36f43b3", "scanner": "scanner-primary", "fingerprint": "2b8b02e9e6490f37", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Effortel Telecom Blog_ Insights & News on Telecom Growth.html"}, "region": {"startLine": 4869}}}]}, {"ruleId": "scanner-7dbf4b6b7e8ed228", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in Effortel Telecom Blog_ Insights & News on Telecom Growth.html:3318"}, "properties": {"repobilityId": "b5956b27112ad042", "scanner": "scanner-primary", "fingerprint": "7dbf4b6b7e8ed228", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Effortel Telecom Blog_ Insights & News on Telecom Growth.html"}, "region": {"startLine": 3318}}}]}, {"ruleId": "scanner-796fa7430b66d061", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in Effortel Telecom Blog_ Insights & News on Telecom Growth.html:2444"}, "properties": {"repobilityId": "4189e0d53dd55980", "scanner": "scanner-primary", "fingerprint": "796fa7430b66d061", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Effortel Telecom Blog_ Insights & News on Telecom Growth.html"}, "region": {"startLine": 2444}}}]}, {"ruleId": "scanner-2830c3122548d0df", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in smoke.config.ts:14"}, "properties": {"repobilityId": "f98197d8f84e79da", "scanner": "scanner-primary", "fingerprint": "2830c3122548d0df", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "smoke.config.ts"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-68a54326654a9253", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in Effortel Case Studies _ Innovative Telecom Solutions & Success Stories.html:4869"}, "properties": {"repobilityId": "c0e2172d70118ef4", "scanner": "scanner-primary", "fingerprint": "68a54326654a9253", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Effortel Case Studies _ Innovative Telecom Solutions & Success Stories.html"}, "region": {"startLine": 4869}}}]}, {"ruleId": "scanner-d76e6f31df7beffb", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in Effortel Case Studies _ Innovative Telecom Solutions & Success Stories.html:3318"}, "properties": {"repobilityId": "c16fd301bb46da88", "scanner": "scanner-primary", "fingerprint": "d76e6f31df7beffb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Effortel Case Studies _ Innovative Telecom Solutions & Success Stories.html"}, "region": {"startLine": 3318}}}]}, {"ruleId": "scanner-a0c92808db8cb709", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in Effortel Case Studies _ Innovative Telecom Solutions & Success Stories.html:2444"}, "properties": {"repobilityId": "e14eba4789bc328e", "scanner": "scanner-primary", "fingerprint": "a0c92808db8cb709", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Effortel Case Studies _ Innovative Telecom Solutions & Success Stories.html"}, "region": {"startLine": 2444}}}]}, {"ruleId": "scanner-575ee6ec4d6d13fd", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in client/public/embed-chat.js:41"}, "properties": {"repobilityId": "d002b7782e7d0998", "scanner": "scanner-primary", "fingerprint": "575ee6ec4d6d13fd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/public/embed-chat.js"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-ec5bf1709e0ee222", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in client/public/embed-widget.js:182"}, "properties": {"repobilityId": "08fed5763a254a70", "scanner": "scanner-primary", "fingerprint": "ec5bf1709e0ee222", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/public/embed-widget.js"}, "region": {"startLine": 182}}}]}, {"ruleId": "scanner-d96b1de1df047268", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in client/public/widget/callback.js:146"}, "properties": {"repobilityId": "7dd257776e6c7e9d", "scanner": "scanner-primary", "fingerprint": "d96b1de1df047268", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/public/widget/callback.js"}, "region": {"startLine": 146}}}]}, {"ruleId": "scanner-29d810e8260b782b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in client/public/widget/faq.js:56"}, "properties": {"repobilityId": "8dda4d0d80ba7b8a", "scanner": "scanner-primary", "fingerprint": "29d810e8260b782b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/public/widget/faq.js"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-9b3d087d6fb91659", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in client/public/widget/v1.js:93"}, "properties": {"repobilityId": "103db9bbb3cdffdc", "scanner": "scanner-primary", "fingerprint": "9b3d087d6fb91659", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/public/widget/v1.js"}, "region": {"startLine": 93}}}]}, {"ruleId": "scanner-9ccd2e817db5e91c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in client/public/widget/hours.js:120"}, "properties": {"repobilityId": "8d2074590cb4850e", "scanner": "scanner-primary", "fingerprint": "9ccd2e817db5e91c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/public/widget/hours.js"}, "region": {"startLine": 120}}}]}, {"ruleId": "scanner-2741617d27495466", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in client/public/widget/badges.js:75"}, "properties": {"repobilityId": "d652d343db3e46d3", "scanner": "scanner-primary", "fingerprint": "2741617d27495466", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/public/widget/badges.js"}, "region": {"startLine": 75}}}]}, {"ruleId": "scanner-8ee765ed7fa89066", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in client/public/widget/embed.js:112"}, "properties": {"repobilityId": "1e8ba01df8e40064", "scanner": "scanner-primary", "fingerprint": "8ee765ed7fa89066", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/public/widget/embed.js"}, "region": {"startLine": 112}}}]}, {"ruleId": "scanner-8df37d9232a59094", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in client/src/components/ui/chart.tsx:81"}, "properties": {"repobilityId": "298aaf10501f50f1", "scanner": "scanner-primary", "fingerprint": "8df37d9232a59094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/components/ui/chart.tsx"}, "region": {"startLine": 81}}}]}, {"ruleId": "scanner-846e43aefd2d7c24", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in client/src/components/quote-widget/ContactStep.tsx:411"}, "properties": {"repobilityId": "9e1b2d6e24c95dcb", "scanner": "scanner-primary", "fingerprint": "846e43aefd2d7c24", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/components/quote-widget/ContactStep.tsx"}, "region": {"startLine": 411}}}]}, {"ruleId": "scanner-d8a39287c6b8d435", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in client/src/components/quote-widget/CalculatorStepper.tsx:213"}, "properties": {"repobilityId": "cad9ce70ab5cf30d", "scanner": "scanner-primary", "fingerprint": "d8a39287c6b8d435", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/components/quote-widget/CalculatorStepper.tsx"}, "region": {"startLine": 213}}}]}, {"ruleId": "scanner-bd3479301ddc6626", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in client/src/components/marketing/TradeLineHeroPhone.tsx:215"}, "properties": {"repobilityId": "5288a391ffa02e3c", "scanner": "scanner-primary", "fingerprint": "bd3479301ddc6626", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/components/marketing/TradeLineHeroPhone.tsx"}, "region": {"startLine": 215}}}]}, {"ruleId": "scanner-4c2d267555429679", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in client/src/components/marketing/showcase/DataStreamCard.tsx:131"}, "properties": {"repobilityId": "a06c4bf2837979ab", "scanner": "scanner-primary", "fingerprint": "4c2d267555429679", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/components/marketing/showcase/DataStreamCard.tsx"}, "region": {"startLine": 131}}}]}, {"ruleId": "scanner-356ec61a24a6a1fc", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in client/src/components/marketing/globe/GlobeCanvas.tsx:144"}, "properties": {"repobilityId": "cf5300f84822656a", "scanner": "scanner-primary", "fingerprint": "356ec61a24a6a1fc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/components/marketing/globe/GlobeCanvas.tsx"}, "region": {"startLine": 144}}}]}, {"ruleId": "scanner-07954476bd34085d", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in client/src/components/wizard/elfsight/richTextSanitize.ts:191"}, "properties": {"repobilityId": "0df15dfb9e690c15", "scanner": "scanner-primary", "fingerprint": "07954476bd34085d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/components/wizard/elfsight/richTextSanitize.ts"}, "region": {"startLine": 191}}}]}, {"ruleId": "scanner-58f7b7588f12acfd", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in client/src/components/wizard/elfsight/RichTextField.tsx:279"}, "properties": {"repobilityId": "4f2e4ee18fa19cae", "scanner": "scanner-primary", "fingerprint": "58f7b7588f12acfd", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/components/wizard/elfsight/RichTextField.tsx"}, "region": {"startLine": 279}}}]}, {"ruleId": "scanner-e7aa22e80f954ea9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in client/src/components/wizard/elfsight/RichTextField.tsx:138"}, "properties": {"repobilityId": "ea5bc2342998c412", "scanner": "scanner-primary", "fingerprint": "e7aa22e80f954ea9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/components/wizard/elfsight/RichTextField.tsx"}, "region": {"startLine": 138}}}]}, {"ruleId": "scanner-0f9d6af0ab6b1112", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in client/src/components/wizard/elfsight/useFoldablePanels.ts:153"}, "properties": {"repobilityId": "38439f9a18ed7df3", "scanner": "scanner-primary", "fingerprint": "0f9d6af0ab6b1112", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/components/wizard/elfsight/useFoldablePanels.ts"}, "region": {"startLine": 153}}}]}, {"ruleId": "scanner-8c059ea97d40d430", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in client/src/pages/marketing/aiReceptionistDetail.tsx:62"}, "properties": {"repobilityId": "b0566d01630201ff", "scanner": "scanner-primary", "fingerprint": "8c059ea97d40d430", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/pages/marketing/aiReceptionistDetail.tsx"}, "region": {"startLine": 62}}}]}, {"ruleId": "scanner-373e513cc7548230", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in client/src/pages/marketing/tools/GoogleReviewLinkGenerator.tsx:352"}, "properties": {"repobilityId": "785ffcb3e01b5c87", "scanner": "scanner-primary", "fingerprint": "373e513cc7548230", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/pages/marketing/tools/GoogleReviewLinkGenerator.tsx"}, "region": {"startLine": 352}}}]}, {"ruleId": "scanner-62807d256551228a", "level": "error", "message": {"text": "Possible secret in client/src/pages/admin/ChangePasswordPage.tsx"}, "properties": {"repobilityId": "6aec08585774456b", "scanner": "scanner-primary", "fingerprint": "62807d256551228a", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/pages/admin/ChangePasswordPage.tsx"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-62807d256551228a", "level": "error", "message": {"text": "Possible secret in client/src/pages/admin/ChangePasswordPage.tsx"}, "properties": {"repobilityId": "6aec08585774456b", "scanner": "scanner-primary", "fingerprint": "62807d256551228a", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/pages/admin/ChangePasswordPage.tsx"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-62807d256551228a", "level": "error", "message": {"text": "Possible secret in client/src/pages/admin/ChangePasswordPage.tsx"}, "properties": {"repobilityId": "6aec08585774456b", "scanner": "scanner-primary", "fingerprint": "62807d256551228a", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/pages/admin/ChangePasswordPage.tsx"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-62807d256551228a", "level": "error", "message": {"text": "Possible secret in client/src/pages/admin/ChangePasswordPage.tsx"}, "properties": {"repobilityId": "6aec08585774456b", "scanner": "scanner-primary", "fingerprint": "62807d256551228a", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/pages/admin/ChangePasswordPage.tsx"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-62807d256551228a", "level": "error", "message": {"text": "Possible secret in client/src/pages/admin/ChangePasswordPage.tsx"}, "properties": {"repobilityId": "6aec08585774456b", "scanner": "scanner-primary", "fingerprint": "62807d256551228a", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/pages/admin/ChangePasswordPage.tsx"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-b2af409e094c994f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check-schema-drift.mjs:45"}, "properties": {"repobilityId": "5536b31057fe129d", "scanner": "scanner-primary", "fingerprint": "b2af409e094c994f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-schema-drift.mjs"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-3bc238773ba12e8b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/post-deploy-verify.mjs:20"}, "properties": {"repobilityId": "b980072aab41c341", "scanner": "scanner-primary", "fingerprint": "3bc238773ba12e8b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/post-deploy-verify.mjs"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-d09d3bdd8b7475a2", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/staging-gate/push-to-staging.mjs:24"}, "properties": {"repobilityId": "501751916a51dd78", "scanner": "scanner-primary", "fingerprint": "d09d3bdd8b7475a2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/staging-gate/push-to-staging.mjs"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-37189b94f66277d1", "level": "error", "message": {"text": "Possible secret in scripts/load/README.md"}, "properties": {"repobilityId": "06add292e3dcd2c5", "scanner": "scanner-primary", "fingerprint": "37189b94f66277d1", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/load/README.md"}, "region": {"startLine": 90}}}]}, {"ruleId": "scanner-1ebcb1802ad5ead5", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in script/build.ts:4"}, "properties": {"repobilityId": "5fa6a19deff99fff", "scanner": "scanner-primary", "fingerprint": "1ebcb1802ad5ead5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "script/build.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-910908cb913bb7a2", "level": "error", "message": {"text": "Possible secret in server/auditRoutes.ts"}, "properties": {"repobilityId": "9be2bd2805ea62e5", "scanner": "scanner-primary", "fingerprint": "910908cb913bb7a2", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/auditRoutes.ts"}, "region": {"startLine": 1447}}}]}, {"ruleId": "scanner-c6631a84bab213b9", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in server/exec-server.ts:58"}, "properties": {"repobilityId": "772f2667ccd68d13", "scanner": "scanner-primary", "fingerprint": "c6631a84bab213b9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/exec-server.ts"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-8ef96d77a2575084", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/exec-server.ts:3"}, "properties": {"repobilityId": "e2aef01f1b0ec6a9", "scanner": "scanner-primary", "fingerprint": "8ef96d77a2575084", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/exec-server.ts"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-2956d4eb4b93c9f0", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/bootstrapDoppler.ts:30"}, "properties": {"repobilityId": "324a9eb6d78f8014", "scanner": "scanner-primary", "fingerprint": "2956d4eb4b93c9f0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/bootstrapDoppler.ts"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-b46671971728de64", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in server/routes/serviceAreaMapRoutes.ts:580"}, "properties": {"repobilityId": "6c3da76a24eeb00b", "scanner": "scanner-primary", "fingerprint": "b46671971728de64", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/routes/serviceAreaMapRoutes.ts"}, "region": {"startLine": 580}}}]}, {"ruleId": "scanner-97f023cf971c4d7d", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in server/routes/reviewPublicRoutes.ts:225"}, "properties": {"repobilityId": "df6cbedc8be60e90", "scanner": "scanner-primary", "fingerprint": "97f023cf971c4d7d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/routes/reviewPublicRoutes.ts"}, "region": {"startLine": 225}}}]}, {"ruleId": "scanner-c1b37a8b3e92c515", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in server/routes/widgetRoutes.ts:244"}, "properties": {"repobilityId": "fc726203c40325a0", "scanner": "scanner-primary", "fingerprint": "c1b37a8b3e92c515", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/routes/widgetRoutes.ts"}, "region": {"startLine": 244}}}]}, {"ruleId": "scanner-8ed99f4f5f8f3069", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in server/routes/widgetRoutes.ts:50"}, "properties": {"repobilityId": "8db9922c22f66966", "scanner": "scanner-primary", "fingerprint": "8ed99f4f5f8f3069", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/routes/widgetRoutes.ts"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-bbb07a95cf651f77", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in server/routes/widgetSchedulingRoutes.ts:110"}, "properties": {"repobilityId": "db6bc66d0bbb9531", "scanner": "scanner-primary", "fingerprint": "bbb07a95cf651f77", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/routes/widgetSchedulingRoutes.ts"}, "region": {"startLine": 110}}}]}, {"ruleId": "scanner-11e53984212a46c0", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in server/routes/reviewFunnelRoutes.ts:50"}, "properties": {"repobilityId": "afd10444dd001537", "scanner": "scanner-primary", "fingerprint": "11e53984212a46c0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/routes/reviewFunnelRoutes.ts"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-f67195c58be5542b", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in server/routes/widgetFreetoolsRoutes.ts:95"}, "properties": {"repobilityId": "7060f399667b1339", "scanner": "scanner-primary", "fingerprint": "f67195c58be5542b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/routes/widgetFreetoolsRoutes.ts"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-20eddda96e378f1d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/replit_integrations/audio/client.ts:3"}, "properties": {"repobilityId": "a9dd61daa66d6e9c", "scanner": "scanner-primary", "fingerprint": "20eddda96e378f1d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/replit_integrations/audio/client.ts"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-92cd51cfe02ee7ba", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/services/contentflow/videoStitcher/stitcher.test.ts:39"}, "properties": {"repobilityId": "39254ad617a2bbb5", "scanner": "scanner-primary", "fingerprint": "92cd51cfe02ee7ba", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/services/contentflow/videoStitcher/stitcher.test.ts"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-0f755cf80385dc77", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/services/contentflow/videoStitcher/ffmpegStitcher.ts:32"}, "properties": {"repobilityId": "be067ed546f96735", "scanner": "scanner-primary", "fingerprint": "0f755cf80385dc77", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/services/contentflow/videoStitcher/ffmpegStitcher.ts"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-6fdd5ee9eaf6b855", "level": "warning", "message": {"text": "Insecure pattern 'weak_hash' in server/services/socialSync/metaSignedRequest.test.ts:93"}, "properties": {"repobilityId": "60a814343e3519c8", "scanner": "scanner-primary", "fingerprint": "6fdd5ee9eaf6b855", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "weak_hash"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/services/socialSync/metaSignedRequest.test.ts"}, "region": {"startLine": 93}}}]}, {"ruleId": "scanner-f94858e55c5a76f0", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .github/workflows/post-deploy-watchdog.yml:410"}, "properties": {"repobilityId": "bc29361b31a60b7e", "scanner": "scanner-primary", "fingerprint": "f94858e55c5a76f0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/post-deploy-watchdog.yml"}, "region": {"startLine": 410}}}]}, {"ruleId": "scanner-1268c919c5190000", "level": "note", "message": {"text": "Insecure pattern 'document_write' in attached_assets/UX_Research_&_Design_Testing_Platform___Optimal_Workshop_1772074376900.html:930"}, "properties": {"repobilityId": "e5aa8308b70839bf", "scanner": "scanner-primary", "fingerprint": "1268c919c5190000", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "attached_assets/UX_Research_&_Design_Testing_Platform___Optimal_Workshop_1772074376900.html"}, "region": {"startLine": 930}}}]}, {"ruleId": "scanner-97a99da461adb561", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in attached_assets/UX_Research_&_Design_Testing_Platform___Optimal_Workshop_1772074376900.html:877"}, "properties": {"repobilityId": "a614935bb74e815a", "scanner": "scanner-primary", "fingerprint": "97a99da461adb561", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "attached_assets/UX_Research_&_Design_Testing_Platform___Optimal_Workshop_1772074376900.html"}, "region": {"startLine": 877}}}]}, {"ruleId": "scanner-f24a25c1b71ca564", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3a2271a80fdb72bc", "scanner": "scanner-primary", "fingerprint": "f24a25c1b71ca564", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/post-deploy.yml"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-397ffb69fd282511", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "15abec6c1167df91", "scanner": "scanner-primary", "fingerprint": "397ffb69fd282511", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/audit.yml"}, "region": {"startLine": 165}}}]}, {"ruleId": "scanner-662882381f0f4033", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "71f9b1c83f36d643", "scanner": "scanner-primary", "fingerprint": "662882381f0f4033", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/audit.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cc6e77416e7c6563", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a8ccb992e98c842c", "scanner": "scanner-primary", "fingerprint": "cc6e77416e7c6563", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/staging-gate.yml"}, "region": {"startLine": 108}}}]}, {"ruleId": "scanner-cc6e77416e7c6563", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fb90d5edc76116b6", "scanner": "scanner-primary", "fingerprint": "cc6e77416e7c6563", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/staging-gate.yml"}, "region": {"startLine": 188}}}]}, {"ruleId": "scanner-cc6e77416e7c6563", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a8ccb992e98c842c", "scanner": "scanner-primary", "fingerprint": "cc6e77416e7c6563", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/staging-gate.yml"}, "region": {"startLine": 202}}}]}, {"ruleId": "scanner-37bfcdc630821b59", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "18e7d196412ca52d", "scanner": "scanner-primary", "fingerprint": "37bfcdc630821b59", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/staging-gate.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-50e57f13ec325b3f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "50648a67bb7137aa", "scanner": "scanner-primary", "fingerprint": "50e57f13ec325b3f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/post-deploy-watchdog.yml"}, "region": {"startLine": 184}}}]}, {"ruleId": "scanner-50e57f13ec325b3f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5a390c02b5e6d5e3", "scanner": "scanner-primary", "fingerprint": "50e57f13ec325b3f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/post-deploy-watchdog.yml"}, "region": {"startLine": 212}}}]}, {"ruleId": "scanner-50e57f13ec325b3f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "50648a67bb7137aa", "scanner": "scanner-primary", "fingerprint": "50e57f13ec325b3f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/post-deploy-watchdog.yml"}, "region": {"startLine": 314}}}]}, {"ruleId": "scanner-50e57f13ec325b3f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5a390c02b5e6d5e3", "scanner": "scanner-primary", "fingerprint": "50e57f13ec325b3f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/post-deploy-watchdog.yml"}, "region": {"startLine": 323}}}]}, {"ruleId": "scanner-50e57f13ec325b3f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5a390c02b5e6d5e3", "scanner": "scanner-primary", "fingerprint": "50e57f13ec325b3f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/post-deploy-watchdog.yml"}, "region": {"startLine": 399}}}]}, {"ruleId": "scanner-ef6ee0832fe4f5f6", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "5ad2a1f8af332ad5", "scanner": "scanner-primary", "fingerprint": "ef6ee0832fe4f5f6", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/post-deploy-watchdog.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ce947a6eaf517a4c", "level": "note", "message": {"text": "Very large file: client/src/App.tsx (835 lines)"}, "properties": {"repobilityId": "3a8398c21f98342b", "scanner": "scanner-primary", "fingerprint": "ce947a6eaf517a4c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-25afc61f03047bba", "level": "note", "message": {"text": "Very large file: client/src/components/ai/AIChatBubble.tsx (1418 lines)"}, "properties": {"repobilityId": "4283a6c82ad74970", "scanner": "scanner-primary", "fingerprint": "25afc61f03047bba", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4679357664e28ab7", "level": "note", "message": {"text": "Very large file: client/src/components/quote-widget/AdvancedCalculator.tsx (5022 lines)"}, "properties": {"repobilityId": "e415e7a76bb9fa23", "scanner": "scanner-primary", "fingerprint": "4679357664e28ab7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-84db65914e773ee4", "level": "note", "message": {"text": "Very large file: client/src/components/marketing/TradeLineHeroPhone.tsx (1314 lines)"}, "properties": {"repobilityId": "572822a65465cce7", "scanner": "scanner-primary", "fingerprint": "84db65914e773ee4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6cb9419a62a80e32", "level": "note", "message": {"text": "Very large file: client/src/components/marketing/competeVariants.tsx (1757 lines)"}, "properties": {"repobilityId": "1098f7c5af5af098", "scanner": "scanner-primary", "fingerprint": "6cb9419a62a80e32", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-dc0e1a237cce06a2", "level": "note", "message": {"text": "Very large file: client/src/components/marketing/SelfServiceDragDrop.tsx (2940 lines)"}, "properties": {"repobilityId": "c744e344c01148c2", "scanner": "scanner-primary", "fingerprint": "dc0e1a237cce06a2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e1103a18e40bc9ce", "level": "note", "message": {"text": "Very large file: client/src/components/admin/MapguardOpsTab.tsx (1149 lines)"}, "properties": {"repobilityId": "e1a9a5f076358e30", "scanner": "scanner-primary", "fingerprint": "e1103a18e40bc9ce", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6ff216e7ce03bf91", "level": "note", "message": {"text": "Very large file: client/src/components/admin/AdminCopilot.tsx (1523 lines)"}, "properties": {"repobilityId": "b436bed352249792", "scanner": "scanner-primary", "fingerprint": "6ff216e7ce03bf91", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d3c5514254b65eed", "level": "note", "message": {"text": "Very large file: client/src/components/admin/SocialSyncTab.tsx (1767 lines)"}, "properties": {"repobilityId": "327da0f56d8dc109", "scanner": "scanner-primary", "fingerprint": "d3c5514254b65eed", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ef656b31dea98671", "level": "note", "message": {"text": "Very large file: client/src/components/admin/AdminLayout.tsx (1611 lines)"}, "properties": {"repobilityId": "f875dc7569cc8672", "scanner": "scanner-primary", "fingerprint": "ef656b31dea98671", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8a83f6297adff3cd", "level": "note", "message": {"text": "Very large file: client/src/components/portal/PortalChatWidget.tsx (1253 lines)"}, "properties": {"repobilityId": "a16c2c093f0cbd52", "scanner": "scanner-primary", "fingerprint": "8a83f6297adff3cd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-02156ac9a0417814", "level": "note", "message": {"text": "Very large file: client/src/components/wizard/elfsight/FieldRow.tsx (2242 lines)"}, "properties": {"repobilityId": "ff06840ad1f74035", "scanner": "scanner-primary", "fingerprint": "02156ac9a0417814", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-599831e94d7162ff", "level": "note", "message": {"text": "Very large file: client/src/components/wizard/elfsight/AIBubble.tsx (2375 lines)"}, "properties": {"repobilityId": "38cecfba78da82f0", "scanner": "scanner-primary", "fingerprint": "599831e94d7162ff", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0efb8344467b6b94", "level": "note", "message": {"text": "Very large file: client/src/components/wizard/elfsight/ActionTab.tsx (1728 lines)"}, "properties": {"repobilityId": "02e4ccabc52c9ca3", "scanner": "scanner-primary", "fingerprint": "0efb8344467b6b94", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2f513d02b52e62de", "level": "note", "message": {"text": "Very large file: client/src/components/wizard/elfsight/WizardShell.tsx (3762 lines)"}, "properties": {"repobilityId": "242d03416829f2ab", "scanner": "scanner-primary", "fingerprint": "2f513d02b52e62de", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c27bc7b16adf5ee6", "level": "note", "message": {"text": "Very large file: client/src/components/wizard/elfsight/MobileBottomSheet.tsx (1053 lines)"}, "properties": {"repobilityId": "ed622b67449d5233", "scanner": "scanner-primary", "fingerprint": "c27bc7b16adf5ee6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8da07ab514268a8f", "level": "note", "message": {"text": "Very large file: client/src/components/wizard/elfsight/InstallTab.tsx (1533 lines)"}, "properties": {"repobilityId": "3c27e915cfdf0e54", "scanner": "scanner-primary", "fingerprint": "8da07ab514268a8f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ec8f8f3828c70721", "level": "note", "message": {"text": "Very large file: client/src/components/wizard/elfsight/PreviewPane.tsx (4962 lines)"}, "properties": {"repobilityId": "8bfe9cbbc9e3dd78", "scanner": "scanner-primary", "fingerprint": "ec8f8f3828c70721", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e6d113e12391d26b", "level": "note", "message": {"text": "Very large file: client/src/components/wizard/elfsight/StyleTab.tsx (4142 lines)"}, "properties": {"repobilityId": "2195acddb76278e5", "scanner": "scanner-primary", "fingerprint": "e6d113e12391d26b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-59abd0a52bc66e82", "level": "note", "message": {"text": "Very large file: client/src/pages/PricingUnified.tsx (1857 lines)"}, "properties": {"repobilityId": "330645218a0c0fb1", "scanner": "scanner-primary", "fingerprint": "59abd0a52bc66e82", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-40c91805e0b95ca6", "level": "note", "message": {"text": "Very large file: client/src/pages/dashboard.tsx (2108 lines)"}, "properties": {"repobilityId": "ad055f3bd68fc623", "scanner": "scanner-primary", "fingerprint": "40c91805e0b95ca6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-86cc7f3c2a668a4c", "level": "note", "message": {"text": "Very large file: client/src/pages/solutions/SolutionPage.tsx (1361 lines)"}, "properties": {"repobilityId": "a3f4d56bd3da887f", "scanner": "scanner-primary", "fingerprint": "86cc7f3c2a668a4c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8551ab73726ac0fe", "level": "note", "message": {"text": "Very large file: client/src/pages/marketing/SharedAuditReport.tsx (1144 lines)"}, "properties": {"repobilityId": "d21f28dac11d7609", "scanner": "scanner-primary", "fingerprint": "8551ab73726ac0fe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5d23830ff6a16960", "level": "note", "message": {"text": "Very large file: client/src/pages/marketing/template-detail.tsx (1642 lines)"}, "properties": {"repobilityId": "58cff0988b78d16b", "scanner": "scanner-primary", "fingerprint": "5d23830ff6a16960", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9f5044dd955901fa", "level": "note", "message": {"text": "Very large file: client/src/pages/marketing/ApiDocsPage.tsx (1617 lines)"}, "properties": {"repobilityId": "eb423a6d276d87d6", "scanner": "scanner-primary", "fingerprint": "9f5044dd955901fa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e8a5838f85109bd5", "level": "note", "message": {"text": "Very large file: client/src/pages/marketing/FreeAudit.tsx (1856 lines)"}, "properties": {"repobilityId": "0d01248c70c48f3b", "scanner": "scanner-primary", "fingerprint": "e8a5838f85109bd5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-df4e4a5308943d38", "level": "note", "message": {"text": "Very large file: client/src/pages/marketing/ReportView.tsx (4191 lines)"}, "properties": {"repobilityId": "d34ea916c3ab4fd4", "scanner": "scanner-primary", "fingerprint": "df4e4a5308943d38", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d1b7dee4d4c03b85", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/ClientDetailPage.tsx (3209 lines)"}, "properties": {"repobilityId": "c3cf2240b1dcb611", "scanner": "scanner-primary", "fingerprint": "d1b7dee4d4c03b85", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9e7e0c479277ec4e", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/SuppliersPage.tsx (1216 lines)"}, "properties": {"repobilityId": "3b657fb177d0594c", "scanner": "scanner-primary", "fingerprint": "9e7e0c479277ec4e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3d08c15068881c59", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/UiPrimitivesDemo.tsx (1514 lines)"}, "properties": {"repobilityId": "defa5d9ffd29b654", "scanner": "scanner-primary", "fingerprint": "3d08c15068881c59", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-af88a07445da84ff", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/ProductDetailPage.tsx (2001 lines)"}, "properties": {"repobilityId": "34d2807f554c040a", "scanner": "scanner-primary", "fingerprint": "af88a07445da84ff", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3a21ffd56941b135", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/CommunicationsPage.tsx (1998 lines)"}, "properties": {"repobilityId": "a716381eab947f40", "scanner": "scanner-primary", "fingerprint": "3a21ffd56941b135", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-29ab80abd75acb99", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/MobilePreview/PreviewScreens.tsx (1378 lines)"}, "properties": {"repobilityId": "71d593271a0f287b", "scanner": "scanner-primary", "fingerprint": "29ab80abd75acb99", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-734e4ff31ce8c648", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/outbound/ProspectsPage.tsx (1122 lines)"}, "properties": {"repobilityId": "2a0ae0ed094a75fb", "scanner": "scanner-primary", "fingerprint": "734e4ff31ce8c648", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-60769d2158755fef", "level": "note", "message": {"text": "Very large file: client/src/pages/portal/PortalSettings.tsx (2175 lines)"}, "properties": {"repobilityId": "d8235d409806bf59", "scanner": "scanner-primary", "fingerprint": "60769d2158755fef", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8c9f012baabae42b", "level": "note", "message": {"text": "Very large file: client/src/pages/portal/PortalMapguard.tsx (1248 lines)"}, "properties": {"repobilityId": "4cb6861a1e3ec2fd", "scanner": "scanner-primary", "fingerprint": "8c9f012baabae42b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e4b63b98abcc54e0", "level": "note", "message": {"text": "Very large file: client/src/pages/portal/PortalServiceDetail.tsx (1346 lines)"}, "properties": {"repobilityId": "09d0a3eb6ae5e007", "scanner": "scanner-primary", "fingerprint": "e4b63b98abcc54e0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1dfd975391e87794", "level": "note", "message": {"text": "Very large file: client/src/pages/portal/PortalReviews.tsx (1112 lines)"}, "properties": {"repobilityId": "f6835bf1dd5a5fe3", "scanner": "scanner-primary", "fingerprint": "1dfd975391e87794", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2d1150eab24b1e44", "level": "note", "message": {"text": "Very large file: client/src/pages/products/EffortelProductPage.tsx (2045 lines)"}, "properties": {"repobilityId": "3a436b12a64d413e", "scanner": "scanner-primary", "fingerprint": "2d1150eab24b1e44", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fbe7a29398bca1c7", "level": "note", "message": {"text": "Very large file: client/src/pages/products/quotequick/BuildWithAi.tsx (1355 lines)"}, "properties": {"repobilityId": "6e60b4a57f0d3f48", "scanner": "scanner-primary", "fingerprint": "fbe7a29398bca1c7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d7b6b312b85a921b", "level": "note", "message": {"text": "Very large file: shared/templatePresets.ts (10817 lines)"}, "properties": {"repobilityId": "614cf7d86b5f97e2", "scanner": "scanner-primary", "fingerprint": "d7b6b312b85a921b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ae1adc45258c16e2", "level": "note", "message": {"text": "Very large file: shared/contentflow/promptLibrary.ts (1258 lines)"}, "properties": {"repobilityId": "0cc14d6e60633a2f", "scanner": "scanner-primary", "fingerprint": "ae1adc45258c16e2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a31df9701bb07909", "level": "note", "message": {"text": "Very large file: shared/schemas/adminCrm.ts (1261 lines)"}, "properties": {"repobilityId": "83cc3fb927e78ba9", "scanner": "scanner-primary", "fingerprint": "a31df9701bb07909", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-304baf5ba4fcb5cf", "level": "note", "message": {"text": "Very large file: shared/schemas/db.ts (1457 lines)"}, "properties": {"repobilityId": "1a290d23c4536458", "scanner": "scanner-primary", "fingerprint": "304baf5ba4fcb5cf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-07c91a40246e5969", "level": "note", "message": {"text": "Very large file: server/auditRoutes.ts (5414 lines)"}, "properties": {"repobilityId": "1a7b38c8fb93bd25", "scanner": "scanner-primary", "fingerprint": "07c91a40246e5969", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e58e01ca34bba7ac", "level": "note", "message": {"text": "Very large file: server/storage.ts (2757 lines)"}, "properties": {"repobilityId": "ed0b4d380eb95127", "scanner": "scanner-primary", "fingerprint": "e58e01ca34bba7ac", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5e1280792b779a55", "level": "note", "message": {"text": "Very large file: server/scripts/seed-services.ts (878 lines)"}, "properties": {"repobilityId": "4b13a0eae2ff0f6d", "scanner": "scanner-primary", "fingerprint": "5e1280792b779a55", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-66ca08a79ae4cc02", "level": "note", "message": {"text": "Very large file: server/routes/authRoutes.ts (1943 lines)"}, "properties": {"repobilityId": "c78c1ca24d6d6cd3", "scanner": "scanner-primary", "fingerprint": "66ca08a79ae4cc02", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-70d894df1e994bd2", "level": "note", "message": {"text": "Very large file: server/routes/adminOutboundRoutes.ts (2027 lines)"}, "properties": {"repobilityId": "bec1affcd798cfea", "scanner": "scanner-primary", "fingerprint": "70d894df1e994bd2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8cd1dc3102445e36", "level": "note", "message": {"text": "Very large file: server/routes/tradelineSetupRoutes.ts (1278 lines)"}, "properties": {"repobilityId": "0c676499f9d95b2b", "scanner": "scanner-primary", "fingerprint": "8cd1dc3102445e36", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-be3462d1563775b8", "level": "note", "message": {"text": "Very large file: server/routes/stripeBillingRoutes.ts (1929 lines)"}, "properties": {"repobilityId": "283753ab71af3847", "scanner": "scanner-primary", "fingerprint": "be3462d1563775b8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0e907d640be47f67", "level": "note", "message": {"text": "Very large file: server/routes/contentflowRoutes.ts (1742 lines)"}, "properties": {"repobilityId": "ba8c59aad8378e3a", "scanner": "scanner-primary", "fingerprint": "0e907d640be47f67", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-daa131d6e9686074", "level": "note", "message": {"text": "Very large file: server/routes/aiRoutes.ts (1262 lines)"}, "properties": {"repobilityId": "daeec7897fa45b67", "scanner": "scanner-primary", "fingerprint": "daa131d6e9686074", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7ee9fe510078fe50", "level": "note", "message": {"text": "Very large file: server/routes/bookflowRoutes.ts (1436 lines)"}, "properties": {"repobilityId": "dd3553722f80dc70", "scanner": "scanner-primary", "fingerprint": "7ee9fe510078fe50", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-01a925e7eec9e386", "level": "note", "message": {"text": "Very large file: server/routes/adminCrmRoutes.ts (5101 lines)"}, "properties": {"repobilityId": "3a6c681cc6ccf326", "scanner": "scanner-primary", "fingerprint": "01a925e7eec9e386", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-da23ed72b8b2268a", "level": "note", "message": {"text": "Very large file: server/routes/socialSyncRoutes.ts (1492 lines)"}, "properties": {"repobilityId": "189bfe34d0b59304", "scanner": "scanner-primary", "fingerprint": "da23ed72b8b2268a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0ab8545ef06b4153", "level": "note", "message": {"text": "Very large file: server/routes/freeToolsRoutes.ts (1647 lines)"}, "properties": {"repobilityId": "f00386257dc16c1d", "scanner": "scanner-primary", "fingerprint": "0ab8545ef06b4153", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ef03d208e33e707a", "level": "note", "message": {"text": "Very large file: server/routes/portal/contentflow.ts (2465 lines)"}, "properties": {"repobilityId": "7631f2b35e49d631", "scanner": "scanner-primary", "fingerprint": "ef03d208e33e707a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1274636227abe81b", "level": "note", "message": {"text": "Very large file: server/services/mapguardTaskEngine.ts (1331 lines)"}, "properties": {"repobilityId": "9171b97a9c3f040c", "scanner": "scanner-primary", "fingerprint": "1274636227abe81b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4aef5d6acca99881", "level": "note", "message": {"text": "Very large file: server/services/tradelineTemplates.ts (2257 lines)"}, "properties": {"repobilityId": "5a2866d2c8533776", "scanner": "scanner-primary", "fingerprint": "4aef5d6acca99881", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-753964894ce63d1f", "level": "note", "message": {"text": "Very large file: server/services/vapiService.ts (1615 lines)"}, "properties": {"repobilityId": "2a91d1f5aee4eae2", "scanner": "scanner-primary", "fingerprint": "753964894ce63d1f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-19e8d0919f646b96", "level": "note", "message": {"text": "Very large file: server/services/promptBuilder.ts (1596 lines)"}, "properties": {"repobilityId": "cd8716ca11d5e1af", "scanner": "scanner-primary", "fingerprint": "19e8d0919f646b96", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-201159d3ce4d9c29", "level": "note", "message": {"text": "Very large file: server/services/mapguardMonitor.ts (1222 lines)"}, "properties": {"repobilityId": "fe5558ca19dc3c82", "scanner": "scanner-primary", "fingerprint": "201159d3ce4d9c29", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7c58c443b78b2b86", "level": "note", "message": {"text": "Very large file: server/jobs/scheduler.ts (1576 lines)"}, "properties": {"repobilityId": "725603cb9f3b8385", "scanner": "scanner-primary", "fingerprint": "7c58c443b78b2b86", "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": "e0553f6961d58eaa", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "4bd491d9f56d291a", "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": "d4c3940600aef07d", "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": "52f19b57f06638dd", "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": "5d0930dc47a891ff", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "f1d1c7de4b2bf696", "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": "c6840a76958a7ee2", "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": "409a989e0dfbdf0e", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-122f91b7f2906dc4", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "properties": {"repobilityId": "a2967269048b6a9d", "scanner": "scanner-primary", "fingerprint": "122f91b7f2906dc4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/settings.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-de84b14d70204508", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .cursor/commands/rebuild-section.md"}, "properties": {"repobilityId": "1ac9cc9df4fa1e6c", "scanner": "scanner-primary", "fingerprint": "de84b14d70204508", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "cursor_rule"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".cursor/commands/rebuild-section.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-95baaaaa9e619fae", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .cursor/commands/implement-design.md"}, "properties": {"repobilityId": "94f4b23613541351", "scanner": "scanner-primary", "fingerprint": "95baaaaa9e619fae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "cursor_rule"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".cursor/commands/implement-design.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7b86e9aab2df382b", "level": "none", "message": {"text": "Commented-code block (5 lines) in lighthouserc.cjs:72"}, "properties": {"repobilityId": "b1b96e3548ad9253", "scanner": "scanner-primary", "fingerprint": "7b86e9aab2df382b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0e011d96f7aa8af7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/replit_integrations/audio/useVoiceStream.ts:33"}, "properties": {"repobilityId": "296c3ca111860015", "scanner": "scanner-primary", "fingerprint": "0e011d96f7aa8af7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-74a657f873399b32", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/public/widget/callback.js:127"}, "properties": {"repobilityId": "05a1b17e6f43bbd8", "scanner": "scanner-primary", "fingerprint": "74a657f873399b32", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5fb7a344bca16dd3", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/public/widget/v1.js:12"}, "properties": {"repobilityId": "3357d60a93c0699e", "scanner": "scanner-primary", "fingerprint": "5fb7a344bca16dd3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-34cde9d056236c35", "level": "none", "message": {"text": "Commented-code block (9 lines) in client/src/config/products.ts:117"}, "properties": {"repobilityId": "ee6d3ac41b39a244", "scanner": "scanner-primary", "fingerprint": "34cde9d056236c35", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23e709f14456e973", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/CheckoutModal.tsx:122"}, "properties": {"repobilityId": "647aeaa23762575b", "scanner": "scanner-primary", "fingerprint": "23e709f14456e973", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7849c4fc09e5bca6", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/contentflow/ContentFlowPreviewModal.tsx:128"}, "properties": {"repobilityId": "f40988bcaf78cea1", "scanner": "scanner-primary", "fingerprint": "7849c4fc09e5bca6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-28755a241b7a1152", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/contentflow/ContentFlowSettingsPanel.tsx:58"}, "properties": {"repobilityId": "b89f8920023beae1", "scanner": "scanner-primary", "fingerprint": "28755a241b7a1152", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3a84d0afbf019b63", "level": "note", "message": {"text": "Legacy-named symbol `queue_backup` in client/src/components/webcare/plainLanguage.ts:81"}, "properties": {"repobilityId": "217789e829efd6a4", "scanner": "scanner-primary", "fingerprint": "3a84d0afbf019b63", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-144c6f3953607777", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/ai/AIChatBubble.tsx:73"}, "properties": {"repobilityId": "264f73fe45c23449", "scanner": "scanner-primary", "fingerprint": "144c6f3953607777", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a6cea8361c1c4529", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/shared/AppErrorBoundary.tsx:60"}, "properties": {"repobilityId": "5a5abefd44a27165", "scanner": "scanner-primary", "fingerprint": "a6cea8361c1c4529", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aa9156e218653db5", "level": "none", "message": {"text": "Commented-code block (9 lines) in client/src/components/shared/TemplateThumbnail.tsx:6"}, "properties": {"repobilityId": "c2b20fa4eefcaafa", "scanner": "scanner-primary", "fingerprint": "aa9156e218653db5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-89c538465b61eec5", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/ui/navbar-menu.tsx:20"}, "properties": {"repobilityId": "7981c793e19eafeb", "scanner": "scanner-primary", "fingerprint": "89c538465b61eec5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1efe11c33a3ca6b8", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/ui/visual-primitives/Sparkline.tsx:163"}, "properties": {"repobilityId": "5f5cf00b1c9ddea5", "scanner": "scanner-primary", "fingerprint": "1efe11c33a3ca6b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57d41febcedac89b", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/ui/visual-primitives/KpiGauge.tsx:215"}, "properties": {"repobilityId": "e53916c85c06471d", "scanner": "scanner-primary", "fingerprint": "57d41febcedac89b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-654eb88812ad0fd5", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/components/ui/visual-primitives/AIDraftEditor.tsx:57"}, "properties": {"repobilityId": "884c661f6119f84c", "scanner": "scanner-primary", "fingerprint": "654eb88812ad0fd5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4457c932003bf197", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/components/ui/visual-primitives/OnboardingWalkthrough.tsx:87"}, "properties": {"repobilityId": "04a05941e1962771", "scanner": "scanner-primary", "fingerprint": "4457c932003bf197", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6bfc06622ab47da", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/tradeline/WidgetStylePreviewModal.tsx:62"}, "properties": {"repobilityId": "7d4db9c2ea4a1cdb", "scanner": "scanner-primary", "fingerprint": "f6bfc06622ab47da", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec7256b57db37a42", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/quote-widget/PhotoUploadField.tsx:169"}, "properties": {"repobilityId": "4d3a096432efa208", "scanner": "scanner-primary", "fingerprint": "ec7256b57db37a42", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c3a35e566f84cb1", "level": "none", "message": {"text": "Commented-code block (8 lines) in client/src/components/quote-widget/PremiumAnimations.tsx:245"}, "properties": {"repobilityId": "d6e543350a13b337", "scanner": "scanner-primary", "fingerprint": "7c3a35e566f84cb1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cca4463c64d23e43", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/quote-widget/QuoteWidget.tsx:116"}, "properties": {"repobilityId": "e4898c9ee132f402", "scanner": "scanner-primary", "fingerprint": "cca4463c64d23e43", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b1a341e1eb1988cb", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/quote-widget/DistanceField.tsx:252"}, "properties": {"repobilityId": "f36601b5f9a4499a", "scanner": "scanner-primary", "fingerprint": "b1a341e1eb1988cb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e7c766518d4f83ce", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/quote-widget/DistanceField.tsx:191"}, "properties": {"repobilityId": "96eecee542bcf42d", "scanner": "scanner-primary", "fingerprint": "e7c766518d4f83ce", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cc631d1d242665ba", "level": "none", "message": {"text": "Commented-code block (10 lines) in client/src/components/quote-widget/AdvancedCalculator.tsx:975"}, "properties": {"repobilityId": "53fff16350bb89b0", "scanner": "scanner-primary", "fingerprint": "cc631d1d242665ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3b65c7e309977d7e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/quote-widget/AdvancedCalculator.tsx:3757"}, "properties": {"repobilityId": "62f9790b57db8b77", "scanner": "scanner-primary", "fingerprint": "3b65c7e309977d7e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-084d8cac15b1172b", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/quote-widget/CalculatorLauncher.tsx:362"}, "properties": {"repobilityId": "306edae371a0280a", "scanner": "scanner-primary", "fingerprint": "084d8cac15b1172b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a82397cf32e9f57f", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/quote-widget/WidgetSelect.tsx:98"}, "properties": {"repobilityId": "600242fddaec6c3b", "scanner": "scanner-primary", "fingerprint": "a82397cf32e9f57f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5e8a3a0fbaecf074", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/quote-widget/designTokens.ts:61"}, "properties": {"repobilityId": "2e0e77d2400d799a", "scanner": "scanner-primary", "fingerprint": "5e8a3a0fbaecf074", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd03d2f6b08bb0c1", "level": "none", "message": {"text": "Commented-code block (8 lines) in client/src/components/quote-widget/TierSelector.tsx:73"}, "properties": {"repobilityId": "c93d5b1411b756dd", "scanner": "scanner-primary", "fingerprint": "fd03d2f6b08bb0c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9c5adac70f19f83f", "level": "none", "message": {"text": "Commented-code block (10 lines) in client/src/components/quote-widget/TrustBadgeRow.tsx:202"}, "properties": {"repobilityId": "a0f8afb2dff5716d", "scanner": "scanner-primary", "fingerprint": "9c5adac70f19f83f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ffb01970b377cd9b", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/quote-widget/steps/DepositStep.tsx:8"}, "properties": {"repobilityId": "1e0c1c061ee1af81", "scanner": "scanner-primary", "fingerprint": "ffb01970b377cd9b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-65661eacb4affb0e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/quote-widget/steps/DepositStep.tsx:96"}, "properties": {"repobilityId": "92bf1f65e2c2e806", "scanner": "scanner-primary", "fingerprint": "65661eacb4affb0e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7fb9cea1156b4586", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/quote-widget/steps/BookingStep.tsx:57"}, "properties": {"repobilityId": "ab7f209c65e98beb", "scanner": "scanner-primary", "fingerprint": "7fb9cea1156b4586", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-385af5d2e23ecb05", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/quote-widget/steps/SchedulingStep.tsx:127"}, "properties": {"repobilityId": "1ccf13fc6f981a62", "scanner": "scanner-primary", "fingerprint": "385af5d2e23ecb05", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-239aa2be451fd5b7", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/effortel-blocks/index.tsx:399"}, "properties": {"repobilityId": "07b297fbad10e962", "scanner": "scanner-primary", "fingerprint": "239aa2be451fd5b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a39c3bbaec2fb5c7", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/marketing/FreeToolFormField.tsx:220"}, "properties": {"repobilityId": "b92d32b265e34810", "scanner": "scanner-primary", "fingerprint": "a39c3bbaec2fb5c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a89aa6a0ba55cb04", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/components/marketing/competeVariants.tsx:1166"}, "properties": {"repobilityId": "3660fcec1b8e497d", "scanner": "scanner-primary", "fingerprint": "a89aa6a0ba55cb04", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2039cad8631f198a", "level": "none", "message": {"text": "Commented-code block (8 lines) in client/src/components/marketing/AiReceptionistPreviewModal.tsx:37"}, "properties": {"repobilityId": "5ed998cabb629ce3", "scanner": "scanner-primary", "fingerprint": "2039cad8631f198a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bdd45e365b711204", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/components/marketing/SelfServiceDragDrop.tsx:1267"}, "properties": {"repobilityId": "ca03dd6f8d24474b", "scanner": "scanner-primary", "fingerprint": "bdd45e365b711204", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a5816cdab43d6909", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/marketing/AutomationDiagram.tsx:609"}, "properties": {"repobilityId": "319eea0dd5b8e0a6", "scanner": "scanner-primary", "fingerprint": "a5816cdab43d6909", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-950bf86835b6b34c", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/marketing/TradeLineDemoLauncher.tsx:48"}, "properties": {"repobilityId": "74b8ad35e4bbcde3", "scanner": "scanner-primary", "fingerprint": "950bf86835b6b34c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aacf33ee11401124", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/marketing/navigation/MobileNavItem.tsx:52"}, "properties": {"repobilityId": "c79114df4eb77498", "scanner": "scanner-primary", "fingerprint": "aacf33ee11401124", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bb0ac514c6dd1ef5", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/marketing/navigation/FreeToolsMegaPanel.tsx:132"}, "properties": {"repobilityId": "d9e70f26af6d517e", "scanner": "scanner-primary", "fingerprint": "bb0ac514c6dd1ef5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-edab07e72fde5f34", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/components/marketing/globe/GlobeCanvas.tsx:157"}, "properties": {"repobilityId": "09ecf2f9ce7a9cfc", "scanner": "scanner-primary", "fingerprint": "edab07e72fde5f34", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-37794991ea957126", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/marketing/globe/GlobeCanvas.tsx:195"}, "properties": {"repobilityId": "acce00b2bb35f0f5", "scanner": "scanner-primary", "fingerprint": "37794991ea957126", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7f276181265837c9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/marketing/audit-tabs/SiteSpeedComparisonTab.tsx:203"}, "properties": {"repobilityId": "dbb2bda3db3d1522", "scanner": "scanner-primary", "fingerprint": "7f276181265837c9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8c6da43818c676a4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/ImpersonateBanner.tsx:35"}, "properties": {"repobilityId": "218cda160da437e6", "scanner": "scanner-primary", "fingerprint": "8c6da43818c676a4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ab8fed4c024849ba", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/MapguardOpsTab.tsx:141"}, "properties": {"repobilityId": "fb72bebbd5dd4ea5", "scanner": "scanner-primary", "fingerprint": "ab8fed4c024849ba", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f45eb11ca8bfc084", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/admin/AdminProductPageShell.tsx:187"}, "properties": {"repobilityId": "4a232cc5206548d6", "scanner": "scanner-primary", "fingerprint": "f45eb11ca8bfc084", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-12a89e2b4dd12885", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/AdminCopilot.tsx:798"}, "properties": {"repobilityId": "e206a2960f88d3d8", "scanner": "scanner-primary", "fingerprint": "12a89e2b4dd12885", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-468160d96f1d7045", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/EntityAuditWidget.tsx:72"}, "properties": {"repobilityId": "5b0785b5829d8f7a", "scanner": "scanner-primary", "fingerprint": "468160d96f1d7045", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f4f231540f9ec861", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/admin/AdminLayout.tsx:371"}, "properties": {"repobilityId": "067bdeeca029bf9d", "scanner": "scanner-primary", "fingerprint": "f4f231540f9ec861", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b962eb6d811af31", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/AdminLayout.tsx:631"}, "properties": {"repobilityId": "bd0773433b3ea0b4", "scanner": "scanner-primary", "fingerprint": "7b962eb6d811af31", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dfa06ae2c6d1828d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/quotequick/QuotaMeter.tsx:42"}, "properties": {"repobilityId": "0e064f245cbb72c6", "scanner": "scanner-primary", "fingerprint": "dfa06ae2c6d1828d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-819181dcc065d3a5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/portal/ModeToggle.tsx:28"}, "properties": {"repobilityId": "8d1bb64c16674f8a", "scanner": "scanner-primary", "fingerprint": "819181dcc065d3a5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ed232aebb337c869", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/portal/TradeLinePortalSections.tsx:176"}, "properties": {"repobilityId": "d6c6989302a16b39", "scanner": "scanner-primary", "fingerprint": "ed232aebb337c869", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c6bf93839a324797", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/portal/SmsTemplatesSection.tsx:112"}, "properties": {"repobilityId": "2033642ccc28b806", "scanner": "scanner-primary", "fingerprint": "c6bf93839a324797", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b30a0f7f4b8ef6bd", "level": "none", "message": {"text": "Commented-code block (8 lines) in client/src/components/portal/FirstVisitTooltip.tsx:125"}, "properties": {"repobilityId": "dae8c892d8001277", "scanner": "scanner-primary", "fingerprint": "b30a0f7f4b8ef6bd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d742f40b2023cd7c", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/portal/PortalLayout.tsx:340"}, "properties": {"repobilityId": "eb40a620828017b0", "scanner": "scanner-primary", "fingerprint": "d742f40b2023cd7c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53ebc97fc2584406", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/portal/PortalLayout.tsx:72"}, "properties": {"repobilityId": "b7100c7dd2580acd", "scanner": "scanner-primary", "fingerprint": "53ebc97fc2584406", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-88f2eb17de88fd7c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/portal/UpsellCard.tsx:34"}, "properties": {"repobilityId": "ad127208400201ea", "scanner": "scanner-primary", "fingerprint": "88f2eb17de88fd7c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aac646fd5f5f5919", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/components/wizard/MinimizedWizardBadge.tsx:3"}, "properties": {"repobilityId": "ea851f69c4d954ce", "scanner": "scanner-primary", "fingerprint": "aac646fd5f5f5919", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bba45273958083f0", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/FormulaEditor.tsx:8"}, "properties": {"repobilityId": "f6b70d42773f8fb6", "scanner": "scanner-primary", "fingerprint": "bba45273958083f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f05579d2facbef98", "level": "none", "message": {"text": "Commented-code block (8 lines) in client/src/components/wizard/elfsight/SettingsTab.tsx:11"}, "properties": {"repobilityId": "71862a0d8846eac4", "scanner": "scanner-primary", "fingerprint": "f05579d2facbef98", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-65e5e651a9719e03", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/BottomTabBar.tsx:3"}, "properties": {"repobilityId": "80a69136b5bdcdb5", "scanner": "scanner-primary", "fingerprint": "65e5e651a9719e03", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c2b430aeea27f8f8", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/TemplateMockup.tsx:3"}, "properties": {"repobilityId": "f0fae33f6aa09d6b", "scanner": "scanner-primary", "fingerprint": "c2b430aeea27f8f8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-581ed822da5563ff", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/HostedPageSection.tsx:8"}, "properties": {"repobilityId": "5d80106591c5d98b", "scanner": "scanner-primary", "fingerprint": "581ed822da5563ff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f672e2ddab4d902d", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/EditorTabs.tsx:8"}, "properties": {"repobilityId": "9a40fc046a72d1d1", "scanner": "scanner-primary", "fingerprint": "f672e2ddab4d902d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bfcffb55344d4b91", "level": "note", "message": {"text": "Legacy-named symbol `_optionIdFromLabel_unused` in client/src/components/wizard/elfsight/FieldRow.tsx:64"}, "properties": {"repobilityId": "26cf1261c4657be4", "scanner": "scanner-primary", "fingerprint": "bfcffb55344d4b91", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-01a517dbe608ef8c", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/FieldRow.tsx:3"}, "properties": {"repobilityId": "a5f668eac74bd292", "scanner": "scanner-primary", "fingerprint": "01a517dbe608ef8c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e71ffecd4214ee65", "level": "none", "message": {"text": "Commented-code block (9 lines) in client/src/components/wizard/elfsight/HeaderResultsPanel.tsx:14"}, "properties": {"repobilityId": "ce8ec88276959594", "scanner": "scanner-primary", "fingerprint": "e71ffecd4214ee65", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e03c2c261a7a9fb", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/components/wizard/elfsight/appleEditor.ts:3"}, "properties": {"repobilityId": "8227d6888a0115b9", "scanner": "scanner-primary", "fingerprint": "3e03c2c261a7a9fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1174fb76a05a9003", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/aiToolApplier.ts:457"}, "properties": {"repobilityId": "a655e49d8acbddd0", "scanner": "scanner-primary", "fingerprint": "1174fb76a05a9003", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-acfdf5771c58b3c6", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/InlineStyleToolbar.tsx:3"}, "properties": {"repobilityId": "0218f3ab47bb1a55", "scanner": "scanner-primary", "fingerprint": "acfdf5771c58b3c6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-10430f3387a07f4a", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/EditorTopBar.tsx:4"}, "properties": {"repobilityId": "caaba8a4c43e3829", "scanner": "scanner-primary", "fingerprint": "10430f3387a07f4a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e4c294a276d0db9e", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/richTextSanitize.ts:3"}, "properties": {"repobilityId": "a996d5819d424ef5", "scanner": "scanner-primary", "fingerprint": "e4c294a276d0db9e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a43be282be7fa0c8", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/components/wizard/elfsight/InfoCue.tsx:72"}, "properties": {"repobilityId": "2ddbbd1431f40b91", "scanner": "scanner-primary", "fingerprint": "a43be282be7fa0c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aedd6f1959e715bb", "level": "none", "message": {"text": "Commented-code block (9 lines) in client/src/components/wizard/elfsight/TemplateGallery.tsx:21"}, "properties": {"repobilityId": "727a3434b5b0e83a", "scanner": "scanner-primary", "fingerprint": "aedd6f1959e715bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1a597d4a65d1a86a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/wizard/elfsight/TemplateGallery.tsx:61"}, "properties": {"repobilityId": "c7fb8ab050ff2adb", "scanner": "scanner-primary", "fingerprint": "1a597d4a65d1a86a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ab59d793fa108659", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/AIBubble.tsx:420"}, "properties": {"repobilityId": "44db12366f82c6c4", "scanner": "scanner-primary", "fingerprint": "ab59d793fa108659", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23c0a46d5a8d20cc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/wizard/elfsight/AIBubble.tsx:711"}, "properties": {"repobilityId": "6488b058e6e4b4c1", "scanner": "scanner-primary", "fingerprint": "23c0a46d5a8d20cc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c5de4bc38c859f02", "level": "none", "message": {"text": "Commented-code block (8 lines) in client/src/components/wizard/elfsight/InstallGuideModal.tsx:197"}, "properties": {"repobilityId": "55c96bbb9834fb65", "scanner": "scanner-primary", "fingerprint": "c5de4bc38c859f02", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4c76908e3539be89", "level": "none", "message": {"text": "Commented-code block (13 lines) in client/src/components/wizard/elfsight/ActionTab.tsx:8"}, "properties": {"repobilityId": "3a4e42665732970c", "scanner": "scanner-primary", "fingerprint": "4c76908e3539be89", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c3762a5ecd86bd72", "level": "none", "message": {"text": "Commented-code block (8 lines) in client/src/components/wizard/elfsight/AddFieldMenu.tsx:3"}, "properties": {"repobilityId": "adb9190fa188364e", "scanner": "scanner-primary", "fingerprint": "c3762a5ecd86bd72", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7065fdc554324b77", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/StepContentPanel.tsx:7"}, "properties": {"repobilityId": "a14f80ad8882271f", "scanner": "scanner-primary", "fingerprint": "7065fdc554324b77", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a3c7a291d9d5e5c7", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/CalculationRow.tsx:7"}, "properties": {"repobilityId": "6bc16ad736abf917", "scanner": "scanner-primary", "fingerprint": "a3c7a291d9d5e5c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1a0a83427d29cc01", "level": "none", "message": {"text": "Commented-code block (9 lines) in client/src/components/wizard/elfsight/WizardShell.tsx:3"}, "properties": {"repobilityId": "c7da3f973f6e6fc8", "scanner": "scanner-primary", "fingerprint": "1a0a83427d29cc01", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fedebcbb5682d3c2", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/MobileBottomSheet.tsx:3"}, "properties": {"repobilityId": "7df82c1e785ec6ea", "scanner": "scanner-primary", "fingerprint": "fedebcbb5682d3c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-895ae37db8b0b50e", "level": "none", "message": {"text": "Commented-code block (12 lines) in client/src/components/wizard/elfsight/InstallTab.tsx:3"}, "properties": {"repobilityId": "ef0ca6013a9727bc", "scanner": "scanner-primary", "fingerprint": "895ae37db8b0b50e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff5b9c74f12f5bbe", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/components/wizard/elfsight/ComponentPicker.tsx:7"}, "properties": {"repobilityId": "a53f523d1aea0c9f", "scanner": "scanner-primary", "fingerprint": "ff5b9c74f12f5bbe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a6eb8eb81ccad2d8", "level": "note", "message": {"text": "Legacy-named symbol `scaleOld` in client/src/components/wizard/elfsight/PreviewPane.tsx:1205"}, "properties": {"repobilityId": "95606e5ec3b58127", "scanner": "scanner-primary", "fingerprint": "a6eb8eb81ccad2d8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8812893e3f6d97d8", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/PreviewPane.tsx:3"}, "properties": {"repobilityId": "9bbfd1230df8bdf2", "scanner": "scanner-primary", "fingerprint": "8812893e3f6d97d8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2971c6a9fcbaed35", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/PreviewOverlay.tsx:3"}, "properties": {"repobilityId": "8d97303e86afdb44", "scanner": "scanner-primary", "fingerprint": "2971c6a9fcbaed35", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bddfc1f261f496e6", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/CalculationsPanel.tsx:231"}, "properties": {"repobilityId": "e91ff9ced7852986", "scanner": "scanner-primary", "fingerprint": "bddfc1f261f496e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-63ced2d0187512ce", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/imageTemplateToConfig.ts:148"}, "properties": {"repobilityId": "434d9fd080f91f37", "scanner": "scanner-primary", "fingerprint": "63ced2d0187512ce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-991d165e987e1679", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/RichTextField.tsx:3"}, "properties": {"repobilityId": "cc8f136413aeec97", "scanner": "scanner-primary", "fingerprint": "991d165e987e1679", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-94ebfe39f363a21d", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/FieldsPanel.tsx:7"}, "properties": {"repobilityId": "44ae93862ec383f0", "scanner": "scanner-primary", "fingerprint": "94ebfe39f363a21d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-343947c933f0be9d", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/components/wizard/elfsight/useFoldablePanels.ts:7"}, "properties": {"repobilityId": "07ea12dc2c6b70d3", "scanner": "scanner-primary", "fingerprint": "343947c933f0be9d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-155c4e22cf742a17", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/selection.tsx:3"}, "properties": {"repobilityId": "84cb4020bdedcf98", "scanner": "scanner-primary", "fingerprint": "155c4e22cf742a17", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a82fd0230291df66", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/StyleTab.tsx:3"}, "properties": {"repobilityId": "2f9a1ed3495125d9", "scanner": "scanner-primary", "fingerprint": "a82fd0230291df66", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c0fbcdcc0007130", "level": "none", "message": {"text": "Commented-code block (9 lines) in client/src/components/wizard/elfsight/HelpModal.tsx:6"}, "properties": {"repobilityId": "751a8e5aae00b401", "scanner": "scanner-primary", "fingerprint": "0c0fbcdcc0007130", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-844a31ea746d3fc5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/wizard/elfsight/HelpModal.tsx:199"}, "properties": {"repobilityId": "d12a26e33e197e3d", "scanner": "scanner-primary", "fingerprint": "844a31ea746d3fc5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7888f21be7ee659d", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/WizardStructureControls.tsx:8"}, "properties": {"repobilityId": "284236377e45b1db", "scanner": "scanner-primary", "fingerprint": "7888f21be7ee659d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb4d2847e5e3a2dc", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/wizard/elfsight/types.ts:3"}, "properties": {"repobilityId": "7bfd16a667f0c748", "scanner": "scanner-primary", "fingerprint": "fb4d2847e5e3a2dc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-09035df877b591b7", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/AdvancedSection.tsx:3"}, "properties": {"repobilityId": "6cb595312bec3aa5", "scanner": "scanner-primary", "fingerprint": "09035df877b591b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4a69be8ffc0cc0a4", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/components/wizard/elfsight/buildAdvancedConfig.ts:4"}, "properties": {"repobilityId": "edb3d1f8ebcca4a4", "scanner": "scanner-primary", "fingerprint": "4a69be8ffc0cc0a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6ec72c5a3a4c73a7", "level": "none", "message": {"text": "Commented-code block (9 lines) in client/src/components/wizard/elfsight/PreviewChatBubbleSim.tsx:3"}, "properties": {"repobilityId": "493fb167ad025d2f", "scanner": "scanner-primary", "fingerprint": "6ec72c5a3a4c73a7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4d32bc08d657097", "level": "none", "message": {"text": "Commented-code block (10 lines) in client/src/components/wizard/elfsight/buildLeadFormConfig.ts:5"}, "properties": {"repobilityId": "2d5a0c3787c3d010", "scanner": "scanner-primary", "fingerprint": "f4d32bc08d657097", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3b2889f8d98b1713", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/wizard/elfsight/__tests__/fieldTypes.test.tsx:18"}, "properties": {"repobilityId": "4c7d8d34648adbbd", "scanner": "scanner-primary", "fingerprint": "3b2889f8d98b1713", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3416996b088bf550", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/hosted-page/HostedPageFrame.tsx:3"}, "properties": {"repobilityId": "915faa08681d2f22", "scanner": "scanner-primary", "fingerprint": "3416996b088bf550", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9e486efc2a1421c9", "level": "none", "message": {"text": "Commented-code block (9 lines) in client/src/components/hosted-page/WeFixTradesBadge.tsx:11"}, "properties": {"repobilityId": "8a4a057552ceb807", "scanner": "scanner-primary", "fingerprint": "9e486efc2a1421c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0cbb832207f764f6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/chatHelpers.ts:191"}, "properties": {"repobilityId": "055d27f2c35f538e", "scanner": "scanner-primary", "fingerprint": "0cbb832207f764f6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-02822116652a2444", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/queryClient.ts:15"}, "properties": {"repobilityId": "2bac9ae8c8b9b76c", "scanner": "scanner-primary", "fingerprint": "02822116652a2444", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c1f1e6cd17826cd1", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/lib/categoryStyles.ts:3"}, "properties": {"repobilityId": "5131a33984729d89", "scanner": "scanner-primary", "fingerprint": "c1f1e6cd17826cd1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6992528fdb1dcfa1", "level": "none", "message": {"text": "Commented-code block (8 lines) in client/src/lib/authRedirect.ts:1"}, "properties": {"repobilityId": "4c41b25d051ebeb2", "scanner": "scanner-primary", "fingerprint": "6992528fdb1dcfa1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b65a64f430e176df", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/site/navigation.ts:129"}, "properties": {"repobilityId": "ba4062abd2090ef1", "scanner": "scanner-primary", "fingerprint": "b65a64f430e176df", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-08a4e10a56ac1f29", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/pages/calculator.tsx:173"}, "properties": {"repobilityId": "25992c50d5ee8e98", "scanner": "scanner-primary", "fingerprint": "08a4e10a56ac1f29", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-988431d4e5dd8912", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/calculator.tsx:106"}, "properties": {"repobilityId": "06eba937fd3bbe7e", "scanner": "scanner-primary", "fingerprint": "988431d4e5dd8912", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4b33fcb494bfc89f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/OnboardingForm.tsx:188"}, "properties": {"repobilityId": "12d65025dcc1a1ef", "scanner": "scanner-primary", "fingerprint": "4b33fcb494bfc89f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5da8d5c22338ab7a", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/Signup.tsx:37"}, "properties": {"repobilityId": "28d820c6d80945ed", "scanner": "scanner-primary", "fingerprint": "5da8d5c22338ab7a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c5ef04fcd926e34", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/Signup.tsx:66"}, "properties": {"repobilityId": "81f7da89c4d341b9", "scanner": "scanner-primary", "fingerprint": "7c5ef04fcd926e34", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c3d60ee39ce483f4", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/pages/login.tsx:67"}, "properties": {"repobilityId": "30e09f00e1d1f603", "scanner": "scanner-primary", "fingerprint": "c3d60ee39ce483f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6843a612509a571b", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/dashboard.tsx:3"}, "properties": {"repobilityId": "e50626fad98a7304", "scanner": "scanner-primary", "fingerprint": "6843a612509a571b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6631216b43cff835", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/dashboard.tsx:708"}, "properties": {"repobilityId": "f69e095478a6d427", "scanner": "scanner-primary", "fingerprint": "6631216b43cff835", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d4f8a6e54145da8c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/ReviewFunnel.tsx:31"}, "properties": {"repobilityId": "584e76c2e7b19da4", "scanner": "scanner-primary", "fingerprint": "d4f8a6e54145da8c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-62e0e29df8f806a0", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/pages/leads.tsx:46"}, "properties": {"repobilityId": "0cf2c617b83d8086", "scanner": "scanner-primary", "fingerprint": "62e0e29df8f806a0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-adf3bcff69f8a2ac", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/leads.tsx:196"}, "properties": {"repobilityId": "46c5208e152b170a", "scanner": "scanner-primary", "fingerprint": "adf3bcff69f8a2ac", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b952ad0586f59171", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/edit-calculator.tsx:353"}, "properties": {"repobilityId": "e2cd352bd2989031", "scanner": "scanner-primary", "fingerprint": "b952ad0586f59171", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3dc11e0b719c5ba9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/SignupBusinessName.tsx:55"}, "properties": {"repobilityId": "c6d8d212e6106920", "scanner": "scanner-primary", "fingerprint": "3dc11e0b719c5ba9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fd544985da63766f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/BlogArticle.tsx:72"}, "properties": {"repobilityId": "8b7f82f0f0fb9821", "scanner": "scanner-primary", "fingerprint": "fd544985da63766f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aa232db52b2979d3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/quote-snapshot.tsx:120"}, "properties": {"repobilityId": "015fe6aece67cb75", "scanner": "scanner-primary", "fingerprint": "aa232db52b2979d3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0c8f9196e7d1a1a3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/checkoutSuccessState.ts:30"}, "properties": {"repobilityId": "2b063be648a90122", "scanner": "scanner-primary", "fingerprint": "0c8f9196e7d1a1a3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-43dfffa39403a7de", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/pages/marketing/SharedAuditReport.tsx:362"}, "properties": {"repobilityId": "d5c4732ef47b1df5", "scanner": "scanner-primary", "fingerprint": "43dfffa39403a7de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a55c5a46d733d4b6", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/pages/marketing/contact.tsx:219"}, "properties": {"repobilityId": "f1a16b831ae72770", "scanner": "scanner-primary", "fingerprint": "a55c5a46d733d4b6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7f7bee59673fadab", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/pages/marketing/templates.tsx:3"}, "properties": {"repobilityId": "6a8730e3918a8d1d", "scanner": "scanner-primary", "fingerprint": "7f7bee59673fadab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1921683dafb63f52", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/pages/marketing/home.tsx:6"}, "properties": {"repobilityId": "e5141088bbd995eb", "scanner": "scanner-primary", "fingerprint": "1921683dafb63f52", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-02eaf093ac9af430", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/marketing/template-detail.tsx:8"}, "properties": {"repobilityId": "a792e05348301b54", "scanner": "scanner-primary", "fingerprint": "02eaf093ac9af430", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-73a1086441b867da", "level": "note", "message": {"text": "Legacy-named symbol `tmpl_plumbing_v2` in client/src/pages/marketing/ApiDocsPage.tsx:1181"}, "properties": {"repobilityId": "c35127448a9b0a2d", "scanner": "scanner-primary", "fingerprint": "73a1086441b867da", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-49f8f58724ca9d19", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/marketing/ApiDocsPage.tsx:927"}, "properties": {"repobilityId": "8ad8002ef4dbcb2b", "scanner": "scanner-primary", "fingerprint": "49f8f58724ca9d19", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-256ce224a56407b8", "level": "none", "message": {"text": "Commented-code block (11 lines) in client/src/pages/marketing/FreeAudit.tsx:17"}, "properties": {"repobilityId": "675c522ddf3b6b43", "scanner": "scanner-primary", "fingerprint": "256ce224a56407b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-29d0dd84d9b43913", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/marketing/demo.tsx:32"}, "properties": {"repobilityId": "c21fe54fb4a65c3f", "scanner": "scanner-primary", "fingerprint": "29d0dd84d9b43913", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b91c9fcf5d6baee9", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/marketing/ReportView.tsx:14"}, "properties": {"repobilityId": "39636acc4e162a98", "scanner": "scanner-primary", "fingerprint": "b91c9fcf5d6baee9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b040244080778107", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/marketing/ReportView.tsx:1182"}, "properties": {"repobilityId": "2b9776531b8484f0", "scanner": "scanner-primary", "fingerprint": "b040244080778107", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8f17fc970c9466d7", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/marketing/tools/LocalRankTracker.tsx:58"}, "properties": {"repobilityId": "bb2deae2edfeaa3e", "scanner": "scanner-primary", "fingerprint": "8f17fc970c9466d7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6026fea90eb293d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/marketing/tools/GoogleReviewLinkGenerator.tsx:153"}, "properties": {"repobilityId": "4cdf953f004ebc64", "scanner": "scanner-primary", "fingerprint": "f6026fea90eb293d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a61baa4be2d7addc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SupportInboxPage.tsx:132"}, "properties": {"repobilityId": "c66839db24591dc4", "scanner": "scanner-primary", "fingerprint": "a61baa4be2d7addc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-53fe3e777df70008", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/AdFlowOpsPage.tsx:148"}, "properties": {"repobilityId": "656b0d1861313c1f", "scanner": "scanner-primary", "fingerprint": "53fe3e777df70008", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bb0de82e15c692f3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ServiceOpsPage.tsx:77"}, "properties": {"repobilityId": "86944e914585d8bb", "scanner": "scanner-primary", "fingerprint": "bb0de82e15c692f3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dc4fe2da2288b1c1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/AuditLogPage.tsx:122"}, "properties": {"repobilityId": "774cc498d46a5705", "scanner": "scanner-primary", "fingerprint": "dc4fe2da2288b1c1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9a0f746fb76c3a9f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ClientsPage.tsx:138"}, "properties": {"repobilityId": "644f54c54124a513", "scanner": "scanner-primary", "fingerprint": "9a0f746fb76c3a9f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2a449e1c5fdeb785", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/AdminChatHistoryPage.tsx:34"}, "properties": {"repobilityId": "9979cf2d9661f6e8", "scanner": "scanner-primary", "fingerprint": "2a449e1c5fdeb785", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-79390a8c70e52a81", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/TradelineVoicesPage.tsx:90"}, "properties": {"repobilityId": "c038d7e31974c3a0", "scanner": "scanner-primary", "fingerprint": "79390a8c70e52a81", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6b634085b9b1c571", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SystemJobsPage.tsx:164"}, "properties": {"repobilityId": "e881c288fb6fb3e7", "scanner": "scanner-primary", "fingerprint": "6b634085b9b1c571", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dda0949b031bf7f9", "level": "note", "message": {"text": "Legacy-named symbol `call_backup` in client/src/pages/admin/ClientDetailPage.tsx:3033"}, "properties": {"repobilityId": "6fd555fc02ea5dc7", "scanner": "scanner-primary", "fingerprint": "dda0949b031bf7f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-57e970fe6c81446c", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/admin/ClientDetailPage.tsx:560"}, "properties": {"repobilityId": "3c5b3f85fa500259", "scanner": "scanner-primary", "fingerprint": "57e970fe6c81446c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a4b6302587f9555a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ClientDetailPage.tsx:174"}, "properties": {"repobilityId": "2688124c67f387b3", "scanner": "scanner-primary", "fingerprint": "a4b6302587f9555a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fe7a27adcfcb19b6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/IntegrationHealthPage.tsx:69"}, "properties": {"repobilityId": "2312b45aedaed5ed", "scanner": "scanner-primary", "fingerprint": "fe7a27adcfcb19b6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a4d6f5dbe41827bf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SystemAlertsPage.tsx:66"}, "properties": {"repobilityId": "9590e6ab733a5d63", "scanner": "scanner-primary", "fingerprint": "a4d6f5dbe41827bf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-63153f7281e6c41f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/AuditLeadsPage.tsx:81"}, "properties": {"repobilityId": "599d261e8a00b26d", "scanner": "scanner-primary", "fingerprint": "63153f7281e6c41f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-34ac0bb8a222f0a9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ReviewsPage.tsx:273"}, "properties": {"repobilityId": "f97a662275814b1b", "scanner": "scanner-primary", "fingerprint": "34ac0bb8a222f0a9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d77d1ab79e0dab21", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/admin/QuoteQuickTemplateDetailPage.tsx:1079"}, "properties": {"repobilityId": "d2befa3ca4c2eae7", "scanner": "scanner-primary", "fingerprint": "d77d1ab79e0dab21", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5aa1c1f204bc62e7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/QuoteQuickTradesPage.tsx:84"}, "properties": {"repobilityId": "efc6149a235be468", "scanner": "scanner-primary", "fingerprint": "5aa1c1f204bc62e7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-13a3cdef2ed3e067", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/MapguardOpsPage.tsx:110"}, "properties": {"repobilityId": "ab4e889a6d1921a1", "scanner": "scanner-primary", "fingerprint": "13a3cdef2ed3e067", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d1c369936f44eaf3", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/pages/admin/ServicesPage.tsx:68"}, "properties": {"repobilityId": "b6a679542076eeef", "scanner": "scanner-primary", "fingerprint": "d1c369936f44eaf3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b23a353bdb531631", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/RankFlowOpsPage.tsx:155"}, "properties": {"repobilityId": "6b1b4be47833603d", "scanner": "scanner-primary", "fingerprint": "b23a353bdb531631", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d533e6e9c02b31d6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SeoIntegrationsPage.tsx:119"}, "properties": {"repobilityId": "58eecdb051add437", "scanner": "scanner-primary", "fingerprint": "d533e6e9c02b31d6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1538b84feda4bab2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/InboxPage.tsx:34"}, "properties": {"repobilityId": "ab7853c1bde99a3f", "scanner": "scanner-primary", "fingerprint": "1538b84feda4bab2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a687ec80c6e62886", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/AdminAuditLogPage.tsx:112"}, "properties": {"repobilityId": "a15617c2338961c4", "scanner": "scanner-primary", "fingerprint": "a687ec80c6e62886", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f1671e3278b45c1c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/QuoteQuickTradeDetailPage.tsx:107"}, "properties": {"repobilityId": "81fb1d178b62a1bd", "scanner": "scanner-primary", "fingerprint": "f1671e3278b45c1c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3981b2e2cbc96f2d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SuppliersPage.tsx:215"}, "properties": {"repobilityId": "e1a2083a35ce7d3f", "scanner": "scanner-primary", "fingerprint": "3981b2e2cbc96f2d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a96f3eb915af552b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/AdminTradelinePorts.tsx:100"}, "properties": {"repobilityId": "7d98e7290a22062d", "scanner": "scanner-primary", "fingerprint": "a96f3eb915af552b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e5408e4603cced56", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SupportTicketDetailPage.tsx:104"}, "properties": {"repobilityId": "d2974de0e73df7fc", "scanner": "scanner-primary", "fingerprint": "e5408e4603cced56", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-de69a447a98daf72", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/WebCareOpsPage.tsx:174"}, "properties": {"repobilityId": "3b43688f4e830c1b", "scanner": "scanner-primary", "fingerprint": "de69a447a98daf72", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cb0f20a2b19c65dd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/BillingPage.tsx:77"}, "properties": {"repobilityId": "ee4e11afbf2e1cea", "scanner": "scanner-primary", "fingerprint": "cb0f20a2b19c65dd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-68f9d09668f25de0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SocialSyncOpsPage.tsx:255"}, "properties": {"repobilityId": "aa0205612d486ada", "scanner": "scanner-primary", "fingerprint": "68f9d09668f25de0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-39c3b961a8469ab6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/TradelineTemplatesPage.tsx:118"}, "properties": {"repobilityId": "b9bf2372df9920b0", "scanner": "scanner-primary", "fingerprint": "39c3b961a8469ab6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d43b67e620f9fb95", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/TradelineLearningPage.tsx:65"}, "properties": {"repobilityId": "ad9c3104de33ba24", "scanner": "scanner-primary", "fingerprint": "d43b67e620f9fb95", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-32e16ce557d9ceb3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/InstallQueuePage.tsx:81"}, "properties": {"repobilityId": "7e5b47209823799f", "scanner": "scanner-primary", "fingerprint": "32e16ce557d9ceb3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-68df80e361c73f56", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/admin/UiPrimitivesDemo.tsx:93"}, "properties": {"repobilityId": "702ff3b42dce5fb4", "scanner": "scanner-primary", "fingerprint": "68df80e361c73f56", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91cefcb61138c125", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ContentFlowQueuePage.tsx:383"}, "properties": {"repobilityId": "31b0d80315f56d0f", "scanner": "scanner-primary", "fingerprint": "91cefcb61138c125", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-da899f6b400021ae", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SystemAvailabilityPage.tsx:38"}, "properties": {"repobilityId": "5e8052df2fe5a797", "scanner": "scanner-primary", "fingerprint": "da899f6b400021ae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bb93ca2f1f92f630", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/admin/ProductDetailPage.tsx:333"}, "properties": {"repobilityId": "67d3dc50f0bef7d5", "scanner": "scanner-primary", "fingerprint": "bb93ca2f1f92f630", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fc12c343f50790fb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ProductDetailPage.tsx:203"}, "properties": {"repobilityId": "136626744dc1b508", "scanner": "scanner-primary", "fingerprint": "fc12c343f50790fb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c00ac7e2b6726564", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ContentPipelinePage.tsx:113"}, "properties": {"repobilityId": "1d380a412e4d5142", "scanner": "scanner-primary", "fingerprint": "c00ac7e2b6726564", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-054d4d2a64491feb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SiteLaunchOpsPage.tsx:63"}, "properties": {"repobilityId": "b59f07f499fa115c", "scanner": "scanner-primary", "fingerprint": "054d4d2a64491feb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d9b65cec15770874", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/MapguardDashboard.tsx:233"}, "properties": {"repobilityId": "3b91fd9750006ff1", "scanner": "scanner-primary", "fingerprint": "d9b65cec15770874", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-960dbee7988edc48", "level": "note", "message": {"text": "Legacy-named symbol `call_backup` in client/src/pages/admin/TradeLineOpsPage.tsx:27"}, "properties": {"repobilityId": "a8442efa8b332f64", "scanner": "scanner-primary", "fingerprint": "960dbee7988edc48", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0ec0069dee08c8ff", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/TradeLineOpsPage.tsx:33"}, "properties": {"repobilityId": "5ddaf23aee145376", "scanner": "scanner-primary", "fingerprint": "0ec0069dee08c8ff", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a8d7700f49bc21ea", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SystemWorkersPage.tsx:111"}, "properties": {"repobilityId": "cce0d21a6a1c90cb", "scanner": "scanner-primary", "fingerprint": "a8d7700f49bc21ea", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-97722910eef2e213", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/DeploymentHealthPage.tsx:59"}, "properties": {"repobilityId": "bc1131937ee8b6aa", "scanner": "scanner-primary", "fingerprint": "97722910eef2e213", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-03be7d7b1c4cf9b5", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/pages/admin/CommunicationsPage.tsx:971"}, "properties": {"repobilityId": "ebeb9f2470bcf92d", "scanner": "scanner-primary", "fingerprint": "03be7d7b1c4cf9b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-305183ee8c52d5a4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/CommunicationsPage.tsx:205"}, "properties": {"repobilityId": "6d4a97c7f6819dbd", "scanner": "scanner-primary", "fingerprint": "305183ee8c52d5a4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9cd3632302ea3dd1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/AiBudgetPage.tsx:164"}, "properties": {"repobilityId": "bc1917471f7d3b04", "scanner": "scanner-primary", "fingerprint": "9cd3632302ea3dd1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a920c3682717c52e", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/admin/MobilePreview/PreviewScreens.tsx:1255"}, "properties": {"repobilityId": "75e87d9b70ca523e", "scanner": "scanner-primary", "fingerprint": "a920c3682717c52e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a710e2f688dee871", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/outbound/SequencesPage.tsx:220"}, "properties": {"repobilityId": "212d5870cc00783c", "scanner": "scanner-primary", "fingerprint": "a710e2f688dee871", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-177b3cc61fe24ffc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/outbound/CampaignsPage.tsx:89"}, "properties": {"repobilityId": "d16b27361a31628c", "scanner": "scanner-primary", "fingerprint": "177b3cc61fe24ffc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8aa180dbaeb2439e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/outbound/PipelinePage.tsx:256"}, "properties": {"repobilityId": "f40cd8c7c3d4fba3", "scanner": "scanner-primary", "fingerprint": "8aa180dbaeb2439e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e6d2ad2f32f629a6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/outbound/ProspectsPage.tsx:380"}, "properties": {"repobilityId": "51f2ec6b7844884f", "scanner": "scanner-primary", "fingerprint": "e6d2ad2f32f629a6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-733b34b5906037bd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/outbound/SendingPage.tsx:76"}, "properties": {"repobilityId": "9a72de1e5817eb93", "scanner": "scanner-primary", "fingerprint": "733b34b5906037bd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ee1fae21b75f22eb", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/pages/portal/PortalBrandKitsPage.tsx:45"}, "properties": {"repobilityId": "c7933c87bbcbc0b1", "scanner": "scanner-primary", "fingerprint": "ee1fae21b75f22eb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6db72e80cc83c142", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalYourAiAssistant.tsx:66"}, "properties": {"repobilityId": "121f3e96723a27de", "scanner": "scanner-primary", "fingerprint": "6db72e80cc83c142", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-75a253e066a4a703", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/ChatWidgetInstallOnboarding.tsx:71"}, "properties": {"repobilityId": "53cb5ee50ef98efd", "scanner": "scanner-primary", "fingerprint": "75a253e066a4a703", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9483df632c7352c8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalContentPreferences.tsx:255"}, "properties": {"repobilityId": "5cd29293a99f861b", "scanner": "scanner-primary", "fingerprint": "9483df632c7352c8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8700477bbbd372c7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalWidget.tsx:367"}, "properties": {"repobilityId": "ac474fbbc79a1032", "scanner": "scanner-primary", "fingerprint": "8700477bbbd372c7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-785f6117e9925bf3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalSettings.tsx:128"}, "properties": {"repobilityId": "878d7f899ea134d1", "scanner": "scanner-primary", "fingerprint": "785f6117e9925bf3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d970a3700f61478c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/InvoicesPage.tsx:109"}, "properties": {"repobilityId": "01fcc3c8b7b9ca79", "scanner": "scanner-primary", "fingerprint": "d970a3700f61478c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7e1dd5bd34ee8207", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/InvoiceDetailPage.tsx:147"}, "properties": {"repobilityId": "2b77a9d73d1507f7", "scanner": "scanner-primary", "fingerprint": "7e1dd5bd34ee8207", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e51ca30ae9bf1aef", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/BookFlowSetupPage.tsx:104"}, "properties": {"repobilityId": "fd7b49b4f786652b", "scanner": "scanner-primary", "fingerprint": "e51ca30ae9bf1aef", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-676182edd825d43d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalEmailDomainSetup.tsx:63"}, "properties": {"repobilityId": "e8e65542410877f6", "scanner": "scanner-primary", "fingerprint": "676182edd825d43d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-59902dcb5475b22a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalCompetitors.tsx:75"}, "properties": {"repobilityId": "dcbcb4920f9d8976", "scanner": "scanner-primary", "fingerprint": "59902dcb5475b22a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5292cc157ccb7b5f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalRankFlow.tsx:85"}, "properties": {"repobilityId": "5a873cb26024e1fd", "scanner": "scanner-primary", "fingerprint": "5292cc157ccb7b5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ad544a993d685ca0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/WebFixEntry.tsx:40"}, "properties": {"repobilityId": "be20f6cdb08f67b4", "scanner": "scanner-primary", "fingerprint": "ad544a993d685ca0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8f935b92c54c9dd9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalBilling.tsx:63"}, "properties": {"repobilityId": "bb384f09b38947d8", "scanner": "scanner-primary", "fingerprint": "8f935b92c54c9dd9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ac3d6b1a5c364231", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalHelp.tsx:103"}, "properties": {"repobilityId": "b7db9591b6f9b293", "scanner": "scanner-primary", "fingerprint": "ac3d6b1a5c364231", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c1a572be0bfbd4bd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalMapguard.tsx:261"}, "properties": {"repobilityId": "e8eb66a90700977e", "scanner": "scanner-primary", "fingerprint": "c1a572be0bfbd4bd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aea45b02e8079d6c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalServices.tsx:39"}, "properties": {"repobilityId": "833802c8d909b833", "scanner": "scanner-primary", "fingerprint": "aea45b02e8079d6c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-727775a03d9385fb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/SocialSyncSetupV2.tsx:128"}, "properties": {"repobilityId": "50c80777e55b146a", "scanner": "scanner-primary", "fingerprint": "727775a03d9385fb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7ed0a37588f9833f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalArticles.tsx:331"}, "properties": {"repobilityId": "7b656dd6b0ec8182", "scanner": "scanner-primary", "fingerprint": "7ed0a37588f9833f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0555ad2505bfc665", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalCatalog.tsx:120"}, "properties": {"repobilityId": "9ab928842bfa23fd", "scanner": "scanner-primary", "fingerprint": "0555ad2505bfc665", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6ac7799ace30c6f3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalDashboard.tsx:198"}, "properties": {"repobilityId": "94f1b1c1a95ef4bc", "scanner": "scanner-primary", "fingerprint": "6ac7799ace30c6f3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-68d26c2938793406", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalServiceDetail.tsx:245"}, "properties": {"repobilityId": "871e1dbbe428ba49", "scanner": "scanner-primary", "fingerprint": "68d26c2938793406", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a6e2530bffe8c89c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/ChatWidgetInstallEntry.tsx:48"}, "properties": {"repobilityId": "470f78c9e159c474", "scanner": "scanner-primary", "fingerprint": "a6e2530bffe8c89c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7d669aae5de81b80", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalTradelineKnowledgePage.tsx:66"}, "properties": {"repobilityId": "cf7022961d373b4b", "scanner": "scanner-primary", "fingerprint": "7d669aae5de81b80", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9e0b1762cfe04f9f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/SiteLaunchEntry.tsx:45"}, "properties": {"repobilityId": "ebd46c0ac8a304d0", "scanner": "scanner-primary", "fingerprint": "9e0b1762cfe04f9f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fa2a4ed12b29b1b0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalChatHistoryPage.tsx:34"}, "properties": {"repobilityId": "5a4e68b497b05ed6", "scanner": "scanner-primary", "fingerprint": "fa2a4ed12b29b1b0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5b7714a0a2f4baaa", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalApiAccessPage.tsx:219"}, "properties": {"repobilityId": "3750b5ad2f6f3703", "scanner": "scanner-primary", "fingerprint": "5b7714a0a2f4baaa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ec7352dcf80e4890", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalOnboarding.tsx:66"}, "properties": {"repobilityId": "9ff38a9d48cbbae9", "scanner": "scanner-primary", "fingerprint": "ec7352dcf80e4890", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d1f305a9b8af25b8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/AiInsightsPage.tsx:209"}, "properties": {"repobilityId": "ce5679b3bfc8981a", "scanner": "scanner-primary", "fingerprint": "d1f305a9b8af25b8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4e8a16be1aacc18e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/DispatchPage.tsx:72"}, "properties": {"repobilityId": "b11bdb4f2eb88bc1", "scanner": "scanner-primary", "fingerprint": "4e8a16be1aacc18e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bbe163f176a08835", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortStatusPage.tsx:185"}, "properties": {"repobilityId": "3268bc1334dca142", "scanner": "scanner-primary", "fingerprint": "bbe163f176a08835", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c6dc2c614be4e320", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PaymentMethodsPage.tsx:42"}, "properties": {"repobilityId": "9221666c579872bb", "scanner": "scanner-primary", "fingerprint": "c6dc2c614be4e320", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a3bd1dd5b0557007", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalReviews.tsx:178"}, "properties": {"repobilityId": "2365817f9f7369e3", "scanner": "scanner-primary", "fingerprint": "a3bd1dd5b0557007", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-77b42546f8079e2e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalTicketDetail.tsx:76"}, "properties": {"repobilityId": "c462be296141c3f6", "scanner": "scanner-primary", "fingerprint": "77b42546f8079e2e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d92e0564a7da0acf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalReviewsSetup.tsx:57"}, "properties": {"repobilityId": "3964e8ecb3bb6b0e", "scanner": "scanner-primary", "fingerprint": "d92e0564a7da0acf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5bbfa8a20210f0e2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/PortalChatWidgetSetup.tsx:63"}, "properties": {"repobilityId": "829ffadff605805f", "scanner": "scanner-primary", "fingerprint": "5bbfa8a20210f0e2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-64cc3e99b1ddceca", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/settings/Notifications.tsx:125"}, "properties": {"repobilityId": "de78435e431a88f4", "scanner": "scanner-primary", "fingerprint": "64cc3e99b1ddceca", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4f55f0f9c8f2e75c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/adflow/AdFlowDashboard.tsx:218"}, "properties": {"repobilityId": "a19a4d69801ae169", "scanner": "scanner-primary", "fingerprint": "4f55f0f9c8f2e75c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e275484b06238a0f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/TradelineSetup/DashboardBanner.tsx:25"}, "properties": {"repobilityId": "a80543d9652a5e60", "scanner": "scanner-primary", "fingerprint": "e275484b06238a0f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7aeb3e3d0b8103d3", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/portal/TradelineSetup/VoicePicker.tsx:61"}, "properties": {"repobilityId": "615ea7ee67d6f10b", "scanner": "scanner-primary", "fingerprint": "7aeb3e3d0b8103d3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-77081ea63401a5ea", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/TradelineSetup/VoicePicker.tsx:37"}, "properties": {"repobilityId": "235c353152d3727a", "scanner": "scanner-primary", "fingerprint": "77081ea63401a5ea", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-efef49c03025687d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/mapguard/MapGuardDashboard.tsx:140"}, "properties": {"repobilityId": "ddaff85d392d5310", "scanner": "scanner-primary", "fingerprint": "efef49c03025687d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5b8e204b748f64a8", "level": "note", "message": {"text": "Legacy-named symbol `contentflow_onboarding_v1` in client/src/pages/portal/contentflow/PortalContentFlowDashboard.tsx:769"}, "properties": {"repobilityId": "040314e253f8fdf0", "scanner": "scanner-primary", "fingerprint": "5b8e204b748f64a8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ac90e2d5470811c5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/contentflow/PortalContentFlowDashboard.tsx:283"}, "properties": {"repobilityId": "aeab671e9329ad51", "scanner": "scanner-primary", "fingerprint": "ac90e2d5470811c5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-451031480ab08380", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/webcare/WebCareDashboard.tsx:165"}, "properties": {"repobilityId": "7d45ac53ad6cc08f", "scanner": "scanner-primary", "fingerprint": "451031480ab08380", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5a05d2959e129125", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/portal/tradeline/TradeLineDashboard.tsx:178"}, "properties": {"repobilityId": "e8aa2e5b66ae2e26", "scanner": "scanner-primary", "fingerprint": "5a05d2959e129125", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6067e0693a1987fd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/tradeline/TradeLineDashboard.tsx:229"}, "properties": {"repobilityId": "1b31b574a3dbb999", "scanner": "scanner-primary", "fingerprint": "6067e0693a1987fd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f6afac1e6fe315ed", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/HoursWidget.tsx:84"}, "properties": {"repobilityId": "e0bc8971cd7e3f2b", "scanner": "scanner-primary", "fingerprint": "f6afac1e6fe315ed", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-62290ee19559ca19", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/FaqWidget.tsx:66"}, "properties": {"repobilityId": "141d75caee8d2f6f", "scanner": "scanner-primary", "fingerprint": "62290ee19559ca19", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-367e62ffb2704587", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/ServiceAreaMap.tsx:79"}, "properties": {"repobilityId": "f7b2810e4d791851", "scanner": "scanner-primary", "fingerprint": "367e62ffb2704587", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f1c02fce7989c213", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/ReviewLink.tsx:69"}, "properties": {"repobilityId": "a5ad3227301a4448", "scanner": "scanner-primary", "fingerprint": "f1c02fce7989c213", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-379c04d0444699f8", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/portal/FreeTools/SchemaGenerator.tsx:192"}, "properties": {"repobilityId": "63aa8719c28cad7a", "scanner": "scanner-primary", "fingerprint": "379c04d0444699f8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5a14358d0b4c23a4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/SchemaGenerator.tsx:139"}, "properties": {"repobilityId": "86e7266e48d30927", "scanner": "scanner-primary", "fingerprint": "5a14358d0b4c23a4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fd325f3c56d9a318", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/portal/FreeTools/index.tsx:295"}, "properties": {"repobilityId": "d4b73b1edaf47489", "scanner": "scanner-primary", "fingerprint": "fd325f3c56d9a318", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6512ccb8e6011344", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/CallbackForm.tsx:70"}, "properties": {"repobilityId": "25e4ef54e3422842", "scanner": "scanner-primary", "fingerprint": "6512ccb8e6011344", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f17d804ae5a29850", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/TrustBadges.tsx:77"}, "properties": {"repobilityId": "535d33f7e3f465d6", "scanner": "scanner-primary", "fingerprint": "f17d804ae5a29850", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-edf6f8b982a9eeef", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/AiReviewResponder.tsx:70"}, "properties": {"repobilityId": "4155605bc9552f99", "scanner": "scanner-primary", "fingerprint": "edf6f8b982a9eeef", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5da8d35d3e9ea353", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/FreeTools/AiQuoteWriter.tsx:70"}, "properties": {"repobilityId": "c6158e4ed9c4f809", "scanner": "scanner-primary", "fingerprint": "5da8d35d3e9ea353", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-90b4268f357714ab", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/reputationshield/ReputationShieldDashboard.tsx:168"}, "properties": {"repobilityId": "b57d7c3edcd6af2b", "scanner": "scanner-primary", "fingerprint": "90b4268f357714ab", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e6dd23e022c84b2a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/quotequick/QuoteQuickDashboard.tsx:149"}, "properties": {"repobilityId": "3c54aa778e32d6ec", "scanner": "scanner-primary", "fingerprint": "e6dd23e022c84b2a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-59654a38e0075a90", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/portal/quotequick/FormBuilderPage.tsx:45"}, "properties": {"repobilityId": "96524cdc98cf0c3a", "scanner": "scanner-primary", "fingerprint": "59654a38e0075a90", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9363c7703c216657", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/quotequick/BrandSettings.tsx:76"}, "properties": {"repobilityId": "3cf3270927e770b2", "scanner": "scanner-primary", "fingerprint": "9363c7703c216657", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f769449d2bf2f6a8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/socialsync/SocialSyncDashboard.tsx:236"}, "properties": {"repobilityId": "7f1520ee42b90c35", "scanner": "scanner-primary", "fingerprint": "f769449d2bf2f6a8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fe89bf23030703cf", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/portal/rankflow/RankFlowDashboard.tsx:322"}, "properties": {"repobilityId": "153ceb7c1f19bedb", "scanner": "scanner-primary", "fingerprint": "fe89bf23030703cf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9f6dc51bee3b7217", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/portal/rankflow/RankFlowDashboard.tsx:245"}, "properties": {"repobilityId": "77dbca5c82c816c0", "scanner": "scanner-primary", "fingerprint": "9f6dc51bee3b7217", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-28ba336db8d1125b", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/pages/products/EffortelProductPage.tsx:538"}, "properties": {"repobilityId": "0e7067d1a71d73f3", "scanner": "scanner-primary", "fingerprint": "28ba336db8d1125b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0ae5e0d0a20c7868", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/pages/products/quotequick/demo.tsx:61"}, "properties": {"repobilityId": "cc320d4a28d383fc", "scanner": "scanner-primary", "fingerprint": "0ae5e0d0a20c7868", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1e77c9d93f200ba8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/hooks/useIsPaid.ts:41"}, "properties": {"repobilityId": "0bcf7c332e52ea47", "scanner": "scanner-primary", "fingerprint": "1e77c9d93f200ba8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0a6c8da92263ea43", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/hooks/useBreadcrumbs.ts:181"}, "properties": {"repobilityId": "e7dfdf975cdfd274", "scanner": "scanner-primary", "fingerprint": "0a6c8da92263ea43", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-057ed6807d7c0946", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/hooks/useDisplayPreferences.ts:52"}, "properties": {"repobilityId": "c1fc3499031a97a2", "scanner": "scanner-primary", "fingerprint": "057ed6807d7c0946", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4af99614c3a2f6f1", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/hooks/useScrollReveal.ts:31"}, "properties": {"repobilityId": "f05ac6a48575fe68", "scanner": "scanner-primary", "fingerprint": "4af99614c3a2f6f1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d9c2631b6dedb8e", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/build-smoke.test.ts:50"}, "properties": {"repobilityId": "e12560306c06d478", "scanner": "scanner-primary", "fingerprint": "0d9c2631b6dedb8e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-12fe1f0cf27d69c4", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/audit/qq-wave-l.spec.ts:33"}, "properties": {"repobilityId": "32f279b446fd79b9", "scanner": "scanner-primary", "fingerprint": "12fe1f0cf27d69c4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-665b083a0693cab8", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/audit/wave-as1b-template-identity.spec.ts:32"}, "properties": {"repobilityId": "34f954d23d38122e", "scanner": "scanner-primary", "fingerprint": "665b083a0693cab8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3efcabca42ed4dd9", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/audit/qq-wave-m.spec.ts:130"}, "properties": {"repobilityId": "90b2927f46dd5082", "scanner": "scanner-primary", "fingerprint": "3efcabca42ed4dd9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f677886c166c350", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/audit/wizard-elfsight-h5.spec.ts:165"}, "properties": {"repobilityId": "6d9de6c2d0f95abb", "scanner": "scanner-primary", "fingerprint": "4f677886c166c350", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4d4b7d93e837a5c", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/audit/wizard-elfsight-h7.spec.ts:273"}, "properties": {"repobilityId": "a9e1d632fb8090ff", "scanner": "scanner-primary", "fingerprint": "f4d4b7d93e837a5c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-87f1a0f0a0ab8620", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/audit/server-ai-budget.spec.ts:58"}, "properties": {"repobilityId": "b945dea6ae76154c", "scanner": "scanner-primary", "fingerprint": "87f1a0f0a0ab8620", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6572d46859003ba9", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/audit/wizard-elfsight-h6.spec.ts:95"}, "properties": {"repobilityId": "509e528bd33c0bfd", "scanner": "scanner-primary", "fingerprint": "6572d46859003ba9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2730da2344005bff", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/audit/wizard-elfsight-i.spec.ts:105"}, "properties": {"repobilityId": "9de309abd09ed162", "scanner": "scanner-primary", "fingerprint": "2730da2344005bff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f0ecdbb2ac8e6002", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/audit/wizard-elfsight-h1.spec.ts:106"}, "properties": {"repobilityId": "2b54276d0328c4e4", "scanner": "scanner-primary", "fingerprint": "f0ecdbb2ac8e6002", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85da1924e84942bd", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/audit/marketing-contrast.spec.ts:127"}, "properties": {"repobilityId": "04581ebea64f2827", "scanner": "scanner-primary", "fingerprint": "85da1924e84942bd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-954c182909b2625e", "level": "none", "message": {"text": "Commented-code block (12 lines) in tests/audit/w-r1-scheduling-screenshots.spec.ts:49"}, "properties": {"repobilityId": "9e277371bf3ed2eb", "scanner": "scanner-primary", "fingerprint": "954c182909b2625e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f0498994b0b6617f", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/audit/wizard-wave-j.spec.ts:69"}, "properties": {"repobilityId": "07c39e1412fe256d", "scanner": "scanner-primary", "fingerprint": "f0498994b0b6617f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f5334dcc2fb28bd3", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/audit/server-agent-loop.spec.ts:220"}, "properties": {"repobilityId": "5e88dcd1e904880e", "scanner": "scanner-primary", "fingerprint": "f5334dcc2fb28bd3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-48fce81c2febde5e", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/e2e/tradeline-setup.spec.ts:49"}, "properties": {"repobilityId": "7eebce4f439bf9c1", "scanner": "scanner-primary", "fingerprint": "48fce81c2febde5e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d1ea8b8cf6f0305e", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/e2e/admin-crm/contentflow.sprint1.spec.ts:149"}, "properties": {"repobilityId": "c272d6db45425088", "scanner": "scanner-primary", "fingerprint": "d1ea8b8cf6f0305e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-585cdbf27ae0c5bd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 docs/wip/stripe-billing-overhaul/verify-phase2-safety.ts:233"}, "properties": {"repobilityId": "7e8ae342910e50e9", "scanner": "scanner-primary", "fingerprint": "585cdbf27ae0c5bd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3d58789026806804", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/templateDesignRules.ts:72"}, "properties": {"repobilityId": "1386f2fb17a54b0e", "scanner": "scanner-primary", "fingerprint": "3d58789026806804", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-726fe623da21f22f", "level": "none", "message": {"text": "Commented-code block (7 lines) in shared/services.ts:251"}, "properties": {"repobilityId": "28545a43ff1b53d9", "scanner": "scanner-primary", "fingerprint": "726fe623da21f22f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d7d9d743debe83ba", "level": "none", "message": {"text": "Commented-code block (9 lines) in shared/wizardSchema.ts:137"}, "properties": {"repobilityId": "8d226b67eed87701", "scanner": "scanner-primary", "fingerprint": "d7d9d743debe83ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-96daba658f6825df", "level": "note", "message": {"text": "Legacy-named symbol `cf_starter_monthly_v1` in shared/pricing.ts:628"}, "properties": {"repobilityId": "438e97892e54d1bb", "scanner": "scanner-primary", "fingerprint": "96daba658f6825df", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5b405eb765aeff22", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/aiDemoTemplate.ts:129"}, "properties": {"repobilityId": "c1453c910272ad0e", "scanner": "scanner-primary", "fingerprint": "5b405eb765aeff22", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-20e1e1bc6f5b55cf", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/seoContentPage.test.ts:26"}, "properties": {"repobilityId": "fd362402a20b92b3", "scanner": "scanner-primary", "fingerprint": "20e1e1bc6f5b55cf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0e25dc8ad4a859c8", "level": "none", "message": {"text": "Commented-code block (8 lines) in shared/slugUtils.ts:30"}, "properties": {"repobilityId": "0e44ac76fd77a000", "scanner": "scanner-primary", "fingerprint": "0e25dc8ad4a859c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b81a9ace99f0d7f5", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/templatePresets.ts:158"}, "properties": {"repobilityId": "ea88c003e713c1bc", "scanner": "scanner-primary", "fingerprint": "b81a9ace99f0d7f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-03cf7b8199c4e2d1", "level": "none", "message": {"text": "Commented-code block (7 lines) in shared/schemas/adminAiActions.ts:88"}, "properties": {"repobilityId": "9b2bd9526d3a00e1", "scanner": "scanner-primary", "fingerprint": "03cf7b8199c4e2d1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-821a82757ef9133e", "level": "none", "message": {"text": "Commented-code block (7 lines) in shared/schemas/brandKits.ts:36"}, "properties": {"repobilityId": "2c92411eb90566c3", "scanner": "scanner-primary", "fingerprint": "821a82757ef9133e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-641610514f714b7d", "level": "none", "message": {"text": "Commented-code block (8 lines) in shared/schemas/mapguard.ts:145"}, "properties": {"repobilityId": "9b710997965c30ec", "scanner": "scanner-primary", "fingerprint": "641610514f714b7d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fe39bc11dd399524", "level": "note", "message": {"text": "Legacy-named symbol `call_backup` in shared/schemas/adminCrm.ts:662"}, "properties": {"repobilityId": "e9fcc39a57f9888d", "scanner": "scanner-primary", "fingerprint": "fe39bc11dd399524", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-66e30897407c4790", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/schemas/adminCrm.ts:705"}, "properties": {"repobilityId": "88f9127783dd7087", "scanner": "scanner-primary", "fingerprint": "66e30897407c4790", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a304335ec76e316a", "level": "none", "message": {"text": "Commented-code block (6 lines) in shared/schemas/contentflow.ts:23"}, "properties": {"repobilityId": "4e301ede499931c6", "scanner": "scanner-primary", "fingerprint": "a304335ec76e316a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d9bc46f715df2d48", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/schemas/calculator.fieldTypes.test.ts:55"}, "properties": {"repobilityId": "4a1bfc2495bc0546", "scanner": "scanner-primary", "fingerprint": "d9bc46f715df2d48", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4fc3e36f1909cec0", "level": "none", "message": {"text": "Commented-code block (6 lines) in shared/schemas/aiResponseRatings.ts:47"}, "properties": {"repobilityId": "8cbfe9a2bbd2fb26", "scanner": "scanner-primary", "fingerprint": "4fc3e36f1909cec0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f07af0cc38be6ea5", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/schemas/calculator.ts:178"}, "properties": {"repobilityId": "d502c32bdfb2fdf1", "scanner": "scanner-primary", "fingerprint": "f07af0cc38be6ea5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6fb40b3d8d35f2a0", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/schemas/outbound.ts:75"}, "properties": {"repobilityId": "2c2ca43a863cf5a3", "scanner": "scanner-primary", "fingerprint": "6fb40b3d8d35f2a0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6ece90edd27866aa", "level": "none", "message": {"text": "Commented-code block (6 lines) in shared/schemas/db.ts:68"}, "properties": {"repobilityId": "1d7b43dedb47abf0", "scanner": "scanner-primary", "fingerprint": "6ece90edd27866aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d9f7534388d0ae7f", "level": "none", "message": {"text": "Commented-code block (8 lines) in shared/schemas/tradelineKnowledgeBase.ts:43"}, "properties": {"repobilityId": "9ad2aede4ac18714", "scanner": "scanner-primary", "fingerprint": "d9f7534388d0ae7f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a25c6921dbbe244b", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/check-schema-drift.mjs:66"}, "properties": {"repobilityId": "4eacbbaf6cb862cc", "scanner": "scanner-primary", "fingerprint": "a25c6921dbbe244b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7daa6eec0e574e99", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/verify-dunning.ts:159"}, "properties": {"repobilityId": "b93aa41caacd08f8", "scanner": "scanner-primary", "fingerprint": "7daa6eec0e574e99", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f9cf695b499c21d1", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/check-layout-rules.mjs:131"}, "properties": {"repobilityId": "96a138d92fac896c", "scanner": "scanner-primary", "fingerprint": "f9cf695b499c21d1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-741811892e2a4e84", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/build-ai-extraction-fixtures.mjs:417"}, "properties": {"repobilityId": "ceca41d0b208c0e8", "scanner": "scanner-primary", "fingerprint": "741811892e2a4e84", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff203185c202e22e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/smoke-billing-recovery-local.ts:275"}, "properties": {"repobilityId": "bf7b16d52ae31451", "scanner": "scanner-primary", "fingerprint": "ff203185c202e22e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8da4ad676e64d7a0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/generate-ai-thumbnails.mjs:213"}, "properties": {"repobilityId": "1d650be681e37e77", "scanner": "scanner-primary", "fingerprint": "8da4ad676e64d7a0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eac3a87cf1caf84b", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/check-hardcoded-colors.mjs:42"}, "properties": {"repobilityId": "e3b235e4181a877a", "scanner": "scanner-primary", "fingerprint": "eac3a87cf1caf84b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-36323981ac1c50b0", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/verify-adflow-cron.ts:19"}, "properties": {"repobilityId": "bf7ccca79cb751f7", "scanner": "scanner-primary", "fingerprint": "36323981ac1c50b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e519451c39001a40", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/check-no-silent-catch.mjs:116"}, "properties": {"repobilityId": "d0ddae6573c4ba34", "scanner": "scanner-primary", "fingerprint": "e519451c39001a40", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e54137a1ea05c329", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/smoke-stripe-billing-recovery.ts:230"}, "properties": {"repobilityId": "dd7675a534b813eb", "scanner": "scanner-primary", "fingerprint": "e54137a1ea05c329", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fb761a2d59d329cc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/staging-gate/identify-previous-occupant.mjs:41"}, "properties": {"repobilityId": "f4edd36b5bf4254b", "scanner": "scanner-primary", "fingerprint": "fb761a2d59d329cc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d3340c88029e113a", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/db/drizzle.config.dev.ts:40"}, "properties": {"repobilityId": "91fdfed6517b5f47", "scanner": "scanner-primary", "fingerprint": "d3340c88029e113a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d43e6191c5db3bef", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/stripe/sync-catalog.mjs:81"}, "properties": {"repobilityId": "287d38a5947355bf", "scanner": "scanner-primary", "fingerprint": "d43e6191c5db3bef", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-103d293aed94bfde", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/sms/a2p-campaign-update.mjs:330"}, "properties": {"repobilityId": "0ab898d1e7a3af22", "scanner": "scanner-primary", "fingerprint": "103d293aed94bfde", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a6c83964fc1938b6", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/seo/prerender-routes.mjs:60"}, "properties": {"repobilityId": "9c5c79ca30c7da96", "scanner": "scanner-primary", "fingerprint": "a6c83964fc1938b6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1d5404499607860b", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/auth.ts:102"}, "properties": {"repobilityId": "ec3dd57b91576046", "scanner": "scanner-primary", "fingerprint": "1d5404499607860b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b0f101868b125e41", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/auditRoutes.ts:1033"}, "properties": {"repobilityId": "e726da36761194dc", "scanner": "scanner-primary", "fingerprint": "b0f101868b125e41", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ca553588073be95b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/auditRoutes.ts:391"}, "properties": {"repobilityId": "d7d48891f25cd2b4", "scanner": "scanner-primary", "fingerprint": "ca553588073be95b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1763262d22d7b898", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/openaiClient.ts:26"}, "properties": {"repobilityId": "f9d9dcee1345d50a", "scanner": "scanner-primary", "fingerprint": "1763262d22d7b898", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c94d4bad2af4814a", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/storage.ts:973"}, "properties": {"repobilityId": "42944732b206653d", "scanner": "scanner-primary", "fingerprint": "c94d4bad2af4814a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-da3f31e057b0dd6a", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/bootstrapDoppler.ts:32"}, "properties": {"repobilityId": "948dc1c3b1420d17", "scanner": "scanner-primary", "fingerprint": "da3f31e057b0dd6a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b623a7e76f013bf", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/static.ts:108"}, "properties": {"repobilityId": "3add7e9f576fc4c5", "scanner": "scanner-primary", "fingerprint": "6b623a7e76f013bf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e4183d7a787566f4", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/index.ts:52"}, "properties": {"repobilityId": "62f38fb9f2c2ca9b", "scanner": "scanner-primary", "fingerprint": "e4183d7a787566f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-00aab47b9a5f9544", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/aiPricingAgent.ts:430"}, "properties": {"repobilityId": "7628e97d6fafc721", "scanner": "scanner-primary", "fingerprint": "00aab47b9a5f9544", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-86b6b1c2c68c0547", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/twilioClient.ts:245"}, "properties": {"repobilityId": "0e9592258dd36684", "scanner": "scanner-primary", "fingerprint": "86b6b1c2c68c0547", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be9405799f34119a", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/aiChatEngine.ts:708"}, "properties": {"repobilityId": "164533907e571bfb", "scanner": "scanner-primary", "fingerprint": "be9405799f34119a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f80a54abd8d52c6a", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/twilioClient.smsCost.test.ts:64"}, "properties": {"repobilityId": "7805bbf83a4c818d", "scanner": "scanner-primary", "fingerprint": "f80a54abd8d52c6a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4ae2c8779714e616", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/auditScoring.test.ts:132"}, "properties": {"repobilityId": "36daee69c2f7fbff", "scanner": "scanner-primary", "fingerprint": "4ae2c8779714e616", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-811b57c2323af8d6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/auditScoring.test.ts:9"}, "properties": {"repobilityId": "e9fffe47751c2283", "scanner": "scanner-primary", "fingerprint": "811b57c2323af8d6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7bc3879226f280f0", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/auditRoutes.niche-cascade.test.ts:211"}, "properties": {"repobilityId": "74ee28a9fee41d3a", "scanner": "scanner-primary", "fingerprint": "7bc3879226f280f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-625889758d24ce11", "level": "note", "message": {"text": "Legacy-named symbol `call_backup` in server/scripts/test-tradeline-flow.ts:513"}, "properties": {"repobilityId": "ba0cc6f55d8d2435", "scanner": "scanner-primary", "fingerprint": "625889758d24ce11", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9a548764da769e69", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/scripts/test-tradeline-flow.ts:51"}, "properties": {"repobilityId": "fc8918e967faedde", "scanner": "scanner-primary", "fingerprint": "9a548764da769e69", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b6fbbe0a6ab8c0c8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/scripts/test-stripe-flow.ts:47"}, "properties": {"repobilityId": "f68620ae92177319", "scanner": "scanner-primary", "fingerprint": "b6fbbe0a6ab8c0c8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-65e38050870cb2d7", "level": "note", "message": {"text": "Legacy-named symbol `monthlyLegacy` in server/lib/stripePriceResolver.ts:37"}, "properties": {"repobilityId": "0809a7ded972b13e", "scanner": "scanner-primary", "fingerprint": "65e38050870cb2d7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ed694f1186e5431e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/lib/outscraper.ts:75"}, "properties": {"repobilityId": "d052a9f14f8da4a3", "scanner": "scanner-primary", "fingerprint": "ed694f1186e5431e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e66e3474ffb87394", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/lib/schemaSentinel.ts:193"}, "properties": {"repobilityId": "a739d0477b812c25", "scanner": "scanner-primary", "fingerprint": "e66e3474ffb87394", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a6e7d07566ab16df", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/lib/auditFollowup.ts:56"}, "properties": {"repobilityId": "311dedce36a6e949", "scanner": "scanner-primary", "fingerprint": "a6e7d07566ab16df", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c7e02aecf815d0a", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/lib/serpOrchestrator.ts:144"}, "properties": {"repobilityId": "91782e46421156ae", "scanner": "scanner-primary", "fingerprint": "7c7e02aecf815d0a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62a40c43916af693", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/lib/emailTransport.ts:115"}, "properties": {"repobilityId": "8014b98ffe174a02", "scanner": "scanner-primary", "fingerprint": "62a40c43916af693", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d618e95fe6f673f1", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/lib/voiceProfile.ts:294"}, "properties": {"repobilityId": "51a1d193b145e770", "scanner": "scanner-primary", "fingerprint": "d618e95fe6f673f1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-61172f53c0cb9641", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/lib/r2Upload.ts:58"}, "properties": {"repobilityId": "b345425cc8c09878", "scanner": "scanner-primary", "fingerprint": "61172f53c0cb9641", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ad6175c6238925fa", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/lib/bootstrapMigrations.ts:126"}, "properties": {"repobilityId": "2ab3dacfab7594e7", "scanner": "scanner-primary", "fingerprint": "ad6175c6238925fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-54df125b62acc58f", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/lib/missedCallFollowup.ts:12"}, "properties": {"repobilityId": "86df76d18e848d4e", "scanner": "scanner-primary", "fingerprint": "54df125b62acc58f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-56303f35f17a7802", "level": "note", "message": {"text": "Legacy-named symbol `test_unused` in server/lib/serpOrchestrator.test.ts:29"}, "properties": {"repobilityId": "f88b27d80ea75ea5", "scanner": "scanner-primary", "fingerprint": "56303f35f17a7802", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8b4d49b1d961d9a9", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/lib/emailOrchestrator.ts:379"}, "properties": {"repobilityId": "3be2d9a568c8d555", "scanner": "scanner-primary", "fingerprint": "8b4d49b1d961d9a9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-34bb16fc9738ed15", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/lib/emailOrchestrator.ts:301"}, "properties": {"repobilityId": "6505b3fc369789e3", "scanner": "scanner-primary", "fingerprint": "34bb16fc9738ed15", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b8b11fce8294c8d4", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/lib/logger.ts:13"}, "properties": {"repobilityId": "ef7066cb6de516ad", "scanner": "scanner-primary", "fingerprint": "b8b11fce8294c8d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3b76fe99cb1bee41", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/lib/serpProviders/dataforseo.ts:22"}, "properties": {"repobilityId": "738a91f4740f2c16", "scanner": "scanner-primary", "fingerprint": "3b76fe99cb1bee41", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6d3f6ab517a6a83a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/lib/seo/cloudflareDns.ts:44"}, "properties": {"repobilityId": "a1a44236b22e7133", "scanner": "scanner-primary", "fingerprint": "6d3f6ab517a6a83a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-34f4fd512f908448", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/routes/portalRoutes.ts:77"}, "properties": {"repobilityId": "1571fad6e160678c", "scanner": "scanner-primary", "fingerprint": "34f4fd512f908448", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b9733b02f8bf2ba4", "level": "note", "message": {"text": "Legacy-named symbol `test_unused` in server/routes/outreachAttributionRoutes.test.ts:29"}, "properties": {"repobilityId": "6fb12af51f5cd667", "scanner": "scanner-primary", "fingerprint": "b9733b02f8bf2ba4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-37f9e7bdcedb989d", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/authRoutes.ts:1031"}, "properties": {"repobilityId": "2ccf1ba2eee96ead", "scanner": "scanner-primary", "fingerprint": "37f9e7bdcedb989d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-68c67db4707b1bad", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/adminOutboundRoutes.ts:506"}, "properties": {"repobilityId": "1aeaa27a3ef6d3c1", "scanner": "scanner-primary", "fingerprint": "68c67db4707b1bad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c6cd49f70f0729b1", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/calculatorRoutes.ts:208"}, "properties": {"repobilityId": "ad3e3caba24b8420", "scanner": "scanner-primary", "fingerprint": "c6cd49f70f0729b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5774680bceb47426", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/tradelineSetupRoutes.ts:411"}, "properties": {"repobilityId": "b0e10eccedc2f8a5", "scanner": "scanner-primary", "fingerprint": "5774680bceb47426", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-391bd377ba753859", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/dopplerWebhookRoutes.ts:167"}, "properties": {"repobilityId": "bbfadf1a8ca69ca6", "scanner": "scanner-primary", "fingerprint": "391bd377ba753859", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-900bcbcc140a4521", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/stripeBillingRoutes.ts:231"}, "properties": {"repobilityId": "95df81537c0645c5", "scanner": "scanner-primary", "fingerprint": "900bcbcc140a4521", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-65d6719bf3248c20", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/adminSeoIntegrationsRoutes.ts:301"}, "properties": {"repobilityId": "76e9981b8c9a0456", "scanner": "scanner-primary", "fingerprint": "65d6719bf3248c20", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-78acd14d5f71c0aa", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/voicemailRoutes.ts:243"}, "properties": {"repobilityId": "be84471c0b60c78d", "scanner": "scanner-primary", "fingerprint": "78acd14d5f71c0aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d07c8b324219f61", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/voicemailRoutes.ts:89"}, "properties": {"repobilityId": "1297773163669fde", "scanner": "scanner-primary", "fingerprint": "5d07c8b324219f61", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-664d0029b9d0c71d", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/portalTradelineKnowledgeRoutes.ts:413"}, "properties": {"repobilityId": "1c7c9e6f0f125e7e", "scanner": "scanner-primary", "fingerprint": "664d0029b9d0c71d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9577293bb605a67b", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/aiRoutes.ts:633"}, "properties": {"repobilityId": "ad7fdf34978467a8", "scanner": "scanner-primary", "fingerprint": "9577293bb605a67b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-25c8b9f85ae3a108", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/tradelineWidgetRoutes.ts:276"}, "properties": {"repobilityId": "3f162e67b12ee519", "scanner": "scanner-primary", "fingerprint": "25c8b9f85ae3a108", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-973c3ad98043c096", "level": "note", "message": {"text": "Legacy-named symbol `stripe_contentflow_v2` in server/routes/adminEnvPresence.ts:34"}, "properties": {"repobilityId": "a81e83d6872c4a21", "scanner": "scanner-primary", "fingerprint": "973c3ad98043c096", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-347455aa78cbb847", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/routes/mobileVoiceRoutes.ts:56"}, "properties": {"repobilityId": "7761252a3d2002a6", "scanner": "scanner-primary", "fingerprint": "347455aa78cbb847", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dbe6e8aa8b7e3457", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/vapiRoutes.ts:354"}, "properties": {"repobilityId": "1dab04035ed27e6e", "scanner": "scanner-primary", "fingerprint": "dbe6e8aa8b7e3457", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b885d395f2e49d71", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/adminAiActivityRoutes.ts:238"}, "properties": {"repobilityId": "fc28ebed608bf43b", "scanner": "scanner-primary", "fingerprint": "b885d395f2e49d71", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d1b127cefc37672b", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/serviceAreaMapRoutes.ts:255"}, "properties": {"repobilityId": "350eb3c225f1d773", "scanner": "scanner-primary", "fingerprint": "d1b127cefc37672b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-75d5da097f513755", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/healthz.ts:227"}, "properties": {"repobilityId": "c60a84ac68e8b79d", "scanner": "scanner-primary", "fingerprint": "75d5da097f513755", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2ee72b08f709aade", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/chatAttachmentRoutes.ts:61"}, "properties": {"repobilityId": "2e2b5a3a7b6a9dcf", "scanner": "scanner-primary", "fingerprint": "2ee72b08f709aade", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57d350b0b27bd8d9", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/routes/index.ts:207"}, "properties": {"repobilityId": "38a4ade7ddeb5093", "scanner": "scanner-primary", "fingerprint": "57d350b0b27bd8d9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c2052e774a7b17b7", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/fullAuditWebhookHandlers.ts:92"}, "properties": {"repobilityId": "db2af1c5fcbef53a", "scanner": "scanner-primary", "fingerprint": "c2052e774a7b17b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c6b74338f395375", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/sitemapRoutes.ts:256"}, "properties": {"repobilityId": "064c34ca1c40dee1", "scanner": "scanner-primary", "fingerprint": "7c6b74338f395375", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d3e4941a981800ca", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/bookflowRoutes.ts:1089"}, "properties": {"repobilityId": "9c9cf6d257a8aa66", "scanner": "scanner-primary", "fingerprint": "d3e4941a981800ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-653620bb217f9057", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/marketingRoutes.ts:13"}, "properties": {"repobilityId": "8e7ed96225168362", "scanner": "scanner-primary", "fingerprint": "653620bb217f9057", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc9c83a18051feb1", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/invoiceTemplateRoutes.ts:145"}, "properties": {"repobilityId": "5f809be93e92fe5a", "scanner": "scanner-primary", "fingerprint": "bc9c83a18051feb1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec16430e4a6cc4e3", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/twilioCommsRoutes.ts:242"}, "properties": {"repobilityId": "947002342480f7d4", "scanner": "scanner-primary", "fingerprint": "ec16430e4a6cc4e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-70d310dcfaff189a", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/leadRoutes.ts:276"}, "properties": {"repobilityId": "81b451be6757347e", "scanner": "scanner-primary", "fingerprint": "70d310dcfaff189a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b26b2937bbc63748", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/adminCrmRoutes.ts:308"}, "properties": {"repobilityId": "2765d599ec6e2a01", "scanner": "scanner-primary", "fingerprint": "b26b2937bbc63748", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3576477a31224161", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/adminCrmRoutes.ts:3301"}, "properties": {"repobilityId": "7ec657076ec0d4c6", "scanner": "scanner-primary", "fingerprint": "3576477a31224161", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-44435975f6b87925", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/mobileApiRoutes.ts:149"}, "properties": {"repobilityId": "3dacba181e1cec63", "scanner": "scanner-primary", "fingerprint": "44435975f6b87925", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-658c04235c2c6e29", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/adminOutreachSequencesRoutes.ts:404"}, "properties": {"repobilityId": "cdc18b6fd1fbd52b", "scanner": "scanner-primary", "fingerprint": "658c04235c2c6e29", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-404f51c218f37df2", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/chatRoutes.ts:462"}, "properties": {"repobilityId": "53567800dde495d2", "scanner": "scanner-primary", "fingerprint": "404f51c218f37df2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d5d8c81fba47dfe4", "level": "note", "message": {"text": "Legacy-named symbol `seed_v1` in server/routes/socialSyncRoutes.ts:105"}, "properties": {"repobilityId": "ee315f0d6af1923d", "scanner": "scanner-primary", "fingerprint": "d5d8c81fba47dfe4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-47c9aee81ef68aa5", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/socialSyncRoutes.ts:359"}, "properties": {"repobilityId": "b35564dd8b5906f8", "scanner": "scanner-primary", "fingerprint": "47c9aee81ef68aa5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aeae6c7bfd8c60e0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/demoRoutes.ts:154"}, "properties": {"repobilityId": "3940398603c399e6", "scanner": "scanner-primary", "fingerprint": "aeae6c7bfd8c60e0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5ceb8cb5084b43af", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/aiDemoRoutes.ts:341"}, "properties": {"repobilityId": "15ec4019eca7b48d", "scanner": "scanner-primary", "fingerprint": "5ceb8cb5084b43af", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-86afc0fef7d678fc", "level": "note", "message": {"text": "Legacy-named symbol `test_unused` in server/routes/citationMatch.test.ts:23"}, "properties": {"repobilityId": "4cbc8ce6df9f377f", "scanner": "scanner-primary", "fingerprint": "86afc0fef7d678fc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bdd837a202b97d01", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/twilioRoutes.ts:106"}, "properties": {"repobilityId": "fa8242b87db0f284", "scanner": "scanner-primary", "fingerprint": "bdd837a202b97d01", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-272351d862c519cb", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/routes/freeToolsRoutes.ts:382"}, "properties": {"repobilityId": "0561656a07babece", "scanner": "scanner-primary", "fingerprint": "272351d862c519cb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c9fcbd6d8e619e89", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/freeToolsRoutes.ts:147"}, "properties": {"repobilityId": "40d4184ea4e77ddf", "scanner": "scanner-primary", "fingerprint": "c9fcbd6d8e619e89", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-39dc517c3d989879", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/mapSnapshotRoutes.ts:263"}, "properties": {"repobilityId": "b75d97dd0a012033", "scanner": "scanner-primary", "fingerprint": "39dc517c3d989879", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-72c6f217637f6042", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/marketingChatRoutes.ts:289"}, "properties": {"repobilityId": "80e3f68b50dbe30f", "scanner": "scanner-primary", "fingerprint": "72c6f217637f6042", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7013d497754143b9", "level": "note", "message": {"text": "Legacy-named symbol `test_unused` in server/routes/quotequickAiChatRoutes.fusion.test.ts:30"}, "properties": {"repobilityId": "b3c14bae29195967", "scanner": "scanner-primary", "fingerprint": "7013d497754143b9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-883b1410cab09c16", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/mobileAiImagesRoutes.ts:131"}, "properties": {"repobilityId": "61b4fd04ddabf7d2", "scanner": "scanner-primary", "fingerprint": "883b1410cab09c16", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8be0eb4b13096a08", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/widgetFreetoolsRoutes.ts:173"}, "properties": {"repobilityId": "a02f411cab3cb56d", "scanner": "scanner-primary", "fingerprint": "8be0eb4b13096a08", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a64885d8db8b2db8", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/routes/founderNotifyRoutes.ts:92"}, "properties": {"repobilityId": "2dce19a099b2a198", "scanner": "scanner-primary", "fingerprint": "a64885d8db8b2db8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-474bacb63fd11146", "level": "none", "message": {"text": "Commented-code block (10 lines) in server/routes/publicCheckoutRoutes.ts:136"}, "properties": {"repobilityId": "970e35f2a8a3090d", "scanner": "scanner-primary", "fingerprint": "474bacb63fd11146", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-50d6034662f4dd6a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/integrationHealthRoutes.ts:109"}, "properties": {"repobilityId": "4c23a5c4c9034b1b", "scanner": "scanner-primary", "fingerprint": "50d6034662f4dd6a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3c864dfe467f3143", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/routes/quotequickAiChatRoutes.ts:386"}, "properties": {"repobilityId": "1d50c47bf6fc0829", "scanner": "scanner-primary", "fingerprint": "3c864dfe467f3143", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-54e7c7f3bf13bd11", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/portal/catalog.ts:128"}, "properties": {"repobilityId": "676926cefbcb3aa3", "scanner": "scanner-primary", "fingerprint": "54e7c7f3bf13bd11", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5281c2715229f434", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/portal/onboarding.ts:107"}, "properties": {"repobilityId": "740efd42160d49bb", "scanner": "scanner-primary", "fingerprint": "5281c2715229f434", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2486203d97d16070", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/portal/contentflow.ts:741"}, "properties": {"repobilityId": "841576d4c2902ceb", "scanner": "scanner-primary", "fingerprint": "2486203d97d16070", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cdd5f268b704334b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/portal/contentflowDashboard.ts:201"}, "properties": {"repobilityId": "516fbe3c11843d99", "scanner": "scanner-primary", "fingerprint": "cdd5f268b704334b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-13b1e50039b4ee54", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/portal/chat.ts:398"}, "properties": {"repobilityId": "bdfe419dba5ea504", "scanner": "scanner-primary", "fingerprint": "13b1e50039b4ee54", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b24e97782db19861", "level": "note", "message": {"text": "Legacy-named symbol `test_unused` in server/routes/portal/wave73KpiStats.test.ts:5"}, "properties": {"repobilityId": "6e632872ee139e66", "scanner": "scanner-primary", "fingerprint": "b24e97782db19861", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9446af3b8bfab03a", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/portal/settings.ts:224"}, "properties": {"repobilityId": "5384ca81accc36d3", "scanner": "scanner-primary", "fingerprint": "9446af3b8bfab03a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1b08e53cdc6da78e", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/routes/portal/mapguard/dashboardKpis.ts:279"}, "properties": {"repobilityId": "caa5180b3a3a6463", "scanner": "scanner-primary", "fingerprint": "1b08e53cdc6da78e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f9260d5c8fa14b01", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/mapguardTaskEngine.ts:1170"}, "properties": {"repobilityId": "2cf156d0dc159056", "scanner": "scanner-primary", "fingerprint": "f9260d5c8fa14b01", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fbe859d1fe78388f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/wordpressMaintenance.ts:356"}, "properties": {"repobilityId": "fbc5eb133ba77bfe", "scanner": "scanner-primary", "fingerprint": "fbe859d1fe78388f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0a0144f57f8e35cd", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/tradelineTemplates.ts:2176"}, "properties": {"repobilityId": "9cfeff01971db3b5", "scanner": "scanner-primary", "fingerprint": "0a0144f57f8e35cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7e9f1330da79605b", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/adminAgentTools.ts:629"}, "properties": {"repobilityId": "b0ba4878b74ed5ee", "scanner": "scanner-primary", "fingerprint": "7e9f1330da79605b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c863c1d0655f1df", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/outreachPlatform.ts:369"}, "properties": {"repobilityId": "e6bf173cbd0260b3", "scanner": "scanner-primary", "fingerprint": "1c863c1d0655f1df", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bce2d2aefd1b9f2d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/outreachPlatform.ts:106"}, "properties": {"repobilityId": "d50f812faccf55b6", "scanner": "scanner-primary", "fingerprint": "bce2d2aefd1b9f2d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-75f1ac9badad089a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/alertService.ts:146"}, "properties": {"repobilityId": "9a67e111f93d7b6c", "scanner": "scanner-primary", "fingerprint": "75f1ac9badad089a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-20da8b7a2bff7f9b", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/assistant.ts:292"}, "properties": {"repobilityId": "12ad3ca00e272d40", "scanner": "scanner-primary", "fingerprint": "20da8b7a2bff7f9b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d56d7f809fc13808", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/aiAgentLoopCore.ts:317"}, "properties": {"repobilityId": "868b09cebc3e6b89", "scanner": "scanner-primary", "fingerprint": "d56d7f809fc13808", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f0f23a2209ddec7", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/mapguardAlerts.ts:359"}, "properties": {"repobilityId": "f7d60005adca220f", "scanner": "scanner-primary", "fingerprint": "4f0f23a2209ddec7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-296227844df50fe1", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/vapiService.ts:109"}, "properties": {"repobilityId": "ad614111e17c6c12", "scanner": "scanner-primary", "fingerprint": "296227844df50fe1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-78bf07ff24de67e3", "level": "note", "message": {"text": "Legacy-named symbol `test_unused` in server/services/outboundSafety.test.ts:5"}, "properties": {"repobilityId": "98254a0c804d0461", "scanner": "scanner-primary", "fingerprint": "78bf07ff24de67e3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-afae6124c91475a8", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/inboundSmsConcierge.ts:312"}, "properties": {"repobilityId": "411195d057817cf0", "scanner": "scanner-primary", "fingerprint": "afae6124c91475a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac6212b5177b9cfe", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/inboundEmailConcierge.ts:373"}, "properties": {"repobilityId": "f37191081755d14f", "scanner": "scanner-primary", "fingerprint": "ac6212b5177b9cfe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8a023c46948ab0e9", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/inboundEmailIngest.ts:170"}, "properties": {"repobilityId": "c22c8e086e654c97", "scanner": "scanner-primary", "fingerprint": "8a023c46948ab0e9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e6e456c52b227dd6", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/voiceFollowupConcierge.ts:464"}, "properties": {"repobilityId": "47dd3c30752c28ef", "scanner": "scanner-primary", "fingerprint": "e6e456c52b227dd6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b005eed0e9ceaae9", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/aiSurfaces.ts:50"}, "properties": {"repobilityId": "704622bd5954a001", "scanner": "scanner-primary", "fingerprint": "b005eed0e9ceaae9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9bd53bcb5802069c", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/promptBuilder.ts:437"}, "properties": {"repobilityId": "0b6795c80b6407e9", "scanner": "scanner-primary", "fingerprint": "9bd53bcb5802069c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a1dc67ca08e34151", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/outboundArtifactGenerator.ts:134"}, "properties": {"repobilityId": "f0d3f0b26ba74d56", "scanner": "scanner-primary", "fingerprint": "a1dc67ca08e34151", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-899b7ee5836c59c9", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/rankflowReports.ts:497"}, "properties": {"repobilityId": "afea7852c49ab38b", "scanner": "scanner-primary", "fingerprint": "899b7ee5836c59c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a05cd12969268101", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/aiService.ts:303"}, "properties": {"repobilityId": "76cf9d0292b5c254", "scanner": "scanner-primary", "fingerprint": "a05cd12969268101", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-832e6fea106c96ff", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/reviewRequestService.ts:389"}, "properties": {"repobilityId": "598249afa7f95d4f", "scanner": "scanner-primary", "fingerprint": "832e6fea106c96ff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0bebdba8feecda12", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/tradelineNotifications.ts:60"}, "properties": {"repobilityId": "8d383a404a9fae06", "scanner": "scanner-primary", "fingerprint": "0bebdba8feecda12", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e2b6b292a395698d", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/pricingDocExtractor.ts:71"}, "properties": {"repobilityId": "5397109bd6cc8995", "scanner": "scanner-primary", "fingerprint": "e2b6b292a395698d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1672c8385b9e1c0b", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/aiBudgetRouter.ts:119"}, "properties": {"repobilityId": "0b3c9d73f3ec90f6", "scanner": "scanner-primary", "fingerprint": "1672c8385b9e1c0b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-26bd49e19f3da362", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/opsEngine.ts:197"}, "properties": {"repobilityId": "4eeef0d0b4d6ffde", "scanner": "scanner-primary", "fingerprint": "26bd49e19f3da362", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ffae2dfc3e0c3285", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/competitorSearch.ts:468"}, "properties": {"repobilityId": "093e92dfb08372c5", "scanner": "scanner-primary", "fingerprint": "ffae2dfc3e0c3285", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd14c53793213cce", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/emailCharts.ts:134"}, "properties": {"repobilityId": "9e5d7396f83504a0", "scanner": "scanner-primary", "fingerprint": "fd14c53793213cce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-efa5492e10e73928", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/tradelineCostService.ts:103"}, "properties": {"repobilityId": "06a7b48f3dbc6f39", "scanner": "scanner-primary", "fingerprint": "efa5492e10e73928", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3fcc492822b3da0a", "level": "note", "message": {"text": "Legacy-named symbol `test_unused` in server/services/tradelineTemplates.routing.test.ts:5"}, "properties": {"repobilityId": "5b75b71742fab750", "scanner": "scanner-primary", "fingerprint": "3fcc492822b3da0a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-56c2b86182451f5e", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/mapguardMonitor.ts:35"}, "properties": {"repobilityId": "ac2c24f8740a6c86", "scanner": "scanner-primary", "fingerprint": "56c2b86182451f5e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d27ffcd16cf95ba4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/mapguardMonitor.ts:131"}, "properties": {"repobilityId": "e984cc89e011ace0", "scanner": "scanner-primary", "fingerprint": "d27ffcd16cf95ba4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-abfed52d9d273d92", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/mapguardUpsell.ts:286"}, "properties": {"repobilityId": "fa494af444472fd5", "scanner": "scanner-primary", "fingerprint": "abfed52d9d273d92", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e142c4cd28e16da", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/outscraperClient.ts:173"}, "properties": {"repobilityId": "63e2fabb86877d7c", "scanner": "scanner-primary", "fingerprint": "3e142c4cd28e16da", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b81f5d0ffb21ad85", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/outscraperClient.ts:130"}, "properties": {"repobilityId": "db675afd02d2c819", "scanner": "scanner-primary", "fingerprint": "b81f5d0ffb21ad85", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ae248bafc163afd8", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/mapguard/mapguardPostScheduler.ts:146"}, "properties": {"repobilityId": "fbe1731ed47d2ddf", "scanner": "scanner-primary", "fingerprint": "ae248bafc163afd8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5ebefaa160a0515c", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/contentflow/articleService.ts:424"}, "properties": {"repobilityId": "404a7b799c613d90", "scanner": "scanner-primary", "fingerprint": "5ebefaa160a0515c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d750c434f4daf1b6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/contentflow/videoGenerationService.ts:198"}, "properties": {"repobilityId": "5f9c265139088c5c", "scanner": "scanner-primary", "fingerprint": "d750c434f4daf1b6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-36d9f26367639a79", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/contentflow/imageGenerationService.ts:274"}, "properties": {"repobilityId": "09c6b386a120d8d7", "scanner": "scanner-primary", "fingerprint": "36d9f26367639a79", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-39c9b2f5ab4c4dbf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/contentflow/imagePostProcess.ts:92"}, "properties": {"repobilityId": "ed1cbc9916f8711c", "scanner": "scanner-primary", "fingerprint": "39c9b2f5ab4c4dbf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-87c3131c50757bf1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/contentflow/youtubePublisher.ts:60"}, "properties": {"repobilityId": "2bc553dbb5c335d9", "scanner": "scanner-primary", "fingerprint": "87c3131c50757bf1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1c120ad5fa0d1a4d", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/contentflow/adapters/emailAdapter.ts:74"}, "properties": {"repobilityId": "fc8e98de4226ce70", "scanner": "scanner-primary", "fingerprint": "1c120ad5fa0d1a4d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-adff4993313d5fff", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/contentflow/videoStitcher/stitcher.test.ts:112"}, "properties": {"repobilityId": "ed5c2a9acc7199f1", "scanner": "scanner-primary", "fingerprint": "adff4993313d5fff", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0b1d938b17bf33a0", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/contentflow/qualityGate/humanizeRewrite.ts:533"}, "properties": {"repobilityId": "9c2463a3b6404ab4", "scanner": "scanner-primary", "fingerprint": "0b1d938b17bf33a0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9abdedeb6990d6a8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/ai/imageRotator.ts:43"}, "properties": {"repobilityId": "0329cfdc42bcf5f8", "scanner": "scanner-primary", "fingerprint": "9abdedeb6990d6a8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-461aba2c9209d387", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/ai/textRotator.ts:130"}, "properties": {"repobilityId": "c0dfee1a6847227e", "scanner": "scanner-primary", "fingerprint": "461aba2c9209d387", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-12d023dafc9dae86", "level": "note", "message": {"text": "Legacy-named symbol `call_backup` in server/services/onboardingMappers/index.ts:63"}, "properties": {"repobilityId": "594dcf1fcc781147", "scanner": "scanner-primary", "fingerprint": "12d023dafc9dae86", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-588f1a0c38202b17", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/socialSync/costTracker.ts:121"}, "properties": {"repobilityId": "30181ea1c8fc2103", "scanner": "scanner-primary", "fingerprint": "588f1a0c38202b17", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cf119f5db67340c2", "level": "note", "message": {"text": "Legacy-named symbol `ai_v1` in server/services/socialSync/topicGenerator.ts:167"}, "properties": {"repobilityId": "0670979074bb5b3f", "scanner": "scanner-primary", "fingerprint": "cf119f5db67340c2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-de0c431cf12357ad", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/socialSync/orchestrator.ts:296"}, "properties": {"repobilityId": "a34076736946645c", "scanner": "scanner-primary", "fingerprint": "de0c431cf12357ad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-796744494673ae03", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/socialSync/facebookService.ts:59"}, "properties": {"repobilityId": "50c9f500d712581e", "scanner": "scanner-primary", "fingerprint": "796744494673ae03", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c416089bff060d96", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/socialSync/instagramService.ts:82"}, "properties": {"repobilityId": "6d9820ea646734ed", "scanner": "scanner-primary", "fingerprint": "c416089bff060d96", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-82e288e9a214127b", "level": "note", "message": {"text": "Legacy-named symbol `queue_backup` in server/services/aiActions/handlers/webcare.ts:97"}, "properties": {"repobilityId": "f5ae51a8501e2b1e", "scanner": "scanner-primary", "fingerprint": "82e288e9a214127b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-757d04427b86314a", "level": "note", "message": {"text": "Legacy-named symbol `daysOld` in server/services/businessOperator/detectors/draftCalculators.ts:40"}, "properties": {"repobilityId": "413b3225e618301a", "scanner": "scanner-primary", "fingerprint": "757d04427b86314a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-482f8aaeae99b5c2", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/tradelineSetup/provisionNumber.ts:159"}, "properties": {"repobilityId": "1c2303d6073cef5c", "scanner": "scanner-primary", "fingerprint": "482f8aaeae99b5c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1a6a72fd53eceb3c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/tradelineSetup/provisionNumber.ts:269"}, "properties": {"repobilityId": "7bedc55a836db74d", "scanner": "scanner-primary", "fingerprint": "1a6a72fd53eceb3c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-88185b398249b5f4", "level": "note", "message": {"text": "Legacy-named symbol `call_backup` in server/services/tradelineSetup/unifyNumber.test.ts:162"}, "properties": {"repobilityId": "da424ded01762790", "scanner": "scanner-primary", "fingerprint": "88185b398249b5f4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6656c56b3a73ec6b", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/tradelineSetup/portSubmission.ts:165"}, "properties": {"repobilityId": "bade00fe466a21e4", "scanner": "scanner-primary", "fingerprint": "6656c56b3a73ec6b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fce54fe3e5e23b73", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/booking/bookflowService.ts:313"}, "properties": {"repobilityId": "3c07be134dea9d26", "scanner": "scanner-primary", "fingerprint": "fce54fe3e5e23b73", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7a8dfe68b79e6b6a", "level": "note", "message": {"text": "Legacy-named symbol `test_unused` in server/services/rankflow/serpRankProvider.test.ts:32"}, "properties": {"repobilityId": "90705d09a5440e07", "scanner": "scanner-primary", "fingerprint": "7a8dfe68b79e6b6a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f1bec2bc107946bf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/reputation/gbpReviewIngestion.ts:50"}, "properties": {"repobilityId": "b058bfc7912772b8", "scanner": "scanner-primary", "fingerprint": "f1bec2bc107946bf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-887110a8042c9e35", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/reputation/trustpilotClient.ts:59"}, "properties": {"repobilityId": "55c3664b53db984f", "scanner": "scanner-primary", "fingerprint": "887110a8042c9e35", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-be5414fd29dcbf7e", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/reputation/reviewRequestService.ts:176"}, "properties": {"repobilityId": "4cb9566e7670ab7b", "scanner": "scanner-primary", "fingerprint": "be5414fd29dcbf7e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-84406d595747365b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/reputation/yelpClient.ts:51"}, "properties": {"repobilityId": "44bac16c9bdd74e0", "scanner": "scanner-primary", "fingerprint": "84406d595747365b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7396603b371a8f46", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/seoContent/programmaticMatrixGenerator.ts:472"}, "properties": {"repobilityId": "9bfbebda0091626f", "scanner": "scanner-primary", "fingerprint": "7396603b371a8f46", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1789d340400c67a1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/citationTracker/scrapers/httpClient.ts:72"}, "properties": {"repobilityId": "ace1eb5684509219", "scanner": "scanner-primary", "fingerprint": "1789d340400c67a1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a709714d1d200fa4", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/engine/routingWorker.ts:210"}, "properties": {"repobilityId": "e403aaac79c0245f", "scanner": "scanner-primary", "fingerprint": "a709714d1d200fa4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ab05dbbe92afdae", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/jobs/trialProExpiryWorker.ts:41"}, "properties": {"repobilityId": "7eff96f8862e42c5", "scanner": "scanner-primary", "fingerprint": "1ab05dbbe92afdae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b9f203ea24d9511", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/jobs/vapiAssistantHealthCheck.ts:115"}, "properties": {"repobilityId": "1451a6d592c19636", "scanner": "scanner-primary", "fingerprint": "0b9f203ea24d9511", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-10409d82e165640f", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/jobs/reviewMonitorWorker.ts:151"}, "properties": {"repobilityId": "1726934a35c2f1df", "scanner": "scanner-primary", "fingerprint": "10409d82e165640f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-393ca061d21d3cc0", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/jobs/portStatusPollWorker.ts:215"}, "properties": {"repobilityId": "e1b438ae73f3e3ec", "scanner": "scanner-primary", "fingerprint": "393ca061d21d3cc0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f1741b1be8b11045", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/jobs/rankfluxAlertWorker.ts:104"}, "properties": {"repobilityId": "cebade7306fce628", "scanner": "scanner-primary", "fingerprint": "f1741b1be8b11045", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6af3ee866ea6aeb0", "level": "note", "message": {"text": "Legacy-named symbol `WizardLegacy` in server/jobs/trialLifecycleWorker.test.ts:87"}, "properties": {"repobilityId": "3b0983d7d7d1677a", "scanner": "scanner-primary", "fingerprint": "6af3ee866ea6aeb0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-99b539cbc8105ba3", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/jobs/incompleteSignupWorker.ts:40"}, "properties": {"repobilityId": "93f0587325611948", "scanner": "scanner-primary", "fingerprint": "99b539cbc8105ba3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fccb8ad8c3f3918e", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/jobs/followupWorker.ts:232"}, "properties": {"repobilityId": "4df792a54cfda69f", "scanner": "scanner-primary", "fingerprint": "fccb8ad8c3f3918e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6d249130e336d90b", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/jobs/scheduler.ts:375"}, "properties": {"repobilityId": "bf63a45f6de552aa", "scanner": "scanner-primary", "fingerprint": "6d249130e336d90b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-faea3415543b3a69", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/jobs/reviewFollowupWorker.ts:155"}, "properties": {"repobilityId": "df471379cead0ead", "scanner": "scanner-primary", "fingerprint": "faea3415543b3a69", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-81faaf83564c676b", "level": "note", "message": {"text": "Legacy-named symbol `test_unused` in server/jobs/quotequickHomeownerSms.test.ts:10"}, "properties": {"repobilityId": "ffdd2b8276f6c2dd", "scanner": "scanner-primary", "fingerprint": "81faaf83564c676b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6e42bcf6c3f1fb05", "level": "note", "message": {"text": "Legacy-named symbol `test_unused` in server/jobs/tradelineMonthlyDigest.test.ts:5"}, "properties": {"repobilityId": "aa9e10794fffae11", "scanner": "scanner-primary", "fingerprint": "6e42bcf6c3f1fb05", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ffd9d3de867fb077", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/jobs/outboundSyncWorker.ts:282"}, "properties": {"repobilityId": "520959d02af22576", "scanner": "scanner-primary", "fingerprint": "ffd9d3de867fb077", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5ca18bcb245f4350", "level": "note", "message": {"text": "Legacy-named symbol `test_unused` in server/jobs/quotequickMonthlyDigest.test.ts:5"}, "properties": {"repobilityId": "ab7ecd6fa442f347", "scanner": "scanner-primary", "fingerprint": "5ca18bcb245f4350", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c1fc63b8aa8ed20f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/jobs/imageRetentionWorker.ts:88"}, "properties": {"repobilityId": "2b339581594334dc", "scanner": "scanner-primary", "fingerprint": "c1fc63b8aa8ed20f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-431dfa2474298ff2", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/jobs/videoRenderWorker.ts:623"}, "properties": {"repobilityId": "0bbecafd439f0d40", "scanner": "scanner-primary", "fingerprint": "431dfa2474298ff2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d9f90ddf5a5672c8", "level": "note", "message": {"text": "Legacy-named symbol `test_unused` in server/jobs/incompleteSignupWorker.test.ts:29"}, "properties": {"repobilityId": "ae174610c484a53b", "scanner": "scanner-primary", "fingerprint": "d9f90ddf5a5672c8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0062219c78ae9307", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/jobs/incompleteSignupWorker.test.ts:320"}, "properties": {"repobilityId": "e76b9ba84038181e", "scanner": "scanner-primary", "fingerprint": "0062219c78ae9307", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76089aaa1fb8951b", "level": "note", "message": {"text": "Legacy-named symbol `test_unused` in server/jobs/contentflowMonthlyDigest.test.ts:5"}, "properties": {"repobilityId": "9c690ceee97af6f5", "scanner": "scanner-primary", "fingerprint": "76089aaa1fb8951b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b602bb44ecf4da70", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/jobs/rankflowWorker.ts:54"}, "properties": {"repobilityId": "5868cf6fc33df695", "scanner": "scanner-primary", "fingerprint": "b602bb44ecf4da70", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-855073becefb0a01", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/storage/calculator.ts:98"}, "properties": {"repobilityId": "b0f1d9c57ff373ec", "scanner": "scanner-primary", "fingerprint": "855073becefb0a01", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5b2e721b05c39c98", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 infra/quotequick-wildcard-proxy.worker.js:41"}, "properties": {"repobilityId": "3a473930843dc286", "scanner": "scanner-primary", "fingerprint": "5b2e721b05c39c98", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-59a12423985fca9c", "level": "note", "message": {"text": "316 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "66aa10c22ce9b0a5", "scanner": "scanner-primary", "fingerprint": "59a12423985fca9c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-63c571d526b8287a", "level": "warning", "message": {"text": "Frontend route `/internal/template-render/:templateId` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "c369a296c21ef0dd", "scanner": "scanner-primary", "fingerprint": "63c571d526b8287a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-0f1ba6fbd20f9285", "level": "warning", "message": {"text": "Frontend route `/admin/ai-channels` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "438981322ad014ee", "scanner": "scanner-primary", "fingerprint": "0f1ba6fbd20f9285", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-3023cbc974ade62a", "level": "warning", "message": {"text": "Frontend route `/admin/seo/review` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "736975f90474f755", "scanner": "scanner-primary", "fingerprint": "3023cbc974ade62a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-58472d20619e7226", "level": "warning", "message": {"text": "Frontend route `/admin/crm/clients/:id` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "62a92c230674d4f6", "scanner": "scanner-primary", "fingerprint": "58472d20619e7226", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-47a3d5c1b6410db3", "level": "warning", "message": {"text": "Frontend route `/admin/content-pipeline` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "1e5c330a3085c5e2", "scanner": "scanner-primary", "fingerprint": "47a3d5c1b6410db3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c6d59b9c88cbaa8a", "level": "warning", "message": {"text": "Frontend route `/admin/audit-log` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "d80d25ee8fa7df06", "scanner": "scanner-primary", "fingerprint": "c6d59b9c88cbaa8a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-bf0f002ca52e36ce", "level": "warning", "message": {"text": "Frontend route `/admin/chat-history` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "c832207cecb03948", "scanner": "scanner-primary", "fingerprint": "bf0f002ca52e36ce", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-08d7e388f7c57feb", "level": "warning", "message": {"text": "Frontend route `/admin/integrations/google` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "2396a324bf982a26", "scanner": "scanner-primary", "fingerprint": "08d7e388f7c57feb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-42a3084cab30d219", "level": "warning", "message": {"text": "Frontend route `/admin/tradeline/learning` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "3b6ee45375769d9b", "scanner": "scanner-primary", "fingerprint": "42a3084cab30d219", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-e539005ff6ad3e86", "level": "warning", "message": {"text": "Frontend route `/admin/tradeline/voices` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "1e72875b325d4ebf", "scanner": "scanner-primary", "fingerprint": "e539005ff6ad3e86", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-abe067c9b9dd48d2", "level": "warning", "message": {"text": "Frontend route `/admin/tradeline/ports` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "47ca416f4280effb", "scanner": "scanner-primary", "fingerprint": "abe067c9b9dd48d2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-1c58ed8abc5e2db1", "level": "warning", "message": {"text": "Frontend route `/admin/mobile-preview` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "c27e128c3e372953", "scanner": "scanner-primary", "fingerprint": "1c58ed8abc5e2db1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-175a383caefa40de", "level": "warning", "message": {"text": "Frontend route `/admin/quotequick/trades/:id` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "32d839705218f389", "scanner": "scanner-primary", "fingerprint": "175a383caefa40de", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-4a7ef47089bee8ae", "level": "warning", "message": {"text": "Frontend route `/admin/quotequick/templates/:id` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "c4b4ba6612863f19", "scanner": "scanner-primary", "fingerprint": "4a7ef47089bee8ae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-5ccc2a78b0a22423", "level": "warning", "message": {"text": "Frontend route `/admin/api-platform/users/:userId` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "b91b07555420576f", "scanner": "scanner-primary", "fingerprint": "5ccc2a78b0a22423", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-dff0325f4040f9ee", "level": "warning", "message": {"text": "Frontend route `/admin/crm/support/:id` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "e0c850011f08be5c", "scanner": "scanner-primary", "fingerprint": "dff0325f4040f9ee", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-cf55041abb528bd1", "level": "warning", "message": {"text": "Frontend route `/admin/waitlist` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "25c82fdc30e90320", "scanner": "scanner-primary", "fingerprint": "cf55041abb528bd1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-a075f43940bb4956", "level": "warning", "message": {"text": "Frontend route `/admin/products/:id` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "7e1c8d176a92ab44", "scanner": "scanner-primary", "fingerprint": "a075f43940bb4956", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-983f10b47e74aff5", "level": "warning", "message": {"text": "Frontend route `/admin/service-ops` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "33530a05437c3e56", "scanner": "scanner-primary", "fingerprint": "983f10b47e74aff5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-25a9f0c023ea77af", "level": "warning", "message": {"text": "Frontend route `/admin/crm/mapguard/ops` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "9a7d46e7c4f900b2", "scanner": "scanner-primary", "fingerprint": "25a9f0c023ea77af", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-19c75e9ab9993072", "level": "warning", "message": {"text": "Frontend route `/admin/crm/ai-budget` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "34ebbe3bf4fb6b93", "scanner": "scanner-primary", "fingerprint": "19c75e9ab9993072", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-022e45b4bd67274c", "level": "warning", "message": {"text": "Frontend route `/admin/ai-activity` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "5db2c2a4f01b243e", "scanner": "scanner-primary", "fingerprint": "022e45b4bd67274c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-a546951f6fb07ee0", "level": "warning", "message": {"text": "Frontend route `/admin/ui-primitives` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "55a7073ef50b62ab", "scanner": "scanner-primary", "fingerprint": "a546951f6fb07ee0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-14f8b3178c24f8a6", "level": "warning", "message": {"text": "Frontend route `/admin/system/availability` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "04de84c536b67761", "scanner": "scanner-primary", "fingerprint": "14f8b3178c24f8a6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b7276a01e9a950fe", "level": "warning", "message": {"text": "Frontend route `/admin/system/deployment-health` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "17b3354996da9042", "scanner": "scanner-primary", "fingerprint": "b7276a01e9a950fe", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f5d93fdf6c0bb6bf", "level": "warning", "message": {"text": "Frontend route `/admin/outbound` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "81c6195c053e53df", "scanner": "scanner-primary", "fingerprint": "f5d93fdf6c0bb6bf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b5447e10e184a830", "level": "warning", "message": {"text": "Frontend route `/portal/tradeline/port-status` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "a7c3f8c1aa387541", "scanner": "scanner-primary", "fingerprint": "b5447e10e184a830", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-15d1134e4f6d540c", "level": "warning", "message": {"text": "Frontend route `/portal/tradeline/email-domain/setup` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "6eb6974efee66d25", "scanner": "scanner-primary", "fingerprint": "15d1134e4f6d540c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-437b6ae62793666e", "level": "warning", "message": {"text": "Frontend route `/portal/tradeline/chat-widget/install-onboarding` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "5200af5a2ef2a5b6", "scanner": "scanner-primary", "fingerprint": "437b6ae62793666e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-6a58692b965c46f7", "level": "warning", "message": {"text": "Frontend route `/admin/install-queue` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "fdee5126ac099c9c", "scanner": "scanner-primary", "fingerprint": "6a58692b965c46f7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-d865145676d38b85", "level": "warning", "message": {"text": "Frontend route `/portal/onboarding/:id` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "4c8032b4caea17eb", "scanner": "scanner-primary", "fingerprint": "d865145676d38b85", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f755e690fa6caab5", "level": "warning", "message": {"text": "Frontend route `/portal/services/:id` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "7a4043014765772e", "scanner": "scanner-primary", "fingerprint": "f755e690fa6caab5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-0667009e409b5d54", "level": "warning", "message": {"text": "Frontend route `/portal/mapguard/setup` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "037a6aedf2000ab9", "scanner": "scanner-primary", "fingerprint": "0667009e409b5d54", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-e647dc2218d3d746", "level": "warning", "message": {"text": "Frontend route `/portal/reputationshield/setup` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "b9c8d9a985d55fbe", "scanner": "scanner-primary", "fingerprint": "e647dc2218d3d746", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-4a87f100e9cb9aa8", "level": "warning", "message": {"text": "Frontend route `/portal/settings/notifications` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "ec342acc75099e24", "scanner": "scanner-primary", "fingerprint": "4a87f100e9cb9aa8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-1a32413dda50d929", "level": "warning", "message": {"text": "Frontend route `/portal/settings/sms-templates` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "20a7901a3087fd30", "scanner": "scanner-primary", "fingerprint": "1a32413dda50d929", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-a37fee759bed32b6", "level": "warning", "message": {"text": "Frontend route `/portal/rankflow/setup` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "9904bcfac08f34cb", "scanner": "scanner-primary", "fingerprint": "a37fee759bed32b6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-134decdc441be263", "level": "warning", "message": {"text": "Frontend route `/portal/contentflow/setup` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "97c62a3ca4faf7de", "scanner": "scanner-primary", "fingerprint": "134decdc441be263", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-1ab5f30e144ba22b", "level": "warning", "message": {"text": "Frontend route `/portal/help/tickets/:id` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "72df3605ddafb75a", "scanner": "scanner-primary", "fingerprint": "1ab5f30e144ba22b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-58899a0fd5f00875", "level": "warning", "message": {"text": "Frontend route `/portal/socialsync/dashboard` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "b843037e584d5ae0", "scanner": "scanner-primary", "fingerprint": "58899a0fd5f00875", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-33f5e59fed14eff3", "level": "warning", "message": {"text": "Frontend route `/portal/socialsync/setup` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "40f163c8de0e8765", "scanner": "scanner-primary", "fingerprint": "33f5e59fed14eff3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f664c8c14b9df2aa", "level": "warning", "message": {"text": "Frontend route `/portal/reputation` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "909c6466cd5f1c78", "scanner": "scanner-primary", "fingerprint": "f664c8c14b9df2aa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-035cb294a7133a2b", "level": "warning", "message": {"text": "Frontend route `/portal/invoices/:id` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "40af8fcc2c220c5f", "scanner": "scanner-primary", "fingerprint": "035cb294a7133a2b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-a4ad7799376ec1f4", "level": "warning", "message": {"text": "Frontend route `/portal/chat-history` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "285db52c4b708239", "scanner": "scanner-primary", "fingerprint": "a4ad7799376ec1f4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-e5b2790a82626f33", "level": "warning", "message": {"text": "Frontend route `/portal/calculators/:id/analytics` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "bef07e0c17fb87fd", "scanner": "scanner-primary", "fingerprint": "e5b2790a82626f33", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-1f7cf7133d822e20", "level": "warning", "message": {"text": "Frontend route `/compare/reputationshield-vs-nicejob` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "d82e536f451d90d4", "scanner": "scanner-primary", "fingerprint": "1f7cf7133d822e20", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-bd99dca21f7672cf", "level": "warning", "message": {"text": "Frontend route `/compare/:slug` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "fd90d1c23b652624", "scanner": "scanner-primary", "fingerprint": "bd99dca21f7672cf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-20595882ab56c8bd", "level": "warning", "message": {"text": "Frontend route `/products/assistants` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "adf2f1ca3fdbf713", "scanner": "scanner-primary", "fingerprint": "20595882ab56c8bd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-68fe57b302912491", "level": "warning", "message": {"text": "Frontend route `/products/ai-chat` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "eb45fa317e32e281", "scanner": "scanner-primary", "fingerprint": "68fe57b302912491", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c1b5a063555f74fd", "level": "warning", "message": {"text": "Frontend route `/products/ai-voice` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "982a8b525b50c94b", "scanner": "scanner-primary", "fingerprint": "c1b5a063555f74fd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c8a6c09b4657fe05", "level": "warning", "message": {"text": "Frontend route `/products/quickquote` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "4aec794bcd58702c", "scanner": "scanner-primary", "fingerprint": "c8a6c09b4657fe05", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-71df1ed6a40c9bf6", "level": "warning", "message": {"text": "Frontend route `/products/booking-addon` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "959708360a5fe95d", "scanner": "scanner-primary", "fingerprint": "71df1ed6a40c9bf6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-bfb152c6604c069a", "level": "warning", "message": {"text": "Frontend route `/products/fix-and-optimize` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "5cf59d09f7306393", "scanner": "scanner-primary", "fingerprint": "bfb152c6604c069a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c35cc52f52854c79", "level": "warning", "message": {"text": "Frontend route `/products/:slug` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "485b8a4c2641e434", "scanner": "scanner-primary", "fingerprint": "c35cc52f52854c79", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-4c62b2a02bc4a2a3", "level": "warning", "message": {"text": "Frontend route `/solutions/:slug` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "423ad64a841e6632", "scanner": "scanner-primary", "fingerprint": "4c62b2a02bc4a2a3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-8312bfdc053c8a1f", "level": "warning", "message": {"text": "Frontend route `/demos/:slug` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "e2f575f1fabca2c6", "scanner": "scanner-primary", "fingerprint": "8312bfdc053c8a1f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f414594d09caaf07", "level": "warning", "message": {"text": "Frontend route `/product/:slug` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "41f0b4bbea49d764", "scanner": "scanner-primary", "fingerprint": "f414594d09caaf07", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-30dbc65edc2739f2", "level": "warning", "message": {"text": "Frontend route `/product` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "bb1bd9be442b3438", "scanner": "scanner-primary", "fingerprint": "30dbc65edc2739f2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-276ddc58b853b5c3", "level": "warning", "message": {"text": "Frontend route `/platform` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "8bf27b8e63b8d920", "scanner": "scanner-primary", "fingerprint": "276ddc58b853b5c3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-56186aaa3c3ac774", "level": "warning", "message": {"text": "Frontend route `/plans` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "eedc12a85688ca77", "scanner": "scanner-primary", "fingerprint": "56186aaa3c3ac774", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-296520b226acca17", "level": "warning", "message": {"text": "Frontend route `/checkout/success` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "f5b791b052f056b5", "scanner": "scanner-primary", "fingerprint": "296520b226acca17", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-5de61152e303869d", "level": "warning", "message": {"text": "Frontend route `/checkout/cancelled` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "828ff5a762bd0c3a", "scanner": "scanner-primary", "fingerprint": "5de61152e303869d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-19673c34c1861a36", "level": "warning", "message": {"text": "Frontend route `/signup/business` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "93f51c539d8148d9", "scanner": "scanner-primary", "fingerprint": "19673c34c1861a36", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-cbdc6e33593d6c7e", "level": "warning", "message": {"text": "Frontend route `/bundles` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "195458a9b9df0814", "scanner": "scanner-primary", "fingerprint": "cbdc6e33593d6c7e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-ad4271e0e81fa8cf", "level": "warning", "message": {"text": "Frontend route `/templates/:slug` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "a8e13c9f7cd1d9cd", "scanner": "scanner-primary", "fingerprint": "ad4271e0e81fa8cf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-1b0c81e27478c223", "level": "warning", "message": {"text": "Frontend route `/ai-receptionists/:slug` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "04f6072b07010e98", "scanner": "scanner-primary", "fingerprint": "1b0c81e27478c223", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-a5a58d774bd1f96a", "level": "warning", "message": {"text": "Frontend route `/design-showcase` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "57d36362ba412a53", "scanner": "scanner-primary", "fingerprint": "a5a58d774bd1f96a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-a08941d392f0a5e4", "level": "warning", "message": {"text": "Frontend route `/mockups/compete` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "fae7b0c58358b721", "scanner": "scanner-primary", "fingerprint": "a08941d392f0a5e4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-46dc03eab6bae210", "level": "warning", "message": {"text": "Frontend route `/blog/:slug` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "f1e094265d56c60b", "scanner": "scanner-primary", "fingerprint": "46dc03eab6bae210", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-41de0434cb85ef0a", "level": "warning", "message": {"text": "Frontend route `/demo/:templateId` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "f2e6d7f69c9e4de8", "scanner": "scanner-primary", "fingerprint": "41de0434cb85ef0a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-e772ae8e1e8a1e8b", "level": "warning", "message": {"text": "Frontend route `/dev/primitives` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "1f96d03db0eef021", "scanner": "scanner-primary", "fingerprint": "e772ae8e1e8a1e8b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-0af619c6da0945ab", "level": "warning", "message": {"text": "Frontend route `/dev/canvas` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "3ffd5611ad90b339", "scanner": "scanner-primary", "fingerprint": "0af619c6da0945ab", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f43a8f2226a61010", "level": "warning", "message": {"text": "Frontend route `/tools/missed-call-calculator/:trade` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "726ee5e148c4915d", "scanner": "scanner-primary", "fingerprint": "f43a8f2226a61010", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-1ad14dcb01b2d748", "level": "warning", "message": {"text": "Frontend route `/tools/missed-call-calculator` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "ff6a9f1eac80585e", "scanner": "scanner-primary", "fingerprint": "1ad14dcb01b2d748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f40f3aec609e6de0", "level": "warning", "message": {"text": "Frontend route `/tools/map-snapshot/:tradeSlug` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "37ced06b2b19d06c", "scanner": "scanner-primary", "fingerprint": "f40f3aec609e6de0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-1189100291a81c7c", "level": "warning", "message": {"text": "Frontend route `/tools/map-snapshot` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "e3345bcba0e7b2df", "scanner": "scanner-primary", "fingerprint": "1189100291a81c7c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b384079c5311d015", "level": "warning", "message": {"text": "Frontend route `/snapshot/:slug` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "026715c624f84f42", "scanner": "scanner-primary", "fingerprint": "b384079c5311d015", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-122a16c58a9f8b5b", "level": "warning", "message": {"text": "Frontend route `/tools/local-search-checker` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "6c02479ade348cfd", "scanner": "scanner-primary", "fingerprint": "122a16c58a9f8b5b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-0651f7c088b2f6d6", "level": "warning", "message": {"text": "Frontend route `/tools/quote-demo` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "2eca11351540db68", "scanner": "scanner-primary", "fingerprint": "0651f7c088b2f6d6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-85c594706ba6ca5b", "level": "warning", "message": {"text": "Frontend route `/tools/build-with-ai/preview` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "3a2dd46b50bb4dce", "scanner": "scanner-primary", "fingerprint": "85c594706ba6ca5b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-45843d2b60e53b39", "level": "warning", "message": {"text": "Frontend route `/tools/build-with-ai` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "7fe840052ded876f", "scanner": "scanner-primary", "fingerprint": "45843d2b60e53b39", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-81395e42da422283", "level": "warning", "message": {"text": "Frontend route `/tools` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "dab76740c457146a", "scanner": "scanner-primary", "fingerprint": "81395e42da422283", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-be3f2417fd966b0f", "level": "warning", "message": {"text": "Frontend route `/missed-call-calculator` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "541c45f026946a40", "scanner": "scanner-primary", "fingerprint": "be3f2417fd966b0f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-110d790ee09fd322", "level": "warning", "message": {"text": "Frontend route `/quote-demo` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "668150a27d0745f1", "scanner": "scanner-primary", "fingerprint": "110d790ee09fd322", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-18a404102be9c91b", "level": "warning", "message": {"text": "Frontend route `/onboarding/:token` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "c13913045c745470", "scanner": "scanner-primary", "fingerprint": "18a404102be9c91b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-64e208af668efba5", "level": "warning", "message": {"text": "Frontend route `/review/qr/:widgetToken` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "5e0a9dbcf513ccdb", "scanner": "scanner-primary", "fingerprint": "64e208af668efba5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-aeb4d7dd7b26f2b5", "level": "warning", "message": {"text": "Frontend route `/review/:token` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "d2d241cdf6f9acd7", "scanner": "scanner-primary", "fingerprint": "aeb4d7dd7b26f2b5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-8db5a43e8e194cd2", "level": "warning", "message": {"text": "Frontend route `/r/:slug` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "c0fb8fe48a8c4679", "scanner": "scanner-primary", "fingerprint": "8db5a43e8e194cd2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-ae9f9283f81b57a1", "level": "warning", "message": {"text": "Frontend route `/audit/report/:id` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "1418057ee7e19000", "scanner": "scanner-primary", "fingerprint": "ae9f9283f81b57a1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-1a9cb5007473bf05", "level": "warning", "message": {"text": "Frontend route `/book/:slug` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "7c49b65e26048840", "scanner": "scanner-primary", "fingerprint": "1a9cb5007473bf05", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-61cc8e67e1aace92", "level": "warning", "message": {"text": "Frontend route `/pay/:token` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "650af2e8e984ddfd", "scanner": "scanner-primary", "fingerprint": "61cc8e67e1aace92", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-82a6437395623237", "level": "warning", "message": {"text": "Frontend route `/q/:slug` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "c639b2e7791f9551", "scanner": "scanner-primary", "fingerprint": "82a6437395623237", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-e5526736756e21ea", "level": "warning", "message": {"text": "Frontend route `/wizard/legacy` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "6acba79d2d2c34a9", "scanner": "scanner-primary", "fingerprint": "e5526736756e21ea", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-13bd1658117afc25", "level": "warning", "message": {"text": "Frontend route `/Wizard/legacy` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "fb0f91e928fa5f2d", "scanner": "scanner-primary", "fingerprint": "13bd1658117afc25", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-926b8aa8fbaa488a", "level": "warning", "message": {"text": "Frontend route `/Wizard` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "bb15fa6893fec783", "scanner": "scanner-primary", "fingerprint": "926b8aa8fbaa488a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c0b79370f81dc7f5", "level": "warning", "message": {"text": "Frontend route `/Calculator` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "bc70f3d554abb1c7", "scanner": "scanner-primary", "fingerprint": "c0b79370f81dc7f5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b8d2f2d7df67ec3c", "level": "warning", "message": {"text": "Frontend route `/EditCalculator` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "438b61a92886bb50", "scanner": "scanner-primary", "fingerprint": "b8d2f2d7df67ec3c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-cd99090b163f87df", "level": "warning", "message": {"text": "Frontend route `/Leads` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "cb175eae07e6405a", "scanner": "scanner-primary", "fingerprint": "cd99090b163f87df", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-388a365cfa307cbf", "level": "warning", "message": {"text": "Frontend route `/Dashboard` has no Link/navigate to it \u2014 client/src/App.tsx"}, "properties": {"repobilityId": "b6f6c4a74755c338", "scanner": "scanner-primary", "fingerprint": "388a365cfa307cbf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-2b856534e86b0509", "level": "error", "message": {"text": "Dangling fetch: POST https://api.together.xyz/v1/images/generations (scripts/generate-ai-thumbnails.mjs:184)"}, "properties": {"repobilityId": "701751c86598897d", "scanner": "scanner-primary", "fingerprint": "2b856534e86b0509", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-82e4dad0c369ae65", "level": "error", "message": {"text": "Dangling fetch: GET https://api.github.com${path} (scripts/staging-gate/identify-previous-occupant.mjs:41)"}, "properties": {"repobilityId": "829ee1d16c71d1e4", "scanner": "scanner-primary", "fingerprint": "82e4dad0c369ae65", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9542be5ed291ae39", "level": "error", "message": {"text": "Dangling fetch: POST /api/audit/save-lead (client/src/components/marketing/AuditGate.tsx:256)"}, "properties": {"repobilityId": "1df3a65d208c5447", "scanner": "scanner-primary", "fingerprint": "9542be5ed291ae39", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b4f2252db6142285", "level": "error", "message": {"text": "Dangling fetch: GET /api/portal/brand-kits (client/src/components/wizard/elfsight/StyleTab.tsx:3315)"}, "properties": {"repobilityId": "ad26eebe6108b7b0", "scanner": "scanner-primary", "fingerprint": "b4f2252db6142285", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-13895f899ccc4a03", "level": "error", "message": {"text": "Dangling fetch: POST /api/portal/brand-kits (client/src/components/wizard/elfsight/StyleTab.tsx:3360)"}, "properties": {"repobilityId": "d8097cda671feb57", "scanner": "scanner-primary", "fingerprint": "13895f899ccc4a03", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6312e46dc3224974", "level": "error", "message": {"text": "Dangling fetch: GET https://api.frankfurter.app/latest?from=CAD&to=USD (client/src/lib/fx.ts:37)"}, "properties": {"repobilityId": "8a00439d6eac4b38", "scanner": "scanner-primary", "fingerprint": "6312e46dc3224974", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0908bb3a8cc5c515", "level": "error", "message": {"text": "Dangling fetch: GET /api/audit/report/${id}/pdf (client/src/pages/marketing/SharedAuditReport.tsx:201)"}, "properties": {"repobilityId": "0d86ecb235524a71", "scanner": "scanner-primary", "fingerprint": "0908bb3a8cc5c515", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6f4cc1466d5d2292", "level": "error", "message": {"text": "Dangling fetch: POST /api/audit/report/${id}/send-email (client/src/pages/marketing/SharedAuditReport.tsx:238)"}, "properties": {"repobilityId": "787387de2ffcff64", "scanner": "scanner-primary", "fingerprint": "6f4cc1466d5d2292", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7678d1050daae7c4", "level": "error", "message": {"text": "Dangling fetch: GET /api/audit/report/${id} (client/src/pages/marketing/SharedAuditReport.tsx:269)"}, "properties": {"repobilityId": "a317c71da2b14d56", "scanner": "scanner-primary", "fingerprint": "7678d1050daae7c4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-798a76134134088c", "level": "error", "message": {"text": "Dangling fetch: POST /api/audit/speed (client/src/pages/marketing/FreeAudit.tsx:873)"}, "properties": {"repobilityId": "f0d2c9b555d27c87", "scanner": "scanner-primary", "fingerprint": "798a76134134088c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7f57acbc39cfc713", "level": "error", "message": {"text": "Dangling fetch: GET /api/audit/speed/${reportId} (client/src/pages/marketing/FreeAudit.tsx:892)"}, "properties": {"repobilityId": "5ae5fb9fd181c90d", "scanner": "scanner-primary", "fingerprint": "7f57acbc39cfc713", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fe3b27c5746fb324", "level": "error", "message": {"text": "Dangling fetch: GET /api/audit/narrative/${narrId} (client/src/pages/marketing/FreeAudit.tsx:942)"}, "properties": {"repobilityId": "64cc92af36aa7b0e", "scanner": "scanner-primary", "fingerprint": "fe3b27c5746fb324", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-82c0411c29fe6770", "level": "error", "message": {"text": "Dangling fetch: GET /api/audit/report/${reportId}/rankflow-recommendation (client/src/pages/marketing/ReportView.tsx:820)"}, "properties": {"repobilityId": "d02c55adcd9229c9", "scanner": "scanner-primary", "fingerprint": "82c0411c29fe6770", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9171616842d02c30", "level": "error", "message": {"text": "Dangling fetch: GET /api/audit/report/${reportId}/pdf (client/src/pages/marketing/ReportView.tsx:1042)"}, "properties": {"repobilityId": "45c312f28dd17143", "scanner": "scanner-primary", "fingerprint": "9171616842d02c30", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ea2104eb917f0343", "level": "error", "message": {"text": "Dangling fetch: POST /api/audit/save-email (client/src/pages/marketing/ReportView.tsx:1089)"}, "properties": {"repobilityId": "94db07f6008ac631", "scanner": "scanner-primary", "fingerprint": "ea2104eb917f0343", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-82b1f236316f42ea", "level": "error", "message": {"text": "Dangling fetch: POST /api/audit/report/${reportId}/send-email (client/src/pages/marketing/ReportView.tsx:1104)"}, "properties": {"repobilityId": "ba496b74b3a14aec", "scanner": "scanner-primary", "fingerprint": "82b1f236316f42ea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-44f4e4a3fe46c522", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/tradeline/voices/${voiceId}/sample (client/src/pages/admin/TradelineVoicesPage.tsx:126)"}, "properties": {"repobilityId": "864d2e460fd09c4a", "scanner": "scanner-primary", "fingerprint": "44f4e4a3fe46c522", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-be2be2ced2389029", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/crm/support/tickets/${ticketId}/ai-draft/${action} (client/src/pages/admin/SupportTicketDetailPage.tsx:175)"}, "properties": {"repobilityId": "9d69e658ebef6080", "scanner": "scanner-primary", "fingerprint": "be2be2ced2389029", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-165d240da01e60cf", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/api-platform/users/${userIdNum}/audit (client/src/pages/admin/ApiPlatformUserDetailPage.tsx:214)"}, "properties": {"repobilityId": "77ac9502086a247a", "scanner": "scanner-primary", "fingerprint": "165d240da01e60cf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bc452b29f2eb76da", "level": "error", "message": {"text": "Dangling fetch: GET /api/portal/brand-kits (client/src/pages/portal/PortalBrandKitsPage.tsx:67)"}, "properties": {"repobilityId": "eb88c5acc660941d", "scanner": "scanner-primary", "fingerprint": "bc452b29f2eb76da", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d8076257bdc8708c", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/portal/brand-kits/${editingId} (client/src/pages/portal/PortalBrandKitsPage.tsx:112)"}, "properties": {"repobilityId": "91466fe43a19fde6", "scanner": "scanner-primary", "fingerprint": "d8076257bdc8708c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-93b93f55aed6208b", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/portal/brand-kits/${id} (client/src/pages/portal/PortalBrandKitsPage.tsx:137)"}, "properties": {"repobilityId": "09b7f0479eedc51e", "scanner": "scanner-primary", "fingerprint": "93b93f55aed6208b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a608598f0d2a6690", "level": "error", "message": {"text": "Dangling fetch: GET https://api.wefixtrades.com/v1/calculators (client/src/pages/portal/PortalApiAccessPage.tsx:219)"}, "properties": {"repobilityId": "f1693d29757b0046", "scanner": "scanner-primary", "fingerprint": "a608598f0d2a6690", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f4efeea4e96a0505", "level": "error", "message": {"text": "Dangling fetch: POST /api/portal/socialsync/posts/${postId}/${path} (client/src/pages/portal/PortalSocialSync.tsx:106)"}, "properties": {"repobilityId": "eb7ffa4015910d92", "scanner": "scanner-primary", "fingerprint": "f4efeea4e96a0505", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-458b43aa947fcf2d", "level": "error", "message": {"text": "Dangling fetch: GET /api/portal/tradeline/voices/${encodeURIComponent(v.id)}/sample (client/src/pages/portal/TradelineSetup/VoicePicker.tsx:119)"}, "properties": {"repobilityId": "c86288f4de11d225", "scanner": "scanner-primary", "fingerprint": "458b43aa947fcf2d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e84c2184288ee3b8", "level": "error", "message": {"text": "Dangling fetch: GET /api/portal/webcare/maintenance-log${q} (client/src/pages/portal/webcare/WebCareDashboard.tsx:178)"}, "properties": {"repobilityId": "69f5d3c6ad0ff829", "scanner": "scanner-primary", "fingerprint": "e84c2184288ee3b8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-88980c925bc63b5a", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:${port}${path} (tests/payment-methods-sweep.test.ts:311)"}, "properties": {"repobilityId": "a991fd6d3e11f60e", "scanner": "scanner-primary", "fingerprint": "88980c925bc63b5a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c593eaba7c7bc6e3", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:${port}/api/healthz-present (tests/healthz-version.test.ts:146)"}, "properties": {"repobilityId": "b1cef4fa7735fe14", "scanner": "scanner-primary", "fingerprint": "c593eaba7c7bc6e3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-01b280324f89e7c2", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:${port}/api/healthz-malformed (tests/healthz-version.test.ts:153)"}, "properties": {"repobilityId": "70fd01fedd351054", "scanner": "scanner-primary", "fingerprint": "01b280324f89e7c2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fac37236ceeed954", "level": "error", "message": {"text": "Dangling fetch: POST https://places.googleapis.com/v1/places:autocomplete (server/auditRoutes.ts:391)"}, "properties": {"repobilityId": "74e8394ff53ce918", "scanner": "scanner-primary", "fingerprint": "fac37236ceeed954", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-39f2b73a349b2a9d", "level": "error", "message": {"text": "Dangling fetch: GET https://maps.googleapis.com/maps/api/place/textsearch/json?${params} (server/auditRoutes.ts:446)"}, "properties": {"repobilityId": "cfaf6a618108a4d2", "scanner": "scanner-primary", "fingerprint": "39f2b73a349b2a9d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7345f8192f778b72", "level": "error", "message": {"text": "Dangling fetch: POST https://api.dataforseo.com/v3/keywords_data/google_ads/search_volume/live (server/auditRoutes.ts:1457)"}, "properties": {"repobilityId": "e937dd0f19aea47e", "scanner": "scanner-primary", "fingerprint": "7345f8192f778b72", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d97344eb3bf1889a", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:${port}${concretize(path)} (server/lib/bodyLimits.test.ts:134)"}, "properties": {"repobilityId": "70e1e417261a025b", "scanner": "scanner-primary", "fingerprint": "d97344eb3bf1889a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8b145c0ca6ccf218", "level": "error", "message": {"text": "Dangling fetch: POST https://api.resend.com/emails (server/lib/emailOrchestrator.ts:301)"}, "properties": {"repobilityId": "335579016ca6457e", "scanner": "scanner-primary", "fingerprint": "8b145c0ca6ccf218", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a6485d7dd87dce27", "level": "error", "message": {"text": "Dangling fetch: POST https://api.brevo.com/v3/smtp/email (server/lib/emailOrchestrator.ts:335)"}, "properties": {"repobilityId": "a1dd89fb4d139b99", "scanner": "scanner-primary", "fingerprint": "a6485d7dd87dce27", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e4149e05a06bd8ac", "level": "error", "message": {"text": "Dangling fetch: POST https://connect.mailerlite.com/api/email/send (server/lib/emailOrchestrator.ts:364)"}, "properties": {"repobilityId": "ad5f511cbb57d2c2", "scanner": "scanner-primary", "fingerprint": "e4149e05a06bd8ac", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-af571a18153178e9", "level": "error", "message": {"text": "Dangling fetch: POST https://api.sendgrid.com/v3/mail/send (server/lib/emailOrchestrator.ts:470)"}, "properties": {"repobilityId": "c799a6e4e52877ca", "scanner": "scanner-primary", "fingerprint": "af571a18153178e9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-96fbc31a4f171ef8", "level": "error", "message": {"text": "Dangling fetch: GET https://mybusinessaccountmanagement.googleapis.com/v1/accounts?pageSize=1 (server/lib/seo/gbpClient.ts:209)"}, "properties": {"repobilityId": "15798761e7edbd14", "scanner": "scanner-primary", "fingerprint": "96fbc31a4f171ef8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2e9ca18456928752", "level": "error", "message": {"text": "Dangling fetch: POST https://api.github.com/repos/${GH_OWNER}/${GH_REPO}/git/refs/heads/${GH_BRANCH} (server/routes/dopplerWebhookRoutes.ts:167)"}, "properties": {"repobilityId": "02adc57aa91dc123", "scanner": "scanner-primary", "fingerprint": "2e9ca18456928752", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-53ebf6b500359378", "level": "error", "message": {"text": "Dangling fetch: PATCH https://api.github.com/repos/${GH_OWNER}/${GH_REPO}/git/refs/heads/${GH_BRANCH} (server/routes/dopplerWebhookRoutes.ts:217)"}, "properties": {"repobilityId": "fefc22e1ce24e5e4", "scanner": "scanner-primary", "fingerprint": "53ebf6b500359378", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-34f1b5de1eae05f1", "level": "error", "message": {"text": "Dangling fetch: PATCH https://api.vapi.ai/assistant/${vapiAssistantId} (server/routes/adminCrmRoutes.ts:3301)"}, "properties": {"repobilityId": "6dc98485f960219c", "scanner": "scanner-primary", "fingerprint": "34f1b5de1eae05f1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7a9ac3f154f13bb9", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (server/routes/aiDemoRoutes.ts:374)"}, "properties": {"repobilityId": "11f5648637196aa3", "scanner": "scanner-primary", "fingerprint": "7a9ac3f154f13bb9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0a0bd3e115d7c200", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:${port}${path} (server/routes/portalTradelineKnowledgeRoutes.routeOrder.test.ts:133)"}, "properties": {"repobilityId": "9befa40614f77f3c", "scanner": "scanner-primary", "fingerprint": "0a0bd3e115d7c200", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1b7eb69d31ce674c", "level": "error", "message": {"text": "Dangling fetch: GET https://moz.com/mozcast (server/routes/freeToolsRoutes.ts:595)"}, "properties": {"repobilityId": "9b47ef8bc58ec6bf", "scanner": "scanner-primary", "fingerprint": "1b7eb69d31ce674c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-325c19854f48a755", "level": "error", "message": {"text": "Dangling fetch: GET https://api.vapi.ai/assistant?limit=1 (server/routes/integrationHealthRoutes.ts:126)"}, "properties": {"repobilityId": "dc0a6299364ef84a", "scanner": "scanner-primary", "fingerprint": "325c19854f48a755", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e91572f47ce0f4a2", "level": "error", "message": {"text": "Dangling fetch: POST https://oauth2.googleapis.com/revoke?token=${encodeURIComponent(token)} (server/services/googleBusinessService.ts:279)"}, "properties": {"repobilityId": "9f35f97bf2dcda2b", "scanner": "scanner-primary", "fingerprint": "e91572f47ce0f4a2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7715924edcb2911c", "level": "error", "message": {"text": "Dangling fetch: POST https://google.serper.dev/reviews (server/services/reviewIntelligence.ts:76)"}, "properties": {"repobilityId": "d9f9f00687280490", "scanner": "scanner-primary", "fingerprint": "7715924edcb2911c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a2de5a77fbb04de1", "level": "error", "message": {"text": "Dangling fetch: POST https://google.serper.dev/reviews (server/services/reviewIntelligence.ts:104)"}, "properties": {"repobilityId": "d42d0e83806035e8", "scanner": "scanner-primary", "fingerprint": "a2de5a77fbb04de1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7ffcfab4df579196", "level": "error", "message": {"text": "Dangling fetch: POST https://api.dataforseo.com/v3/business_data/google/reviews/task_post (server/services/reviewIntelligence.ts:311)"}, "properties": {"repobilityId": "9058a6c84ad5975f", "scanner": "scanner-primary", "fingerprint": "7ffcfab4df579196", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6377391422a241f1", "level": "error", "message": {"text": "Dangling fetch: GET https://api.dataforseo.com/v3/business_data/google/reviews/task_get/${taskId} (server/services/reviewIntelligence.ts:365)"}, "properties": {"repobilityId": "1f922844ab9a01c6", "scanner": "scanner-primary", "fingerprint": "6377391422a241f1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-34b148914e427fd8", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:${port}/api/audit/generate (server/services/outboundArtifactGenerator.ts:51)"}, "properties": {"repobilityId": "f2c5b29c3d29e9ae", "scanner": "scanner-primary", "fingerprint": "34b148914e427fd8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a5c9d1b93320828b", "level": "error", "message": {"text": "Dangling fetch: POST https://places.googleapis.com/v1/places:searchText (server/services/competitorSearch.ts:537)"}, "properties": {"repobilityId": "5fe2ef08ede95e40", "scanner": "scanner-primary", "fingerprint": "a5c9d1b93320828b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ab105ddeecb72e89", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (server/services/contentflow/qualityGate/humanizeRewrite.ts:423)"}, "properties": {"repobilityId": "f793914d473b7a14", "scanner": "scanner-primary", "fingerprint": "ab105ddeecb72e89", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3135519e67077c76", "level": "error", "message": {"text": "Dangling fetch: POST https://api.ideogram.ai/v1/ideogram-v3/generate (server/services/ai/imageRotator.ts:125)"}, "properties": {"repobilityId": "ecdaa5b26f13b4a9", "scanner": "scanner-primary", "fingerprint": "3135519e67077c76", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-38b9ee004a84bcb3", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (server/services/ai/textRotator.ts:80)"}, "properties": {"repobilityId": "f71f12488fb4bf29", "scanner": "scanner-primary", "fingerprint": "38b9ee004a84bcb3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fff74c0b63ed20cf", "level": "error", "message": {"text": "Dangling fetch: GET https://maps.googleapis.com/maps/api/place/details/json?${params} (server/services/reputation/placeIdValidator.ts:44)"}, "properties": {"repobilityId": "68714210ff68cdb5", "scanner": "scanner-primary", "fingerprint": "fff74c0b63ed20cf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a7dd70da8d881f69", "level": "note", "message": {"text": "Unused endpoint: POST /qq-webhook"}, "properties": {"repobilityId": "b3492052f71130ee", "scanner": "scanner-primary", "fingerprint": "a7dd70da8d881f69", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ff8e703152198028", "level": "note", "message": {"text": "Unused endpoint: GET /static-map"}, "properties": {"repobilityId": "9e114779fd1aa52b", "scanner": "scanner-primary", "fingerprint": "ff8e703152198028", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-90c77af7a5065d32", "level": "note", "message": {"text": "Unused endpoint: POST /search-places"}, "properties": {"repobilityId": "2883b57f3d971f2d", "scanner": "scanner-primary", "fingerprint": "90c77af7a5065d32", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-81870abc942cdbfb", "level": "note", "message": {"text": "Unused endpoint: POST /place-details"}, "properties": {"repobilityId": "a950611cb945a515", "scanner": "scanner-primary", "fingerprint": "81870abc942cdbfb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-58ad0268ee07b3df", "level": "note", "message": {"text": "Unused endpoint: POST /pagespeed"}, "properties": {"repobilityId": "a18c5cd0fd356dd1", "scanner": "scanner-primary", "fingerprint": "58ad0268ee07b3df", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f7134ab6d59fd64c", "level": "note", "message": {"text": "Unused endpoint: GET /speed-test"}, "properties": {"repobilityId": "f10e2025aea9ebd2", "scanner": "scanner-primary", "fingerprint": "f7134ab6d59fd64c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-898cc8766484132d", "level": "note", "message": {"text": "Unused endpoint: POST /speed"}, "properties": {"repobilityId": "ee0ead54218d617e", "scanner": "scanner-primary", "fingerprint": "898cc8766484132d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-64bffcb28fa23f72", "level": "note", "message": {"text": "Unused endpoint: GET /speed/:reportId"}, "properties": {"repobilityId": "84f7d5047fe5b026", "scanner": "scanner-primary", "fingerprint": "64bffcb28fa23f72", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2f313f4645940ed0", "level": "note", "message": {"text": "Unused endpoint: GET /narrative/:reportId"}, "properties": {"repobilityId": "b9947add5e0d1530", "scanner": "scanner-primary", "fingerprint": "2f313f4645940ed0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-970eb92d6ec2bfaa", "level": "note", "message": {"text": "Unused endpoint: POST /generate"}, "properties": {"repobilityId": "8c483f27033e6dac", "scanner": "scanner-primary", "fingerprint": "970eb92d6ec2bfaa", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dc755150645271b5", "level": "note", "message": {"text": "Unused endpoint: GET /report/:id"}, "properties": {"repobilityId": "3bf1742563e955fa", "scanner": "scanner-primary", "fingerprint": "dc755150645271b5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9cc9e335aba1dc87", "level": "note", "message": {"text": "Unused endpoint: POST /save-lead"}, "properties": {"repobilityId": "2c1afe3a5e5b6a36", "scanner": "scanner-primary", "fingerprint": "9cc9e335aba1dc87", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f11f16d86239fc52", "level": "note", "message": {"text": "Unused endpoint: GET /report/:id/og-image"}, "properties": {"repobilityId": "6788fff627d676ba", "scanner": "scanner-primary", "fingerprint": "f11f16d86239fc52", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7c518354ca870fd3", "level": "note", "message": {"text": "Unused endpoint: POST /report/:id/send-email"}, "properties": {"repobilityId": "36f0d249f9b642cb", "scanner": "scanner-primary", "fingerprint": "7c518354ca870fd3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2f6eea6714f02af7", "level": "note", "message": {"text": "Unused endpoint: GET /report/:id/pdf"}, "properties": {"repobilityId": "298d0b3a9c48c6ec", "scanner": "scanner-primary", "fingerprint": "2f6eea6714f02af7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-56b1924f6fa6a30b", "level": "note", "message": {"text": "Unused endpoint: GET /report/:id/rankflow-recommendation"}, "properties": {"repobilityId": "4a343b745328aef7", "scanner": "scanner-primary", "fingerprint": "56b1924f6fa6a30b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f36a9b324905af6f", "level": "note", "message": {"text": "Unused endpoint: USE /{*path}"}, "properties": {"repobilityId": "8d925892047c5a7a", "scanner": "scanner-primary", "fingerprint": "f36a9b324905af6f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1992692ae67a02be", "level": "note", "message": {"text": "Unused endpoint: POST /api/csp-report"}, "properties": {"repobilityId": "f4ab0154924b9b3e", "scanner": "scanner-primary", "fingerprint": "1992692ae67a02be", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0fc286753f2af129", "level": "note", "message": {"text": "Unused endpoint: USE /embed-widget.js"}, "properties": {"repobilityId": "76b867cba0cb6b35", "scanner": "scanner-primary", "fingerprint": "0fc286753f2af129", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7da4606f4332c7f1", "level": "note", "message": {"text": "Unused endpoint: USE /embed-chat.js"}, "properties": {"repobilityId": "499f0dbb4fd424e1", "scanner": "scanner-primary", "fingerprint": "7da4606f4332c7f1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4882d96eec0578be", "level": "note", "message": {"text": "Unused endpoint: USE /Calculator"}, "properties": {"repobilityId": "1396cff9db7b66f9", "scanner": "scanner-primary", "fingerprint": "4882d96eec0578be", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b2d8849fb6b1ac47", "level": "note", "message": {"text": "Unused endpoint: USE /admin"}, "properties": {"repobilityId": "d5d0170ad54a8c93", "scanner": "scanner-primary", "fingerprint": "b2d8849fb6b1ac47", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3f48d8c1d10391a5", "level": "note", "message": {"text": "Unused endpoint: USE /portal"}, "properties": {"repobilityId": "d2bfadd2117f9640", "scanner": "scanner-primary", "fingerprint": "3f48d8c1d10391a5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d93a530ce10d47d9", "level": "note", "message": {"text": "Unused endpoint: USE /api/admin"}, "properties": {"repobilityId": "e3e4c340796044d6", "scanner": "scanner-primary", "fingerprint": "d93a530ce10d47d9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9962a2df99fa7781", "level": "note", "message": {"text": "Unused endpoint: USE /api/portal"}, "properties": {"repobilityId": "6c116f78f493bc6e", "scanner": "scanner-primary", "fingerprint": "9962a2df99fa7781", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1bc898b3b7565990", "level": "note", "message": {"text": "Unused endpoint: USE /uploads"}, "properties": {"repobilityId": "0c19d2da7838db75", "scanner": "scanner-primary", "fingerprint": "1bc898b3b7565990", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-953ec1a0ee6df50d", "level": "note", "message": {"text": "Unused endpoint: GET /admin"}, "properties": {"repobilityId": "f00cea9ddece5300", "scanner": "scanner-primary", "fingerprint": "953ec1a0ee6df50d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-48138762e3a75ad6", "level": "note", "message": {"text": "Unused endpoint: GET /preview/article/:id"}, "properties": {"repobilityId": "43163c058b4c61c9", "scanner": "scanner-primary", "fingerprint": "48138762e3a75ad6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-94da1aaaf36cc41f", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1"}, "properties": {"repobilityId": "d5755ff0499e53b3", "scanner": "scanner-primary", "fingerprint": "94da1aaaf36cc41f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5d840b42b8c3211c", "level": "note", "message": {"text": "Unused endpoint: GET /api/sales/leads"}, "properties": {"repobilityId": "527e2e32f3653d8a", "scanner": "scanner-primary", "fingerprint": "5d840b42b8c3211c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5501fc4ac1d30609", "level": "note", "message": {"text": "Unused endpoint: POST /api/sales/leads"}, "properties": {"repobilityId": "83a0ce4e11e0cfb6", "scanner": "scanner-primary", "fingerprint": "5501fc4ac1d30609", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7a62729d0387354f", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/sales/leads/:id"}, "properties": {"repobilityId": "41f32d2ac82d1b14", "scanner": "scanner-primary", "fingerprint": "7a62729d0387354f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3c7e0e12e92936b4", "level": "note", "message": {"text": "Unused endpoint: POST /api/sales/leads/:id/contacted"}, "properties": {"repobilityId": "8180535ba22d143c", "scanner": "scanner-primary", "fingerprint": "3c7e0e12e92936b4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cd437ce36c4dae2d", "level": "note", "message": {"text": "Unused endpoint: POST /api/admin/demo/seed/:clientId"}, "properties": {"repobilityId": "8d3c167aca87bb61", "scanner": "scanner-primary", "fingerprint": "cd437ce36c4dae2d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-efe84ec47760dbec", "level": "note", "message": {"text": "Unused endpoint: POST /api/admin/demo/reset/:clientId"}, "properties": {"repobilityId": "afeb44e53f716b03", "scanner": "scanner-primary", "fingerprint": "efe84ec47760dbec", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d62db755ca7fcb17", "level": "note", "message": {"text": "Unused endpoint: POST /api/mapguard/clients/:clientId/tasks"}, "properties": {"repobilityId": "3e05ba3abd670a4d", "scanner": "scanner-primary", "fingerprint": "d62db755ca7fcb17", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3ea0831b910abea7", "level": "note", "message": {"text": "Unused endpoint: POST /api/mapguard/clients/:clientId/tasks/from-audit/:auditId"}, "properties": {"repobilityId": "c629536b42204358", "scanner": "scanner-primary", "fingerprint": "3ea0831b910abea7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-710771c42b5a057c", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/mapguard/tasks/:taskId/status"}, "properties": {"repobilityId": "90d2fbda0f3dc170", "scanner": "scanner-primary", "fingerprint": "710771c42b5a057c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2182d9054cbe31db", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/mapguard/tasks/:taskId/result"}, "properties": {"repobilityId": "678204b8d528ff0d", "scanner": "scanner-primary", "fingerprint": "2182d9054cbe31db", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2d2b971993028315", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/mapguard/tasks/:taskId"}, "properties": {"repobilityId": "f5d4a457c0f9bcb1", "scanner": "scanner-primary", "fingerprint": "2d2b971993028315", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d547d6cf44d19f18", "level": "note", "message": {"text": "Unused endpoint: POST /api/mapguard/tasks/:taskId/assign"}, "properties": {"repobilityId": "ed808bdeb8f2ac42", "scanner": "scanner-primary", "fingerprint": "d547d6cf44d19f18", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2fa5260679996de5", "level": "note", "message": {"text": "Unused endpoint: POST /api/mapguard/tasks/:taskId/submit-result"}, "properties": {"repobilityId": "4869adc46894fe68", "scanner": "scanner-primary", "fingerprint": "2fa5260679996de5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-caaa4ef1ea243f07", "level": "note", "message": {"text": "Unused endpoint: POST /api/mapguard/tasks/:taskId/reject"}, "properties": {"repobilityId": "9cf4e1d467d4ecfa", "scanner": "scanner-primary", "fingerprint": "caaa4ef1ea243f07", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cd8db4e1c1a61dde", "level": "note", "message": {"text": "Unused endpoint: GET /api/mapguard/clients/:clientId/performance"}, "properties": {"repobilityId": "75dad0248bd6a853", "scanner": "scanner-primary", "fingerprint": "cd8db4e1c1a61dde", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ce8f7df8b8dd824b", "level": "note", "message": {"text": "Unused endpoint: GET /api/mapguard/clients/:clientId/case-study"}, "properties": {"repobilityId": "fda7d90540f0b94c", "scanner": "scanner-primary", "fingerprint": "ce8f7df8b8dd824b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-42e17eb1a37c6755", "level": "note", "message": {"text": "Unused endpoint: GET /api/mapguard/suppliers"}, "properties": {"repobilityId": "aa2bec76cd19b602", "scanner": "scanner-primary", "fingerprint": "42e17eb1a37c6755", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-98f5342769d2d637", "level": "note", "message": {"text": "Unused endpoint: GET /api/mapguard/clients/:clientId/report/:year/:month"}, "properties": {"repobilityId": "0b5fda5ab3435abd", "scanner": "scanner-primary", "fingerprint": "98f5342769d2d637", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6420d816dccef3af", "level": "note", "message": {"text": "Unused endpoint: POST /api/mapguard/clients/:clientId/report/:year/:month/send"}, "properties": {"repobilityId": "f21dd12cb5a8edb9", "scanner": "scanner-primary", "fingerprint": "6420d816dccef3af", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bb5f6da95f369851", "level": "note", "message": {"text": "Unused endpoint: POST /api/mapguard/reports/send-all"}, "properties": {"repobilityId": "a823047b3bfced8b", "scanner": "scanner-primary", "fingerprint": "bb5f6da95f369851", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-80a06445f56e63ec", "level": "note", "message": {"text": "Unused endpoint: GET /api/mapguard/alerts"}, "properties": {"repobilityId": "1386569743370ab9", "scanner": "scanner-primary", "fingerprint": "80a06445f56e63ec", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}