{"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-2eaf9c77b57c7bdb", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 blog/assets/index-CW_Lsnfj.js:9", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 blog/assets/index-CW_Lsnfj.js:9"}, "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-8f929c834789e781", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 blog/assets/index-DUiMp6_W.js:9", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 blog/assets/index-DUiMp6_W.js:9"}, "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-6f00f37928dd4747", "name": "Stray `console.log` in TS/JS \u2014 client/serve.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/serve.js: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-93fc7de3647a8c3b", "name": "Stray `console.log` in TS/JS \u2014 client/serve-build.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/serve-build.js: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-d9b9438eee45338b", "name": "Stray `console.log` in TS/JS \u2014 client/serve-production.js:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/serve-production.js:10"}, "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-b6aee8619cec65e6", "name": "Stray `console.log` in TS/JS \u2014 client/src/App.tsx:109", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/App.tsx: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-f36ecb4fd6b1eeea", "name": "Stray `console.log` in TS/JS \u2014 client/src/utils/debugLogger.ts:78", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/utils/debugLogger.ts:78"}, "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-7bc98feac4998a9f", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/CloudflareTurnstile.tsx:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/CloudflareTurnstile.tsx: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-5839769c4ab154b1", "name": "Icon-only button without accessible name \u2014 client/src/components/EmojiPicker.tsx:131", "shortDescription": {"text": "Icon-only button without accessible name \u2014 client/src/components/EmojiPicker.tsx:131"}, "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-21ab32995d76f734", "name": "Icon-only button without accessible name \u2014 client/src/components/PermissionSetupModal.tsx:124", "shortDescription": {"text": "Icon-only button without accessible name \u2014 client/src/components/PermissionSetupModal.tsx:124"}, "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-2a686af3822fbf4e", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/Chat.tsx:342", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/Chat.tsx:342"}, "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-299dc547e80b9c43", "name": "Icon-only button without accessible name \u2014 client/src/components/BugReportModal.tsx:99", "shortDescription": {"text": "Icon-only button without accessible name \u2014 client/src/components/BugReportModal.tsx:99"}, "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-b5cde4c1d829fa44", "name": "Icon-only button without accessible name \u2014 client/src/components/ChatSettings.tsx:113", "shortDescription": {"text": "Icon-only button without accessible name \u2014 client/src/components/ChatSettings.tsx:113"}, "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-5645de4773ef82f9", "name": "Icon-only button without accessible name \u2014 client/src/components/Tutorial.tsx:25", "shortDescription": {"text": "Icon-only button without accessible name \u2014 client/src/components/Tutorial.tsx:25"}, "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-e631b7ea6275a81a", "name": "Icon-only button without accessible name \u2014 client/src/components/inventory/ShopQuantitySelector.tsx:58", "shortDescription": {"text": "Icon-only button without accessible name \u2014 client/src/components/inventory/ShopQuantitySelector.tsx:58"}, "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-5513cc86e63e8988", "name": "Icon-only button without accessible name \u2014 client/src/components/inventory/InventoryPanel.tsx:117", "shortDescription": {"text": "Icon-only button without accessible name \u2014 client/src/components/inventory/InventoryPanel.tsx:117"}, "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-19e776845dea1686", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/inventory/inventoryPanel/useInventory.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/inventory/inventoryPanel/useInventory.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-30804a5039d74c1c", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/auth/EmailVerification.tsx:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/auth/EmailVerification.tsx: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-b9d7aa15b1892899", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/components/chat/MessageList.tsx:234", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/components/chat/MessageList.tsx:234"}, "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-c75588fb0182ca7b", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/chat/useChatBonus.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/chat/useChatBonus.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-5ad2f48d19999101", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/audio/AudioLevelMeter.tsx:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/audio/AudioLevelMeter.tsx:52"}, "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-05f50cfc0ff1d529", "name": "Icon-only button without accessible name \u2014 client/src/components/mobile/MobileHeader.tsx:423", "shortDescription": {"text": "Icon-only button without accessible name \u2014 client/src/components/mobile/MobileHeader.tsx:423"}, "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-524269a79dbb2303", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/mobile/MobileBottomNav.tsx:216", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/mobile/MobileBottomNav.tsx:216"}, "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-20194fdd43c8efef", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/mobile/MobileLandscapeLayout.tsx:687", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/mobile/MobileLandscapeLayout.tsx:687"}, "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-aee4f49efd8f1c03", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/stream/WebRTCViewer.tsx:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/stream/WebRTCViewer.tsx:115"}, "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-784cea1fb1fb50d2", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/stream/WebRTCStreamer.tsx:269", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/stream/WebRTCStreamer.tsx:269"}, "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-f47874df95be1139", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/stream/ScreenSharePanel.tsx:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/stream/ScreenSharePanel.tsx: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-0f8faf075d20b3bb", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/stream/TheatreControls.tsx:740", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/stream/TheatreControls.tsx:740"}, "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-114ffac3316e6bae", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/stream/streamerSettings/useStreamerDevices.ts:177", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/stream/streamerSettings/useStreamerDevices.ts:177"}, "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-6173db9875d4367d", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/stream/streamerSettings/VideoPanel.tsx:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/stream/streamerSettings/VideoPanel.tsx: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-36693d5e2b55450f", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/recording-review/PlaybackTimeline.tsx:93", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/recording-review/PlaybackTimeline.tsx:93"}, "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-cb94e9428148f51e", "name": "Icon-only button without accessible name \u2014 client/src/components/admin/AdminPanelV3.tsx:161", "shortDescription": {"text": "Icon-only button without accessible name \u2014 client/src/components/admin/AdminPanelV3.tsx:161"}, "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-ca6e70e0ce9aa6b5", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/admin/adminRecordingReview/useRecordingReviewData.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/admin/adminRecordingReview/useRecordingReviewData.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-d4964329b0a6aba9", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/admin/adminRecordingReview/useHlsPlayer.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/admin/adminRecordingReview/useHlsPlayer.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-d93d8db726709e89", "name": "Icon-only button without accessible name \u2014 client/src/components/admin/transcriptionManagement/TranscriptModal.tsx:22", "shortDescription": {"text": "Icon-only button without accessible name \u2014 client/src/components/admin/transcriptionManagement/TranscriptModal.tsx:22"}, "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-da1addb4438c73a8", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/admin/chatBotManagement/MovieBotSection.tsx:122", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/admin/chatBotManagement/MovieBotSection.tsx:122"}, "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-612c565ce898b71f", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/admin/chatBotManagement/useChatBotManagement.ts:123", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/admin/chatBotManagement/useChatBotManagement.ts:123"}, "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-ee0dfe793108811a", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/soundfx/SafariTTSNotice.tsx:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/soundfx/SafariTTSNotice.tsx: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-1dad18d56b28ec59", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/soundfx/SoundFxPlayer.tsx:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/soundfx/SoundFxPlayer.tsx:73"}, "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-87cc7d7a999b4dd1", "name": "Icon-only button without accessible name \u2014 client/src/components/soundfx/SummonBotModal.tsx:102", "shortDescription": {"text": "Icon-only button without accessible name \u2014 client/src/components/soundfx/SummonBotModal.tsx:102"}, "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-fd09ee061e8aebcc", "name": "Icon-only button without accessible name \u2014 client/src/components/soundfx/SoundboardInputModal.tsx:127", "shortDescription": {"text": "Icon-only button without accessible name \u2014 client/src/components/soundfx/SoundboardInputModal.tsx:127"}, "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-4482a50546f35b3d", "name": "Icon-only button without accessible name \u2014 client/src/components/soundfx/TTSInputModal.tsx:118", "shortDescription": {"text": "Icon-only button without accessible name \u2014 client/src/components/soundfx/TTSInputModal.tsx:118"}, "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-6de28d74ded12c72", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/game/GameCanvas.tsx:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/game/GameCanvas.tsx: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-0d3912c1adc32774", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/game/GameOverlay.tsx:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/game/GameOverlay.tsx: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-f392ff37d771d156", "name": "Icon-only button without accessible name \u2014 client/src/components/user/ProfileSettings.tsx:57", "shortDescription": {"text": "Icon-only button without accessible name \u2014 client/src/components/user/ProfileSettings.tsx:57"}, "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-fdf7cbba554e701c", "name": "Icon-only button without accessible name \u2014 client/src/components/user/UserInfoPopup.tsx:301", "shortDescription": {"text": "Icon-only button without accessible name \u2014 client/src/components/user/UserInfoPopup.tsx:301"}, "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-51c33c3d6aa7cd50", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/user/UserProfile.tsx:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/user/UserProfile.tsx: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-623be545c19c18e7", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/clips/ClipPlayer.tsx:197", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/clips/ClipPlayer.tsx:197"}, "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-e72daac94eaeb771", "name": "Stray `console.log` in TS/JS \u2014 client/src/components/buffs/FloatingPoints.tsx:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/buffs/FloatingPoints.tsx:47"}, "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-1a4b416f215e8241", "name": "Stray `console.log` in TS/JS \u2014 client/src/contexts/SocketContext.tsx:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/contexts/SocketContext.tsx: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-8fce7e6d2dc87482", "name": "Stray `console.log` in TS/JS \u2014 client/src/hooks/useAuthState.ts:100", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/hooks/useAuthState.ts:100"}, "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-8c74c7df3602246d", "name": "Stray `console.log` in TS/JS \u2014 client/src/hooks/useStreamerViewManager.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/hooks/useStreamerViewManager.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-e60571f0467c62a5", "name": "Stray `console.log` in TS/JS \u2014 client/src/hooks/useChatSocket.ts:90", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/hooks/useChatSocket.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-ee4c18cea8ab0d9b", "name": "Stray `console.log` in TS/JS \u2014 client/src/hooks/streamState/useTakeoverState.ts:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/hooks/streamState/useTakeoverState.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-f0284bb461d21e1b", "name": "Stray `console.log` in TS/JS \u2014 client/src/hooks/streamState/useStreamSocketListeners.ts:79", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/hooks/streamState/useStreamSocketListeners.ts:79"}, "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-1b6de211bb4f338c", "name": "Stray `console.log` in TS/JS \u2014 client/src/services/PerformanceMonitor.ts:113", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/PerformanceMonitor.ts:113"}, "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-6598755a0dddb90f", "name": "Stray `console.log` in TS/JS \u2014 client/src/services/CookieConsentService.ts:218", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/CookieConsentService.ts:218"}, "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-5994f5babd7c29ff", "name": "Stray `console.log` in TS/JS \u2014 client/src/services/EffectEngine.ts:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/EffectEngine.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-1d25bbad5f473eb3", "name": "Stray `console.log` in TS/JS \u2014 client/src/services/VideoCompositor.ts:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/VideoCompositor.ts:70"}, "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-d321873ad4d5b9f6", "name": "Stray `console.log` in TS/JS \u2014 client/src/services/SocketManager.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/SocketManager.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-68bc51e340b22986", "name": "Stray `console.log` in TS/JS \u2014 client/src/services/WebRTCClientAdapter.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/WebRTCClientAdapter.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-36d8502a2cf7b779", "name": "Stray `console.log` in TS/JS \u2014 client/src/services/PermissionService.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/PermissionService.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-04ffbe84c4b6fa63", "name": "Stray `console.log` in TS/JS \u2014 client/src/services/SocketDebugger.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/SocketDebugger.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-6ec1231002d16742", "name": "Stray `console.log` in TS/JS \u2014 client/src/services/StreamerViewManager.ts:77", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/StreamerViewManager.ts:77"}, "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-d414c4a9016ab060", "name": "Stray `console.log` in TS/JS \u2014 client/src/services/AuthService.ts:107", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/AuthService.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-75de164feaaf5c44", "name": "Stray `console.log` in TS/JS \u2014 client/src/services/ScreenCaptureService.ts:96", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/ScreenCaptureService.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-e913fb872c51c62f", "name": "Stray `console.log` in TS/JS \u2014 client/src/services/game/GameClient.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/game/GameClient.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-b0b2ad4b9664e3f1", "name": "Stray `console.log` in TS/JS \u2014 client/src/services/game/GameRenderer.ts:352", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/game/GameRenderer.ts:352"}, "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-83bfbd40e9b1f8fe", "name": "Stray `console.log` in TS/JS \u2014 client/src/services/effects/ConfettiEffect.ts:86", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/effects/ConfettiEffect.ts:86"}, "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-27646679d936302d", "name": "Stray `console.log` in TS/JS \u2014 client/src/services/effects/SmokeEffect.ts:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/effects/SmokeEffect.ts:55"}, "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-fc7e9fc231ca8f90", "name": "Stray `console.log` in TS/JS \u2014 client/src/services/effects/DrawingEffect.ts:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/effects/DrawingEffect.ts:73"}, "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-b493e3c384319cec", "name": "Stray `console.log` in TS/JS \u2014 client/src/services/effects/BaseEffect.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/effects/BaseEffect.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-8e90cba4bfbbee73", "name": "Stray `console.log` in TS/JS \u2014 client/src/services/effects/SplatEffect.ts:131", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/effects/SplatEffect.ts:131"}, "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-a5f873b603339edc", "name": "Stray `console.log` in TS/JS \u2014 scripts/ops/manage-shop.js:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ops/manage-shop.js: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-f963051b78cdad60", "name": "Stray `console.log` in TS/JS \u2014 scripts/ops/make-admin.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ops/make-admin.js:7"}, "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-59607dae6f1138f1", "name": "Stray `console.log` in TS/JS \u2014 scripts/ops/recalculate-points.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ops/recalculate-points.js:7"}, "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-c5d8df2a1cbb46ea", "name": "Stray `console.log` in TS/JS \u2014 scripts/ops/reset-all-cooldowns.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ops/reset-all-cooldowns.js:14"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-931c3badefabb35e", "name": "Stray `console.log` in TS/JS \u2014 scripts/deploy/db-backup.js:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy/db-backup.js: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-67f68993e3bd2c50", "name": "Stray `console.log` in TS/JS \u2014 scripts/setup/setup-test-users.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup/setup-test-users.js: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-126b9fdf7a416063", "name": "Stray `console.log` in TS/JS \u2014 scripts/setup/convert-emojis-robust.js:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup/convert-emojis-robust.js: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-1a8ed88e6e33d5a8", "name": "Stray `console.log` in TS/JS \u2014 scripts/setup/import-github-emojis.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup/import-github-emojis.js:7"}, "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-8554c516023558cf", "name": "Stray `console.log` in TS/JS \u2014 scripts/setup/setup-whisper.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup/setup-whisper.js: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-bd2eb1e4fd2e33bc", "name": "Stray `console.log` in TS/JS \u2014 scripts/setup/convert-emojis-for-safari.js:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup/convert-emojis-for-safari.js: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-d43fca87dcb316b0", "name": "Stray `console.log` in TS/JS \u2014 scripts/setup/setup-chatbot-tables.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup/setup-chatbot-tables.js:7"}, "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-5841feee7e9269c4", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-test-points.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-test-points.js:8"}, "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-27b53118de41fe88", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-megaphone-item.js:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-megaphone-item.js: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-e459eaba6f33cb3e", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-101soundboards-item.js:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-101soundboards-item.js:47"}, "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-9e29ca7ba13891b4", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-use-assigned-name.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-use-assigned-name.js:7"}, "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-5ec8cce8eb2e9cc0", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-global-prompt-table.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-global-prompt-table.js:7"}, "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-27d8bc4979d19fc0", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-visualfx-items.js:4", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-visualfx-items.js:4"}, "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-88ee69a066635150", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-stream-reducer-item.js:4", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-stream-reducer-item.js:4"}, "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-b795d50e3962eda8", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-sample-emojis.js:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-sample-emojis.js:6"}, "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-0c515f82ba95d03c", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-item-categories-sqlite3.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-item-categories-sqlite3.js:7"}, "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-bdd60ec45727a8e9", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-heart-swarm.js:4", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-heart-swarm.js:4"}, "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-af665cac649393a5", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-account-deletion-tables.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-account-deletion-tables.js: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-b6e8ba7b534405e3", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-llm-model-column.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-llm-model-column.js:7"}, "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-9f8eb0e0e8566737", "name": "Stray `console.log` in TS/JS \u2014 chat-service/index.js:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/index.js: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-4dbcdcd40a91f35d", "name": "Stray `console.log` in TS/JS \u2014 chat-service/api/routes.js:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/api/routes.js:73"}, "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-a62d70ae2c4559cf", "name": "Stray `console.log` in TS/JS \u2014 chat-service/commands/commandParser.js:897", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/commands/commandParser.js:897"}, "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-1fcf6d495567ac27", "name": "Stray `console.log` in TS/JS \u2014 chat-service/claims/claimEventService.js:137", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/claims/claimEventService.js: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-341d7268965b7879", "name": "Stray `console.log` in TS/JS \u2014 chat-service/moderation/moderationService.js:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/moderation/moderationService.js: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-98287ac449b65af4", "name": "Stray `console.log` in TS/JS \u2014 chat-service/votes/unlockVote.js:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/votes/unlockVote.js: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-716395552a6e8c51", "name": "Stray `console.log` in TS/JS \u2014 chat-service/votes/lockVote.js:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/votes/lockVote.js: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-1ecfbbee5eaf3432", "name": "Stray `console.log` in TS/JS \u2014 chat-service/votes/swapVote.js:88", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/votes/swapVote.js:88"}, "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-c9de3d042fc729c4", "name": "Stray `console.log` in TS/JS \u2014 chat-service/votes/skipVote.js:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/votes/skipVote.js: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-7364cb37ac33619b", "name": "Stray `console.log` in TS/JS \u2014 chat-service/votes/extendVote.js:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/votes/extendVote.js: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-0d99ad86fd83fd81", "name": "Stray `console.log` in TS/JS \u2014 chat-service/votes/voteService.js:243", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/votes/voteService.js:243"}, "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-c5cd7899b6cadc88", "name": "Stray `console.log` in TS/JS \u2014 chat-service/votes/reduceVote.js:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/votes/reduceVote.js: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-b95524fcde34fff8", "name": "Stray `console.log` in TS/JS \u2014 chat-service/core/socketHandlers.js:173", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/core/socketHandlers.js:173"}, "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-6eace8c43432719e", "name": "Stray `console.log` in TS/JS \u2014 chat-service/core/adminCommands.js:128", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/core/adminCommands.js:128"}, "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-3d7c871c7b1def17", "name": "Stray `console.log` in TS/JS \u2014 server/migrations/add-auto-summon-bot.js:4", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/migrations/add-auto-summon-bot.js:4"}, "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-a7b4b36ba16cc8dd", "name": "Stray `console.log` in TS/JS \u2014 server/migrations/setup-transcription-tables.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/migrations/setup-transcription-tables.js:7"}, "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-1d13f50f26720673", "name": "Stray `console.log` in TS/JS \u2014 server/migrations/setup-clips-tables.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/migrations/setup-clips-tables.js:14"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c7272c8ede337e9", "name": "Stray `console.log` in TS/JS \u2014 server/migrations/add-summon-lesser-bot-item.js:4", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/migrations/add-summon-lesser-bot-item.js:4"}, "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-542664d498a1432e", "name": "Stray `console.log` in TS/JS \u2014 server/migrations/add_ip_bans.js:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/migrations/add_ip_bans.js: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-bfef6876065b44c0", "name": "Stray `console.log` in TS/JS \u2014 server/migrations/migrate-points-system.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/migrations/migrate-points-system.js: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-f57445c7a6438eae", "name": "Stray `console.log` in TS/JS \u2014 server/migrations/add_ai_moderation_tables.js:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/migrations/add_ai_moderation_tables.js: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-bbc6a1a8eefd78b0", "name": "Stray `console.log` in TS/JS \u2014 server/migrations/setup-recording-tables.js:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/migrations/setup-recording-tables.js:6"}, "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-517929146eab1ce1", "name": "Stray `console.log` in TS/JS \u2014 server/migrations/add-summon-bot-support.js:4", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/migrations/add-summon-bot-support.js:4"}, "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-82b657dec07c55b5", "name": "Stray `console.log` in TS/JS \u2014 server/migrations/add-summon-bot-item.js:4", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/migrations/add-summon-bot-item.js:4"}, "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-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ccd95eaa2b5556ca", "name": "Runtime dotenv file present in repo: client/.env.development", "shortDescription": {"text": "Runtime dotenv file present in repo: client/.env.development"}, "fullDescription": {"text": "`client/.env.development` looks like a runtime dotenv file. It contains secret-looking assignments for SSL_KEY_FILE. Move real values to a secret manager and keep only `.env.example` style templates in source control."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-507276577b21da57", "name": "Insecure pattern 'dangerous_innerhtml' in blog/assets/index-CW_Lsnfj.js:9", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in blog/assets/index-CW_Lsnfj.js:9"}, "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-3a49127e66866ba5", "name": "Insecure pattern 'direct_innerhtml_assignment' in blog/assets/index-CW_Lsnfj.js:8", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in blog/assets/index-CW_Lsnfj.js:8"}, "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-3abcdaf3f566420f", "name": "Insecure pattern 'dangerous_innerhtml' in blog/assets/index-DUiMp6_W.js:9", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in blog/assets/index-DUiMp6_W.js:9"}, "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-b5634d97f49a6f79", "name": "Insecure pattern 'direct_innerhtml_assignment' in blog/assets/index-DUiMp6_W.js:8", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in blog/assets/index-DUiMp6_W.js:8"}, "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-6a960c30249b76a5", "name": "Insecure pattern 'node_child_process' in client/serve-production.js:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in client/serve-production.js: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-f534b82df77e40f6", "name": "Insecure pattern 'local_storage_auth_token' in client/src/components/inventory/InventoryPanel.test.tsx:103", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in client/src/components/inventory/InventoryPanel.test.tsx:103"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-739ce9af5e16e2f3", "name": "Insecure pattern 'local_storage_auth_token' in client/src/components/auth/OAuthUsernameSelection.tsx:138", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in client/src/components/auth/OAuthUsernameSelection.tsx:138"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eccfac2b7e478cb4", "name": "Insecure pattern 'local_storage_auth_token' in client/src/components/auth/OAuthCallback.tsx:20", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in client/src/components/auth/OAuthCallback.tsx:20"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d9bcb133f84b2f71", "name": "Insecure pattern 'dangerous_innerhtml' in client/src/components/chat/MessageList.tsx:234", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in client/src/components/chat/MessageList.tsx:234"}, "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-fc1fe1ebe93fa6c2", "name": "Insecure pattern 'local_storage_auth_token' in client/src/services/SocketManager.ts:156", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in client/src/services/SocketManager.ts:156"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fbb5b71790444f21", "name": "Insecure pattern 'local_storage_auth_token' in client/src/services/AuthService.ts:64", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in client/src/services/AuthService.ts:64"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eab3c1336610a053", "name": "Insecure pattern 'node_child_process' in scripts/setup/convert-emojis-robust.js:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/setup/convert-emojis-robust.js:5"}, "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-f67c29bd256f7b9d", "name": "Insecure pattern 'node_child_process' in scripts/setup/setup-whisper.js:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/setup/setup-whisper.js:1"}, "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-c7fcab4254684cdc", "name": "Insecure pattern 'exec_used' in scripts/setup/convert-emojis-for-safari.js:74", "shortDescription": {"text": "Insecure pattern 'exec_used' in scripts/setup/convert-emojis-for-safari.js:74"}, "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-05e63a154a4096b3", "name": "Insecure pattern 'node_child_process' in scripts/setup/convert-emojis-for-safari.js:72", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/setup/convert-emojis-for-safari.js:72"}, "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-0e523aafbe8db746", "name": "Insecure pattern 'cors_wildcard' in server/index.js:224", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in server/index.js:224"}, "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-8c229b24dd629765", "name": "Insecure pattern 'exec_used' in server/bootstrap/shutdown.js:136", "shortDescription": {"text": "Insecure pattern 'exec_used' in server/bootstrap/shutdown.js:136"}, "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-92e6bfc7aa736720", "name": "Insecure pattern 'node_child_process' in server/bootstrap/shutdown.js:133", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/bootstrap/shutdown.js:133"}, "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-ee01b7e31f7835e3", "name": "Insecure pattern 'cors_wildcard' in server/routes/soundfx.js:212", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in server/routes/soundfx.js:212"}, "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-71aabd57f27c2c5e", "name": "Insecure pattern 'node_child_process' in server/routes/emojis.js:28", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/routes/emojis.js:28"}, "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-f78ed53f25a89c52", "name": "Insecure pattern 'node_child_process' in server/services/KickRandomService.js:8", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/services/KickRandomService.js:8"}, "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-30206379458dbf46", "name": "Insecure pattern 'node_child_process' in server/services/EgressFrameCaptureService.js:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/services/EgressFrameCaptureService.js:1"}, "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-785c1d48c2e3ff06", "name": "Insecure pattern 'node_child_process' in server/services/StreamProbeService.js:8", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/services/StreamProbeService.js:8"}, "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-51ab83731158bb52", "name": "Insecure pattern 'node_child_process' in server/services/URLStreamExtractorService.js:8", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/services/URLStreamExtractorService.js:8"}, "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-bb144b04bfd83ec9", "name": "Insecure pattern 'node_child_process' in server/services/ProcessManager.js:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/services/ProcessManager.js:1"}, "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-11edd2593d3b32ac", "name": "Insecure pattern 'node_child_process' in server/services/B2StorageService.js:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/services/B2StorageService.js: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-7999f5f9f3084fa0", "name": "Insecure pattern 'node_child_process' in server/services/ClipProcessorService.js:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/services/ClipProcessorService.js:1"}, "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-711d3785330bdc27", "name": "Insecure pattern 'node_child_process' in server/services/AudioBufferService.js:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/services/AudioBufferService.js: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-ae0378f561d77dfa", "name": "Insecure pattern 'node_child_process' in server/services/TranscriptionAudioAdapter.js:9", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/services/TranscriptionAudioAdapter.js:9"}, "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-b5b3e8227a0eb448", "name": "Insecure pattern 'node_child_process' in server/services/SimpleMediaStreamService.js:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/services/SimpleMediaStreamService.js: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-9506a5ffb7d96025", "name": "Insecure pattern 'exec_used' in server/services/ViewBotLiveKitService.js:546", "shortDescription": {"text": "Insecure pattern 'exec_used' in server/services/ViewBotLiveKitService.js:546"}, "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-094df2911aee1d15", "name": "Insecure pattern 'node_child_process' in server/services/ViewBotLiveKitService.js:8", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/services/ViewBotLiveKitService.js:8"}, "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-9ac4ed6ebb52dd6c", "name": "Insecure pattern 'exec_used' in server/services/urlstream/IngressJanitor.js:159", "shortDescription": {"text": "Insecure pattern 'exec_used' in server/services/urlstream/IngressJanitor.js:159"}, "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-6be221ebbe28b515", "name": "Insecure pattern 'node_child_process' in server/services/urlstream/IngressJanitor.js:157", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/services/urlstream/IngressJanitor.js:157"}, "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-7494754dd67daba8", "name": "Insecure pattern 'node_child_process' in server/services/urlstream/FFmpegPipeline.js:15", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/services/urlstream/FFmpegPipeline.js:15"}, "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-e41b07cd8049f821", "name": "Insecure pattern 'node_child_process' in server/services/transcription/WhisperRunner.js:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/services/transcription/WhisperRunner.js: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-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-node@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-9e0c7e16ec5ed96c", "name": "Very large file: client/src/App.tsx (1427 lines)", "shortDescription": {"text": "Very large file: client/src/App.tsx (1427 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-58d09a816278d369", "name": "Very large file: client/src/components/stream/WebRTCViewer.tsx (2407 lines)", "shortDescription": {"text": "Very large file: client/src/components/stream/WebRTCViewer.tsx (2407 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-bc3e23fe08ce66f2", "name": "Very large file: client/src/services/LiveKitClient.ts (1575 lines)", "shortDescription": {"text": "Very large file: client/src/services/LiveKitClient.ts (1575 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-178b36aedacb247a", "name": "Very large file: chat-service/commands/commandParser.js (1386 lines)", "shortDescription": {"text": "Very large file: chat-service/commands/commandParser.js (1386 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-f8d4e46ccb4d4665", "name": "Very large file: server/index.js (1678 lines)", "shortDescription": {"text": "Very large file: server/index.js (1678 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-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 1025 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 107 placeholder/mock markers across 58 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-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-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-c5345fc57fdf7863", "name": "Legacy-named symbol `unstable_legacy` in blog/assets/index-CW_Lsnfj.js:8", "shortDescription": {"text": "Legacy-named symbol `unstable_legacy` in blog/assets/index-CW_Lsnfj.js:8"}, "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-665a86044c9ed261", "name": "`fetch()` without try/.catch or AbortSignal \u2014 blog/assets/index-CW_Lsnfj.js:1", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 blog/assets/index-CW_Lsnfj.js:1"}, "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-10adb5e0efc8273d", "name": "Legacy-named symbol `unstable_legacy` in blog/assets/index-DUiMp6_W.js:8", "shortDescription": {"text": "Legacy-named symbol `unstable_legacy` in blog/assets/index-DUiMp6_W.js:8"}, "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-a234892ed66735b0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 blog/assets/index-DUiMp6_W.js:1", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 blog/assets/index-DUiMp6_W.js:1"}, "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-cc31b1bb949f138e", "name": "Commented-code block (7 lines) in client/src/App.tsx:196", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/App.tsx:196"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eae35c197b3c46e9", "name": "Commented-code block (7 lines) in client/src/components/Tutorial.test.tsx:5", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/components/Tutorial.test.tsx: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-56bc73b74e60a6e8", "name": "Commented-code block (5 lines) in client/src/components/URLStreamManagement.test.tsx:5", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/URLStreamManagement.test.tsx: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-85088aa9fb729317", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/BugReportModal.tsx:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/BugReportModal.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-6fa5f57c129d03a9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/BotsPanel.tsx:129", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/BotsPanel.tsx:129"}, "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-4b9b783721342f18", "name": "Commented-code block (12 lines) in client/src/components/Chat.test.tsx:13", "shortDescription": {"text": "Commented-code block (12 lines) in client/src/components/Chat.test.tsx: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-7cd379bb974963ea", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/Chat.test.tsx:127", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/Chat.test.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-af9d146ff3781094", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/StreamBotManager.tsx:55", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/StreamBotManager.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-8ac8fa8ce7199543", "name": "Commented-code block (8 lines) in client/src/components/DesktopHeaderV2.test.tsx:5", "shortDescription": {"text": "Commented-code block (8 lines) in client/src/components/DesktopHeaderV2.test.tsx: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-dae095ace1939bec", "name": "Commented-code block (8 lines) in client/src/components/inventory/InventoryPanel.test.tsx:7", "shortDescription": {"text": "Commented-code block (8 lines) in client/src/components/inventory/InventoryPanel.test.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-37a0cbf621348785", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/inventory/InventoryPanel.test.tsx:8", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/inventory/InventoryPanel.test.tsx:8"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-17a41ecf6150f5d0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/inventory/inventoryPanel/useInventory.ts:14", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/inventory/inventoryPanel/useInventory.ts:14"}, "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-28715d385c7c02fe", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/chat/useChatBonus.ts:115", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/chat/useChatBonus.ts:115"}, "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-2126bd240f8da129", "name": "Commented-code block (5 lines) in client/src/components/audio/AudioLevelMeter.tsx:188", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/audio/AudioLevelMeter.tsx:188"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9cbe353e4483853f", "name": "Commented-code block (6 lines) in client/src/components/stream/StreamControls.test.tsx:6", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/stream/StreamControls.test.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-87095b2f02640fee", "name": "Commented-code block (6 lines) in client/src/components/stream/StreamerSettings.characterization.test.tsx:5", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/stream/StreamerSettings.characterization.test.tsx: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-a8901e83a8fa788f", "name": "Commented-code block (5 lines) in client/src/components/stream/WebRTCViewer.tsx:62", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/stream/WebRTCViewer.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-215e8e4eaa090127", "name": "Commented-code block (6 lines) in client/src/components/stream/streamerSettings/useStreamerDevices.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/stream/streamerSettings/useStreamerDevices.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-e3d2bc9795eefb88", "name": "Commented-code block (10 lines) in client/src/components/admin/AIModerationManagement.tsx:10", "shortDescription": {"text": "Commented-code block (10 lines) in client/src/components/admin/AIModerationManagement.tsx:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-21e60cb2d14281e9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/ItemManagement.test.tsx:5", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/ItemManagement.test.tsx:5"}, "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-0efde919f276d963", "name": "Commented-code block (7 lines) in client/src/components/admin/VisionBotManagement.test.tsx:6", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/components/admin/VisionBotManagement.test.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-44f9024e0130d32c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/VisionBotManagement.test.tsx:6", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/VisionBotManagement.test.tsx:6"}, "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-2bbbf0ff46401098", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/StreamingLogs.tsx:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/StreamingLogs.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-07c13516b6997225", "name": "Commented-code block (7 lines) in client/src/components/admin/RecordingManagement.tsx:5", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/components/admin/RecordingManagement.tsx: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-4d6dbd609d31cb6c", "name": "Commented-code block (5 lines) in client/src/components/admin/TranscriptionManagement.test.tsx:7", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/admin/TranscriptionManagement.test.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-7d47d78bca1725c8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/TranscriptionManagement.test.tsx:7", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/TranscriptionManagement.test.tsx:7"}, "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-f2ae8af0d6c65e96", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/IPBanManagement.tsx:144", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/IPBanManagement.tsx:144"}, "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-25e74d70e518dabe", "name": "Commented-code block (7 lines) in client/src/components/admin/ChatBotManagement.test.tsx:6", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/components/admin/ChatBotManagement.test.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-d45d6da0b64fa4d9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/ChatBotManagement.test.tsx:6", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/ChatBotManagement.test.tsx:6"}, "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-43d22de4f771e9ef", "name": "Commented-code block (6 lines) in client/src/components/admin/AdminRecordingReview.test.tsx:5", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/admin/AdminRecordingReview.test.tsx: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-2ef04937c3a73ec6", "name": "Commented-code block (10 lines) in client/src/components/admin/TutorialEditor.test.tsx:6", "shortDescription": {"text": "Commented-code block (10 lines) in client/src/components/admin/TutorialEditor.test.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-d98aa2efcaef8a58", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/TutorialEditor.test.tsx:7", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/TutorialEditor.test.tsx:7"}, "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-4575da93ca48b0f2", "name": "Commented-code block (6 lines) in client/src/components/admin/adminRecordingReview/useHlsPlayer.ts:16", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/admin/adminRecordingReview/useHlsPlayer.ts:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c34be3aa4848044d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/chatBotManagement/useChatBotManagement.ts:15", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/chatBotManagement/useChatBotManagement.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-a8f5a9234fc6a803", "name": "Commented-code block (7 lines) in client/src/components/soundfx/SoundFxPlayer.tsx:73", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/components/soundfx/SoundFxPlayer.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-828842f16cada672", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/user/UserInfoPopup.tsx:140", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/user/UserInfoPopup.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-79b89abdc98e6da1", "name": "Commented-code block (8 lines) in client/src/components/user/ProfileSettings.test.tsx:7", "shortDescription": {"text": "Commented-code block (8 lines) in client/src/components/user/ProfileSettings.test.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-baad5baba13c9784", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/clips/ClipCreationModal.tsx:102", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/clips/ClipCreationModal.tsx:102"}, "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-580c1a1d44d5a0c3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/clips/ClipsGallery.tsx:69", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/clips/ClipsGallery.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-a8cbb6994d3d348a", "name": "Commented-code block (13 lines) in client/src/components/canvas/CanvasEffectOverlay.test.tsx:7", "shortDescription": {"text": "Commented-code block (13 lines) in client/src/components/canvas/CanvasEffectOverlay.test.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-237960386c0043de", "name": "Commented-code block (5 lines) in client/src/components/canvas/canvasEffectOverlay/effectDefinitions.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/canvas/canvasEffectOverlay/effectDefinitions.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-867b429aa444ace8", "name": "Commented-code block (5 lines) in client/src/components/buffs/BuffDisplay.tsx:250", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/buffs/BuffDisplay.tsx:250"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d5e179ad79157e4f", "name": "Commented-code block (6 lines) in client/src/hooks/useStreamerViewManager.ts:36", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/hooks/useStreamerViewManager.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-5f9c63311531799f", "name": "Commented-code block (6 lines) in client/src/hooks/useStreamVisualEffects.ts:69", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/hooks/useStreamVisualEffects.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-044104f8ce7801e4", "name": "Commented-code block (5 lines) in client/src/hooks/useWebRTCConnection.ts:92", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/hooks/useWebRTCConnection.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-eb7c872585c8d7a1", "name": "Commented-code block (9 lines) in client/src/hooks/__tests__/useChatMessages.test.tsx:4", "shortDescription": {"text": "Commented-code block (9 lines) in client/src/hooks/__tests__/useChatMessages.test.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-bc30134ba400d22f", "name": "Commented-code block (12 lines) in client/src/hooks/__tests__/useStreamGenerationGuard.test.tsx:11", "shortDescription": {"text": "Commented-code block (12 lines) in client/src/hooks/__tests__/useStreamGenerationGuard.test.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-7c64ac3027060a99", "name": "Commented-code block (14 lines) in client/src/services/EffectEngine.ts:95", "shortDescription": {"text": "Commented-code block (14 lines) in client/src/services/EffectEngine.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-6908b20a5e46bc3d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/services/LiveKitClient.ts:453", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/services/LiveKitClient.ts:453"}, "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-25aafdb3a64e0d4b", "name": "Commented-code block (8 lines) in client/src/services/effects/DrawingEffect.ts:159", "shortDescription": {"text": "Commented-code block (8 lines) in client/src/services/effects/DrawingEffect.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-020dff647b02df26", "name": "Commented-code block (5 lines) in config/jest/jest.config.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in config/jest/jest.config.js: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-2b76cbfe9442f498", "name": "Commented-code block (8 lines) in config/jest/jest.bettersqlite.config.js:3", "shortDescription": {"text": "Commented-code block (8 lines) in config/jest/jest.bettersqlite.config.js: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-de1f5d753c543e3c", "name": "Commented-code block (5 lines) in scripts/deploy/db-backup.js:5", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/deploy/db-backup.js: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-9d5cd09953dbb5a7", "name": "Commented-code block (5 lines) in chat-service/index.js:86", "shortDescription": {"text": "Commented-code block (5 lines) in chat-service/index.js:86"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4c7957151af9c043", "name": "Commented-code block (11 lines) in chat-service/tests/claims/claimEventService.test.js:3", "shortDescription": {"text": "Commented-code block (11 lines) in chat-service/tests/claims/claimEventService.test.js: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-d0a923298e2f642d", "name": "Commented-code block (9 lines) in chat-service/api/routes.js:3", "shortDescription": {"text": "Commented-code block (9 lines) in chat-service/api/routes.js: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-b4871b73e1986397", "name": "Commented-code block (6 lines) in chat-service/commands/commandParser.js:8", "shortDescription": {"text": "Commented-code block (6 lines) in chat-service/commands/commandParser.js: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-22060e44cb0ead06", "name": "Commented-code block (5 lines) in chat-service/claims/claimEventService.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in chat-service/claims/claimEventService.js: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-11362bb39498ec65", "name": "Commented-code block (5 lines) in chat-service/moderation/moderationService.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in chat-service/moderation/moderationService.js: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-6b21fe6a8f8db83e", "name": "Commented-code block (5 lines) in chat-service/votes/swapVote.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in chat-service/votes/swapVote.js: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-bebbdad62e622c2d", "name": "Commented-code block (5 lines) in chat-service/votes/skipVote.js:8", "shortDescription": {"text": "Commented-code block (5 lines) in chat-service/votes/skipVote.js: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-a6cd7ba8d031fde0", "name": "Commented-code block (9 lines) in chat-service/votes/voteService.js:3", "shortDescription": {"text": "Commented-code block (9 lines) in chat-service/votes/voteService.js: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-7bee02a6b29c275e", "name": "Commented-code block (5 lines) in chat-service/votes/reduceVote.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in chat-service/votes/reduceVote.js: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-2b2dcaa54929733f", "name": "Commented-code block (15 lines) in chat-service/core/socketHandlers.js:3", "shortDescription": {"text": "Commented-code block (15 lines) in chat-service/core/socketHandlers.js: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-0e3e6d9ab01ea953", "name": "Commented-code block (5 lines) in chat-service/core/adminCommands.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in chat-service/core/adminCommands.js: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-b19d0d48d6126876", "name": "Commented-code block (5 lines) in server/index.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in server/index.js: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-f2f6af7735e6b48d", "name": "Commented-code block (10 lines) in server/tests/StreamService.test.js:145", "shortDescription": {"text": "Commented-code block (10 lines) in server/tests/StreamService.test.js: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-e1ce45ee31306b32", "name": "Commented-code block (5 lines) in server/tests/TakeoverService.test.js:104", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/TakeoverService.test.js: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-7b5d604d6a98ecbf", "name": "Commented-code block (7 lines) in server/tests/integration/recording-cleanup.upload-race.integration.test.js:136", "shortDescription": {"text": "Commented-code block (7 lines) in server/tests/integration/recording-cleanup.upload-race.integration.test.js: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-4ee14f270bc1d171", "name": "Commented-code block (6 lines) in server/tests/integration/routes.internal.gift.integration.test.js:66", "shortDescription": {"text": "Commented-code block (6 lines) in server/tests/integration/routes.internal.gift.integration.test.js: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-85e2dc42ce1cc6a0", "name": "Commented-code block (6 lines) in server/tests/integration/routes.internal.points.integration.test.js:69", "shortDescription": {"text": "Commented-code block (6 lines) in server/tests/integration/routes.internal.points.integration.test.js: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-6e148307051ddfa9", "name": "Commented-code block (6 lines) in server/tests/bootstrap/services.test.js:4", "shortDescription": {"text": "Commented-code block (6 lines) in server/tests/bootstrap/services.test.js: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-f28e2d22f13567e7", "name": "Commented-code block (13 lines) in server/tests/bootstrap/start-streaming-backend.test.js:3", "shortDescription": {"text": "Commented-code block (13 lines) in server/tests/bootstrap/start-streaming-backend.test.js: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-59fde01eeea29ed3", "name": "Commented-code block (5 lines) in server/tests/database/database-better.bettersqlite.test.js:61", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/database/database-better.bettersqlite.test.js: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-88f54ed9b726ac2e", "name": "Commented-code block (6 lines) in server/tests/database/migrations.runner.test.js:103", "shortDescription": {"text": "Commented-code block (6 lines) in server/tests/database/migrations.runner.test.js:103"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6c505ff87fb4136a", "name": "Commented-code block (5 lines) in server/tests/routes/auth.characterization.test.js:435", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/routes/auth.characterization.test.js:435"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-03c4bd7477dc5d85", "name": "Commented-code block (5 lines) in server/tests/routes/internal.characterization.test.js:203", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/routes/internal.characterization.test.js:203"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9cad103bacd171ab", "name": "Commented-code block (8 lines) in server/tests/sockets/StreamHandler.characterization.test.js:455", "shortDescription": {"text": "Commented-code block (8 lines) in server/tests/sockets/StreamHandler.characterization.test.js:455"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6dc86965bfa3d857", "name": "Commented-code block (6 lines) in server/tests/services/BuffDebuffService.characterization.test.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in server/tests/services/BuffDebuffService.characterization.test.js: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-4c2320e4d2ca5160", "name": "Commented-code block (9 lines) in server/tests/services/ModerationNotifier.test.js:4", "shortDescription": {"text": "Commented-code block (9 lines) in server/tests/services/ModerationNotifier.test.js: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-a5cfa7efb508c9df", "name": "Commented-code block (14 lines) in server/tests/services/ModerationStage2.test.js:4", "shortDescription": {"text": "Commented-code block (14 lines) in server/tests/services/ModerationStage2.test.js: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-e7fea9ac9eb8ded0", "name": "Commented-code block (6 lines) in server/tests/services/AccountLifecycleManager.purge.test.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in server/tests/services/AccountLifecycleManager.purge.test.js: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-117bdd878d77f72c", "name": "Commented-code block (5 lines) in server/tests/services/ProcessManager.reaper.test.js:430", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/services/ProcessManager.reaper.test.js: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-31cda48248884193", "name": "Commented-code block (5 lines) in server/tests/services/ShopService.purchaseItem.atomic.test.js:208", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/services/ShopService.purchaseItem.atomic.test.js: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-2e953e60e643d5ef", "name": "Commented-code block (8 lines) in server/tests/services/ModerationActionArbiter.test.js:5", "shortDescription": {"text": "Commented-code block (8 lines) in server/tests/services/ModerationActionArbiter.test.js: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-3a11dfd164a25e31", "name": "Legacy-named symbol `anon_old` in server/tests/services/AnonymousBuffStore.expiry.test.js:51", "shortDescription": {"text": "Legacy-named symbol `anon_old` in server/tests/services/AnonymousBuffStore.expiry.test.js:51"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b0d12f1ae6386e02", "name": "Commented-code block (6 lines) in server/tests/services/ViewBotLiveKitService.characterization.test.js:4", "shortDescription": {"text": "Commented-code block (6 lines) in server/tests/services/ViewBotLiveKitService.characterization.test.js: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-cb4f5db7855c4e3c", "name": "Commented-code block (7 lines) in server/tests/services/VisionBotService.test.js:168", "shortDescription": {"text": "Commented-code block (7 lines) in server/tests/services/VisionBotService.test.js:168"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7bdd3bddb4bf2c60", "name": "Commented-code block (5 lines) in server/tests/services/ShopService.purchaseItem.realAccount.test.js:287", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/services/ShopService.purchaseItem.realAccount.test.js:287"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d58ef245fecd2230", "name": "Commented-code block (5 lines) in server/tests/services/InventoryService.giftItem.test.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/services/InventoryService.giftItem.test.js: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-f0599355efaf2ca2", "name": "Commented-code block (7 lines) in server/tests/services/KickRandomService.test.js:32", "shortDescription": {"text": "Commented-code block (7 lines) in server/tests/services/KickRandomService.test.js: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-23caee3a406ada1a", "name": "Commented-code block (7 lines) in server/tests/services/ContinuousRecordingService.cleanup-race.test.js:161", "shortDescription": {"text": "Commented-code block (7 lines) in server/tests/services/ContinuousRecordingService.cleanup-race.test.js:161"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c7ff69a8e3666801", "name": "Commented-code block (7 lines) in server/tests/services/ModerationStage3.test.js:4", "shortDescription": {"text": "Commented-code block (7 lines) in server/tests/services/ModerationStage3.test.js: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-1ff3fe6bec781ab8", "name": "Commented-code block (6 lines) in server/tests/services/ModerationStage1.test.js:212", "shortDescription": {"text": "Commented-code block (6 lines) in server/tests/services/ModerationStage1.test.js:212"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-936834d0393af539", "name": "Commented-code block (18 lines) in server/tests/services/StreamNotifier.test.js:4", "shortDescription": {"text": "Commented-code block (18 lines) in server/tests/services/StreamNotifier.test.js: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-18662ba791d856bc", "name": "Commented-code block (5 lines) in server/tests/services/ChatBotService.commentPaths.test.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/services/ChatBotService.commentPaths.test.js: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-7c7b371eef49c45e", "name": "Commented-code block (5 lines) in server/tests/services/ModerationService.image.test.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/services/ModerationService.image.test.js: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-89e609d8dcef7200", "name": "Commented-code block (5 lines) in server/tests/services/BuffNotifier.test.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/services/BuffNotifier.test.js: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-4e2af861d5136b22", "name": "Commented-code block (13 lines) in server/tests/services/GameMechanicsService.test.js:4", "shortDescription": {"text": "Commented-code block (13 lines) in server/tests/services/GameMechanicsService.test.js: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-cf5344cffc10cc47", "name": "Commented-code block (9 lines) in server/tests/services/ViewerCountNotifier.test.js:4", "shortDescription": {"text": "Commented-code block (9 lines) in server/tests/services/ViewerCountNotifier.test.js: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-52f579f49fd69e87", "name": "Commented-code block (10 lines) in server/tests/services/ModerationService.test.js:5", "shortDescription": {"text": "Commented-code block (10 lines) in server/tests/services/ModerationService.test.js: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-6d8b79f06294aeca", "name": "Commented-code block (5 lines) in server/middleware/streamControlAuth.js:27", "shortDescription": {"text": "Commented-code block (5 lines) in server/middleware/streamControlAuth.js:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-80b02b98093d3ac0", "name": "Commented-code block (5 lines) in server/bootstrap/services.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in server/bootstrap/services.js: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-e1407cbfbcbb4ed5", "name": "Commented-code block (7 lines) in server/bootstrap/shutdown.js:71", "shortDescription": {"text": "Commented-code block (7 lines) in server/bootstrap/shutdown.js: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-d7f6a941c6956447", "name": "Commented-code block (6 lines) in server/bootstrap/start-listeners.js:46", "shortDescription": {"text": "Commented-code block (6 lines) in server/bootstrap/start-listeners.js: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-41628c54b9c80161", "name": "Commented-code block (6 lines) in server/bootstrap/start-streaming-backend.js:134", "shortDescription": {"text": "Commented-code block (6 lines) in server/bootstrap/start-streaming-backend.js: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-2faf76c847538bc0", "name": "Commented-code block (5 lines) in server/database/database-better.js:81", "shortDescription": {"text": "Commented-code block (5 lines) in server/database/database-better.js:81"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6549c6b60abfbd24", "name": "Commented-code block (6 lines) in server/database/transaction.js:79", "shortDescription": {"text": "Commented-code block (6 lines) in server/database/transaction.js:79"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-78cac7baa646f3ab", "name": "Commented-code block (9 lines) in server/database/database.js:471", "shortDescription": {"text": "Commented-code block (9 lines) in server/database/database.js:471"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-42e86c8999f0b4b4", "name": "Commented-code block (6 lines) in server/database/repository/ChatBotRepository.js:34", "shortDescription": {"text": "Commented-code block (6 lines) in server/database/repository/ChatBotRepository.js:34"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4578c780c2309bed", "name": "Commented-code block (8 lines) in server/database/repository/ContinuousRecordingRepository.js:199", "shortDescription": {"text": "Commented-code block (8 lines) in server/database/repository/ContinuousRecordingRepository.js:199"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dcfd1eb507997dce", "name": "Commented-code block (7 lines) in server/database/repository/UserRepository.js:130", "shortDescription": {"text": "Commented-code block (7 lines) in server/database/repository/UserRepository.js: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-e0c15cd0e3ffdd84", "name": "Commented-code block (6 lines) in server/routes/admin-moderation.js:452", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/admin-moderation.js:452"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-308d551e4b4b7ea5", "name": "Commented-code block (9 lines) in server/routes/media.js:16", "shortDescription": {"text": "Commented-code block (9 lines) in server/routes/media.js:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a3ebdd468faaf8e0", "name": "Commented-code block (10 lines) in server/routes/auth.js:65", "shortDescription": {"text": "Commented-code block (10 lines) in server/routes/auth.js:65"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-086e61cdf8e68020", "name": "Commented-code block (5 lines) in server/routes/admin-ai.js:203", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/admin-ai.js:203"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a81312f0fac90377", "name": "Commented-code block (11 lines) in server/routes/internal.js:8", "shortDescription": {"text": "Commented-code block (11 lines) in server/routes/internal.js: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-8533099f4a63cb85", "name": "Commented-code block (7 lines) in server/routes/items.js:25", "shortDescription": {"text": "Commented-code block (7 lines) in server/routes/items.js:25"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-417aeb840e45378d", "name": "Commented-code block (6 lines) in server/routes/moderation-ai.js:96", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/moderation-ai.js:96"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-41cd665926b61fb2", "name": "Commented-code block (6 lines) in server/routes/admin-recordings/context.js:21", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/admin-recordings/context.js: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-b95dbbb12351dcbe", "name": "Commented-code block (5 lines) in server/routes/auth/session.js:6", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/auth/session.js: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-d52345bc85bbd10d", "name": "Commented-code block (5 lines) in server/routes/auth/oauth.js:4", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/auth/oauth.js: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-41c2eb394f47d1bf", "name": "Commented-code block (5 lines) in server/routes/auth/register.js:5", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/auth/register.js: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-8966d6c288bd0bda", "name": "Commented-code block (6 lines) in server/routes/internal/points.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/internal/points.js: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-65fc3788b076a89e", "name": "Commented-code block (5 lines) in server/routes/internal/callbacks.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/internal/callbacks.js: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-068ef42c28d12d70", "name": "Commented-code block (5 lines) in server/routes/internal/gift.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/internal/gift.js: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-51189657bb581672", "name": "Commented-code block (6 lines) in server/sockets/DisconnectHandler.js:131", "shortDescription": {"text": "Commented-code block (6 lines) in server/sockets/DisconnectHandler.js: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-3adce50cdddf6377", "name": "Commented-code block (6 lines) in server/sockets/streamHandler/takeover.js:183", "shortDescription": {"text": "Commented-code block (6 lines) in server/sockets/streamHandler/takeover.js:183"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-09402d71f3aa3a95", "name": "Commented-code block (10 lines) in server/services/StreamNotifier.js:8", "shortDescription": {"text": "Commented-code block (10 lines) in server/services/StreamNotifier.js: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-7d6546642b8ff9f5", "name": "Commented-code block (7 lines) in server/services/EgressFrameCaptureService.js:29", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/EgressFrameCaptureService.js:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c77bae9217ae1d0e", "name": "Commented-code block (5 lines) in server/services/WhitelistEnforcer.js:195", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/WhitelistEnforcer.js:195"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2b79364168883e6e", "name": "Commented-code block (8 lines) in server/services/ContinuousRecordingService.js:230", "shortDescription": {"text": "Commented-code block (8 lines) in server/services/ContinuousRecordingService.js:230"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-27390119a3be1e25", "name": "Commented-code block (10 lines) in server/services/kick-api-helper.py:12", "shortDescription": {"text": "Commented-code block (10 lines) in server/services/kick-api-helper.py: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-173290b4c234051b", "name": "Commented-code block (6 lines) in server/services/WhitelistService.js:255", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/WhitelistService.js: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-3c1b268e549546e0", "name": "Commented-code block (11 lines) in server/services/StreamService.js:9", "shortDescription": {"text": "Commented-code block (11 lines) in server/services/StreamService.js:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-de9fbcc2c147b81a", "name": "Commented-code block (5 lines) in server/services/URLStreamExtractorService.js:316", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/URLStreamExtractorService.js:316"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b921a60e5e281e41", "name": "Commented-code block (6 lines) in server/services/ProcessManager.js:200", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/ProcessManager.js:200"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9e9d1595f57fe4c4", "name": "Commented-code block (7 lines) in server/services/ModerationStage3.js:5", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/ModerationStage3.js: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-64e28bce4b922270", "name": "Commented-code block (9 lines) in server/services/ModerationStage2.js:11", "shortDescription": {"text": "Commented-code block (9 lines) in server/services/ModerationStage2.js: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-032e345e41cfb1f1", "name": "Commented-code block (9 lines) in server/services/ItemUseService.js:17", "shortDescription": {"text": "Commented-code block (9 lines) in server/services/ItemUseService.js: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-380de16242b1b0d2", "name": "Commented-code block (5 lines) in server/services/GameMechanicsService.js:7", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/GameMechanicsService.js: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-6c101e2ed12dbef4", "name": "Legacy-named symbol `daysOld` in server/services/TranscriptionService.js:499", "shortDescription": {"text": "Legacy-named symbol `daysOld` in server/services/TranscriptionService.js:499"}, "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-3877481b848cfc0b", "name": "Commented-code block (6 lines) in server/services/ChatBotService.js:37", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/ChatBotService.js: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-ff588fd3d5cd3e00", "name": "Commented-code block (5 lines) in server/services/RandomStreamRotationService.js:49", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/RandomStreamRotationService.js: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-26220c0323e24abd", "name": "Commented-code block (16 lines) in server/services/BuffNotifier.js:11", "shortDescription": {"text": "Commented-code block (16 lines) in server/services/BuffNotifier.js: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-996522159c9ec48b", "name": "Commented-code block (6 lines) in server/services/VisionBotService.js:99", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/VisionBotService.js:99"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-499c482a3ad8f0d1", "name": "Commented-code block (12 lines) in server/services/TranscriptionDrivenBotService.js:201", "shortDescription": {"text": "Commented-code block (12 lines) in server/services/TranscriptionDrivenBotService.js:201"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ef771451de347a5d", "name": "Commented-code block (6 lines) in server/services/DrawingService.js:5", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/DrawingService.js: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-2de0e49a057d3624", "name": "Commented-code block (5 lines) in server/services/ChatNotifier.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/ChatNotifier.js: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-0e84bc83b78317ca", "name": "Commented-code block (11 lines) in server/services/ShopService.js:175", "shortDescription": {"text": "Commented-code block (11 lines) in server/services/ShopService.js:175"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-74f415b25f118906", "name": "Commented-code block (5 lines) in server/services/ModerationNotifier.js:10", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/ModerationNotifier.js:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-33b637d69ddb9906", "name": "Commented-code block (20 lines) in server/services/ModerationService.js:8", "shortDescription": {"text": "Commented-code block (20 lines) in server/services/ModerationService.js: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-c9c1a8f7ac19b23e", "name": "Commented-code block (10 lines) in server/services/RecordingCleanupScheduler.js:16", "shortDescription": {"text": "Commented-code block (10 lines) in server/services/RecordingCleanupScheduler.js:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-96ddfc74a628882a", "name": "Commented-code block (5 lines) in server/services/ClipService.js:24", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/ClipService.js:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-804884c2f767dc61", "name": "Commented-code block (7 lines) in server/services/LifecycleManager.js:119", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/LifecycleManager.js: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-877408dd99af058f", "name": "Commented-code block (5 lines) in server/services/ViewerCountNotifier.js:7", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/ViewerCountNotifier.js: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-b3507396f3d6966d", "name": "Legacy-named symbol `daysOld` in server/services/URLStreamDatabaseService.js:425", "shortDescription": {"text": "Legacy-named symbol `daysOld` in server/services/URLStreamDatabaseService.js:425"}, "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-a9c1546f6711c862", "name": "Commented-code block (7 lines) in server/services/ThrowingService.js:6", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/ThrowingService.js: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-16de8a7b54c30de6", "name": "Commented-code block (10 lines) in server/services/ModerationStage1.js:15", "shortDescription": {"text": "Commented-code block (10 lines) in server/services/ModerationStage1.js:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3515723ac1ce9087", "name": "Commented-code block (5 lines) in server/services/TwitchRandomService.js:275", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/TwitchRandomService.js:275"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-169b1faca1018c3e", "name": "Commented-code block (5 lines) in server/services/InventoryService.js:6", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/InventoryService.js: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-b50a477460b4ba4d", "name": "Commented-code block (5 lines) in server/services/ItemService.js:21", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/ItemService.js: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-f0f2180822b545b2", "name": "Commented-code block (5 lines) in server/services/ViewBotLiveKitService.js:347", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/ViewBotLiveKitService.js:347"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cb29262766815e45", "name": "Commented-code block (6 lines) in server/services/AccountService.js:15", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/AccountService.js:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d6d426d181b82ba2", "name": "Commented-code block (7 lines) in server/services/ModerationActionArbiter.js:8", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/ModerationActionArbiter.js: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-d4c21ca8f6ef8af6", "name": "Commented-code block (5 lines) in server/services/recording/RecordingDiskScanner.js:112", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/recording/RecordingDiskScanner.js:112"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f152aa39d5ec7ed2", "name": "Commented-code block (6 lines) in server/services/buffdebuff/AnonymousBuffStore.js:25", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/buffdebuff/AnonymousBuffStore.js:25"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6291e29a44464d72", "name": "Commented-code block (8 lines) in server/services/canvasfx/EffectRegistry.js:20", "shortDescription": {"text": "Commented-code block (8 lines) in server/services/canvasfx/EffectRegistry.js: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-4756fe73b95d86d1", "name": "Commented-code block (6 lines) in server/services/itemUse/BuffDebuffHandler.js:104", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/itemUse/BuffDebuffHandler.js: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-3919d0eee9fc5987", "name": "Commented-code block (5 lines) in server/services/streambot/AutoSummonManager.js:112", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/streambot/AutoSummonManager.js:112"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3cdae8e722845e3a", "name": "Commented-code block (7 lines) in server/services/viewbot/ffmpegArgs.js:99", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/viewbot/ffmpegArgs.js:99"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7dcbe45990705722", "name": "Commented-code block (10 lines) in server/services/chatbot/BotBulkAdmin.js:1", "shortDescription": {"text": "Commented-code block (10 lines) in server/services/chatbot/BotBulkAdmin.js: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-733df19a62b14c91", "name": "Commented-code block (5 lines) in server/services/chatbot/movieBotRoster.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/chatbot/movieBotRoster.js: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-fe55006bb28fb9c7", "name": "Commented-code block (5 lines) in server/services/chatbot/TemporaryBotManager.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/chatbot/TemporaryBotManager.js: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-cde5300f17c42033", "name": "Commented-code block (8 lines) in server/services/chatbot/BotMessageDispatch.js:1", "shortDescription": {"text": "Commented-code block (8 lines) in server/services/chatbot/BotMessageDispatch.js: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-0187814a342b8cee", "name": "Commented-code block (5 lines) in server/services/chatbot/llm/groqClient.js:268", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/chatbot/llm/groqClient.js:268"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-33b55b007bfb7ef4", "name": "Commented-code block (5 lines) in server/services/moderation/SchemaSeed.js:66", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/moderation/SchemaSeed.js: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-ab1e6284c4b9cc5b", "name": "Commented-code block (5 lines) in server/services/moderation/ImageModerationConfig.js:10", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/moderation/ImageModerationConfig.js:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-940336886e6447b3", "name": "Commented-code block (5 lines) in server/services/random-stream/RotationScheduler.js:69", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/random-stream/RotationScheduler.js: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-346e540b8f96786a", "name": "Commented-code block (9 lines) in server/services/transcription/WhisperRunner.js:39", "shortDescription": {"text": "Commented-code block (9 lines) in server/services/transcription/WhisperRunner.js:39"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8a2a3203d6e76fde", "name": "Legacy-named symbol `daysOld` in server/services/transcription/TranscriptionRepository.js:196", "shortDescription": {"text": "Legacy-named symbol `daysOld` in server/services/transcription/TranscriptionRepository.js:196"}, "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-2c1a46169ffdcc7b", "name": "Commented-code block (6 lines) in server/services/item/resolveCurrentStreamerUserId.js:68", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/item/resolveCurrentStreamerUserId.js: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-d53ff9975cece342", "name": "Commented-code block (5 lines) in server/services/account/PointsManager.js:69", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/account/PointsManager.js: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-f1b5ad2f99bfaf94", "name": "Commented-code block (5 lines) in server/services/account/AccountLifecycleManager.js:74", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/account/AccountLifecycleManager.js: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-44aff6dc54f3583e", "name": "Commented-code block (6 lines) in server/services/llm/modelCatalog.js:198", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/llm/modelCatalog.js:198"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ef22fd58bfde6f76", "name": "51 env vars used in code but missing from .env.example", "shortDescription": {"text": "51 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `AI_MODERATION_ENFORCE`, `AI_MODERATION_FAIL_CLOSED`, `AI_MODERATION_REQUIRE_SERVICE`, `AI_MODERATION_RETENTION_CLEAN_DAYS`, `AI_MODERATION_RETENTION_FLAGGED_DAYS`, `ANNOUNCED_IP`, `B2_APPLICATION_KEY`, `B2_APPLICATION_KEY_ID` + 43 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-23097e513466fe0b", "name": "Frontend route `${Q}` has no Link/navigate to it \u2014 blog/assets/index-DUiMp6_W.js", "shortDescription": {"text": "Frontend route `${Q}` has no Link/navigate to it \u2014 blog/assets/index-DUiMp6_W.js"}, "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-741bb6a930f7c30c", "name": "Frontend route `${Q===` has no Link/navigate to it \u2014 blog/assets/index-DUiMp6_W.js", "shortDescription": {"text": "Frontend route `${Q===` has no Link/navigate to it \u2014 blog/assets/index-DUiMp6_W.js"}, "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-9b2b680a8011a9b0", "name": "Dangling fetch: POST /api/bug-reports (client/src/components/BugReportModal.tsx:58)", "shortDescription": {"text": "Dangling fetch: POST /api/bug-reports (client/src/components/BugReportModal.tsx:58)"}, "fullDescription": {"text": "`client/src/components/BugReportModal.tsx:58` calls `POST /api/bug-reports` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/bug-reports`\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-f2a5f0e9d3ed3faf", "name": "Dangling fetch: GET /admin/viewbot/rotation/status (client/src/components/BotsPanel.tsx:107)", "shortDescription": {"text": "Dangling fetch: GET /admin/viewbot/rotation/status (client/src/components/BotsPanel.tsx:107)"}, "fullDescription": {"text": "`client/src/components/BotsPanel.tsx:107` calls `GET /admin/viewbot/rotation/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/viewbot/rotation/status`\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-8696f4c5d117ce7c", "name": "Dangling fetch: GET /api/chatbots (client/src/components/BotsPanel.tsx:129)", "shortDescription": {"text": "Dangling fetch: GET /api/chatbots (client/src/components/BotsPanel.tsx:129)"}, "fullDescription": {"text": "`client/src/components/BotsPanel.tsx:129` calls `GET /api/chatbots` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/chatbots`\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-7b88a293bd98ceef", "name": "Dangling fetch: POST /admin/viewbot/rotation/force (client/src/components/BotsPanel.tsx:213)", "shortDescription": {"text": "Dangling fetch: POST /admin/viewbot/rotation/force (client/src/components/BotsPanel.tsx:213)"}, "fullDescription": {"text": "`client/src/components/BotsPanel.tsx:213` calls `POST /admin/viewbot/rotation/force` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/viewbot/rotation/force`\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-d5321d796bd28b75", "name": "Dangling fetch: GET /api/streambot/settings (client/src/components/StreamBotManager.tsx:42)", "shortDescription": {"text": "Dangling fetch: GET /api/streambot/settings (client/src/components/StreamBotManager.tsx:42)"}, "fullDescription": {"text": "`client/src/components/StreamBotManager.tsx:42` calls `GET /api/streambot/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/streambot/settings`\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-49fde1968cc41c4d", "name": "Dangling fetch: GET /api/streambot/messages (client/src/components/StreamBotManager.tsx:55)", "shortDescription": {"text": "Dangling fetch: GET /api/streambot/messages (client/src/components/StreamBotManager.tsx:55)"}, "fullDescription": {"text": "`client/src/components/StreamBotManager.tsx:55` calls `GET /api/streambot/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/streambot/messages`\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-89124392d68535d8", "name": "Dangling fetch: POST /api/streambot/toggle (client/src/components/StreamBotManager.tsx:76)", "shortDescription": {"text": "Dangling fetch: POST /api/streambot/toggle (client/src/components/StreamBotManager.tsx:76)"}, "fullDescription": {"text": "`client/src/components/StreamBotManager.tsx:76` calls `POST /api/streambot/toggle` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/streambot/toggle`\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-f965527499d598c8", "name": "Dangling fetch: PUT /api/streambot/settings (client/src/components/StreamBotManager.tsx:100)", "shortDescription": {"text": "Dangling fetch: PUT /api/streambot/settings (client/src/components/StreamBotManager.tsx:100)"}, "fullDescription": {"text": "`client/src/components/StreamBotManager.tsx:100` calls `PUT /api/streambot/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/streambot/settings`\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-a4d3428a16316cde", "name": "Dangling fetch: POST /api/streambot/messages (client/src/components/StreamBotManager.tsx:126)", "shortDescription": {"text": "Dangling fetch: POST /api/streambot/messages (client/src/components/StreamBotManager.tsx:126)"}, "fullDescription": {"text": "`client/src/components/StreamBotManager.tsx:126` calls `POST /api/streambot/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/streambot/messages`\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-b39094202a5e08af", "name": "Dangling fetch: PUT /api/streambot/messages/${editingMessage.id} (client/src/components/StreamBotManager.tsx:153)", "shortDescription": {"text": "Dangling fetch: PUT /api/streambot/messages/${editingMessage.id} (client/src/components/StreamBotManager.tsx:153)"}, "fullDescription": {"text": "`client/src/components/StreamBotManager.tsx:153` calls `PUT /api/streambot/messages/${editingMessage.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/streambot/messages/<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-fda19253f10b3aa2", "name": "Dangling fetch: DELETE /api/streambot/messages/${id} (client/src/components/StreamBotManager.tsx:181)", "shortDescription": {"text": "Dangling fetch: DELETE /api/streambot/messages/${id} (client/src/components/StreamBotManager.tsx:181)"}, "fullDescription": {"text": "`client/src/components/StreamBotManager.tsx:181` calls `DELETE /api/streambot/messages/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/streambot/messages/<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-23fbcb30c762fe85", "name": "Dangling fetch: POST /api/streambot/messages/${id}/toggle (client/src/components/StreamBotManager.tsx:202)", "shortDescription": {"text": "Dangling fetch: POST /api/streambot/messages/${id}/toggle (client/src/components/StreamBotManager.tsx:202)"}, "fullDescription": {"text": "`client/src/components/StreamBotManager.tsx:202` calls `POST /api/streambot/messages/${id}/toggle` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/streambot/messages/<p>/toggle`\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-e02b6c8eeceec287", "name": "Dangling fetch: POST /api/streambot/messages/reorder (client/src/components/StreamBotManager.tsx:236)", "shortDescription": {"text": "Dangling fetch: POST /api/streambot/messages/reorder (client/src/components/StreamBotManager.tsx:236)"}, "fullDescription": {"text": "`client/src/components/StreamBotManager.tsx:236` calls `POST /api/streambot/messages/reorder` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/streambot/messages/reorder`\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-2af4a87b38fed4e5", "name": "Dangling fetch: POST /api/streambot/test (client/src/components/StreamBotManager.tsx:258)", "shortDescription": {"text": "Dangling fetch: POST /api/streambot/test (client/src/components/StreamBotManager.tsx:258)"}, "fullDescription": {"text": "`client/src/components/StreamBotManager.tsx:258` calls `POST /api/streambot/test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/streambot/test`\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-637f0d24bba9ed5c", "name": "Dangling fetch: POST /api/soundfx/item/tts (client/src/components/inventory/inventoryPanel/useInventory.ts:322)", "shortDescription": {"text": "Dangling fetch: POST /api/soundfx/item/tts (client/src/components/inventory/inventoryPanel/useInventory.ts:322)"}, "fullDescription": {"text": "`client/src/components/inventory/inventoryPanel/useInventory.ts:322` calls `POST /api/soundfx/item/tts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/soundfx/item/tts`\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-e79b4d20ebb02580", "name": "Dangling fetch: POST /api/soundfx/item/soundboard (client/src/components/inventory/inventoryPanel/useInventory.ts:428)", "shortDescription": {"text": "Dangling fetch: POST /api/soundfx/item/soundboard (client/src/components/inventory/inventoryPanel/useInventory.ts:428)"}, "fullDescription": {"text": "`client/src/components/inventory/inventoryPanel/useInventory.ts:428` calls `POST /api/soundfx/item/soundboard` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/soundfx/item/soundboard`\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-4f47d8a94b92e06f", "name": "Dangling fetch: GET /auth/check-username/${encodeURIComponent(username)} (client/src/components/auth/OAuthUsernameSelect", "shortDescription": {"text": "Dangling fetch: GET /auth/check-username/${encodeURIComponent(username)} (client/src/components/auth/OAuthUsernameSelection.tsx:79)"}, "fullDescription": {"text": "`client/src/components/auth/OAuthUsernameSelection.tsx:79` calls `GET /auth/check-username/${encodeURIComponent(username)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/check-username/<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-45394cd9dab44085", "name": "Dangling fetch: POST /auth/complete-oauth-registration (client/src/components/auth/OAuthUsernameSelection.tsx:120)", "shortDescription": {"text": "Dangling fetch: POST /auth/complete-oauth-registration (client/src/components/auth/OAuthUsernameSelection.tsx:120)"}, "fullDescription": {"text": "`client/src/components/auth/OAuthUsernameSelection.tsx:120` calls `POST /auth/complete-oauth-registration` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/complete-oauth-registration`\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-dfc7a00833d52e42", "name": "Dangling fetch: GET /api/clips/status (client/src/components/mobile/MobileBottomNav.tsx:89)", "shortDescription": {"text": "Dangling fetch: GET /api/clips/status (client/src/components/mobile/MobileBottomNav.tsx:89)"}, "fullDescription": {"text": "`client/src/components/mobile/MobileBottomNav.tsx:89` calls `GET /api/clips/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/clips/status`\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-32f33095a4d88f60", "name": "Dangling fetch: GET /api/clips/status (client/src/components/mobile/MobileLandscapeLayout.tsx:308)", "shortDescription": {"text": "Dangling fetch: GET /api/clips/status (client/src/components/mobile/MobileLandscapeLayout.tsx:308)"}, "fullDescription": {"text": "`client/src/components/mobile/MobileLandscapeLayout.tsx:308` calls `GET /api/clips/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/clips/status`\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-47a613be23443242", "name": "Dangling fetch: GET /api/clips/status (client/src/components/stream/TheatreControls.tsx:100)", "shortDescription": {"text": "Dangling fetch: GET /api/clips/status (client/src/components/stream/TheatreControls.tsx:100)"}, "fullDescription": {"text": "`client/src/components/stream/TheatreControls.tsx:100` calls `GET /api/clips/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/clips/status`\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-8966e9312e8a967c", "name": "Dangling fetch: GET /api/soundfx/voices (client/src/components/soundfx/TTSInputModal.tsx:50)", "shortDescription": {"text": "Dangling fetch: GET /api/soundfx/voices (client/src/components/soundfx/TTSInputModal.tsx:50)"}, "fullDescription": {"text": "`client/src/components/soundfx/TTSInputModal.tsx:50` calls `GET /api/soundfx/voices` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/soundfx/voices`\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-a78a7a17efc0c08e", "name": "Dangling fetch: POST /api/moderation/ban-chat (client/src/components/user/UserInfoPopup.tsx:140)", "shortDescription": {"text": "Dangling fetch: POST /api/moderation/ban-chat (client/src/components/user/UserInfoPopup.tsx:140)"}, "fullDescription": {"text": "`client/src/components/user/UserInfoPopup.tsx:140` calls `POST /api/moderation/ban-chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/moderation/ban-chat`\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-4ff886521fae827f", "name": "Dangling fetch: POST /api/moderation/timeout (client/src/components/user/UserInfoPopup.tsx:173)", "shortDescription": {"text": "Dangling fetch: POST /api/moderation/timeout (client/src/components/user/UserInfoPopup.tsx:173)"}, "fullDescription": {"text": "`client/src/components/user/UserInfoPopup.tsx:173` calls `POST /api/moderation/timeout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/moderation/timeout`\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-0626405a246fd7b1", "name": "Dangling fetch: POST /api/moderation/ban-streamer (client/src/components/user/UserInfoPopup.tsx:206)", "shortDescription": {"text": "Dangling fetch: POST /api/moderation/ban-streamer (client/src/components/user/UserInfoPopup.tsx:206)"}, "fullDescription": {"text": "`client/src/components/user/UserInfoPopup.tsx:206` calls `POST /api/moderation/ban-streamer` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/moderation/ban-streamer`\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-17158bc838a804f5", "name": "Dangling fetch: POST /api/clips/live (client/src/components/clips/ClipCreationModal.tsx:102)", "shortDescription": {"text": "Dangling fetch: POST /api/clips/live (client/src/components/clips/ClipCreationModal.tsx:102)"}, "fullDescription": {"text": "`client/src/components/clips/ClipCreationModal.tsx:102` calls `POST /api/clips/live` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/clips/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-5f73ac869fd5069d", "name": "Dangling fetch: GET /api/clips?${params.toString()} (client/src/components/clips/ClipsGallery.tsx:69)", "shortDescription": {"text": "Dangling fetch: GET /api/clips?${params.toString()} (client/src/components/clips/ClipsGallery.tsx:69)"}, "fullDescription": {"text": "`client/src/components/clips/ClipsGallery.tsx:69` calls `GET /api/clips?${params.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/clips`\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-5e66d25837f5ebfc", "name": "Dangling fetch: GET /api/clips/${clipId}/chat (client/src/components/clips/ClipChatReplay.tsx:38)", "shortDescription": {"text": "Dangling fetch: GET /api/clips/${clipId}/chat (client/src/components/clips/ClipChatReplay.tsx:38)"}, "fullDescription": {"text": "`client/src/components/clips/ClipChatReplay.tsx:38` calls `GET /api/clips/${clipId}/chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/clips/<p>/chat`\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-a0049a8735f9932e", "name": "Dangling fetch: GET /api/buffs/streamer/current (client/src/components/buffs/BuffDisplay.tsx:227)", "shortDescription": {"text": "Dangling fetch: GET /api/buffs/streamer/current (client/src/components/buffs/BuffDisplay.tsx:227)"}, "fullDescription": {"text": "`client/src/components/buffs/BuffDisplay.tsx:227` calls `GET /api/buffs/streamer/current` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/buffs/streamer/current`\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-dde3adb27bf7eebe", "name": "Unused endpoint: USE /api", "shortDescription": {"text": "Unused endpoint: USE /api"}, "fullDescription": {"text": "`client/src/setupProxy.js` declares `USE /api` 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-b28d92215a503990", "name": "Unused endpoint: USE /auth", "shortDescription": {"text": "Unused endpoint: USE /auth"}, "fullDescription": {"text": "`client/src/setupProxy.js` declares `USE /auth` 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": "`client/src/setupProxy.js` 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-00759fdf0a2ee599", "name": "Unused endpoint: USE /socket.io", "shortDescription": {"text": "Unused endpoint: USE /socket.io"}, "fullDescription": {"text": "`client/src/setupProxy.js` declares `USE /socket.io` 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-3bf7c93f75b9b89c", "name": "Unused endpoint: USE /chat/socket.io", "shortDescription": {"text": "Unused endpoint: USE /chat/socket.io"}, "fullDescription": {"text": "`client/src/setupProxy.js` declares `USE /chat/socket.io` 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": "`client/src/setupProxy.js` 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-00044d6aa273d8c8", "name": "Unused endpoint: USE /debug", "shortDescription": {"text": "Unused endpoint: USE /debug"}, "fullDescription": {"text": "`client/src/setupProxy.js` declares `USE /debug` 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-9c34d159abc02e89", "name": "Unused endpoint: GET /api/moderation", "shortDescription": {"text": "Unused endpoint: GET /api/moderation"}, "fullDescription": {"text": "`chat-service/api/routes.js` declares `GET /api/moderation` 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-a79c7fee9a26408c", "name": "Unused endpoint: POST /api/ban", "shortDescription": {"text": "Unused endpoint: POST /api/ban"}, "fullDescription": {"text": "`chat-service/api/routes.js` declares `POST /api/ban` 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-7d041e75488e7c5b", "name": "Unused endpoint: POST /api/unban", "shortDescription": {"text": "Unused endpoint: POST /api/unban"}, "fullDescription": {"text": "`chat-service/api/routes.js` declares `POST /api/unban` 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-877e7d7753e6ed80", "name": "Unused endpoint: POST /api/timeout", "shortDescription": {"text": "Unused endpoint: POST /api/timeout"}, "fullDescription": {"text": "`chat-service/api/routes.js` declares `POST /api/timeout` 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-e30688585a0b851e", "name": "Unused endpoint: POST /api/remove-timeout", "shortDescription": {"text": "Unused endpoint: POST /api/remove-timeout"}, "fullDescription": {"text": "`chat-service/api/routes.js` declares `POST /api/remove-timeout` 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-7cb1466f4e01b57f", "name": "Unused endpoint: POST /api/system-message", "shortDescription": {"text": "Unused endpoint: POST /api/system-message"}, "fullDescription": {"text": "`chat-service/api/routes.js` declares `POST /api/system-message` 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-8c9aa75deb76a84e", "name": "Unused endpoint: GET /api/chat-history", "shortDescription": {"text": "Unused endpoint: GET /api/chat-history"}, "fullDescription": {"text": "`chat-service/api/routes.js` declares `GET /api/chat-history` 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-a748b4485be1a89b", "name": "Unused endpoint: USE /uploads/emojis", "shortDescription": {"text": "Unused endpoint: USE /uploads/emojis"}, "fullDescription": {"text": "`server/index.js` declares `USE /uploads/emojis` 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-63125ac6132d7f02", "name": "Unused endpoint: USE /uploads/avatars", "shortDescription": {"text": "Unused endpoint: USE /uploads/avatars"}, "fullDescription": {"text": "`server/index.js` declares `USE /uploads/avatars` 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-d45e60b3c8eba3ca", "name": "Unused endpoint: USE /api/moderation", "shortDescription": {"text": "Unused endpoint: USE /api/moderation"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/moderation` 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.js` 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-3a758a34a9e4c4ed", "name": "Unused endpoint: USE /api/buffs", "shortDescription": {"text": "Unused endpoint: USE /api/buffs"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/buffs` 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-e7ced40f2fddf085", "name": "Unused endpoint: USE /api/soundfx", "shortDescription": {"text": "Unused endpoint: USE /api/soundfx"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/soundfx` 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-45a889dcdd6353ca", "name": "Unused endpoint: USE /api/chatbots", "shortDescription": {"text": "Unused endpoint: USE /api/chatbots"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/chatbots` 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-14deaf61d4fcd875", "name": "Unused endpoint: USE /api/streambot", "shortDescription": {"text": "Unused endpoint: USE /api/streambot"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/streambot` 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-da8f27b85e507798", "name": "Unused endpoint: USE /api/bug-reports", "shortDescription": {"text": "Unused endpoint: USE /api/bug-reports"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/bug-reports` 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-db8143d01d97586d", "name": "Unused endpoint: USE /api/clips", "shortDescription": {"text": "Unused endpoint: USE /api/clips"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/clips` 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-0c7954712b8f3325", "name": "Unused endpoint: USE /api/turn", "shortDescription": {"text": "Unused endpoint: USE /api/turn"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/turn` 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-710931c0d5ba085c", "name": "Unused endpoint: USE /admin/review", "shortDescription": {"text": "Unused endpoint: USE /admin/review"}, "fullDescription": {"text": "`server/index.js` declares `USE /admin/review` 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-a075e4ff619079cc", "name": "Unused endpoint: USE /api/tutorial", "shortDescription": {"text": "Unused endpoint: USE /api/tutorial"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/tutorial` 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-49606d79a5efc1a7", "name": "Unused endpoint: USE /api/audio", "shortDescription": {"text": "Unused endpoint: USE /api/audio"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/audio` 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-bc11fac4f0bd0b4c", "name": "Unused endpoint: USE /hls", "shortDescription": {"text": "Unused endpoint: USE /hls"}, "fullDescription": {"text": "`server/index.js` declares `USE /hls` 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-e1c89316f317f0ad", "name": "Unused endpoint: USE /api/internal", "shortDescription": {"text": "Unused endpoint: USE /api/internal"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/internal` 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-c4d3db0b8a8488a2", "name": "Unused endpoint: USE /api/whitelist", "shortDescription": {"text": "Unused endpoint: USE /api/whitelist"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/whitelist` 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-35fbeb33ec200f3f", "name": "Unused endpoint: USE /api/moderation-ai", "shortDescription": {"text": "Unused endpoint: USE /api/moderation-ai"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/moderation-ai` 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-d94463c03aa3b224", "name": "Unused endpoint: USE /api/url-stream", "shortDescription": {"text": "Unused endpoint: USE /api/url-stream"}, "fullDescription": {"text": "`server/bootstrap/start-streaming-backend.js` declares `USE /api/url-stream` 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-31584cd4c407eba0", "name": "Unused endpoint: USE /api/random-stream", "shortDescription": {"text": "Unused endpoint: USE /api/random-stream"}, "fullDescription": {"text": "`server/bootstrap/start-streaming-backend.js` declares `USE /api/random-stream` 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-282815655098e2c5", "name": "Unused endpoint: GET /api/admin/moderation", "shortDescription": {"text": "Unused endpoint: GET /api/admin/moderation"}, "fullDescription": {"text": "`server/routes/admin-moderation.js` declares `GET /api/admin/moderation` 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-bbeaab1f52a9ba81", "name": "Unused endpoint: POST /api/admin/ban", "shortDescription": {"text": "Unused endpoint: POST /api/admin/ban"}, "fullDescription": {"text": "`server/routes/admin-moderation.js` declares `POST /api/admin/ban` 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-1be12d8576695829", "name": "Unused endpoint: POST /api/admin/unban", "shortDescription": {"text": "Unused endpoint: POST /api/admin/unban"}, "fullDescription": {"text": "`server/routes/admin-moderation.js` declares `POST /api/admin/unban` 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-32ffcdf1f37776ad", "name": "Unused endpoint: POST /api/admin/timeout", "shortDescription": {"text": "Unused endpoint: POST /api/admin/timeout"}, "fullDescription": {"text": "`server/routes/admin-moderation.js` declares `POST /api/admin/timeout` 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-972834e3b14280a9", "name": "Unused endpoint: POST /api/admin/remove-timeout", "shortDescription": {"text": "Unused endpoint: POST /api/admin/remove-timeout"}, "fullDescription": {"text": "`server/routes/admin-moderation.js` declares `POST /api/admin/remove-timeout` 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-6658608cc02501ce", "name": "Unused endpoint: POST /ban-chat", "shortDescription": {"text": "Unused endpoint: POST /ban-chat"}, "fullDescription": {"text": "`server/routes/moderation.js` declares `POST /ban-chat` 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-54d4487c36ff385d", "name": "Unused endpoint: POST /timeout", "shortDescription": {"text": "Unused endpoint: POST /timeout"}, "fullDescription": {"text": "`server/routes/moderation.js` declares `POST /timeout` 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-bcc0718f155dfdf2", "name": "Unused endpoint: POST /ban-streamer", "shortDescription": {"text": "Unused endpoint: POST /ban-streamer"}, "fullDescription": {"text": "`server/routes/moderation.js` declares `POST /ban-streamer` 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-841e50bf821e4158", "name": "Unused endpoint: GET /users", "shortDescription": {"text": "Unused endpoint: GET /users"}, "fullDescription": {"text": "`server/routes/admin.js` declares `GET /users` 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-04d4379f59ac8482", "name": "Unused endpoint: POST /users/:userId/promote-admin", "shortDescription": {"text": "Unused endpoint: POST /users/:userId/promote-admin"}, "fullDescription": {"text": "`server/routes/admin.js` declares `POST /users/:userId/promote-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-df875d56f7deb124", "name": "Unused endpoint: POST /users/:userId/demote-admin", "shortDescription": {"text": "Unused endpoint: POST /users/:userId/demote-admin"}, "fullDescription": {"text": "`server/routes/admin.js` declares `POST /users/:userId/demote-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-85f9b0c8005096ac", "name": "Unused endpoint: POST /users/:userId/promote-moderator", "shortDescription": {"text": "Unused endpoint: POST /users/:userId/promote-moderator"}, "fullDescription": {"text": "`server/routes/admin.js` declares `POST /users/:userId/promote-moderator` 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-76ed299b0b8f6c3b", "name": "Unused endpoint: POST /users/:userId/demote-moderator", "shortDescription": {"text": "Unused endpoint: POST /users/:userId/demote-moderator"}, "fullDescription": {"text": "`server/routes/admin.js` declares `POST /users/:userId/demote-moderator` 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-77a1c70ee6b7972d", "name": "Unused endpoint: POST /users/:userId/ban", "shortDescription": {"text": "Unused endpoint: POST /users/:userId/ban"}, "fullDescription": {"text": "`server/routes/admin.js` declares `POST /users/:userId/ban` 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-e3ff4d3e4431286d", "name": "Unused endpoint: POST /users/:userId/unban", "shortDescription": {"text": "Unused endpoint: POST /users/:userId/unban"}, "fullDescription": {"text": "`server/routes/admin.js` declares `POST /users/:userId/unban` 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-af92b6f36ace6872", "name": "Unused endpoint: DELETE /users/:userId", "shortDescription": {"text": "Unused endpoint: DELETE /users/:userId"}, "fullDescription": {"text": "`server/routes/admin.js` declares `DELETE /users/:userId` 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/17949"}, "properties": {"repository": "RealRogerWinter/onestreamer", "repoUrl": "https://github.com/RealRogerWinter/onestreamer", "branch": "main"}, "results": [{"ruleId": "scanner-2eaf9c77b57c7bdb", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 blog/assets/index-CW_Lsnfj.js:9"}, "properties": {"repobilityId": "10e47e0087708d24", "scanner": "scanner-primary", "fingerprint": "2eaf9c77b57c7bdb", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-8f929c834789e781", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 blog/assets/index-DUiMp6_W.js:9"}, "properties": {"repobilityId": "fc1daea03a13551d", "scanner": "scanner-primary", "fingerprint": "8f929c834789e781", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-6f00f37928dd4747", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/serve.js:27"}, "properties": {"repobilityId": "4f8b771aac5f9492", "scanner": "scanner-primary", "fingerprint": "6f00f37928dd4747", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-93fc7de3647a8c3b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/serve-build.js:25"}, "properties": {"repobilityId": "bc34d53c2bc094a9", "scanner": "scanner-primary", "fingerprint": "93fc7de3647a8c3b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d9b9438eee45338b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/serve-production.js:10"}, "properties": {"repobilityId": "67d091718d808b54", "scanner": "scanner-primary", "fingerprint": "d9b9438eee45338b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b6aee8619cec65e6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/App.tsx:109"}, "properties": {"repobilityId": "809a80dda660691b", "scanner": "scanner-primary", "fingerprint": "b6aee8619cec65e6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f36ecb4fd6b1eeea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/utils/debugLogger.ts:78"}, "properties": {"repobilityId": "5d69b0d244e99e5b", "scanner": "scanner-primary", "fingerprint": "f36ecb4fd6b1eeea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7bc98feac4998a9f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/CloudflareTurnstile.tsx:63"}, "properties": {"repobilityId": "098a4670b5c3b4e3", "scanner": "scanner-primary", "fingerprint": "7bc98feac4998a9f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5839769c4ab154b1", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 client/src/components/EmojiPicker.tsx:131"}, "properties": {"repobilityId": "3c5983d546ccbb7f", "scanner": "scanner-primary", "fingerprint": "5839769c4ab154b1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-21ab32995d76f734", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 client/src/components/PermissionSetupModal.tsx:124"}, "properties": {"repobilityId": "8a0f2a3a872384ce", "scanner": "scanner-primary", "fingerprint": "21ab32995d76f734", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-2a686af3822fbf4e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/Chat.tsx:342"}, "properties": {"repobilityId": "ab45184857dd6735", "scanner": "scanner-primary", "fingerprint": "2a686af3822fbf4e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-299dc547e80b9c43", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 client/src/components/BugReportModal.tsx:99"}, "properties": {"repobilityId": "0522359b5494a9f7", "scanner": "scanner-primary", "fingerprint": "299dc547e80b9c43", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-b5cde4c1d829fa44", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 client/src/components/ChatSettings.tsx:113"}, "properties": {"repobilityId": "fb4b8324cbbc8bd0", "scanner": "scanner-primary", "fingerprint": "b5cde4c1d829fa44", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-5645de4773ef82f9", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 client/src/components/Tutorial.tsx:25"}, "properties": {"repobilityId": "65e53fbf8e3860c9", "scanner": "scanner-primary", "fingerprint": "5645de4773ef82f9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-e631b7ea6275a81a", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 client/src/components/inventory/ShopQuantitySelector.tsx:58"}, "properties": {"repobilityId": "5a8291689732ca26", "scanner": "scanner-primary", "fingerprint": "e631b7ea6275a81a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-5513cc86e63e8988", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 client/src/components/inventory/InventoryPanel.tsx:117"}, "properties": {"repobilityId": "7748b618413f5d46", "scanner": "scanner-primary", "fingerprint": "5513cc86e63e8988", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-19e776845dea1686", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/inventory/inventoryPanel/useInventory.ts:51"}, "properties": {"repobilityId": "2b91dbac21a9fc93", "scanner": "scanner-primary", "fingerprint": "19e776845dea1686", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-30804a5039d74c1c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/auth/EmailVerification.tsx:21"}, "properties": {"repobilityId": "b192a25ad0a54197", "scanner": "scanner-primary", "fingerprint": "30804a5039d74c1c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b9d7aa15b1892899", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/components/chat/MessageList.tsx:234"}, "properties": {"repobilityId": "ad9643182fe400a8", "scanner": "scanner-primary", "fingerprint": "b9d7aa15b1892899", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-c75588fb0182ca7b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/chat/useChatBonus.ts:48"}, "properties": {"repobilityId": "fb095fde16f4ab7b", "scanner": "scanner-primary", "fingerprint": "c75588fb0182ca7b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5ad2f48d19999101", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/audio/AudioLevelMeter.tsx:52"}, "properties": {"repobilityId": "e8b53a1ff5f8125d", "scanner": "scanner-primary", "fingerprint": "5ad2f48d19999101", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-05f50cfc0ff1d529", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 client/src/components/mobile/MobileHeader.tsx:423"}, "properties": {"repobilityId": "d9504ef486c15ae7", "scanner": "scanner-primary", "fingerprint": "05f50cfc0ff1d529", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-524269a79dbb2303", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/mobile/MobileBottomNav.tsx:216"}, "properties": {"repobilityId": "f37836b1c26513af", "scanner": "scanner-primary", "fingerprint": "524269a79dbb2303", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-20194fdd43c8efef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/mobile/MobileLandscapeLayout.tsx:687"}, "properties": {"repobilityId": "2b0f67703106bcfe", "scanner": "scanner-primary", "fingerprint": "20194fdd43c8efef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aee4f49efd8f1c03", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/stream/WebRTCViewer.tsx:115"}, "properties": {"repobilityId": "616a3a31e38fa7fd", "scanner": "scanner-primary", "fingerprint": "aee4f49efd8f1c03", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-784cea1fb1fb50d2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/stream/WebRTCStreamer.tsx:269"}, "properties": {"repobilityId": "0ccefe37542c8308", "scanner": "scanner-primary", "fingerprint": "784cea1fb1fb50d2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f47874df95be1139", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/stream/ScreenSharePanel.tsx:71"}, "properties": {"repobilityId": "df7820fc535e41e6", "scanner": "scanner-primary", "fingerprint": "f47874df95be1139", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f8faf075d20b3bb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/stream/TheatreControls.tsx:740"}, "properties": {"repobilityId": "bec601ab63a8fbab", "scanner": "scanner-primary", "fingerprint": "0f8faf075d20b3bb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-114ffac3316e6bae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/stream/streamerSettings/useStreamerDevices.ts:177"}, "properties": {"repobilityId": "ea61a609f0f950e7", "scanner": "scanner-primary", "fingerprint": "114ffac3316e6bae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6173db9875d4367d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/stream/streamerSettings/VideoPanel.tsx:75"}, "properties": {"repobilityId": "a57c28749322dd96", "scanner": "scanner-primary", "fingerprint": "6173db9875d4367d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-36693d5e2b55450f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/recording-review/PlaybackTimeline.tsx:93"}, "properties": {"repobilityId": "e6042cfa53b70aee", "scanner": "scanner-primary", "fingerprint": "36693d5e2b55450f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb94e9428148f51e", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 client/src/components/admin/AdminPanelV3.tsx:161"}, "properties": {"repobilityId": "981b847bf91c9a0e", "scanner": "scanner-primary", "fingerprint": "cb94e9428148f51e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-ca6e70e0ce9aa6b5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/admin/adminRecordingReview/useRecordingReviewData.ts:38"}, "properties": {"repobilityId": "12cbe79966e1d806", "scanner": "scanner-primary", "fingerprint": "ca6e70e0ce9aa6b5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d4964329b0a6aba9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/admin/adminRecordingReview/useHlsPlayer.ts:37"}, "properties": {"repobilityId": "19f205b7aacb2da6", "scanner": "scanner-primary", "fingerprint": "d4964329b0a6aba9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d93d8db726709e89", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 client/src/components/admin/transcriptionManagement/TranscriptModal.tsx:22"}, "properties": {"repobilityId": "18ed99356ce13b8b", "scanner": "scanner-primary", "fingerprint": "d93d8db726709e89", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-da1addb4438c73a8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/admin/chatBotManagement/MovieBotSection.tsx:122"}, "properties": {"repobilityId": "a21451f80b4d5e8c", "scanner": "scanner-primary", "fingerprint": "da1addb4438c73a8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-612c565ce898b71f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/admin/chatBotManagement/useChatBotManagement.ts:123"}, "properties": {"repobilityId": "6755089b6ff6211b", "scanner": "scanner-primary", "fingerprint": "612c565ce898b71f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ee0dfe793108811a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/soundfx/SafariTTSNotice.tsx:17"}, "properties": {"repobilityId": "f37b3a6f9a8e4f30", "scanner": "scanner-primary", "fingerprint": "ee0dfe793108811a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1dad18d56b28ec59", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/soundfx/SoundFxPlayer.tsx:73"}, "properties": {"repobilityId": "9171bd94e6f3bad8", "scanner": "scanner-primary", "fingerprint": "1dad18d56b28ec59", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-87cc7d7a999b4dd1", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 client/src/components/soundfx/SummonBotModal.tsx:102"}, "properties": {"repobilityId": "840ace444d38449d", "scanner": "scanner-primary", "fingerprint": "87cc7d7a999b4dd1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-fd09ee061e8aebcc", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 client/src/components/soundfx/SoundboardInputModal.tsx:127"}, "properties": {"repobilityId": "763bd2b17451ee7d", "scanner": "scanner-primary", "fingerprint": "fd09ee061e8aebcc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-4482a50546f35b3d", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 client/src/components/soundfx/TTSInputModal.tsx:118"}, "properties": {"repobilityId": "22f76f89181a891a", "scanner": "scanner-primary", "fingerprint": "4482a50546f35b3d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-6de28d74ded12c72", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/game/GameCanvas.tsx:49"}, "properties": {"repobilityId": "e6fdbe2e2d3e98ed", "scanner": "scanner-primary", "fingerprint": "6de28d74ded12c72", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0d3912c1adc32774", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/game/GameOverlay.tsx:48"}, "properties": {"repobilityId": "aed1aa9d12dacdf3", "scanner": "scanner-primary", "fingerprint": "0d3912c1adc32774", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f392ff37d771d156", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 client/src/components/user/ProfileSettings.tsx:57"}, "properties": {"repobilityId": "97bc39dd34ba3dab", "scanner": "scanner-primary", "fingerprint": "f392ff37d771d156", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-fdf7cbba554e701c", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 client/src/components/user/UserInfoPopup.tsx:301"}, "properties": {"repobilityId": "0502a990fa27ceca", "scanner": "scanner-primary", "fingerprint": "fdf7cbba554e701c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-51c33c3d6aa7cd50", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/user/UserProfile.tsx:58"}, "properties": {"repobilityId": "2b54a612bedd2aec", "scanner": "scanner-primary", "fingerprint": "51c33c3d6aa7cd50", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-623be545c19c18e7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/clips/ClipPlayer.tsx:197"}, "properties": {"repobilityId": "66735e7e155ad9b7", "scanner": "scanner-primary", "fingerprint": "623be545c19c18e7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e72daac94eaeb771", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/components/buffs/FloatingPoints.tsx:47"}, "properties": {"repobilityId": "3873708323e213cf", "scanner": "scanner-primary", "fingerprint": "e72daac94eaeb771", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1a4b416f215e8241", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/contexts/SocketContext.tsx:60"}, "properties": {"repobilityId": "455fdb92874286e2", "scanner": "scanner-primary", "fingerprint": "1a4b416f215e8241", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8fce7e6d2dc87482", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/hooks/useAuthState.ts:100"}, "properties": {"repobilityId": "1b3fb302d80abfdd", "scanner": "scanner-primary", "fingerprint": "8fce7e6d2dc87482", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8c74c7df3602246d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/hooks/useStreamerViewManager.ts:27"}, "properties": {"repobilityId": "0dde5691f533ba50", "scanner": "scanner-primary", "fingerprint": "8c74c7df3602246d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e60571f0467c62a5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/hooks/useChatSocket.ts:90"}, "properties": {"repobilityId": "02d7e034d6ba9e22", "scanner": "scanner-primary", "fingerprint": "e60571f0467c62a5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ee4c18cea8ab0d9b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/hooks/streamState/useTakeoverState.ts:75"}, "properties": {"repobilityId": "49912c8687e33919", "scanner": "scanner-primary", "fingerprint": "ee4c18cea8ab0d9b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f0284bb461d21e1b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/hooks/streamState/useStreamSocketListeners.ts:79"}, "properties": {"repobilityId": "880912b68f2f35a5", "scanner": "scanner-primary", "fingerprint": "f0284bb461d21e1b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1b6de211bb4f338c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/PerformanceMonitor.ts:113"}, "properties": {"repobilityId": "95fdf02d5b787f8f", "scanner": "scanner-primary", "fingerprint": "1b6de211bb4f338c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6598755a0dddb90f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/CookieConsentService.ts:218"}, "properties": {"repobilityId": "487528bf38b1e157", "scanner": "scanner-primary", "fingerprint": "6598755a0dddb90f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5994f5babd7c29ff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/EffectEngine.ts:62"}, "properties": {"repobilityId": "07304140098d6236", "scanner": "scanner-primary", "fingerprint": "5994f5babd7c29ff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1d25bbad5f473eb3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/VideoCompositor.ts:70"}, "properties": {"repobilityId": "17c934681eb1d40a", "scanner": "scanner-primary", "fingerprint": "1d25bbad5f473eb3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d321873ad4d5b9f6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/SocketManager.ts:24"}, "properties": {"repobilityId": "6c21b24573def760", "scanner": "scanner-primary", "fingerprint": "d321873ad4d5b9f6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-68bc51e340b22986", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/WebRTCClientAdapter.ts:34"}, "properties": {"repobilityId": "5d03798bad0293c8", "scanner": "scanner-primary", "fingerprint": "68bc51e340b22986", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-36d8502a2cf7b779", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/PermissionService.ts:56"}, "properties": {"repobilityId": "44faa8eda7322f1e", "scanner": "scanner-primary", "fingerprint": "36d8502a2cf7b779", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-04ffbe84c4b6fa63", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/SocketDebugger.ts:11"}, "properties": {"repobilityId": "f935eea2fd4fb81d", "scanner": "scanner-primary", "fingerprint": "04ffbe84c4b6fa63", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6ec1231002d16742", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/StreamerViewManager.ts:77"}, "properties": {"repobilityId": "2b2e74aecf2501d4", "scanner": "scanner-primary", "fingerprint": "6ec1231002d16742", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d414c4a9016ab060", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/AuthService.ts:107"}, "properties": {"repobilityId": "a30fc2c477682935", "scanner": "scanner-primary", "fingerprint": "d414c4a9016ab060", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-75de164feaaf5c44", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/ScreenCaptureService.ts:96"}, "properties": {"repobilityId": "5ae84c784c2e442b", "scanner": "scanner-primary", "fingerprint": "75de164feaaf5c44", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e913fb872c51c62f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/game/GameClient.ts:53"}, "properties": {"repobilityId": "704831cd9bd32795", "scanner": "scanner-primary", "fingerprint": "e913fb872c51c62f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b0b2ad4b9664e3f1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/game/GameRenderer.ts:352"}, "properties": {"repobilityId": "7d7ffc23c3464f9c", "scanner": "scanner-primary", "fingerprint": "b0b2ad4b9664e3f1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-83bfbd40e9b1f8fe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/effects/ConfettiEffect.ts:86"}, "properties": {"repobilityId": "c65224bd3aa01e20", "scanner": "scanner-primary", "fingerprint": "83bfbd40e9b1f8fe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-27646679d936302d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/effects/SmokeEffect.ts:55"}, "properties": {"repobilityId": "34cf3bc2d8a07413", "scanner": "scanner-primary", "fingerprint": "27646679d936302d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fc7e9fc231ca8f90", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/effects/DrawingEffect.ts:73"}, "properties": {"repobilityId": "df63e642cf639d4b", "scanner": "scanner-primary", "fingerprint": "fc7e9fc231ca8f90", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b493e3c384319cec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/effects/BaseEffect.ts:29"}, "properties": {"repobilityId": "b8f5cefc7ef244d6", "scanner": "scanner-primary", "fingerprint": "b493e3c384319cec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8e90cba4bfbbee73", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/services/effects/SplatEffect.ts:131"}, "properties": {"repobilityId": "61117101ecf9df99", "scanner": "scanner-primary", "fingerprint": "8e90cba4bfbbee73", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a5f873b603339edc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ops/manage-shop.js:34"}, "properties": {"repobilityId": "0f10d3e46be2f245", "scanner": "scanner-primary", "fingerprint": "a5f873b603339edc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f963051b78cdad60", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ops/make-admin.js:7"}, "properties": {"repobilityId": "0a6a7edc264f1714", "scanner": "scanner-primary", "fingerprint": "f963051b78cdad60", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-59607dae6f1138f1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ops/recalculate-points.js:7"}, "properties": {"repobilityId": "43a4223e7baa4f3c", "scanner": "scanner-primary", "fingerprint": "59607dae6f1138f1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c5d8df2a1cbb46ea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ops/reset-all-cooldowns.js:14"}, "properties": {"repobilityId": "00bc1b91897172a3", "scanner": "scanner-primary", "fingerprint": "c5d8df2a1cbb46ea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-931c3badefabb35e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy/db-backup.js:33"}, "properties": {"repobilityId": "e550c9bdfac778c7", "scanner": "scanner-primary", "fingerprint": "931c3badefabb35e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-67f68993e3bd2c50", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup/setup-test-users.js:11"}, "properties": {"repobilityId": "cb3157fd1328d7dd", "scanner": "scanner-primary", "fingerprint": "67f68993e3bd2c50", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-126b9fdf7a416063", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup/convert-emojis-robust.js:40"}, "properties": {"repobilityId": "5b9bc20e21792cf5", "scanner": "scanner-primary", "fingerprint": "126b9fdf7a416063", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1a8ed88e6e33d5a8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup/import-github-emojis.js:7"}, "properties": {"repobilityId": "cacab02b4f8380d1", "scanner": "scanner-primary", "fingerprint": "1a8ed88e6e33d5a8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8554c516023558cf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup/setup-whisper.js:25"}, "properties": {"repobilityId": "00733e0ce026c829", "scanner": "scanner-primary", "fingerprint": "8554c516023558cf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bd2eb1e4fd2e33bc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup/convert-emojis-for-safari.js:20"}, "properties": {"repobilityId": "bbaf5be14f6207d8", "scanner": "scanner-primary", "fingerprint": "bd2eb1e4fd2e33bc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d43fca87dcb316b0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup/setup-chatbot-tables.js:7"}, "properties": {"repobilityId": "884e4d6d8f1d5e05", "scanner": "scanner-primary", "fingerprint": "d43fca87dcb316b0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5841feee7e9269c4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-test-points.js:8"}, "properties": {"repobilityId": "3527f74d094ba6fc", "scanner": "scanner-primary", "fingerprint": "5841feee7e9269c4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-27b53118de41fe88", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-megaphone-item.js:18"}, "properties": {"repobilityId": "d63ad145e4aab396", "scanner": "scanner-primary", "fingerprint": "27b53118de41fe88", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e459eaba6f33cb3e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-101soundboards-item.js:47"}, "properties": {"repobilityId": "93e1dd89b09da6e8", "scanner": "scanner-primary", "fingerprint": "e459eaba6f33cb3e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9e29ca7ba13891b4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-use-assigned-name.js:7"}, "properties": {"repobilityId": "49a315029bcb5354", "scanner": "scanner-primary", "fingerprint": "9e29ca7ba13891b4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5ec8cce8eb2e9cc0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-global-prompt-table.js:7"}, "properties": {"repobilityId": "64da1de38baf2a3c", "scanner": "scanner-primary", "fingerprint": "5ec8cce8eb2e9cc0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-27d8bc4979d19fc0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-visualfx-items.js:4"}, "properties": {"repobilityId": "a301d1c77cad26c7", "scanner": "scanner-primary", "fingerprint": "27d8bc4979d19fc0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-88ee69a066635150", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-stream-reducer-item.js:4"}, "properties": {"repobilityId": "7ef4200de0194534", "scanner": "scanner-primary", "fingerprint": "88ee69a066635150", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b795d50e3962eda8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-sample-emojis.js:6"}, "properties": {"repobilityId": "e39ffdd54f20e20b", "scanner": "scanner-primary", "fingerprint": "b795d50e3962eda8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0c515f82ba95d03c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-item-categories-sqlite3.js:7"}, "properties": {"repobilityId": "3d22b9a9eca5477d", "scanner": "scanner-primary", "fingerprint": "0c515f82ba95d03c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bdd60ec45727a8e9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-heart-swarm.js:4"}, "properties": {"repobilityId": "563bd20dd64a8019", "scanner": "scanner-primary", "fingerprint": "bdd60ec45727a8e9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-af665cac649393a5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-account-deletion-tables.js:12"}, "properties": {"repobilityId": "f3a0efe819c594a0", "scanner": "scanner-primary", "fingerprint": "af665cac649393a5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b6e8ba7b534405e3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/add-llm-model-column.js:7"}, "properties": {"repobilityId": "a91595fcf737155f", "scanner": "scanner-primary", "fingerprint": "b6e8ba7b534405e3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9f8eb0e0e8566737", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/index.js:46"}, "properties": {"repobilityId": "d479b7432af34ae0", "scanner": "scanner-primary", "fingerprint": "9f8eb0e0e8566737", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4dbcdcd40a91f35d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/api/routes.js:73"}, "properties": {"repobilityId": "4afb33bd2e5bdca7", "scanner": "scanner-primary", "fingerprint": "4dbcdcd40a91f35d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a62d70ae2c4559cf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/commands/commandParser.js:897"}, "properties": {"repobilityId": "2c5e736470616560", "scanner": "scanner-primary", "fingerprint": "a62d70ae2c4559cf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1fcf6d495567ac27", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/claims/claimEventService.js:137"}, "properties": {"repobilityId": "326e871035b7dbe3", "scanner": "scanner-primary", "fingerprint": "1fcf6d495567ac27", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-341d7268965b7879", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/moderation/moderationService.js:68"}, "properties": {"repobilityId": "1aee77a2bb5a373f", "scanner": "scanner-primary", "fingerprint": "341d7268965b7879", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-98287ac449b65af4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/votes/unlockVote.js:49"}, "properties": {"repobilityId": "c06cbf3071470815", "scanner": "scanner-primary", "fingerprint": "98287ac449b65af4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-716395552a6e8c51", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/votes/lockVote.js:51"}, "properties": {"repobilityId": "92b41d990d4aeec0", "scanner": "scanner-primary", "fingerprint": "716395552a6e8c51", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1ecfbbee5eaf3432", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/votes/swapVote.js:88"}, "properties": {"repobilityId": "012a005610e602e2", "scanner": "scanner-primary", "fingerprint": "1ecfbbee5eaf3432", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c9de3d042fc729c4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/votes/skipVote.js:56"}, "properties": {"repobilityId": "de38a3750fd15840", "scanner": "scanner-primary", "fingerprint": "c9de3d042fc729c4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7364cb37ac33619b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/votes/extendVote.js:51"}, "properties": {"repobilityId": "cd22ed5c8bbb1126", "scanner": "scanner-primary", "fingerprint": "7364cb37ac33619b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0d99ad86fd83fd81", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/votes/voteService.js:243"}, "properties": {"repobilityId": "4208524e2b741cda", "scanner": "scanner-primary", "fingerprint": "0d99ad86fd83fd81", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c5cd7899b6cadc88", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/votes/reduceVote.js:48"}, "properties": {"repobilityId": "6a1d137883099c3e", "scanner": "scanner-primary", "fingerprint": "c5cd7899b6cadc88", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b95524fcde34fff8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/core/socketHandlers.js:173"}, "properties": {"repobilityId": "4b253028da981ca5", "scanner": "scanner-primary", "fingerprint": "b95524fcde34fff8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6eace8c43432719e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 chat-service/core/adminCommands.js:128"}, "properties": {"repobilityId": "04582b21975fabf9", "scanner": "scanner-primary", "fingerprint": "6eace8c43432719e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3d7c871c7b1def17", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/migrations/add-auto-summon-bot.js:4"}, "properties": {"repobilityId": "a0440db554e4200d", "scanner": "scanner-primary", "fingerprint": "3d7c871c7b1def17", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a7b4b36ba16cc8dd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/migrations/setup-transcription-tables.js:7"}, "properties": {"repobilityId": "be28b328de95d506", "scanner": "scanner-primary", "fingerprint": "a7b4b36ba16cc8dd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1d13f50f26720673", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/migrations/setup-clips-tables.js:14"}, "properties": {"repobilityId": "5227ce6523002a5e", "scanner": "scanner-primary", "fingerprint": "1d13f50f26720673", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2c7272c8ede337e9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/migrations/add-summon-lesser-bot-item.js:4"}, "properties": {"repobilityId": "623dc769044ded77", "scanner": "scanner-primary", "fingerprint": "2c7272c8ede337e9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-542664d498a1432e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/migrations/add_ip_bans.js:24"}, "properties": {"repobilityId": "5d19d57d67a50861", "scanner": "scanner-primary", "fingerprint": "542664d498a1432e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bfef6876065b44c0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/migrations/migrate-points-system.js:27"}, "properties": {"repobilityId": "4776c9dbb2a9425c", "scanner": "scanner-primary", "fingerprint": "bfef6876065b44c0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f57445c7a6438eae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/migrations/add_ai_moderation_tables.js:62"}, "properties": {"repobilityId": "94bc173cf173d7a1", "scanner": "scanner-primary", "fingerprint": "f57445c7a6438eae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bbc6a1a8eefd78b0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/migrations/setup-recording-tables.js:6"}, "properties": {"repobilityId": "5e73170b44cea9fc", "scanner": "scanner-primary", "fingerprint": "bbc6a1a8eefd78b0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-517929146eab1ce1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/migrations/add-summon-bot-support.js:4"}, "properties": {"repobilityId": "74fab27937da57b6", "scanner": "scanner-primary", "fingerprint": "517929146eab1ce1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-82b657dec07c55b5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/migrations/add-summon-bot-item.js:4"}, "properties": {"repobilityId": "e98f024955975d74", "scanner": "scanner-primary", "fingerprint": "82b657dec07c55b5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-ccd95eaa2b5556ca", "level": "error", "message": {"text": "Runtime dotenv file present in repo: client/.env.development"}, "properties": {"repobilityId": "f98a76fb877c8fd3", "scanner": "scanner-primary", "fingerprint": "ccd95eaa2b5556ca", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets", "config", "env-file", "runtime-env", "env_file_with_secret"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/.env.development"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-507276577b21da57", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in blog/assets/index-CW_Lsnfj.js:9"}, "properties": {"repobilityId": "ed985a00487834ef", "scanner": "scanner-primary", "fingerprint": "507276577b21da57", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "blog/assets/index-CW_Lsnfj.js"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-3a49127e66866ba5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in blog/assets/index-CW_Lsnfj.js:8"}, "properties": {"repobilityId": "c51433c1360469be", "scanner": "scanner-primary", "fingerprint": "3a49127e66866ba5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "blog/assets/index-CW_Lsnfj.js"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-3abcdaf3f566420f", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in blog/assets/index-DUiMp6_W.js:9"}, "properties": {"repobilityId": "68feb77110f3bdb5", "scanner": "scanner-primary", "fingerprint": "3abcdaf3f566420f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "blog/assets/index-DUiMp6_W.js"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-b5634d97f49a6f79", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in blog/assets/index-DUiMp6_W.js:8"}, "properties": {"repobilityId": "5d5bb8d89f1ee1e3", "scanner": "scanner-primary", "fingerprint": "b5634d97f49a6f79", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "blog/assets/index-DUiMp6_W.js"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-6a960c30249b76a5", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in client/serve-production.js:3"}, "properties": {"repobilityId": "02210020d82aa196", "scanner": "scanner-primary", "fingerprint": "6a960c30249b76a5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/serve-production.js"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-f534b82df77e40f6", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in client/src/components/inventory/InventoryPanel.test.tsx:103"}, "properties": {"repobilityId": "ff86b338089ff208", "scanner": "scanner-primary", "fingerprint": "f534b82df77e40f6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/components/inventory/InventoryPanel.test.tsx"}, "region": {"startLine": 103}}}]}, {"ruleId": "scanner-739ce9af5e16e2f3", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in client/src/components/auth/OAuthUsernameSelection.tsx:138"}, "properties": {"repobilityId": "2bda27b8d7bf6762", "scanner": "scanner-primary", "fingerprint": "739ce9af5e16e2f3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/components/auth/OAuthUsernameSelection.tsx"}, "region": {"startLine": 138}}}]}, {"ruleId": "scanner-eccfac2b7e478cb4", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in client/src/components/auth/OAuthCallback.tsx:20"}, "properties": {"repobilityId": "6f0039bb597d3f94", "scanner": "scanner-primary", "fingerprint": "eccfac2b7e478cb4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/components/auth/OAuthCallback.tsx"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-d9bcb133f84b2f71", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in client/src/components/chat/MessageList.tsx:234"}, "properties": {"repobilityId": "6b6e788093fc364a", "scanner": "scanner-primary", "fingerprint": "d9bcb133f84b2f71", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/components/chat/MessageList.tsx"}, "region": {"startLine": 234}}}]}, {"ruleId": "scanner-fc1fe1ebe93fa6c2", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in client/src/services/SocketManager.ts:156"}, "properties": {"repobilityId": "e16422a36fa8edd1", "scanner": "scanner-primary", "fingerprint": "fc1fe1ebe93fa6c2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/services/SocketManager.ts"}, "region": {"startLine": 156}}}]}, {"ruleId": "scanner-fbb5b71790444f21", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in client/src/services/AuthService.ts:64"}, "properties": {"repobilityId": "fb5cb1eae959fa1d", "scanner": "scanner-primary", "fingerprint": "fbb5b71790444f21", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/services/AuthService.ts"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-eab3c1336610a053", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/setup/convert-emojis-robust.js:5"}, "properties": {"repobilityId": "79dc828b18174a94", "scanner": "scanner-primary", "fingerprint": "eab3c1336610a053", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/setup/convert-emojis-robust.js"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-f67c29bd256f7b9d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/setup/setup-whisper.js:1"}, "properties": {"repobilityId": "187ace6831e175cc", "scanner": "scanner-primary", "fingerprint": "f67c29bd256f7b9d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/setup/setup-whisper.js"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c7fcab4254684cdc", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in scripts/setup/convert-emojis-for-safari.js:74"}, "properties": {"repobilityId": "e78411a3c80d264b", "scanner": "scanner-primary", "fingerprint": "c7fcab4254684cdc", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/setup/convert-emojis-for-safari.js"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-05e63a154a4096b3", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/setup/convert-emojis-for-safari.js:72"}, "properties": {"repobilityId": "268f9187e83728bc", "scanner": "scanner-primary", "fingerprint": "05e63a154a4096b3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/setup/convert-emojis-for-safari.js"}, "region": {"startLine": 72}}}]}, {"ruleId": "scanner-0e523aafbe8db746", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in server/index.js:224"}, "properties": {"repobilityId": "d9e2487a3e052e8b", "scanner": "scanner-primary", "fingerprint": "0e523aafbe8db746", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/index.js"}, "region": {"startLine": 224}}}]}, {"ruleId": "scanner-8c229b24dd629765", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in server/bootstrap/shutdown.js:136"}, "properties": {"repobilityId": "91e7c59259716813", "scanner": "scanner-primary", "fingerprint": "8c229b24dd629765", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/bootstrap/shutdown.js"}, "region": {"startLine": 136}}}]}, {"ruleId": "scanner-92e6bfc7aa736720", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/bootstrap/shutdown.js:133"}, "properties": {"repobilityId": "5aa523016975409c", "scanner": "scanner-primary", "fingerprint": "92e6bfc7aa736720", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/bootstrap/shutdown.js"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-ee01b7e31f7835e3", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in server/routes/soundfx.js:212"}, "properties": {"repobilityId": "dcf06a30947e9327", "scanner": "scanner-primary", "fingerprint": "ee01b7e31f7835e3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/routes/soundfx.js"}, "region": {"startLine": 212}}}]}, {"ruleId": "scanner-71aabd57f27c2c5e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/routes/emojis.js:28"}, "properties": {"repobilityId": "c9896c88e38a4df4", "scanner": "scanner-primary", "fingerprint": "71aabd57f27c2c5e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/routes/emojis.js"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-f78ed53f25a89c52", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/services/KickRandomService.js:8"}, "properties": {"repobilityId": "4630b600a6dcc808", "scanner": "scanner-primary", "fingerprint": "f78ed53f25a89c52", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/services/KickRandomService.js"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-30206379458dbf46", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/services/EgressFrameCaptureService.js:1"}, "properties": {"repobilityId": "d7bbc82560d5e0a1", "scanner": "scanner-primary", "fingerprint": "30206379458dbf46", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/services/EgressFrameCaptureService.js"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-785c1d48c2e3ff06", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/services/StreamProbeService.js:8"}, "properties": {"repobilityId": "a414d511e3eb6183", "scanner": "scanner-primary", "fingerprint": "785c1d48c2e3ff06", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/services/StreamProbeService.js"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-51ab83731158bb52", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/services/URLStreamExtractorService.js:8"}, "properties": {"repobilityId": "4b9b1d331649bf55", "scanner": "scanner-primary", "fingerprint": "51ab83731158bb52", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/services/URLStreamExtractorService.js"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-bb144b04bfd83ec9", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/services/ProcessManager.js:1"}, "properties": {"repobilityId": "b25ca339ac76cd2b", "scanner": "scanner-primary", "fingerprint": "bb144b04bfd83ec9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/services/ProcessManager.js"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-11edd2593d3b32ac", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/services/B2StorageService.js:14"}, "properties": {"repobilityId": "13904f9ec1c568ce", "scanner": "scanner-primary", "fingerprint": "11edd2593d3b32ac", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/services/B2StorageService.js"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-7999f5f9f3084fa0", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/services/ClipProcessorService.js:1"}, "properties": {"repobilityId": "a65507f7663cb86a", "scanner": "scanner-primary", "fingerprint": "7999f5f9f3084fa0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/services/ClipProcessorService.js"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-711d3785330bdc27", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/services/AudioBufferService.js:3"}, "properties": {"repobilityId": "3a211d0ce1e2aa17", "scanner": "scanner-primary", "fingerprint": "711d3785330bdc27", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/services/AudioBufferService.js"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-ae0378f561d77dfa", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/services/TranscriptionAudioAdapter.js:9"}, "properties": {"repobilityId": "f0d0859007c7304a", "scanner": "scanner-primary", "fingerprint": "ae0378f561d77dfa", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/services/TranscriptionAudioAdapter.js"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-b5b3e8227a0eb448", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/services/SimpleMediaStreamService.js:3"}, "properties": {"repobilityId": "8f3fcd3bbd91fb1e", "scanner": "scanner-primary", "fingerprint": "b5b3e8227a0eb448", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/services/SimpleMediaStreamService.js"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-9506a5ffb7d96025", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in server/services/ViewBotLiveKitService.js:546"}, "properties": {"repobilityId": "e9a464daeb394d11", "scanner": "scanner-primary", "fingerprint": "9506a5ffb7d96025", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/services/ViewBotLiveKitService.js"}, "region": {"startLine": 546}}}]}, {"ruleId": "scanner-094df2911aee1d15", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/services/ViewBotLiveKitService.js:8"}, "properties": {"repobilityId": "909380a08182947c", "scanner": "scanner-primary", "fingerprint": "094df2911aee1d15", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/services/ViewBotLiveKitService.js"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-9ac4ed6ebb52dd6c", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in server/services/urlstream/IngressJanitor.js:159"}, "properties": {"repobilityId": "0ed0e89c79a20f06", "scanner": "scanner-primary", "fingerprint": "9ac4ed6ebb52dd6c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/services/urlstream/IngressJanitor.js"}, "region": {"startLine": 159}}}]}, {"ruleId": "scanner-6be221ebbe28b515", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/services/urlstream/IngressJanitor.js:157"}, "properties": {"repobilityId": "fed656927aee60bc", "scanner": "scanner-primary", "fingerprint": "6be221ebbe28b515", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/services/urlstream/IngressJanitor.js"}, "region": {"startLine": 157}}}]}, {"ruleId": "scanner-7494754dd67daba8", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/services/urlstream/FFmpegPipeline.js:15"}, "properties": {"repobilityId": "9993aaaf12ff06e6", "scanner": "scanner-primary", "fingerprint": "7494754dd67daba8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/services/urlstream/FFmpegPipeline.js"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-e41b07cd8049f821", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/services/transcription/WhisperRunner.js:3"}, "properties": {"repobilityId": "75b025a4e26f2d59", "scanner": "scanner-primary", "fingerprint": "e41b07cd8049f821", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/services/transcription/WhisperRunner.js"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-9e0c7e16ec5ed96c", "level": "note", "message": {"text": "Very large file: client/src/App.tsx (1427 lines)"}, "properties": {"repobilityId": "3a8398c21f98342b", "scanner": "scanner-primary", "fingerprint": "9e0c7e16ec5ed96c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-58d09a816278d369", "level": "note", "message": {"text": "Very large file: client/src/components/stream/WebRTCViewer.tsx (2407 lines)"}, "properties": {"repobilityId": "8420a249f0bb4e24", "scanner": "scanner-primary", "fingerprint": "58d09a816278d369", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bc3e23fe08ce66f2", "level": "note", "message": {"text": "Very large file: client/src/services/LiveKitClient.ts (1575 lines)"}, "properties": {"repobilityId": "40f79e148dbf55de", "scanner": "scanner-primary", "fingerprint": "bc3e23fe08ce66f2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-178b36aedacb247a", "level": "note", "message": {"text": "Very large file: chat-service/commands/commandParser.js (1386 lines)"}, "properties": {"repobilityId": "214da1e83bb2d6cd", "scanner": "scanner-primary", "fingerprint": "178b36aedacb247a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f8d4e46ccb4d4665", "level": "note", "message": {"text": "Very large file: server/index.js (1678 lines)"}, "properties": {"repobilityId": "4d84f5062adc96c0", "scanner": "scanner-primary", "fingerprint": "f8d4e46ccb4d4665", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "786635db18901922", "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": "03536a3611916f58", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "6dc889124850f886", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "b0fe99597651e641", "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": "9737592c97e16183", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-c5345fc57fdf7863", "level": "note", "message": {"text": "Legacy-named symbol `unstable_legacy` in blog/assets/index-CW_Lsnfj.js:8"}, "properties": {"repobilityId": "7f78e4b35b9c5209", "scanner": "scanner-primary", "fingerprint": "c5345fc57fdf7863", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-665a86044c9ed261", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 blog/assets/index-CW_Lsnfj.js:1"}, "properties": {"repobilityId": "ed2ae89246673253", "scanner": "scanner-primary", "fingerprint": "665a86044c9ed261", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-10adb5e0efc8273d", "level": "note", "message": {"text": "Legacy-named symbol `unstable_legacy` in blog/assets/index-DUiMp6_W.js:8"}, "properties": {"repobilityId": "527af68dde4702ef", "scanner": "scanner-primary", "fingerprint": "10adb5e0efc8273d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a234892ed66735b0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 blog/assets/index-DUiMp6_W.js:1"}, "properties": {"repobilityId": "1b6753d70bf02858", "scanner": "scanner-primary", "fingerprint": "a234892ed66735b0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cc31b1bb949f138e", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/App.tsx:196"}, "properties": {"repobilityId": "1c0f86d202bdb82a", "scanner": "scanner-primary", "fingerprint": "cc31b1bb949f138e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eae35c197b3c46e9", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/components/Tutorial.test.tsx:5"}, "properties": {"repobilityId": "240a3ccc618d5576", "scanner": "scanner-primary", "fingerprint": "eae35c197b3c46e9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-56bc73b74e60a6e8", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/URLStreamManagement.test.tsx:5"}, "properties": {"repobilityId": "75d7f3a5c6bb0e5b", "scanner": "scanner-primary", "fingerprint": "56bc73b74e60a6e8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85088aa9fb729317", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/BugReportModal.tsx:58"}, "properties": {"repobilityId": "256063434e4b1e2d", "scanner": "scanner-primary", "fingerprint": "85088aa9fb729317", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6fa5f57c129d03a9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/BotsPanel.tsx:129"}, "properties": {"repobilityId": "124a1e87f588d7a4", "scanner": "scanner-primary", "fingerprint": "6fa5f57c129d03a9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4b9b783721342f18", "level": "none", "message": {"text": "Commented-code block (12 lines) in client/src/components/Chat.test.tsx:13"}, "properties": {"repobilityId": "ad9e592f134db52f", "scanner": "scanner-primary", "fingerprint": "4b9b783721342f18", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7cd379bb974963ea", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/Chat.test.tsx:127"}, "properties": {"repobilityId": "90002401d64bd761", "scanner": "scanner-primary", "fingerprint": "7cd379bb974963ea", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-af9d146ff3781094", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/StreamBotManager.tsx:55"}, "properties": {"repobilityId": "c7c243a26e86b4a2", "scanner": "scanner-primary", "fingerprint": "af9d146ff3781094", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8ac8fa8ce7199543", "level": "none", "message": {"text": "Commented-code block (8 lines) in client/src/components/DesktopHeaderV2.test.tsx:5"}, "properties": {"repobilityId": "4b9609fd2c88e22e", "scanner": "scanner-primary", "fingerprint": "8ac8fa8ce7199543", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dae095ace1939bec", "level": "none", "message": {"text": "Commented-code block (8 lines) in client/src/components/inventory/InventoryPanel.test.tsx:7"}, "properties": {"repobilityId": "2ede0b0e3a660823", "scanner": "scanner-primary", "fingerprint": "dae095ace1939bec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-37a0cbf621348785", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/inventory/InventoryPanel.test.tsx:8"}, "properties": {"repobilityId": "fdcc1ed995d0d36f", "scanner": "scanner-primary", "fingerprint": "37a0cbf621348785", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-17a41ecf6150f5d0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/inventory/inventoryPanel/useInventory.ts:14"}, "properties": {"repobilityId": "1c912ea27abef6b9", "scanner": "scanner-primary", "fingerprint": "17a41ecf6150f5d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-28715d385c7c02fe", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/chat/useChatBonus.ts:115"}, "properties": {"repobilityId": "069831ab89b193e0", "scanner": "scanner-primary", "fingerprint": "28715d385c7c02fe", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2126bd240f8da129", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/audio/AudioLevelMeter.tsx:188"}, "properties": {"repobilityId": "b45bd9c3a5113246", "scanner": "scanner-primary", "fingerprint": "2126bd240f8da129", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9cbe353e4483853f", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/stream/StreamControls.test.tsx:6"}, "properties": {"repobilityId": "25b0643b7b7d437e", "scanner": "scanner-primary", "fingerprint": "9cbe353e4483853f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-87095b2f02640fee", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/stream/StreamerSettings.characterization.test.tsx:5"}, "properties": {"repobilityId": "5258e64eeff4f371", "scanner": "scanner-primary", "fingerprint": "87095b2f02640fee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a8901e83a8fa788f", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/stream/WebRTCViewer.tsx:62"}, "properties": {"repobilityId": "320f3d51e7e2621d", "scanner": "scanner-primary", "fingerprint": "a8901e83a8fa788f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-215e8e4eaa090127", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/stream/streamerSettings/useStreamerDevices.ts:5"}, "properties": {"repobilityId": "f3ad3b58f1c5fdc6", "scanner": "scanner-primary", "fingerprint": "215e8e4eaa090127", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3d2bc9795eefb88", "level": "none", "message": {"text": "Commented-code block (10 lines) in client/src/components/admin/AIModerationManagement.tsx:10"}, "properties": {"repobilityId": "721201d4bd595bee", "scanner": "scanner-primary", "fingerprint": "e3d2bc9795eefb88", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-21e60cb2d14281e9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/ItemManagement.test.tsx:5"}, "properties": {"repobilityId": "e3c674d40f5a3edc", "scanner": "scanner-primary", "fingerprint": "21e60cb2d14281e9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0efde919f276d963", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/components/admin/VisionBotManagement.test.tsx:6"}, "properties": {"repobilityId": "2ca640bee8c95634", "scanner": "scanner-primary", "fingerprint": "0efde919f276d963", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-44f9024e0130d32c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/VisionBotManagement.test.tsx:6"}, "properties": {"repobilityId": "abe878923ad920a9", "scanner": "scanner-primary", "fingerprint": "44f9024e0130d32c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2bbbf0ff46401098", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/StreamingLogs.tsx:79"}, "properties": {"repobilityId": "f8e60805f2ef7442", "scanner": "scanner-primary", "fingerprint": "2bbbf0ff46401098", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-07c13516b6997225", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/components/admin/RecordingManagement.tsx:5"}, "properties": {"repobilityId": "22f211a4e07f2410", "scanner": "scanner-primary", "fingerprint": "07c13516b6997225", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d6dbd609d31cb6c", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/admin/TranscriptionManagement.test.tsx:7"}, "properties": {"repobilityId": "cded8e2eee1a943e", "scanner": "scanner-primary", "fingerprint": "4d6dbd609d31cb6c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d47d78bca1725c8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/TranscriptionManagement.test.tsx:7"}, "properties": {"repobilityId": "78749cbcb2b3ed53", "scanner": "scanner-primary", "fingerprint": "7d47d78bca1725c8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f2ae8af0d6c65e96", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/IPBanManagement.tsx:144"}, "properties": {"repobilityId": "9fe1c54725d5253d", "scanner": "scanner-primary", "fingerprint": "f2ae8af0d6c65e96", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-25e74d70e518dabe", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/components/admin/ChatBotManagement.test.tsx:6"}, "properties": {"repobilityId": "ff2adcc180cc8481", "scanner": "scanner-primary", "fingerprint": "25e74d70e518dabe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d45d6da0b64fa4d9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/ChatBotManagement.test.tsx:6"}, "properties": {"repobilityId": "cc366a7a9c10bb2a", "scanner": "scanner-primary", "fingerprint": "d45d6da0b64fa4d9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-43d22de4f771e9ef", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/admin/AdminRecordingReview.test.tsx:5"}, "properties": {"repobilityId": "df22d2654315f5cc", "scanner": "scanner-primary", "fingerprint": "43d22de4f771e9ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2ef04937c3a73ec6", "level": "none", "message": {"text": "Commented-code block (10 lines) in client/src/components/admin/TutorialEditor.test.tsx:6"}, "properties": {"repobilityId": "8d2b8d05b979610b", "scanner": "scanner-primary", "fingerprint": "2ef04937c3a73ec6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d98aa2efcaef8a58", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/TutorialEditor.test.tsx:7"}, "properties": {"repobilityId": "9c1aa552cbad04c4", "scanner": "scanner-primary", "fingerprint": "d98aa2efcaef8a58", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4575da93ca48b0f2", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/admin/adminRecordingReview/useHlsPlayer.ts:16"}, "properties": {"repobilityId": "5b4b46940090b41b", "scanner": "scanner-primary", "fingerprint": "4575da93ca48b0f2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c34be3aa4848044d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/chatBotManagement/useChatBotManagement.ts:15"}, "properties": {"repobilityId": "8dfb98f4e8ebed0e", "scanner": "scanner-primary", "fingerprint": "c34be3aa4848044d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a8f5a9234fc6a803", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/components/soundfx/SoundFxPlayer.tsx:73"}, "properties": {"repobilityId": "fa1d8b3d35d41be7", "scanner": "scanner-primary", "fingerprint": "a8f5a9234fc6a803", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-828842f16cada672", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/user/UserInfoPopup.tsx:140"}, "properties": {"repobilityId": "0d8282e8693086eb", "scanner": "scanner-primary", "fingerprint": "828842f16cada672", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-79b89abdc98e6da1", "level": "none", "message": {"text": "Commented-code block (8 lines) in client/src/components/user/ProfileSettings.test.tsx:7"}, "properties": {"repobilityId": "9d53024cbb518291", "scanner": "scanner-primary", "fingerprint": "79b89abdc98e6da1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-baad5baba13c9784", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/clips/ClipCreationModal.tsx:102"}, "properties": {"repobilityId": "2ac4ffec1163bc69", "scanner": "scanner-primary", "fingerprint": "baad5baba13c9784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-580c1a1d44d5a0c3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/clips/ClipsGallery.tsx:69"}, "properties": {"repobilityId": "b56efc9c5c3ed937", "scanner": "scanner-primary", "fingerprint": "580c1a1d44d5a0c3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a8cbb6994d3d348a", "level": "none", "message": {"text": "Commented-code block (13 lines) in client/src/components/canvas/CanvasEffectOverlay.test.tsx:7"}, "properties": {"repobilityId": "9963c22107d1cf1f", "scanner": "scanner-primary", "fingerprint": "a8cbb6994d3d348a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-237960386c0043de", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/canvas/canvasEffectOverlay/effectDefinitions.ts:1"}, "properties": {"repobilityId": "cbc5656847f2eb1f", "scanner": "scanner-primary", "fingerprint": "237960386c0043de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-867b429aa444ace8", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/buffs/BuffDisplay.tsx:250"}, "properties": {"repobilityId": "5590dcee100d42cf", "scanner": "scanner-primary", "fingerprint": "867b429aa444ace8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d5e179ad79157e4f", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/hooks/useStreamerViewManager.ts:36"}, "properties": {"repobilityId": "a17fd664c10ecec4", "scanner": "scanner-primary", "fingerprint": "d5e179ad79157e4f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f9c63311531799f", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/hooks/useStreamVisualEffects.ts:69"}, "properties": {"repobilityId": "4ca305077a485dcd", "scanner": "scanner-primary", "fingerprint": "5f9c63311531799f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-044104f8ce7801e4", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/hooks/useWebRTCConnection.ts:92"}, "properties": {"repobilityId": "5457a1b1660af5bf", "scanner": "scanner-primary", "fingerprint": "044104f8ce7801e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb7c872585c8d7a1", "level": "none", "message": {"text": "Commented-code block (9 lines) in client/src/hooks/__tests__/useChatMessages.test.tsx:4"}, "properties": {"repobilityId": "6606d7496e457d80", "scanner": "scanner-primary", "fingerprint": "eb7c872585c8d7a1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc30134ba400d22f", "level": "none", "message": {"text": "Commented-code block (12 lines) in client/src/hooks/__tests__/useStreamGenerationGuard.test.tsx:11"}, "properties": {"repobilityId": "ce9fb1b811fd4b38", "scanner": "scanner-primary", "fingerprint": "bc30134ba400d22f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c64ac3027060a99", "level": "none", "message": {"text": "Commented-code block (14 lines) in client/src/services/EffectEngine.ts:95"}, "properties": {"repobilityId": "89bfda60c9af5e74", "scanner": "scanner-primary", "fingerprint": "7c64ac3027060a99", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6908b20a5e46bc3d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/services/LiveKitClient.ts:453"}, "properties": {"repobilityId": "aa2280ba1043bfaa", "scanner": "scanner-primary", "fingerprint": "6908b20a5e46bc3d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-25aafdb3a64e0d4b", "level": "none", "message": {"text": "Commented-code block (8 lines) in client/src/services/effects/DrawingEffect.ts:159"}, "properties": {"repobilityId": "b67336bd898ff1a7", "scanner": "scanner-primary", "fingerprint": "25aafdb3a64e0d4b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-020dff647b02df26", "level": "none", "message": {"text": "Commented-code block (5 lines) in config/jest/jest.config.js:1"}, "properties": {"repobilityId": "07559e08a380e95d", "scanner": "scanner-primary", "fingerprint": "020dff647b02df26", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2b76cbfe9442f498", "level": "none", "message": {"text": "Commented-code block (8 lines) in config/jest/jest.bettersqlite.config.js:3"}, "properties": {"repobilityId": "6d7e5f8c5dd1b7df", "scanner": "scanner-primary", "fingerprint": "2b76cbfe9442f498", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de1f5d753c543e3c", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/deploy/db-backup.js:5"}, "properties": {"repobilityId": "79f0bd73e21d9a5e", "scanner": "scanner-primary", "fingerprint": "de1f5d753c543e3c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9d5cd09953dbb5a7", "level": "none", "message": {"text": "Commented-code block (5 lines) in chat-service/index.js:86"}, "properties": {"repobilityId": "269052418d51e60c", "scanner": "scanner-primary", "fingerprint": "9d5cd09953dbb5a7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4c7957151af9c043", "level": "none", "message": {"text": "Commented-code block (11 lines) in chat-service/tests/claims/claimEventService.test.js:3"}, "properties": {"repobilityId": "6d023051354f5101", "scanner": "scanner-primary", "fingerprint": "4c7957151af9c043", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d0a923298e2f642d", "level": "none", "message": {"text": "Commented-code block (9 lines) in chat-service/api/routes.js:3"}, "properties": {"repobilityId": "6b018bb1cc0f3a6f", "scanner": "scanner-primary", "fingerprint": "d0a923298e2f642d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b4871b73e1986397", "level": "none", "message": {"text": "Commented-code block (6 lines) in chat-service/commands/commandParser.js:8"}, "properties": {"repobilityId": "724b4147caa3636f", "scanner": "scanner-primary", "fingerprint": "b4871b73e1986397", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-22060e44cb0ead06", "level": "none", "message": {"text": "Commented-code block (5 lines) in chat-service/claims/claimEventService.js:3"}, "properties": {"repobilityId": "c01123b119127c3a", "scanner": "scanner-primary", "fingerprint": "22060e44cb0ead06", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-11362bb39498ec65", "level": "none", "message": {"text": "Commented-code block (5 lines) in chat-service/moderation/moderationService.js:3"}, "properties": {"repobilityId": "20dd79cfdb3843c0", "scanner": "scanner-primary", "fingerprint": "11362bb39498ec65", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b21fe6a8f8db83e", "level": "none", "message": {"text": "Commented-code block (5 lines) in chat-service/votes/swapVote.js:3"}, "properties": {"repobilityId": "c331b9b8e569c2cc", "scanner": "scanner-primary", "fingerprint": "6b21fe6a8f8db83e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bebbdad62e622c2d", "level": "none", "message": {"text": "Commented-code block (5 lines) in chat-service/votes/skipVote.js:8"}, "properties": {"repobilityId": "f8d7cb2259059e34", "scanner": "scanner-primary", "fingerprint": "bebbdad62e622c2d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a6cd7ba8d031fde0", "level": "none", "message": {"text": "Commented-code block (9 lines) in chat-service/votes/voteService.js:3"}, "properties": {"repobilityId": "effd473feea6722d", "scanner": "scanner-primary", "fingerprint": "a6cd7ba8d031fde0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7bee02a6b29c275e", "level": "none", "message": {"text": "Commented-code block (5 lines) in chat-service/votes/reduceVote.js:3"}, "properties": {"repobilityId": "25b42233266e1c1c", "scanner": "scanner-primary", "fingerprint": "7bee02a6b29c275e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2b2dcaa54929733f", "level": "none", "message": {"text": "Commented-code block (15 lines) in chat-service/core/socketHandlers.js:3"}, "properties": {"repobilityId": "34be8fe960d17000", "scanner": "scanner-primary", "fingerprint": "2b2dcaa54929733f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0e3e6d9ab01ea953", "level": "none", "message": {"text": "Commented-code block (5 lines) in chat-service/core/adminCommands.js:3"}, "properties": {"repobilityId": "28d347310c211610", "scanner": "scanner-primary", "fingerprint": "0e3e6d9ab01ea953", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b19d0d48d6126876", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/index.js:1"}, "properties": {"repobilityId": "4867cde3dcd837cb", "scanner": "scanner-primary", "fingerprint": "b19d0d48d6126876", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2f6af7735e6b48d", "level": "none", "message": {"text": "Commented-code block (10 lines) in server/tests/StreamService.test.js:145"}, "properties": {"repobilityId": "72beeafe95a122c1", "scanner": "scanner-primary", "fingerprint": "f2f6af7735e6b48d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e1ce45ee31306b32", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/TakeoverService.test.js:104"}, "properties": {"repobilityId": "e1d83dc3b9968677", "scanner": "scanner-primary", "fingerprint": "e1ce45ee31306b32", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b5d604d6a98ecbf", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/tests/integration/recording-cleanup.upload-race.integration.test.js:136"}, "properties": {"repobilityId": "d4ef966836b42f60", "scanner": "scanner-primary", "fingerprint": "7b5d604d6a98ecbf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4ee14f270bc1d171", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/tests/integration/routes.internal.gift.integration.test.js:66"}, "properties": {"repobilityId": "075531f5013680a5", "scanner": "scanner-primary", "fingerprint": "4ee14f270bc1d171", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85e2dc42ce1cc6a0", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/tests/integration/routes.internal.points.integration.test.js:69"}, "properties": {"repobilityId": "f4ea6487344277de", "scanner": "scanner-primary", "fingerprint": "85e2dc42ce1cc6a0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6e148307051ddfa9", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/tests/bootstrap/services.test.js:4"}, "properties": {"repobilityId": "9218dab7916968d0", "scanner": "scanner-primary", "fingerprint": "6e148307051ddfa9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f28e2d22f13567e7", "level": "none", "message": {"text": "Commented-code block (13 lines) in server/tests/bootstrap/start-streaming-backend.test.js:3"}, "properties": {"repobilityId": "c01ba99ce727553e", "scanner": "scanner-primary", "fingerprint": "f28e2d22f13567e7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-59fde01eeea29ed3", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/database/database-better.bettersqlite.test.js:61"}, "properties": {"repobilityId": "54fe8a8f0456a152", "scanner": "scanner-primary", "fingerprint": "59fde01eeea29ed3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-88f54ed9b726ac2e", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/tests/database/migrations.runner.test.js:103"}, "properties": {"repobilityId": "56f4512b824a2dc3", "scanner": "scanner-primary", "fingerprint": "88f54ed9b726ac2e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c505ff87fb4136a", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/routes/auth.characterization.test.js:435"}, "properties": {"repobilityId": "e38018c295e80a6c", "scanner": "scanner-primary", "fingerprint": "6c505ff87fb4136a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-03c4bd7477dc5d85", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/routes/internal.characterization.test.js:203"}, "properties": {"repobilityId": "de01644c043c2e40", "scanner": "scanner-primary", "fingerprint": "03c4bd7477dc5d85", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9cad103bacd171ab", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/tests/sockets/StreamHandler.characterization.test.js:455"}, "properties": {"repobilityId": "b7f8c9f7b1a1319b", "scanner": "scanner-primary", "fingerprint": "9cad103bacd171ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6dc86965bfa3d857", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/tests/services/BuffDebuffService.characterization.test.js:3"}, "properties": {"repobilityId": "71bfbaf562e6d6f3", "scanner": "scanner-primary", "fingerprint": "6dc86965bfa3d857", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4c2320e4d2ca5160", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/tests/services/ModerationNotifier.test.js:4"}, "properties": {"repobilityId": "a3408fbc7e8c24aa", "scanner": "scanner-primary", "fingerprint": "4c2320e4d2ca5160", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a5cfa7efb508c9df", "level": "none", "message": {"text": "Commented-code block (14 lines) in server/tests/services/ModerationStage2.test.js:4"}, "properties": {"repobilityId": "675b0bc2fa62366e", "scanner": "scanner-primary", "fingerprint": "a5cfa7efb508c9df", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e7fea9ac9eb8ded0", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/tests/services/AccountLifecycleManager.purge.test.js:1"}, "properties": {"repobilityId": "9f5710708084ef0b", "scanner": "scanner-primary", "fingerprint": "e7fea9ac9eb8ded0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-117bdd878d77f72c", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/services/ProcessManager.reaper.test.js:430"}, "properties": {"repobilityId": "692d3d07d87a957c", "scanner": "scanner-primary", "fingerprint": "117bdd878d77f72c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-31cda48248884193", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/services/ShopService.purchaseItem.atomic.test.js:208"}, "properties": {"repobilityId": "8a0b586b755b798e", "scanner": "scanner-primary", "fingerprint": "31cda48248884193", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e953e60e643d5ef", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/tests/services/ModerationActionArbiter.test.js:5"}, "properties": {"repobilityId": "0feea4e7cf689a26", "scanner": "scanner-primary", "fingerprint": "2e953e60e643d5ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3a11dfd164a25e31", "level": "note", "message": {"text": "Legacy-named symbol `anon_old` in server/tests/services/AnonymousBuffStore.expiry.test.js:51"}, "properties": {"repobilityId": "358679ab4fd53b2d", "scanner": "scanner-primary", "fingerprint": "3a11dfd164a25e31", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b0d12f1ae6386e02", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/tests/services/ViewBotLiveKitService.characterization.test.js:4"}, "properties": {"repobilityId": "355ce01f7984b6ca", "scanner": "scanner-primary", "fingerprint": "b0d12f1ae6386e02", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb4f5db7855c4e3c", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/tests/services/VisionBotService.test.js:168"}, "properties": {"repobilityId": "1492bd9a46d142bd", "scanner": "scanner-primary", "fingerprint": "cb4f5db7855c4e3c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7bdd3bddb4bf2c60", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/services/ShopService.purchaseItem.realAccount.test.js:287"}, "properties": {"repobilityId": "285589a27d467466", "scanner": "scanner-primary", "fingerprint": "7bdd3bddb4bf2c60", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d58ef245fecd2230", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/services/InventoryService.giftItem.test.js:1"}, "properties": {"repobilityId": "fca6c5ec080fd340", "scanner": "scanner-primary", "fingerprint": "d58ef245fecd2230", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f0599355efaf2ca2", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/tests/services/KickRandomService.test.js:32"}, "properties": {"repobilityId": "d0797da848d1a205", "scanner": "scanner-primary", "fingerprint": "f0599355efaf2ca2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23caee3a406ada1a", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/tests/services/ContinuousRecordingService.cleanup-race.test.js:161"}, "properties": {"repobilityId": "b44aca7273a8e132", "scanner": "scanner-primary", "fingerprint": "23caee3a406ada1a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c7ff69a8e3666801", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/tests/services/ModerationStage3.test.js:4"}, "properties": {"repobilityId": "697ff19137c40bcd", "scanner": "scanner-primary", "fingerprint": "c7ff69a8e3666801", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ff3fe6bec781ab8", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/tests/services/ModerationStage1.test.js:212"}, "properties": {"repobilityId": "8738e5b4ef044f43", "scanner": "scanner-primary", "fingerprint": "1ff3fe6bec781ab8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-936834d0393af539", "level": "none", "message": {"text": "Commented-code block (18 lines) in server/tests/services/StreamNotifier.test.js:4"}, "properties": {"repobilityId": "2feb6e261ee3f6b7", "scanner": "scanner-primary", "fingerprint": "936834d0393af539", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18662ba791d856bc", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/services/ChatBotService.commentPaths.test.js:1"}, "properties": {"repobilityId": "849a538c12f4793d", "scanner": "scanner-primary", "fingerprint": "18662ba791d856bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c7b371eef49c45e", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/services/ModerationService.image.test.js:1"}, "properties": {"repobilityId": "00358b535a3fd06c", "scanner": "scanner-primary", "fingerprint": "7c7b371eef49c45e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-89e609d8dcef7200", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/services/BuffNotifier.test.js:1"}, "properties": {"repobilityId": "8dbc1fea6c12e03b", "scanner": "scanner-primary", "fingerprint": "89e609d8dcef7200", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4e2af861d5136b22", "level": "none", "message": {"text": "Commented-code block (13 lines) in server/tests/services/GameMechanicsService.test.js:4"}, "properties": {"repobilityId": "b123ae415a3e869c", "scanner": "scanner-primary", "fingerprint": "4e2af861d5136b22", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cf5344cffc10cc47", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/tests/services/ViewerCountNotifier.test.js:4"}, "properties": {"repobilityId": "74fe18a19c2a714a", "scanner": "scanner-primary", "fingerprint": "cf5344cffc10cc47", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52f579f49fd69e87", "level": "none", "message": {"text": "Commented-code block (10 lines) in server/tests/services/ModerationService.test.js:5"}, "properties": {"repobilityId": "e23e8fba68223bd0", "scanner": "scanner-primary", "fingerprint": "52f579f49fd69e87", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6d8b79f06294aeca", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/middleware/streamControlAuth.js:27"}, "properties": {"repobilityId": "9273d2bd63823459", "scanner": "scanner-primary", "fingerprint": "6d8b79f06294aeca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-80b02b98093d3ac0", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/bootstrap/services.js:3"}, "properties": {"repobilityId": "e58cf4f0be5fe192", "scanner": "scanner-primary", "fingerprint": "80b02b98093d3ac0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e1407cbfbcbb4ed5", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/bootstrap/shutdown.js:71"}, "properties": {"repobilityId": "3d4ad414cfb6a447", "scanner": "scanner-primary", "fingerprint": "e1407cbfbcbb4ed5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d7f6a941c6956447", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/bootstrap/start-listeners.js:46"}, "properties": {"repobilityId": "983b001f44e3c99f", "scanner": "scanner-primary", "fingerprint": "d7f6a941c6956447", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-41628c54b9c80161", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/bootstrap/start-streaming-backend.js:134"}, "properties": {"repobilityId": "9ac530c2c4984917", "scanner": "scanner-primary", "fingerprint": "41628c54b9c80161", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2faf76c847538bc0", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/database/database-better.js:81"}, "properties": {"repobilityId": "ecdfd43211d7662d", "scanner": "scanner-primary", "fingerprint": "2faf76c847538bc0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6549c6b60abfbd24", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/database/transaction.js:79"}, "properties": {"repobilityId": "91cc83417502b045", "scanner": "scanner-primary", "fingerprint": "6549c6b60abfbd24", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-78cac7baa646f3ab", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/database/database.js:471"}, "properties": {"repobilityId": "7533fb4aeda2da52", "scanner": "scanner-primary", "fingerprint": "78cac7baa646f3ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-42e86c8999f0b4b4", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/database/repository/ChatBotRepository.js:34"}, "properties": {"repobilityId": "167385d7677beb59", "scanner": "scanner-primary", "fingerprint": "42e86c8999f0b4b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4578c780c2309bed", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/database/repository/ContinuousRecordingRepository.js:199"}, "properties": {"repobilityId": "ed9fca7bad0f69df", "scanner": "scanner-primary", "fingerprint": "4578c780c2309bed", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dcfd1eb507997dce", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/database/repository/UserRepository.js:130"}, "properties": {"repobilityId": "7ab5878a7b5edd0b", "scanner": "scanner-primary", "fingerprint": "dcfd1eb507997dce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e0c15cd0e3ffdd84", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/admin-moderation.js:452"}, "properties": {"repobilityId": "d1100dda4779aac0", "scanner": "scanner-primary", "fingerprint": "e0c15cd0e3ffdd84", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-308d551e4b4b7ea5", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/routes/media.js:16"}, "properties": {"repobilityId": "4f61e04eaf023fa8", "scanner": "scanner-primary", "fingerprint": "308d551e4b4b7ea5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a3ebdd468faaf8e0", "level": "none", "message": {"text": "Commented-code block (10 lines) in server/routes/auth.js:65"}, "properties": {"repobilityId": "0290b7ad5ce15472", "scanner": "scanner-primary", "fingerprint": "a3ebdd468faaf8e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-086e61cdf8e68020", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/admin-ai.js:203"}, "properties": {"repobilityId": "ec0c7a12a4256d08", "scanner": "scanner-primary", "fingerprint": "086e61cdf8e68020", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a81312f0fac90377", "level": "none", "message": {"text": "Commented-code block (11 lines) in server/routes/internal.js:8"}, "properties": {"repobilityId": "24374cf79c1a1895", "scanner": "scanner-primary", "fingerprint": "a81312f0fac90377", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8533099f4a63cb85", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/routes/items.js:25"}, "properties": {"repobilityId": "ab76fbdf5a0b0375", "scanner": "scanner-primary", "fingerprint": "8533099f4a63cb85", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-417aeb840e45378d", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/moderation-ai.js:96"}, "properties": {"repobilityId": "48f24a77d209b2a9", "scanner": "scanner-primary", "fingerprint": "417aeb840e45378d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-41cd665926b61fb2", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/admin-recordings/context.js:21"}, "properties": {"repobilityId": "65c0e42ccacf0275", "scanner": "scanner-primary", "fingerprint": "41cd665926b61fb2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b95dbbb12351dcbe", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/auth/session.js:6"}, "properties": {"repobilityId": "9d8689a1de49b1dc", "scanner": "scanner-primary", "fingerprint": "b95dbbb12351dcbe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d52345bc85bbd10d", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/auth/oauth.js:4"}, "properties": {"repobilityId": "72bf8e014d548970", "scanner": "scanner-primary", "fingerprint": "d52345bc85bbd10d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-41c2eb394f47d1bf", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/auth/register.js:5"}, "properties": {"repobilityId": "e18bdf650cc1e5b8", "scanner": "scanner-primary", "fingerprint": "41c2eb394f47d1bf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8966d6c288bd0bda", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/internal/points.js:3"}, "properties": {"repobilityId": "a328570202cf89ad", "scanner": "scanner-primary", "fingerprint": "8966d6c288bd0bda", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-65fc3788b076a89e", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/internal/callbacks.js:3"}, "properties": {"repobilityId": "273b4145f23c04fc", "scanner": "scanner-primary", "fingerprint": "65fc3788b076a89e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-068ef42c28d12d70", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/internal/gift.js:3"}, "properties": {"repobilityId": "da90d61244aceac3", "scanner": "scanner-primary", "fingerprint": "068ef42c28d12d70", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51189657bb581672", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/sockets/DisconnectHandler.js:131"}, "properties": {"repobilityId": "c99172a84ae51f39", "scanner": "scanner-primary", "fingerprint": "51189657bb581672", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3adce50cdddf6377", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/sockets/streamHandler/takeover.js:183"}, "properties": {"repobilityId": "adaa7a2183114cfd", "scanner": "scanner-primary", "fingerprint": "3adce50cdddf6377", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-09402d71f3aa3a95", "level": "none", "message": {"text": "Commented-code block (10 lines) in server/services/StreamNotifier.js:8"}, "properties": {"repobilityId": "1c978f70fb7838af", "scanner": "scanner-primary", "fingerprint": "09402d71f3aa3a95", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d6546642b8ff9f5", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/EgressFrameCaptureService.js:29"}, "properties": {"repobilityId": "9ab4d5d591604021", "scanner": "scanner-primary", "fingerprint": "7d6546642b8ff9f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c77bae9217ae1d0e", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/WhitelistEnforcer.js:195"}, "properties": {"repobilityId": "05e539c7d933df51", "scanner": "scanner-primary", "fingerprint": "c77bae9217ae1d0e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2b79364168883e6e", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/services/ContinuousRecordingService.js:230"}, "properties": {"repobilityId": "e257126beba7a16a", "scanner": "scanner-primary", "fingerprint": "2b79364168883e6e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-27390119a3be1e25", "level": "none", "message": {"text": "Commented-code block (10 lines) in server/services/kick-api-helper.py:12"}, "properties": {"repobilityId": "f504e5ceeefd09f6", "scanner": "scanner-primary", "fingerprint": "27390119a3be1e25", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-173290b4c234051b", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/WhitelistService.js:255"}, "properties": {"repobilityId": "666007f4b3b581da", "scanner": "scanner-primary", "fingerprint": "173290b4c234051b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3c1b268e549546e0", "level": "none", "message": {"text": "Commented-code block (11 lines) in server/services/StreamService.js:9"}, "properties": {"repobilityId": "bb1bdb501acc0ff9", "scanner": "scanner-primary", "fingerprint": "3c1b268e549546e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de9fbcc2c147b81a", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/URLStreamExtractorService.js:316"}, "properties": {"repobilityId": "d8537dcff13f27b2", "scanner": "scanner-primary", "fingerprint": "de9fbcc2c147b81a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b921a60e5e281e41", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/ProcessManager.js:200"}, "properties": {"repobilityId": "d374d81f0a64641b", "scanner": "scanner-primary", "fingerprint": "b921a60e5e281e41", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9e9d1595f57fe4c4", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/ModerationStage3.js:5"}, "properties": {"repobilityId": "8c76bcb8e5e2e926", "scanner": "scanner-primary", "fingerprint": "9e9d1595f57fe4c4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-64e28bce4b922270", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/services/ModerationStage2.js:11"}, "properties": {"repobilityId": "38921fef4de1bcf8", "scanner": "scanner-primary", "fingerprint": "64e28bce4b922270", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-032e345e41cfb1f1", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/services/ItemUseService.js:17"}, "properties": {"repobilityId": "c1c4d190bff52d13", "scanner": "scanner-primary", "fingerprint": "032e345e41cfb1f1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-380de16242b1b0d2", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/GameMechanicsService.js:7"}, "properties": {"repobilityId": "5a0520d3e7e4518e", "scanner": "scanner-primary", "fingerprint": "380de16242b1b0d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c101e2ed12dbef4", "level": "note", "message": {"text": "Legacy-named symbol `daysOld` in server/services/TranscriptionService.js:499"}, "properties": {"repobilityId": "1c269fadf4e664b2", "scanner": "scanner-primary", "fingerprint": "6c101e2ed12dbef4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3877481b848cfc0b", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/ChatBotService.js:37"}, "properties": {"repobilityId": "4330378fe33a38a1", "scanner": "scanner-primary", "fingerprint": "3877481b848cfc0b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff588fd3d5cd3e00", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/RandomStreamRotationService.js:49"}, "properties": {"repobilityId": "1267514a4378fde3", "scanner": "scanner-primary", "fingerprint": "ff588fd3d5cd3e00", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-26220c0323e24abd", "level": "none", "message": {"text": "Commented-code block (16 lines) in server/services/BuffNotifier.js:11"}, "properties": {"repobilityId": "4db4fc5702b8a5e0", "scanner": "scanner-primary", "fingerprint": "26220c0323e24abd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-996522159c9ec48b", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/VisionBotService.js:99"}, "properties": {"repobilityId": "93fd980426e455a4", "scanner": "scanner-primary", "fingerprint": "996522159c9ec48b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-499c482a3ad8f0d1", "level": "none", "message": {"text": "Commented-code block (12 lines) in server/services/TranscriptionDrivenBotService.js:201"}, "properties": {"repobilityId": "ec70975bf4e5a885", "scanner": "scanner-primary", "fingerprint": "499c482a3ad8f0d1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef771451de347a5d", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/DrawingService.js:5"}, "properties": {"repobilityId": "836bc7cda3b968c3", "scanner": "scanner-primary", "fingerprint": "ef771451de347a5d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2de0e49a057d3624", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/ChatNotifier.js:3"}, "properties": {"repobilityId": "59b37aa09d5326fe", "scanner": "scanner-primary", "fingerprint": "2de0e49a057d3624", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0e84bc83b78317ca", "level": "none", "message": {"text": "Commented-code block (11 lines) in server/services/ShopService.js:175"}, "properties": {"repobilityId": "baee6748c043c58f", "scanner": "scanner-primary", "fingerprint": "0e84bc83b78317ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-74f415b25f118906", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/ModerationNotifier.js:10"}, "properties": {"repobilityId": "733d9f5fc93a56ff", "scanner": "scanner-primary", "fingerprint": "74f415b25f118906", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-33b637d69ddb9906", "level": "none", "message": {"text": "Commented-code block (20 lines) in server/services/ModerationService.js:8"}, "properties": {"repobilityId": "ddfd0298258088f6", "scanner": "scanner-primary", "fingerprint": "33b637d69ddb9906", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c9c1a8f7ac19b23e", "level": "none", "message": {"text": "Commented-code block (10 lines) in server/services/RecordingCleanupScheduler.js:16"}, "properties": {"repobilityId": "a9359c81b8f3abb3", "scanner": "scanner-primary", "fingerprint": "c9c1a8f7ac19b23e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-96ddfc74a628882a", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/ClipService.js:24"}, "properties": {"repobilityId": "ab7df44a21b35139", "scanner": "scanner-primary", "fingerprint": "96ddfc74a628882a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-804884c2f767dc61", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/LifecycleManager.js:119"}, "properties": {"repobilityId": "697d652dae4b57fa", "scanner": "scanner-primary", "fingerprint": "804884c2f767dc61", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-877408dd99af058f", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/ViewerCountNotifier.js:7"}, "properties": {"repobilityId": "c73aaeda54cea038", "scanner": "scanner-primary", "fingerprint": "877408dd99af058f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b3507396f3d6966d", "level": "note", "message": {"text": "Legacy-named symbol `daysOld` in server/services/URLStreamDatabaseService.js:425"}, "properties": {"repobilityId": "6252ee360572afe4", "scanner": "scanner-primary", "fingerprint": "b3507396f3d6966d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a9c1546f6711c862", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/ThrowingService.js:6"}, "properties": {"repobilityId": "636d9e03938fde2b", "scanner": "scanner-primary", "fingerprint": "a9c1546f6711c862", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16de8a7b54c30de6", "level": "none", "message": {"text": "Commented-code block (10 lines) in server/services/ModerationStage1.js:15"}, "properties": {"repobilityId": "641933800ba7be2a", "scanner": "scanner-primary", "fingerprint": "16de8a7b54c30de6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3515723ac1ce9087", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/TwitchRandomService.js:275"}, "properties": {"repobilityId": "0d0d6dec22c7981e", "scanner": "scanner-primary", "fingerprint": "3515723ac1ce9087", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-169b1faca1018c3e", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/InventoryService.js:6"}, "properties": {"repobilityId": "68124ba70d350b7a", "scanner": "scanner-primary", "fingerprint": "169b1faca1018c3e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b50a477460b4ba4d", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/ItemService.js:21"}, "properties": {"repobilityId": "cca079438b979093", "scanner": "scanner-primary", "fingerprint": "b50a477460b4ba4d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f0f2180822b545b2", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/ViewBotLiveKitService.js:347"}, "properties": {"repobilityId": "b94cde5a4486370e", "scanner": "scanner-primary", "fingerprint": "f0f2180822b545b2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb29262766815e45", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/AccountService.js:15"}, "properties": {"repobilityId": "c09a894305f3bb3f", "scanner": "scanner-primary", "fingerprint": "cb29262766815e45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d6d426d181b82ba2", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/ModerationActionArbiter.js:8"}, "properties": {"repobilityId": "977124a7eef4e6f1", "scanner": "scanner-primary", "fingerprint": "d6d426d181b82ba2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4c21ca8f6ef8af6", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/recording/RecordingDiskScanner.js:112"}, "properties": {"repobilityId": "82fc26f54602fc17", "scanner": "scanner-primary", "fingerprint": "d4c21ca8f6ef8af6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f152aa39d5ec7ed2", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/buffdebuff/AnonymousBuffStore.js:25"}, "properties": {"repobilityId": "4e03e076c2d5569f", "scanner": "scanner-primary", "fingerprint": "f152aa39d5ec7ed2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6291e29a44464d72", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/services/canvasfx/EffectRegistry.js:20"}, "properties": {"repobilityId": "fce75b788e4e97ed", "scanner": "scanner-primary", "fingerprint": "6291e29a44464d72", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4756fe73b95d86d1", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/itemUse/BuffDebuffHandler.js:104"}, "properties": {"repobilityId": "d784011de0c0cb83", "scanner": "scanner-primary", "fingerprint": "4756fe73b95d86d1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3919d0eee9fc5987", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/streambot/AutoSummonManager.js:112"}, "properties": {"repobilityId": "3ad6e2fc741fa319", "scanner": "scanner-primary", "fingerprint": "3919d0eee9fc5987", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3cdae8e722845e3a", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/viewbot/ffmpegArgs.js:99"}, "properties": {"repobilityId": "703c4f741b175307", "scanner": "scanner-primary", "fingerprint": "3cdae8e722845e3a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7dcbe45990705722", "level": "none", "message": {"text": "Commented-code block (10 lines) in server/services/chatbot/BotBulkAdmin.js:1"}, "properties": {"repobilityId": "fb0b7c0d521bfb07", "scanner": "scanner-primary", "fingerprint": "7dcbe45990705722", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-733df19a62b14c91", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/chatbot/movieBotRoster.js:1"}, "properties": {"repobilityId": "eb8e3394e8c94917", "scanner": "scanner-primary", "fingerprint": "733df19a62b14c91", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fe55006bb28fb9c7", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/chatbot/TemporaryBotManager.js:1"}, "properties": {"repobilityId": "ea881113d59dae10", "scanner": "scanner-primary", "fingerprint": "fe55006bb28fb9c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cde5300f17c42033", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/services/chatbot/BotMessageDispatch.js:1"}, "properties": {"repobilityId": "c5850aed773022c9", "scanner": "scanner-primary", "fingerprint": "cde5300f17c42033", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0187814a342b8cee", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/chatbot/llm/groqClient.js:268"}, "properties": {"repobilityId": "3d0e9cd1445d5107", "scanner": "scanner-primary", "fingerprint": "0187814a342b8cee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-33b55b007bfb7ef4", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/moderation/SchemaSeed.js:66"}, "properties": {"repobilityId": "f0755624e5796724", "scanner": "scanner-primary", "fingerprint": "33b55b007bfb7ef4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab1e6284c4b9cc5b", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/moderation/ImageModerationConfig.js:10"}, "properties": {"repobilityId": "556d73ac554f05e6", "scanner": "scanner-primary", "fingerprint": "ab1e6284c4b9cc5b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-940336886e6447b3", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/random-stream/RotationScheduler.js:69"}, "properties": {"repobilityId": "a246e727110454d7", "scanner": "scanner-primary", "fingerprint": "940336886e6447b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-346e540b8f96786a", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/services/transcription/WhisperRunner.js:39"}, "properties": {"repobilityId": "dbd0d6c9f36cdd3c", "scanner": "scanner-primary", "fingerprint": "346e540b8f96786a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8a2a3203d6e76fde", "level": "note", "message": {"text": "Legacy-named symbol `daysOld` in server/services/transcription/TranscriptionRepository.js:196"}, "properties": {"repobilityId": "313ad1e8b95bf8d1", "scanner": "scanner-primary", "fingerprint": "8a2a3203d6e76fde", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2c1a46169ffdcc7b", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/item/resolveCurrentStreamerUserId.js:68"}, "properties": {"repobilityId": "407e59d82661cb89", "scanner": "scanner-primary", "fingerprint": "2c1a46169ffdcc7b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d53ff9975cece342", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/account/PointsManager.js:69"}, "properties": {"repobilityId": "48ccc3f23db9ae40", "scanner": "scanner-primary", "fingerprint": "d53ff9975cece342", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f1b5ad2f99bfaf94", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/account/AccountLifecycleManager.js:74"}, "properties": {"repobilityId": "7f2b83ceeb4c6c1d", "scanner": "scanner-primary", "fingerprint": "f1b5ad2f99bfaf94", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-44aff6dc54f3583e", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/llm/modelCatalog.js:198"}, "properties": {"repobilityId": "561f3ad935eadc34", "scanner": "scanner-primary", "fingerprint": "44aff6dc54f3583e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef22fd58bfde6f76", "level": "note", "message": {"text": "51 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "3022eac3b673b267", "scanner": "scanner-primary", "fingerprint": "ef22fd58bfde6f76", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-23097e513466fe0b", "level": "warning", "message": {"text": "Frontend route `${Q}` has no Link/navigate to it \u2014 blog/assets/index-DUiMp6_W.js"}, "properties": {"repobilityId": "f134f3f003805771", "scanner": "scanner-primary", "fingerprint": "23097e513466fe0b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-741bb6a930f7c30c", "level": "warning", "message": {"text": "Frontend route `${Q===` has no Link/navigate to it \u2014 blog/assets/index-DUiMp6_W.js"}, "properties": {"repobilityId": "3c273704d726318f", "scanner": "scanner-primary", "fingerprint": "741bb6a930f7c30c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-9b2b680a8011a9b0", "level": "error", "message": {"text": "Dangling fetch: POST /api/bug-reports (client/src/components/BugReportModal.tsx:58)"}, "properties": {"repobilityId": "2b5096ce85decdcf", "scanner": "scanner-primary", "fingerprint": "9b2b680a8011a9b0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f2a5f0e9d3ed3faf", "level": "error", "message": {"text": "Dangling fetch: GET /admin/viewbot/rotation/status (client/src/components/BotsPanel.tsx:107)"}, "properties": {"repobilityId": "ff34a317db14d5a0", "scanner": "scanner-primary", "fingerprint": "f2a5f0e9d3ed3faf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8696f4c5d117ce7c", "level": "error", "message": {"text": "Dangling fetch: GET /api/chatbots (client/src/components/BotsPanel.tsx:129)"}, "properties": {"repobilityId": "edad9d881850637e", "scanner": "scanner-primary", "fingerprint": "8696f4c5d117ce7c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7b88a293bd98ceef", "level": "error", "message": {"text": "Dangling fetch: POST /admin/viewbot/rotation/force (client/src/components/BotsPanel.tsx:213)"}, "properties": {"repobilityId": "645d182154e6d5ba", "scanner": "scanner-primary", "fingerprint": "7b88a293bd98ceef", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d5321d796bd28b75", "level": "error", "message": {"text": "Dangling fetch: GET /api/streambot/settings (client/src/components/StreamBotManager.tsx:42)"}, "properties": {"repobilityId": "c3653c58ab0406ca", "scanner": "scanner-primary", "fingerprint": "d5321d796bd28b75", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-49fde1968cc41c4d", "level": "error", "message": {"text": "Dangling fetch: GET /api/streambot/messages (client/src/components/StreamBotManager.tsx:55)"}, "properties": {"repobilityId": "70b14646382552af", "scanner": "scanner-primary", "fingerprint": "49fde1968cc41c4d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-89124392d68535d8", "level": "error", "message": {"text": "Dangling fetch: POST /api/streambot/toggle (client/src/components/StreamBotManager.tsx:76)"}, "properties": {"repobilityId": "f299d7986a580e9d", "scanner": "scanner-primary", "fingerprint": "89124392d68535d8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f965527499d598c8", "level": "error", "message": {"text": "Dangling fetch: PUT /api/streambot/settings (client/src/components/StreamBotManager.tsx:100)"}, "properties": {"repobilityId": "4c0f30dcc5d223c9", "scanner": "scanner-primary", "fingerprint": "f965527499d598c8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a4d3428a16316cde", "level": "error", "message": {"text": "Dangling fetch: POST /api/streambot/messages (client/src/components/StreamBotManager.tsx:126)"}, "properties": {"repobilityId": "b1275b64d6e4a4da", "scanner": "scanner-primary", "fingerprint": "a4d3428a16316cde", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b39094202a5e08af", "level": "error", "message": {"text": "Dangling fetch: PUT /api/streambot/messages/${editingMessage.id} (client/src/components/StreamBotManager.tsx:153)"}, "properties": {"repobilityId": "531a211b26afe919", "scanner": "scanner-primary", "fingerprint": "b39094202a5e08af", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fda19253f10b3aa2", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/streambot/messages/${id} (client/src/components/StreamBotManager.tsx:181)"}, "properties": {"repobilityId": "6be17acccc1ba07b", "scanner": "scanner-primary", "fingerprint": "fda19253f10b3aa2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-23fbcb30c762fe85", "level": "error", "message": {"text": "Dangling fetch: POST /api/streambot/messages/${id}/toggle (client/src/components/StreamBotManager.tsx:202)"}, "properties": {"repobilityId": "70246b5cd5aa4d44", "scanner": "scanner-primary", "fingerprint": "23fbcb30c762fe85", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e02b6c8eeceec287", "level": "error", "message": {"text": "Dangling fetch: POST /api/streambot/messages/reorder (client/src/components/StreamBotManager.tsx:236)"}, "properties": {"repobilityId": "dbd10f75c675bfb6", "scanner": "scanner-primary", "fingerprint": "e02b6c8eeceec287", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2af4a87b38fed4e5", "level": "error", "message": {"text": "Dangling fetch: POST /api/streambot/test (client/src/components/StreamBotManager.tsx:258)"}, "properties": {"repobilityId": "59fdd69f634bf521", "scanner": "scanner-primary", "fingerprint": "2af4a87b38fed4e5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-637f0d24bba9ed5c", "level": "error", "message": {"text": "Dangling fetch: POST /api/soundfx/item/tts (client/src/components/inventory/inventoryPanel/useInventory.ts:322)"}, "properties": {"repobilityId": "e73b8eebdb3ed2ca", "scanner": "scanner-primary", "fingerprint": "637f0d24bba9ed5c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e79b4d20ebb02580", "level": "error", "message": {"text": "Dangling fetch: POST /api/soundfx/item/soundboard (client/src/components/inventory/inventoryPanel/useInventory.ts:428)"}, "properties": {"repobilityId": "8f49d7dd31cae0cb", "scanner": "scanner-primary", "fingerprint": "e79b4d20ebb02580", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4f47d8a94b92e06f", "level": "error", "message": {"text": "Dangling fetch: GET /auth/check-username/${encodeURIComponent(username)} (client/src/components/auth/OAuthUsernameSelection.tsx:79)"}, "properties": {"repobilityId": "293cfe482c7491eb", "scanner": "scanner-primary", "fingerprint": "4f47d8a94b92e06f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-45394cd9dab44085", "level": "error", "message": {"text": "Dangling fetch: POST /auth/complete-oauth-registration (client/src/components/auth/OAuthUsernameSelection.tsx:120)"}, "properties": {"repobilityId": "fa661432bb542ecc", "scanner": "scanner-primary", "fingerprint": "45394cd9dab44085", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dfc7a00833d52e42", "level": "error", "message": {"text": "Dangling fetch: GET /api/clips/status (client/src/components/mobile/MobileBottomNav.tsx:89)"}, "properties": {"repobilityId": "40fcd0765e5a2c0d", "scanner": "scanner-primary", "fingerprint": "dfc7a00833d52e42", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-32f33095a4d88f60", "level": "error", "message": {"text": "Dangling fetch: GET /api/clips/status (client/src/components/mobile/MobileLandscapeLayout.tsx:308)"}, "properties": {"repobilityId": "7986bdf3f35d5f5c", "scanner": "scanner-primary", "fingerprint": "32f33095a4d88f60", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-47a613be23443242", "level": "error", "message": {"text": "Dangling fetch: GET /api/clips/status (client/src/components/stream/TheatreControls.tsx:100)"}, "properties": {"repobilityId": "3693b605deb95c32", "scanner": "scanner-primary", "fingerprint": "47a613be23443242", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8966e9312e8a967c", "level": "error", "message": {"text": "Dangling fetch: GET /api/soundfx/voices (client/src/components/soundfx/TTSInputModal.tsx:50)"}, "properties": {"repobilityId": "3bcd6e532fa00142", "scanner": "scanner-primary", "fingerprint": "8966e9312e8a967c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a78a7a17efc0c08e", "level": "error", "message": {"text": "Dangling fetch: POST /api/moderation/ban-chat (client/src/components/user/UserInfoPopup.tsx:140)"}, "properties": {"repobilityId": "6d9ca99062dd4f99", "scanner": "scanner-primary", "fingerprint": "a78a7a17efc0c08e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4ff886521fae827f", "level": "error", "message": {"text": "Dangling fetch: POST /api/moderation/timeout (client/src/components/user/UserInfoPopup.tsx:173)"}, "properties": {"repobilityId": "b49d578ae2f295bd", "scanner": "scanner-primary", "fingerprint": "4ff886521fae827f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0626405a246fd7b1", "level": "error", "message": {"text": "Dangling fetch: POST /api/moderation/ban-streamer (client/src/components/user/UserInfoPopup.tsx:206)"}, "properties": {"repobilityId": "f26fe2da79b29441", "scanner": "scanner-primary", "fingerprint": "0626405a246fd7b1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-17158bc838a804f5", "level": "error", "message": {"text": "Dangling fetch: POST /api/clips/live (client/src/components/clips/ClipCreationModal.tsx:102)"}, "properties": {"repobilityId": "294610d43cf681b7", "scanner": "scanner-primary", "fingerprint": "17158bc838a804f5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5f73ac869fd5069d", "level": "error", "message": {"text": "Dangling fetch: GET /api/clips?${params.toString()} (client/src/components/clips/ClipsGallery.tsx:69)"}, "properties": {"repobilityId": "5551215db7da36b1", "scanner": "scanner-primary", "fingerprint": "5f73ac869fd5069d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5e66d25837f5ebfc", "level": "error", "message": {"text": "Dangling fetch: GET /api/clips/${clipId}/chat (client/src/components/clips/ClipChatReplay.tsx:38)"}, "properties": {"repobilityId": "f301943f5931f5a1", "scanner": "scanner-primary", "fingerprint": "5e66d25837f5ebfc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a0049a8735f9932e", "level": "error", "message": {"text": "Dangling fetch: GET /api/buffs/streamer/current (client/src/components/buffs/BuffDisplay.tsx:227)"}, "properties": {"repobilityId": "6363b74933e574bf", "scanner": "scanner-primary", "fingerprint": "a0049a8735f9932e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dde3adb27bf7eebe", "level": "note", "message": {"text": "Unused endpoint: USE /api"}, "properties": {"repobilityId": "de7b5dac85bb39cd", "scanner": "scanner-primary", "fingerprint": "dde3adb27bf7eebe", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b28d92215a503990", "level": "note", "message": {"text": "Unused endpoint: USE /auth"}, "properties": {"repobilityId": "dfb79eac0941b5df", "scanner": "scanner-primary", "fingerprint": "b28d92215a503990", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b2d8849fb6b1ac47", "level": "note", "message": {"text": "Unused endpoint: USE /admin"}, "properties": {"repobilityId": "e4cdfc15913d08d5", "scanner": "scanner-primary", "fingerprint": "b2d8849fb6b1ac47", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-00759fdf0a2ee599", "level": "note", "message": {"text": "Unused endpoint: USE /socket.io"}, "properties": {"repobilityId": "eb221d585331cd1e", "scanner": "scanner-primary", "fingerprint": "00759fdf0a2ee599", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3bf7c93f75b9b89c", "level": "note", "message": {"text": "Unused endpoint: USE /chat/socket.io"}, "properties": {"repobilityId": "4cc83420b3b21086", "scanner": "scanner-primary", "fingerprint": "3bf7c93f75b9b89c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1bc898b3b7565990", "level": "note", "message": {"text": "Unused endpoint: USE /uploads"}, "properties": {"repobilityId": "624c9da82f9b1d3c", "scanner": "scanner-primary", "fingerprint": "1bc898b3b7565990", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-00044d6aa273d8c8", "level": "note", "message": {"text": "Unused endpoint: USE /debug"}, "properties": {"repobilityId": "1a87973209e97f09", "scanner": "scanner-primary", "fingerprint": "00044d6aa273d8c8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9c34d159abc02e89", "level": "note", "message": {"text": "Unused endpoint: GET /api/moderation"}, "properties": {"repobilityId": "cd26e88b90c2a8c1", "scanner": "scanner-primary", "fingerprint": "9c34d159abc02e89", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a79c7fee9a26408c", "level": "note", "message": {"text": "Unused endpoint: POST /api/ban"}, "properties": {"repobilityId": "cfd04bcb5d90f045", "scanner": "scanner-primary", "fingerprint": "a79c7fee9a26408c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7d041e75488e7c5b", "level": "note", "message": {"text": "Unused endpoint: POST /api/unban"}, "properties": {"repobilityId": "433adc3a436fcfb8", "scanner": "scanner-primary", "fingerprint": "7d041e75488e7c5b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-877e7d7753e6ed80", "level": "note", "message": {"text": "Unused endpoint: POST /api/timeout"}, "properties": {"repobilityId": "82b9d41fa98450fa", "scanner": "scanner-primary", "fingerprint": "877e7d7753e6ed80", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e30688585a0b851e", "level": "note", "message": {"text": "Unused endpoint: POST /api/remove-timeout"}, "properties": {"repobilityId": "d8b776cd36adb408", "scanner": "scanner-primary", "fingerprint": "e30688585a0b851e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7cb1466f4e01b57f", "level": "note", "message": {"text": "Unused endpoint: POST /api/system-message"}, "properties": {"repobilityId": "a3af558e55067c9d", "scanner": "scanner-primary", "fingerprint": "7cb1466f4e01b57f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8c9aa75deb76a84e", "level": "note", "message": {"text": "Unused endpoint: GET /api/chat-history"}, "properties": {"repobilityId": "e9bce222ba1895a4", "scanner": "scanner-primary", "fingerprint": "8c9aa75deb76a84e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a748b4485be1a89b", "level": "note", "message": {"text": "Unused endpoint: USE /uploads/emojis"}, "properties": {"repobilityId": "0632d9a922dcbbb5", "scanner": "scanner-primary", "fingerprint": "a748b4485be1a89b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-63125ac6132d7f02", "level": "note", "message": {"text": "Unused endpoint: USE /uploads/avatars"}, "properties": {"repobilityId": "f0fb44718b41f5d7", "scanner": "scanner-primary", "fingerprint": "63125ac6132d7f02", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d45e60b3c8eba3ca", "level": "note", "message": {"text": "Unused endpoint: USE /api/moderation"}, "properties": {"repobilityId": "87e9b5c8d667c5fe", "scanner": "scanner-primary", "fingerprint": "d45e60b3c8eba3ca", "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": "b0385d6f41c67e22", "scanner": "scanner-primary", "fingerprint": "d93a530ce10d47d9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3a758a34a9e4c4ed", "level": "note", "message": {"text": "Unused endpoint: USE /api/buffs"}, "properties": {"repobilityId": "1d8038873ebdc2a5", "scanner": "scanner-primary", "fingerprint": "3a758a34a9e4c4ed", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e7ced40f2fddf085", "level": "note", "message": {"text": "Unused endpoint: USE /api/soundfx"}, "properties": {"repobilityId": "16072e3f51fd3bd4", "scanner": "scanner-primary", "fingerprint": "e7ced40f2fddf085", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-45a889dcdd6353ca", "level": "note", "message": {"text": "Unused endpoint: USE /api/chatbots"}, "properties": {"repobilityId": "1d0e4eb10762a9ec", "scanner": "scanner-primary", "fingerprint": "45a889dcdd6353ca", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-14deaf61d4fcd875", "level": "note", "message": {"text": "Unused endpoint: USE /api/streambot"}, "properties": {"repobilityId": "798dc8e5b7d72289", "scanner": "scanner-primary", "fingerprint": "14deaf61d4fcd875", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-da8f27b85e507798", "level": "note", "message": {"text": "Unused endpoint: USE /api/bug-reports"}, "properties": {"repobilityId": "40b87ff0355057e0", "scanner": "scanner-primary", "fingerprint": "da8f27b85e507798", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-db8143d01d97586d", "level": "note", "message": {"text": "Unused endpoint: USE /api/clips"}, "properties": {"repobilityId": "54fbb6f4163783a2", "scanner": "scanner-primary", "fingerprint": "db8143d01d97586d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0c7954712b8f3325", "level": "note", "message": {"text": "Unused endpoint: USE /api/turn"}, "properties": {"repobilityId": "d911c8b4de1fac0c", "scanner": "scanner-primary", "fingerprint": "0c7954712b8f3325", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-710931c0d5ba085c", "level": "note", "message": {"text": "Unused endpoint: USE /admin/review"}, "properties": {"repobilityId": "5156709e0d5e8a1c", "scanner": "scanner-primary", "fingerprint": "710931c0d5ba085c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a075e4ff619079cc", "level": "note", "message": {"text": "Unused endpoint: USE /api/tutorial"}, "properties": {"repobilityId": "81ed0879fe866e1c", "scanner": "scanner-primary", "fingerprint": "a075e4ff619079cc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-49606d79a5efc1a7", "level": "note", "message": {"text": "Unused endpoint: USE /api/audio"}, "properties": {"repobilityId": "dcfe5b0a0082088c", "scanner": "scanner-primary", "fingerprint": "49606d79a5efc1a7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bc11fac4f0bd0b4c", "level": "note", "message": {"text": "Unused endpoint: USE /hls"}, "properties": {"repobilityId": "67c5f65a078a886e", "scanner": "scanner-primary", "fingerprint": "bc11fac4f0bd0b4c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e1c89316f317f0ad", "level": "note", "message": {"text": "Unused endpoint: USE /api/internal"}, "properties": {"repobilityId": "cf28f9682c805c0b", "scanner": "scanner-primary", "fingerprint": "e1c89316f317f0ad", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c4d3db0b8a8488a2", "level": "note", "message": {"text": "Unused endpoint: USE /api/whitelist"}, "properties": {"repobilityId": "3e063042fae6f707", "scanner": "scanner-primary", "fingerprint": "c4d3db0b8a8488a2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-35fbeb33ec200f3f", "level": "note", "message": {"text": "Unused endpoint: USE /api/moderation-ai"}, "properties": {"repobilityId": "4be034891d5a5b15", "scanner": "scanner-primary", "fingerprint": "35fbeb33ec200f3f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d94463c03aa3b224", "level": "note", "message": {"text": "Unused endpoint: USE /api/url-stream"}, "properties": {"repobilityId": "32ea0bef1c899493", "scanner": "scanner-primary", "fingerprint": "d94463c03aa3b224", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-31584cd4c407eba0", "level": "note", "message": {"text": "Unused endpoint: USE /api/random-stream"}, "properties": {"repobilityId": "64d965121de2d11c", "scanner": "scanner-primary", "fingerprint": "31584cd4c407eba0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-282815655098e2c5", "level": "note", "message": {"text": "Unused endpoint: GET /api/admin/moderation"}, "properties": {"repobilityId": "88e4277b7f04bf01", "scanner": "scanner-primary", "fingerprint": "282815655098e2c5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bbeaab1f52a9ba81", "level": "note", "message": {"text": "Unused endpoint: POST /api/admin/ban"}, "properties": {"repobilityId": "5b8a1f159ac387f7", "scanner": "scanner-primary", "fingerprint": "bbeaab1f52a9ba81", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1be12d8576695829", "level": "note", "message": {"text": "Unused endpoint: POST /api/admin/unban"}, "properties": {"repobilityId": "e598307bf60c1e77", "scanner": "scanner-primary", "fingerprint": "1be12d8576695829", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-32ffcdf1f37776ad", "level": "note", "message": {"text": "Unused endpoint: POST /api/admin/timeout"}, "properties": {"repobilityId": "d8577d9fbec45fac", "scanner": "scanner-primary", "fingerprint": "32ffcdf1f37776ad", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-972834e3b14280a9", "level": "note", "message": {"text": "Unused endpoint: POST /api/admin/remove-timeout"}, "properties": {"repobilityId": "8f1b6bb37ba23db1", "scanner": "scanner-primary", "fingerprint": "972834e3b14280a9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6658608cc02501ce", "level": "note", "message": {"text": "Unused endpoint: POST /ban-chat"}, "properties": {"repobilityId": "a0d4834a304a2ae4", "scanner": "scanner-primary", "fingerprint": "6658608cc02501ce", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-54d4487c36ff385d", "level": "note", "message": {"text": "Unused endpoint: POST /timeout"}, "properties": {"repobilityId": "10db6dd77e7bfba9", "scanner": "scanner-primary", "fingerprint": "54d4487c36ff385d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bcc0718f155dfdf2", "level": "note", "message": {"text": "Unused endpoint: POST /ban-streamer"}, "properties": {"repobilityId": "c65cda3a75d62327", "scanner": "scanner-primary", "fingerprint": "bcc0718f155dfdf2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-841e50bf821e4158", "level": "note", "message": {"text": "Unused endpoint: GET /users"}, "properties": {"repobilityId": "305d2f5ed44d70d4", "scanner": "scanner-primary", "fingerprint": "841e50bf821e4158", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-04d4379f59ac8482", "level": "note", "message": {"text": "Unused endpoint: POST /users/:userId/promote-admin"}, "properties": {"repobilityId": "44d2ecf57b8bbd23", "scanner": "scanner-primary", "fingerprint": "04d4379f59ac8482", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-df875d56f7deb124", "level": "note", "message": {"text": "Unused endpoint: POST /users/:userId/demote-admin"}, "properties": {"repobilityId": "498299e12a4dde33", "scanner": "scanner-primary", "fingerprint": "df875d56f7deb124", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-85f9b0c8005096ac", "level": "note", "message": {"text": "Unused endpoint: POST /users/:userId/promote-moderator"}, "properties": {"repobilityId": "f1631c5618a86414", "scanner": "scanner-primary", "fingerprint": "85f9b0c8005096ac", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-76ed299b0b8f6c3b", "level": "note", "message": {"text": "Unused endpoint: POST /users/:userId/demote-moderator"}, "properties": {"repobilityId": "7eb8953f757e5757", "scanner": "scanner-primary", "fingerprint": "76ed299b0b8f6c3b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-77a1c70ee6b7972d", "level": "note", "message": {"text": "Unused endpoint: POST /users/:userId/ban"}, "properties": {"repobilityId": "a79a15eb8c60b3df", "scanner": "scanner-primary", "fingerprint": "77a1c70ee6b7972d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e3ff4d3e4431286d", "level": "note", "message": {"text": "Unused endpoint: POST /users/:userId/unban"}, "properties": {"repobilityId": "130d05a8e3313b65", "scanner": "scanner-primary", "fingerprint": "e3ff4d3e4431286d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-af92b6f36ace6872", "level": "note", "message": {"text": "Unused endpoint: DELETE /users/:userId"}, "properties": {"repobilityId": "e25aac6a363c9ead", "scanner": "scanner-primary", "fingerprint": "af92b6f36ace6872", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}