{"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-0b2cbebb28360e6a", "name": "TODO/FIXME marker in shipping code \u2014 app/platform/PlatformDesktop.js:837", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/platform/PlatformDesktop.js:837"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2e44fd7bb9e97b64", "name": "Stray `console.log` in TS/JS \u2014 app/platform/PlatformDesktop.js:262", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/platform/PlatformDesktop.js:262"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-536905ed16dcdcba", "name": "Stray `console.log` in TS/JS \u2014 app/platform/PlatformShim.js:137", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/platform/PlatformShim.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-45340406087a2331", "name": "Stray `console.log` in TS/JS \u2014 app/platform/PlatformWebOS.js:171", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/platform/PlatformWebOS.js:171"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8488ad6f0cca87ff", "name": "Stray `console.log` in TS/JS \u2014 app/etc/emojis.js:1970", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/etc/emojis.js:1970"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72e7cbbc03c37597", "name": "TODO/FIXME marker in shipping code \u2014 app/specific/Main.js:2858", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/specific/Main.js:2858"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a1c938e3319e52cb", "name": "Stray `console.log` in TS/JS \u2014 app/specific/Main.js:411", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/Main.js:411"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d86efc2dc181590a", "name": "TODO/FIXME marker in shipping code \u2014 app/specific/Users.js:247", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/specific/Users.js:247"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-06750301a399f5fa", "name": "Stray `console.log` in TS/JS \u2014 app/specific/PlayClip.js:748", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/PlayClip.js:748"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7cc656f7090b8d7b", "name": "Stray `console.log` in TS/JS \u2014 app/specific/PlayHLS.js:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/PlayHLS.js:66"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-943bad4ad783a5c0", "name": "Stray `console.log` in TS/JS \u2014 app/specific/BackupSyncRestore.js:125", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/BackupSyncRestore.js:125"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-26da43734cd959e1", "name": "TODO/FIXME marker in shipping code \u2014 app/specific/ChatVod.js:549", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/specific/ChatVod.js:549"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-507b0687da6fdbe5", "name": "Stray `console.log` in TS/JS \u2014 app/specific/ChatVod.js:154", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/ChatVod.js:154"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-98f98f0f40fe6324", "name": "TODO/FIXME marker in shipping code \u2014 app/specific/PlayVod.js:417", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/specific/PlayVod.js:417"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ce75cdb6ba103b8a", "name": "Stray `console.log` in TS/JS \u2014 app/specific/PlayVod.js:1073", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/PlayVod.js:1073"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dab76cff36593829", "name": "Stray `console.log` in TS/JS \u2014 app/specific/BackupSync.js:425", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/BackupSync.js:425"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-53b0c41398a1598e", "name": "TODO/FIXME marker in shipping code \u2014 app/specific/Screens.js:118", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/specific/Screens.js:118"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-232171fb54a1fef0", "name": "TODO/FIXME marker in shipping code \u2014 app/specific/PlayMulti.js:565", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/specific/PlayMulti.js:565"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-18df4cf16ca0e8ff", "name": "TODO/FIXME marker in shipping code \u2014 app/specific/ScreensObj.js:172", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/specific/ScreensObj.js:172"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b75d7eda4108aacf", "name": "Stray `console.log` in TS/JS \u2014 app/specific/ScreensObj.js:3180", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/ScreensObj.js:3180"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-57c7ba2df665ba66", "name": "Stray `console.log` in TS/JS \u2014 app/specific/OSInterface.js:1021", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/OSInterface.js:1021"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bd9539ebedfbdcee", "name": "Stray `console.log` in TS/JS \u2014 app/specific/Settings.js:2198", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/Settings.js:2198"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b92abf01cdf5f758", "name": "Stray `console.log` in TS/JS \u2014 app/specific/BackupSyncBackup.js:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/BackupSyncBackup.js:64"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0dd7c5312dfad3a0", "name": "TODO/FIXME marker in shipping code \u2014 app/specific/ChatLive.js:1884", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/specific/ChatLive.js:1884"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d485442d4b7f61fb", "name": "Stray `console.log` in TS/JS \u2014 app/specific/BrowserTest.js:347", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/BrowserTest.js:347"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2e64372d62c74530", "name": "Stray `console.log` in TS/JS \u2014 app/specific/BackupSyncSave.js:119", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/BackupSyncSave.js:119"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-05d193f1731e500b", "name": "TODO/FIXME marker in shipping code \u2014 app/specific/ChatLiveControls.js:134", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/specific/ChatLiveControls.js:134"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ff3dc321c4e5e45f", "name": "Stray `console.log` in TS/JS \u2014 app/specific/ChatLiveControls.js:485", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/ChatLiveControls.js:485"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1e3977b6d3488c76", "name": "TODO/FIXME marker in shipping code \u2014 app/specific/PlayEtc.js:496", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/specific/PlayEtc.js:496"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2d272ae38b637c8f", "name": "Stray `console.log` in TS/JS \u2014 app/specific/PlayEtc.js:1684", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/PlayEtc.js:1684"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9401cbc47ebbe83a", "name": "TODO/FIXME marker in shipping code \u2014 app/specific/Play.js:668", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/specific/Play.js:668"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ffd3979fbfb58617", "name": "Stray `console.log` in TS/JS \u2014 app/specific/Play.js:1091", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/Play.js:1091"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-014da5210869e233", "name": "Stray `console.log` in TS/JS \u2014 app/specific/UserLiveFeed.js:570", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/UserLiveFeed.js:570"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-56644e523b244c50", "name": "TODO/FIXME marker in shipping code \u2014 app/specific/PlayExtra.js:379", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/specific/PlayExtra.js:379"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5a19345f1b58b432", "name": "TODO/FIXME marker in shipping code \u2014 app/languages/uk_UA.js:334", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/languages/uk_UA.js:334"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-086c71240af4900a", "name": "TODO/FIXME marker in shipping code \u2014 app/languages/fr_FR.js:341", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/languages/fr_FR.js:341"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-31d6d8580131d8cc", "name": "TODO/FIXME marker in shipping code \u2014 app/languages/en_US.js:343", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/languages/en_US.js:343"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ace1364ca71c6e75", "name": "Insecure pattern 'cors_wildcard' in vite.config.js:45", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in vite.config.js:45"}, "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-a22460363d9af610", "name": "Insecure pattern 'direct_innerhtml_assignment' in app/platform/PlatformShim.js:1151", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/platform/PlatformShim.js:1151"}, "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-a90179f73d83bb55", "name": "Possible secret in app/specific/Main.js", "shortDescription": {"text": "Possible secret in app/specific/Main.js"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-25b84ca09593b18f", "name": "Insecure pattern 'eval_used' in app/specific/Main.js:2132", "shortDescription": {"text": "Insecure pattern 'eval_used' in app/specific/Main.js:2132"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4c1c86592b635866", "name": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/Main.js:713", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/Main.js:713"}, "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-adbc8caa2cdc4dee", "name": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/Users.js:121", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/Users.js:121"}, "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-00dc9cb375652f5e", "name": "Insecure pattern 'eval_used' in app/specific/PlayHLS.js:132", "shortDescription": {"text": "Insecure pattern 'eval_used' in app/specific/PlayHLS.js:132"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bbe73fdf650fd1b8", "name": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/ChatVod.js:355", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/ChatVod.js:355"}, "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-f9ab231bbf1f1114", "name": "Insecure pattern 'eval_used' in app/specific/AddCode.js:117", "shortDescription": {"text": "Insecure pattern 'eval_used' in app/specific/AddCode.js:117"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2499ef24e48359cf", "name": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/Screens.js:651", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/Screens.js:651"}, "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-66cedec6a4a17d07", "name": "Insecure pattern 'eval_used' in app/specific/ScreensObj.js:3485", "shortDescription": {"text": "Insecure pattern 'eval_used' in app/specific/ScreensObj.js:3485"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4db15a475585e522", "name": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/ScreensObj.js:342", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/ScreensObj.js:342"}, "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-af075908871355da", "name": "Insecure pattern 'eval_used' in app/specific/OSInterface.js:174", "shortDescription": {"text": "Insecure pattern 'eval_used' in app/specific/OSInterface.js:174"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2ad41e05081f126d", "name": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/ChatLive.js:151", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/ChatLive.js:151"}, "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-a8291140e168e06e", "name": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/ChatLiveControls.js:446", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/ChatLiveControls.js:446"}, "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-13227f29e33bed23", "name": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/PlayEtc.js:3998", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/PlayEtc.js:3998"}, "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-28e9f7fd626b929e", "name": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/UserLiveFeedobj.js:1050", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/UserLiveFeedobj.js:1050"}, "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-1838a141491ce38c", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-064220f471fc94dd", "name": "Very large file: app/platform/PlatformShim.js (1271 lines)", "shortDescription": {"text": "Very large file: app/platform/PlatformShim.js (1271 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-6389c48d23ebdc65", "name": "Very large file: app/specific/Main.js (3729 lines)", "shortDescription": {"text": "Very large file: app/specific/Main.js (3729 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-99ef2559111cd487", "name": "Very large file: app/specific/PlayVod.js (1928 lines)", "shortDescription": {"text": "Very large file: app/specific/PlayVod.js (1928 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-fae3dfe619c4e9a2", "name": "Very large file: app/specific/Screens.js (4283 lines)", "shortDescription": {"text": "Very large file: app/specific/Screens.js (4283 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-b83d8b20100d45cf", "name": "Very large file: app/specific/ScreensObj.js (3503 lines)", "shortDescription": {"text": "Very large file: app/specific/ScreensObj.js (3503 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-1890acb5348892e9", "name": "Very large file: app/specific/Settings.js (3826 lines)", "shortDescription": {"text": "Very large file: app/specific/Settings.js (3826 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-b5a29b2d2ef33446", "name": "Very large file: app/specific/ChatLive.js (2227 lines)", "shortDescription": {"text": "Very large file: app/specific/ChatLive.js (2227 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-e2a861f6b66a754c", "name": "Very large file: app/specific/PlayEtc.js (4671 lines)", "shortDescription": {"text": "Very large file: app/specific/PlayEtc.js (4671 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-bc6440ecd8fe8e9c", "name": "Very large file: app/specific/Play.js (2243 lines)", "shortDescription": {"text": "Very large file: app/specific/Play.js (2243 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-753c9ba3872ac953", "name": "Very large file: app/specific/UserLiveFeedobj.js (1951 lines)", "shortDescription": {"text": "Very large file: app/specific/UserLiveFeedobj.js (1951 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-22c95377f14a803b", "name": "Very large file: app/specific/UserLiveFeed.js (1396 lines)", "shortDescription": {"text": "Very large file: app/specific/UserLiveFeed.js (1396 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-311596bbcc90222e", "name": "Very large file: app/languages/uk_UA.js (965 lines)", "shortDescription": {"text": "Very large file: app/languages/uk_UA.js (965 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-72d32f3dede6b523", "name": "Very large file: app/languages/fr_FR.js (973 lines)", "shortDescription": {"text": "Very large file: app/languages/fr_FR.js (973 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-ff58e2e859afc16e", "name": "Very large file: app/languages/ru_RU.js (983 lines)", "shortDescription": {"text": "Very large file: app/languages/ru_RU.js (983 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-b8a134c4577eab87", "name": "Very large file: app/languages/en_US.js (969 lines)", "shortDescription": {"text": "Very large file: app/languages/en_US.js (969 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-09f803211eeba287", "name": "Very large file: app/languages/tr_TR.js (983 lines)", "shortDescription": {"text": "Very large file: app/languages/tr_TR.js (983 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-3e0a14d82f41d1ec", "name": "Very large file: app/languages/pt_BR.js (946 lines)", "shortDescription": {"text": "Very large file: app/languages/pt_BR.js (946 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-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "2 test file(s) for 59 source file(s) (ratio 0.03). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ed13c8a2149a7cc4", "name": "41 TODO/FIXME markers", "shortDescription": {"text": "41 TODO/FIXME markers"}, "fullDescription": {"text": "High count of TODO/FIXME/HACK markers \u2014 track them as issues so they're not forgotten."}, "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 93 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-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-11825279136b53a3", "name": "CI is configured but no tests are detected", "shortDescription": {"text": "CI is configured but no tests are detected"}, "fullDescription": {"text": "A CI pipeline exists, but the scan found no test files to gate. Opus labeled this generated-code pattern as config theater: release machinery exists, but it has little behavioral signal."}, "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-81251318b7e4ae8d", "name": "Commented-code block (5 lines) in vite.config.js:10", "shortDescription": {"text": "Commented-code block (5 lines) in vite.config.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-c718bda4fecea57c", "name": "Commented-code block (17 lines) in app/testing/testing.js:32", "shortDescription": {"text": "Commented-code block (17 lines) in app/testing/testing.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-8fc95fe10927dd68", "name": "Commented-code block (5 lines) in app/platform/PlatformDesktop.js:22", "shortDescription": {"text": "Commented-code block (5 lines) in app/platform/PlatformDesktop.js:22"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-90e70ce267335c38", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/platform/PlatformDesktop.js:205", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/platform/PlatformDesktop.js:205"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-64feb5fe695db559", "name": "Commented-code block (8 lines) in app/platform/PlatformShim.js:51", "shortDescription": {"text": "Commented-code block (8 lines) in app/platform/PlatformShim.js:51"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6bc0eba408426c5e", "name": "Commented-code block (6 lines) in app/platform/PlatformWebOS.js:33", "shortDescription": {"text": "Commented-code block (6 lines) in app/platform/PlatformWebOS.js:33"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e46ab3deb3895bab", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/platform/PlatformWebOS.js:10", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/platform/PlatformWebOS.js:10"}, "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-b1b2857c4a29987d", "name": "Legacy-named symbol `gameSelectedOld` in app/specific/Main.js:79", "shortDescription": {"text": "Legacy-named symbol `gameSelectedOld` in app/specific/Main.js:79"}, "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-4e2c5d1801f709dd", "name": "Commented-code block (6 lines) in app/specific/Main.js:413", "shortDescription": {"text": "Commented-code block (6 lines) in app/specific/Main.js:413"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5f54d1b7b03969d0", "name": "Commented-code block (5 lines) in app/specific/PlayHLS.js:66", "shortDescription": {"text": "Commented-code block (5 lines) in app/specific/PlayHLS.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-b11d9e622b88f501", "name": "Legacy-named symbol `Chat_fakeClockOld` in app/specific/ChatVod.js:33", "shortDescription": {"text": "Legacy-named symbol `Chat_fakeClockOld` in app/specific/ChatVod.js:33"}, "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-b201e0d0ce3d3594", "name": "Commented-code block (7 lines) in app/specific/ChatVod.js:550", "shortDescription": {"text": "Commented-code block (7 lines) in app/specific/ChatVod.js:550"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-03313c5af99a3a83", "name": "Commented-code block (10 lines) in app/specific/AddCode.js:178", "shortDescription": {"text": "Commented-code block (10 lines) in app/specific/AddCode.js:178"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-10b2166fcec1e373", "name": "Commented-code block (15 lines) in app/specific/PlayVod.js:1868", "shortDescription": {"text": "Commented-code block (15 lines) in app/specific/PlayVod.js:1868"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4b1b635964aa4ccd", "name": "Commented-code block (6 lines) in app/specific/BackupSync.js:398", "shortDescription": {"text": "Commented-code block (6 lines) in app/specific/BackupSync.js:398"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5b846c08b3719cc0", "name": "Commented-code block (7 lines) in app/specific/Screens.js:2468", "shortDescription": {"text": "Commented-code block (7 lines) in app/specific/Screens.js:2468"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-537b9e587158a4ea", "name": "Legacy-named symbol `Play_data_old` in app/specific/PlayMulti.js:285", "shortDescription": {"text": "Legacy-named symbol `Play_data_old` in app/specific/PlayMulti.js:285"}, "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-d5db756ad287f470", "name": "Legacy-named symbol `gameSelected_IdOld` in app/specific/ScreensObj.js:178", "shortDescription": {"text": "Legacy-named symbol `gameSelected_IdOld` in app/specific/ScreensObj.js:178"}, "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-c38eed5eefc5a780", "name": "Commented-code block (5 lines) in app/specific/OSInterface.js:436", "shortDescription": {"text": "Commented-code block (5 lines) in app/specific/OSInterface.js:436"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a6ea6677e6cc9da6", "name": "Legacy-named symbol `uptime_old` in app/specific/Settings.js:312", "shortDescription": {"text": "Legacy-named symbol `uptime_old` in app/specific/Settings.js:312"}, "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-1777ecaa23472a08", "name": "Commented-code block (5 lines) in app/specific/Settings.js:30", "shortDescription": {"text": "Commented-code block (5 lines) in app/specific/Settings.js:30"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4c59ec1752f69aea", "name": "Commented-code block (10 lines) in app/specific/ChatLive.js:1211", "shortDescription": {"text": "Commented-code block (10 lines) in app/specific/ChatLive.js:1211"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1c13d4072b2e908b", "name": "Legacy-named symbol `Play_isFullScreenOld` in app/specific/PlayEtc.js:23", "shortDescription": {"text": "Legacy-named symbol `Play_isFullScreenOld` in app/specific/PlayEtc.js:23"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-23e5a64d0007ca38", "name": "Commented-code block (21 lines) in app/specific/PlayEtc.js:3002", "shortDescription": {"text": "Commented-code block (21 lines) in app/specific/PlayEtc.js:3002"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d6f7672ef5c30b28", "name": "Legacy-named symbol `Play_data_old` in app/specific/Play.js:465", "shortDescription": {"text": "Legacy-named symbol `Play_data_old` in app/specific/Play.js:465"}, "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-0f64f3af2a4f9c53", "name": "Commented-code block (8 lines) in app/specific/UserLiveFeedobj.js:57", "shortDescription": {"text": "Commented-code block (8 lines) in app/specific/UserLiveFeedobj.js:57"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5baab56a3f752452", "name": "Legacy-named symbol `PlayExtra_SwitchPlayerStoreOld` in app/specific/PlayExtra.js:187", "shortDescription": {"text": "Legacy-named symbol `PlayExtra_SwitchPlayerStoreOld` in app/specific/PlayExtra.js:187"}, "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-1dbfdc4f608160a2", "name": "Commented-code block (5 lines) in app/thirdparty/kapchat.js:190", "shortDescription": {"text": "Commented-code block (5 lines) in app/thirdparty/kapchat.js:190"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-13ae0f2db8741466", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/thirdparty/hls.min.js:1", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/thirdparty/hls.min.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-50c30c7cfcd98386", "name": "Commented-code block (5 lines) in app/general/TVKeyValue.js:21", "shortDescription": {"text": "Commented-code block (5 lines) in app/general/TVKeyValue.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-834f59228199f2db", "name": "Legacy-named symbol `151_old` in app/general/emojis.js:26", "shortDescription": {"text": "Legacy-named symbol `151_old` in app/general/emojis.js:26"}, "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-349406bc1fcb4671", "name": "Commented-code block (5 lines) in release/scripts/tv-cdp.mjs:20", "shortDescription": {"text": "Commented-code block (5 lines) in release/scripts/tv-cdp.mjs: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-607d0ba85d9dd7d0", "name": "Unused endpoint: USE /__proxy", "shortDescription": {"text": "Unused endpoint: USE /__proxy"}, "fullDescription": {"text": "`vite.config.js` declares `USE /__proxy` 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/20871"}, "properties": {"repository": "tcarcao/smarttwitchtv-webos", "repoUrl": "https://github.com/tcarcao/smarttwitchtv-webos", "branch": "main"}, "results": [{"ruleId": "scanner-0b2cbebb28360e6a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/platform/PlatformDesktop.js:837"}, "properties": {"repobilityId": "61c10c1798873803", "scanner": "scanner-primary", "fingerprint": "0b2cbebb28360e6a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-2e44fd7bb9e97b64", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/platform/PlatformDesktop.js:262"}, "properties": {"repobilityId": "d8d9171b17833fd2", "scanner": "scanner-primary", "fingerprint": "2e44fd7bb9e97b64", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-536905ed16dcdcba", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/platform/PlatformShim.js:137"}, "properties": {"repobilityId": "455d60f83c8e241f", "scanner": "scanner-primary", "fingerprint": "536905ed16dcdcba", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-45340406087a2331", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/platform/PlatformWebOS.js:171"}, "properties": {"repobilityId": "5ca3f992dfa656d4", "scanner": "scanner-primary", "fingerprint": "45340406087a2331", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8488ad6f0cca87ff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/etc/emojis.js:1970"}, "properties": {"repobilityId": "b20250a6ac2b18e0", "scanner": "scanner-primary", "fingerprint": "8488ad6f0cca87ff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-72e7cbbc03c37597", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/specific/Main.js:2858"}, "properties": {"repobilityId": "2401224cd75e8689", "scanner": "scanner-primary", "fingerprint": "72e7cbbc03c37597", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-a1c938e3319e52cb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/Main.js:411"}, "properties": {"repobilityId": "4722c605c24791a3", "scanner": "scanner-primary", "fingerprint": "a1c938e3319e52cb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d86efc2dc181590a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/specific/Users.js:247"}, "properties": {"repobilityId": "0c51e1ffe552246b", "scanner": "scanner-primary", "fingerprint": "d86efc2dc181590a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-06750301a399f5fa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/PlayClip.js:748"}, "properties": {"repobilityId": "620bcc7a600dad64", "scanner": "scanner-primary", "fingerprint": "06750301a399f5fa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7cc656f7090b8d7b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/PlayHLS.js:66"}, "properties": {"repobilityId": "eb47982decfd9846", "scanner": "scanner-primary", "fingerprint": "7cc656f7090b8d7b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-943bad4ad783a5c0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/BackupSyncRestore.js:125"}, "properties": {"repobilityId": "7ed635cd6c33e42e", "scanner": "scanner-primary", "fingerprint": "943bad4ad783a5c0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-26da43734cd959e1", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/specific/ChatVod.js:549"}, "properties": {"repobilityId": "a6834adcd342db5d", "scanner": "scanner-primary", "fingerprint": "26da43734cd959e1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-507b0687da6fdbe5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/ChatVod.js:154"}, "properties": {"repobilityId": "9d7b482515f07cf2", "scanner": "scanner-primary", "fingerprint": "507b0687da6fdbe5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-98f98f0f40fe6324", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/specific/PlayVod.js:417"}, "properties": {"repobilityId": "c6483915c921958c", "scanner": "scanner-primary", "fingerprint": "98f98f0f40fe6324", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-ce75cdb6ba103b8a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/PlayVod.js:1073"}, "properties": {"repobilityId": "30ec487ca5cea0ac", "scanner": "scanner-primary", "fingerprint": "ce75cdb6ba103b8a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dab76cff36593829", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/BackupSync.js:425"}, "properties": {"repobilityId": "dc99551d47c846ed", "scanner": "scanner-primary", "fingerprint": "dab76cff36593829", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-53b0c41398a1598e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/specific/Screens.js:118"}, "properties": {"repobilityId": "97775d6f06bc989d", "scanner": "scanner-primary", "fingerprint": "53b0c41398a1598e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-232171fb54a1fef0", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/specific/PlayMulti.js:565"}, "properties": {"repobilityId": "3222a1c83f7d87f4", "scanner": "scanner-primary", "fingerprint": "232171fb54a1fef0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-18df4cf16ca0e8ff", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/specific/ScreensObj.js:172"}, "properties": {"repobilityId": "8858056550a19f51", "scanner": "scanner-primary", "fingerprint": "18df4cf16ca0e8ff", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-b75d7eda4108aacf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/ScreensObj.js:3180"}, "properties": {"repobilityId": "e8c2370540dc59d7", "scanner": "scanner-primary", "fingerprint": "b75d7eda4108aacf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-57c7ba2df665ba66", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/OSInterface.js:1021"}, "properties": {"repobilityId": "9aa237a8117e8e0e", "scanner": "scanner-primary", "fingerprint": "57c7ba2df665ba66", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bd9539ebedfbdcee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/Settings.js:2198"}, "properties": {"repobilityId": "82eba748f86244af", "scanner": "scanner-primary", "fingerprint": "bd9539ebedfbdcee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b92abf01cdf5f758", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/BackupSyncBackup.js:64"}, "properties": {"repobilityId": "f8df3deb76c64f47", "scanner": "scanner-primary", "fingerprint": "b92abf01cdf5f758", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0dd7c5312dfad3a0", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/specific/ChatLive.js:1884"}, "properties": {"repobilityId": "03d5e43b0fe984c8", "scanner": "scanner-primary", "fingerprint": "0dd7c5312dfad3a0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-d485442d4b7f61fb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/BrowserTest.js:347"}, "properties": {"repobilityId": "43675154a5524dd2", "scanner": "scanner-primary", "fingerprint": "d485442d4b7f61fb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2e64372d62c74530", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/BackupSyncSave.js:119"}, "properties": {"repobilityId": "ee9b394cc537b0ac", "scanner": "scanner-primary", "fingerprint": "2e64372d62c74530", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-05d193f1731e500b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/specific/ChatLiveControls.js:134"}, "properties": {"repobilityId": "60ae3bd4e6742cdb", "scanner": "scanner-primary", "fingerprint": "05d193f1731e500b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-ff3dc321c4e5e45f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/ChatLiveControls.js:485"}, "properties": {"repobilityId": "65d6875fd81ea0bc", "scanner": "scanner-primary", "fingerprint": "ff3dc321c4e5e45f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1e3977b6d3488c76", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/specific/PlayEtc.js:496"}, "properties": {"repobilityId": "17fb5781c3a43d89", "scanner": "scanner-primary", "fingerprint": "1e3977b6d3488c76", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-2d272ae38b637c8f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/PlayEtc.js:1684"}, "properties": {"repobilityId": "f41d981617df6084", "scanner": "scanner-primary", "fingerprint": "2d272ae38b637c8f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9401cbc47ebbe83a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/specific/Play.js:668"}, "properties": {"repobilityId": "3b3f08ea04413ddf", "scanner": "scanner-primary", "fingerprint": "9401cbc47ebbe83a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-ffd3979fbfb58617", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/Play.js:1091"}, "properties": {"repobilityId": "cd420e73c0e1038a", "scanner": "scanner-primary", "fingerprint": "ffd3979fbfb58617", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-014da5210869e233", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/specific/UserLiveFeed.js:570"}, "properties": {"repobilityId": "3b3629270bcea5bb", "scanner": "scanner-primary", "fingerprint": "014da5210869e233", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-56644e523b244c50", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/specific/PlayExtra.js:379"}, "properties": {"repobilityId": "1a0dd7bdff96777c", "scanner": "scanner-primary", "fingerprint": "56644e523b244c50", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-5a19345f1b58b432", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/languages/uk_UA.js:334"}, "properties": {"repobilityId": "a497d59efbdd155f", "scanner": "scanner-primary", "fingerprint": "5a19345f1b58b432", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-086c71240af4900a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/languages/fr_FR.js:341"}, "properties": {"repobilityId": "d8a94c104a38b198", "scanner": "scanner-primary", "fingerprint": "086c71240af4900a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-31d6d8580131d8cc", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/languages/en_US.js:343"}, "properties": {"repobilityId": "76dd245145e6c00c", "scanner": "scanner-primary", "fingerprint": "31d6d8580131d8cc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-ace1364ca71c6e75", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in vite.config.js:45"}, "properties": {"repobilityId": "f4cae5143c01bb73", "scanner": "scanner-primary", "fingerprint": "ace1364ca71c6e75", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "vite.config.js"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-a22460363d9af610", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/platform/PlatformShim.js:1151"}, "properties": {"repobilityId": "064aa12ecfa2da3d", "scanner": "scanner-primary", "fingerprint": "a22460363d9af610", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/platform/PlatformShim.js"}, "region": {"startLine": 1151}}}]}, {"ruleId": "scanner-a90179f73d83bb55", "level": "error", "message": {"text": "Possible secret in app/specific/Main.js"}, "properties": {"repobilityId": "4b116c6e30b47490", "scanner": "scanner-primary", "fingerprint": "a90179f73d83bb55", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/specific/Main.js"}, "region": {"startLine": 3444}}}]}, {"ruleId": "scanner-25b84ca09593b18f", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in app/specific/Main.js:2132"}, "properties": {"repobilityId": "e63460c06d1af932", "scanner": "scanner-primary", "fingerprint": "25b84ca09593b18f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/specific/Main.js"}, "region": {"startLine": 2132}}}]}, {"ruleId": "scanner-4c1c86592b635866", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/Main.js:713"}, "properties": {"repobilityId": "0e03d2f875efa04d", "scanner": "scanner-primary", "fingerprint": "4c1c86592b635866", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/specific/Main.js"}, "region": {"startLine": 713}}}]}, {"ruleId": "scanner-adbc8caa2cdc4dee", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/Users.js:121"}, "properties": {"repobilityId": "aa2ace04c7fdd1e7", "scanner": "scanner-primary", "fingerprint": "adbc8caa2cdc4dee", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/specific/Users.js"}, "region": {"startLine": 121}}}]}, {"ruleId": "scanner-00dc9cb375652f5e", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in app/specific/PlayHLS.js:132"}, "properties": {"repobilityId": "013b13eee1188522", "scanner": "scanner-primary", "fingerprint": "00dc9cb375652f5e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/specific/PlayHLS.js"}, "region": {"startLine": 132}}}]}, {"ruleId": "scanner-bbe73fdf650fd1b8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/ChatVod.js:355"}, "properties": {"repobilityId": "9dfdc1a8f6310b2e", "scanner": "scanner-primary", "fingerprint": "bbe73fdf650fd1b8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/specific/ChatVod.js"}, "region": {"startLine": 355}}}]}, {"ruleId": "scanner-f9ab231bbf1f1114", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in app/specific/AddCode.js:117"}, "properties": {"repobilityId": "6fc55617c477469e", "scanner": "scanner-primary", "fingerprint": "f9ab231bbf1f1114", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/specific/AddCode.js"}, "region": {"startLine": 117}}}]}, {"ruleId": "scanner-2499ef24e48359cf", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/Screens.js:651"}, "properties": {"repobilityId": "f0b6c0e18c463a0c", "scanner": "scanner-primary", "fingerprint": "2499ef24e48359cf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/specific/Screens.js"}, "region": {"startLine": 651}}}]}, {"ruleId": "scanner-66cedec6a4a17d07", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in app/specific/ScreensObj.js:3485"}, "properties": {"repobilityId": "8b383ba5f0e0b7c4", "scanner": "scanner-primary", "fingerprint": "66cedec6a4a17d07", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/specific/ScreensObj.js"}, "region": {"startLine": 3485}}}]}, {"ruleId": "scanner-4db15a475585e522", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/ScreensObj.js:342"}, "properties": {"repobilityId": "de1587c26d37e33a", "scanner": "scanner-primary", "fingerprint": "4db15a475585e522", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/specific/ScreensObj.js"}, "region": {"startLine": 342}}}]}, {"ruleId": "scanner-af075908871355da", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in app/specific/OSInterface.js:174"}, "properties": {"repobilityId": "14e56ec7a9e585c9", "scanner": "scanner-primary", "fingerprint": "af075908871355da", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/specific/OSInterface.js"}, "region": {"startLine": 174}}}]}, {"ruleId": "scanner-2ad41e05081f126d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/ChatLive.js:151"}, "properties": {"repobilityId": "d138a402e4ca07b1", "scanner": "scanner-primary", "fingerprint": "2ad41e05081f126d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/specific/ChatLive.js"}, "region": {"startLine": 151}}}]}, {"ruleId": "scanner-a8291140e168e06e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/ChatLiveControls.js:446"}, "properties": {"repobilityId": "093864f92c5c090b", "scanner": "scanner-primary", "fingerprint": "a8291140e168e06e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/specific/ChatLiveControls.js"}, "region": {"startLine": 446}}}]}, {"ruleId": "scanner-13227f29e33bed23", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/PlayEtc.js:3998"}, "properties": {"repobilityId": "71d758e48cc6ebaa", "scanner": "scanner-primary", "fingerprint": "13227f29e33bed23", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/specific/PlayEtc.js"}, "region": {"startLine": 3998}}}]}, {"ruleId": "scanner-28e9f7fd626b929e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/specific/UserLiveFeedobj.js:1050"}, "properties": {"repobilityId": "abc863db18fb6166", "scanner": "scanner-primary", "fingerprint": "28e9f7fd626b929e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/specific/UserLiveFeedobj.js"}, "region": {"startLine": 1050}}}]}, {"ruleId": "scanner-1838a141491ce38c", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "b8fd4f5048f96576", "scanner": "scanner-primary", "fingerprint": "1838a141491ce38c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-064220f471fc94dd", "level": "note", "message": {"text": "Very large file: app/platform/PlatformShim.js (1271 lines)"}, "properties": {"repobilityId": "d80515f82dde3059", "scanner": "scanner-primary", "fingerprint": "064220f471fc94dd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6389c48d23ebdc65", "level": "note", "message": {"text": "Very large file: app/specific/Main.js (3729 lines)"}, "properties": {"repobilityId": "0fa59d9167edd4b9", "scanner": "scanner-primary", "fingerprint": "6389c48d23ebdc65", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-99ef2559111cd487", "level": "note", "message": {"text": "Very large file: app/specific/PlayVod.js (1928 lines)"}, "properties": {"repobilityId": "171f1577fc3b99fa", "scanner": "scanner-primary", "fingerprint": "99ef2559111cd487", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fae3dfe619c4e9a2", "level": "note", "message": {"text": "Very large file: app/specific/Screens.js (4283 lines)"}, "properties": {"repobilityId": "33d3b40754aeb690", "scanner": "scanner-primary", "fingerprint": "fae3dfe619c4e9a2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b83d8b20100d45cf", "level": "note", "message": {"text": "Very large file: app/specific/ScreensObj.js (3503 lines)"}, "properties": {"repobilityId": "ad04e468afea66ab", "scanner": "scanner-primary", "fingerprint": "b83d8b20100d45cf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1890acb5348892e9", "level": "note", "message": {"text": "Very large file: app/specific/Settings.js (3826 lines)"}, "properties": {"repobilityId": "70861afa67f2c8a0", "scanner": "scanner-primary", "fingerprint": "1890acb5348892e9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b5a29b2d2ef33446", "level": "note", "message": {"text": "Very large file: app/specific/ChatLive.js (2227 lines)"}, "properties": {"repobilityId": "764f4570cb2d324c", "scanner": "scanner-primary", "fingerprint": "b5a29b2d2ef33446", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e2a861f6b66a754c", "level": "note", "message": {"text": "Very large file: app/specific/PlayEtc.js (4671 lines)"}, "properties": {"repobilityId": "3132f05fe18dcb55", "scanner": "scanner-primary", "fingerprint": "e2a861f6b66a754c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bc6440ecd8fe8e9c", "level": "note", "message": {"text": "Very large file: app/specific/Play.js (2243 lines)"}, "properties": {"repobilityId": "29e14678053f98eb", "scanner": "scanner-primary", "fingerprint": "bc6440ecd8fe8e9c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-753c9ba3872ac953", "level": "note", "message": {"text": "Very large file: app/specific/UserLiveFeedobj.js (1951 lines)"}, "properties": {"repobilityId": "a872aae169535b95", "scanner": "scanner-primary", "fingerprint": "753c9ba3872ac953", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-22c95377f14a803b", "level": "note", "message": {"text": "Very large file: app/specific/UserLiveFeed.js (1396 lines)"}, "properties": {"repobilityId": "360c207d39a551bb", "scanner": "scanner-primary", "fingerprint": "22c95377f14a803b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-311596bbcc90222e", "level": "note", "message": {"text": "Very large file: app/languages/uk_UA.js (965 lines)"}, "properties": {"repobilityId": "79c0ee37c2812612", "scanner": "scanner-primary", "fingerprint": "311596bbcc90222e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-72d32f3dede6b523", "level": "note", "message": {"text": "Very large file: app/languages/fr_FR.js (973 lines)"}, "properties": {"repobilityId": "167e2481e22ec21a", "scanner": "scanner-primary", "fingerprint": "72d32f3dede6b523", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ff58e2e859afc16e", "level": "note", "message": {"text": "Very large file: app/languages/ru_RU.js (983 lines)"}, "properties": {"repobilityId": "0ad2023bd0b9f76a", "scanner": "scanner-primary", "fingerprint": "ff58e2e859afc16e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b8a134c4577eab87", "level": "note", "message": {"text": "Very large file: app/languages/en_US.js (969 lines)"}, "properties": {"repobilityId": "5471a9e0759e13c0", "scanner": "scanner-primary", "fingerprint": "b8a134c4577eab87", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-09f803211eeba287", "level": "note", "message": {"text": "Very large file: app/languages/tr_TR.js (983 lines)"}, "properties": {"repobilityId": "a3c83d26b24b3466", "scanner": "scanner-primary", "fingerprint": "09f803211eeba287", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3e0a14d82f41d1ec", "level": "note", "message": {"text": "Very large file: app/languages/pt_BR.js (946 lines)"}, "properties": {"repobilityId": "b846966cf050a622", "scanner": "scanner-primary", "fingerprint": "3e0a14d82f41d1ec", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-ed13c8a2149a7cc4", "level": "note", "message": {"text": "41 TODO/FIXME markers"}, "properties": {"repobilityId": "4b38c118003e07d2", "scanner": "scanner-primary", "fingerprint": "ed13c8a2149a7cc4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["maintenance"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "ea68981cfa6899ba", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "a8aac201c31c4434", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-11825279136b53a3", "level": "warning", "message": {"text": "CI is configured but no tests are detected"}, "properties": {"repobilityId": "1d6bb7de73f2dbc2", "scanner": "scanner-primary", "fingerprint": "11825279136b53a3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "ci", "config-theater", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "13f52ebb15144fba", "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": "391414f0c1c24dea", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-81251318b7e4ae8d", "level": "none", "message": {"text": "Commented-code block (5 lines) in vite.config.js:10"}, "properties": {"repobilityId": "3992f4f86b4eb6a4", "scanner": "scanner-primary", "fingerprint": "81251318b7e4ae8d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c718bda4fecea57c", "level": "none", "message": {"text": "Commented-code block (17 lines) in app/testing/testing.js:32"}, "properties": {"repobilityId": "6a1ff4083724a8a6", "scanner": "scanner-primary", "fingerprint": "c718bda4fecea57c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8fc95fe10927dd68", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/platform/PlatformDesktop.js:22"}, "properties": {"repobilityId": "2a1608e7677b0a32", "scanner": "scanner-primary", "fingerprint": "8fc95fe10927dd68", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-90e70ce267335c38", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/platform/PlatformDesktop.js:205"}, "properties": {"repobilityId": "ae835c983e03c2ab", "scanner": "scanner-primary", "fingerprint": "90e70ce267335c38", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-64feb5fe695db559", "level": "none", "message": {"text": "Commented-code block (8 lines) in app/platform/PlatformShim.js:51"}, "properties": {"repobilityId": "413a570325cbdf43", "scanner": "scanner-primary", "fingerprint": "64feb5fe695db559", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6bc0eba408426c5e", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/platform/PlatformWebOS.js:33"}, "properties": {"repobilityId": "caf1caeb5f447474", "scanner": "scanner-primary", "fingerprint": "6bc0eba408426c5e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e46ab3deb3895bab", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/platform/PlatformWebOS.js:10"}, "properties": {"repobilityId": "3f3ec94528da3aa7", "scanner": "scanner-primary", "fingerprint": "e46ab3deb3895bab", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b1b2857c4a29987d", "level": "note", "message": {"text": "Legacy-named symbol `gameSelectedOld` in app/specific/Main.js:79"}, "properties": {"repobilityId": "11a7c054c65edf34", "scanner": "scanner-primary", "fingerprint": "b1b2857c4a29987d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4e2c5d1801f709dd", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/specific/Main.js:413"}, "properties": {"repobilityId": "0cdff2f9a0b57c4e", "scanner": "scanner-primary", "fingerprint": "4e2c5d1801f709dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f54d1b7b03969d0", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/specific/PlayHLS.js:66"}, "properties": {"repobilityId": "bf460c7ecd0685ef", "scanner": "scanner-primary", "fingerprint": "5f54d1b7b03969d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b11d9e622b88f501", "level": "note", "message": {"text": "Legacy-named symbol `Chat_fakeClockOld` in app/specific/ChatVod.js:33"}, "properties": {"repobilityId": "397a92805dda3489", "scanner": "scanner-primary", "fingerprint": "b11d9e622b88f501", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b201e0d0ce3d3594", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/specific/ChatVod.js:550"}, "properties": {"repobilityId": "97eab56da99e43e5", "scanner": "scanner-primary", "fingerprint": "b201e0d0ce3d3594", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-03313c5af99a3a83", "level": "none", "message": {"text": "Commented-code block (10 lines) in app/specific/AddCode.js:178"}, "properties": {"repobilityId": "5abe10f49115060d", "scanner": "scanner-primary", "fingerprint": "03313c5af99a3a83", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-10b2166fcec1e373", "level": "none", "message": {"text": "Commented-code block (15 lines) in app/specific/PlayVod.js:1868"}, "properties": {"repobilityId": "189dfab9ede039f9", "scanner": "scanner-primary", "fingerprint": "10b2166fcec1e373", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b1b635964aa4ccd", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/specific/BackupSync.js:398"}, "properties": {"repobilityId": "b7dfc7a48f8d7d30", "scanner": "scanner-primary", "fingerprint": "4b1b635964aa4ccd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5b846c08b3719cc0", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/specific/Screens.js:2468"}, "properties": {"repobilityId": "5a630cf9e929a4a1", "scanner": "scanner-primary", "fingerprint": "5b846c08b3719cc0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-537b9e587158a4ea", "level": "note", "message": {"text": "Legacy-named symbol `Play_data_old` in app/specific/PlayMulti.js:285"}, "properties": {"repobilityId": "002a3bb9bc22e316", "scanner": "scanner-primary", "fingerprint": "537b9e587158a4ea", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d5db756ad287f470", "level": "note", "message": {"text": "Legacy-named symbol `gameSelected_IdOld` in app/specific/ScreensObj.js:178"}, "properties": {"repobilityId": "5636c77911205fa1", "scanner": "scanner-primary", "fingerprint": "d5db756ad287f470", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c38eed5eefc5a780", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/specific/OSInterface.js:436"}, "properties": {"repobilityId": "3aaef5772c0f3935", "scanner": "scanner-primary", "fingerprint": "c38eed5eefc5a780", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a6ea6677e6cc9da6", "level": "note", "message": {"text": "Legacy-named symbol `uptime_old` in app/specific/Settings.js:312"}, "properties": {"repobilityId": "2206c7df37de8432", "scanner": "scanner-primary", "fingerprint": "a6ea6677e6cc9da6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1777ecaa23472a08", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/specific/Settings.js:30"}, "properties": {"repobilityId": "4384dbe33041478a", "scanner": "scanner-primary", "fingerprint": "1777ecaa23472a08", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4c59ec1752f69aea", "level": "none", "message": {"text": "Commented-code block (10 lines) in app/specific/ChatLive.js:1211"}, "properties": {"repobilityId": "55ba913e3fa7f1dc", "scanner": "scanner-primary", "fingerprint": "4c59ec1752f69aea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c13d4072b2e908b", "level": "note", "message": {"text": "Legacy-named symbol `Play_isFullScreenOld` in app/specific/PlayEtc.js:23"}, "properties": {"repobilityId": "f59bd6e319c040a3", "scanner": "scanner-primary", "fingerprint": "1c13d4072b2e908b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-23e5a64d0007ca38", "level": "none", "message": {"text": "Commented-code block (21 lines) in app/specific/PlayEtc.js:3002"}, "properties": {"repobilityId": "4905a4cf68d4fb04", "scanner": "scanner-primary", "fingerprint": "23e5a64d0007ca38", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d6f7672ef5c30b28", "level": "note", "message": {"text": "Legacy-named symbol `Play_data_old` in app/specific/Play.js:465"}, "properties": {"repobilityId": "dc076fec7b7eb3c1", "scanner": "scanner-primary", "fingerprint": "d6f7672ef5c30b28", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0f64f3af2a4f9c53", "level": "none", "message": {"text": "Commented-code block (8 lines) in app/specific/UserLiveFeedobj.js:57"}, "properties": {"repobilityId": "8a005e8ae949244c", "scanner": "scanner-primary", "fingerprint": "0f64f3af2a4f9c53", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5baab56a3f752452", "level": "note", "message": {"text": "Legacy-named symbol `PlayExtra_SwitchPlayerStoreOld` in app/specific/PlayExtra.js:187"}, "properties": {"repobilityId": "5f544c70d46b584a", "scanner": "scanner-primary", "fingerprint": "5baab56a3f752452", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1dbfdc4f608160a2", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/thirdparty/kapchat.js:190"}, "properties": {"repobilityId": "ed1729b20667663f", "scanner": "scanner-primary", "fingerprint": "1dbfdc4f608160a2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-13ae0f2db8741466", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/thirdparty/hls.min.js:1"}, "properties": {"repobilityId": "ad2a34a2a47fd1e5", "scanner": "scanner-primary", "fingerprint": "13ae0f2db8741466", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-50c30c7cfcd98386", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/general/TVKeyValue.js:21"}, "properties": {"repobilityId": "e89915ab0a3a6d99", "scanner": "scanner-primary", "fingerprint": "50c30c7cfcd98386", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-834f59228199f2db", "level": "note", "message": {"text": "Legacy-named symbol `151_old` in app/general/emojis.js:26"}, "properties": {"repobilityId": "f1df9ccba75a7133", "scanner": "scanner-primary", "fingerprint": "834f59228199f2db", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-349406bc1fcb4671", "level": "none", "message": {"text": "Commented-code block (5 lines) in release/scripts/tv-cdp.mjs:20"}, "properties": {"repobilityId": "0f8348bb8904c0bc", "scanner": "scanner-primary", "fingerprint": "349406bc1fcb4671", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-607d0ba85d9dd7d0", "level": "note", "message": {"text": "Unused endpoint: USE /__proxy"}, "properties": {"repobilityId": "1ba0e49fae2730c4", "scanner": "scanner-primary", "fingerprint": "607d0ba85d9dd7d0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}