{"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-857a4af016beb11e", "name": "Possibly dead Python function: wr_bucket", "shortDescription": {"text": "Possibly dead Python function: wr_bucket"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-276d62e97a406521", "name": "Possibly dead Python function: momentum_bucket", "shortDescription": {"text": "Possibly dead Python function: momentum_bucket"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ec379a737c542845", "name": "Possibly dead Python function: tsl_bucket", "shortDescription": {"text": "Possibly dead Python function: tsl_bucket"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a31e0789ce74a1e6", "name": "Possibly dead Python function: auto_update_loop", "shortDescription": {"text": "Possibly dead Python function: auto_update_loop"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-44f3bc60dab2206a", "name": "Possibly dead Python function: toggle_prevent_sleep", "shortDescription": {"text": "Possibly dead Python function: toggle_prevent_sleep"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1c07a19d11719997", "name": "Possibly dead Python function: refresh_now", "shortDescription": {"text": "Possibly dead Python function: refresh_now"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0424c404c10be925", "name": "Possibly dead Python function: cmd_pause", "shortDescription": {"text": "Possibly dead Python function: cmd_pause"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1a6dc7759f01a1b7", "name": "Possibly dead Python function: cmd_resume", "shortDescription": {"text": "Possibly dead Python function: cmd_resume"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4da528bc9d9919fe", "name": "Possibly dead Python function: cmd_dry_toggle", "shortDescription": {"text": "Possibly dead Python function: cmd_dry_toggle"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-db005ddea2ce6bbe", "name": "Possibly dead Python function: cmd_state_request", "shortDescription": {"text": "Possibly dead Python function: cmd_state_request"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f582307ff0ff9770", "name": "Possibly dead Python function: cmd_emergency_clear", "shortDescription": {"text": "Possibly dead Python function: cmd_emergency_clear"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0fd4f93877a07bd4", "name": "Stray `console.log` in TS/JS \u2014 tests/sl-cooldown.test.js:201", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/sl-cooldown.test.js:201"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c83e83c6ed75d039", "name": "Stray `console.log` in TS/JS \u2014 tests/telegram-board.test.js:133", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/telegram-board.test.js:133"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a29ee560d039ca37", "name": "Stray `console.log` in TS/JS \u2014 tests/diagnose-streaming.js:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/diagnose-streaming.js:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9c3ff711f55ca507", "name": "Stray `console.log` in TS/JS \u2014 tests/trend-rule.test.js:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/trend-rule.test.js:52"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b7eb5dfe68adf34b", "name": "Stray `console.log` in TS/JS \u2014 tests/news-gate.test.js:132", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/news-gate.test.js:132"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8abb26f90d7738bb", "name": "Stray `console.log` in TS/JS \u2014 tests/ui-state.test.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/ui-state.test.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-935efb0c303b7644", "name": "Icon-only button without accessible name \u2014 docs/specs/redesign/canvas/android/screen-settings.jsx:12", "shortDescription": {"text": "Icon-only button without accessible name \u2014 docs/specs/redesign/canvas/android/screen-settings.jsx:12"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5f2e71982b8d25d3", "name": "Stray `console.log` in TS/JS \u2014 scripts/mc-simulation.js:107", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mc-simulation.js:107"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-235f1484eac39b04", "name": "Icon-only button without accessible name \u2014 mobile/docs/specs/redesign/canvas/v2-2026-05-18/screen-settings.jsx:20", "shortDescription": {"text": "Icon-only button without accessible name \u2014 mobile/docs/specs/redesign/canvas/v2-2026-05-18/screen-settings.jsx:20"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-03df07c60aa0aeb1", "name": "Stray `console.log` in TS/JS \u2014 mobile/src/main.tsx:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 mobile/src/main.tsx:8"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c29910a8967ec2e4", "name": "Icon-only button without accessible name \u2014 mobile/src/components/CommandStatusToast.tsx:74", "shortDescription": {"text": "Icon-only button without accessible name \u2014 mobile/src/components/CommandStatusToast.tsx:74"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7ff09c6cadd4400d", "name": "Stray `console.log` in TS/JS \u2014 saxo/index.js:158", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/index.js:158"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a81ca3e1c51cc57c", "name": "Stray `console.log` in TS/JS \u2014 saxo/tests/fixtures/gen-synthetic-usdjpy-14d.js:126", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/tests/fixtures/gen-synthetic-usdjpy-14d.js:126"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a0c3446b8514f83a", "name": "Stray `console.log` in TS/JS \u2014 saxo/auth/authorize-cli.js:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/auth/authorize-cli.js:30"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c39f7f8d788c6865", "name": "Stray `console.log` in TS/JS \u2014 saxo/auth/oauth.js:108", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/auth/oauth.js:108"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f06d2acdf6a2068b", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/tpsl-1to1-replay.js:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/tpsl-1to1-replay.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-47a9b09b201ffd9f", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/check-account-tradability.js:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/check-account-tradability.js:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a2548835ee71aaf6", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/show-state.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/show-state.js:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f17ebb15f9ae8abc", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/regime-shadow-stats.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/regime-shadow-stats.js:37"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c563fa795b0b6f4a", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/order-cycle-verify.js:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/order-cycle-verify.js:31"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a1814d66ab117b27", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/spread-ev-sensitivity.js:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/spread-ev-sensitivity.js:47"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6a989d2952e4192c", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/whipsaw-cooldown-eval.js:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/whipsaw-cooldown-eval.js:66"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-342896ad6a55440c", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/label-stats.js:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/label-stats.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-458c07bbe6b03d86", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/fcm-signal.js:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/fcm-signal.js:32"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a0067a322f8c5d4e", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/test-refresh.js:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/test-refresh.js:31"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f2dc31340c746f9a", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/both-lose-analysis.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/both-lose-analysis.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-1da2194fb516d356", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/shadow-routing-accumulate.js:87", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/shadow-routing-accumulate.js:87"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9d0f58ac94797066", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/both-lose-gate-eval-liveadmissible.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/both-lose-gate-eval-liveadmissible.js:37"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c178932aa657e7fe", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/fcm-status.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/fcm-status.js:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-44fded795f25fc9e", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/place-ifo.js:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/place-ifo.js:70"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-69d56e2cbf135e2c", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/check-instrument.js:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/check-instrument.js:30"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bb3d1b63b45eb36d", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/smoke-direct.js:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/smoke-direct.js:47"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1d9af1abaef64aaa", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/push-shadow-summary.js:125", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/push-shadow-summary.js:125"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-551460cea1772172", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/both-lose-gate-eval.js:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/both-lose-gate-eval.js:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-18aa60257ff32e03", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/pdca-branch-eval.js:93", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/pdca-branch-eval.js:93"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-95ad30f8474133f6", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/mc-leg-gate-report.js:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/mc-leg-gate-report.js:48"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-79904a89468ed77b", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/check-positions.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/check-positions.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-7c0adbfd9e5536e9", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/mc-thesis-sim.js:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/mc-thesis-sim.js:17"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b8628c1c2117e240", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/test-aggregation-live.js:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/test-aggregation-live.js:20"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-56c6f86c88c6875a", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/cancel-order.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/cancel-order.js:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dc453da312094d44", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/check-netting.js:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/check-netting.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-1712df18537f2eeb", "name": "Stray `console.log` in TS/JS \u2014 saxo/scripts/spread-snapshot.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/spread-snapshot.js:37"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0afa287625acf7fa", "name": "Stray `console.log` in TS/JS \u2014 src/options/options-shadowlab-readonly.js:1028", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/options/options-shadowlab-readonly.js:1028"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-677b81918fc6c823", "name": "Stray `console.log` in TS/JS \u2014 src/options/options-tooltips.js:499", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/options/options-tooltips.js:499"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f42fa40d417e57c1", "name": "Stray `console.log` in TS/JS \u2014 src/options/options.js:1076", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/options/options.js:1076"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-60a848c1dcad538f", "name": "Stray `console.log` in TS/JS \u2014 src/options/options-d2-d4-e3-c2.js:160", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/options/options-d2-d4-e3-c2.js:160"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-542af24a522df40e", "name": "Stray `console.log` in TS/JS \u2014 src/options/options-safety-rail.js:353", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/options/options-safety-rail.js:353"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9a0b6692d2c9d5f3", "name": "Stray `console.log` in TS/JS \u2014 src/options/options-b1-b2.js:59", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/options/options-b1-b2.js:59"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0a93cf53faa7f908", "name": "Stray `console.log` in TS/JS \u2014 src/lib/schedule-v2.js:291", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/schedule-v2.js:291"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-af6cb30950f52499", "name": "Stray `console.log` in TS/JS \u2014 src/lib/optimizer.js:388", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/optimizer.js:388"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d0311da46e1e5270", "name": "Stray `console.log` in TS/JS \u2014 src/lib/storage-migration.js:155", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/storage-migration.js:155"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6a9592e6670e034d", "name": "Stray `console.log` in TS/JS \u2014 src/lib/shadow-lab/tick-monitor.js:105", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/shadow-lab/tick-monitor.js:105"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-79aa542ee21cae2e", "name": "Stray `console.log` in TS/JS \u2014 src/content/gaikaex-popup-prepatch.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/content/gaikaex-popup-prepatch.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-1535757bd14c9d27", "name": "Stray `console.log` in TS/JS \u2014 src/content/main-page.js:283", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/content/main-page.js:283"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c60c45520830771", "name": "Stray `console.log` in TS/JS \u2014 src/content/auto-relogin.js:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/content/auto-relogin.js:54"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cf28d86f6ac8e2a9", "name": "Stray `console.log` in TS/JS \u2014 src/content/popup-page.js:228", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/content/popup-page.js:228"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-93d0cf785c4013e5", "name": "Stray `console.log` in TS/JS \u2014 src/background/service-worker.js:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/background/service-worker.js:64"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6bce39e3f63df344", "name": "Stray `console.log` in TS/JS \u2014 src/background/auto-reload.js:129", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/background/auto-reload.js:129"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ee3b53435d10af3f", "name": "Privileged port 6 in use", "shortDescription": {"text": "Privileged port 6 in use"}, "fullDescription": {"text": "Port 6 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9337a27da0cea06c", "name": "Privileged port 30 in use", "shortDescription": {"text": "Privileged port 30 in use"}, "fullDescription": {"text": "Port 30 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c1928f661ceae62c", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/specs/redesign/canvas/v5/options-unified-ops.html:129", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/specs/redesign/canvas/v5/options-unified-ops.html:129"}, "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-ff7c7ebd8f6615f6", "name": "Insecure pattern 'new_function_used' in scripts/smoke-test-runner.js:21", "shortDescription": {"text": "Insecure pattern 'new_function_used' in scripts/smoke-test-runner.js:21"}, "fullDescription": {"text": "Found a known-risky pattern (new_function_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-09325b4aba6ed140", "name": "Insecure pattern 'node_child_process' in mobile/vite.config.ts:4", "shortDescription": {"text": "Insecure pattern 'node_child_process' in mobile/vite.config.ts:4"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141d99a18ba0c971", "name": "Insecure pattern 'node_child_process' in saxo/auth/keychain.js:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in saxo/auth/keychain.js:14"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4910709e0b2d114f", "name": "Insecure pattern 'node_child_process' in saxo/auth/cert.js:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in saxo/auth/cert.js:14"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-115ddf6c36d548e9", "name": "Insecure pattern 'exec_used' in saxo/auth/oauth.js:268", "shortDescription": {"text": "Insecure pattern 'exec_used' in saxo/auth/oauth.js:268"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c707c5f6a621eac1", "name": "Insecure pattern 'node_child_process' in saxo/auth/oauth.js:26", "shortDescription": {"text": "Insecure pattern 'node_child_process' in saxo/auth/oauth.js:26"}, "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-08233b1e62495f2a", "name": "Insecure pattern 'node_child_process' in saxo/notify/telegram-inbound.js:18", "shortDescription": {"text": "Insecure pattern 'node_child_process' in saxo/notify/telegram-inbound.js:18"}, "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-069c3edbcb863b75", "name": "Insecure pattern 'node_child_process' in saxo/notify/telegram.js:13", "shortDescription": {"text": "Insecure pattern 'node_child_process' in saxo/notify/telegram.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-45c8226cb8e1136b", "name": "Insecure pattern 'node_child_process' in saxo/monitor/auth-watcher.js:20", "shortDescription": {"text": "Insecure pattern 'node_child_process' in saxo/monitor/auth-watcher.js:20"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-370ab28e481e0e74", "name": "Insecure pattern 'node_child_process' in sidecar/index.js:13", "shortDescription": {"text": "Insecure pattern 'node_child_process' in sidecar/index.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-fb4d34c03d358ed5", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/options/options-shadowlab-readonly.js:326", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/options/options-shadowlab-readonly.js:326"}, "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-103726ce7cd28aa9", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/options/options.js:224", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/options/options.js:224"}, "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-b7ead8e278f46e87", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/options/options-d2-d4-e3-c2.js:78", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/options/options-d2-d4-e3-c2.js:78"}, "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-c9fad80f90d85384", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/options/options-safety-rail.js:257", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/options/options-safety-rail.js:257"}, "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-bf2368366ad7c872", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/options/options-b1-b2.js:167", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/options/options-b1-b2.js:167"}, "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-e441bd1e5af54488", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/content/main-page.js:468", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/content/main-page.js:468"}, "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-9d9bc546a2cbae3a", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/content/auto-relogin.js:93", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/content/auto-relogin.js:93"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a64737289c53877b", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/content/overlay-hud.js:410", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/content/overlay-hud.js:410"}, "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-3cc87687b1db4a9a", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/content/popup-page.js:884", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/content/popup-page.js:884"}, "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-45440edd825be735", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-46c644c6227e4d4a", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1838a141491ce38c", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ba1a3bbc394b0f64", "name": "Very large file: saxo/index.js (1823 lines)", "shortDescription": {"text": "Very large file: saxo/index.js (1823 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-192ca4a3d171b54d", "name": "Very large file: src/options/options.js (3302 lines)", "shortDescription": {"text": "Very large file: src/options/options.js (3302 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-9503b146a4df9cbf", "name": "Very large file: src/content/main-page.js (2253 lines)", "shortDescription": {"text": "Very large file: src/content/main-page.js (2253 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-ea1ade38359d1b38", "name": "Very large file: src/content/popup-page.js (4358 lines)", "shortDescription": {"text": "Very large file: src/content/popup-page.js (4358 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-aa69c6a5afd6eb82", "name": "Very large file: src/background/service-worker.js (5575 lines)", "shortDescription": {"text": "Very large file: src/background/service-worker.js (5575 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-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b3ed68815bca2f8c", "name": "Node manifest has dependencies but no lockfile: package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-feeedd00ec521096", "name": "Node manifest has dependencies but no lockfile: saxo/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: saxo/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1efa2736a4d6d630", "name": "Node manifest has dependencies but no lockfile: sidecar/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: sidecar/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "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 740 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 44 placeholder/mock markers across 24 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-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, lockfile. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, lockfile. 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-0fb9122ce22f71f9", "name": "Agent instruction/config may expose a secret: mobile/CLAUDE.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: mobile/CLAUDE.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d2c2dfa9088d0f90", "name": "Commented-code block (8 lines) in tests/telegram-board.test.js:3", "shortDescription": {"text": "Commented-code block (8 lines) in tests/telegram-board.test.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-10d9b4082f8f05f6", "name": "Commented-code block (5 lines) in shared/spread-statistics.js:8", "shortDescription": {"text": "Commented-code block (5 lines) in shared/spread-statistics.js:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f25812d80cbbe2a4", "name": "Commented-code block (6 lines) in shared/quote-quality.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in shared/quote-quality.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c8d1140d1a7a912b", "name": "Commented-code block (10 lines) in shared/range-strategy.js:3", "shortDescription": {"text": "Commented-code block (10 lines) in shared/range-strategy.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8554e6e0ce607bc8", "name": "Commented-code block (6 lines) in shared/sl-cooldown.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in shared/sl-cooldown.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bba37d21487a1bdb", "name": "Commented-code block (6 lines) in shared/weekend-schedule.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in shared/weekend-schedule.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f92a45185b0db255", "name": "Commented-code block (7 lines) in shared/tradability-gate.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in shared/tradability-gate.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8d024c027978e006", "name": "Commented-code block (5 lines) in shared/mc-sequence.js:6", "shortDescription": {"text": "Commented-code block (5 lines) in shared/mc-sequence.js:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-28fa66112b77f98b", "name": "Commented-code block (5 lines) in shared/place-lock.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in shared/place-lock.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-86e6aa39ed8c5f9b", "name": "Commented-code block (8 lines) in shared/same-direction-cap.js:9", "shortDescription": {"text": "Commented-code block (8 lines) in shared/same-direction-cap.js:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-da74037a2fa01bb2", "name": "Commented-code block (7 lines) in shared/whipsaw-detector.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in shared/whipsaw-detector.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-41862e7520f1c88d", "name": "Commented-code block (5 lines) in shared/positions-account.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in shared/positions-account.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2aed82f69b748051", "name": "Commented-code block (5 lines) in shared/regime-features.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in shared/regime-features.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8d5ffefe39368cfa", "name": "Commented-code block (6 lines) in shared/tick-rounding.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in shared/tick-rounding.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-181234159872af25", "name": "Commented-code block (18 lines) in shared/circuit-breaker.js:8", "shortDescription": {"text": "Commented-code block (18 lines) in shared/circuit-breaker.js:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dbe51c3fde2166d0", "name": "Commented-code block (5 lines) in shared/outcome-labeler.js:8", "shortDescription": {"text": "Commented-code block (5 lines) in shared/outcome-labeler.js:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2af51d01dc30dfaf", "name": "Commented-code block (7 lines) in shared/single-flight.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in shared/single-flight.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eacd37e07b00e30c", "name": "Commented-code block (11 lines) in shared/phase1-defense.js:6", "shortDescription": {"text": "Commented-code block (11 lines) in shared/phase1-defense.js:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4ccc70de428c98e6", "name": "Commented-code block (8 lines) in shared/clock-monitor.js:6", "shortDescription": {"text": "Commented-code block (8 lines) in shared/clock-monitor.js:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5e7459bb273627ef", "name": "Commented-code block (5 lines) in shared/jst-time.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in shared/jst-time.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d3ce7b0bd87680c4", "name": "Commented-code block (5 lines) in shared/mc-replay.js:4", "shortDescription": {"text": "Commented-code block (5 lines) in shared/mc-replay.js:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-80c717193c6a4fdc", "name": "Commented-code block (6 lines) in shared/protection-gate-reconciler.js:8", "shortDescription": {"text": "Commented-code block (6 lines) in shared/protection-gate-reconciler.js:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d95d33c056c6f436", "name": "Commented-code block (6 lines) in shared/maintenance-window.js:11", "shortDescription": {"text": "Commented-code block (6 lines) in shared/maintenance-window.js:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a87f57c2c49d39ca", "name": "Commented-code block (5 lines) in shared/bollinger.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in shared/bollinger.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-727a5acc7d548a34", "name": "Commented-code block (7 lines) in shared/direction-selector.js:12", "shortDescription": {"text": "Commented-code block (7 lines) in shared/direction-selector.js:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1063522135a0a02c", "name": "Commented-code block (5 lines) in shared/pdca-eval.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in shared/pdca-eval.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5bd0f5d65be52375", "name": "Commented-code block (7 lines) in scripts/pull_gaikaex_trades.py:61", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/pull_gaikaex_trades.py:61"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e9329c4a7a9af2fb", "name": "Legacy-named symbol `meta_model_v1` in scripts/meta_model_v1.py:43", "shortDescription": {"text": "Legacy-named symbol `meta_model_v1` in scripts/meta_model_v1.py:43"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-90480c89174c98f8", "name": "Legacy-named symbol `meta_model_v2` in scripts/meta_model_invert_probe.py:20", "shortDescription": {"text": "Legacy-named symbol `meta_model_v2` in scripts/meta_model_invert_probe.py:20"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-db00ff94ce6cc5fd", "name": "Legacy-named symbol `meta_model_v2` in scripts/meta_model_v2.py:14", "shortDescription": {"text": "Legacy-named symbol `meta_model_v2` in scripts/meta_model_v2.py:14"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eb2d8f44022374af", "name": "Legacy-named symbol `meta_model_v2` in scripts/alt_features_scan.py:5", "shortDescription": {"text": "Legacy-named symbol `meta_model_v2` in scripts/alt_features_scan.py:5"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e6eab0c7660dc027", "name": "Commented-code block (6 lines) in mobile/src/App.tsx:108", "shortDescription": {"text": "Commented-code block (6 lines) in mobile/src/App.tsx:108"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-02abba12cd792742", "name": "Commented-code block (5 lines) in mobile/src/components/redesign/screen-home.tsx:162", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/src/components/redesign/screen-home.tsx:162"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-727c0a7ffee06f43", "name": "Commented-code block (8 lines) in mobile/src/services/push.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in mobile/src/services/push.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4b8235f84b79ea37", "name": "Legacy-named symbol `cleanupLegacy` in mobile/src/services/ongoing-status.ts:28", "shortDescription": {"text": "Legacy-named symbol `cleanupLegacy` in mobile/src/services/ongoing-status.ts:28"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-90dd988c2ee7972a", "name": "Commented-code block (7 lines) in mobile/src/services/ongoing-status.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in mobile/src/services/ongoing-status.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-97ccf5d474d3a86e", "name": "Commented-code block (5 lines) in mobile/src/services/native-chrome.ts:8", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/src/services/native-chrome.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a48178f8e2c0bbb6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 mobile/src/services/gas-client.ts:56", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 mobile/src/services/gas-client.ts:56"}, "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-436ac618d8c517b8", "name": "Commented-code block (5 lines) in mobile/src/store/index.ts:24", "shortDescription": {"text": "Commented-code block (5 lines) in mobile/src/store/index.ts:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1e7d9c19f057b646", "name": "Commented-code block (12 lines) in saxo/index.js:4", "shortDescription": {"text": "Commented-code block (12 lines) in saxo/index.js:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d962ed9dcd079741", "name": "Commented-code block (7 lines) in saxo/tests/shared/mc-replay.test.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in saxo/tests/shared/mc-replay.test.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d89448bc2917401d", "name": "Commented-code block (5 lines) in saxo/tests/shared/sl-cooldown.test.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in saxo/tests/shared/sl-cooldown.test.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ff9bfa9595af4808", "name": "Commented-code block (5 lines) in saxo/tests/shared/equivalence.test.js:46", "shortDescription": {"text": "Commented-code block (5 lines) in saxo/tests/shared/equivalence.test.js:46"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a66f55c5cd1ba1fc", "name": "Commented-code block (9 lines) in saxo/tests/shared/range-strategy.test.js:3", "shortDescription": {"text": "Commented-code block (9 lines) in saxo/tests/shared/range-strategy.test.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d29cc8d8df2e2852", "name": "Commented-code block (8 lines) in saxo/tests/shared/whipsaw-detector.test.js:3", "shortDescription": {"text": "Commented-code block (8 lines) in saxo/tests/shared/whipsaw-detector.test.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ce84f184f6f213ba", "name": "Commented-code block (9 lines) in saxo/tests/runtime/mc-leg-dual.test.js:3", "shortDescription": {"text": "Commented-code block (9 lines) in saxo/tests/runtime/mc-leg-dual.test.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-46c82fa4165f10ca", "name": "Commented-code block (8 lines) in saxo/tests/runtime/mc-leg-canary.test.js:3", "shortDescription": {"text": "Commented-code block (8 lines) in saxo/tests/runtime/mc-leg-canary.test.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9750bd21612ca0d8", "name": "Commented-code block (7 lines) in saxo/auth/authorize-cli.js:8", "shortDescription": {"text": "Commented-code block (7 lines) in saxo/auth/authorize-cli.js:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-58fdc94e1e76cb72", "name": "Commented-code block (8 lines) in saxo/auth/oauth.js:15", "shortDescription": {"text": "Commented-code block (8 lines) in saxo/auth/oauth.js:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7d88507f1c112609", "name": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/auth/oauth.js:137", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/auth/oauth.js:137"}, "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-d500d51519243563", "name": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/notify/fcm-bridge.js:47", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/notify/fcm-bridge.js:47"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-709ef370c8d61c27", "name": "Commented-code block (6 lines) in saxo/notify/telegram-inbound.js:7", "shortDescription": {"text": "Commented-code block (6 lines) in saxo/notify/telegram-inbound.js:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7bf6ea603ffe1100", "name": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/notify/telegram.js:70", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/notify/telegram.js:70"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4d2dccff2a53204d", "name": "Commented-code block (5 lines) in saxo/notify/notify-policy.js:6", "shortDescription": {"text": "Commented-code block (5 lines) in saxo/notify/notify-policy.js:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6d93e05c3f76d3c9", "name": "Commented-code block (7 lines) in saxo/monitor/sl-drift-watchdog.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in saxo/monitor/sl-drift-watchdog.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9c0021f5af975d51", "name": "Commented-code block (9 lines) in saxo/monitor/auth-watcher.js:8", "shortDescription": {"text": "Commented-code block (9 lines) in saxo/monitor/auth-watcher.js:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-70e572e9ea70826b", "name": "Commented-code block (5 lines) in saxo/monitor/unprotected-loop.js:6", "shortDescription": {"text": "Commented-code block (5 lines) in saxo/monitor/unprotected-loop.js:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-137aaa79ee3a6484", "name": "Commented-code block (5 lines) in saxo/scripts/tpsl-1to1-replay.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in saxo/scripts/tpsl-1to1-replay.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9694f6deb7fc357a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/scripts/order-cycle-verify.js:54", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/scripts/order-cycle-verify.js:54"}, "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-64a2ebc8f1b39457", "name": "Commented-code block (5 lines) in saxo/scripts/spread-ev-sensitivity.js:14", "shortDescription": {"text": "Commented-code block (5 lines) in saxo/scripts/spread-ev-sensitivity.js:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f650c62a30c83ddb", "name": "Commented-code block (5 lines) in saxo/scripts/whipsaw-cooldown-eval.js:4", "shortDescription": {"text": "Commented-code block (5 lines) in saxo/scripts/whipsaw-cooldown-eval.js:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-82790b9648b3e129", "name": "Commented-code block (7 lines) in saxo/scripts/label-stats.js:5", "shortDescription": {"text": "Commented-code block (7 lines) in saxo/scripts/label-stats.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-76b21fe782748532", "name": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/scripts/fcm-signal.js:26", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/scripts/fcm-signal.js:26"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cf2ac7a7d7225730", "name": "Commented-code block (5 lines) in saxo/scripts/test-refresh.js:4", "shortDescription": {"text": "Commented-code block (5 lines) in saxo/scripts/test-refresh.js:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7e623275aedc1787", "name": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/scripts/test-refresh.js:47", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/scripts/test-refresh.js:47"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-352d006c54a2dca3", "name": "Commented-code block (7 lines) in saxo/scripts/shadow-routing-accumulate.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in saxo/scripts/shadow-routing-accumulate.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3b0f9750dc139cdf", "name": "Commented-code block (7 lines) in saxo/scripts/place-ifo.js:8", "shortDescription": {"text": "Commented-code block (7 lines) in saxo/scripts/place-ifo.js:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c60a4160cfa7f285", "name": "Commented-code block (5 lines) in saxo/scripts/check-instrument.js:11", "shortDescription": {"text": "Commented-code block (5 lines) in saxo/scripts/check-instrument.js:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c0daa69a23b39280", "name": "Commented-code block (6 lines) in saxo/scripts/mc-leg-gate-report.js:6", "shortDescription": {"text": "Commented-code block (6 lines) in saxo/scripts/mc-leg-gate-report.js:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-30d0d7e5f176ae30", "name": "Commented-code block (5 lines) in saxo/scripts/test-aggregation-live.js:2", "shortDescription": {"text": "Commented-code block (5 lines) in saxo/scripts/test-aggregation-live.js:2"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-61e75054e164efff", "name": "Commented-code block (8 lines) in saxo/ws/price-stream.js:7", "shortDescription": {"text": "Commented-code block (8 lines) in saxo/ws/price-stream.js:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-44886451494a0e2a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/ws/price-stream.js:136", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/ws/price-stream.js:136"}, "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-b08385d68d556c44", "name": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/ws/event-stream.js:82", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/ws/event-stream.js:82"}, "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-105a6486005c4852", "name": "Commented-code block (6 lines) in saxo/runtime/decision-shadow.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in saxo/runtime/decision-shadow.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-44de0e6c3ab2cdc7", "name": "Commented-code block (8 lines) in saxo/runtime/shadow-book.js:3", "shortDescription": {"text": "Commented-code block (8 lines) in saxo/runtime/shadow-book.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-508dc8195774d37d", "name": "Commented-code block (17 lines) in saxo/runtime/mc-leg-canary.js:10", "shortDescription": {"text": "Commented-code block (17 lines) in saxo/runtime/mc-leg-canary.js:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a19978d03bd1c746", "name": "Commented-code block (6 lines) in saxo/runtime/resume-reminder.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in saxo/runtime/resume-reminder.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1f07837024b26964", "name": "Commented-code block (5 lines) in saxo/runtime/gate-janitor.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in saxo/runtime/gate-janitor.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-291a1082b571534f", "name": "Commented-code block (5 lines) in saxo/runtime/exposed-reconcile.js:20", "shortDescription": {"text": "Commented-code block (5 lines) in saxo/runtime/exposed-reconcile.js:20"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1987bed4cec69093", "name": "Commented-code block (8 lines) in saxo/runtime/pre-order-gate.js:3", "shortDescription": {"text": "Commented-code block (8 lines) in saxo/runtime/pre-order-gate.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8b1f08ff0d08e933", "name": "Commented-code block (6 lines) in saxo/runtime/force-close-error.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in saxo/runtime/force-close-error.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-19b95289dbfb1d89", "name": "Commented-code block (5 lines) in saxo/runtime/decision-engine.js:147", "shortDescription": {"text": "Commented-code block (5 lines) in saxo/runtime/decision-engine.js:147"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b408e07b319bdc4a", "name": "Commented-code block (6 lines) in saxo/runtime/kill-switch-supervisor.js:12", "shortDescription": {"text": "Commented-code block (6 lines) in saxo/runtime/kill-switch-supervisor.js:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-381876beef707909", "name": "Commented-code block (8 lines) in saxo/runtime/economic-calendar.js:8", "shortDescription": {"text": "Commented-code block (8 lines) in saxo/runtime/economic-calendar.js:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8b068d2cfc8ead24", "name": "Commented-code block (5 lines) in saxo/runtime/startup-retry.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in saxo/runtime/startup-retry.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a32f3fb9278b1fac", "name": "Commented-code block (5 lines) in saxo/runtime/equity-recorder.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in saxo/runtime/equity-recorder.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a126d7372b4d3fca", "name": "Commented-code block (5 lines) in saxo/runtime/trade-recorder.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in saxo/runtime/trade-recorder.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ed919abeea5083ef", "name": "Commented-code block (7 lines) in saxo/runtime/position-binder.js:8", "shortDescription": {"text": "Commented-code block (7 lines) in saxo/runtime/position-binder.js:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e05daf3ae76cda1a", "name": "Commented-code block (5 lines) in saxo/runtime/quote-monitor.js:4", "shortDescription": {"text": "Commented-code block (5 lines) in saxo/runtime/quote-monitor.js:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fc00a3c925f221f1", "name": "Commented-code block (13 lines) in saxo/runtime/live-entry.js:8", "shortDescription": {"text": "Commented-code block (13 lines) in saxo/runtime/live-entry.js:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1096429d73c0ca0c", "name": "Commented-code block (7 lines) in saxo/runtime/fill-corrector.js:10", "shortDescription": {"text": "Commented-code block (7 lines) in saxo/runtime/fill-corrector.js:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-de4659d602833178", "name": "Commented-code block (12 lines) in saxo/runtime/weekend-flatten.js:5", "shortDescription": {"text": "Commented-code block (12 lines) in saxo/runtime/weekend-flatten.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a35403691001912b", "name": "Commented-code block (7 lines) in saxo/runtime/gate-auto-resume.js:8", "shortDescription": {"text": "Commented-code block (7 lines) in saxo/runtime/gate-auto-resume.js:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8f538a10b4055f53", "name": "Commented-code block (7 lines) in saxo/runtime/command-router.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in saxo/runtime/command-router.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0ed814d3482b8ff8", "name": "Commented-code block (7 lines) in saxo/broker/gates.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in saxo/broker/gates.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-12d31286c6f5875d", "name": "Commented-code block (5 lines) in saxo/broker/order-mapper.js:32", "shortDescription": {"text": "Commented-code block (5 lines) in saxo/broker/order-mapper.js:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a04127d177831068", "name": "Commented-code block (6 lines) in saxo/broker/saxo.js:47", "shortDescription": {"text": "Commented-code block (6 lines) in saxo/broker/saxo.js:47"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3ebae415378f2a18", "name": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/broker/saxo.js:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/broker/saxo.js:48"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-15a824165ab7407c", "name": "Commented-code block (5 lines) in mac-control/menubar.py:796", "shortDescription": {"text": "Commented-code block (5 lines) in mac-control/menubar.py:796"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ce65dea6b1714a12", "name": "Stub function `_noop` (body is just `pass`/`return`) \u2014 mac-control/menubar.py:225", "shortDescription": {"text": "Stub function `_noop` (body is just `pass`/`return`) \u2014 mac-control/menubar.py:225"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-53fdaa2d6c1c0d5e", "name": "Commented-code block (6 lines) in sidecar/index.js:111", "shortDescription": {"text": "Commented-code block (6 lines) in sidecar/index.js:111"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7f19e9f937966384", "name": "Commented-code block (12 lines) in src/options/options-shadowlab-readonly.js:531", "shortDescription": {"text": "Commented-code block (12 lines) in src/options/options-shadowlab-readonly.js:531"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1c0d17e8e850f0be", "name": "Commented-code block (5 lines) in src/options/options-tooltips.js:323", "shortDescription": {"text": "Commented-code block (5 lines) in src/options/options-tooltips.js:323"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ac95ed34c669caa9", "name": "Commented-code block (5 lines) in src/options/options.js:496", "shortDescription": {"text": "Commented-code block (5 lines) in src/options/options.js:496"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ba547b4e54f42ab2", "name": "Commented-code block (7 lines) in src/options/options-d2-d4-e3-c2.js:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/options/options-d2-d4-e3-c2.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d7e0cc0725f6b9a2", "name": "Commented-code block (6 lines) in src/options/options-b1-b2.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/options/options-b1-b2.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1ac3fcf7712d7573", "name": "Commented-code block (6 lines) in src/options/options-e1-e2-e4-m0.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/options/options-e1-e2-e4-m0.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-064002f6a0d0e39c", "name": "Commented-code block (5 lines) in src/options/options-i18n.js:173", "shortDescription": {"text": "Commented-code block (5 lines) in src/options/options-i18n.js:173"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3170571bb13b5dae", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/options/options-i18n.js:676", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/options/options-i18n.js:676"}, "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-b26781ef7feb1a8f", "name": "Commented-code block (5 lines) in src/lib/schedule-v2.js:113", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/schedule-v2.js:113"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-54c23f933e0cc016", "name": "Commented-code block (6 lines) in src/lib/action-ledger.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/action-ledger.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8615045e36155b99", "name": "Commented-code block (5 lines) in src/lib/broker-adapter.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/broker-adapter.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c4ef4d698c627a93", "name": "Commented-code block (6 lines) in src/lib/sl-cooldown.js:7", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/sl-cooldown.js:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1e7c87d1c4967a70", "name": "Commented-code block (5 lines) in src/lib/utils.js:300", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/utils.js:300"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7cbdea11c586bafa", "name": "Commented-code block (5 lines) in src/lib/telegram-notifier.js:18", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/telegram-notifier.js:18"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-42dad605a8b46627", "name": "Commented-code block (6 lines) in src/lib/version-state.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/version-state.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-979273175f3e1835", "name": "Commented-code block (6 lines) in src/lib/position-watchdog.js:16", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/position-watchdog.js:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2afbcbe768df84fc", "name": "Commented-code block (8 lines) in src/lib/authority-state.js:1", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/authority-state.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f8edae907b78ca65", "name": "Commented-code block (8 lines) in src/lib/storage-migration.js:1", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/storage-migration.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ed43e3400a9faa75", "name": "Commented-code block (5 lines) in src/lib/sidecar-bridge.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/sidecar-bridge.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ab2a817dc8322378", "name": "Commented-code block (5 lines) in src/lib/broker-namespace.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/broker-namespace.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-39c91dd710d8d514", "name": "Commented-code block (5 lines) in src/lib/direction-scorer.js:169", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/direction-scorer.js:169"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e9721281b91b83ee", "name": "Commented-code block (6 lines) in src/lib/broker-action.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/broker-action.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cb040da11b687a13", "name": "Commented-code block (5 lines) in src/lib/storage.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/storage.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7ad0255d354869aa", "name": "Commented-code block (5 lines) in src/lib/calendar.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/calendar.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c5e0887a6895b0e8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/calendar.js:80", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/calendar.js:80"}, "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-dafe06d3ae23454c", "name": "Commented-code block (6 lines) in src/lib/clock.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/clock.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7bd837d12e262ed0", "name": "Commented-code block (5 lines) in src/lib/exec-history.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/exec-history.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b8133d12941df34f", "name": "Commented-code block (6 lines) in src/lib/shadow-lab/ledger.js:328", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/shadow-lab/ledger.js:328"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-537cb84b030490bb", "name": "Commented-code block (7 lines) in src/content/gaikaex-popup-prepatch.js:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/content/gaikaex-popup-prepatch.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-920cb2d4f5b5d8f6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/content/gaikaex-popup-prepatch.js:585", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/content/gaikaex-popup-prepatch.js:585"}, "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-eb676863689fe944", "name": "Commented-code block (12 lines) in src/content/gaikaex-keepalive-capture.js:3", "shortDescription": {"text": "Commented-code block (12 lines) in src/content/gaikaex-keepalive-capture.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3619121a32e4dadf", "name": "Commented-code block (6 lines) in src/content/main-page.js:12", "shortDescription": {"text": "Commented-code block (6 lines) in src/content/main-page.js:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1ef50dffdae9d072", "name": "Commented-code block (8 lines) in src/content/auto-relogin.js:1", "shortDescription": {"text": "Commented-code block (8 lines) in src/content/auto-relogin.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2b77b0ed2398150c", "name": "Commented-code block (6 lines) in src/content/popup-page.js:9", "shortDescription": {"text": "Commented-code block (6 lines) in src/content/popup-page.js:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-04adb1781f00115b", "name": "Legacy-named symbol `force_v1` in src/background/service-worker.js:718", "shortDescription": {"text": "Legacy-named symbol `force_v1` in src/background/service-worker.js:718"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-beda9b7cae4353b5", "name": "Commented-code block (10 lines) in src/background/service-worker.js:97", "shortDescription": {"text": "Commented-code block (10 lines) in src/background/service-worker.js:97"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d6de6de61292a121", "name": "Commented-code block (6 lines) in src/background/auto-reload.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/background/auto-reload.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-76a2f6818267a9a8", "name": "Near-duplicate function bodies in 8 places", "shortDescription": {"text": "Near-duplicate function bodies in 8 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscripts/meta_model_v1.py:parse_dt, scripts/regime_detector.py:parse_dt, scripts/side_hour_oos.py:parse_dt, scripts/side_vol_scan.py:parse_dt\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscripts/meta_model_v1.py:walk_forward, scripts/meta_model_v2.py:walk_forward\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscripts/regime_detector.py:load_regime_trades, scripts/side_vol_scan.py:main, scripts/meta_model_v2.py:load_regime_trades, scripts/alt_features_scan.py:load_regime_trades\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-02525d39071dd2c7", "name": "Near-duplicate function bodies in 5 places", "shortDescription": {"text": "Near-duplicate function bodies in 5 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscripts/session_rca4.py:main, scripts/check_replay_titles.py:main, scripts/session_rca.py:fetch_rows, scripts/session_rca3.py:main\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/23128"}, "properties": {"repository": "yamaga101/cx-fxbot", "repoUrl": "https://github.com/yamaga101/cx-fxbot", "branch": "main"}, "results": [{"ruleId": "scanner-857a4af016beb11e", "level": "note", "message": {"text": "Possibly dead Python function: wr_bucket"}, "properties": {"repobilityId": "9dc31af0042ffdb3", "scanner": "scanner-primary", "fingerprint": "857a4af016beb11e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/alt_features_scan.py:179"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-276d62e97a406521", "level": "note", "message": {"text": "Possibly dead Python function: momentum_bucket"}, "properties": {"repobilityId": "4e6ef031bdc58f39", "scanner": "scanner-primary", "fingerprint": "276d62e97a406521", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/alt_features_scan.py:189"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ec379a737c542845", "level": "note", "message": {"text": "Possibly dead Python function: tsl_bucket"}, "properties": {"repobilityId": "18a4bca9400110d0", "scanner": "scanner-primary", "fingerprint": "ec379a737c542845", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/alt_features_scan.py:201"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a31e0789ce74a1e6", "level": "note", "message": {"text": "Possibly dead Python function: auto_update_loop"}, "properties": {"repobilityId": "9204a8ce3ccfe761", "scanner": "scanner-primary", "fingerprint": "a31e0789ce74a1e6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mac-control/menubar.py:85"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-44f3bc60dab2206a", "level": "note", "message": {"text": "Possibly dead Python function: toggle_prevent_sleep"}, "properties": {"repobilityId": "4b9436d176c0ab44", "scanner": "scanner-primary", "fingerprint": "44f3bc60dab2206a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mac-control/menubar.py:314"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1c07a19d11719997", "level": "note", "message": {"text": "Possibly dead Python function: refresh_now"}, "properties": {"repobilityId": "78159fee76836f1b", "scanner": "scanner-primary", "fingerprint": "1c07a19d11719997", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mac-control/menubar.py:684"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0424c404c10be925", "level": "note", "message": {"text": "Possibly dead Python function: cmd_pause"}, "properties": {"repobilityId": "91caa55bcba25bb6", "scanner": "scanner-primary", "fingerprint": "0424c404c10be925", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mac-control/menubar.py:692"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1a6dc7759f01a1b7", "level": "note", "message": {"text": "Possibly dead Python function: cmd_resume"}, "properties": {"repobilityId": "446f8414d55507a8", "scanner": "scanner-primary", "fingerprint": "1a6dc7759f01a1b7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mac-control/menubar.py:696"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4da528bc9d9919fe", "level": "note", "message": {"text": "Possibly dead Python function: cmd_dry_toggle"}, "properties": {"repobilityId": "f23e1871854b72d0", "scanner": "scanner-primary", "fingerprint": "4da528bc9d9919fe", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mac-control/menubar.py:700"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-db005ddea2ce6bbe", "level": "note", "message": {"text": "Possibly dead Python function: cmd_state_request"}, "properties": {"repobilityId": "3994190e2e2d0506", "scanner": "scanner-primary", "fingerprint": "db005ddea2ce6bbe", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mac-control/menubar.py:725"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f582307ff0ff9770", "level": "note", "message": {"text": "Possibly dead Python function: cmd_emergency_clear"}, "properties": {"repobilityId": "c33c3962460380d4", "scanner": "scanner-primary", "fingerprint": "f582307ff0ff9770", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mac-control/menubar.py:747"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0fd4f93877a07bd4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/sl-cooldown.test.js:201"}, "properties": {"repobilityId": "ca74094d887ca108", "scanner": "scanner-primary", "fingerprint": "0fd4f93877a07bd4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c83e83c6ed75d039", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/telegram-board.test.js:133"}, "properties": {"repobilityId": "44ab755e182b2339", "scanner": "scanner-primary", "fingerprint": "c83e83c6ed75d039", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a29ee560d039ca37", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/diagnose-streaming.js:35"}, "properties": {"repobilityId": "7afa680694472342", "scanner": "scanner-primary", "fingerprint": "a29ee560d039ca37", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9c3ff711f55ca507", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/trend-rule.test.js:52"}, "properties": {"repobilityId": "34e9b1bd47693a63", "scanner": "scanner-primary", "fingerprint": "9c3ff711f55ca507", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b7eb5dfe68adf34b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/news-gate.test.js:132"}, "properties": {"repobilityId": "e6f19d72b20b54d2", "scanner": "scanner-primary", "fingerprint": "b7eb5dfe68adf34b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8abb26f90d7738bb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/ui-state.test.js:21"}, "properties": {"repobilityId": "3324a6b02884c41a", "scanner": "scanner-primary", "fingerprint": "8abb26f90d7738bb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-935efb0c303b7644", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 docs/specs/redesign/canvas/android/screen-settings.jsx:12"}, "properties": {"repobilityId": "554babf93182e1ca", "scanner": "scanner-primary", "fingerprint": "935efb0c303b7644", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-5f2e71982b8d25d3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mc-simulation.js:107"}, "properties": {"repobilityId": "62b3a6335ef74eed", "scanner": "scanner-primary", "fingerprint": "5f2e71982b8d25d3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-235f1484eac39b04", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 mobile/docs/specs/redesign/canvas/v2-2026-05-18/screen-settings.jsx:20"}, "properties": {"repobilityId": "ec77387e17b12ec3", "scanner": "scanner-primary", "fingerprint": "235f1484eac39b04", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-03df07c60aa0aeb1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 mobile/src/main.tsx:8"}, "properties": {"repobilityId": "0e0f27e478de9b12", "scanner": "scanner-primary", "fingerprint": "03df07c60aa0aeb1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c29910a8967ec2e4", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 mobile/src/components/CommandStatusToast.tsx:74"}, "properties": {"repobilityId": "d2bd28e404861a94", "scanner": "scanner-primary", "fingerprint": "c29910a8967ec2e4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-7ff09c6cadd4400d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/index.js:158"}, "properties": {"repobilityId": "f5d45ce87f6660e0", "scanner": "scanner-primary", "fingerprint": "7ff09c6cadd4400d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a81ca3e1c51cc57c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/tests/fixtures/gen-synthetic-usdjpy-14d.js:126"}, "properties": {"repobilityId": "be04c5397f752276", "scanner": "scanner-primary", "fingerprint": "a81ca3e1c51cc57c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a0c3446b8514f83a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/auth/authorize-cli.js:30"}, "properties": {"repobilityId": "481ac2dc3d9832cc", "scanner": "scanner-primary", "fingerprint": "a0c3446b8514f83a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c39f7f8d788c6865", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/auth/oauth.js:108"}, "properties": {"repobilityId": "fe4993083c2a43a2", "scanner": "scanner-primary", "fingerprint": "c39f7f8d788c6865", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f06d2acdf6a2068b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/tpsl-1to1-replay.js:65"}, "properties": {"repobilityId": "c14d54d7f6568500", "scanner": "scanner-primary", "fingerprint": "f06d2acdf6a2068b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-47a9b09b201ffd9f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/check-account-tradability.js:35"}, "properties": {"repobilityId": "b39d2bd57b19ad42", "scanner": "scanner-primary", "fingerprint": "47a9b09b201ffd9f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a2548835ee71aaf6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/show-state.js:11"}, "properties": {"repobilityId": "325199b544195095", "scanner": "scanner-primary", "fingerprint": "a2548835ee71aaf6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f17ebb15f9ae8abc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/regime-shadow-stats.js:37"}, "properties": {"repobilityId": "c895b16738957fd3", "scanner": "scanner-primary", "fingerprint": "f17ebb15f9ae8abc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c563fa795b0b6f4a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/order-cycle-verify.js:31"}, "properties": {"repobilityId": "363de803fea2da76", "scanner": "scanner-primary", "fingerprint": "c563fa795b0b6f4a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a1814d66ab117b27", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/spread-ev-sensitivity.js:47"}, "properties": {"repobilityId": "a482a634caa9c88c", "scanner": "scanner-primary", "fingerprint": "a1814d66ab117b27", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6a989d2952e4192c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/whipsaw-cooldown-eval.js:66"}, "properties": {"repobilityId": "d12b38ae62d31d22", "scanner": "scanner-primary", "fingerprint": "6a989d2952e4192c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-342896ad6a55440c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/label-stats.js:24"}, "properties": {"repobilityId": "14abf98c7aa82f5d", "scanner": "scanner-primary", "fingerprint": "342896ad6a55440c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-458c07bbe6b03d86", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/fcm-signal.js:32"}, "properties": {"repobilityId": "72ae03c4397aee75", "scanner": "scanner-primary", "fingerprint": "458c07bbe6b03d86", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a0067a322f8c5d4e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/test-refresh.js:31"}, "properties": {"repobilityId": "72717b91d777d52f", "scanner": "scanner-primary", "fingerprint": "a0067a322f8c5d4e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f2dc31340c746f9a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/both-lose-analysis.js:23"}, "properties": {"repobilityId": "f043f93df9bc5bab", "scanner": "scanner-primary", "fingerprint": "f2dc31340c746f9a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1da2194fb516d356", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/shadow-routing-accumulate.js:87"}, "properties": {"repobilityId": "399fed5abe74631a", "scanner": "scanner-primary", "fingerprint": "1da2194fb516d356", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9d0f58ac94797066", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/both-lose-gate-eval-liveadmissible.js:37"}, "properties": {"repobilityId": "39566b8d20b5a72d", "scanner": "scanner-primary", "fingerprint": "9d0f58ac94797066", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c178932aa657e7fe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/fcm-status.js:11"}, "properties": {"repobilityId": "401a41f8934ac445", "scanner": "scanner-primary", "fingerprint": "c178932aa657e7fe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-44fded795f25fc9e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/place-ifo.js:70"}, "properties": {"repobilityId": "72d032abf62fe152", "scanner": "scanner-primary", "fingerprint": "44fded795f25fc9e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-69d56e2cbf135e2c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/check-instrument.js:30"}, "properties": {"repobilityId": "1be80ade5c24bbf8", "scanner": "scanner-primary", "fingerprint": "69d56e2cbf135e2c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bb3d1b63b45eb36d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/smoke-direct.js:47"}, "properties": {"repobilityId": "c49193ba277bf3b0", "scanner": "scanner-primary", "fingerprint": "bb3d1b63b45eb36d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1d9af1abaef64aaa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/push-shadow-summary.js:125"}, "properties": {"repobilityId": "625921c7f83701a5", "scanner": "scanner-primary", "fingerprint": "1d9af1abaef64aaa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-551460cea1772172", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/both-lose-gate-eval.js:35"}, "properties": {"repobilityId": "56d62c06e0b2c9cf", "scanner": "scanner-primary", "fingerprint": "551460cea1772172", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-18aa60257ff32e03", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/pdca-branch-eval.js:93"}, "properties": {"repobilityId": "fd239922228bc233", "scanner": "scanner-primary", "fingerprint": "18aa60257ff32e03", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-95ad30f8474133f6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/mc-leg-gate-report.js:48"}, "properties": {"repobilityId": "d7c848f0553873d9", "scanner": "scanner-primary", "fingerprint": "95ad30f8474133f6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-79904a89468ed77b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/check-positions.js:25"}, "properties": {"repobilityId": "d09d18ad14a1dd10", "scanner": "scanner-primary", "fingerprint": "79904a89468ed77b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7c0adbfd9e5536e9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/mc-thesis-sim.js:17"}, "properties": {"repobilityId": "2990137d951e4001", "scanner": "scanner-primary", "fingerprint": "7c0adbfd9e5536e9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b8628c1c2117e240", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/test-aggregation-live.js:20"}, "properties": {"repobilityId": "65b5608e0be45376", "scanner": "scanner-primary", "fingerprint": "b8628c1c2117e240", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-56c6f86c88c6875a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/cancel-order.js:11"}, "properties": {"repobilityId": "c775cac5bc188b64", "scanner": "scanner-primary", "fingerprint": "56c6f86c88c6875a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dc453da312094d44", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/check-netting.js:26"}, "properties": {"repobilityId": "b12499be9c7e9518", "scanner": "scanner-primary", "fingerprint": "dc453da312094d44", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1712df18537f2eeb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 saxo/scripts/spread-snapshot.js:37"}, "properties": {"repobilityId": "3946e7ff8a8ad09e", "scanner": "scanner-primary", "fingerprint": "1712df18537f2eeb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0afa287625acf7fa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/options/options-shadowlab-readonly.js:1028"}, "properties": {"repobilityId": "a8cb92412b72245e", "scanner": "scanner-primary", "fingerprint": "0afa287625acf7fa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-677b81918fc6c823", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/options/options-tooltips.js:499"}, "properties": {"repobilityId": "4cea425a6241d1fa", "scanner": "scanner-primary", "fingerprint": "677b81918fc6c823", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f42fa40d417e57c1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/options/options.js:1076"}, "properties": {"repobilityId": "341284aabe4a4d3b", "scanner": "scanner-primary", "fingerprint": "f42fa40d417e57c1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-60a848c1dcad538f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/options/options-d2-d4-e3-c2.js:160"}, "properties": {"repobilityId": "cf9c6439f24cb3ac", "scanner": "scanner-primary", "fingerprint": "60a848c1dcad538f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-542af24a522df40e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/options/options-safety-rail.js:353"}, "properties": {"repobilityId": "5772f1e0b970eab8", "scanner": "scanner-primary", "fingerprint": "542af24a522df40e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a0b6692d2c9d5f3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/options/options-b1-b2.js:59"}, "properties": {"repobilityId": "8f148ebe18ead454", "scanner": "scanner-primary", "fingerprint": "9a0b6692d2c9d5f3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0a93cf53faa7f908", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/schedule-v2.js:291"}, "properties": {"repobilityId": "575dca7711e16f94", "scanner": "scanner-primary", "fingerprint": "0a93cf53faa7f908", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-af6cb30950f52499", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/optimizer.js:388"}, "properties": {"repobilityId": "0e5d4a131d8aa38f", "scanner": "scanner-primary", "fingerprint": "af6cb30950f52499", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d0311da46e1e5270", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/storage-migration.js:155"}, "properties": {"repobilityId": "8b40418c54dae333", "scanner": "scanner-primary", "fingerprint": "d0311da46e1e5270", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6a9592e6670e034d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/shadow-lab/tick-monitor.js:105"}, "properties": {"repobilityId": "b3b6775a9906a5a5", "scanner": "scanner-primary", "fingerprint": "6a9592e6670e034d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-79aa542ee21cae2e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/content/gaikaex-popup-prepatch.js:7"}, "properties": {"repobilityId": "e494321e4018b5dc", "scanner": "scanner-primary", "fingerprint": "79aa542ee21cae2e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1535757bd14c9d27", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/content/main-page.js:283"}, "properties": {"repobilityId": "aecccdfd80d538a0", "scanner": "scanner-primary", "fingerprint": "1535757bd14c9d27", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2c60c45520830771", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/content/auto-relogin.js:54"}, "properties": {"repobilityId": "ffea9132760292e8", "scanner": "scanner-primary", "fingerprint": "2c60c45520830771", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cf28d86f6ac8e2a9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/content/popup-page.js:228"}, "properties": {"repobilityId": "cf477e65271fe93d", "scanner": "scanner-primary", "fingerprint": "cf28d86f6ac8e2a9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-93d0cf785c4013e5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/background/service-worker.js:64"}, "properties": {"repobilityId": "4524c68a417f50f4", "scanner": "scanner-primary", "fingerprint": "93d0cf785c4013e5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6bce39e3f63df344", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/background/auto-reload.js:129"}, "properties": {"repobilityId": "5a32e8e8b54ba416", "scanner": "scanner-primary", "fingerprint": "6bce39e3f63df344", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ee3b53435d10af3f", "level": "warning", "message": {"text": "Privileged port 6 in use"}, "properties": {"repobilityId": "888a3c205ea7334c", "scanner": "scanner-primary", "fingerprint": "ee3b53435d10af3f", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup-auto-update.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9337a27da0cea06c", "level": "warning", "message": {"text": "Privileged port 30 in use"}, "properties": {"repobilityId": "54f172e7d16fc662", "scanner": "scanner-primary", "fingerprint": "9337a27da0cea06c", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup-auto-update.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c1928f661ceae62c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/specs/redesign/canvas/v5/options-unified-ops.html:129"}, "properties": {"repobilityId": "86db600e3959bcee", "scanner": "scanner-primary", "fingerprint": "c1928f661ceae62c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/specs/redesign/canvas/v5/options-unified-ops.html"}, "region": {"startLine": 129}}}]}, {"ruleId": "scanner-ff7c7ebd8f6615f6", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in scripts/smoke-test-runner.js:21"}, "properties": {"repobilityId": "071968df128a33b5", "scanner": "scanner-primary", "fingerprint": "ff7c7ebd8f6615f6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/smoke-test-runner.js"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-09325b4aba6ed140", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in mobile/vite.config.ts:4"}, "properties": {"repobilityId": "579b79860ce47966", "scanner": "scanner-primary", "fingerprint": "09325b4aba6ed140", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mobile/vite.config.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-141d99a18ba0c971", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in saxo/auth/keychain.js:14"}, "properties": {"repobilityId": "9c2074d439e953dd", "scanner": "scanner-primary", "fingerprint": "141d99a18ba0c971", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "saxo/auth/keychain.js"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-4910709e0b2d114f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in saxo/auth/cert.js:14"}, "properties": {"repobilityId": "58e004f2127c9d8a", "scanner": "scanner-primary", "fingerprint": "4910709e0b2d114f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "saxo/auth/cert.js"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-115ddf6c36d548e9", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in saxo/auth/oauth.js:268"}, "properties": {"repobilityId": "9fc42f11250ec8c1", "scanner": "scanner-primary", "fingerprint": "115ddf6c36d548e9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "saxo/auth/oauth.js"}, "region": {"startLine": 268}}}]}, {"ruleId": "scanner-c707c5f6a621eac1", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in saxo/auth/oauth.js:26"}, "properties": {"repobilityId": "f4fa487e06c30b35", "scanner": "scanner-primary", "fingerprint": "c707c5f6a621eac1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "saxo/auth/oauth.js"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-08233b1e62495f2a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in saxo/notify/telegram-inbound.js:18"}, "properties": {"repobilityId": "79abae8525c4fca2", "scanner": "scanner-primary", "fingerprint": "08233b1e62495f2a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "saxo/notify/telegram-inbound.js"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-069c3edbcb863b75", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in saxo/notify/telegram.js:13"}, "properties": {"repobilityId": "e31c3e7501d831bc", "scanner": "scanner-primary", "fingerprint": "069c3edbcb863b75", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "saxo/notify/telegram.js"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-45c8226cb8e1136b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in saxo/monitor/auth-watcher.js:20"}, "properties": {"repobilityId": "2f847e266dc53d06", "scanner": "scanner-primary", "fingerprint": "45c8226cb8e1136b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "saxo/monitor/auth-watcher.js"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-370ab28e481e0e74", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in sidecar/index.js:13"}, "properties": {"repobilityId": "b720e1d234b67a7e", "scanner": "scanner-primary", "fingerprint": "370ab28e481e0e74", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sidecar/index.js"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-fb4d34c03d358ed5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/options/options-shadowlab-readonly.js:326"}, "properties": {"repobilityId": "45b804d402172ac5", "scanner": "scanner-primary", "fingerprint": "fb4d34c03d358ed5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/options/options-shadowlab-readonly.js"}, "region": {"startLine": 326}}}]}, {"ruleId": "scanner-103726ce7cd28aa9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/options/options.js:224"}, "properties": {"repobilityId": "5591f6b1a3e0afd9", "scanner": "scanner-primary", "fingerprint": "103726ce7cd28aa9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/options/options.js"}, "region": {"startLine": 224}}}]}, {"ruleId": "scanner-b7ead8e278f46e87", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/options/options-d2-d4-e3-c2.js:78"}, "properties": {"repobilityId": "0149cdd9fb2313f4", "scanner": "scanner-primary", "fingerprint": "b7ead8e278f46e87", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/options/options-d2-d4-e3-c2.js"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-c9fad80f90d85384", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/options/options-safety-rail.js:257"}, "properties": {"repobilityId": "0680929c31d891e3", "scanner": "scanner-primary", "fingerprint": "c9fad80f90d85384", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/options/options-safety-rail.js"}, "region": {"startLine": 257}}}]}, {"ruleId": "scanner-bf2368366ad7c872", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/options/options-b1-b2.js:167"}, "properties": {"repobilityId": "f80770c2bf3b02a8", "scanner": "scanner-primary", "fingerprint": "bf2368366ad7c872", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/options/options-b1-b2.js"}, "region": {"startLine": 167}}}]}, {"ruleId": "scanner-e441bd1e5af54488", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/content/main-page.js:468"}, "properties": {"repobilityId": "e2e3f8dc975644d3", "scanner": "scanner-primary", "fingerprint": "e441bd1e5af54488", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/content/main-page.js"}, "region": {"startLine": 468}}}]}, {"ruleId": "scanner-9d9bc546a2cbae3a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/content/auto-relogin.js:93"}, "properties": {"repobilityId": "d77cfa8039fa24aa", "scanner": "scanner-primary", "fingerprint": "9d9bc546a2cbae3a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/content/auto-relogin.js"}, "region": {"startLine": 93}}}]}, {"ruleId": "scanner-a64737289c53877b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/content/overlay-hud.js:410"}, "properties": {"repobilityId": "4f72928303ac7737", "scanner": "scanner-primary", "fingerprint": "a64737289c53877b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/content/overlay-hud.js"}, "region": {"startLine": 410}}}]}, {"ruleId": "scanner-3cc87687b1db4a9a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/content/popup-page.js:884"}, "properties": {"repobilityId": "dac08d92b4bb6b9b", "scanner": "scanner-primary", "fingerprint": "3cc87687b1db4a9a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/content/popup-page.js"}, "region": {"startLine": 884}}}]}, {"ruleId": "scanner-45440edd825be735", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fb06e5e0b9a1499b", "scanner": "scanner-primary", "fingerprint": "45440edd825be735", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/k35-check.yml"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-45440edd825be735", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "458a85f727877e6d", "scanner": "scanner-primary", "fingerprint": "45440edd825be735", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/k35-check.yml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2644034c718fb80d", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f60d9951f1477eef", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-1838a141491ce38c", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "b8fd4f5048f96576", "scanner": "scanner-primary", "fingerprint": "1838a141491ce38c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ba1a3bbc394b0f64", "level": "note", "message": {"text": "Very large file: saxo/index.js (1823 lines)"}, "properties": {"repobilityId": "1759257eb8bee0fc", "scanner": "scanner-primary", "fingerprint": "ba1a3bbc394b0f64", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-192ca4a3d171b54d", "level": "note", "message": {"text": "Very large file: src/options/options.js (3302 lines)"}, "properties": {"repobilityId": "0b1209e387a366b6", "scanner": "scanner-primary", "fingerprint": "192ca4a3d171b54d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9503b146a4df9cbf", "level": "note", "message": {"text": "Very large file: src/content/main-page.js (2253 lines)"}, "properties": {"repobilityId": "5d842b8aeb650888", "scanner": "scanner-primary", "fingerprint": "9503b146a4df9cbf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea1ade38359d1b38", "level": "note", "message": {"text": "Very large file: src/content/popup-page.js (4358 lines)"}, "properties": {"repobilityId": "0c292207fdb67481", "scanner": "scanner-primary", "fingerprint": "ea1ade38359d1b38", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-aa69c6a5afd6eb82", "level": "note", "message": {"text": "Very large file: src/background/service-worker.js (5575 lines)"}, "properties": {"repobilityId": "e282d125792a4b1f", "scanner": "scanner-primary", "fingerprint": "aa69c6a5afd6eb82", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "7539a0c0d12b03e6", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-b3ed68815bca2f8c", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: package.json"}, "properties": {"repobilityId": "7edae0550c126386", "scanner": "scanner-primary", "fingerprint": "b3ed68815bca2f8c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-feeedd00ec521096", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: saxo/package.json"}, "properties": {"repobilityId": "ae66a485c083f4ef", "scanner": "scanner-primary", "fingerprint": "feeedd00ec521096", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "saxo/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1efa2736a4d6d630", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: sidecar/package.json"}, "properties": {"repobilityId": "63d3a58f964e95db", "scanner": "scanner-primary", "fingerprint": "1efa2736a4d6d630", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sidecar/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "d167c58ce70ddcff", "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": "a912425426df0c78", "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": "eb64655ecbbcccd2", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "67b1a6e03cb0f551", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "9e39febe18e39451", "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": "a75a283bf65cda2b", "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": "abe2f948e6ee982d", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-0fb9122ce22f71f9", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: mobile/CLAUDE.md"}, "properties": {"repobilityId": "69151b806d3e2e17", "scanner": "scanner-primary", "fingerprint": "0fb9122ce22f71f9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mobile/CLAUDE.md"}, "region": {"startLine": 116}}}]}, {"ruleId": "scanner-d2c2dfa9088d0f90", "level": "none", "message": {"text": "Commented-code block (8 lines) in tests/telegram-board.test.js:3"}, "properties": {"repobilityId": "7d5f6c328f706a2d", "scanner": "scanner-primary", "fingerprint": "d2c2dfa9088d0f90", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-10d9b4082f8f05f6", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/spread-statistics.js:8"}, "properties": {"repobilityId": "ae20dcfa8edb362c", "scanner": "scanner-primary", "fingerprint": "10d9b4082f8f05f6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f25812d80cbbe2a4", "level": "none", "message": {"text": "Commented-code block (6 lines) in shared/quote-quality.js:3"}, "properties": {"repobilityId": "d1ed6f8d6b878abe", "scanner": "scanner-primary", "fingerprint": "f25812d80cbbe2a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8d1140d1a7a912b", "level": "none", "message": {"text": "Commented-code block (10 lines) in shared/range-strategy.js:3"}, "properties": {"repobilityId": "f694492847891f0d", "scanner": "scanner-primary", "fingerprint": "c8d1140d1a7a912b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8554e6e0ce607bc8", "level": "none", "message": {"text": "Commented-code block (6 lines) in shared/sl-cooldown.js:3"}, "properties": {"repobilityId": "469cbb5d17b21411", "scanner": "scanner-primary", "fingerprint": "8554e6e0ce607bc8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bba37d21487a1bdb", "level": "none", "message": {"text": "Commented-code block (6 lines) in shared/weekend-schedule.js:3"}, "properties": {"repobilityId": "8e36aae0ec819379", "scanner": "scanner-primary", "fingerprint": "bba37d21487a1bdb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f92a45185b0db255", "level": "none", "message": {"text": "Commented-code block (7 lines) in shared/tradability-gate.js:3"}, "properties": {"repobilityId": "25fe22740f133820", "scanner": "scanner-primary", "fingerprint": "f92a45185b0db255", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d024c027978e006", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/mc-sequence.js:6"}, "properties": {"repobilityId": "e6fdaa2ccbdf4133", "scanner": "scanner-primary", "fingerprint": "8d024c027978e006", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-28fa66112b77f98b", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/place-lock.js:3"}, "properties": {"repobilityId": "c2ab89b2a8256489", "scanner": "scanner-primary", "fingerprint": "28fa66112b77f98b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-86e6aa39ed8c5f9b", "level": "none", "message": {"text": "Commented-code block (8 lines) in shared/same-direction-cap.js:9"}, "properties": {"repobilityId": "a034f402afc3a9ce", "scanner": "scanner-primary", "fingerprint": "86e6aa39ed8c5f9b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-da74037a2fa01bb2", "level": "none", "message": {"text": "Commented-code block (7 lines) in shared/whipsaw-detector.js:3"}, "properties": {"repobilityId": "bfb101ee3b700e9c", "scanner": "scanner-primary", "fingerprint": "da74037a2fa01bb2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-41862e7520f1c88d", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/positions-account.js:3"}, "properties": {"repobilityId": "fb5cc7797d551988", "scanner": "scanner-primary", "fingerprint": "41862e7520f1c88d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2aed82f69b748051", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/regime-features.js:3"}, "properties": {"repobilityId": "d9a2e49865855d4b", "scanner": "scanner-primary", "fingerprint": "2aed82f69b748051", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d5ffefe39368cfa", "level": "none", "message": {"text": "Commented-code block (6 lines) in shared/tick-rounding.js:3"}, "properties": {"repobilityId": "56e4b42f42390b2d", "scanner": "scanner-primary", "fingerprint": "8d5ffefe39368cfa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-181234159872af25", "level": "none", "message": {"text": "Commented-code block (18 lines) in shared/circuit-breaker.js:8"}, "properties": {"repobilityId": "7c7e21ab3b155da8", "scanner": "scanner-primary", "fingerprint": "181234159872af25", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dbe51c3fde2166d0", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/outcome-labeler.js:8"}, "properties": {"repobilityId": "501298bb6ec2a488", "scanner": "scanner-primary", "fingerprint": "dbe51c3fde2166d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2af51d01dc30dfaf", "level": "none", "message": {"text": "Commented-code block (7 lines) in shared/single-flight.js:3"}, "properties": {"repobilityId": "435809e4dc072d15", "scanner": "scanner-primary", "fingerprint": "2af51d01dc30dfaf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eacd37e07b00e30c", "level": "none", "message": {"text": "Commented-code block (11 lines) in shared/phase1-defense.js:6"}, "properties": {"repobilityId": "20a8c663dbc30630", "scanner": "scanner-primary", "fingerprint": "eacd37e07b00e30c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4ccc70de428c98e6", "level": "none", "message": {"text": "Commented-code block (8 lines) in shared/clock-monitor.js:6"}, "properties": {"repobilityId": "b43f12dded5195e4", "scanner": "scanner-primary", "fingerprint": "4ccc70de428c98e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5e7459bb273627ef", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/jst-time.js:3"}, "properties": {"repobilityId": "5b9519d5037c6706", "scanner": "scanner-primary", "fingerprint": "5e7459bb273627ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d3ce7b0bd87680c4", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/mc-replay.js:4"}, "properties": {"repobilityId": "b48f3daec203d130", "scanner": "scanner-primary", "fingerprint": "d3ce7b0bd87680c4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-80c717193c6a4fdc", "level": "none", "message": {"text": "Commented-code block (6 lines) in shared/protection-gate-reconciler.js:8"}, "properties": {"repobilityId": "5beaf3b1fd3efeea", "scanner": "scanner-primary", "fingerprint": "80c717193c6a4fdc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d95d33c056c6f436", "level": "none", "message": {"text": "Commented-code block (6 lines) in shared/maintenance-window.js:11"}, "properties": {"repobilityId": "33e961381bf91b77", "scanner": "scanner-primary", "fingerprint": "d95d33c056c6f436", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a87f57c2c49d39ca", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/bollinger.js:3"}, "properties": {"repobilityId": "ef6c23f746ff506c", "scanner": "scanner-primary", "fingerprint": "a87f57c2c49d39ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-727a5acc7d548a34", "level": "none", "message": {"text": "Commented-code block (7 lines) in shared/direction-selector.js:12"}, "properties": {"repobilityId": "54a444051972dded", "scanner": "scanner-primary", "fingerprint": "727a5acc7d548a34", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1063522135a0a02c", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/pdca-eval.js:3"}, "properties": {"repobilityId": "06fa6979ea3539a5", "scanner": "scanner-primary", "fingerprint": "1063522135a0a02c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5bd0f5d65be52375", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/pull_gaikaex_trades.py:61"}, "properties": {"repobilityId": "2d0243faa14e4863", "scanner": "scanner-primary", "fingerprint": "5bd0f5d65be52375", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e9329c4a7a9af2fb", "level": "note", "message": {"text": "Legacy-named symbol `meta_model_v1` in scripts/meta_model_v1.py:43"}, "properties": {"repobilityId": "97be8c07d9b4dd66", "scanner": "scanner-primary", "fingerprint": "e9329c4a7a9af2fb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-90480c89174c98f8", "level": "note", "message": {"text": "Legacy-named symbol `meta_model_v2` in scripts/meta_model_invert_probe.py:20"}, "properties": {"repobilityId": "53fe6f6930a77321", "scanner": "scanner-primary", "fingerprint": "90480c89174c98f8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-db00ff94ce6cc5fd", "level": "note", "message": {"text": "Legacy-named symbol `meta_model_v2` in scripts/meta_model_v2.py:14"}, "properties": {"repobilityId": "da82bafb001fb254", "scanner": "scanner-primary", "fingerprint": "db00ff94ce6cc5fd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-eb2d8f44022374af", "level": "note", "message": {"text": "Legacy-named symbol `meta_model_v2` in scripts/alt_features_scan.py:5"}, "properties": {"repobilityId": "bd82e819cb8b4b1c", "scanner": "scanner-primary", "fingerprint": "eb2d8f44022374af", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e6eab0c7660dc027", "level": "none", "message": {"text": "Commented-code block (6 lines) in mobile/src/App.tsx:108"}, "properties": {"repobilityId": "256917e927c74136", "scanner": "scanner-primary", "fingerprint": "e6eab0c7660dc027", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-02abba12cd792742", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/src/components/redesign/screen-home.tsx:162"}, "properties": {"repobilityId": "8f09b179f4a4eb31", "scanner": "scanner-primary", "fingerprint": "02abba12cd792742", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-727c0a7ffee06f43", "level": "none", "message": {"text": "Commented-code block (8 lines) in mobile/src/services/push.ts:3"}, "properties": {"repobilityId": "391d28a4202a02c9", "scanner": "scanner-primary", "fingerprint": "727c0a7ffee06f43", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b8235f84b79ea37", "level": "note", "message": {"text": "Legacy-named symbol `cleanupLegacy` in mobile/src/services/ongoing-status.ts:28"}, "properties": {"repobilityId": "12ffd70c6ef8867d", "scanner": "scanner-primary", "fingerprint": "4b8235f84b79ea37", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-90dd988c2ee7972a", "level": "none", "message": {"text": "Commented-code block (7 lines) in mobile/src/services/ongoing-status.ts:3"}, "properties": {"repobilityId": "29181a84066cab9a", "scanner": "scanner-primary", "fingerprint": "90dd988c2ee7972a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-97ccf5d474d3a86e", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/src/services/native-chrome.ts:8"}, "properties": {"repobilityId": "380bbc3e3af35d85", "scanner": "scanner-primary", "fingerprint": "97ccf5d474d3a86e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a48178f8e2c0bbb6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 mobile/src/services/gas-client.ts:56"}, "properties": {"repobilityId": "2e768891dad0f87b", "scanner": "scanner-primary", "fingerprint": "a48178f8e2c0bbb6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-436ac618d8c517b8", "level": "none", "message": {"text": "Commented-code block (5 lines) in mobile/src/store/index.ts:24"}, "properties": {"repobilityId": "8d0c3225fc7f72c7", "scanner": "scanner-primary", "fingerprint": "436ac618d8c517b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1e7d9c19f057b646", "level": "none", "message": {"text": "Commented-code block (12 lines) in saxo/index.js:4"}, "properties": {"repobilityId": "eed754bd6a3937bb", "scanner": "scanner-primary", "fingerprint": "1e7d9c19f057b646", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d962ed9dcd079741", "level": "none", "message": {"text": "Commented-code block (7 lines) in saxo/tests/shared/mc-replay.test.js:3"}, "properties": {"repobilityId": "bae9e43ccfaa5c0a", "scanner": "scanner-primary", "fingerprint": "d962ed9dcd079741", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d89448bc2917401d", "level": "none", "message": {"text": "Commented-code block (5 lines) in saxo/tests/shared/sl-cooldown.test.js:3"}, "properties": {"repobilityId": "1f4871865eb5462a", "scanner": "scanner-primary", "fingerprint": "d89448bc2917401d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff9bfa9595af4808", "level": "none", "message": {"text": "Commented-code block (5 lines) in saxo/tests/shared/equivalence.test.js:46"}, "properties": {"repobilityId": "9c209cd596a763d1", "scanner": "scanner-primary", "fingerprint": "ff9bfa9595af4808", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a66f55c5cd1ba1fc", "level": "none", "message": {"text": "Commented-code block (9 lines) in saxo/tests/shared/range-strategy.test.js:3"}, "properties": {"repobilityId": "cb451f8565501e05", "scanner": "scanner-primary", "fingerprint": "a66f55c5cd1ba1fc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d29cc8d8df2e2852", "level": "none", "message": {"text": "Commented-code block (8 lines) in saxo/tests/shared/whipsaw-detector.test.js:3"}, "properties": {"repobilityId": "13301e729772089f", "scanner": "scanner-primary", "fingerprint": "d29cc8d8df2e2852", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce84f184f6f213ba", "level": "none", "message": {"text": "Commented-code block (9 lines) in saxo/tests/runtime/mc-leg-dual.test.js:3"}, "properties": {"repobilityId": "1ea2fdab2399e6d1", "scanner": "scanner-primary", "fingerprint": "ce84f184f6f213ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-46c82fa4165f10ca", "level": "none", "message": {"text": "Commented-code block (8 lines) in saxo/tests/runtime/mc-leg-canary.test.js:3"}, "properties": {"repobilityId": "e9f7aee184172966", "scanner": "scanner-primary", "fingerprint": "46c82fa4165f10ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9750bd21612ca0d8", "level": "none", "message": {"text": "Commented-code block (7 lines) in saxo/auth/authorize-cli.js:8"}, "properties": {"repobilityId": "d342ca6fff1c13e2", "scanner": "scanner-primary", "fingerprint": "9750bd21612ca0d8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-58fdc94e1e76cb72", "level": "none", "message": {"text": "Commented-code block (8 lines) in saxo/auth/oauth.js:15"}, "properties": {"repobilityId": "d3aef2a7bbd9f697", "scanner": "scanner-primary", "fingerprint": "58fdc94e1e76cb72", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d88507f1c112609", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/auth/oauth.js:137"}, "properties": {"repobilityId": "b27c19ca4eebe958", "scanner": "scanner-primary", "fingerprint": "7d88507f1c112609", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d500d51519243563", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/notify/fcm-bridge.js:47"}, "properties": {"repobilityId": "1ac8d02824758296", "scanner": "scanner-primary", "fingerprint": "d500d51519243563", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-709ef370c8d61c27", "level": "none", "message": {"text": "Commented-code block (6 lines) in saxo/notify/telegram-inbound.js:7"}, "properties": {"repobilityId": "a3149c5e01543c69", "scanner": "scanner-primary", "fingerprint": "709ef370c8d61c27", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7bf6ea603ffe1100", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/notify/telegram.js:70"}, "properties": {"repobilityId": "80eda43e294776f2", "scanner": "scanner-primary", "fingerprint": "7bf6ea603ffe1100", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4d2dccff2a53204d", "level": "none", "message": {"text": "Commented-code block (5 lines) in saxo/notify/notify-policy.js:6"}, "properties": {"repobilityId": "035676dd158abb75", "scanner": "scanner-primary", "fingerprint": "4d2dccff2a53204d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6d93e05c3f76d3c9", "level": "none", "message": {"text": "Commented-code block (7 lines) in saxo/monitor/sl-drift-watchdog.js:3"}, "properties": {"repobilityId": "0742698854aee592", "scanner": "scanner-primary", "fingerprint": "6d93e05c3f76d3c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9c0021f5af975d51", "level": "none", "message": {"text": "Commented-code block (9 lines) in saxo/monitor/auth-watcher.js:8"}, "properties": {"repobilityId": "5f8065c54c82662b", "scanner": "scanner-primary", "fingerprint": "9c0021f5af975d51", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-70e572e9ea70826b", "level": "none", "message": {"text": "Commented-code block (5 lines) in saxo/monitor/unprotected-loop.js:6"}, "properties": {"repobilityId": "ea79cb946a083853", "scanner": "scanner-primary", "fingerprint": "70e572e9ea70826b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-137aaa79ee3a6484", "level": "none", "message": {"text": "Commented-code block (5 lines) in saxo/scripts/tpsl-1to1-replay.js:3"}, "properties": {"repobilityId": "34c880d18ba3468e", "scanner": "scanner-primary", "fingerprint": "137aaa79ee3a6484", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9694f6deb7fc357a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/scripts/order-cycle-verify.js:54"}, "properties": {"repobilityId": "9c5a545c5b88324d", "scanner": "scanner-primary", "fingerprint": "9694f6deb7fc357a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-64a2ebc8f1b39457", "level": "none", "message": {"text": "Commented-code block (5 lines) in saxo/scripts/spread-ev-sensitivity.js:14"}, "properties": {"repobilityId": "1684cf9ba1a23855", "scanner": "scanner-primary", "fingerprint": "64a2ebc8f1b39457", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f650c62a30c83ddb", "level": "none", "message": {"text": "Commented-code block (5 lines) in saxo/scripts/whipsaw-cooldown-eval.js:4"}, "properties": {"repobilityId": "6a6fa3ca137d8546", "scanner": "scanner-primary", "fingerprint": "f650c62a30c83ddb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-82790b9648b3e129", "level": "none", "message": {"text": "Commented-code block (7 lines) in saxo/scripts/label-stats.js:5"}, "properties": {"repobilityId": "35b048f3cb1945aa", "scanner": "scanner-primary", "fingerprint": "82790b9648b3e129", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76b21fe782748532", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/scripts/fcm-signal.js:26"}, "properties": {"repobilityId": "910bf0ef98d65f57", "scanner": "scanner-primary", "fingerprint": "76b21fe782748532", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cf2ac7a7d7225730", "level": "none", "message": {"text": "Commented-code block (5 lines) in saxo/scripts/test-refresh.js:4"}, "properties": {"repobilityId": "44f7f2027f1c32c9", "scanner": "scanner-primary", "fingerprint": "cf2ac7a7d7225730", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7e623275aedc1787", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/scripts/test-refresh.js:47"}, "properties": {"repobilityId": "705a700edd7f4ec9", "scanner": "scanner-primary", "fingerprint": "7e623275aedc1787", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-352d006c54a2dca3", "level": "none", "message": {"text": "Commented-code block (7 lines) in saxo/scripts/shadow-routing-accumulate.js:3"}, "properties": {"repobilityId": "2ccc0a2b41a95223", "scanner": "scanner-primary", "fingerprint": "352d006c54a2dca3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3b0f9750dc139cdf", "level": "none", "message": {"text": "Commented-code block (7 lines) in saxo/scripts/place-ifo.js:8"}, "properties": {"repobilityId": "6353229dcc3b7bfc", "scanner": "scanner-primary", "fingerprint": "3b0f9750dc139cdf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c60a4160cfa7f285", "level": "none", "message": {"text": "Commented-code block (5 lines) in saxo/scripts/check-instrument.js:11"}, "properties": {"repobilityId": "137df15d229ef58b", "scanner": "scanner-primary", "fingerprint": "c60a4160cfa7f285", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c0daa69a23b39280", "level": "none", "message": {"text": "Commented-code block (6 lines) in saxo/scripts/mc-leg-gate-report.js:6"}, "properties": {"repobilityId": "b10a1cb6287dfd85", "scanner": "scanner-primary", "fingerprint": "c0daa69a23b39280", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30d0d7e5f176ae30", "level": "none", "message": {"text": "Commented-code block (5 lines) in saxo/scripts/test-aggregation-live.js:2"}, "properties": {"repobilityId": "ad89c76165aac26d", "scanner": "scanner-primary", "fingerprint": "30d0d7e5f176ae30", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-61e75054e164efff", "level": "none", "message": {"text": "Commented-code block (8 lines) in saxo/ws/price-stream.js:7"}, "properties": {"repobilityId": "694332c2c5788617", "scanner": "scanner-primary", "fingerprint": "61e75054e164efff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-44886451494a0e2a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/ws/price-stream.js:136"}, "properties": {"repobilityId": "4420977d3612a477", "scanner": "scanner-primary", "fingerprint": "44886451494a0e2a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b08385d68d556c44", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/ws/event-stream.js:82"}, "properties": {"repobilityId": "250a4a17661df00d", "scanner": "scanner-primary", "fingerprint": "b08385d68d556c44", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-105a6486005c4852", "level": "none", "message": {"text": "Commented-code block (6 lines) in saxo/runtime/decision-shadow.js:3"}, "properties": {"repobilityId": "386e638bc799a83a", "scanner": "scanner-primary", "fingerprint": "105a6486005c4852", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-44de0e6c3ab2cdc7", "level": "none", "message": {"text": "Commented-code block (8 lines) in saxo/runtime/shadow-book.js:3"}, "properties": {"repobilityId": "566cfb872997af5b", "scanner": "scanner-primary", "fingerprint": "44de0e6c3ab2cdc7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-508dc8195774d37d", "level": "none", "message": {"text": "Commented-code block (17 lines) in saxo/runtime/mc-leg-canary.js:10"}, "properties": {"repobilityId": "d74854c45ef47172", "scanner": "scanner-primary", "fingerprint": "508dc8195774d37d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a19978d03bd1c746", "level": "none", "message": {"text": "Commented-code block (6 lines) in saxo/runtime/resume-reminder.js:3"}, "properties": {"repobilityId": "bc1b0c217b1a1ffe", "scanner": "scanner-primary", "fingerprint": "a19978d03bd1c746", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1f07837024b26964", "level": "none", "message": {"text": "Commented-code block (5 lines) in saxo/runtime/gate-janitor.js:3"}, "properties": {"repobilityId": "e8712f37f0745f34", "scanner": "scanner-primary", "fingerprint": "1f07837024b26964", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-291a1082b571534f", "level": "none", "message": {"text": "Commented-code block (5 lines) in saxo/runtime/exposed-reconcile.js:20"}, "properties": {"repobilityId": "65218b094fe294b9", "scanner": "scanner-primary", "fingerprint": "291a1082b571534f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1987bed4cec69093", "level": "none", "message": {"text": "Commented-code block (8 lines) in saxo/runtime/pre-order-gate.js:3"}, "properties": {"repobilityId": "f83b04032e33b1ca", "scanner": "scanner-primary", "fingerprint": "1987bed4cec69093", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b1f08ff0d08e933", "level": "none", "message": {"text": "Commented-code block (6 lines) in saxo/runtime/force-close-error.js:3"}, "properties": {"repobilityId": "0ca7eca820b7c823", "scanner": "scanner-primary", "fingerprint": "8b1f08ff0d08e933", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-19b95289dbfb1d89", "level": "none", "message": {"text": "Commented-code block (5 lines) in saxo/runtime/decision-engine.js:147"}, "properties": {"repobilityId": "9c8c920206d1e885", "scanner": "scanner-primary", "fingerprint": "19b95289dbfb1d89", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b408e07b319bdc4a", "level": "none", "message": {"text": "Commented-code block (6 lines) in saxo/runtime/kill-switch-supervisor.js:12"}, "properties": {"repobilityId": "47a1eb221cc57df6", "scanner": "scanner-primary", "fingerprint": "b408e07b319bdc4a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-381876beef707909", "level": "none", "message": {"text": "Commented-code block (8 lines) in saxo/runtime/economic-calendar.js:8"}, "properties": {"repobilityId": "b8d59f37935f2aa1", "scanner": "scanner-primary", "fingerprint": "381876beef707909", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b068d2cfc8ead24", "level": "none", "message": {"text": "Commented-code block (5 lines) in saxo/runtime/startup-retry.js:3"}, "properties": {"repobilityId": "cd9fa925b988a3ad", "scanner": "scanner-primary", "fingerprint": "8b068d2cfc8ead24", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a32f3fb9278b1fac", "level": "none", "message": {"text": "Commented-code block (5 lines) in saxo/runtime/equity-recorder.js:3"}, "properties": {"repobilityId": "78401f816c4c4f49", "scanner": "scanner-primary", "fingerprint": "a32f3fb9278b1fac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a126d7372b4d3fca", "level": "none", "message": {"text": "Commented-code block (5 lines) in saxo/runtime/trade-recorder.js:3"}, "properties": {"repobilityId": "d734fde43ae419ef", "scanner": "scanner-primary", "fingerprint": "a126d7372b4d3fca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed919abeea5083ef", "level": "none", "message": {"text": "Commented-code block (7 lines) in saxo/runtime/position-binder.js:8"}, "properties": {"repobilityId": "693f8c29202c3da6", "scanner": "scanner-primary", "fingerprint": "ed919abeea5083ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e05daf3ae76cda1a", "level": "none", "message": {"text": "Commented-code block (5 lines) in saxo/runtime/quote-monitor.js:4"}, "properties": {"repobilityId": "bc6727f8d5353ee6", "scanner": "scanner-primary", "fingerprint": "e05daf3ae76cda1a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fc00a3c925f221f1", "level": "none", "message": {"text": "Commented-code block (13 lines) in saxo/runtime/live-entry.js:8"}, "properties": {"repobilityId": "11517a1c3c9ef8f5", "scanner": "scanner-primary", "fingerprint": "fc00a3c925f221f1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1096429d73c0ca0c", "level": "none", "message": {"text": "Commented-code block (7 lines) in saxo/runtime/fill-corrector.js:10"}, "properties": {"repobilityId": "2d3ad28c12b8b02d", "scanner": "scanner-primary", "fingerprint": "1096429d73c0ca0c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de4659d602833178", "level": "none", "message": {"text": "Commented-code block (12 lines) in saxo/runtime/weekend-flatten.js:5"}, "properties": {"repobilityId": "8aa77f69c2990b33", "scanner": "scanner-primary", "fingerprint": "de4659d602833178", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a35403691001912b", "level": "none", "message": {"text": "Commented-code block (7 lines) in saxo/runtime/gate-auto-resume.js:8"}, "properties": {"repobilityId": "601f8d237cd09270", "scanner": "scanner-primary", "fingerprint": "a35403691001912b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8f538a10b4055f53", "level": "none", "message": {"text": "Commented-code block (7 lines) in saxo/runtime/command-router.js:3"}, "properties": {"repobilityId": "8847b1adc176c4b0", "scanner": "scanner-primary", "fingerprint": "8f538a10b4055f53", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0ed814d3482b8ff8", "level": "none", "message": {"text": "Commented-code block (7 lines) in saxo/broker/gates.js:3"}, "properties": {"repobilityId": "c2b031af55e7e7c7", "scanner": "scanner-primary", "fingerprint": "0ed814d3482b8ff8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-12d31286c6f5875d", "level": "none", "message": {"text": "Commented-code block (5 lines) in saxo/broker/order-mapper.js:32"}, "properties": {"repobilityId": "4a4453fe5b85e660", "scanner": "scanner-primary", "fingerprint": "12d31286c6f5875d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a04127d177831068", "level": "none", "message": {"text": "Commented-code block (6 lines) in saxo/broker/saxo.js:47"}, "properties": {"repobilityId": "2dfba55df2450059", "scanner": "scanner-primary", "fingerprint": "a04127d177831068", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3ebae415378f2a18", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 saxo/broker/saxo.js:48"}, "properties": {"repobilityId": "7f8f5e8598e382e0", "scanner": "scanner-primary", "fingerprint": "3ebae415378f2a18", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-15a824165ab7407c", "level": "none", "message": {"text": "Commented-code block (5 lines) in mac-control/menubar.py:796"}, "properties": {"repobilityId": "5a72b1b239a20f00", "scanner": "scanner-primary", "fingerprint": "15a824165ab7407c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce65dea6b1714a12", "level": "note", "message": {"text": "Stub function `_noop` (body is just `pass`/`return`) \u2014 mac-control/menubar.py:225"}, "properties": {"repobilityId": "292d19f51e873888", "scanner": "scanner-primary", "fingerprint": "ce65dea6b1714a12", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-53fdaa2d6c1c0d5e", "level": "none", "message": {"text": "Commented-code block (6 lines) in sidecar/index.js:111"}, "properties": {"repobilityId": "3f595492b981bcc1", "scanner": "scanner-primary", "fingerprint": "53fdaa2d6c1c0d5e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7f19e9f937966384", "level": "none", "message": {"text": "Commented-code block (12 lines) in src/options/options-shadowlab-readonly.js:531"}, "properties": {"repobilityId": "9a10c5117bc91926", "scanner": "scanner-primary", "fingerprint": "7f19e9f937966384", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c0d17e8e850f0be", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/options/options-tooltips.js:323"}, "properties": {"repobilityId": "6f32267c0236dbbc", "scanner": "scanner-primary", "fingerprint": "1c0d17e8e850f0be", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac95ed34c669caa9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/options/options.js:496"}, "properties": {"repobilityId": "33fd09741a8dcfe7", "scanner": "scanner-primary", "fingerprint": "ac95ed34c669caa9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ba547b4e54f42ab2", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/options/options-d2-d4-e3-c2.js:1"}, "properties": {"repobilityId": "46c6713b3d12f2c6", "scanner": "scanner-primary", "fingerprint": "ba547b4e54f42ab2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d7e0cc0725f6b9a2", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/options/options-b1-b2.js:1"}, "properties": {"repobilityId": "a7ca0e2807a9e155", "scanner": "scanner-primary", "fingerprint": "d7e0cc0725f6b9a2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ac3fcf7712d7573", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/options/options-e1-e2-e4-m0.js:1"}, "properties": {"repobilityId": "8ca0ef38457d095a", "scanner": "scanner-primary", "fingerprint": "1ac3fcf7712d7573", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-064002f6a0d0e39c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/options/options-i18n.js:173"}, "properties": {"repobilityId": "3f3563a3c5274228", "scanner": "scanner-primary", "fingerprint": "064002f6a0d0e39c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3170571bb13b5dae", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/options/options-i18n.js:676"}, "properties": {"repobilityId": "2c19deb65ed4fbc5", "scanner": "scanner-primary", "fingerprint": "3170571bb13b5dae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b26781ef7feb1a8f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/schedule-v2.js:113"}, "properties": {"repobilityId": "7635cfd9281a8ff4", "scanner": "scanner-primary", "fingerprint": "b26781ef7feb1a8f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-54c23f933e0cc016", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/action-ledger.js:1"}, "properties": {"repobilityId": "e8ed90071197e578", "scanner": "scanner-primary", "fingerprint": "54c23f933e0cc016", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8615045e36155b99", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/broker-adapter.js:1"}, "properties": {"repobilityId": "e547c3354a4d307b", "scanner": "scanner-primary", "fingerprint": "8615045e36155b99", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c4ef4d698c627a93", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/sl-cooldown.js:7"}, "properties": {"repobilityId": "d48ebbe1acdffb01", "scanner": "scanner-primary", "fingerprint": "c4ef4d698c627a93", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1e7c87d1c4967a70", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/utils.js:300"}, "properties": {"repobilityId": "1a4c86c7efde173d", "scanner": "scanner-primary", "fingerprint": "1e7c87d1c4967a70", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7cbdea11c586bafa", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/telegram-notifier.js:18"}, "properties": {"repobilityId": "984c233c3046b37b", "scanner": "scanner-primary", "fingerprint": "7cbdea11c586bafa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-42dad605a8b46627", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/version-state.js:1"}, "properties": {"repobilityId": "048003d3eb965433", "scanner": "scanner-primary", "fingerprint": "42dad605a8b46627", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-979273175f3e1835", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/position-watchdog.js:16"}, "properties": {"repobilityId": "cb6101e353e7e127", "scanner": "scanner-primary", "fingerprint": "979273175f3e1835", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2afbcbe768df84fc", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/authority-state.js:1"}, "properties": {"repobilityId": "44e625882e9e9585", "scanner": "scanner-primary", "fingerprint": "2afbcbe768df84fc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f8edae907b78ca65", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/storage-migration.js:1"}, "properties": {"repobilityId": "cd543dd6f8f44496", "scanner": "scanner-primary", "fingerprint": "f8edae907b78ca65", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed43e3400a9faa75", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/sidecar-bridge.js:1"}, "properties": {"repobilityId": "a09f4a13522e414e", "scanner": "scanner-primary", "fingerprint": "ed43e3400a9faa75", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab2a817dc8322378", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/broker-namespace.js:1"}, "properties": {"repobilityId": "15cf01b337b2dd7d", "scanner": "scanner-primary", "fingerprint": "ab2a817dc8322378", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-39c91dd710d8d514", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/direction-scorer.js:169"}, "properties": {"repobilityId": "a07f6c29316a25e9", "scanner": "scanner-primary", "fingerprint": "39c91dd710d8d514", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e9721281b91b83ee", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/broker-action.js:1"}, "properties": {"repobilityId": "6b78d433c4113b77", "scanner": "scanner-primary", "fingerprint": "e9721281b91b83ee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb040da11b687a13", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/storage.js:1"}, "properties": {"repobilityId": "458ac1d331b72b1c", "scanner": "scanner-primary", "fingerprint": "cb040da11b687a13", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7ad0255d354869aa", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/calendar.js:1"}, "properties": {"repobilityId": "700acc485a4e4e3f", "scanner": "scanner-primary", "fingerprint": "7ad0255d354869aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c5e0887a6895b0e8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/calendar.js:80"}, "properties": {"repobilityId": "139ee5015ca3bfac", "scanner": "scanner-primary", "fingerprint": "c5e0887a6895b0e8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dafe06d3ae23454c", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/clock.js:1"}, "properties": {"repobilityId": "3658e2f82a287b8e", "scanner": "scanner-primary", "fingerprint": "dafe06d3ae23454c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7bd837d12e262ed0", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/exec-history.js:1"}, "properties": {"repobilityId": "ac1841728ca55295", "scanner": "scanner-primary", "fingerprint": "7bd837d12e262ed0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b8133d12941df34f", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/shadow-lab/ledger.js:328"}, "properties": {"repobilityId": "e113d6d5a329e517", "scanner": "scanner-primary", "fingerprint": "b8133d12941df34f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-537cb84b030490bb", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/content/gaikaex-popup-prepatch.js:1"}, "properties": {"repobilityId": "f2d0d73ed22c4aca", "scanner": "scanner-primary", "fingerprint": "537cb84b030490bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-920cb2d4f5b5d8f6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/content/gaikaex-popup-prepatch.js:585"}, "properties": {"repobilityId": "1eec35fd20b5bc6d", "scanner": "scanner-primary", "fingerprint": "920cb2d4f5b5d8f6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eb676863689fe944", "level": "none", "message": {"text": "Commented-code block (12 lines) in src/content/gaikaex-keepalive-capture.js:3"}, "properties": {"repobilityId": "4dd306e5e0e4ce36", "scanner": "scanner-primary", "fingerprint": "eb676863689fe944", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3619121a32e4dadf", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/content/main-page.js:12"}, "properties": {"repobilityId": "ab651e80ec97aa70", "scanner": "scanner-primary", "fingerprint": "3619121a32e4dadf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ef50dffdae9d072", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/content/auto-relogin.js:1"}, "properties": {"repobilityId": "277000d4a719635b", "scanner": "scanner-primary", "fingerprint": "1ef50dffdae9d072", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2b77b0ed2398150c", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/content/popup-page.js:9"}, "properties": {"repobilityId": "e99c1b4efe01fc04", "scanner": "scanner-primary", "fingerprint": "2b77b0ed2398150c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-04adb1781f00115b", "level": "note", "message": {"text": "Legacy-named symbol `force_v1` in src/background/service-worker.js:718"}, "properties": {"repobilityId": "c34d300dcb7a607c", "scanner": "scanner-primary", "fingerprint": "04adb1781f00115b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-beda9b7cae4353b5", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/background/service-worker.js:97"}, "properties": {"repobilityId": "9bdf33c0b3d94f3e", "scanner": "scanner-primary", "fingerprint": "beda9b7cae4353b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d6de6de61292a121", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/background/auto-reload.js:1"}, "properties": {"repobilityId": "4f851e54f1268ebc", "scanner": "scanner-primary", "fingerprint": "d6de6de61292a121", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76a2f6818267a9a8", "level": "note", "message": {"text": "Near-duplicate function bodies in 8 places"}, "properties": {"repobilityId": "42ade87c6aecb05a", "scanner": "scanner-primary", "fingerprint": "76a2f6818267a9a8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "39f826ca088dbb03", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "d5754d64de940546", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "f220e174bd567db7", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "e66cf37fec85aeed", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "2478a5ea0f8afe70", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "e7cf70b1cf41383c", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "ea4d0fde579d60f7", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "2d983a5a4b0fbad0", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "fac2394a29985355", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-02525d39071dd2c7", "level": "note", "message": {"text": "Near-duplicate function bodies in 5 places"}, "properties": {"repobilityId": "4f004da77aa5dc64", "scanner": "scanner-primary", "fingerprint": "02525d39071dd2c7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}