{"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-1c9e12e1b3745ff6", "name": "Stray `console.log` in TS/JS \u2014 analyze_trades.js:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 analyze_trades.js:18"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9c61dab5c2ed4749", "name": "Stray `console.log` in TS/JS \u2014 scratch_analyze_losses.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scratch_analyze_losses.js:25"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d2338b386fe458e5", "name": "Stray `console.log` in TS/JS \u2014 fix-sol.js:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 fix-sol.js:24"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7f31a7346d73ee5b", "name": "Stray `console.log` in TS/JS \u2014 scratch_check_xrp.js:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scratch_check_xrp.js:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e2cfb5fa8fd8a401", "name": "Stray `console.log` in TS/JS \u2014 check-precision.js:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check-precision.js:26"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-232c4ecf47f44338", "name": "Stray `console.log` in TS/JS \u2014 check_db.js:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 check_db.js:10"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-75b8d8be1579adfd", "name": "Stray `console.log` in TS/JS \u2014 micro-scalper.js:149", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 micro-scalper.js:149"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7bcd9da57bf3b323", "name": "Stray `console.log` in TS/JS \u2014 scalper-run.js:189", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scalper-run.js:189"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6247c8b376003cab", "name": "Stray `console.log` in TS/JS \u2014 scratch_query_positions.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scratch_query_positions.js:7"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3a1512cf8451be2e", "name": "Stray `console.log` in TS/JS \u2014 scratch_market_check.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scratch_market_check.js:9"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-159c5312391fc890", "name": "Stray `console.log` in TS/JS \u2014 masterbot/cleanup.js:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 masterbot/cleanup.js:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a04d3c57c11780cd", "name": "Stray `console.log` in TS/JS \u2014 masterbot/range-backtest.js:138", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 masterbot/range-backtest.js:138"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9f967d8df67c0a8c", "name": "Stray `console.log` in TS/JS \u2014 masterbot/test_db.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 masterbot/test_db.js:14"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c3fc1f4beb77bf75", "name": "Stray `console.log` in TS/JS \u2014 masterbot/db.js:194", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 masterbot/db.js:194"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6aa8655db5978aa5", "name": "Stray `console.log` in TS/JS \u2014 masterbot/bot.js:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 masterbot/bot.js:65"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a19e2439b93c5063", "name": "Stray `console.log` in TS/JS \u2014 masterbot/migrate-to-postgres.js:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 masterbot/migrate-to-postgres.js:26"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d779186f9e0278e4", "name": "Stray `console.log` in TS/JS \u2014 masterbot/scratch/backtest-smoke.js:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 masterbot/scratch/backtest-smoke.js:38"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-97fe60d805a4d5d9", "name": "Stray `console.log` in TS/JS \u2014 scripts/pine_push.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pine_push.js:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-315a46a22bfa0fb7", "name": "Stray `console.log` in TS/JS \u2014 scripts/pine_pull.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pine_pull.js:21"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3bfefef64f41e31f", "name": "Stray `console.log` in TS/JS \u2014 dashboard/server.js:224", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/server.js:224"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-85fb4608bedc7e61", "name": "Stray `console.log` in TS/JS \u2014 trading-saas/frontend/copy-standalone.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 trading-saas/frontend/copy-standalone.js:14"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fd6ee572e78cde88", "name": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/components/CommandPalette.tsx:116", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/components/CommandPalette.tsx:116"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-636b93478663363d", "name": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/components/layout/Sidebar.tsx:19", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/components/layout/Sidebar.tsx:19"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5958e33afb074b2e", "name": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/components/layout/Topbar.tsx:226", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/components/layout/Topbar.tsx:226"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4e5cf34886abf58b", "name": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/components/strategy/ShareStrategyModal.ts", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/components/strategy/ShareStrategyModal.tsx:106"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-045b761cfca342f8", "name": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/components/ui/Card.tsx:59", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/components/ui/Card.tsx:59"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-15d9f21c0f27ef14", "name": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/app/page.tsx:295", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/app/page.tsx:295"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2b855af15384a7a6", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 trading-saas/frontend/src/app/login/page.tsx:206", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 trading-saas/frontend/src/app/login/page.tsx:206"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-892f1f4cae3bdf85", "name": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/app/status/page.tsx:147", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/app/status/page.tsx:147"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-33f9f952450f8f34", "name": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/app/diario/page.tsx:550", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/app/diario/page.tsx:550"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b13134067e1490d4", "name": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/app/posicoes/page.tsx:398", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/app/posicoes/page.tsx:398"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bf0047de6eac031b", "name": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/app/bots/page.tsx:440", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/app/bots/page.tsx:440"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-abce3fc9a8354c43", "name": "Stray `console.log` in TS/JS \u2014 adaptive-bot/bot.js:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 adaptive-bot/bot.js:60"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ad9c8b8f04b39701", "name": "Stray `console.log` in TS/JS \u2014 src/cli/router.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/cli/router.js:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f37a5dada760695d", "name": "Stray `console.log` in TS/JS \u2014 src/exchange/binance.js:157", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/exchange/binance.js:157"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5345f8b34a53e43c", "name": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/index.html:1641", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/index.html:1641"}, "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-f3dfbab2f08a1144", "name": "Insecure pattern 'direct_outerhtml_assignment' in dashboard/index.html:4853", "shortDescription": {"text": "Insecure pattern 'direct_outerhtml_assignment' in dashboard/index.html:4853"}, "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-f94f849c4dd98edf", "name": "Insecure pattern 'insert_adjacent_html' in dashboard/index.html:2244", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in dashboard/index.html:2244"}, "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-d3abcd115e93a53b", "name": "Insecure pattern 'cors_wildcard' in dashboard/server-optimized.js:8", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in dashboard/server-optimized.js:8"}, "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-ffcb4b2724cbbfd4", "name": "Insecure pattern 'node_child_process' in dashboard/server.js:13", "shortDescription": {"text": "Insecure pattern 'node_child_process' in dashboard/server.js:13"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-abbc1cd540d6ef5d", "name": "Insecure pattern 'direct_innerhtml_assignment' in trading-saas/frontend/src/components/TradingViewWidget.tsx:36", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in trading-saas/frontend/src/components/TradingViewWidget.tsx:36"}, "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-a40402d263f1bc37", "name": "Insecure pattern 'dangerous_innerhtml' in trading-saas/frontend/src/app/login/page.tsx:206", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in trading-saas/frontend/src/app/login/page.tsx:206"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3a27e4a71b8a9ba9", "name": "Insecure pattern 'local_storage_auth_token' in trading-saas/frontend/src/app/login/page.tsx:128", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in trading-saas/frontend/src/app/login/page.tsx:128"}, "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-7481f93a87e5a269", "name": "Insecure pattern 'node_child_process' in src/core/health.js:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/core/health.js:6"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cb20b92ac77fab98", "name": "Very large file: tests/e2e.test.js (1584 lines)", "shortDescription": {"text": "Very large file: tests/e2e.test.js (1584 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d3d2961cacaa8f71", "name": "Very large file: masterbot/bot.js (2257 lines)", "shortDescription": {"text": "Very large file: masterbot/bot.js (2257 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fd4168de36f300c0", "name": "Very large file: dashboard/server.js (3850 lines)", "shortDescription": {"text": "Very large file: dashboard/server.js (3850 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1390d4b27f33f3f0", "name": "Very large file: trading-saas/frontend/src/app/bots/page.tsx (1188 lines)", "shortDescription": {"text": "Very large file: trading-saas/frontend/src/app/bots/page.tsx (1188 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea3b5e389d8c9c0f", "name": "Low test-to-source ratio", "shortDescription": {"text": "Low test-to-source ratio"}, "fullDescription": {"text": "22 tests / 142 src (ratio 0.15)."}, "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 330 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 25 placeholder/mock markers across 13 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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 ci. 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-b09a7e3c8ac7c1f0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 masterbot/cleanup.js:24", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 masterbot/cleanup.js:24"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0fb832e0ca49a906", "name": "`fetch()` without try/.catch or AbortSignal \u2014 masterbot/range-backtest.js:186", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 masterbot/range-backtest.js:186"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e208584d58e2fbe2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 masterbot/bot.js:149", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 masterbot/bot.js:149"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5848f369e4dfe1dd", "name": "Commented-code block (6 lines) in masterbot/lib/strategy-signals.js:58", "shortDescription": {"text": "Commented-code block (6 lines) in masterbot/lib/strategy-signals.js:58"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6afaa3880d71804e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/pine_push.js:9", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/pine_push.js:9"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6a4d53f5c15698ed", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/pine_pull.js:6", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/pine_pull.js:6"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1d408ee77d6d3da1", "name": "Commented-code block (5 lines) in dashboard/server.js:1863", "shortDescription": {"text": "Commented-code block (5 lines) in dashboard/server.js:1863"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6f2a2058aeefc1e8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 dashboard/server.js:1653", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 dashboard/server.js:1653"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-044247e9c00ba47f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 trading-saas/frontend/src/lib/api.ts:143", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 trading-saas/frontend/src/lib/api.ts:143"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2dd5449a362b0616", "name": "`fetch()` without try/.catch or AbortSignal \u2014 trading-saas/frontend/src/lib/apiV2.ts:15", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 trading-saas/frontend/src/lib/apiV2.ts:15"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-803defde512e3aa9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 adaptive-bot/bot.js:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 adaptive-bot/bot.js:28"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8f4c703e5cfcc7b7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/connection.js:93", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/connection.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-123a0103779187ad", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/core/tab.js:14", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/core/tab.js:14"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c252943077f8c61f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/core/chart.js:209", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/core/chart.js:209"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a4fcd4a77b2dfeaf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/core/pine.js:203", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/core/pine.js:203"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-44e3dde63cfe208a", "name": "Dangling fetch: POST https://api.telegram.org/bot${token}/sendMessage (micro-scalper.js:78)", "shortDescription": {"text": "Dangling fetch: POST https://api.telegram.org/bot${token}/sendMessage (micro-scalper.js:78)"}, "fullDescription": {"text": "`micro-scalper.js:78` calls `POST https://api.telegram.org/bot${token}/sendMessage` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.telegram.org/bot/<p>/sendmessage`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-35f544c8776dbabe", "name": "Dangling fetch: POST https://pine-facade.tradingview.com/pine-facade/translate_light?user_name=Guest&pine_id=00000000-00", "shortDescription": {"text": "Dangling fetch: POST https://pine-facade.tradingview.com/pine-facade/translate_light?user_name=Guest&pine_id=00000000-0000-0000-0000-000000000000 (tests/e2e.test.js:909)"}, "fullDescription": {"text": "`tests/e2e.test.js:909` calls `POST https://pine-facade.tradingview.com/pine-facade/translate_light?user_name=Guest&pine_id=00000000-0000-0000-0000-000000000000` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/pine-facade.tradingview.com/pine-facade/translate_light`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-90a93bd64609d062", "name": "Dangling fetch: POST https://pine-facade.tradingview.com/pine-facade/translate_light?user_name=Guest&pine_id=00000000-00", "shortDescription": {"text": "Dangling fetch: POST https://pine-facade.tradingview.com/pine-facade/translate_light?user_name=Guest&pine_id=00000000-0000-0000-0000-000000000000 (tests/pine_analyze.test.js:252)"}, "fullDescription": {"text": "`tests/pine_analyze.test.js:252` calls `POST https://pine-facade.tradingview.com/pine-facade/translate_light?user_name=Guest&pine_id=00000000-0000-0000-0000-000000000000` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/pine-facade.tradingview.com/pine-facade/translate_light`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-81cbcd459f6b0b09", "name": "Dangling fetch: POST https://pine-facade.tradingview.com/pine-facade/translate_light?user_name=Guest&pine_id=00000000-00", "shortDescription": {"text": "Dangling fetch: POST https://pine-facade.tradingview.com/pine-facade/translate_light?user_name=Guest&pine_id=00000000-0000-0000-0000-000000000000 (tests/pine_analyze.test.js:278)"}, "fullDescription": {"text": "`tests/pine_analyze.test.js:278` calls `POST https://pine-facade.tradingview.com/pine-facade/translate_light?user_name=Guest&pine_id=00000000-0000-0000-0000-000000000000` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/pine-facade.tradingview.com/pine-facade/translate_light`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-66f7df3ddc7ff128", "name": "Dangling fetch: POST https://pine-facade.tradingview.com/pine-facade/translate_light?user_name=Guest&pine_id=00000000-00", "shortDescription": {"text": "Dangling fetch: POST https://pine-facade.tradingview.com/pine-facade/translate_light?user_name=Guest&pine_id=00000000-0000-0000-0000-000000000000 (tests/pine_analyze.test.js:307)"}, "fullDescription": {"text": "`tests/pine_analyze.test.js:307` calls `POST https://pine-facade.tradingview.com/pine-facade/translate_light?user_name=Guest&pine_id=00000000-0000-0000-0000-000000000000` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/pine-facade.tradingview.com/pine-facade/translate_light`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a0d5d50dade12950", "name": "Dangling fetch: GET https://api.binance.com/api/v3/time (masterbot/bot.js:816)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (masterbot/bot.js:816)"}, "fullDescription": {"text": "`masterbot/bot.js:816` calls `GET https://api.binance.com/api/v3/time` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/time`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-abe1a2ce00bac6a3", "name": "Dangling fetch: GET https://api.binance.com/api/v3/account?${qsS}&signature=${sigS} (masterbot/bot.js:819)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/account?${qsS}&signature=${sigS} (masterbot/bot.js:819)"}, "fullDescription": {"text": "`masterbot/bot.js:819` calls `GET https://api.binance.com/api/v3/account?${qsS}&signature=${sigS}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/account`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ac082bd2bb50ba6d", "name": "Dangling fetch: GET https://fapi.binance.com/fapi/v1/time (masterbot/bot.js:828)", "shortDescription": {"text": "Dangling fetch: GET https://fapi.binance.com/fapi/v1/time (masterbot/bot.js:828)"}, "fullDescription": {"text": "`masterbot/bot.js:828` calls `GET https://fapi.binance.com/fapi/v1/time` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/fapi.binance.com/fapi/v1/time`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9d9b5d306a3b83db", "name": "Dangling fetch: GET https://fapi.binance.com/fapi/v2/account?${qsF}&signature=${sigF} (masterbot/bot.js:831)", "shortDescription": {"text": "Dangling fetch: GET https://fapi.binance.com/fapi/v2/account?${qsF}&signature=${sigF} (masterbot/bot.js:831)"}, "fullDescription": {"text": "`masterbot/bot.js:831` calls `GET https://fapi.binance.com/fapi/v2/account?${qsF}&signature=${sigF}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/fapi.binance.com/fapi/v2/account`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6165ecb3d8e68dfc", "name": "Dangling fetch: GET https://api.binance.com/api/v3/time (masterbot/bot.js:871)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (masterbot/bot.js:871)"}, "fullDescription": {"text": "`masterbot/bot.js:871` calls `GET https://api.binance.com/api/v3/time` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/time`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9eb66c80ea839e15", "name": "Dangling fetch: POST https://fapi.binance.com/fapi/v1/order?${slQuery}&signature=${slSig} (masterbot/bot.js:995)", "shortDescription": {"text": "Dangling fetch: POST https://fapi.binance.com/fapi/v1/order?${slQuery}&signature=${slSig} (masterbot/bot.js:995)"}, "fullDescription": {"text": "`masterbot/bot.js:995` calls `POST https://fapi.binance.com/fapi/v1/order?${slQuery}&signature=${slSig}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/fapi.binance.com/fapi/v1/order`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f74b19862da317b9", "name": "Dangling fetch: POST https://fapi.binance.com/fapi/v1/order?${tpQuery}&signature=${tpSig} (masterbot/bot.js:1013)", "shortDescription": {"text": "Dangling fetch: POST https://fapi.binance.com/fapi/v1/order?${tpQuery}&signature=${tpSig} (masterbot/bot.js:1013)"}, "fullDescription": {"text": "`masterbot/bot.js:1013` calls `POST https://fapi.binance.com/fapi/v1/order?${tpQuery}&signature=${tpSig}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/fapi.binance.com/fapi/v1/order`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-121789ba225018d1", "name": "Dangling fetch: GET https://api.binance.com/api/v3/time (masterbot/bot.js:1113)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (masterbot/bot.js:1113)"}, "fullDescription": {"text": "`masterbot/bot.js:1113` calls `GET https://api.binance.com/api/v3/time` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/time`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-45f9bc6a30769edf", "name": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${symbol} (masterbot/bot.js:1137)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${symbol} (masterbot/bot.js:1137)"}, "fullDescription": {"text": "`masterbot/bot.js:1137` calls `GET https://api.binance.com/api/v3/ticker/price?symbol=${symbol}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/ticker/price`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-70e6b9d2aa9001bc", "name": "Dangling fetch: GET https://api.binance.com/api/v3/time (masterbot/bot.js:1192)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (masterbot/bot.js:1192)"}, "fullDescription": {"text": "`masterbot/bot.js:1192` calls `GET https://api.binance.com/api/v3/time` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/time`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fa789a3b09b36d7b", "name": "Dangling fetch: DELETE https://api.binance.com/api/v3/openOrders?${cQs}&signature=${cSig} (masterbot/bot.js:1264)", "shortDescription": {"text": "Dangling fetch: DELETE https://api.binance.com/api/v3/openOrders?${cQs}&signature=${cSig} (masterbot/bot.js:1264)"}, "fullDescription": {"text": "`masterbot/bot.js:1264` calls `DELETE https://api.binance.com/api/v3/openOrders?${cQs}&signature=${cSig}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/openorders`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4b31f63e6aa3dab5", "name": "Dangling fetch: GET https://fapi.binance.com/fapi/v2/positionRisk?${qs}&signature=${sig} (masterbot/bot.js:1304)", "shortDescription": {"text": "Dangling fetch: GET https://fapi.binance.com/fapi/v2/positionRisk?${qs}&signature=${sig} (masterbot/bot.js:1304)"}, "fullDescription": {"text": "`masterbot/bot.js:1304` calls `GET https://fapi.binance.com/fapi/v2/positionRisk?${qs}&signature=${sig}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/fapi.binance.com/fapi/v2/positionrisk`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-323902f94df15eaa", "name": "Dangling fetch: GET https://fapi.binance.com/fapi/v1/openOrders?${oQs}&signature=${oSig} (masterbot/bot.js:1328)", "shortDescription": {"text": "Dangling fetch: GET https://fapi.binance.com/fapi/v1/openOrders?${oQs}&signature=${oSig} (masterbot/bot.js:1328)"}, "fullDescription": {"text": "`masterbot/bot.js:1328` calls `GET https://fapi.binance.com/fapi/v1/openOrders?${oQs}&signature=${oSig}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/fapi.binance.com/fapi/v1/openorders`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eca5fce17faddc0a", "name": "Dangling fetch: GET https://api.binance.com/api/v3/account?${sQs}&signature=${sSig} (masterbot/bot.js:1363)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/account?${sQs}&signature=${sSig} (masterbot/bot.js:1363)"}, "fullDescription": {"text": "`masterbot/bot.js:1363` calls `GET https://api.binance.com/api/v3/account?${sQs}&signature=${sSig}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/account`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1b5fdc216ad12b42", "name": "Dangling fetch: POST http://localhost:${process.env.PORT || 3334}/api/symbol (masterbot/bot.js:1619)", "shortDescription": {"text": "Dangling fetch: POST http://localhost:${process.env.PORT || 3334}/api/symbol (masterbot/bot.js:1619)"}, "fullDescription": {"text": "`masterbot/bot.js:1619` calls `POST http://localhost:${process.env.PORT || 3334}/api/symbol` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:/<p>/api/symbol`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d2fb30d3ace48147", "name": "Dangling fetch: POST http://localhost:3333/api/symbol (masterbot/bot.js:1918)", "shortDescription": {"text": "Dangling fetch: POST http://localhost:3333/api/symbol (masterbot/bot.js:1918)"}, "fullDescription": {"text": "`masterbot/bot.js:1918` calls `POST http://localhost:3333/api/symbol` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:3333/api/symbol`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8df06762c8e26a4b", "name": "Dangling fetch: POST http://localhost:3333/api/timeframe (masterbot/bot.js:1923)", "shortDescription": {"text": "Dangling fetch: POST http://localhost:3333/api/timeframe (masterbot/bot.js:1923)"}, "fullDescription": {"text": "`masterbot/bot.js:1923` calls `POST http://localhost:3333/api/timeframe` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:3333/api/timeframe`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2e977010ffdf92ae", "name": "Dangling fetch: POST http://localhost:${process.env.PORT || 3334}/api/alerts (masterbot/bot.js:1933)", "shortDescription": {"text": "Dangling fetch: POST http://localhost:${process.env.PORT || 3334}/api/alerts (masterbot/bot.js:1933)"}, "fullDescription": {"text": "`masterbot/bot.js:1933` calls `POST http://localhost:${process.env.PORT || 3334}/api/alerts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:/<p>/api/alerts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1dac2226edd1b59b", "name": "Dangling fetch: GET http://localhost:9222/json/list (scripts/pine_push.js:9)", "shortDescription": {"text": "Dangling fetch: GET http://localhost:9222/json/list (scripts/pine_push.js:9)"}, "fullDescription": {"text": "`scripts/pine_push.js:9` calls `GET http://localhost:9222/json/list` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:9222/json/list`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-71120ac19de4fd1b", "name": "Dangling fetch: GET http://localhost:9222/json/list (scripts/pine_pull.js:6)", "shortDescription": {"text": "Dangling fetch: GET http://localhost:9222/json/list (scripts/pine_pull.js:6)"}, "fullDescription": {"text": "`scripts/pine_pull.js:6` calls `GET http://localhost:9222/json/list` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:9222/json/list`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8a7cc756e6191d5d", "name": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/24hr?symbol=${symbol} (dashboard/server.js:505)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/24hr?symbol=${symbol} (dashboard/server.js:505)"}, "fullDescription": {"text": "`dashboard/server.js:505` calls `GET https://api.binance.com/api/v3/ticker/24hr?symbol=${symbol}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/ticker/24hr`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-48d4aa928f4dd964", "name": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${apiKey} (das", "shortDescription": {"text": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${apiKey} (dashboard/server.js:1484)"}, "fullDescription": {"text": "`dashboard/server.js:1484` calls `POST https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${apiKey}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/generativelanguage.googleapis.com/v1beta/models/<p>/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-79b34288a769d5c1", "name": "Dangling fetch: GET https://api.binance.com/api/v3/exchangeInfo?symbol=${symbol} (dashboard/server.js:2002)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/exchangeInfo?symbol=${symbol} (dashboard/server.js:2002)"}, "fullDescription": {"text": "`dashboard/server.js:2002` calls `GET https://api.binance.com/api/v3/exchangeInfo?symbol=${symbol}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/exchangeinfo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-563bb06696cf2cf0", "name": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:2558)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:2558)"}, "fullDescription": {"text": "`dashboard/server.js:2558` calls `GET https://api.binance.com/api/v3/time` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/time`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8f4b5370db3402d0", "name": "Dangling fetch: GET https://api.binance.com/api/v3/orderList?${qs}&signature=${sig} (dashboard/server.js:2561)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/orderList?${qs}&signature=${sig} (dashboard/server.js:2561)"}, "fullDescription": {"text": "`dashboard/server.js:2561` calls `GET https://api.binance.com/api/v3/orderList?${qs}&signature=${sig}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/orderlist`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-10a79ee8f4ad82c4", "name": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:2584)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:2584)"}, "fullDescription": {"text": "`dashboard/server.js:2584` calls `GET https://api.binance.com/api/v3/time` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/time`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-76116db43cca2248", "name": "Dangling fetch: GET https://api.binance.com/api/v3/order?${oQs}&signature=${oSig} (dashboard/server.js:2587)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/order?${oQs}&signature=${oSig} (dashboard/server.js:2587)"}, "fullDescription": {"text": "`dashboard/server.js:2587` calls `GET https://api.binance.com/api/v3/order?${oQs}&signature=${oSig}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/order`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8432bd5dd3038153", "name": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${pos.symbol} (dashboard/server.js:2616)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${pos.symbol} (dashboard/server.js:2616)"}, "fullDescription": {"text": "`dashboard/server.js:2616` calls `GET https://api.binance.com/api/v3/ticker/price?symbol=${pos.symbol}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/ticker/price`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ced8ff392ccc840f", "name": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:2636)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:2636)"}, "fullDescription": {"text": "`dashboard/server.js:2636` calls `GET https://api.binance.com/api/v3/time` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/time`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2036e0aeef695aa9", "name": "Dangling fetch: GET https://api.binance.com/api/v3/order?${qs}&signature=${sig} (dashboard/server.js:2639)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/order?${qs}&signature=${sig} (dashboard/server.js:2639)"}, "fullDescription": {"text": "`dashboard/server.js:2639` calls `GET https://api.binance.com/api/v3/order?${qs}&signature=${sig}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/order`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d577ea663ec9cf2b", "name": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${b.asset}USDT (dashboard/server.js:2726)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${b.asset}USDT (dashboard/server.js:2726)"}, "fullDescription": {"text": "`dashboard/server.js:2726` calls `GET https://api.binance.com/api/v3/ticker/price?symbol=${b.asset}USDT` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/ticker/price`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e9991967d7d8e103", "name": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:2747)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:2747)"}, "fullDescription": {"text": "`dashboard/server.js:2747` calls `GET https://api.binance.com/api/v3/time` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/time`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bf49eeabfa788fc7", "name": "Dangling fetch: GET https://api.binance.com/api/v3/account?${qs}&signature=${sig} (dashboard/server.js:2750)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/account?${qs}&signature=${sig} (dashboard/server.js:2750)"}, "fullDescription": {"text": "`dashboard/server.js:2750` calls `GET https://api.binance.com/api/v3/account?${qs}&signature=${sig}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/account`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-980748d6d0e537d7", "name": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${symbol} (dashboard/server.js:2765)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${symbol} (dashboard/server.js:2765)"}, "fullDescription": {"text": "`dashboard/server.js:2765` calls `GET https://api.binance.com/api/v3/ticker/price?symbol=${symbol}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/ticker/price`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a3c18dde0a804c34", "name": "Dangling fetch: GET https://api.binance.com/api/v3/exchangeInfo?symbol=${symbol} (dashboard/server.js:2800)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/exchangeInfo?symbol=${symbol} (dashboard/server.js:2800)"}, "fullDescription": {"text": "`dashboard/server.js:2800` calls `GET https://api.binance.com/api/v3/exchangeInfo?symbol=${symbol}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/exchangeinfo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-beda4210a445b452", "name": "Dangling fetch: GET https://fapi.binance.com/fapi/v1/exchangeInfo?symbol=${pos.symbol} (dashboard/server.js:2869)", "shortDescription": {"text": "Dangling fetch: GET https://fapi.binance.com/fapi/v1/exchangeInfo?symbol=${pos.symbol} (dashboard/server.js:2869)"}, "fullDescription": {"text": "`dashboard/server.js:2869` calls `GET https://fapi.binance.com/fapi/v1/exchangeInfo?symbol=${pos.symbol}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/fapi.binance.com/fapi/v1/exchangeinfo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7f6e5543ab4c6a6e", "name": "Dangling fetch: GET https://fapi.binance.com/fapi/v1/time (dashboard/server.js:2882)", "shortDescription": {"text": "Dangling fetch: GET https://fapi.binance.com/fapi/v1/time (dashboard/server.js:2882)"}, "fullDescription": {"text": "`dashboard/server.js:2882` calls `GET https://fapi.binance.com/fapi/v1/time` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/fapi.binance.com/fapi/v1/time`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6bb988dd224fd1ea", "name": "Dangling fetch: POST https://fapi.binance.com/fapi/v1/order?${qs}&signature=${sig} (dashboard/server.js:2887)", "shortDescription": {"text": "Dangling fetch: POST https://fapi.binance.com/fapi/v1/order?${qs}&signature=${sig} (dashboard/server.js:2887)"}, "fullDescription": {"text": "`dashboard/server.js:2887` calls `POST https://fapi.binance.com/fapi/v1/order?${qs}&signature=${sig}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/fapi.binance.com/fapi/v1/order`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-61408b8863f0e028", "name": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:2900)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:2900)"}, "fullDescription": {"text": "`dashboard/server.js:2900` calls `GET https://api.binance.com/api/v3/time` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/time`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8712510b2572f13a", "name": "Dangling fetch: DELETE https://api.binance.com/api/v3/orderList?${qs}&signature=${sig} (dashboard/server.js:2904)", "shortDescription": {"text": "Dangling fetch: DELETE https://api.binance.com/api/v3/orderList?${qs}&signature=${sig} (dashboard/server.js:2904)"}, "fullDescription": {"text": "`dashboard/server.js:2904` calls `DELETE https://api.binance.com/api/v3/orderList?${qs}&signature=${sig}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/orderlist`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-01a37f3f6925c661", "name": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:2915)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:2915)"}, "fullDescription": {"text": "`dashboard/server.js:2915` calls `GET https://api.binance.com/api/v3/time` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/time`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-206dc3b1a7c9d501", "name": "Dangling fetch: GET https://api.binance.com/api/v3/account?${qsAcc}&signature=${sigAcc} (dashboard/server.js:2919)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/account?${qsAcc}&signature=${sigAcc} (dashboard/server.js:2919)"}, "fullDescription": {"text": "`dashboard/server.js:2919` calls `GET https://api.binance.com/api/v3/account?${qsAcc}&signature=${sigAcc}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/account`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a7567982e41109c7", "name": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:2929)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:2929)"}, "fullDescription": {"text": "`dashboard/server.js:2929` calls `GET https://api.binance.com/api/v3/time` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/time`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bec144ae9d484c69", "name": "Dangling fetch: POST https://api.binance.com/api/v3/order?${qs}&signature=${sig} (dashboard/server.js:2933)", "shortDescription": {"text": "Dangling fetch: POST https://api.binance.com/api/v3/order?${qs}&signature=${sig} (dashboard/server.js:2933)"}, "fullDescription": {"text": "`dashboard/server.js:2933` calls `POST https://api.binance.com/api/v3/order?${qs}&signature=${sig}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/order`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b7ba61fdd234eba0", "name": "Dangling fetch: GET https://fapi.binance.com/fapi/v1/exchangeInfo?symbol=${pos.symbol} (dashboard/server.js:2986)", "shortDescription": {"text": "Dangling fetch: GET https://fapi.binance.com/fapi/v1/exchangeInfo?symbol=${pos.symbol} (dashboard/server.js:2986)"}, "fullDescription": {"text": "`dashboard/server.js:2986` calls `GET https://fapi.binance.com/fapi/v1/exchangeInfo?symbol=${pos.symbol}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/fapi.binance.com/fapi/v1/exchangeinfo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e358c62e042c6a5f", "name": "Dangling fetch: POST https://fapi.binance.com/fapi/v1/order?${qsTP}&signature=${sigTP} (dashboard/server.js:3017)", "shortDescription": {"text": "Dangling fetch: POST https://fapi.binance.com/fapi/v1/order?${qsTP}&signature=${sigTP} (dashboard/server.js:3017)"}, "fullDescription": {"text": "`dashboard/server.js:3017` calls `POST https://fapi.binance.com/fapi/v1/order?${qsTP}&signature=${sigTP}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/fapi.binance.com/fapi/v1/order`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c6fc055d60e768be", "name": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:3033)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:3033)"}, "fullDescription": {"text": "`dashboard/server.js:3033` calls `GET https://api.binance.com/api/v3/time` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/time`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5ad1043ed948eacf", "name": "Dangling fetch: GET https://api.binance.com/api/v3/account?${qsA}&signature=${sigA} (dashboard/server.js:3036)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/account?${qsA}&signature=${sigA} (dashboard/server.js:3036)"}, "fullDescription": {"text": "`dashboard/server.js:3036` calls `GET https://api.binance.com/api/v3/account?${qsA}&signature=${sigA}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/account`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7495661c1488fc04", "name": "Dangling fetch: GET https://api.binance.com/api/v3/exchangeInfo?symbol=${pos.symbol} (dashboard/server.js:3042)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/exchangeInfo?symbol=${pos.symbol} (dashboard/server.js:3042)"}, "fullDescription": {"text": "`dashboard/server.js:3042` calls `GET https://api.binance.com/api/v3/exchangeInfo?symbol=${pos.symbol}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/exchangeinfo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b4d8513082e26b4f", "name": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${pos.symbol} (dashboard/server.js:3046)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${pos.symbol} (dashboard/server.js:3046)"}, "fullDescription": {"text": "`dashboard/server.js:3046` calls `GET https://api.binance.com/api/v3/ticker/price?symbol=${pos.symbol}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/ticker/price`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0ff71a4e76f61da8", "name": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:3069)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:3069)"}, "fullDescription": {"text": "`dashboard/server.js:3069` calls `GET https://api.binance.com/api/v3/time` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/time`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0e22e6483c50ce24", "name": "Dangling fetch: POST https://api.binance.com/api/v3/order/oco?${qs}&signature=${sig} (dashboard/server.js:3076)", "shortDescription": {"text": "Dangling fetch: POST https://api.binance.com/api/v3/order/oco?${qs}&signature=${sig} (dashboard/server.js:3076)"}, "fullDescription": {"text": "`dashboard/server.js:3076` calls `POST https://api.binance.com/api/v3/order/oco?${qs}&signature=${sig}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/order/oco`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0c025f434571f8de", "name": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:3232)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:3232)"}, "fullDescription": {"text": "`dashboard/server.js:3232` calls `GET https://api.binance.com/api/v3/time` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/time`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eb3fefa79bdc3e10", "name": "Dangling fetch: GET https://api.binance.com/api/v3/account?${qsS}&signature=${sigS} (dashboard/server.js:3235)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/account?${qsS}&signature=${sigS} (dashboard/server.js:3235)"}, "fullDescription": {"text": "`dashboard/server.js:3235` calls `GET https://api.binance.com/api/v3/account?${qsS}&signature=${sigS}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/account`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-adfbf4a6b57935f0", "name": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${b.asset}USDT (dashboard/server.js:3246)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${b.asset}USDT (dashboard/server.js:3246)"}, "fullDescription": {"text": "`dashboard/server.js:3246` calls `GET https://api.binance.com/api/v3/ticker/price?symbol=${b.asset}USDT` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/ticker/price`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6947aead1e11cd6a", "name": "Dangling fetch: GET https://fapi.binance.com/fapi/v1/time (dashboard/server.js:3256)", "shortDescription": {"text": "Dangling fetch: GET https://fapi.binance.com/fapi/v1/time (dashboard/server.js:3256)"}, "fullDescription": {"text": "`dashboard/server.js:3256` calls `GET https://fapi.binance.com/fapi/v1/time` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/fapi.binance.com/fapi/v1/time`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-672a539635aa79e2", "name": "Dangling fetch: GET https://fapi.binance.com/fapi/v2/account?${qsF}&signature=${sigF} (dashboard/server.js:3259)", "shortDescription": {"text": "Dangling fetch: GET https://fapi.binance.com/fapi/v2/account?${qsF}&signature=${sigF} (dashboard/server.js:3259)"}, "fullDescription": {"text": "`dashboard/server.js:3259` calls `GET https://fapi.binance.com/fapi/v2/account?${qsF}&signature=${sigF}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/fapi.binance.com/fapi/v2/account`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2962881baa2831a3", "name": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:3282)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:3282)"}, "fullDescription": {"text": "`dashboard/server.js:3282` calls `GET https://api.binance.com/api/v3/time` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/time`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-db7a83b61c6e85d9", "name": "Dangling fetch: GET https://api.binance.com/api/v3/account?${qs}&signature=${sig} (dashboard/server.js:3286)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/account?${qs}&signature=${sig} (dashboard/server.js:3286)"}, "fullDescription": {"text": "`dashboard/server.js:3286` calls `GET https://api.binance.com/api/v3/account?${qs}&signature=${sig}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/account`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8d3765d1d08f58e8", "name": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${b.asset}USDT (dashboard/server.js:3301)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${b.asset}USDT (dashboard/server.js:3301)"}, "fullDescription": {"text": "`dashboard/server.js:3301` calls `GET https://api.binance.com/api/v3/ticker/price?symbol=${b.asset}USDT` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/ticker/price`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f8c3d5cdbaaeba28", "name": "Dangling fetch: GET https://economia.awesomeapi.com.br/json/last/USD-BRL (dashboard/server.js:3310)", "shortDescription": {"text": "Dangling fetch: GET https://economia.awesomeapi.com.br/json/last/USD-BRL (dashboard/server.js:3310)"}, "fullDescription": {"text": "`dashboard/server.js:3310` calls `GET https://economia.awesomeapi.com.br/json/last/USD-BRL` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/economia.awesomeapi.com.br/json/last/usd-brl`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b249e17b5d32f185", "name": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${req.params.symbol} (dashboard/server.js:3322)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${req.params.symbol} (dashboard/server.js:3322)"}, "fullDescription": {"text": "`dashboard/server.js:3322` calls `GET https://api.binance.com/api/v3/ticker/price?symbol=${req.params.symbol}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/ticker/price`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-327db6a141c72696", "name": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${symbol} (dashboard/server.js:3370)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${symbol} (dashboard/server.js:3370)"}, "fullDescription": {"text": "`dashboard/server.js:3370` calls `GET https://api.binance.com/api/v3/ticker/price?symbol=${symbol}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/ticker/price`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f364cd910b53492d", "name": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:3375)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:3375)"}, "fullDescription": {"text": "`dashboard/server.js:3375` calls `GET https://api.binance.com/api/v3/time` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/time`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-528347aeafbb5e21", "name": "Dangling fetch: POST https://api.binance.com/api/v3/order?${qs}&signature=${sig} (dashboard/server.js:3379)", "shortDescription": {"text": "Dangling fetch: POST https://api.binance.com/api/v3/order?${qs}&signature=${sig} (dashboard/server.js:3379)"}, "fullDescription": {"text": "`dashboard/server.js:3379` calls `POST https://api.binance.com/api/v3/order?${qs}&signature=${sig}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/order`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8679510a6b11e58a", "name": "Dangling fetch: GET http://${CDP_HOST}:${CDP_PORT}/json/version (src/connection.js:76)", "shortDescription": {"text": "Dangling fetch: GET http://${CDP_HOST}:${CDP_PORT}/json/version (src/connection.js:76)"}, "fullDescription": {"text": "`src/connection.js:76` calls `GET http://${CDP_HOST}:${CDP_PORT}/json/version` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/<p>:/<p>/json/version`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-adfde688763a64e2", "name": "Dangling fetch: GET http://${CDP_HOST}:${CDP_PORT}/json/list (src/connection.js:93)", "shortDescription": {"text": "Dangling fetch: GET http://${CDP_HOST}:${CDP_PORT}/json/list (src/connection.js:93)"}, "fullDescription": {"text": "`src/connection.js:93` calls `GET http://${CDP_HOST}:${CDP_PORT}/json/list` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/<p>:/<p>/json/list`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7bc3c1598632eb5e", "name": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=${apiK", "shortDescription": {"text": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=${apiKey} (src/ai/reviewer.js:46)"}, "fullDescription": {"text": "`src/ai/reviewer.js:46` calls `POST https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=${apiKey}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fc4e0894a2f5d7ce", "name": "Dangling fetch: GET http://${CDP_HOST}:${CDP_PORT}/json/list (src/core/tab.js:14)", "shortDescription": {"text": "Dangling fetch: GET http://${CDP_HOST}:${CDP_PORT}/json/list (src/core/tab.js:14)"}, "fullDescription": {"text": "`src/core/tab.js:14` calls `GET http://${CDP_HOST}:${CDP_PORT}/json/list` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/<p>:/<p>/json/list`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e79ff2715d861128", "name": "Dangling fetch: GET http://${CDP_HOST}:${CDP_PORT}/json/activate/${target.id} (src/core/tab.js:100)", "shortDescription": {"text": "Dangling fetch: GET http://${CDP_HOST}:${CDP_PORT}/json/activate/${target.id} (src/core/tab.js:100)"}, "fullDescription": {"text": "`src/core/tab.js:100` calls `GET http://${CDP_HOST}:${CDP_PORT}/json/activate/${target.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/<p>:/<p>/json/activate/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3522625d048cf66e", "name": "Dangling fetch: GET https://pricealerts.tradingview.com/list_alerts (src/core/alerts.js:78)", "shortDescription": {"text": "Dangling fetch: GET https://pricealerts.tradingview.com/list_alerts (src/core/alerts.js:78)"}, "fullDescription": {"text": "`src/core/alerts.js:78` calls `GET https://pricealerts.tradingview.com/list_alerts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/pricealerts.tradingview.com/list_alerts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1325689409d5ada4", "name": "Dangling fetch: GET https://symbol-search.tradingview.com/symbol_search/v3/?${params} (src/core/chart.js:209)", "shortDescription": {"text": "Dangling fetch: GET https://symbol-search.tradingview.com/symbol_search/v3/?${params} (src/core/chart.js:209)"}, "fullDescription": {"text": "`src/core/chart.js:209` calls `GET https://symbol-search.tradingview.com/symbol_search/v3/?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/symbol-search.tradingview.com/symbol_search/v3`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-516a2909a9d24d5e", "name": "Dangling fetch: POST https://pine-facade.tradingview.com/pine-facade/translate_light?user_name=Guest&pine_id=00000000-00", "shortDescription": {"text": "Dangling fetch: POST https://pine-facade.tradingview.com/pine-facade/translate_light?user_name=Guest&pine_id=00000000-0000-0000-0000-000000000000 (src/core/pine.js:203)"}, "fullDescription": {"text": "`src/core/pine.js:203` calls `POST https://pine-facade.tradingview.com/pine-facade/translate_light?user_name=Guest&pine_id=00000000-0000-0000-0000-000000000000` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/pine-facade.tradingview.com/pine-facade/translate_light`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3174308be42ca4b2", "name": "Dangling fetch: GET https://pine-facade.tradingview.com/pine-facade/list/?filter=saved (src/core/pine.js:559)", "shortDescription": {"text": "Dangling fetch: GET https://pine-facade.tradingview.com/pine-facade/list/?filter=saved (src/core/pine.js:559)"}, "fullDescription": {"text": "`src/core/pine.js:559` calls `GET https://pine-facade.tradingview.com/pine-facade/list/?filter=saved` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/pine-facade.tradingview.com/pine-facade/list`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-90d90c0fb37e0478", "name": "Dangling fetch: GET https://pine-facade.tradingview.com/pine-facade/list/?filter=saved (src/core/pine.js:606)", "shortDescription": {"text": "Dangling fetch: GET https://pine-facade.tradingview.com/pine-facade/list/?filter=saved (src/core/pine.js:606)"}, "fullDescription": {"text": "`src/core/pine.js:606` calls `GET https://pine-facade.tradingview.com/pine-facade/list/?filter=saved` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/pine-facade.tradingview.com/pine-facade/list`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-62e6ee784dfe6152", "name": "Dangling fetch: GET https://api.binance.com/api/v3/klines?symbol=${chartSymbol}&interval=1h&limit=168 (trading-saas/fron", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/klines?symbol=${chartSymbol}&interval=1h&limit=168 (trading-saas/frontend/src/app/page.tsx:75)"}, "fullDescription": {"text": "`trading-saas/frontend/src/app/page.tsx:75` calls `GET https://api.binance.com/api/v3/klines?symbol=${chartSymbol}&interval=1h&limit=168` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/klines`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-398f6872c74ae03a", "name": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price (trading-saas/frontend/src/app/posicoes/page.tsx:111)", "shortDescription": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price (trading-saas/frontend/src/app/posicoes/page.tsx:111)"}, "fullDescription": {"text": "`trading-saas/frontend/src/app/posicoes/page.tsx:111` calls `GET https://api.binance.com/api/v3/ticker/price` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.binance.com/api/v3/ticker/price`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-87835f811ef7ced4", "name": "Unused endpoint: GET /api/micro-scalper/config", "shortDescription": {"text": "Unused endpoint: GET /api/micro-scalper/config"}, "fullDescription": {"text": "`dashboard/server-optimized.js` declares `GET /api/micro-scalper/config` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea187d86053f598b", "name": "Unused endpoint: PATCH /api/micro-scalper/config", "shortDescription": {"text": "Unused endpoint: PATCH /api/micro-scalper/config"}, "fullDescription": {"text": "`dashboard/server-optimized.js` declares `PATCH /api/micro-scalper/config` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-570b2868acb31f88", "name": "Unused endpoint: GET /api/micro-scalper/signal", "shortDescription": {"text": "Unused endpoint: GET /api/micro-scalper/signal"}, "fullDescription": {"text": "`dashboard/server-optimized.js` declares `GET /api/micro-scalper/signal` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a5b3437e64c8f7b4", "name": "Unused endpoint: POST /api/auth/register", "shortDescription": {"text": "Unused endpoint: POST /api/auth/register"}, "fullDescription": {"text": "`dashboard/server.js` declares `POST /api/auth/register` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fd55aa0818a7c897", "name": "Unused endpoint: POST /api/auth/login", "shortDescription": {"text": "Unused endpoint: POST /api/auth/login"}, "fullDescription": {"text": "`dashboard/server.js` declares `POST /api/auth/login` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ee4aa5ddab88c9dc", "name": "Unused endpoint: GET /api/auth/me", "shortDescription": {"text": "Unused endpoint: GET /api/auth/me"}, "fullDescription": {"text": "`dashboard/server.js` declares `GET /api/auth/me` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4756b4c4da7d2088", "name": "Unused endpoint: GET /api/health", "shortDescription": {"text": "Unused endpoint: GET /api/health"}, "fullDescription": {"text": "`dashboard/server.js` declares `GET /api/health` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0d9167c13207565d", "name": "Unused endpoint: POST /api/micro-scalper/trade", "shortDescription": {"text": "Unused endpoint: POST /api/micro-scalper/trade"}, "fullDescription": {"text": "`dashboard/server.js` declares `POST /api/micro-scalper/trade` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-43060e626aa92b50", "name": "Unused endpoint: POST /api/micro-scalper/sync-symbol", "shortDescription": {"text": "Unused endpoint: POST /api/micro-scalper/sync-symbol"}, "fullDescription": {"text": "`dashboard/server.js` declares `POST /api/micro-scalper/sync-symbol` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-27652a11ba620012", "name": "Unused endpoint: GET /api/state", "shortDescription": {"text": "Unused endpoint: GET /api/state"}, "fullDescription": {"text": "`dashboard/server.js` declares `GET /api/state` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-371b8888c14d5797", "name": "Unused endpoint: GET /api/quote", "shortDescription": {"text": "Unused endpoint: GET /api/quote"}, "fullDescription": {"text": "`dashboard/server.js` declares `GET /api/quote` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b29f65bc5b5c7a40", "name": "Unused endpoint: GET /api/indicators", "shortDescription": {"text": "Unused endpoint: GET /api/indicators"}, "fullDescription": {"text": "`dashboard/server.js` declares `GET /api/indicators` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5233b99050664a5c", "name": "Unused endpoint: GET /api/ohlcv", "shortDescription": {"text": "Unused endpoint: GET /api/ohlcv"}, "fullDescription": {"text": "`dashboard/server.js` declares `GET /api/ohlcv` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ba8710cca2507e24", "name": "Unused endpoint: POST /api/symbol", "shortDescription": {"text": "Unused endpoint: POST /api/symbol"}, "fullDescription": {"text": "`dashboard/server.js` declares `POST /api/symbol` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c908ca11cb357d71", "name": "Unused endpoint: POST /api/timeframe", "shortDescription": {"text": "Unused endpoint: POST /api/timeframe"}, "fullDescription": {"text": "`dashboard/server.js` declares `POST /api/timeframe` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-92a2bba2a8cd6aab", "name": "Unused endpoint: POST /api/chart/goto", "shortDescription": {"text": "Unused endpoint: POST /api/chart/goto"}, "fullDescription": {"text": "`dashboard/server.js` declares `POST /api/chart/goto` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-27d4fa34d3c56acb", "name": "Unused endpoint: GET /api/symbol-search", "shortDescription": {"text": "Unused endpoint: GET /api/symbol-search"}, "fullDescription": {"text": "`dashboard/server.js` declares `GET /api/symbol-search` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-79e9dd5853bea487", "name": "Unused endpoint: POST /api/screenshot", "shortDescription": {"text": "Unused endpoint: POST /api/screenshot"}, "fullDescription": {"text": "`dashboard/server.js` declares `POST /api/screenshot` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6135c1190e777501", "name": "Unused endpoint: GET /api/screenshot-image", "shortDescription": {"text": "Unused endpoint: GET /api/screenshot-image"}, "fullDescription": {"text": "`dashboard/server.js` declares `GET /api/screenshot-image` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-188fc7bee1b6f91f", "name": "Unused endpoint: GET /api/screenshots/list", "shortDescription": {"text": "Unused endpoint: GET /api/screenshots/list"}, "fullDescription": {"text": "`dashboard/server.js` declares `GET /api/screenshots/list` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb13911602e8a3b3", "name": "Unused endpoint: GET /api/screenshots/file/:name", "shortDescription": {"text": "Unused endpoint: GET /api/screenshots/file/:name"}, "fullDescription": {"text": "`dashboard/server.js` declares `GET /api/screenshots/file/:name` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-158ab44b8fb3bc84", "name": "Unused endpoint: GET /api/brief", "shortDescription": {"text": "Unused endpoint: GET /api/brief"}, "fullDescription": {"text": "`dashboard/server.js` declares `GET /api/brief` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7f8379af015149f1", "name": "Unused endpoint: GET /api/alerts", "shortDescription": {"text": "Unused endpoint: GET /api/alerts"}, "fullDescription": {"text": "`dashboard/server.js` declares `GET /api/alerts` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c213d913c050d455", "name": "Unused endpoint: POST /api/alerts", "shortDescription": {"text": "Unused endpoint: POST /api/alerts"}, "fullDescription": {"text": "`dashboard/server.js` declares `POST /api/alerts` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d9491b8ff0582f02", "name": "Unused endpoint: DELETE /api/alerts", "shortDescription": {"text": "Unused endpoint: DELETE /api/alerts"}, "fullDescription": {"text": "`dashboard/server.js` declares `DELETE /api/alerts` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-26c5dc8c58766f6b", "name": "Unused endpoint: GET /api/strategy", "shortDescription": {"text": "Unused endpoint: GET /api/strategy"}, "fullDescription": {"text": "`dashboard/server.js` declares `GET /api/strategy` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4805a4e4bb2fdcb7", "name": "Unused endpoint: GET /api/strategy/trades", "shortDescription": {"text": "Unused endpoint: GET /api/strategy/trades"}, "fullDescription": {"text": "`dashboard/server.js` declares `GET /api/strategy/trades` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b7973d86a4cbfd5d", "name": "Unused endpoint: GET /api/strategy/equity", "shortDescription": {"text": "Unused endpoint: GET /api/strategy/equity"}, "fullDescription": {"text": "`dashboard/server.js` declares `GET /api/strategy/equity` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-122b91234e3a1331", "name": "Unused endpoint: POST /api/scanner", "shortDescription": {"text": "Unused endpoint: POST /api/scanner"}, "fullDescription": {"text": "`dashboard/server.js` declares `POST /api/scanner` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-19c8531eb02471bd", "name": "Unused endpoint: GET /api/watchlist", "shortDescription": {"text": "Unused endpoint: GET /api/watchlist"}, "fullDescription": {"text": "`dashboard/server.js` declares `GET /api/watchlist` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dd964f0d5fec5654", "name": "Unused endpoint: POST /api/watchlist/add", "shortDescription": {"text": "Unused endpoint: POST /api/watchlist/add"}, "fullDescription": {"text": "`dashboard/server.js` declares `POST /api/watchlist/add` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f912d8f890d14eba", "name": "Unused endpoint: POST /api/replay/start", "shortDescription": {"text": "Unused endpoint: POST /api/replay/start"}, "fullDescription": {"text": "`dashboard/server.js` declares `POST /api/replay/start` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d70a10011786d7f2", "name": "Unused endpoint: POST /api/replay/step", "shortDescription": {"text": "Unused endpoint: POST /api/replay/step"}, "fullDescription": {"text": "`dashboard/server.js` declares `POST /api/replay/step` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-014488cd31c1399b", "name": "Unused endpoint: POST /api/replay/autoplay", "shortDescription": {"text": "Unused endpoint: POST /api/replay/autoplay"}, "fullDescription": {"text": "`dashboard/server.js` declares `POST /api/replay/autoplay` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b1f5af3dab62b777", "name": "Unused endpoint: POST /api/replay/stop", "shortDescription": {"text": "Unused endpoint: POST /api/replay/stop"}, "fullDescription": {"text": "`dashboard/server.js` declares `POST /api/replay/stop` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f0e222a268dda75a", "name": "Unused endpoint: GET /api/replay/status", "shortDescription": {"text": "Unused endpoint: GET /api/replay/status"}, "fullDescription": {"text": "`dashboard/server.js` declares `GET /api/replay/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2da29c22f86c9fd3", "name": "Unused endpoint: POST /api/replay/trade", "shortDescription": {"text": "Unused endpoint: POST /api/replay/trade"}, "fullDescription": {"text": "`dashboard/server.js` declares `POST /api/replay/trade` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e27aaf4ee2084244", "name": "Unused endpoint: GET /api/pine/source", "shortDescription": {"text": "Unused endpoint: GET /api/pine/source"}, "fullDescription": {"text": "`dashboard/server.js` declares `GET /api/pine/source` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e5bdab68eca8f74d", "name": "Unused endpoint: POST /api/pine/source", "shortDescription": {"text": "Unused endpoint: POST /api/pine/source"}, "fullDescription": {"text": "`dashboard/server.js` declares `POST /api/pine/source` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2faca6ac72f95c55", "name": "Unused endpoint: POST /api/pine/compile", "shortDescription": {"text": "Unused endpoint: POST /api/pine/compile"}, "fullDescription": {"text": "`dashboard/server.js` declares `POST /api/pine/compile` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8a94a16f3a1c1a27", "name": "Unused endpoint: GET /api/pine/errors", "shortDescription": {"text": "Unused endpoint: GET /api/pine/errors"}, "fullDescription": {"text": "`dashboard/server.js` declares `GET /api/pine/errors` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a83e2124d10f3a9b", "name": "Unused endpoint: POST /api/pine/save", "shortDescription": {"text": "Unused endpoint: POST /api/pine/save"}, "fullDescription": {"text": "`dashboard/server.js` declares `POST /api/pine/save` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2305976574bc9942", "name": "Unused endpoint: GET /api/pine/list", "shortDescription": {"text": "Unused endpoint: GET /api/pine/list"}, "fullDescription": {"text": "`dashboard/server.js` declares `GET /api/pine/list` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cd508a5a550b6ac3", "name": "Unused endpoint: POST /api/pine/open", "shortDescription": {"text": "Unused endpoint: POST /api/pine/open"}, "fullDescription": {"text": "`dashboard/server.js` declares `POST /api/pine/open` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bd676b6007616589", "name": "Unused endpoint: GET /api/pine/console", "shortDescription": {"text": "Unused endpoint: GET /api/pine/console"}, "fullDescription": {"text": "`dashboard/server.js` declares `GET /api/pine/console` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2996752c7b3b2906", "name": "Unused endpoint: GET /api/journal", "shortDescription": {"text": "Unused endpoint: GET /api/journal"}, "fullDescription": {"text": "`dashboard/server.js` declares `GET /api/journal` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-171fe460bef07256", "name": "Unused endpoint: POST /api/journal", "shortDescription": {"text": "Unused endpoint: POST /api/journal"}, "fullDescription": {"text": "`dashboard/server.js` declares `POST /api/journal` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e75590d021b65825", "name": "Unused endpoint: DELETE /api/journal/:id", "shortDescription": {"text": "Unused endpoint: DELETE /api/journal/:id"}, "fullDescription": {"text": "`dashboard/server.js` declares `DELETE /api/journal/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-52fe13f6b40b16a8", "name": "Unused endpoint: GET /api/strategies", "shortDescription": {"text": "Unused endpoint: GET /api/strategies"}, "fullDescription": {"text": "`dashboard/server.js` declares `GET /api/strategies` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3943d23b06595cfd", "name": "Unused endpoint: GET /api/strategies/current", "shortDescription": {"text": "Unused endpoint: GET /api/strategies/current"}, "fullDescription": {"text": "`dashboard/server.js` declares `GET /api/strategies/current` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/22282"}, "properties": {"repository": "Viniciusvile/Trading-ia", "repoUrl": "https://github.com/Viniciusvile/Trading-ia", "branch": "main"}, "results": [{"ruleId": "scanner-1c9e12e1b3745ff6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 analyze_trades.js:18"}, "properties": {"repobilityId": "2b3c569013c966c2", "scanner": "scanner-primary", "fingerprint": "1c9e12e1b3745ff6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9c61dab5c2ed4749", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scratch_analyze_losses.js:25"}, "properties": {"repobilityId": "bcf772c1df2b75cf", "scanner": "scanner-primary", "fingerprint": "9c61dab5c2ed4749", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d2338b386fe458e5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 fix-sol.js:24"}, "properties": {"repobilityId": "5fb5437ca33f3c21", "scanner": "scanner-primary", "fingerprint": "d2338b386fe458e5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7f31a7346d73ee5b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scratch_check_xrp.js:19"}, "properties": {"repobilityId": "d0c6e0886767a6ec", "scanner": "scanner-primary", "fingerprint": "7f31a7346d73ee5b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e2cfb5fa8fd8a401", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check-precision.js:26"}, "properties": {"repobilityId": "833352fc24347ab4", "scanner": "scanner-primary", "fingerprint": "e2cfb5fa8fd8a401", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-232c4ecf47f44338", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 check_db.js:10"}, "properties": {"repobilityId": "4575843e4166c98b", "scanner": "scanner-primary", "fingerprint": "232c4ecf47f44338", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-75b8d8be1579adfd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 micro-scalper.js:149"}, "properties": {"repobilityId": "c6d6707be7aac470", "scanner": "scanner-primary", "fingerprint": "75b8d8be1579adfd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7bcd9da57bf3b323", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scalper-run.js:189"}, "properties": {"repobilityId": "9adc4c441c2c0f64", "scanner": "scanner-primary", "fingerprint": "7bcd9da57bf3b323", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6247c8b376003cab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scratch_query_positions.js:7"}, "properties": {"repobilityId": "4b6770bd1aa64e88", "scanner": "scanner-primary", "fingerprint": "6247c8b376003cab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3a1512cf8451be2e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scratch_market_check.js:9"}, "properties": {"repobilityId": "15514fdcc5f67649", "scanner": "scanner-primary", "fingerprint": "3a1512cf8451be2e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-159c5312391fc890", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 masterbot/cleanup.js:40"}, "properties": {"repobilityId": "fbc131c56684e56f", "scanner": "scanner-primary", "fingerprint": "159c5312391fc890", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a04d3c57c11780cd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 masterbot/range-backtest.js:138"}, "properties": {"repobilityId": "8dbcd26c3907e7b5", "scanner": "scanner-primary", "fingerprint": "a04d3c57c11780cd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9f967d8df67c0a8c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 masterbot/test_db.js:14"}, "properties": {"repobilityId": "a501b8585f7ed00a", "scanner": "scanner-primary", "fingerprint": "9f967d8df67c0a8c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c3fc1f4beb77bf75", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 masterbot/db.js:194"}, "properties": {"repobilityId": "72e150081ff5df1a", "scanner": "scanner-primary", "fingerprint": "c3fc1f4beb77bf75", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6aa8655db5978aa5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 masterbot/bot.js:65"}, "properties": {"repobilityId": "ab84bc1dbec53e76", "scanner": "scanner-primary", "fingerprint": "6aa8655db5978aa5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a19e2439b93c5063", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 masterbot/migrate-to-postgres.js:26"}, "properties": {"repobilityId": "74b17df5256f7075", "scanner": "scanner-primary", "fingerprint": "a19e2439b93c5063", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d779186f9e0278e4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 masterbot/scratch/backtest-smoke.js:38"}, "properties": {"repobilityId": "d640edb4a1978628", "scanner": "scanner-primary", "fingerprint": "d779186f9e0278e4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-97fe60d805a4d5d9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pine_push.js:23"}, "properties": {"repobilityId": "96827dfac39322a5", "scanner": "scanner-primary", "fingerprint": "97fe60d805a4d5d9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-315a46a22bfa0fb7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pine_pull.js:21"}, "properties": {"repobilityId": "1890aa0a605c2aa4", "scanner": "scanner-primary", "fingerprint": "315a46a22bfa0fb7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3bfefef64f41e31f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/server.js:224"}, "properties": {"repobilityId": "47e255eef77136c7", "scanner": "scanner-primary", "fingerprint": "3bfefef64f41e31f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-85fb4608bedc7e61", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 trading-saas/frontend/copy-standalone.js:14"}, "properties": {"repobilityId": "c93a2d5e34832ebb", "scanner": "scanner-primary", "fingerprint": "85fb4608bedc7e61", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fd6ee572e78cde88", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/components/CommandPalette.tsx:116"}, "properties": {"repobilityId": "011df2728ad58112", "scanner": "scanner-primary", "fingerprint": "fd6ee572e78cde88", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-636b93478663363d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/components/layout/Sidebar.tsx:19"}, "properties": {"repobilityId": "c3f2e87f58684a22", "scanner": "scanner-primary", "fingerprint": "636b93478663363d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5958e33afb074b2e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/components/layout/Topbar.tsx:226"}, "properties": {"repobilityId": "2c1301627b70f989", "scanner": "scanner-primary", "fingerprint": "5958e33afb074b2e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4e5cf34886abf58b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/components/strategy/ShareStrategyModal.tsx:106"}, "properties": {"repobilityId": "ff6fcc1d008fb3ec", "scanner": "scanner-primary", "fingerprint": "4e5cf34886abf58b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-045b761cfca342f8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/components/ui/Card.tsx:59"}, "properties": {"repobilityId": "f9774ef1f08aca08", "scanner": "scanner-primary", "fingerprint": "045b761cfca342f8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-15d9f21c0f27ef14", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/app/page.tsx:295"}, "properties": {"repobilityId": "3b0b38f85d202f05", "scanner": "scanner-primary", "fingerprint": "15d9f21c0f27ef14", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2b855af15384a7a6", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 trading-saas/frontend/src/app/login/page.tsx:206"}, "properties": {"repobilityId": "b918659fc5de74fe", "scanner": "scanner-primary", "fingerprint": "2b855af15384a7a6", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-892f1f4cae3bdf85", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/app/status/page.tsx:147"}, "properties": {"repobilityId": "be0476bbdb4790e5", "scanner": "scanner-primary", "fingerprint": "892f1f4cae3bdf85", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-33f9f952450f8f34", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/app/diario/page.tsx:550"}, "properties": {"repobilityId": "7f8fda3c56b26060", "scanner": "scanner-primary", "fingerprint": "33f9f952450f8f34", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b13134067e1490d4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/app/posicoes/page.tsx:398"}, "properties": {"repobilityId": "d653e0360ba8bfcc", "scanner": "scanner-primary", "fingerprint": "b13134067e1490d4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bf0047de6eac031b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 trading-saas/frontend/src/app/bots/page.tsx:440"}, "properties": {"repobilityId": "754de67cd35ff417", "scanner": "scanner-primary", "fingerprint": "bf0047de6eac031b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-abce3fc9a8354c43", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 adaptive-bot/bot.js:60"}, "properties": {"repobilityId": "2d39ba1068da4681", "scanner": "scanner-primary", "fingerprint": "abce3fc9a8354c43", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ad9c8b8f04b39701", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/cli/router.js:15"}, "properties": {"repobilityId": "df07e444d03098bd", "scanner": "scanner-primary", "fingerprint": "ad9c8b8f04b39701", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f37a5dada760695d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/exchange/binance.js:157"}, "properties": {"repobilityId": "46b97415067356a0", "scanner": "scanner-primary", "fingerprint": "f37a5dada760695d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5345f8b34a53e43c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/index.html:1641"}, "properties": {"repobilityId": "1d59152a7617eeef", "scanner": "scanner-primary", "fingerprint": "5345f8b34a53e43c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard/index.html"}, "region": {"startLine": 1641}}}]}, {"ruleId": "scanner-f3dfbab2f08a1144", "level": "warning", "message": {"text": "Insecure pattern 'direct_outerhtml_assignment' in dashboard/index.html:4853"}, "properties": {"repobilityId": "105e91c156a5beec", "scanner": "scanner-primary", "fingerprint": "f3dfbab2f08a1144", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_outerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard/index.html"}, "region": {"startLine": 4853}}}]}, {"ruleId": "scanner-f94f849c4dd98edf", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in dashboard/index.html:2244"}, "properties": {"repobilityId": "f762a1f9a09c0a73", "scanner": "scanner-primary", "fingerprint": "f94f849c4dd98edf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard/index.html"}, "region": {"startLine": 2244}}}]}, {"ruleId": "scanner-d3abcd115e93a53b", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in dashboard/server-optimized.js:8"}, "properties": {"repobilityId": "57b37286c7f295a5", "scanner": "scanner-primary", "fingerprint": "d3abcd115e93a53b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard/server-optimized.js"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-ffcb4b2724cbbfd4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in dashboard/server.js:13"}, "properties": {"repobilityId": "4aa8271a3e9e4987", "scanner": "scanner-primary", "fingerprint": "ffcb4b2724cbbfd4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard/server.js"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-abbc1cd540d6ef5d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in trading-saas/frontend/src/components/TradingViewWidget.tsx:36"}, "properties": {"repobilityId": "60150b0e436f73ac", "scanner": "scanner-primary", "fingerprint": "abbc1cd540d6ef5d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "trading-saas/frontend/src/components/TradingViewWidget.tsx"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-a40402d263f1bc37", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in trading-saas/frontend/src/app/login/page.tsx:206"}, "properties": {"repobilityId": "c12d3c724c76047f", "scanner": "scanner-primary", "fingerprint": "a40402d263f1bc37", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "trading-saas/frontend/src/app/login/page.tsx"}, "region": {"startLine": 206}}}]}, {"ruleId": "scanner-3a27e4a71b8a9ba9", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in trading-saas/frontend/src/app/login/page.tsx:128"}, "properties": {"repobilityId": "7e337cf69f3d27dd", "scanner": "scanner-primary", "fingerprint": "3a27e4a71b8a9ba9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "trading-saas/frontend/src/app/login/page.tsx"}, "region": {"startLine": 128}}}]}, {"ruleId": "scanner-7481f93a87e5a269", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/core/health.js:6"}, "properties": {"repobilityId": "f97bc2431a7a7770", "scanner": "scanner-primary", "fingerprint": "7481f93a87e5a269", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/core/health.js"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-cb20b92ac77fab98", "level": "note", "message": {"text": "Very large file: tests/e2e.test.js (1584 lines)"}, "properties": {"repobilityId": "cee2afb009be43ed", "scanner": "scanner-primary", "fingerprint": "cb20b92ac77fab98", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d3d2961cacaa8f71", "level": "note", "message": {"text": "Very large file: masterbot/bot.js (2257 lines)"}, "properties": {"repobilityId": "f6d4002abc2926af", "scanner": "scanner-primary", "fingerprint": "d3d2961cacaa8f71", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fd4168de36f300c0", "level": "note", "message": {"text": "Very large file: dashboard/server.js (3850 lines)"}, "properties": {"repobilityId": "023b5ba50777ae21", "scanner": "scanner-primary", "fingerprint": "fd4168de36f300c0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1390d4b27f33f3f0", "level": "note", "message": {"text": "Very large file: trading-saas/frontend/src/app/bots/page.tsx (1188 lines)"}, "properties": {"repobilityId": "7d2599a8969641c9", "scanner": "scanner-primary", "fingerprint": "1390d4b27f33f3f0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea3b5e389d8c9c0f", "level": "note", "message": {"text": "Low test-to-source ratio"}, "properties": {"repobilityId": "ef7b2552cc00a375", "scanner": "scanner-primary", "fingerprint": "ea3b5e389d8c9c0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["tests"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "c8c5bb3d2c2ff7cc", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "3028c2ed8827ecd8", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "a7a4c857cdfd39ed", "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": "002927b815b4650a", "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": "7c813b2db738aa3d", "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": "a94ae606ada9f4c7", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-b09a7e3c8ac7c1f0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 masterbot/cleanup.js:24"}, "properties": {"repobilityId": "64306f21d2b75043", "scanner": "scanner-primary", "fingerprint": "b09a7e3c8ac7c1f0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0fb832e0ca49a906", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 masterbot/range-backtest.js:186"}, "properties": {"repobilityId": "43e714eb53f88bae", "scanner": "scanner-primary", "fingerprint": "0fb832e0ca49a906", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e208584d58e2fbe2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 masterbot/bot.js:149"}, "properties": {"repobilityId": "93da8eaf90fe79c9", "scanner": "scanner-primary", "fingerprint": "e208584d58e2fbe2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5848f369e4dfe1dd", "level": "none", "message": {"text": "Commented-code block (6 lines) in masterbot/lib/strategy-signals.js:58"}, "properties": {"repobilityId": "b35c9961c438beaa", "scanner": "scanner-primary", "fingerprint": "5848f369e4dfe1dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6afaa3880d71804e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/pine_push.js:9"}, "properties": {"repobilityId": "ae00618f28d9c6fc", "scanner": "scanner-primary", "fingerprint": "6afaa3880d71804e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6a4d53f5c15698ed", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/pine_pull.js:6"}, "properties": {"repobilityId": "ca67e3ae741a205e", "scanner": "scanner-primary", "fingerprint": "6a4d53f5c15698ed", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1d408ee77d6d3da1", "level": "none", "message": {"text": "Commented-code block (5 lines) in dashboard/server.js:1863"}, "properties": {"repobilityId": "15dcfe23ef3d3be5", "scanner": "scanner-primary", "fingerprint": "1d408ee77d6d3da1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6f2a2058aeefc1e8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 dashboard/server.js:1653"}, "properties": {"repobilityId": "c46ceba47e75eb43", "scanner": "scanner-primary", "fingerprint": "6f2a2058aeefc1e8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-044247e9c00ba47f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 trading-saas/frontend/src/lib/api.ts:143"}, "properties": {"repobilityId": "0026f1e961b248f7", "scanner": "scanner-primary", "fingerprint": "044247e9c00ba47f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2dd5449a362b0616", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 trading-saas/frontend/src/lib/apiV2.ts:15"}, "properties": {"repobilityId": "17d5b85a7a3a5009", "scanner": "scanner-primary", "fingerprint": "2dd5449a362b0616", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-803defde512e3aa9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 adaptive-bot/bot.js:28"}, "properties": {"repobilityId": "1a82e9df679a17cb", "scanner": "scanner-primary", "fingerprint": "803defde512e3aa9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8f4c703e5cfcc7b7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/connection.js:93"}, "properties": {"repobilityId": "90d88d8c14eea463", "scanner": "scanner-primary", "fingerprint": "8f4c703e5cfcc7b7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-123a0103779187ad", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/core/tab.js:14"}, "properties": {"repobilityId": "f979a122d92ce5f9", "scanner": "scanner-primary", "fingerprint": "123a0103779187ad", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c252943077f8c61f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/core/chart.js:209"}, "properties": {"repobilityId": "e93deeac024d0901", "scanner": "scanner-primary", "fingerprint": "c252943077f8c61f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a4fcd4a77b2dfeaf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/core/pine.js:203"}, "properties": {"repobilityId": "fbf5c58f05918dae", "scanner": "scanner-primary", "fingerprint": "a4fcd4a77b2dfeaf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-44e3dde63cfe208a", "level": "error", "message": {"text": "Dangling fetch: POST https://api.telegram.org/bot${token}/sendMessage (micro-scalper.js:78)"}, "properties": {"repobilityId": "cca5818c61d3f96e", "scanner": "scanner-primary", "fingerprint": "44e3dde63cfe208a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-35f544c8776dbabe", "level": "error", "message": {"text": "Dangling fetch: POST https://pine-facade.tradingview.com/pine-facade/translate_light?user_name=Guest&pine_id=00000000-0000-0000-0000-000000000000 (tests/e2e.test.js:909)"}, "properties": {"repobilityId": "83386c9845cccc17", "scanner": "scanner-primary", "fingerprint": "35f544c8776dbabe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-90a93bd64609d062", "level": "error", "message": {"text": "Dangling fetch: POST https://pine-facade.tradingview.com/pine-facade/translate_light?user_name=Guest&pine_id=00000000-0000-0000-0000-000000000000 (tests/pine_analyze.test.js:252)"}, "properties": {"repobilityId": "4e8b24be73b5ac33", "scanner": "scanner-primary", "fingerprint": "90a93bd64609d062", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-81cbcd459f6b0b09", "level": "error", "message": {"text": "Dangling fetch: POST https://pine-facade.tradingview.com/pine-facade/translate_light?user_name=Guest&pine_id=00000000-0000-0000-0000-000000000000 (tests/pine_analyze.test.js:278)"}, "properties": {"repobilityId": "7934bf46eb1adff4", "scanner": "scanner-primary", "fingerprint": "81cbcd459f6b0b09", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-66f7df3ddc7ff128", "level": "error", "message": {"text": "Dangling fetch: POST https://pine-facade.tradingview.com/pine-facade/translate_light?user_name=Guest&pine_id=00000000-0000-0000-0000-000000000000 (tests/pine_analyze.test.js:307)"}, "properties": {"repobilityId": "14b4fe14d10094cc", "scanner": "scanner-primary", "fingerprint": "66f7df3ddc7ff128", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a0d5d50dade12950", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (masterbot/bot.js:816)"}, "properties": {"repobilityId": "939905e1799879f5", "scanner": "scanner-primary", "fingerprint": "a0d5d50dade12950", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-abe1a2ce00bac6a3", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/account?${qsS}&signature=${sigS} (masterbot/bot.js:819)"}, "properties": {"repobilityId": "24a0a36732104131", "scanner": "scanner-primary", "fingerprint": "abe1a2ce00bac6a3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ac082bd2bb50ba6d", "level": "error", "message": {"text": "Dangling fetch: GET https://fapi.binance.com/fapi/v1/time (masterbot/bot.js:828)"}, "properties": {"repobilityId": "5c42b9c506b4eda0", "scanner": "scanner-primary", "fingerprint": "ac082bd2bb50ba6d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9d9b5d306a3b83db", "level": "error", "message": {"text": "Dangling fetch: GET https://fapi.binance.com/fapi/v2/account?${qsF}&signature=${sigF} (masterbot/bot.js:831)"}, "properties": {"repobilityId": "a1f5f61c2ca4fa1f", "scanner": "scanner-primary", "fingerprint": "9d9b5d306a3b83db", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6165ecb3d8e68dfc", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (masterbot/bot.js:871)"}, "properties": {"repobilityId": "fbb21d7cd1bf0697", "scanner": "scanner-primary", "fingerprint": "6165ecb3d8e68dfc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9eb66c80ea839e15", "level": "error", "message": {"text": "Dangling fetch: POST https://fapi.binance.com/fapi/v1/order?${slQuery}&signature=${slSig} (masterbot/bot.js:995)"}, "properties": {"repobilityId": "c9f81bec9de60aa8", "scanner": "scanner-primary", "fingerprint": "9eb66c80ea839e15", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f74b19862da317b9", "level": "error", "message": {"text": "Dangling fetch: POST https://fapi.binance.com/fapi/v1/order?${tpQuery}&signature=${tpSig} (masterbot/bot.js:1013)"}, "properties": {"repobilityId": "201cbc001752c4b1", "scanner": "scanner-primary", "fingerprint": "f74b19862da317b9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-121789ba225018d1", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (masterbot/bot.js:1113)"}, "properties": {"repobilityId": "55e1bb24d3812262", "scanner": "scanner-primary", "fingerprint": "121789ba225018d1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-45f9bc6a30769edf", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${symbol} (masterbot/bot.js:1137)"}, "properties": {"repobilityId": "9033f3bd99e60c5d", "scanner": "scanner-primary", "fingerprint": "45f9bc6a30769edf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-70e6b9d2aa9001bc", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (masterbot/bot.js:1192)"}, "properties": {"repobilityId": "7f2abd780ef01962", "scanner": "scanner-primary", "fingerprint": "70e6b9d2aa9001bc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fa789a3b09b36d7b", "level": "error", "message": {"text": "Dangling fetch: DELETE https://api.binance.com/api/v3/openOrders?${cQs}&signature=${cSig} (masterbot/bot.js:1264)"}, "properties": {"repobilityId": "31c78e2b012e0edd", "scanner": "scanner-primary", "fingerprint": "fa789a3b09b36d7b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4b31f63e6aa3dab5", "level": "error", "message": {"text": "Dangling fetch: GET https://fapi.binance.com/fapi/v2/positionRisk?${qs}&signature=${sig} (masterbot/bot.js:1304)"}, "properties": {"repobilityId": "4db4775982a851ea", "scanner": "scanner-primary", "fingerprint": "4b31f63e6aa3dab5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-323902f94df15eaa", "level": "error", "message": {"text": "Dangling fetch: GET https://fapi.binance.com/fapi/v1/openOrders?${oQs}&signature=${oSig} (masterbot/bot.js:1328)"}, "properties": {"repobilityId": "c2e6b0bea4619dd4", "scanner": "scanner-primary", "fingerprint": "323902f94df15eaa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-eca5fce17faddc0a", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/account?${sQs}&signature=${sSig} (masterbot/bot.js:1363)"}, "properties": {"repobilityId": "95941d936aeb1d30", "scanner": "scanner-primary", "fingerprint": "eca5fce17faddc0a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1b5fdc216ad12b42", "level": "error", "message": {"text": "Dangling fetch: POST http://localhost:${process.env.PORT || 3334}/api/symbol (masterbot/bot.js:1619)"}, "properties": {"repobilityId": "d8bd5dba1b4d47b7", "scanner": "scanner-primary", "fingerprint": "1b5fdc216ad12b42", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d2fb30d3ace48147", "level": "error", "message": {"text": "Dangling fetch: POST http://localhost:3333/api/symbol (masterbot/bot.js:1918)"}, "properties": {"repobilityId": "d215d5fc7ba8a104", "scanner": "scanner-primary", "fingerprint": "d2fb30d3ace48147", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8df06762c8e26a4b", "level": "error", "message": {"text": "Dangling fetch: POST http://localhost:3333/api/timeframe (masterbot/bot.js:1923)"}, "properties": {"repobilityId": "3102f114bfda7146", "scanner": "scanner-primary", "fingerprint": "8df06762c8e26a4b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2e977010ffdf92ae", "level": "error", "message": {"text": "Dangling fetch: POST http://localhost:${process.env.PORT || 3334}/api/alerts (masterbot/bot.js:1933)"}, "properties": {"repobilityId": "bcc78ca879e9cdac", "scanner": "scanner-primary", "fingerprint": "2e977010ffdf92ae", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1dac2226edd1b59b", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost:9222/json/list (scripts/pine_push.js:9)"}, "properties": {"repobilityId": "0851e1474f8a872a", "scanner": "scanner-primary", "fingerprint": "1dac2226edd1b59b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-71120ac19de4fd1b", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost:9222/json/list (scripts/pine_pull.js:6)"}, "properties": {"repobilityId": "6dc7c0b274b6294d", "scanner": "scanner-primary", "fingerprint": "71120ac19de4fd1b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8a7cc756e6191d5d", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/24hr?symbol=${symbol} (dashboard/server.js:505)"}, "properties": {"repobilityId": "910b70c6bc34480b", "scanner": "scanner-primary", "fingerprint": "8a7cc756e6191d5d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-48d4aa928f4dd964", "level": "error", "message": {"text": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${apiKey} (dashboard/server.js:1484)"}, "properties": {"repobilityId": "62cee37b72dc025b", "scanner": "scanner-primary", "fingerprint": "48d4aa928f4dd964", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-79b34288a769d5c1", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/exchangeInfo?symbol=${symbol} (dashboard/server.js:2002)"}, "properties": {"repobilityId": "0171773bdd911458", "scanner": "scanner-primary", "fingerprint": "79b34288a769d5c1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-563bb06696cf2cf0", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:2558)"}, "properties": {"repobilityId": "d4e2d8807e1d578f", "scanner": "scanner-primary", "fingerprint": "563bb06696cf2cf0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8f4b5370db3402d0", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/orderList?${qs}&signature=${sig} (dashboard/server.js:2561)"}, "properties": {"repobilityId": "b9ec1f8cbaaec352", "scanner": "scanner-primary", "fingerprint": "8f4b5370db3402d0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-10a79ee8f4ad82c4", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:2584)"}, "properties": {"repobilityId": "70ea72157575a1fa", "scanner": "scanner-primary", "fingerprint": "10a79ee8f4ad82c4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-76116db43cca2248", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/order?${oQs}&signature=${oSig} (dashboard/server.js:2587)"}, "properties": {"repobilityId": "30efb36d76bab043", "scanner": "scanner-primary", "fingerprint": "76116db43cca2248", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8432bd5dd3038153", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${pos.symbol} (dashboard/server.js:2616)"}, "properties": {"repobilityId": "263f906ba825c91a", "scanner": "scanner-primary", "fingerprint": "8432bd5dd3038153", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ced8ff392ccc840f", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:2636)"}, "properties": {"repobilityId": "e5db17937a8a1de3", "scanner": "scanner-primary", "fingerprint": "ced8ff392ccc840f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2036e0aeef695aa9", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/order?${qs}&signature=${sig} (dashboard/server.js:2639)"}, "properties": {"repobilityId": "de7b30bbe22f8c26", "scanner": "scanner-primary", "fingerprint": "2036e0aeef695aa9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d577ea663ec9cf2b", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${b.asset}USDT (dashboard/server.js:2726)"}, "properties": {"repobilityId": "321c71eaab4f946e", "scanner": "scanner-primary", "fingerprint": "d577ea663ec9cf2b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e9991967d7d8e103", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:2747)"}, "properties": {"repobilityId": "eb1c5bd001652c24", "scanner": "scanner-primary", "fingerprint": "e9991967d7d8e103", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bf49eeabfa788fc7", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/account?${qs}&signature=${sig} (dashboard/server.js:2750)"}, "properties": {"repobilityId": "921d46b3404b6bc2", "scanner": "scanner-primary", "fingerprint": "bf49eeabfa788fc7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-980748d6d0e537d7", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${symbol} (dashboard/server.js:2765)"}, "properties": {"repobilityId": "8e022bd3031bfb7d", "scanner": "scanner-primary", "fingerprint": "980748d6d0e537d7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a3c18dde0a804c34", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/exchangeInfo?symbol=${symbol} (dashboard/server.js:2800)"}, "properties": {"repobilityId": "a8e51daae1bd5a17", "scanner": "scanner-primary", "fingerprint": "a3c18dde0a804c34", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-beda4210a445b452", "level": "error", "message": {"text": "Dangling fetch: GET https://fapi.binance.com/fapi/v1/exchangeInfo?symbol=${pos.symbol} (dashboard/server.js:2869)"}, "properties": {"repobilityId": "164f3325a632dcb4", "scanner": "scanner-primary", "fingerprint": "beda4210a445b452", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7f6e5543ab4c6a6e", "level": "error", "message": {"text": "Dangling fetch: GET https://fapi.binance.com/fapi/v1/time (dashboard/server.js:2882)"}, "properties": {"repobilityId": "77fe6e6488a061e5", "scanner": "scanner-primary", "fingerprint": "7f6e5543ab4c6a6e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6bb988dd224fd1ea", "level": "error", "message": {"text": "Dangling fetch: POST https://fapi.binance.com/fapi/v1/order?${qs}&signature=${sig} (dashboard/server.js:2887)"}, "properties": {"repobilityId": "e8ef021452c9fd8e", "scanner": "scanner-primary", "fingerprint": "6bb988dd224fd1ea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-61408b8863f0e028", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:2900)"}, "properties": {"repobilityId": "6513ccbe14dbe247", "scanner": "scanner-primary", "fingerprint": "61408b8863f0e028", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8712510b2572f13a", "level": "error", "message": {"text": "Dangling fetch: DELETE https://api.binance.com/api/v3/orderList?${qs}&signature=${sig} (dashboard/server.js:2904)"}, "properties": {"repobilityId": "87b6034038f999f4", "scanner": "scanner-primary", "fingerprint": "8712510b2572f13a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-01a37f3f6925c661", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:2915)"}, "properties": {"repobilityId": "b68efc995162013f", "scanner": "scanner-primary", "fingerprint": "01a37f3f6925c661", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-206dc3b1a7c9d501", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/account?${qsAcc}&signature=${sigAcc} (dashboard/server.js:2919)"}, "properties": {"repobilityId": "5e320ee79ebb2d3b", "scanner": "scanner-primary", "fingerprint": "206dc3b1a7c9d501", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a7567982e41109c7", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:2929)"}, "properties": {"repobilityId": "7156bbffee065c36", "scanner": "scanner-primary", "fingerprint": "a7567982e41109c7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bec144ae9d484c69", "level": "error", "message": {"text": "Dangling fetch: POST https://api.binance.com/api/v3/order?${qs}&signature=${sig} (dashboard/server.js:2933)"}, "properties": {"repobilityId": "757af8ab63e530fc", "scanner": "scanner-primary", "fingerprint": "bec144ae9d484c69", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b7ba61fdd234eba0", "level": "error", "message": {"text": "Dangling fetch: GET https://fapi.binance.com/fapi/v1/exchangeInfo?symbol=${pos.symbol} (dashboard/server.js:2986)"}, "properties": {"repobilityId": "df358856fb2355cc", "scanner": "scanner-primary", "fingerprint": "b7ba61fdd234eba0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e358c62e042c6a5f", "level": "error", "message": {"text": "Dangling fetch: POST https://fapi.binance.com/fapi/v1/order?${qsTP}&signature=${sigTP} (dashboard/server.js:3017)"}, "properties": {"repobilityId": "36ce676546c40b27", "scanner": "scanner-primary", "fingerprint": "e358c62e042c6a5f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c6fc055d60e768be", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:3033)"}, "properties": {"repobilityId": "d01abb65479bd25f", "scanner": "scanner-primary", "fingerprint": "c6fc055d60e768be", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5ad1043ed948eacf", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/account?${qsA}&signature=${sigA} (dashboard/server.js:3036)"}, "properties": {"repobilityId": "93bf055c4531515b", "scanner": "scanner-primary", "fingerprint": "5ad1043ed948eacf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7495661c1488fc04", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/exchangeInfo?symbol=${pos.symbol} (dashboard/server.js:3042)"}, "properties": {"repobilityId": "6864920fd082900f", "scanner": "scanner-primary", "fingerprint": "7495661c1488fc04", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b4d8513082e26b4f", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${pos.symbol} (dashboard/server.js:3046)"}, "properties": {"repobilityId": "a5415e325fd1d7fe", "scanner": "scanner-primary", "fingerprint": "b4d8513082e26b4f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0ff71a4e76f61da8", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:3069)"}, "properties": {"repobilityId": "56769d553fdb43ed", "scanner": "scanner-primary", "fingerprint": "0ff71a4e76f61da8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0e22e6483c50ce24", "level": "error", "message": {"text": "Dangling fetch: POST https://api.binance.com/api/v3/order/oco?${qs}&signature=${sig} (dashboard/server.js:3076)"}, "properties": {"repobilityId": "d407697abc28202b", "scanner": "scanner-primary", "fingerprint": "0e22e6483c50ce24", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0c025f434571f8de", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:3232)"}, "properties": {"repobilityId": "2f9229d785e4e423", "scanner": "scanner-primary", "fingerprint": "0c025f434571f8de", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-eb3fefa79bdc3e10", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/account?${qsS}&signature=${sigS} (dashboard/server.js:3235)"}, "properties": {"repobilityId": "ebaa0ea92b8628ab", "scanner": "scanner-primary", "fingerprint": "eb3fefa79bdc3e10", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-adfbf4a6b57935f0", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${b.asset}USDT (dashboard/server.js:3246)"}, "properties": {"repobilityId": "5e7a3e7f23436f39", "scanner": "scanner-primary", "fingerprint": "adfbf4a6b57935f0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6947aead1e11cd6a", "level": "error", "message": {"text": "Dangling fetch: GET https://fapi.binance.com/fapi/v1/time (dashboard/server.js:3256)"}, "properties": {"repobilityId": "726261a6ae435a03", "scanner": "scanner-primary", "fingerprint": "6947aead1e11cd6a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-672a539635aa79e2", "level": "error", "message": {"text": "Dangling fetch: GET https://fapi.binance.com/fapi/v2/account?${qsF}&signature=${sigF} (dashboard/server.js:3259)"}, "properties": {"repobilityId": "234b22190b7039d5", "scanner": "scanner-primary", "fingerprint": "672a539635aa79e2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2962881baa2831a3", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:3282)"}, "properties": {"repobilityId": "7ec61984a721903d", "scanner": "scanner-primary", "fingerprint": "2962881baa2831a3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-db7a83b61c6e85d9", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/account?${qs}&signature=${sig} (dashboard/server.js:3286)"}, "properties": {"repobilityId": "942656db3cb9b91e", "scanner": "scanner-primary", "fingerprint": "db7a83b61c6e85d9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8d3765d1d08f58e8", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${b.asset}USDT (dashboard/server.js:3301)"}, "properties": {"repobilityId": "625abf41c2edf082", "scanner": "scanner-primary", "fingerprint": "8d3765d1d08f58e8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f8c3d5cdbaaeba28", "level": "error", "message": {"text": "Dangling fetch: GET https://economia.awesomeapi.com.br/json/last/USD-BRL (dashboard/server.js:3310)"}, "properties": {"repobilityId": "f563a3ddf01b44ce", "scanner": "scanner-primary", "fingerprint": "f8c3d5cdbaaeba28", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b249e17b5d32f185", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${req.params.symbol} (dashboard/server.js:3322)"}, "properties": {"repobilityId": "bdf233401658e59d", "scanner": "scanner-primary", "fingerprint": "b249e17b5d32f185", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-327db6a141c72696", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price?symbol=${symbol} (dashboard/server.js:3370)"}, "properties": {"repobilityId": "cd3d707ad89c60e4", "scanner": "scanner-primary", "fingerprint": "327db6a141c72696", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f364cd910b53492d", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/time (dashboard/server.js:3375)"}, "properties": {"repobilityId": "8cd0405385ad8cd2", "scanner": "scanner-primary", "fingerprint": "f364cd910b53492d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-528347aeafbb5e21", "level": "error", "message": {"text": "Dangling fetch: POST https://api.binance.com/api/v3/order?${qs}&signature=${sig} (dashboard/server.js:3379)"}, "properties": {"repobilityId": "458a889a2480cfe5", "scanner": "scanner-primary", "fingerprint": "528347aeafbb5e21", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8679510a6b11e58a", "level": "error", "message": {"text": "Dangling fetch: GET http://${CDP_HOST}:${CDP_PORT}/json/version (src/connection.js:76)"}, "properties": {"repobilityId": "1c7af04dfd211248", "scanner": "scanner-primary", "fingerprint": "8679510a6b11e58a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-adfde688763a64e2", "level": "error", "message": {"text": "Dangling fetch: GET http://${CDP_HOST}:${CDP_PORT}/json/list (src/connection.js:93)"}, "properties": {"repobilityId": "fe68e53815d488a8", "scanner": "scanner-primary", "fingerprint": "adfde688763a64e2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7bc3c1598632eb5e", "level": "error", "message": {"text": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=${apiKey} (src/ai/reviewer.js:46)"}, "properties": {"repobilityId": "b3e77d62c6290428", "scanner": "scanner-primary", "fingerprint": "7bc3c1598632eb5e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fc4e0894a2f5d7ce", "level": "error", "message": {"text": "Dangling fetch: GET http://${CDP_HOST}:${CDP_PORT}/json/list (src/core/tab.js:14)"}, "properties": {"repobilityId": "95279b731784a5a2", "scanner": "scanner-primary", "fingerprint": "fc4e0894a2f5d7ce", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e79ff2715d861128", "level": "error", "message": {"text": "Dangling fetch: GET http://${CDP_HOST}:${CDP_PORT}/json/activate/${target.id} (src/core/tab.js:100)"}, "properties": {"repobilityId": "09c17a74f1fb352b", "scanner": "scanner-primary", "fingerprint": "e79ff2715d861128", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3522625d048cf66e", "level": "error", "message": {"text": "Dangling fetch: GET https://pricealerts.tradingview.com/list_alerts (src/core/alerts.js:78)"}, "properties": {"repobilityId": "83da374373afc27e", "scanner": "scanner-primary", "fingerprint": "3522625d048cf66e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1325689409d5ada4", "level": "error", "message": {"text": "Dangling fetch: GET https://symbol-search.tradingview.com/symbol_search/v3/?${params} (src/core/chart.js:209)"}, "properties": {"repobilityId": "3f0437a75e0a53a7", "scanner": "scanner-primary", "fingerprint": "1325689409d5ada4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-516a2909a9d24d5e", "level": "error", "message": {"text": "Dangling fetch: POST https://pine-facade.tradingview.com/pine-facade/translate_light?user_name=Guest&pine_id=00000000-0000-0000-0000-000000000000 (src/core/pine.js:203)"}, "properties": {"repobilityId": "c43d8a75ea1be947", "scanner": "scanner-primary", "fingerprint": "516a2909a9d24d5e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3174308be42ca4b2", "level": "error", "message": {"text": "Dangling fetch: GET https://pine-facade.tradingview.com/pine-facade/list/?filter=saved (src/core/pine.js:559)"}, "properties": {"repobilityId": "b4069375d8e862f4", "scanner": "scanner-primary", "fingerprint": "3174308be42ca4b2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-90d90c0fb37e0478", "level": "error", "message": {"text": "Dangling fetch: GET https://pine-facade.tradingview.com/pine-facade/list/?filter=saved (src/core/pine.js:606)"}, "properties": {"repobilityId": "8d61f3a588adf642", "scanner": "scanner-primary", "fingerprint": "90d90c0fb37e0478", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-62e6ee784dfe6152", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/klines?symbol=${chartSymbol}&interval=1h&limit=168 (trading-saas/frontend/src/app/page.tsx:75)"}, "properties": {"repobilityId": "3f209bae689b4ca0", "scanner": "scanner-primary", "fingerprint": "62e6ee784dfe6152", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-398f6872c74ae03a", "level": "error", "message": {"text": "Dangling fetch: GET https://api.binance.com/api/v3/ticker/price (trading-saas/frontend/src/app/posicoes/page.tsx:111)"}, "properties": {"repobilityId": "7aa1f099d4f70111", "scanner": "scanner-primary", "fingerprint": "398f6872c74ae03a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-87835f811ef7ced4", "level": "note", "message": {"text": "Unused endpoint: GET /api/micro-scalper/config"}, "properties": {"repobilityId": "075bdab377ef9ed3", "scanner": "scanner-primary", "fingerprint": "87835f811ef7ced4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ea187d86053f598b", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/micro-scalper/config"}, "properties": {"repobilityId": "509838a083a57a69", "scanner": "scanner-primary", "fingerprint": "ea187d86053f598b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-570b2868acb31f88", "level": "note", "message": {"text": "Unused endpoint: GET /api/micro-scalper/signal"}, "properties": {"repobilityId": "6577b6b3d53bc83c", "scanner": "scanner-primary", "fingerprint": "570b2868acb31f88", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a5b3437e64c8f7b4", "level": "note", "message": {"text": "Unused endpoint: POST /api/auth/register"}, "properties": {"repobilityId": "a54547813484f6d5", "scanner": "scanner-primary", "fingerprint": "a5b3437e64c8f7b4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fd55aa0818a7c897", "level": "note", "message": {"text": "Unused endpoint: POST /api/auth/login"}, "properties": {"repobilityId": "dec54cc56601aab3", "scanner": "scanner-primary", "fingerprint": "fd55aa0818a7c897", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ee4aa5ddab88c9dc", "level": "note", "message": {"text": "Unused endpoint: GET /api/auth/me"}, "properties": {"repobilityId": "1bd212f83e0cfa9d", "scanner": "scanner-primary", "fingerprint": "ee4aa5ddab88c9dc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4756b4c4da7d2088", "level": "note", "message": {"text": "Unused endpoint: GET /api/health"}, "properties": {"repobilityId": "b3bb54d542ef6e79", "scanner": "scanner-primary", "fingerprint": "4756b4c4da7d2088", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0d9167c13207565d", "level": "note", "message": {"text": "Unused endpoint: POST /api/micro-scalper/trade"}, "properties": {"repobilityId": "f141079bba0a7980", "scanner": "scanner-primary", "fingerprint": "0d9167c13207565d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-43060e626aa92b50", "level": "note", "message": {"text": "Unused endpoint: POST /api/micro-scalper/sync-symbol"}, "properties": {"repobilityId": "0212ef9183478f60", "scanner": "scanner-primary", "fingerprint": "43060e626aa92b50", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-27652a11ba620012", "level": "note", "message": {"text": "Unused endpoint: GET /api/state"}, "properties": {"repobilityId": "502acb570bad0ddf", "scanner": "scanner-primary", "fingerprint": "27652a11ba620012", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-371b8888c14d5797", "level": "note", "message": {"text": "Unused endpoint: GET /api/quote"}, "properties": {"repobilityId": "4c97987bac73af12", "scanner": "scanner-primary", "fingerprint": "371b8888c14d5797", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b29f65bc5b5c7a40", "level": "note", "message": {"text": "Unused endpoint: GET /api/indicators"}, "properties": {"repobilityId": "1ce4d0a51fbd123c", "scanner": "scanner-primary", "fingerprint": "b29f65bc5b5c7a40", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5233b99050664a5c", "level": "note", "message": {"text": "Unused endpoint: GET /api/ohlcv"}, "properties": {"repobilityId": "854c622d79feeb5b", "scanner": "scanner-primary", "fingerprint": "5233b99050664a5c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ba8710cca2507e24", "level": "note", "message": {"text": "Unused endpoint: POST /api/symbol"}, "properties": {"repobilityId": "62ee1529f562686f", "scanner": "scanner-primary", "fingerprint": "ba8710cca2507e24", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c908ca11cb357d71", "level": "note", "message": {"text": "Unused endpoint: POST /api/timeframe"}, "properties": {"repobilityId": "759c02b75707ff93", "scanner": "scanner-primary", "fingerprint": "c908ca11cb357d71", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-92a2bba2a8cd6aab", "level": "note", "message": {"text": "Unused endpoint: POST /api/chart/goto"}, "properties": {"repobilityId": "b55f8486d66d524c", "scanner": "scanner-primary", "fingerprint": "92a2bba2a8cd6aab", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-27d4fa34d3c56acb", "level": "note", "message": {"text": "Unused endpoint: GET /api/symbol-search"}, "properties": {"repobilityId": "ad9bc4933925f545", "scanner": "scanner-primary", "fingerprint": "27d4fa34d3c56acb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-79e9dd5853bea487", "level": "note", "message": {"text": "Unused endpoint: POST /api/screenshot"}, "properties": {"repobilityId": "c04148aed9517577", "scanner": "scanner-primary", "fingerprint": "79e9dd5853bea487", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6135c1190e777501", "level": "note", "message": {"text": "Unused endpoint: GET /api/screenshot-image"}, "properties": {"repobilityId": "5fe7b11c4f7323da", "scanner": "scanner-primary", "fingerprint": "6135c1190e777501", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-188fc7bee1b6f91f", "level": "note", "message": {"text": "Unused endpoint: GET /api/screenshots/list"}, "properties": {"repobilityId": "19a03df127cd0bbd", "scanner": "scanner-primary", "fingerprint": "188fc7bee1b6f91f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cb13911602e8a3b3", "level": "note", "message": {"text": "Unused endpoint: GET /api/screenshots/file/:name"}, "properties": {"repobilityId": "070e0bf3b2c90b9a", "scanner": "scanner-primary", "fingerprint": "cb13911602e8a3b3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-158ab44b8fb3bc84", "level": "note", "message": {"text": "Unused endpoint: GET /api/brief"}, "properties": {"repobilityId": "3851a8175593d89d", "scanner": "scanner-primary", "fingerprint": "158ab44b8fb3bc84", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7f8379af015149f1", "level": "note", "message": {"text": "Unused endpoint: GET /api/alerts"}, "properties": {"repobilityId": "007e42929d46a62b", "scanner": "scanner-primary", "fingerprint": "7f8379af015149f1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c213d913c050d455", "level": "note", "message": {"text": "Unused endpoint: POST /api/alerts"}, "properties": {"repobilityId": "e2c1244d56b005ff", "scanner": "scanner-primary", "fingerprint": "c213d913c050d455", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d9491b8ff0582f02", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/alerts"}, "properties": {"repobilityId": "6572fffa57864554", "scanner": "scanner-primary", "fingerprint": "d9491b8ff0582f02", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-26c5dc8c58766f6b", "level": "note", "message": {"text": "Unused endpoint: GET /api/strategy"}, "properties": {"repobilityId": "5cf6cea57ace354b", "scanner": "scanner-primary", "fingerprint": "26c5dc8c58766f6b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4805a4e4bb2fdcb7", "level": "note", "message": {"text": "Unused endpoint: GET /api/strategy/trades"}, "properties": {"repobilityId": "2baf510fa6271611", "scanner": "scanner-primary", "fingerprint": "4805a4e4bb2fdcb7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b7973d86a4cbfd5d", "level": "note", "message": {"text": "Unused endpoint: GET /api/strategy/equity"}, "properties": {"repobilityId": "7ce35eaa5e615cbd", "scanner": "scanner-primary", "fingerprint": "b7973d86a4cbfd5d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-122b91234e3a1331", "level": "note", "message": {"text": "Unused endpoint: POST /api/scanner"}, "properties": {"repobilityId": "987a2b13403c2443", "scanner": "scanner-primary", "fingerprint": "122b91234e3a1331", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-19c8531eb02471bd", "level": "note", "message": {"text": "Unused endpoint: GET /api/watchlist"}, "properties": {"repobilityId": "2addac5cc97edcb1", "scanner": "scanner-primary", "fingerprint": "19c8531eb02471bd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dd964f0d5fec5654", "level": "note", "message": {"text": "Unused endpoint: POST /api/watchlist/add"}, "properties": {"repobilityId": "613f382c4d5aa51e", "scanner": "scanner-primary", "fingerprint": "dd964f0d5fec5654", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f912d8f890d14eba", "level": "note", "message": {"text": "Unused endpoint: POST /api/replay/start"}, "properties": {"repobilityId": "8715f50488ea68e2", "scanner": "scanner-primary", "fingerprint": "f912d8f890d14eba", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d70a10011786d7f2", "level": "note", "message": {"text": "Unused endpoint: POST /api/replay/step"}, "properties": {"repobilityId": "fa105b0199df22ae", "scanner": "scanner-primary", "fingerprint": "d70a10011786d7f2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-014488cd31c1399b", "level": "note", "message": {"text": "Unused endpoint: POST /api/replay/autoplay"}, "properties": {"repobilityId": "2c3085d9049fa5d4", "scanner": "scanner-primary", "fingerprint": "014488cd31c1399b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b1f5af3dab62b777", "level": "note", "message": {"text": "Unused endpoint: POST /api/replay/stop"}, "properties": {"repobilityId": "882f6c1dee27c291", "scanner": "scanner-primary", "fingerprint": "b1f5af3dab62b777", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f0e222a268dda75a", "level": "note", "message": {"text": "Unused endpoint: GET /api/replay/status"}, "properties": {"repobilityId": "0fb1b583c8973c0e", "scanner": "scanner-primary", "fingerprint": "f0e222a268dda75a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2da29c22f86c9fd3", "level": "note", "message": {"text": "Unused endpoint: POST /api/replay/trade"}, "properties": {"repobilityId": "604d8ad9d743bd0a", "scanner": "scanner-primary", "fingerprint": "2da29c22f86c9fd3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e27aaf4ee2084244", "level": "note", "message": {"text": "Unused endpoint: GET /api/pine/source"}, "properties": {"repobilityId": "1089f110084cb765", "scanner": "scanner-primary", "fingerprint": "e27aaf4ee2084244", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e5bdab68eca8f74d", "level": "note", "message": {"text": "Unused endpoint: POST /api/pine/source"}, "properties": {"repobilityId": "a340d793bf6488fe", "scanner": "scanner-primary", "fingerprint": "e5bdab68eca8f74d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2faca6ac72f95c55", "level": "note", "message": {"text": "Unused endpoint: POST /api/pine/compile"}, "properties": {"repobilityId": "7c4bc4516b9eb279", "scanner": "scanner-primary", "fingerprint": "2faca6ac72f95c55", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8a94a16f3a1c1a27", "level": "note", "message": {"text": "Unused endpoint: GET /api/pine/errors"}, "properties": {"repobilityId": "5c6f601b14dcfb1e", "scanner": "scanner-primary", "fingerprint": "8a94a16f3a1c1a27", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a83e2124d10f3a9b", "level": "note", "message": {"text": "Unused endpoint: POST /api/pine/save"}, "properties": {"repobilityId": "bb258d2f85c8c500", "scanner": "scanner-primary", "fingerprint": "a83e2124d10f3a9b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2305976574bc9942", "level": "note", "message": {"text": "Unused endpoint: GET /api/pine/list"}, "properties": {"repobilityId": "da924aaa21a8e560", "scanner": "scanner-primary", "fingerprint": "2305976574bc9942", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cd508a5a550b6ac3", "level": "note", "message": {"text": "Unused endpoint: POST /api/pine/open"}, "properties": {"repobilityId": "09ab9c373b2f0065", "scanner": "scanner-primary", "fingerprint": "cd508a5a550b6ac3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bd676b6007616589", "level": "note", "message": {"text": "Unused endpoint: GET /api/pine/console"}, "properties": {"repobilityId": "9a441d81750165e4", "scanner": "scanner-primary", "fingerprint": "bd676b6007616589", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2996752c7b3b2906", "level": "note", "message": {"text": "Unused endpoint: GET /api/journal"}, "properties": {"repobilityId": "5de9e405cf11ce90", "scanner": "scanner-primary", "fingerprint": "2996752c7b3b2906", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-171fe460bef07256", "level": "note", "message": {"text": "Unused endpoint: POST /api/journal"}, "properties": {"repobilityId": "7796b8f10edc5d09", "scanner": "scanner-primary", "fingerprint": "171fe460bef07256", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e75590d021b65825", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/journal/:id"}, "properties": {"repobilityId": "a9578dc56e073237", "scanner": "scanner-primary", "fingerprint": "e75590d021b65825", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-52fe13f6b40b16a8", "level": "note", "message": {"text": "Unused endpoint: GET /api/strategies"}, "properties": {"repobilityId": "f23dcb88ba5d277e", "scanner": "scanner-primary", "fingerprint": "52fe13f6b40b16a8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3943d23b06595cfd", "level": "note", "message": {"text": "Unused endpoint: GET /api/strategies/current"}, "properties": {"repobilityId": "fb7274d3bf94f888", "scanner": "scanner-primary", "fingerprint": "3943d23b06595cfd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}