{"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-847ee310dc01eed8", "name": "Possibly dead Python function: score", "shortDescription": {"text": "Possibly dead Python function: score"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-361dfdf97062eaab", "name": "Stray `console.log` in TS/JS \u2014 api/dots-predict.js:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 api/dots-predict.js:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-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-cade214d1817f4f2", "name": "Insecure pattern 'direct_innerhtml_assignment' in _home_v3.html:1869", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _home_v3.html:1869"}, "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-625fe18e989eae52", "name": "Insecure pattern 'direct_outerhtml_assignment' in _home_v3.html:2419", "shortDescription": {"text": "Insecure pattern 'direct_outerhtml_assignment' in _home_v3.html:2419"}, "fullDescription": {"text": "Found a known-risky pattern (direct_outerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-685c463f96de30c3", "name": "Possible secret in _dev_dashboard.html", "shortDescription": {"text": "Possible secret in _dev_dashboard.html"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-349dafa716c46d73", "name": "Insecure pattern 'direct_innerhtml_assignment' in _dev_dashboard.html:5150", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _dev_dashboard.html:5150"}, "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-6b60bf3ce45180ea", "name": "Insecure pattern 'direct_innerhtml_assignment' in _blog.html:674", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _blog.html:674"}, "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-96baee8affd5eb9e", "name": "Insecure pattern 'direct_innerhtml_assignment' in _ticker_rddt.html:2736", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _ticker_rddt.html:2736"}, "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-892bc81d015e14f4", "name": "Insecure pattern 'insert_adjacent_html' in _ticker_rddt.html:3097", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in _ticker_rddt.html:3097"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1cbbe3267ff813db", "name": "Insecure pattern 'direct_innerhtml_assignment' in _signal_lab_tab.html:903", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _signal_lab_tab.html:903"}, "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-8413945cf6adecce", "name": "Insecure pattern 'direct_innerhtml_assignment' in _narrative_heatmap.html:343", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _narrative_heatmap.html:343"}, "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-3acd9ff503e90ed7", "name": "Insecure pattern 'local_storage_auth_token' in _narrative_heatmap.html:251", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in _narrative_heatmap.html:251"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5ce511af011a76c3", "name": "Insecure pattern 'direct_innerhtml_assignment' in _signal_charts.html:452", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _signal_charts.html:452"}, "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-bb5c76f866b2396e", "name": "Insecure pattern 'direct_innerhtml_assignment' in _login.html:519", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _login.html:519"}, "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-8f8d54158e606fbe", "name": "Insecure pattern 'local_storage_auth_token' in _login.html:422", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in _login.html:422"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-56ae62b2692e5298", "name": "Insecure pattern 'direct_innerhtml_assignment' in _daily.html:565", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _daily.html:565"}, "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-d3a870c1cd04c447", "name": "Insecure pattern 'direct_innerhtml_assignment' in _ticker_backup.html:3016", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _ticker_backup.html:3016"}, "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-4cbdce9da87a59fa", "name": "Insecure pattern 'insert_adjacent_html' in _ticker_backup.html:3398", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in _ticker_backup.html:3398"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6a1c1e8fd9b4741a", "name": "Insecure pattern 'direct_innerhtml_assignment' in _home_v2.html:2097", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _home_v2.html:2097"}, "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-b63590ecc2ea63c6", "name": "Insecure pattern 'direct_outerhtml_assignment' in _home_v2.html:2764", "shortDescription": {"text": "Insecure pattern 'direct_outerhtml_assignment' in _home_v2.html:2764"}, "fullDescription": {"text": "Found a known-risky pattern (direct_outerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b2d6922cf7386cc8", "name": "Insecure pattern 'direct_innerhtml_assignment' in _home_staging.html:3149", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _home_staging.html:3149"}, "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-b68bebbd222daf0e", "name": "Insecure pattern 'direct_innerhtml_assignment' in _dashboard_v2.html:948", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _dashboard_v2.html:948"}, "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-599790d83940784e", "name": "Insecure pattern 'direct_innerhtml_assignment' in _ticker.html:5669", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _ticker.html:5669"}, "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-0ae839a016dc1531", "name": "Insecure pattern 'direct_outerhtml_assignment' in _ticker.html:6656", "shortDescription": {"text": "Insecure pattern 'direct_outerhtml_assignment' in _ticker.html:6656"}, "fullDescription": {"text": "Found a known-risky pattern (direct_outerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-110bd4f104dbf531", "name": "Insecure pattern 'insert_adjacent_html' in _ticker.html:7244", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in _ticker.html:7244"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ad2022653d251471", "name": "Insecure pattern 'direct_innerhtml_assignment' in _signal_lab.html:1125", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _signal_lab.html:1125"}, "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-e62187f59236896d", "name": "Insecure pattern 'local_storage_auth_token' in _signal_lab.html:972", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in _signal_lab.html:972"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-13e12e91324f1db1", "name": "Insecure pattern 'direct_innerhtml_assignment' in _ticker_dev.html:3166", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _ticker_dev.html:3166"}, "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-382abfebcfb42de0", "name": "Insecure pattern 'insert_adjacent_html' in _ticker_dev.html:3548", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in _ticker_dev.html:3548"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-580e006bb294e8b6", "name": "Insecure pattern 'direct_innerhtml_assignment' in _dev_home.html:3683", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _dev_home.html:3683"}, "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-b9577b3df2d987ff", "name": "Insecure pattern 'direct_innerhtml_assignment' in _search.html:1198", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _search.html:1198"}, "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-ae71d93d67d0997c", "name": "Insecure pattern 'direct_innerhtml_assignment' in _home.html:1719", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _home.html:1719"}, "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-285d40ef86defc5d", "name": "Insecure pattern 'direct_outerhtml_assignment' in _home.html:2366", "shortDescription": {"text": "Insecure pattern 'direct_outerhtml_assignment' in _home.html:2366"}, "fullDescription": {"text": "Found a known-risky pattern (direct_outerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bd630ee1664c4dc5", "name": "Insecure pattern 'direct_innerhtml_assignment' in _banner_preview.html:234", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _banner_preview.html:234"}, "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-4afd5df98355737f", "name": "Insecure pattern 'direct_innerhtml_assignment' in _home_dev.html:3259", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _home_dev.html:3259"}, "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-15724e77090accf7", "name": "Insecure pattern 'direct_innerhtml_assignment' in daily.html:541", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in daily.html:541"}, "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-94d007713ce9aa70", "name": "Insecure pattern 'direct_innerhtml_assignment' in _scorer_dev.html:577", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _scorer_dev.html:577"}, "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-e3bf084f4643175f", "name": "Insecure pattern 'direct_innerhtml_assignment' in _heatmap.html:593", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _heatmap.html:593"}, "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-db19254d9887be12", "name": "Insecure pattern 'direct_innerhtml_assignment' in _dev_ticker.html:4001", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _dev_ticker.html:4001"}, "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-8b14789cb47d3c44", "name": "Insecure pattern 'insert_adjacent_html' in _dev_ticker.html:4419", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in _dev_ticker.html:4419"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c42924a5864c0734", "name": "Insecure pattern 'direct_innerhtml_assignment' in _blog_post.html:668", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _blog_post.html:668"}, "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-82551595a8c6cbaa", "name": "Insecure pattern 'direct_innerhtml_assignment' in _author.html:249", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _author.html:249"}, "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-0a53776e0c2ef244", "name": "Possible secret in archive/_dev_dashboard_v1.html", "shortDescription": {"text": "Possible secret in archive/_dev_dashboard_v1.html"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-70f65187e29dd9a6", "name": "Insecure pattern 'direct_innerhtml_assignment' in archive/_dev_dashboard_v1.html:5144", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in archive/_dev_dashboard_v1.html:5144"}, "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-3bb5b07b826c6022", "name": "Insecure pattern 'cors_wildcard' in api/top-ai-picks.js:140", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in api/top-ai-picks.js:140"}, "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-4b15769f5e9ee2be", "name": "Insecure pattern 'cors_wildcard' in api/hero-summary.js:284", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in api/hero-summary.js:284"}, "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-d4c007f518f09331", "name": "Insecure pattern 'cors_wildcard' in api/interpret-chart.js:48", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in api/interpret-chart.js:48"}, "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-9175f30acbf2228c", "name": "Insecure pattern 'cors_wildcard' in api/scholar.js:36", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in api/scholar.js:36"}, "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-9e0748b00fd32a81", "name": "Insecure pattern 'cors_wildcard' in api/live-quotes-batch.js:52", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in api/live-quotes-batch.js:52"}, "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-9ca878cf89a4a3b5", "name": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-leaderboard.js:57", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-leaderboard.js:57"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c2bac9a1dd0667a1", "name": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-trading-cards.js:182", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-trading-cards.js:182"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-836d6e8e15eb765e", "name": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-sectors-themes.js:99", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-sectors-themes.js:99"}, "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-f11fccece3b12064", "name": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-trade-lanes.js:241", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-trade-lanes.js:241"}, "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-39efe63912fcb7d6", "name": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-trading-calendar.js:119", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-trading-calendar.js:119"}, "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-e1ab56b265e4894d", "name": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-daily-conviction.js:183", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-daily-conviction.js:183"}, "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-a8176ea7af3a48af", "name": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-market-weather.js:32", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-market-weather.js:32"}, "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-96ef578f8ec96a4a", "name": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-ticker-snapshots.js:46", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-ticker-snapshots.js:46"}, "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-50df99c8f071915e", "name": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-market-map.js:77", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-market-map.js:77"}, "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-3139650733b8e453", "name": "Insecure pattern 'insert_adjacent_html' in lib/mod-market-map.js:158", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in lib/mod-market-map.js:158"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e0a00c514512e547", "name": "Insecure pattern 'direct_innerhtml_assignment' in public/lib/mp-sidebar.js:329", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/lib/mp-sidebar.js:329"}, "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-4da63b5a044cc560", "name": "Insecure pattern 'direct_innerhtml_assignment' in public/lib/mp-topbar.js:98", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/lib/mp-topbar.js:98"}, "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-0b79a42e55a71dca", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0beb9e0649a5fde2", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-87d6615128174078", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "1 test file(s) for 86 source file(s) (ratio 0.01). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 69 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-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a86b0c61fcb572bf", "name": "Commented-code block (5 lines) in generate_earnings_forensic_deluxe.py:46", "shortDescription": {"text": "Commented-code block (5 lines) in generate_earnings_forensic_deluxe.py:46"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-41486370d6c9023b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 api/top-ai-picks.js:214", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/top-ai-picks.js:214"}, "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-c9ebf4e322381081", "name": "`fetch()` without try/.catch or AbortSignal \u2014 api/og-image.js:32", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/og-image.js:32"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6eeba67c66e41f9c", "name": "Commented-code block (5 lines) in api/constellation.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in api/constellation.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e7f32f73b5c3ce91", "name": "`fetch()` without try/.catch or AbortSignal \u2014 api/constellation.js:96", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/constellation.js:96"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5486405c4b4f3c61", "name": "Commented-code block (6 lines) in api/session.js:4", "shortDescription": {"text": "Commented-code block (6 lines) in api/session.js:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3a173138da038f3c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 api/ticker-details.js:38", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/ticker-details.js:38"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c8c0c12460503535", "name": "`fetch()` without try/.catch or AbortSignal \u2014 api/blog-post.js:30", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/blog-post.js:30"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d44699cf6597f457", "name": "Commented-code block (5 lines) in api/ticker-meme-card.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in api/ticker-meme-card.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-092548791e0e961b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 api/ticker-meme-card.js:171", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/ticker-meme-card.js:171"}, "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-f7c02f384127e8ae", "name": "Commented-code block (6 lines) in api/hero-summary.js:5", "shortDescription": {"text": "Commented-code block (6 lines) in api/hero-summary.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-82b4cc5eccb5cc08", "name": "Commented-code block (8 lines) in api/price-history.js:83", "shortDescription": {"text": "Commented-code block (8 lines) in api/price-history.js:83"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-65813829528519d8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 api/price-history.js:63", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/price-history.js:63"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c10cf69c45c7b639", "name": "`fetch()` without try/.catch or AbortSignal \u2014 api/news-sitemap.js:26", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/news-sitemap.js:26"}, "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-9cca7b115db6da44", "name": "Commented-code block (8 lines) in api/_rate-limit.js:3", "shortDescription": {"text": "Commented-code block (8 lines) in api/_rate-limit.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c4ee3fb3a98abe94", "name": "`fetch()` without try/.catch or AbortSignal \u2014 api/ticker.js:85", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/ticker.js:85"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d7694e332c98b23c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 api/interpret-chart.js:89", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/interpret-chart.js:89"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9331b5daacdf4290", "name": "Legacy-named symbol `dot_predictor_v1` in api/dots-predict.js:466", "shortDescription": {"text": "Legacy-named symbol `dot_predictor_v1` in api/dots-predict.js:466"}, "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-aa3132efd167135a", "name": "Commented-code block (5 lines) in api/dots-predict.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in api/dots-predict.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-15b19806a0033bcf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 api/dots-predict.js:324", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/dots-predict.js:324"}, "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-edf1bec8c12a8a9b", "name": "Commented-code block (6 lines) in api/watchlist.js:9", "shortDescription": {"text": "Commented-code block (6 lines) in api/watchlist.js:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0d71a24259595c4e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 api/watchlist.js:64", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/watchlist.js:64"}, "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-d12539387821a8f3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 api/live-quote.js:122", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/live-quote.js:122"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6a4f44d717431ca5", "name": "Commented-code block (7 lines) in api/robots.js:31", "shortDescription": {"text": "Commented-code block (7 lines) in api/robots.js:31"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0ae11477cab169a1", "name": "Legacy-named symbol `_dashboard_v2` in api/dashboard-v2.js:14", "shortDescription": {"text": "Legacy-named symbol `_dashboard_v2` in api/dashboard-v2.js:14"}, "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-29a19ceaabbd170b", "name": "Commented-code block (5 lines) in api/live-quotes-batch.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in api/live-quotes-batch.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-18c9a6cf9c9ec22b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 api/live-quotes-batch.js:93", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/live-quotes-batch.js:93"}, "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-70f77e7a60b8f2f0", "name": "Commented-code block (5 lines) in api/_require-auth.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in api/_require-auth.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-62ef4a0b19e69ddf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 api/_require-auth.js:29", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/_require-auth.js:29"}, "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-be3e63f60d0d5441", "name": "Commented-code block (9 lines) in api/_resolve-template.js:5", "shortDescription": {"text": "Commented-code block (9 lines) in api/_resolve-template.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1d99e37730015e52", "name": "Legacy-named symbol `_home_v2` in api/home-v2.js:8", "shortDescription": {"text": "Legacy-named symbol `_home_v2` in api/home-v2.js:8"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4e30f836c3b30fc0", "name": "Commented-code block (5 lines) in api/dashboard-black.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in api/dashboard-black.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-15f9db8dcf1c3a1e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 api/feed.js:26", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/feed.js:26"}, "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-eb28b2b0e7351d02", "name": "Commented-code block (5 lines) in lib/mod-trade-lanes.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in lib/mod-trade-lanes.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-91e95735f5d00c37", "name": "Legacy-named symbol `mp_cal_v2` in lib/mod-trading-calendar.js:32", "shortDescription": {"text": "Legacy-named symbol `mp_cal_v2` in lib/mod-trading-calendar.js:32"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7b43a29580b1ae48", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/mp-core.js:32", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/mp-core.js:32"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-457475796eb63c2a", "name": "Commented-code block (5 lines) in lib/mod-market-map.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in lib/mod-market-map.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f1ee9144e47e9046", "name": "Commented-code block (7 lines) in public/lib/mp-sidebar.js:15", "shortDescription": {"text": "Commented-code block (7 lines) in public/lib/mp-sidebar.js:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3177e234460c0e08", "name": "Commented-code block (5 lines) in public/lib/mp-topbar.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in public/lib/mp-topbar.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ef8b1d0ff1946764", "name": "`fetch()` without try/.catch or AbortSignal \u2014 public/lib/mp-topbar.js:152", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 public/lib/mp-topbar.js:152"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/20831"}, "properties": {"repository": "Taraknoll/marketprismmarch", "repoUrl": "https://github.com/Taraknoll/marketprismmarch", "branch": "main"}, "results": [{"ruleId": "scanner-847ee310dc01eed8", "level": "note", "message": {"text": "Possibly dead Python function: score"}, "properties": {"repobilityId": "379227b163d3203e", "scanner": "scanner-primary", "fingerprint": "847ee310dc01eed8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "generate_mp_blog.py:112"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-361dfdf97062eaab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 api/dots-predict.js:35"}, "properties": {"repobilityId": "b90a036aabec6ab3", "scanner": "scanner-primary", "fingerprint": "361dfdf97062eaab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"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-cade214d1817f4f2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _home_v3.html:1869"}, "properties": {"repobilityId": "dbc354732f6f61b1", "scanner": "scanner-primary", "fingerprint": "cade214d1817f4f2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_home_v3.html"}, "region": {"startLine": 1869}}}]}, {"ruleId": "scanner-625fe18e989eae52", "level": "warning", "message": {"text": "Insecure pattern 'direct_outerhtml_assignment' in _home_v3.html:2419"}, "properties": {"repobilityId": "c8374b57a21d0536", "scanner": "scanner-primary", "fingerprint": "625fe18e989eae52", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_outerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_home_v3.html"}, "region": {"startLine": 2419}}}]}, {"ruleId": "scanner-685c463f96de30c3", "level": "error", "message": {"text": "Possible secret in _dev_dashboard.html"}, "properties": {"repobilityId": "f988064408c55eb0", "scanner": "scanner-primary", "fingerprint": "685c463f96de30c3", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_dev_dashboard.html"}, "region": {"startLine": 4120}}}]}, {"ruleId": "scanner-349dafa716c46d73", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _dev_dashboard.html:5150"}, "properties": {"repobilityId": "4903974a94ba4a5b", "scanner": "scanner-primary", "fingerprint": "349dafa716c46d73", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_dev_dashboard.html"}, "region": {"startLine": 5150}}}]}, {"ruleId": "scanner-6b60bf3ce45180ea", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _blog.html:674"}, "properties": {"repobilityId": "f9ece71de3638ba6", "scanner": "scanner-primary", "fingerprint": "6b60bf3ce45180ea", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_blog.html"}, "region": {"startLine": 674}}}]}, {"ruleId": "scanner-96baee8affd5eb9e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _ticker_rddt.html:2736"}, "properties": {"repobilityId": "0c5da79d2cee7b9d", "scanner": "scanner-primary", "fingerprint": "96baee8affd5eb9e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_ticker_rddt.html"}, "region": {"startLine": 2736}}}]}, {"ruleId": "scanner-892bc81d015e14f4", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in _ticker_rddt.html:3097"}, "properties": {"repobilityId": "53ed1d7b98b9cd4f", "scanner": "scanner-primary", "fingerprint": "892bc81d015e14f4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_ticker_rddt.html"}, "region": {"startLine": 3097}}}]}, {"ruleId": "scanner-1cbbe3267ff813db", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _signal_lab_tab.html:903"}, "properties": {"repobilityId": "cb6b900e7fca0339", "scanner": "scanner-primary", "fingerprint": "1cbbe3267ff813db", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_signal_lab_tab.html"}, "region": {"startLine": 903}}}]}, {"ruleId": "scanner-8413945cf6adecce", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _narrative_heatmap.html:343"}, "properties": {"repobilityId": "c8fabaca6ed8c353", "scanner": "scanner-primary", "fingerprint": "8413945cf6adecce", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_narrative_heatmap.html"}, "region": {"startLine": 343}}}]}, {"ruleId": "scanner-3acd9ff503e90ed7", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in _narrative_heatmap.html:251"}, "properties": {"repobilityId": "8ba99866788f8176", "scanner": "scanner-primary", "fingerprint": "3acd9ff503e90ed7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_narrative_heatmap.html"}, "region": {"startLine": 251}}}]}, {"ruleId": "scanner-5ce511af011a76c3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _signal_charts.html:452"}, "properties": {"repobilityId": "cd2d8cb8e9f8b84d", "scanner": "scanner-primary", "fingerprint": "5ce511af011a76c3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_signal_charts.html"}, "region": {"startLine": 452}}}]}, {"ruleId": "scanner-bb5c76f866b2396e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _login.html:519"}, "properties": {"repobilityId": "070daef91476ebc4", "scanner": "scanner-primary", "fingerprint": "bb5c76f866b2396e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_login.html"}, "region": {"startLine": 519}}}]}, {"ruleId": "scanner-8f8d54158e606fbe", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in _login.html:422"}, "properties": {"repobilityId": "10c0543ee37b8209", "scanner": "scanner-primary", "fingerprint": "8f8d54158e606fbe", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_login.html"}, "region": {"startLine": 422}}}]}, {"ruleId": "scanner-56ae62b2692e5298", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _daily.html:565"}, "properties": {"repobilityId": "4e2fed8bbad34f0e", "scanner": "scanner-primary", "fingerprint": "56ae62b2692e5298", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_daily.html"}, "region": {"startLine": 565}}}]}, {"ruleId": "scanner-d3a870c1cd04c447", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _ticker_backup.html:3016"}, "properties": {"repobilityId": "3640225e8cf21e5b", "scanner": "scanner-primary", "fingerprint": "d3a870c1cd04c447", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_ticker_backup.html"}, "region": {"startLine": 3016}}}]}, {"ruleId": "scanner-4cbdce9da87a59fa", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in _ticker_backup.html:3398"}, "properties": {"repobilityId": "15964c8e61f52fac", "scanner": "scanner-primary", "fingerprint": "4cbdce9da87a59fa", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_ticker_backup.html"}, "region": {"startLine": 3398}}}]}, {"ruleId": "scanner-6a1c1e8fd9b4741a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _home_v2.html:2097"}, "properties": {"repobilityId": "e3ef558931bba962", "scanner": "scanner-primary", "fingerprint": "6a1c1e8fd9b4741a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_home_v2.html"}, "region": {"startLine": 2097}}}]}, {"ruleId": "scanner-b63590ecc2ea63c6", "level": "warning", "message": {"text": "Insecure pattern 'direct_outerhtml_assignment' in _home_v2.html:2764"}, "properties": {"repobilityId": "0f7ecbce8514c5e7", "scanner": "scanner-primary", "fingerprint": "b63590ecc2ea63c6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_outerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_home_v2.html"}, "region": {"startLine": 2764}}}]}, {"ruleId": "scanner-b2d6922cf7386cc8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _home_staging.html:3149"}, "properties": {"repobilityId": "35f35e1d89231d16", "scanner": "scanner-primary", "fingerprint": "b2d6922cf7386cc8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_home_staging.html"}, "region": {"startLine": 3149}}}]}, {"ruleId": "scanner-b68bebbd222daf0e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _dashboard_v2.html:948"}, "properties": {"repobilityId": "3b6800eebfd3640d", "scanner": "scanner-primary", "fingerprint": "b68bebbd222daf0e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_dashboard_v2.html"}, "region": {"startLine": 948}}}]}, {"ruleId": "scanner-599790d83940784e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _ticker.html:5669"}, "properties": {"repobilityId": "ef770b5d879b0f96", "scanner": "scanner-primary", "fingerprint": "599790d83940784e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_ticker.html"}, "region": {"startLine": 5669}}}]}, {"ruleId": "scanner-0ae839a016dc1531", "level": "warning", "message": {"text": "Insecure pattern 'direct_outerhtml_assignment' in _ticker.html:6656"}, "properties": {"repobilityId": "9ba0652894b5c32c", "scanner": "scanner-primary", "fingerprint": "0ae839a016dc1531", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_outerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_ticker.html"}, "region": {"startLine": 6656}}}]}, {"ruleId": "scanner-110bd4f104dbf531", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in _ticker.html:7244"}, "properties": {"repobilityId": "0bcb5a8cb9f66fa1", "scanner": "scanner-primary", "fingerprint": "110bd4f104dbf531", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_ticker.html"}, "region": {"startLine": 7244}}}]}, {"ruleId": "scanner-ad2022653d251471", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _signal_lab.html:1125"}, "properties": {"repobilityId": "cfc6c81983f7587c", "scanner": "scanner-primary", "fingerprint": "ad2022653d251471", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_signal_lab.html"}, "region": {"startLine": 1125}}}]}, {"ruleId": "scanner-e62187f59236896d", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in _signal_lab.html:972"}, "properties": {"repobilityId": "9199880a1f7bbfae", "scanner": "scanner-primary", "fingerprint": "e62187f59236896d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_signal_lab.html"}, "region": {"startLine": 972}}}]}, {"ruleId": "scanner-13e12e91324f1db1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _ticker_dev.html:3166"}, "properties": {"repobilityId": "4c206995cc5bb97b", "scanner": "scanner-primary", "fingerprint": "13e12e91324f1db1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_ticker_dev.html"}, "region": {"startLine": 3166}}}]}, {"ruleId": "scanner-382abfebcfb42de0", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in _ticker_dev.html:3548"}, "properties": {"repobilityId": "2c72daa63cc80a18", "scanner": "scanner-primary", "fingerprint": "382abfebcfb42de0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_ticker_dev.html"}, "region": {"startLine": 3548}}}]}, {"ruleId": "scanner-580e006bb294e8b6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _dev_home.html:3683"}, "properties": {"repobilityId": "aa743bacde0d0463", "scanner": "scanner-primary", "fingerprint": "580e006bb294e8b6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_dev_home.html"}, "region": {"startLine": 3683}}}]}, {"ruleId": "scanner-b9577b3df2d987ff", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _search.html:1198"}, "properties": {"repobilityId": "72c6b1c2dc2ae4c9", "scanner": "scanner-primary", "fingerprint": "b9577b3df2d987ff", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_search.html"}, "region": {"startLine": 1198}}}]}, {"ruleId": "scanner-ae71d93d67d0997c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _home.html:1719"}, "properties": {"repobilityId": "94d424bdc0d05966", "scanner": "scanner-primary", "fingerprint": "ae71d93d67d0997c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_home.html"}, "region": {"startLine": 1719}}}]}, {"ruleId": "scanner-285d40ef86defc5d", "level": "warning", "message": {"text": "Insecure pattern 'direct_outerhtml_assignment' in _home.html:2366"}, "properties": {"repobilityId": "e3c75f2536d3818d", "scanner": "scanner-primary", "fingerprint": "285d40ef86defc5d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_outerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_home.html"}, "region": {"startLine": 2366}}}]}, {"ruleId": "scanner-bd630ee1664c4dc5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _banner_preview.html:234"}, "properties": {"repobilityId": "04d008b904ff9780", "scanner": "scanner-primary", "fingerprint": "bd630ee1664c4dc5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_banner_preview.html"}, "region": {"startLine": 234}}}]}, {"ruleId": "scanner-4afd5df98355737f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _home_dev.html:3259"}, "properties": {"repobilityId": "af20d546b4b82cdc", "scanner": "scanner-primary", "fingerprint": "4afd5df98355737f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_home_dev.html"}, "region": {"startLine": 3259}}}]}, {"ruleId": "scanner-15724e77090accf7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in daily.html:541"}, "properties": {"repobilityId": "33e3bf8dc9778dda", "scanner": "scanner-primary", "fingerprint": "15724e77090accf7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "daily.html"}, "region": {"startLine": 541}}}]}, {"ruleId": "scanner-94d007713ce9aa70", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _scorer_dev.html:577"}, "properties": {"repobilityId": "93c4587983632ea1", "scanner": "scanner-primary", "fingerprint": "94d007713ce9aa70", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_scorer_dev.html"}, "region": {"startLine": 577}}}]}, {"ruleId": "scanner-e3bf084f4643175f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _heatmap.html:593"}, "properties": {"repobilityId": "0105e828ee67c9e5", "scanner": "scanner-primary", "fingerprint": "e3bf084f4643175f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_heatmap.html"}, "region": {"startLine": 593}}}]}, {"ruleId": "scanner-db19254d9887be12", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _dev_ticker.html:4001"}, "properties": {"repobilityId": "cc71d4376978e471", "scanner": "scanner-primary", "fingerprint": "db19254d9887be12", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_dev_ticker.html"}, "region": {"startLine": 4001}}}]}, {"ruleId": "scanner-8b14789cb47d3c44", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in _dev_ticker.html:4419"}, "properties": {"repobilityId": "87fdf6daa6416884", "scanner": "scanner-primary", "fingerprint": "8b14789cb47d3c44", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_dev_ticker.html"}, "region": {"startLine": 4419}}}]}, {"ruleId": "scanner-c42924a5864c0734", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _blog_post.html:668"}, "properties": {"repobilityId": "e5e44b892c4187ef", "scanner": "scanner-primary", "fingerprint": "c42924a5864c0734", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_blog_post.html"}, "region": {"startLine": 668}}}]}, {"ruleId": "scanner-82551595a8c6cbaa", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _author.html:249"}, "properties": {"repobilityId": "7a67920acc790697", "scanner": "scanner-primary", "fingerprint": "82551595a8c6cbaa", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_author.html"}, "region": {"startLine": 249}}}]}, {"ruleId": "scanner-0a53776e0c2ef244", "level": "error", "message": {"text": "Possible secret in archive/_dev_dashboard_v1.html"}, "properties": {"repobilityId": "aae779bafcc6769f", "scanner": "scanner-primary", "fingerprint": "0a53776e0c2ef244", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "archive/_dev_dashboard_v1.html"}, "region": {"startLine": 4114}}}]}, {"ruleId": "scanner-70f65187e29dd9a6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in archive/_dev_dashboard_v1.html:5144"}, "properties": {"repobilityId": "239baf2e710fa2d4", "scanner": "scanner-primary", "fingerprint": "70f65187e29dd9a6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "archive/_dev_dashboard_v1.html"}, "region": {"startLine": 5144}}}]}, {"ruleId": "scanner-3bb5b07b826c6022", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in api/top-ai-picks.js:140"}, "properties": {"repobilityId": "aa23c0c547dd6172", "scanner": "scanner-primary", "fingerprint": "3bb5b07b826c6022", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/top-ai-picks.js"}, "region": {"startLine": 140}}}]}, {"ruleId": "scanner-4b15769f5e9ee2be", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in api/hero-summary.js:284"}, "properties": {"repobilityId": "684d716aaa60308a", "scanner": "scanner-primary", "fingerprint": "4b15769f5e9ee2be", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/hero-summary.js"}, "region": {"startLine": 284}}}]}, {"ruleId": "scanner-d4c007f518f09331", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in api/interpret-chart.js:48"}, "properties": {"repobilityId": "a5d44931a73198ee", "scanner": "scanner-primary", "fingerprint": "d4c007f518f09331", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/interpret-chart.js"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-9175f30acbf2228c", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in api/scholar.js:36"}, "properties": {"repobilityId": "e03fb2b28f90cb4a", "scanner": "scanner-primary", "fingerprint": "9175f30acbf2228c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/scholar.js"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-9e0748b00fd32a81", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in api/live-quotes-batch.js:52"}, "properties": {"repobilityId": "d52c703cd19e302f", "scanner": "scanner-primary", "fingerprint": "9e0748b00fd32a81", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/live-quotes-batch.js"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-9ca878cf89a4a3b5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-leaderboard.js:57"}, "properties": {"repobilityId": "4d9866afe2aee735", "scanner": "scanner-primary", "fingerprint": "9ca878cf89a4a3b5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/mod-leaderboard.js"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-c2bac9a1dd0667a1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-trading-cards.js:182"}, "properties": {"repobilityId": "96a4c5e3e643610e", "scanner": "scanner-primary", "fingerprint": "c2bac9a1dd0667a1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/mod-trading-cards.js"}, "region": {"startLine": 182}}}]}, {"ruleId": "scanner-836d6e8e15eb765e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-sectors-themes.js:99"}, "properties": {"repobilityId": "f180bfdebee3b5a3", "scanner": "scanner-primary", "fingerprint": "836d6e8e15eb765e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/mod-sectors-themes.js"}, "region": {"startLine": 99}}}]}, {"ruleId": "scanner-f11fccece3b12064", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-trade-lanes.js:241"}, "properties": {"repobilityId": "167988193d82448a", "scanner": "scanner-primary", "fingerprint": "f11fccece3b12064", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/mod-trade-lanes.js"}, "region": {"startLine": 241}}}]}, {"ruleId": "scanner-39efe63912fcb7d6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-trading-calendar.js:119"}, "properties": {"repobilityId": "3a3caa23be01cfd1", "scanner": "scanner-primary", "fingerprint": "39efe63912fcb7d6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/mod-trading-calendar.js"}, "region": {"startLine": 119}}}]}, {"ruleId": "scanner-e1ab56b265e4894d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-daily-conviction.js:183"}, "properties": {"repobilityId": "b3124f50a6db92d5", "scanner": "scanner-primary", "fingerprint": "e1ab56b265e4894d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/mod-daily-conviction.js"}, "region": {"startLine": 183}}}]}, {"ruleId": "scanner-a8176ea7af3a48af", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-market-weather.js:32"}, "properties": {"repobilityId": "653e51e34e39ca6e", "scanner": "scanner-primary", "fingerprint": "a8176ea7af3a48af", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/mod-market-weather.js"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-96ef578f8ec96a4a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-ticker-snapshots.js:46"}, "properties": {"repobilityId": "5a182f72597db1d1", "scanner": "scanner-primary", "fingerprint": "96ef578f8ec96a4a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/mod-ticker-snapshots.js"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-50df99c8f071915e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in lib/mod-market-map.js:77"}, "properties": {"repobilityId": "5d554f59fb5b0118", "scanner": "scanner-primary", "fingerprint": "50df99c8f071915e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/mod-market-map.js"}, "region": {"startLine": 77}}}]}, {"ruleId": "scanner-3139650733b8e453", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in lib/mod-market-map.js:158"}, "properties": {"repobilityId": "2e70e987551196fa", "scanner": "scanner-primary", "fingerprint": "3139650733b8e453", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lib/mod-market-map.js"}, "region": {"startLine": 158}}}]}, {"ruleId": "scanner-e0a00c514512e547", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/lib/mp-sidebar.js:329"}, "properties": {"repobilityId": "b4407ff5b6bb10bf", "scanner": "scanner-primary", "fingerprint": "e0a00c514512e547", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "public/lib/mp-sidebar.js"}, "region": {"startLine": 329}}}]}, {"ruleId": "scanner-4da63b5a044cc560", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/lib/mp-topbar.js:98"}, "properties": {"repobilityId": "d16307cc79830d0b", "scanner": "scanner-primary", "fingerprint": "4da63b5a044cc560", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "public/lib/mp-topbar.js"}, "region": {"startLine": 98}}}]}, {"ruleId": "scanner-0b79a42e55a71dca", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cbccc211af1e4e3b", "scanner": "scanner-primary", "fingerprint": "0b79a42e55a71dca", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/generate_mp_blog.yml"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-0b79a42e55a71dca", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b01fd8efea4fe148", "scanner": "scanner-primary", "fingerprint": "0b79a42e55a71dca", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/generate_mp_blog.yml"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-0beb9e0649a5fde2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e7489bc05c1518bb", "scanner": "scanner-primary", "fingerprint": "0beb9e0649a5fde2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/generate_earnings_forensic.yml"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-0beb9e0649a5fde2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "11ac2fc936f8dfcc", "scanner": "scanner-primary", "fingerprint": "0beb9e0649a5fde2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/generate_earnings_forensic.yml"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-87d6615128174078", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d3b5e5fab672217e", "scanner": "scanner-primary", "fingerprint": "87d6615128174078", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/generate_earnings_forensic_deluxe.yml"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-87d6615128174078", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a719568abd11eea5", "scanner": "scanner-primary", "fingerprint": "87d6615128174078", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/generate_earnings_forensic_deluxe.yml"}, "region": {"startLine": 48}}}]}, {"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-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "2364bcb1028a36bf", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "1014a51dc6b91ce9", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "de85ed8872c9e979", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "8d2aea8b5c32957c", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "d7ce8feeaef1de9f", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "0d5aab32bbb884f3", "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": "bf07eb5b51e4f6b4", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-a86b0c61fcb572bf", "level": "none", "message": {"text": "Commented-code block (5 lines) in generate_earnings_forensic_deluxe.py:46"}, "properties": {"repobilityId": "22781c04b60aa18d", "scanner": "scanner-primary", "fingerprint": "a86b0c61fcb572bf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-41486370d6c9023b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/top-ai-picks.js:214"}, "properties": {"repobilityId": "b0998b13f3a4f880", "scanner": "scanner-primary", "fingerprint": "41486370d6c9023b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c9ebf4e322381081", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/og-image.js:32"}, "properties": {"repobilityId": "86dda2d1a296fc23", "scanner": "scanner-primary", "fingerprint": "c9ebf4e322381081", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6eeba67c66e41f9c", "level": "none", "message": {"text": "Commented-code block (5 lines) in api/constellation.js:1"}, "properties": {"repobilityId": "9e8a4d43da52e7f7", "scanner": "scanner-primary", "fingerprint": "6eeba67c66e41f9c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e7f32f73b5c3ce91", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/constellation.js:96"}, "properties": {"repobilityId": "9784145181592b59", "scanner": "scanner-primary", "fingerprint": "e7f32f73b5c3ce91", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5486405c4b4f3c61", "level": "none", "message": {"text": "Commented-code block (6 lines) in api/session.js:4"}, "properties": {"repobilityId": "e53ad8122e969475", "scanner": "scanner-primary", "fingerprint": "5486405c4b4f3c61", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3a173138da038f3c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/ticker-details.js:38"}, "properties": {"repobilityId": "077db3d21438c410", "scanner": "scanner-primary", "fingerprint": "3a173138da038f3c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c8c0c12460503535", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/blog-post.js:30"}, "properties": {"repobilityId": "00665258fb4a91cd", "scanner": "scanner-primary", "fingerprint": "c8c0c12460503535", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d44699cf6597f457", "level": "none", "message": {"text": "Commented-code block (5 lines) in api/ticker-meme-card.js:3"}, "properties": {"repobilityId": "e03693c4a4a7fa00", "scanner": "scanner-primary", "fingerprint": "d44699cf6597f457", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-092548791e0e961b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/ticker-meme-card.js:171"}, "properties": {"repobilityId": "d52cca5dc4e8a6b3", "scanner": "scanner-primary", "fingerprint": "092548791e0e961b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f7c02f384127e8ae", "level": "none", "message": {"text": "Commented-code block (6 lines) in api/hero-summary.js:5"}, "properties": {"repobilityId": "004b1cf7004a84ce", "scanner": "scanner-primary", "fingerprint": "f7c02f384127e8ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-82b4cc5eccb5cc08", "level": "none", "message": {"text": "Commented-code block (8 lines) in api/price-history.js:83"}, "properties": {"repobilityId": "0a6f529a4e020ed4", "scanner": "scanner-primary", "fingerprint": "82b4cc5eccb5cc08", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-65813829528519d8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/price-history.js:63"}, "properties": {"repobilityId": "3f06b7f972dd273f", "scanner": "scanner-primary", "fingerprint": "65813829528519d8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c10cf69c45c7b639", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/news-sitemap.js:26"}, "properties": {"repobilityId": "76da9a821f27cd4b", "scanner": "scanner-primary", "fingerprint": "c10cf69c45c7b639", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9cca7b115db6da44", "level": "none", "message": {"text": "Commented-code block (8 lines) in api/_rate-limit.js:3"}, "properties": {"repobilityId": "9eb1f42c73145fce", "scanner": "scanner-primary", "fingerprint": "9cca7b115db6da44", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c4ee3fb3a98abe94", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/ticker.js:85"}, "properties": {"repobilityId": "150790f762534a33", "scanner": "scanner-primary", "fingerprint": "c4ee3fb3a98abe94", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d7694e332c98b23c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/interpret-chart.js:89"}, "properties": {"repobilityId": "db384b0b0f95311f", "scanner": "scanner-primary", "fingerprint": "d7694e332c98b23c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9331b5daacdf4290", "level": "note", "message": {"text": "Legacy-named symbol `dot_predictor_v1` in api/dots-predict.js:466"}, "properties": {"repobilityId": "5efbae25592152af", "scanner": "scanner-primary", "fingerprint": "9331b5daacdf4290", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-aa3132efd167135a", "level": "none", "message": {"text": "Commented-code block (5 lines) in api/dots-predict.js:1"}, "properties": {"repobilityId": "d35cdf345f062296", "scanner": "scanner-primary", "fingerprint": "aa3132efd167135a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-15b19806a0033bcf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/dots-predict.js:324"}, "properties": {"repobilityId": "20fe163d72c62213", "scanner": "scanner-primary", "fingerprint": "15b19806a0033bcf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-edf1bec8c12a8a9b", "level": "none", "message": {"text": "Commented-code block (6 lines) in api/watchlist.js:9"}, "properties": {"repobilityId": "682b6b7224f3a522", "scanner": "scanner-primary", "fingerprint": "edf1bec8c12a8a9b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d71a24259595c4e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/watchlist.js:64"}, "properties": {"repobilityId": "2381c54fa57bb5bf", "scanner": "scanner-primary", "fingerprint": "0d71a24259595c4e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d12539387821a8f3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/live-quote.js:122"}, "properties": {"repobilityId": "f083329e9a55f218", "scanner": "scanner-primary", "fingerprint": "d12539387821a8f3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6a4f44d717431ca5", "level": "none", "message": {"text": "Commented-code block (7 lines) in api/robots.js:31"}, "properties": {"repobilityId": "a05e284161fe80fc", "scanner": "scanner-primary", "fingerprint": "6a4f44d717431ca5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0ae11477cab169a1", "level": "note", "message": {"text": "Legacy-named symbol `_dashboard_v2` in api/dashboard-v2.js:14"}, "properties": {"repobilityId": "36bd9e49bedfc605", "scanner": "scanner-primary", "fingerprint": "0ae11477cab169a1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-29a19ceaabbd170b", "level": "none", "message": {"text": "Commented-code block (5 lines) in api/live-quotes-batch.js:1"}, "properties": {"repobilityId": "79fa7129d85fa914", "scanner": "scanner-primary", "fingerprint": "29a19ceaabbd170b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18c9a6cf9c9ec22b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/live-quotes-batch.js:93"}, "properties": {"repobilityId": "648df9f965781267", "scanner": "scanner-primary", "fingerprint": "18c9a6cf9c9ec22b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-70f77e7a60b8f2f0", "level": "none", "message": {"text": "Commented-code block (5 lines) in api/_require-auth.js:1"}, "properties": {"repobilityId": "41edaa13a385422c", "scanner": "scanner-primary", "fingerprint": "70f77e7a60b8f2f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62ef4a0b19e69ddf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/_require-auth.js:29"}, "properties": {"repobilityId": "f4a9e40f3ab9a797", "scanner": "scanner-primary", "fingerprint": "62ef4a0b19e69ddf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-be3e63f60d0d5441", "level": "none", "message": {"text": "Commented-code block (9 lines) in api/_resolve-template.js:5"}, "properties": {"repobilityId": "24fc613cbbc1f346", "scanner": "scanner-primary", "fingerprint": "be3e63f60d0d5441", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1d99e37730015e52", "level": "note", "message": {"text": "Legacy-named symbol `_home_v2` in api/home-v2.js:8"}, "properties": {"repobilityId": "149a0d07945f10f2", "scanner": "scanner-primary", "fingerprint": "1d99e37730015e52", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4e30f836c3b30fc0", "level": "none", "message": {"text": "Commented-code block (5 lines) in api/dashboard-black.js:1"}, "properties": {"repobilityId": "635b064585e93f19", "scanner": "scanner-primary", "fingerprint": "4e30f836c3b30fc0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-15f9db8dcf1c3a1e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/feed.js:26"}, "properties": {"repobilityId": "e1e5e5fcaea1bc79", "scanner": "scanner-primary", "fingerprint": "15f9db8dcf1c3a1e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eb28b2b0e7351d02", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/mod-trade-lanes.js:1"}, "properties": {"repobilityId": "d9919081e0be58b5", "scanner": "scanner-primary", "fingerprint": "eb28b2b0e7351d02", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91e95735f5d00c37", "level": "note", "message": {"text": "Legacy-named symbol `mp_cal_v2` in lib/mod-trading-calendar.js:32"}, "properties": {"repobilityId": "aa7eebee43cd2183", "scanner": "scanner-primary", "fingerprint": "91e95735f5d00c37", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7b43a29580b1ae48", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/mp-core.js:32"}, "properties": {"repobilityId": "bf5930d8759625cc", "scanner": "scanner-primary", "fingerprint": "7b43a29580b1ae48", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-457475796eb63c2a", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/mod-market-map.js:1"}, "properties": {"repobilityId": "f4a5422be45f8c34", "scanner": "scanner-primary", "fingerprint": "457475796eb63c2a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f1ee9144e47e9046", "level": "none", "message": {"text": "Commented-code block (7 lines) in public/lib/mp-sidebar.js:15"}, "properties": {"repobilityId": "6b3cbe03e42bc4ae", "scanner": "scanner-primary", "fingerprint": "f1ee9144e47e9046", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3177e234460c0e08", "level": "none", "message": {"text": "Commented-code block (5 lines) in public/lib/mp-topbar.js:1"}, "properties": {"repobilityId": "f257e3367c33829e", "scanner": "scanner-primary", "fingerprint": "3177e234460c0e08", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef8b1d0ff1946764", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 public/lib/mp-topbar.js:152"}, "properties": {"repobilityId": "a78a64a2a1bf759e", "scanner": "scanner-primary", "fingerprint": "ef8b1d0ff1946764", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}]}]}