{"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-acd5f0c42d3e5205", "name": "Possibly dead Python function: callback", "shortDescription": {"text": "Possibly dead Python function: callback"}, "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-d2c228f3f44ae3a6", "name": "Possibly dead Python function: callback", "shortDescription": {"text": "Possibly dead Python function: callback"}, "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-05b4c1a09c73f596", "name": "Possibly dead Python function: transcribe_buffer", "shortDescription": {"text": "Possibly dead Python function: transcribe_buffer"}, "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-46d0b7484c3af3fe", "name": "Possibly dead Python function: log_message", "shortDescription": {"text": "Possibly dead Python function: log_message"}, "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-a5eef5958ab260cf", "name": "Possibly dead Python function: do_GET", "shortDescription": {"text": "Possibly dead Python function: do_GET"}, "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-74edcb237f3adaf0", "name": "Possibly dead Python function: do_DELETE", "shortDescription": {"text": "Possibly dead Python function: do_DELETE"}, "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-a3c3b7c3e7e5f5f7", "name": "Possibly dead Python function: do_POST", "shortDescription": {"text": "Possibly dead Python function: do_POST"}, "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-8df297ab70eb9446", "name": "Possibly dead Python function: do_transcribe", "shortDescription": {"text": "Possibly dead Python function: do_transcribe"}, "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-13bce112d17a55bd", "name": "Possibly dead Python function: do_identify", "shortDescription": {"text": "Possibly dead Python function: do_identify"}, "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-c07af33518a71dee", "name": "Possibly dead Python function: run_ws", "shortDescription": {"text": "Possibly dead Python function: run_ws"}, "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-997d13c7578bc11b", "name": "Stray `console.log` in TS/JS \u2014 run_build.js:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 run_build.js:6"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0a46b06384f01bd6", "name": "Stray `console.log` in TS/JS \u2014 install_apk.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 install_apk.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-62af024cc5ae584c", "name": "Stray `console.log` in TS/JS \u2014 build_apk.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 build_apk.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-da61eb6cea6be628", "name": "Stray `console.log` in TS/JS \u2014 parse-tasks.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 parse-tasks.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-cb191c3a2f02112b", "name": "Stray `console.log` in TS/JS \u2014 android/app/src/main/assets/node-test.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 android/app/src/main/assets/node-test.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-61568bf365e02303", "name": "Stray `console.log` in TS/JS \u2014 hub/hub.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 hub/hub.js:16"}, "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-bf6721813f0a32b4", "name": "Stray `console.log` in TS/JS \u2014 hub/test.js:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 hub/test.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-f3cf8f716c4d0b51", "name": "Stray `console.log` in TS/JS \u2014 hub/src/queue.js:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 hub/src/queue.js:92"}, "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-2089b668cc581fe4", "name": "Stray `console.log` in TS/JS \u2014 hub/src/db.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 hub/src/db.js:27"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-af1add831e9eff44", "name": "Stray `console.log` in TS/JS \u2014 hub/src/auth.js:78", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 hub/src/auth.js:78"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0ff00e2ebd854f14", "name": "Stray `console.log` in TS/JS \u2014 hub/src/server.js:152", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 hub/src/server.js:152"}, "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-c2463a4dcd506e8b", "name": "Stray `console.log` in TS/JS \u2014 hub/src/router.js:169", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 hub/src/router.js:169"}, "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-689f889fd7f9802d", "name": "Stray `console.log` in TS/JS \u2014 hub/src/federation.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 hub/src/federation.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-27e207593e09c259", "name": "Stray `console.log` in TS/JS \u2014 browser-extension/background.js:540", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 browser-extension/background.js:540"}, "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-854a19b0c155323c", "name": "Stray `console.log` in TS/JS \u2014 service/test-restart.js:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/test-restart.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-429426b39247c77b", "name": "Stray `console.log` in TS/JS \u2014 service/seed-tasks.js:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/seed-tasks.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-cc6ae3e01f129d7b", "name": "Stray `console.log` in TS/JS \u2014 service/check_settings.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/check_settings.js:5"}, "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-3fec13e6d7f5b6b9", "name": "Stray `console.log` in TS/JS \u2014 service/force_gemini.js:4", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/force_gemini.js:4"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6cc344f7a368b7cb", "name": "Stray `console.log` in TS/JS \u2014 service/dev-server.js:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/dev-server.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-34ca044441c38a87", "name": "Stray `console.log` in TS/JS \u2014 service/pan.js:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/pan.js:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c8ea763b0fee2eb8", "name": "Stray `console.log` in TS/JS \u2014 service/install-service.js:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/install-service.js:29"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ca8f8c6405528c0a", "name": "Stray `console.log` in TS/JS \u2014 service/test-memory.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/test-memory.js:14"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-af19f17b68ae7b8c", "name": "Stray `console.log` in TS/JS \u2014 service/scripts/build-installer.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/scripts/build-installer.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-898f9173dcb0c253", "name": "Stray `console.log` in TS/JS \u2014 service/dashboard/build.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/dashboard/build.js:36"}, "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-fe482ce8e0d1ee55", "name": "Stray `console.log` in TS/JS \u2014 service/dashboard/src/routes/+layout.svelte:255", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/dashboard/src/routes/+layout.svelte:255"}, "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-ce427bf7f0de3e11", "name": "Stray `console.log` in TS/JS \u2014 service/dashboard/src/routes/terminal/+page.svelte:142", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/dashboard/src/routes/terminal/+page.svelte:142"}, "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-bd614714b9a3a564", "name": "Icon-only button without accessible name \u2014 service/public/v2/_app/immutable/nodes/9.BLwRZqA_.js:1", "shortDescription": {"text": "Icon-only button without accessible name \u2014 service/public/v2/_app/immutable/nodes/9.BLwRZqA_.js:1"}, "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-ce2ada8c582de4a7", "name": "Icon-only button without accessible name \u2014 service/public/v2/_app/immutable/nodes/14.ChhyqRxG.js:1", "shortDescription": {"text": "Icon-only button without accessible name \u2014 service/public/v2/_app/immutable/nodes/14.ChhyqRxG.js:1"}, "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-fb525bbf4f2aa28f", "name": "Icon-only button without accessible name \u2014 service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1", "shortDescription": {"text": "Icon-only button without accessible name \u2014 service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1"}, "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-3cfba95310f6e18d", "name": "Stray `console.log` in TS/JS \u2014 service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/public/v2/_app/immutable/nodes/25.25NA2FSH.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-dfb8bbbfe17e43a2", "name": "Icon-only button without accessible name \u2014 service/public/v2/_app/immutable/nodes/11.BtOMsgph.js:1", "shortDescription": {"text": "Icon-only button without accessible name \u2014 service/public/v2/_app/immutable/nodes/11.BtOMsgph.js:1"}, "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-d4003c85257ba926", "name": "Icon-only button without accessible name \u2014 service/public/v2/_app/immutable/nodes/10.CIcz8j3-.js:1", "shortDescription": {"text": "Icon-only button without accessible name \u2014 service/public/v2/_app/immutable/nodes/10.CIcz8j3-.js:1"}, "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-835557ccd6268eba", "name": "Stray `console.log` in TS/JS \u2014 service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1"}, "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-8c0c732075aba073", "name": "TODO/FIXME marker in shipping code \u2014 service/src/cloudflare-tunnel.js:5", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 service/src/cloudflare-tunnel.js:5"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2bfc170a7f2235ec", "name": "Stray `console.log` in TS/JS \u2014 service/src/cloudflare-tunnel.js:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/cloudflare-tunnel.js:38"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4111ad3b70b686ca", "name": "Stray `console.log` in TS/JS \u2014 service/src/wezterm.js:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/wezterm.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-a70fc7bf709290ed", "name": "Stray `console.log` in TS/JS \u2014 service/src/dashboard-vision-verifier.js:105", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/dashboard-vision-verifier.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-6c82d554ba934cb2", "name": "Stray `console.log` in TS/JS \u2014 service/src/resistance.js:111", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/resistance.js:111"}, "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-eb3b432ba97662aa", "name": "Stray `console.log` in TS/JS \u2014 service/src/smart-router.js:342", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/smart-router.js:342"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cda460d788277ab1", "name": "Stray `console.log` in TS/JS \u2014 service/src/session-summary.js:283", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/session-summary.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-e0f557c35c68e6ee", "name": "Stray `console.log` in TS/JS \u2014 service/src/forge-dashboard.js:126", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/forge-dashboard.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-a479dbe6d9537feb", "name": "Stray `console.log` in TS/JS \u2014 service/src/face-id.js:94", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/face-id.js:94"}, "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-71d721604839b3a0", "name": "TODO/FIXME marker in shipping code \u2014 service/src/hub-client.js:65", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 service/src/hub-client.js:65"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ac5dfc2580d38cd5", "name": "Stray `console.log` in TS/JS \u2014 service/src/hub-client.js:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/hub-client.js:28"}, "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-f31b7034a66f4b80", "name": "Stray `console.log` in TS/JS \u2014 service/src/classifier.js:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/classifier.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-f1ce278387dfec62", "name": "Stray `console.log` in TS/JS \u2014 service/src/terminal.js:111", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/terminal.js:111"}, "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-46b030e988f1dcf2", "name": "Stray `console.log` in TS/JS \u2014 service/src/webcam-watcher.js:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/webcam-watcher.js:98"}, "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-fa498d139959fa7e", "name": "TODO/FIXME marker in shipping code \u2014 service/src/db.js:318", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 service/src/db.js:318"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6b9a8a2bed2c537d", "name": "Stray `console.log` in TS/JS \u2014 service/src/db.js:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/db.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-a15e82245166aa0c", "name": "Stray `console.log` in TS/JS \u2014 service/src/memory-search.js:85", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/memory-search.js:85"}, "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-37982b958d8cbfa4", "name": "Stray `console.log` in TS/JS \u2014 service/src/dream.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/dream.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-0794591aeb75143c", "name": "Stray `console.log` in TS/JS \u2014 service/src/screen-watcher.js:271", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/screen-watcher.js:271"}, "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-d8a4556067b592b2", "name": "Stray `console.log` in TS/JS \u2014 service/src/stack-scanner.js:169", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/stack-scanner.js:169"}, "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-25f02ddfc58b6350", "name": "Stray `console.log` in TS/JS \u2014 service/src/pan-notify.js:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/pan-notify.js:72"}, "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-dcd8e2b818cfd41c", "name": "Stray `console.log` in TS/JS \u2014 service/src/discovery.js:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/discovery.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-755864af27c2a536", "name": "Stray `console.log` in TS/JS \u2014 service/src/scout.js:230", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/scout.js:230"}, "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-6d2f0347bb05f714", "name": "Stray `console.log` in TS/JS \u2014 service/src/modules.js:120", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/modules.js:120"}, "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-160bfcdc246e352f", "name": "Stray `console.log` in TS/JS \u2014 service/src/llm-adapter-gemini.js:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/llm-adapter-gemini.js:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-246820602e481b2e", "name": "Stray `console.log` in TS/JS \u2014 service/src/dashboard-watchdog.js:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/dashboard-watchdog.js:43"}, "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-e67133e959242fc3", "name": "Stray `console.log` in TS/JS \u2014 service/src/dashboard-render-health.js:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/dashboard-render-health.js:72"}, "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-ac5bac56624a2541", "name": "Stray `console.log` in TS/JS \u2014 service/src/transcript-watcher.js:78", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/transcript-watcher.js:78"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bdb15208891e14ef", "name": "Stray `console.log` in TS/JS \u2014 service/src/org-db.js:141", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/org-db.js:141"}, "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-1adc9701c9e1c846", "name": "Stray `console.log` in TS/JS \u2014 service/src/issue-checker.js:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/issue-checker.js:62"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-541dccbe646a7577", "name": "Stray `console.log` in TS/JS \u2014 service/src/client-manager.js:188", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/client-manager.js:188"}, "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-933901d07a1f806a", "name": "Stray `console.log` in TS/JS \u2014 service/src/capture-consent.js:123", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/capture-consent.js:123"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-06f2a1ddebe922da", "name": "Stray `console.log` in TS/JS \u2014 service/src/llm.js:223", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/llm.js:223"}, "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-aed6c5a7b25991f6", "name": "Stray `console.log` in TS/JS \u2014 service/src/hub-crypto.js:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/hub-crypto.js:28"}, "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-022d4c47b54d8896", "name": "Stray `console.log` in TS/JS \u2014 service/src/activity-tracker.js:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/activity-tracker.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-b645a262e5b8b90d", "name": "Stray `console.log` in TS/JS \u2014 service/src/panel-broadcaster.js:124", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/panel-broadcaster.js:124"}, "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-4377a92cf13acf65", "name": "Stray `console.log` in TS/JS \u2014 service/src/skills.js:97", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/skills.js:97"}, "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-33cd562067df9464", "name": "Stray `console.log` in TS/JS \u2014 service/src/server.js:252", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/server.js:252"}, "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-1b521f5cb97866ed", "name": "Stray `console.log` in TS/JS \u2014 service/src/remote-screen-watcher.js:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/remote-screen-watcher.js:80"}, "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-c32594b554350e48", "name": "Stray `console.log` in TS/JS \u2014 service/src/super-carrier.js:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/super-carrier.js:72"}, "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-77a9a7ea1afe9590", "name": "Stray `console.log` in TS/JS \u2014 service/src/conv-state-watcher.js:250", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/conv-state-watcher.js:250"}, "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-d4eb51b40e85e1e1", "name": "Stray `console.log` in TS/JS \u2014 service/src/steward.js:126", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/steward.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-a71560de519f879e", "name": "Stray `console.log` in TS/JS \u2014 service/src/github-monitor.js:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/github-monitor.js:55"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6d1e4eb1086e9086", "name": "Stray `console.log` in TS/JS \u2014 service/src/carrier.js:179", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/carrier.js:179"}, "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-ccec1493b42b500c", "name": "Stray `console.log` in TS/JS \u2014 service/src/autodev.js:90", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/autodev.js:90"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-87e5ebfab53f61d3", "name": "Stray `console.log` in TS/JS \u2014 service/src/pty-transcript.js:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/pty-transcript.js:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e896e95f83ee402a", "name": "Stray `console.log` in TS/JS \u2014 service/src/setup-plugins.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/setup-plugins.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-02e143ef57a830ba", "name": "Stray `console.log` in TS/JS \u2014 service/src/router.js:242", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/router.js:242"}, "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-7287e075c7b1bd19", "name": "Stray `console.log` in TS/JS \u2014 service/src/llm-adapter-claude.js:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/llm-adapter-claude.js:42"}, "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-f761af8938ef477f", "name": "Stray `console.log` in TS/JS \u2014 service/src/screen-recorder.js:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/screen-recorder.js:62"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6dae505acfc9ece8", "name": "Stray `console.log` in TS/JS \u2014 service/src/db-registry.js:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/db-registry.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-495fc4d0d614f78d", "name": "Stray `console.log` in TS/JS \u2014 service/src/claude-control.js:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/claude-control.js:92"}, "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-effedd51bd0cfe7f", "name": "Stray `console.log` in TS/JS \u2014 service/src/jobs.js:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/jobs.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-770d2b8624777a94", "name": "Stray `console.log` in TS/JS \u2014 service/src/mode.js:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/mode.js:61"}, "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-d3c0b7cf0e51f901", "name": "Stray `console.log` in TS/JS \u2014 service/src/smart-steward.js:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/smart-steward.js:63"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a001c1d3a7bfe1d5", "name": "Stray `console.log` in TS/JS \u2014 service/src/orchestrator.js:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/orchestrator.js:76"}, "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-b16ac5faf7fc865a", "name": "Stray `console.log` in TS/JS \u2014 service/src/tts.js:159", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/tts.js:159"}, "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-b9f94662ac6e8597", "name": "Stray `console.log` in TS/JS \u2014 service/src/playwright-bridge.js:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/playwright-bridge.js:49"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a58fc712696e69ec", "name": "Stray `console.log` in TS/JS \u2014 service/src/__tests__/platform.test.js:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/__tests__/platform.test.js:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e350a0745ca19458", "name": "Stray `console.log` in TS/JS \u2014 service/src/__tests__/screen-buffer-log.test.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/__tests__/screen-buffer-log.test.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-2831c61e6577cb5e", "name": "Stray `console.log` in TS/JS \u2014 service/src/wrappers/discord.js:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/wrappers/discord.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-125fc96daa3aefa1", "name": "Stray `console.log` in TS/JS \u2014 service/src/middleware/org-context.js:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/middleware/org-context.js:38"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7d9b97e9acbcd5ec", "name": "Stray `console.log` in TS/JS \u2014 service/src/cli/projects.js:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/cli/projects.js:13"}, "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-de67f483b08a2b31", "name": "Stray `console.log` in TS/JS \u2014 service/src/cli/query.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/cli/query.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-a3bd7b231d38ee28", "name": "Stray `console.log` in TS/JS \u2014 service/src/cli/launch.js:223", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/cli/launch.js:223"}, "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-98ddfe71de273fec", "name": "Stray `console.log` in TS/JS \u2014 service/src/cli/start.js:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/cli/start.js:18"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d42c8b63b28f1944", "name": "Stray `console.log` in TS/JS \u2014 service/src/cli/status.js:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/cli/status.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-8dccc995d186650a", "name": "Stray `console.log` in TS/JS \u2014 service/src/schema/ownership.js:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/schema/ownership.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-da6b1ecc3de11f60", "name": "Stray `console.log` in TS/JS \u2014 service/src/routes/replication.js:87", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/routes/replication.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-572733a9d3d73c24", "name": "Stray `console.log` in TS/JS \u2014 service/src/routes/incognito.js:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/routes/incognito.js:44"}, "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-aaaa46b05f710ea4", "name": "Stray `console.log` in TS/JS \u2014 service/src/routes/tests.js:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/routes/tests.js:75"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-884f12bc536200ab", "name": "Stray `console.log` in TS/JS \u2014 service/src/routes/sync.js:807", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/routes/sync.js:807"}, "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-651800efb91bf514", "name": "Stray `console.log` in TS/JS \u2014 service/src/routes/dashboard.js:1811", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/routes/dashboard.js:1811"}, "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-36a7f11eb0a9e11d", "name": "Stray `console.log` in TS/JS \u2014 service/src/routes/auth.js:99", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/routes/auth.js:99"}, "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-5f9e19a0e798dbac", "name": "TODO/FIXME marker in shipping code \u2014 service/src/routes/chat.js:330", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 service/src/routes/chat.js:330"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cbc357c99c7008df", "name": "Stray `console.log` in TS/JS \u2014 service/src/routes/hooks.js:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/routes/hooks.js:55"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-501a6ce658a2e4f5", "name": "Stray `console.log` in TS/JS \u2014 service/src/routes/client.js:548", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/routes/client.js:548"}, "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-603f5ac2faf25f3a", "name": "Stray `console.log` in TS/JS \u2014 service/src/routes/api.js:431", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/routes/api.js:431"}, "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-24a001ad66424d36", "name": "Stray `console.log` in TS/JS \u2014 service/src/routes/sensors.js:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/routes/sensors.js:45"}, "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-81e7b27556d2c8b4", "name": "Stray `console.log` in TS/JS \u2014 service/src/routes/devices.js:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/routes/devices.js:49"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d1a5cbeddcd80fbe", "name": "TODO/FIXME marker in shipping code \u2014 service/src/intuition/nourishment.js:24", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 service/src/intuition/nourishment.js:24"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e159e8acdf02e5b8", "name": "Stray `console.log` in TS/JS \u2014 service/src/intuition/index.js:982", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/intuition/index.js:982"}, "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-cf8d3d95ae3ac48e", "name": "Stray `console.log` in TS/JS \u2014 service/src/intuition/action.js:360", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/intuition/action.js:360"}, "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-cbd4a7a63b23f0c6", "name": "Stray `console.log` in TS/JS \u2014 service/src/memory/ollama-boot.js:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/memory/ollama-boot.js:45"}, "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-6b56ce9c9557729b", "name": "Stray `console.log` in TS/JS \u2014 service/src/memory/consolidation.js:248", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/memory/consolidation.js:248"}, "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-61ceee867e4a8ec5", "name": "Stray `console.log` in TS/JS \u2014 service/src/memory/semantic.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/memory/semantic.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-b14727fa9d8afe3c", "name": "Stray `console.log` in TS/JS \u2014 service/src/memory/episodic.js:135", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/memory/episodic.js:135"}, "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-64a46f3dabd0d242", "name": "Stray `console.log` in TS/JS \u2014 service/src/memory/embeddings.js:86", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/memory/embeddings.js:86"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9999908a411753df", "name": "Stray `console.log` in TS/JS \u2014 service/src/hooks/behavioral-lock-breaker.js:194", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/hooks/behavioral-lock-breaker.js:194"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8a49955e8821b7d5", "name": "Stray `console.log` in TS/JS \u2014 service/src/hooks/skill-learner.js:226", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/hooks/skill-learner.js:226"}, "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-50659608861eb3e0", "name": "Stray `console.log` in TS/JS \u2014 service/src/migrations/tier0-org-foundation.js:120", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/migrations/tier0-org-foundation.js:120"}, "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-2c1e94bb5c0329ab", "name": "Stray `console.log` in TS/JS \u2014 service/src/migrations/run.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/migrations/run.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-f08318c841650a93", "name": "Stray `console.log` in TS/JS \u2014 service/src/evolution/engine.js:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 service/src/evolution/engine.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-f69fb9709af97314", "name": "Stray `console.log` in TS/JS \u2014 pan-client/pan-client.js:193", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 pan-client/pan-client.js:193"}, "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-d3a88b67e2ad7e17", "name": "Dockerfile runs as root: hub/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: hub/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cbe75e8fc3bcf1eb", "name": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-304aa74877ffb246", "name": "Dockerfile runs as root: installer/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: installer/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3b7d0ee41c861850", "name": "Docker base image is tag-pinned but not digest-pinned: node:22-bookworm-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-bookworm-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8a028c60fe0eb579", "name": "Insecure pattern 'node_child_process' in run_build.js:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in run_build.js:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-63de36ebf5741708", "name": "Insecure pattern 'node_child_process' in install_apk.js:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in install_apk.js:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e595b68260f8b598", "name": "Insecure pattern 'node_child_process' in build_apk.js:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in build_apk.js:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ab915a47a7632e66", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/index.html:757", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/index.html:757"}, "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-a532f5f95c0467c2", "name": "Insecure pattern 'eval_used' in browser-extension/background.js:236", "shortDescription": {"text": "Insecure pattern 'eval_used' in browser-extension/background.js:236"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1324cd9edd2674f0", "name": "Insecure pattern 'node_child_process' in service/claude-runner.cjs:9", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/claude-runner.cjs:9"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3a35ff553c8b4466", "name": "Insecure pattern 'node_child_process' in service/dev-server.js:8", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/dev-server.js:8"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4151248efb706477", "name": "Insecure pattern 'exec_used' in service/pan-tray.cjs:130", "shortDescription": {"text": "Insecure pattern 'exec_used' in service/pan-tray.cjs:130"}, "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-9c1898805c68743e", "name": "Insecure pattern 'node_child_process' in service/pan-tray.cjs:7", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/pan-tray.cjs:7"}, "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-76333ddc3dbc061f", "name": "Insecure pattern 'node_child_process' in service/scripts/build-installer.js:9", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/scripts/build-installer.js:9"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aaf02086a34167ab", "name": "Insecure pattern 'node_child_process' in service/dashboard/build.js:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/dashboard/build.js:5"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-205d6c5d309c07cb", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/dashboard/src/app.html:165", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/dashboard/src/app.html:165"}, "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-480b61c628d30285", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/dashboard/src/routes/terminal-dev/+page.svelte:263", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/dashboard/src/routes/terminal-dev/+page.svelte:263"}, "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-5035323bcf425602", "name": "Insecure pattern 'insert_adjacent_html' in service/dashboard/src/routes/terminal-dev/+page.svelte:266", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in service/dashboard/src/routes/terminal-dev/+page.svelte:266"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-26cbb7d148cf6b97", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/dashboard/src/routes/terminal/+page.svelte:1190", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/dashboard/src/routes/terminal/+page.svelte:1190"}, "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-8d0a75fe00ff8e34", "name": "Insecure pattern 'insert_adjacent_html' in service/dashboard/src/routes/terminal/+page.svelte:1188", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in service/dashboard/src/routes/terminal/+page.svelte:1188"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0e607ae0061fc2d4", "name": "Insecure pattern 'local_storage_auth_token' in service/dashboard/src/routes/terminal/+page.svelte:564", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in service/dashboard/src/routes/terminal/+page.svelte:564"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4c22c47926271b62", "name": "Insecure pattern 'node_child_process' in service/installer/pan-installer.cjs:27", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/installer/pan-installer.cjs:27"}, "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-056885f38665a81a", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/installer/pan-installer.cjs:933", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/installer/pan-installer.cjs:933"}, "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-0c57b784ad9c1f47", "name": "Insecure pattern 'cors_wildcard' in service/installer/pan-installer.cjs:979", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in service/installer/pan-installer.cjs:979"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ee968fd1ef936839", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/report.html:373", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/report.html:373"}, "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-8fe85227753812e2", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/runner.html:112", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/runner.html:112"}, "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-7141a6d45273471c", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/index.html:1683", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/index.html:1683"}, "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-8acbf59f86cddf9f", "name": "Insecure pattern 'local_storage_auth_token' in service/public/index.html:1559", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in service/public/index.html:1559"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ad3f3d34d2b7800d", "name": "Insecure pattern 'insert_adjacent_html' in service/public/terminal-pre.html:275", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in service/public/terminal-pre.html:275"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-35329ee82613ad8a", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/status.html:113", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/status.html:113"}, "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-f0c58cf442a67bca", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/automation.html:177", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/automation.html:177"}, "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-e86962c9e01ff998", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/kronos.html:177", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/kronos.html:177"}, "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-39916e7966d32c38", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/comms.html:177", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/comms.html:177"}, "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-80653727d7343f4d", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/atlas-v2.html:177", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/atlas-v2.html:177"}, "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-9c900f3996a5c246", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/terminal.html:177", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/terminal.html:177"}, "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-93ddbbe304d433d2", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/chat.html:177", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/chat.html:177"}, "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-b2248e9204075fe5", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/data.html:177", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/data.html:177"}, "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-34e3785b234c50e3", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/index.html:177", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/index.html:177"}, "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-0eebaede1c755cfb", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/terminal-dev.html:177", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/terminal-dev.html:177"}, "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-6145942a14e5bfb6", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/call.html:177", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/call.html:177"}, "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-2d4f47f1a4e2b38b", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/timeline.html:177", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/timeline.html:177"}, "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-fe614dcbb6f8a0f9", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/compose.html:177", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/compose.html:177"}, "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-409ef53f6bc9cdd0", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/projects.html:177", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/projects.html:177"}, "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-f240cf020e4e8e2a", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/settings.html:177", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/settings.html:177"}, "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-a734ec403731c4ac", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/atlas.html:177", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/atlas.html:177"}, "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-56104f20373ef1db", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/sensors.html:177", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/sensors.html:177"}, "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-fbed27d1b3d4b5e6", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/kanban.html:177", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/kanban.html:177"}, "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-66a7c42a1ddb28b2", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/conversations.html:177", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/conversations.html:177"}, "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-d9b5e77f23eed698", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/crucible.html:177", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/crucible.html:177"}, "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-5cea0074b3b76053", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/_app/immutable/nodes/26.BpR5ztNG.js:1", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/_app/immutable/nodes/26.BpR5ztNG.js:1"}, "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-1ecd265c1112bbde", "name": "Insecure pattern 'insert_adjacent_html' in service/public/v2/_app/immutable/nodes/26.BpR5ztNG.js:2", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in service/public/v2/_app/immutable/nodes/26.BpR5ztNG.js:2"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9e29ac9645c8e1db", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:9", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:9"}, "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-a5c87443fb81236b", "name": "Insecure pattern 'insert_adjacent_html' in service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:7", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:7"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea4dde6bd5cdda16", "name": "Insecure pattern 'local_storage_auth_token' in service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:7", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:7"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a175ebfd429ac0bc", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/atlas/phone.html:177", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/atlas/phone.html:177"}, "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-d529f3cfed138798", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/docs/viewer.html:320", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/docs/viewer.html:320"}, "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-73e791ec9fb52439", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/public/mobile/index.html:477", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/mobile/index.html:477"}, "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-9fc828edfef616ea", "name": "Insecure pattern 'insert_adjacent_html' in service/public/mobile/index.html:457", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in service/public/mobile/index.html:457"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0629a1ac29722214", "name": "Insecure pattern 'node_child_process' in service/src/cloudflare-tunnel.js:10", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/cloudflare-tunnel.js:10"}, "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-eab9984c0cbc5a93", "name": "Insecure pattern 'node_child_process' in service/src/wezterm.js:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/wezterm.js:5"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4ec1ac0bbbd6b3c8", "name": "Insecure pattern 'node_child_process' in service/src/project-runner.js:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/project-runner.js:5"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5fd4ca10d4501b44", "name": "Insecure pattern 'node_child_process' in service/src/session-summary.js:20", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/session-summary.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-7d151b5e88a9dd21", "name": "Insecure pattern 'node_child_process' in service/src/forge-dashboard.js:22", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/forge-dashboard.js:22"}, "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-dce203cfbf75d7ff", "name": "Insecure pattern 'node_child_process' in service/src/terminal.js:11", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/terminal.js:11"}, "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-bf032cc8a9250e7d", "name": "Insecure pattern 'node_child_process' in service/src/webcam-watcher.js:11", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/webcam-watcher.js:11"}, "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-9ff5111ff767c32a", "name": "Insecure pattern 'node_child_process' in service/src/dream.js:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/dream.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-b9e0f746c24549c6", "name": "Insecure pattern 'node_child_process' in service/src/screen-watcher.js:9", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/screen-watcher.js:9"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8127c4486d5f49e2", "name": "Insecure pattern 'node_child_process' in service/src/discovery.js:13", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/discovery.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-c03a36f0a3107dc3", "name": "Insecure pattern 'node_child_process' in service/src/scout.js:12", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/scout.js:12"}, "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-c7b89ed7c5f552b1", "name": "Insecure pattern 'node_child_process' in service/src/llm-adapter-gemini.js:11", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/llm-adapter-gemini.js:11"}, "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-c250873f4cad02e7", "name": "Insecure pattern 'node_child_process' in service/src/dashboard-watchdog.js:10", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/dashboard-watchdog.js:10"}, "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-5a61cb144ff4423f", "name": "Insecure pattern 'exec_used' in service/src/activity-tracker.js:69", "shortDescription": {"text": "Insecure pattern 'exec_used' in service/src/activity-tracker.js:69"}, "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-215506205e000235", "name": "Insecure pattern 'node_child_process' in service/src/activity-tracker.js:7", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/activity-tracker.js:7"}, "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-80fd6191997b7db0", "name": "Insecure pattern 'exec_used' in service/src/server.js:738", "shortDescription": {"text": "Insecure pattern 'exec_used' in service/src/server.js:738"}, "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-c013e0e047de7e32", "name": "Insecure pattern 'node_child_process' in service/src/server.js:82", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/server.js:82"}, "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-e13594702a729d9d", "name": "Insecure pattern 'direct_innerhtml_assignment' in service/src/server.js:3192", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/src/server.js:3192"}, "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-972c8a021c64c070", "name": "Insecure pattern 'cors_wildcard' in service/src/server.js:2977", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in service/src/server.js:2977"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-202aad976f4fea32", "name": "Insecure pattern 'node_child_process' in service/src/remote-screen-watcher.js:8", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/remote-screen-watcher.js:8"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d48cce571849f825", "name": "Insecure pattern 'node_child_process' in service/src/platform.js:10", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/platform.js:10"}, "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-a68cd808cdecb532", "name": "Insecure pattern 'node_child_process' in service/src/super-carrier.js:17", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/super-carrier.js:17"}, "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-f7e8a0f9a6ad6e5a", "name": "Insecure pattern 'node_child_process' in service/src/steward.js:33", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/steward.js:33"}, "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-7d46e111a55664df", "name": "Insecure pattern 'node_child_process' in service/src/github-monitor.js:7", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/github-monitor.js:7"}, "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-a00e751c54bf7a47", "name": "Insecure pattern 'node_child_process' in service/src/carrier.js:26", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/carrier.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-f618723345150ed0", "name": "Insecure pattern 'cors_wildcard' in service/src/carrier.js:1802", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in service/src/carrier.js:1802"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-96d19eb45e05fe32", "name": "Insecure pattern 'node_child_process' in service/src/autodev.js:10", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/autodev.js:10"}, "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-566d0c84d8718b6b", "name": "Insecure pattern 'node_child_process' in service/src/setup-plugins.js:11", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/setup-plugins.js:11"}, "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-481097228f529c5b", "name": "Insecure pattern 'node_child_process' in service/src/router.js:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/router.js:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-06eef14fcb3a944d", "name": "Insecure pattern 'node_child_process' in service/src/screen-recorder.js:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/screen-recorder.js:5"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-be6e2875d725f90f", "name": "Insecure pattern 'cors_wildcard' in service/src/whisper-server.py:199", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in service/src/whisper-server.py:199"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-020f72acc5bd671a", "name": "Insecure pattern 'node_child_process' in service/src/tts.js:16", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/tts.js:16"}, "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-b7b8ec5a8a25cb12", "name": "Insecure pattern 'node_child_process' in service/src/playwright-bridge.js:9", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/playwright-bridge.js:9"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c2651d600ae1b1e8", "name": "Insecure pattern 'node_child_process' in service/src/cli/launch.js:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/cli/launch.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-1a27b088e0c0848c", "name": "Insecure pattern 'node_child_process' in service/src/routes/dashboard.js:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/routes/dashboard.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-cc66c5ae828e2d21", "name": "Insecure pattern 'node_child_process' in service/src/routes/client.js:30", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/routes/client.js:30"}, "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-98dd5c671295daa2", "name": "Insecure pattern 'node_child_process' in service/src/routes/api.js:9", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/routes/api.js:9"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9dc993b2b5479d29", "name": "Insecure pattern 'node_child_process' in service/src/memory/ollama-boot.js:7", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/memory/ollama-boot.js:7"}, "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-25b3af4759a0f62c", "name": "Possible secret in service/src/hooks/skill-learner.js", "shortDescription": {"text": "Possible secret in service/src/hooks/skill-learner.js"}, "fullDescription": {"text": "Detected pattern matching openai_or_anthropic_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-0324cf85b4802336", "name": "Insecure pattern 'node_child_process' in service/src/perf/probes.js:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in service/src/perf/probes.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-c18dc43d5756add6", "name": "Insecure pattern 'exec_used' in pan-client/pan-client.js:1108", "shortDescription": {"text": "Insecure pattern 'exec_used' in pan-client/pan-client.js:1108"}, "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-63dcea2a1428143b", "name": "Insecure pattern 'node_child_process' in pan-client/pan-client.js:17", "shortDescription": {"text": "Insecure pattern 'node_child_process' in pan-client/pan-client.js:17"}, "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-561b85c2bf86e729", "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-42ac69d8719019f4", "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-93ad662268a560df", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a38056446a04e89a", "name": "Very large file: service/src/terminal.js (2273 lines)", "shortDescription": {"text": "Very large file: service/src/terminal.js (2273 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-b70146ca07c8db9c", "name": "Very large file: service/src/benchmark.js (1783 lines)", "shortDescription": {"text": "Very large file: service/src/benchmark.js (1783 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-ca48bae2271abeff", "name": "Very large file: service/src/server.js (6525 lines)", "shortDescription": {"text": "Very large file: service/src/server.js (6525 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-9ab0f651307ab257", "name": "Very large file: service/src/steward.js (1797 lines)", "shortDescription": {"text": "Very large file: service/src/steward.js (1797 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-6ad669c649b26411", "name": "Very large file: service/src/carrier.js (2218 lines)", "shortDescription": {"text": "Very large file: service/src/carrier.js (2218 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-552a34998529c95d", "name": "Very large file: service/src/router.js (1752 lines)", "shortDescription": {"text": "Very large file: service/src/router.js (1752 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-02fcd658b89b0c25", "name": "Very large file: service/src/routes/tests.js (2668 lines)", "shortDescription": {"text": "Very large file: service/src/routes/tests.js (2668 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-45179349c41875a6", "name": "Very large file: service/src/routes/dashboard.js (2212 lines)", "shortDescription": {"text": "Very large file: service/src/routes/dashboard.js (2212 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-60e9451baf6270d9", "name": "Very large file: service/src/routes/api.js (1595 lines)", "shortDescription": {"text": "Very large file: service/src/routes/api.js (1595 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-4d074753933677fe", "name": "Very large file: service/src/intuition/index.js (1887 lines)", "shortDescription": {"text": "Very large file: service/src/intuition/index.js (1887 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-38b550dbcc1062b3", "name": "Very large file: pan-client/pan-client.js (1652 lines)", "shortDescription": {"text": "Very large file: pan-client/pan-client.js (1652 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "8 test file(s) for 259 source file(s) (ratio 0.03). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 981 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 87 placeholder/mock markers across 27 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-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-cc55229a7a3c078d", "name": "Agent authority lacks a verifier contract: .mcp.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .mcp.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a240419482f5dce3", "name": "Agent authority lacks a verifier contract: service/.mcp.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: service/.mcp.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3cd66090ead82232", "name": "`fetch()` without try/.catch or AbortSignal \u2014 hub/test.js:116", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 hub/test.js:116"}, "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-8aa4729b1e1755d1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/seed-tasks.js:8", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/seed-tasks.js:8"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-22e5f7fb04b3e23b", "name": "Commented-code block (6 lines) in service/run-tests.cjs:6", "shortDescription": {"text": "Commented-code block (6 lines) in service/run-tests.cjs: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-2e3d32ad8c61d142", "name": "Commented-code block (6 lines) in service/pan.js:58", "shortDescription": {"text": "Commented-code block (6 lines) in service/pan.js:58"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7111537b9fd7a751", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/test-memory.js:68", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/test-memory.js:68"}, "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-02d637dda00fb064", "name": "Legacy-named symbol `restoreOld` in service/dashboard/build.js:45", "shortDescription": {"text": "Legacy-named symbol `restoreOld` in service/dashboard/build.js:45"}, "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-ecc4109c98594c06", "name": "Commented-code block (5 lines) in service/dashboard/src/lib/api.js:5", "shortDescription": {"text": "Commented-code block (5 lines) in service/dashboard/src/lib/api.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-06fac9fbb30d742d", "name": "Commented-code block (5 lines) in service/dashboard/src/lib/stores/chat.svelte.js:6", "shortDescription": {"text": "Commented-code block (5 lines) in service/dashboard/src/lib/stores/chat.svelte.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-57bbd9ffd4675ced", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/dashboard/src/lib/stores/devices.svelte.js:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/dashboard/src/lib/stores/devices.svelte.js:66"}, "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-9adde87fd045b0f2", "name": "Commented-code block (5 lines) in service/dashboard/src/lib/stores/voice.svelte.js:5", "shortDescription": {"text": "Commented-code block (5 lines) in service/dashboard/src/lib/stores/voice.svelte.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-956ed5a495dd0409", "name": "Commented-code block (5 lines) in service/dashboard/src/lib/stores/terminal.svelte.js:9", "shortDescription": {"text": "Commented-code block (5 lines) in service/dashboard/src/lib/stores/terminal.svelte.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-b6818fe32ed60cdc", "name": "Commented-code block (9 lines) in service/dashboard/src/lib/stores/perf.svelte.js:3", "shortDescription": {"text": "Commented-code block (9 lines) in service/dashboard/src/lib/stores/perf.svelte.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-2197f246d386e8bf", "name": "Commented-code block (8 lines) in service/dashboard/src/lib/stores/index.js:9", "shortDescription": {"text": "Commented-code block (8 lines) in service/dashboard/src/lib/stores/index.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-e0a3344dc4939e2e", "name": "Commented-code block (5 lines) in service/dashboard/src/lib/stores/atlas.svelte.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in service/dashboard/src/lib/stores/atlas.svelte.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-c6f590bb9980af5b", "name": "Commented-code block (8 lines) in service/installer/pan-installer.cjs:154", "shortDescription": {"text": "Commented-code block (8 lines) in service/installer/pan-installer.cjs:154"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-efa59230aa105f8b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/9.BLwRZqA_.js:1", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/9.BLwRZqA_.js:1"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a7b071846183eada", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/14.ChhyqRxG.js:1", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/14.ChhyqRxG.js:1"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-589c838fa561695b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/13.BgBCn-6I.js:1", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/13.BgBCn-6I.js:1"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7ed243837a14d713", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/26.BpR5ztNG.js:14", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/26.BpR5ztNG.js:14"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3021858c56cf119b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-95296484743d0e79", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/18.TuDxOq-a.js:1", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/18.TuDxOq-a.js:1"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cc52ac4ba7a66722", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/24.CdENhAy3.js:2", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/24.CdENhAy3.js:2"}, "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-c779083cc4288628", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/21.wkXNyAUX.js:1", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/21.wkXNyAUX.js:1"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c8bb1023b979ceb9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/16.Cugh_AJ9.js:1", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/16.Cugh_AJ9.js:1"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2956f7744df85824", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/15.DN-UP6g2.js:1", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/15.DN-UP6g2.js:1"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-61bd82c2360405ad", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/11.BtOMsgph.js:1", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/11.BtOMsgph.js:1"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-52c44654c2a8a859", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4ac862ced852f757", "name": "Commented-code block (6 lines) in service/src/dashboard-vision-verifier.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in service/src/dashboard-vision-verifier.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-57b00c6a02527920", "name": "Commented-code block (5 lines) in service/src/smart-router.js:16", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/smart-router.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-161dabb40d3692c4", "name": "Commented-code block (5 lines) in service/src/session-summary.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/session-summary.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-bea50e3e3d466abe", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/email.js:161", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/email.js:161"}, "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-53f28c22d2f05d4b", "name": "Commented-code block (5 lines) in service/src/forge-dashboard.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/forge-dashboard.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-e0c348c0c754e207", "name": "Commented-code block (9 lines) in service/src/face-id.js:3", "shortDescription": {"text": "Commented-code block (9 lines) in service/src/face-id.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-a2cc9062c1aa9c73", "name": "Commented-code block (6 lines) in service/src/guardian.js:6", "shortDescription": {"text": "Commented-code block (6 lines) in service/src/guardian.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-b33a42a41228b02d", "name": "Commented-code block (5 lines) in service/src/trust-ladder.js:8", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/trust-ladder.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-821c5e7279d27ef6", "name": "Commented-code block (5 lines) in service/src/terminal.js:71", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/terminal.js:71"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7f37f0063ffcecfa", "name": "Commented-code block (13 lines) in service/src/benchmark.js:3", "shortDescription": {"text": "Commented-code block (13 lines) in service/src/benchmark.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-f247e3a2c19a2bee", "name": "Commented-code block (5 lines) in service/src/webcam-watcher.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/webcam-watcher.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-84da7526e2c43faa", "name": "Commented-code block (8 lines) in service/src/speak-router.js:5", "shortDescription": {"text": "Commented-code block (8 lines) in service/src/speak-router.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-4f93dc516f285f7d", "name": "Commented-code block (5 lines) in service/src/tts-prosody.js:12", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/tts-prosody.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-ee608f1f14e721f7", "name": "Legacy-named symbol `_settings_old` in service/src/db.js:210", "shortDescription": {"text": "Legacy-named symbol `_settings_old` in service/src/db.js:210"}, "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-9c40d25afb073808", "name": "Commented-code block (5 lines) in service/src/db.js:165", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/db.js:165"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2f0d114c7a1efaf2", "name": "Commented-code block (6 lines) in service/src/memory-search.js:182", "shortDescription": {"text": "Commented-code block (6 lines) in service/src/memory-search.js:182"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7b14e8bb6fabe07f", "name": "Commented-code block (6 lines) in service/src/screen-watcher.js:29", "shortDescription": {"text": "Commented-code block (6 lines) in service/src/screen-watcher.js:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ccb69c8a2981144d", "name": "Commented-code block (6 lines) in service/src/carrier-observability.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in service/src/carrier-observability.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-0802a38833b79a2d", "name": "Commented-code block (7 lines) in service/src/pan-notify.js:7", "shortDescription": {"text": "Commented-code block (7 lines) in service/src/pan-notify.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-9c09295bd5eedaa1", "name": "Commented-code block (5 lines) in service/src/scout.js:18", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/scout.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-c14d2c6f7ed76de4", "name": "Commented-code block (8 lines) in service/src/modules.js:11", "shortDescription": {"text": "Commented-code block (8 lines) in service/src/modules.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-08ca872ef88bb513", "name": "Commented-code block (6 lines) in service/src/llm-adapter-gemini.js:4", "shortDescription": {"text": "Commented-code block (6 lines) in service/src/llm-adapter-gemini.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-4af5403358f5fb17", "name": "Commented-code block (5 lines) in service/src/dashboard-render-health.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/dashboard-render-health.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-d149627a3e21494f", "name": "Commented-code block (9 lines) in service/src/transcript-watcher.js:33", "shortDescription": {"text": "Commented-code block (9 lines) in service/src/transcript-watcher.js:33"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-49b985aa041a4004", "name": "Commented-code block (5 lines) in service/src/org-db.js:9", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/org-db.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-abed9e71d88f0d81", "name": "Commented-code block (11 lines) in service/src/memory-search-worker.js:7", "shortDescription": {"text": "Commented-code block (11 lines) in service/src/memory-search-worker.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-94f733340fa7e0a7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/issue-checker.js:42", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/issue-checker.js:42"}, "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-aa8ffec5bba8b4e7", "name": "Commented-code block (7 lines) in service/src/client-manager.js:111", "shortDescription": {"text": "Commented-code block (7 lines) in service/src/client-manager.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-443ba6c0e18ed407", "name": "Commented-code block (5 lines) in service/src/capture-consent.js:8", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/capture-consent.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-5f23b3215d9f931d", "name": "Commented-code block (6 lines) in service/src/llm.js:146", "shortDescription": {"text": "Commented-code block (6 lines) in service/src/llm.js:146"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f196c8d030626ecb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/llm.js:639", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/llm.js:639"}, "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-902dfffbc8262c02", "name": "Commented-code block (7 lines) in service/src/panel-broadcaster.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in service/src/panel-broadcaster.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-255d8cf9663b185d", "name": "Commented-code block (5 lines) in service/src/privacy.js:110", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/privacy.js:110"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-91a651f5620fef86", "name": "Commented-code block (9 lines) in service/src/mic-router.js:5", "shortDescription": {"text": "Commented-code block (9 lines) in service/src/mic-router.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-c219c5550d234292", "name": "Commented-code block (6 lines) in service/src/server.js:10", "shortDescription": {"text": "Commented-code block (6 lines) in service/src/server.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-9a9f73aff9302f04", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/server.js:325", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/server.js:325"}, "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-b4d990e8cb805726", "name": "Commented-code block (5 lines) in service/src/super-carrier.js:147", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/super-carrier.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-1d5b921b45730ee1", "name": "Commented-code block (5 lines) in service/src/conv-state-watcher.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/conv-state-watcher.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-3099857b6fd3cdb1", "name": "Commented-code block (7 lines) in service/src/steward.js:7", "shortDescription": {"text": "Commented-code block (7 lines) in service/src/steward.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-69559577057d2a42", "name": "Commented-code block (8 lines) in service/src/carrier.js:16", "shortDescription": {"text": "Commented-code block (8 lines) in service/src/carrier.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-21322d3daa48d4fd", "name": "Commented-code block (7 lines) in service/src/pty-transcript.js:7", "shortDescription": {"text": "Commented-code block (7 lines) in service/src/pty-transcript.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-0d3619fd412659de", "name": "Commented-code block (7 lines) in service/src/router.js:49", "shortDescription": {"text": "Commented-code block (7 lines) in service/src/router.js:49"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-92196328c99d981f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/router.js:1008", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/router.js:1008"}, "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-389c2e7032a6708e", "name": "Commented-code block (6 lines) in service/src/llm-adapter-claude.js:4", "shortDescription": {"text": "Commented-code block (6 lines) in service/src/llm-adapter-claude.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-5e514bd2121c55b0", "name": "Commented-code block (6 lines) in service/src/llm-fallback.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in service/src/llm-fallback.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-0bbbe72cc9e4f701", "name": "Network/subprocess call without timeout or try/except \u2014 service/src/train-voice.py:227", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 service/src/train-voice.py:227"}, "fullDescription": {"text": "`urllib.request.urlretrieve(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-866bba95c8237290", "name": "Commented-code block (5 lines) in service/src/db-registry.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/db-registry.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-1202708d7852a470", "name": "Commented-code block (8 lines) in service/src/profiles.js:3", "shortDescription": {"text": "Commented-code block (8 lines) in service/src/profiles.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-27c7334e58488e89", "name": "Commented-code block (6 lines) in service/src/claude-control.js:9", "shortDescription": {"text": "Commented-code block (6 lines) in service/src/claude-control.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-ef876728d237d71e", "name": "Commented-code block (6 lines) in service/src/jobs.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in service/src/jobs.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-f3155f8e2a801e80", "name": "Commented-code block (5 lines) in service/src/mode.js:5", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/mode.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-35f34cc3e1134dd8", "name": "Commented-code block (7 lines) in service/src/smart-steward.js:9", "shortDescription": {"text": "Commented-code block (7 lines) in service/src/smart-steward.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-afc3ccfc7fd44834", "name": "Commented-code block (8 lines) in service/src/face-id-worker.js:3", "shortDescription": {"text": "Commented-code block (8 lines) in service/src/face-id-worker.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-ff0449455fb2ccca", "name": "Commented-code block (5 lines) in service/src/tts.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/tts.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-4f2e4f47b85fae82", "name": "Commented-code block (5 lines) in service/src/middleware/org-context.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/middleware/org-context.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-7e19b5bacc81cd5e", "name": "Commented-code block (5 lines) in service/src/mcp/pan-tools.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/mcp/pan-tools.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-a1083a40caf55cb3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/mcp/pan-tools.js:22", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/mcp/pan-tools.js:22"}, "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-217273cac548069d", "name": "Commented-code block (6 lines) in service/src/mcp/quality-log-tools.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in service/src/mcp/quality-log-tools.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-6f484e0ceea9fc06", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/mcp/quality-log-tools.js:17", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/mcp/quality-log-tools.js:17"}, "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-b9c1e2f4334cd506", "name": "Commented-code block (6 lines) in service/src/scripts/add-events-org-index.mjs:3", "shortDescription": {"text": "Commented-code block (6 lines) in service/src/scripts/add-events-org-index.mjs: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-65af51a77e36a3dd", "name": "Commented-code block (5 lines) in service/src/cli/launch.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/cli/launch.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-dd93bcfc4d72902b", "name": "Commented-code block (9 lines) in service/src/schema/ownership.js:47", "shortDescription": {"text": "Commented-code block (9 lines) in service/src/schema/ownership.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-44792f31cf583e29", "name": "Commented-code block (11 lines) in service/src/routes/teams.js:3", "shortDescription": {"text": "Commented-code block (11 lines) in service/src/routes/teams.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-a835440c7758d801", "name": "Commented-code block (5 lines) in service/src/routes/activity.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/routes/activity.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-7eb8d9bd911cfe1d", "name": "Legacy-named symbol `latest_backup` in service/src/routes/replication.js:63", "shortDescription": {"text": "Legacy-named symbol `latest_backup` in service/src/routes/replication.js:63"}, "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-abc14236835d5514", "name": "Commented-code block (6 lines) in service/src/routes/replication.js:6", "shortDescription": {"text": "Commented-code block (6 lines) in service/src/routes/replication.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-4898236f6effd376", "name": "Commented-code block (7 lines) in service/src/routes/incognito.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in service/src/routes/incognito.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-ca571cfde06e5e7d", "name": "Commented-code block (5 lines) in service/src/routes/tests.js:8", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/routes/tests.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-2efeff2649049258", "name": "Commented-code block (6 lines) in service/src/routes/intuition.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in service/src/routes/intuition.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-10e89aa7bbbc815b", "name": "Commented-code block (10 lines) in service/src/routes/sync.js:7", "shortDescription": {"text": "Commented-code block (10 lines) in service/src/routes/sync.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-ee2e27cbed3e2275", "name": "Commented-code block (9 lines) in service/src/routes/dashboard.js:55", "shortDescription": {"text": "Commented-code block (9 lines) in service/src/routes/dashboard.js:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ac41f7b41c11f1d8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/routes/auth.js:18", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/routes/auth.js:18"}, "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-1247e4adc57f27ef", "name": "Commented-code block (5 lines) in service/src/routes/chat.js:461", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/routes/chat.js:461"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-781fad47f8bef89c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/routes/voice.js:20", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/routes/voice.js:20"}, "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-1f2cd1218b590f26", "name": "Commented-code block (9 lines) in service/src/routes/hooks.js:527", "shortDescription": {"text": "Commented-code block (9 lines) in service/src/routes/hooks.js:527"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b820c03abe861d1d", "name": "Commented-code block (9 lines) in service/src/routes/client.js:3", "shortDescription": {"text": "Commented-code block (9 lines) in service/src/routes/client.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-a9c527981da9fad9", "name": "Commented-code block (8 lines) in service/src/routes/privacy.js:1", "shortDescription": {"text": "Commented-code block (8 lines) in service/src/routes/privacy.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-d0c51b1258c2d5f8", "name": "Commented-code block (8 lines) in service/src/routes/identity.js:7", "shortDescription": {"text": "Commented-code block (8 lines) in service/src/routes/identity.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-bd26799d35194bc0", "name": "Commented-code block (6 lines) in service/src/routes/api.js:54", "shortDescription": {"text": "Commented-code block (6 lines) in service/src/routes/api.js:54"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-928459d65d51cfb3", "name": "Commented-code block (14 lines) in service/src/routes/orgs.js:3", "shortDescription": {"text": "Commented-code block (14 lines) in service/src/routes/orgs.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-b7a15875cefcd6cf", "name": "Commented-code block (5 lines) in service/src/routes/audit.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/routes/audit.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-48bd0057b4ee4c12", "name": "Commented-code block (5 lines) in service/src/routes/mcp-quality-log.js:8", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/routes/mcp-quality-log.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-3ae6570111b4cb72", "name": "Commented-code block (9 lines) in service/src/routes/wrap.js:3", "shortDescription": {"text": "Commented-code block (9 lines) in service/src/routes/wrap.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-661657efe68d97eb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/routes/wrap.js:111", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/routes/wrap.js:111"}, "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-75beae3b68918a7c", "name": "Commented-code block (5 lines) in service/src/routes/sensors.js:208", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/routes/sensors.js:208"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-92ebc3a59b14097f", "name": "Commented-code block (6 lines) in service/src/routes/devices.js:10", "shortDescription": {"text": "Commented-code block (6 lines) in service/src/routes/devices.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-2bca207cc6d890e7", "name": "Commented-code block (10 lines) in service/src/intuition/needs.js:3", "shortDescription": {"text": "Commented-code block (10 lines) in service/src/intuition/needs.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-e55315ce3ee9d124", "name": "Commented-code block (7 lines) in service/src/intuition/nourishment.js:7", "shortDescription": {"text": "Commented-code block (7 lines) in service/src/intuition/nourishment.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-8d6ed2edca424884", "name": "Commented-code block (6 lines) in service/src/intuition/mind.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in service/src/intuition/mind.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-66db49512064a3aa", "name": "Commented-code block (5 lines) in service/src/intuition/signals.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/intuition/signals.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-b76d5c2b11577691", "name": "Commented-code block (6 lines) in service/src/intuition/reasoning.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in service/src/intuition/reasoning.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-1575db29da391c91", "name": "Commented-code block (5 lines) in service/src/intuition/index.js:189", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/intuition/index.js:189"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0609348f9e4809d5", "name": "Commented-code block (5 lines) in service/src/intuition/action.js:9", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/intuition/action.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-d38b5b9774630b33", "name": "Commented-code block (7 lines) in service/src/intuition/synthesis.js:4", "shortDescription": {"text": "Commented-code block (7 lines) in service/src/intuition/synthesis.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-e169852906c5f3ea", "name": "Commented-code block (5 lines) in service/src/memory/context-builder.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/memory/context-builder.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-006b79ad15b09752", "name": "Commented-code block (5 lines) in service/src/memory/embeddings.js:14", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/memory/embeddings.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-5616346e5f1af469", "name": "Commented-code block (9 lines) in service/src/hooks/skill-learner.js:16", "shortDescription": {"text": "Commented-code block (9 lines) in service/src/hooks/skill-learner.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-02433e40280655d7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/hooks/skill-learner.js:34", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/hooks/skill-learner.js:34"}, "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-34f403003fd89b20", "name": "Commented-code block (10 lines) in service/src/migrations/tier0-org-foundation.js:5", "shortDescription": {"text": "Commented-code block (10 lines) in service/src/migrations/tier0-org-foundation.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-8a1d419979b145b8", "name": "Commented-code block (7 lines) in service/src/migrations/run.js:7", "shortDescription": {"text": "Commented-code block (7 lines) in service/src/migrations/run.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-6878979f10c7e980", "name": "Commented-code block (7 lines) in service/src/evolution/engine.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in service/src/evolution/engine.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-c60e5ce8cb82f811", "name": "Commented-code block (10 lines) in service/src/perf/stages.js:5", "shortDescription": {"text": "Commented-code block (10 lines) in service/src/perf/stages.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-8aef4d0a72304134", "name": "Commented-code block (9 lines) in service/src/perf/engine.js:13", "shortDescription": {"text": "Commented-code block (9 lines) in service/src/perf/engine.js:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dda89e18d6125ff4", "name": "Commented-code block (5 lines) in service/src/perf/probes.js:34", "shortDescription": {"text": "Commented-code block (5 lines) in service/src/perf/probes.js:34"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d835cca91d3c91b9", "name": "Commented-code block (6 lines) in pan-client/pan-client.js:202", "shortDescription": {"text": "Commented-code block (6 lines) in pan-client/pan-client.js:202"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "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:\nservice/src/dictate-vad.py:transcribe_partial, service/src/dictate-vad.py:transcribe\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-918b308863c20750", "name": "Dangling fetch: GET http://127.0.0.1:${PORT}/health (hub/test.js:116)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:${PORT}/health (hub/test.js:116)"}, "fullDescription": {"text": "`hub/test.js:116` calls `GET http://127.0.0.1:${PORT}/health` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/health`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4c0b959ca06d642e", "name": "Dangling fetch: GET http://localhost:11434/api/tags (service/test-memory.js:68)", "shortDescription": {"text": "Dangling fetch: GET http://localhost:11434/api/tags (service/test-memory.js:68)"}, "fullDescription": {"text": "`service/test-memory.js:68` calls `GET http://localhost:11434/api/tags` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:11434/api/tags`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e74a7abdcbdd4531", "name": "Dangling fetch: POST http://localhost:11434/api/pull (service/test-memory.js:76)", "shortDescription": {"text": "Dangling fetch: POST http://localhost:11434/api/pull (service/test-memory.js:76)"}, "fullDescription": {"text": "`service/test-memory.js:76` calls `POST http://localhost:11434/api/pull` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:11434/api/pull`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-13e038693258a971", "name": "Dangling fetch: POST http://127.0.0.1:${TAURI_PORT}/open (service/dashboard/src/lib/compose.js:23)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:${TAURI_PORT}/open (service/dashboard/src/lib/compose.js:23)"}, "fullDescription": {"text": "`service/dashboard/src/lib/compose.js:23` calls `POST http://127.0.0.1:${TAURI_PORT}/open` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/open`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-333c0de3adc1612d", "name": "Dangling fetch: GET /api/v1/client/devices (service/dashboard/src/lib/stores/devices.svelte.js:50)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/client/devices (service/dashboard/src/lib/stores/devices.svelte.js:50)"}, "fullDescription": {"text": "`service/dashboard/src/lib/stores/devices.svelte.js:50` calls `GET /api/v1/client/devices` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/client/devices`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-02a7a3969fe65a09", "name": "Dangling fetch: POST /api/v1/client/${encodeURIComponent(deviceId)}/approve (service/dashboard/src/lib/stores/devices.sv", "shortDescription": {"text": "Dangling fetch: POST /api/v1/client/${encodeURIComponent(deviceId)}/approve (service/dashboard/src/lib/stores/devices.svelte.js:66)"}, "fullDescription": {"text": "`service/dashboard/src/lib/stores/devices.svelte.js:66` calls `POST /api/v1/client/${encodeURIComponent(deviceId)}/approve` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/client/<p>/approve`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2fe6cf2b7235a58b", "name": "Dangling fetch: POST /api/v1/client/${encodeURIComponent(deviceId)}/deny (service/dashboard/src/lib/stores/devices.svelt", "shortDescription": {"text": "Dangling fetch: POST /api/v1/client/${encodeURIComponent(deviceId)}/deny (service/dashboard/src/lib/stores/devices.svelte.js:72)"}, "fullDescription": {"text": "`service/dashboard/src/lib/stores/devices.svelte.js:72` calls `POST /api/v1/client/${encodeURIComponent(deviceId)}/deny` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/client/<p>/deny`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-446e1f232e74bcbc", "name": "Dangling fetch: GET /api/v1/perf/trace (service/dashboard/src/lib/stores/perf.svelte.js:179)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/perf/trace (service/dashboard/src/lib/stores/perf.svelte.js:179)"}, "fullDescription": {"text": "`service/dashboard/src/lib/stores/perf.svelte.js:179` calls `GET /api/v1/perf/trace` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/perf/trace`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6d6bf8895faebd73", "name": "Dangling fetch: POST /api/v1/perf/event (service/dashboard/src/lib/stores/perf.svelte.js:198)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/perf/event (service/dashboard/src/lib/stores/perf.svelte.js:198)"}, "fullDescription": {"text": "`service/dashboard/src/lib/stores/perf.svelte.js:198` calls `POST /api/v1/perf/event` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/perf/event`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b0c083028fe87961", "name": "Dangling fetch: GET /api/carrier/status (service/dashboard/src/lib/stores/services.svelte.js:22)", "shortDescription": {"text": "Dangling fetch: GET /api/carrier/status (service/dashboard/src/lib/stores/services.svelte.js:22)"}, "fullDescription": {"text": "`service/dashboard/src/lib/stores/services.svelte.js:22` calls `GET /api/carrier/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/carrier/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6a48fff1bda967aa", "name": "Dangling fetch: GET /api/hostname (service/installer/pan-installer.cjs:901)", "shortDescription": {"text": "Dangling fetch: GET /api/hostname (service/installer/pan-installer.cjs:901)"}, "fullDescription": {"text": "`service/installer/pan-installer.cjs:901` calls `GET /api/hostname` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/hostname`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d01fc00ee3162bc0", "name": "Dangling fetch: POST /api/install (service/installer/pan-installer.cjs:940)", "shortDescription": {"text": "Dangling fetch: POST /api/install (service/installer/pan-installer.cjs:940)"}, "fullDescription": {"text": "`service/installer/pan-installer.cjs:940` calls `POST /api/install` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/install`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0cb5cfb4c2a407d0", "name": "Dangling fetch: GET /api/v1/sensors?device=${encodeURIComponent(e(t).drilldown.name)} (service/public/v2/_app/immutable/", "shortDescription": {"text": "Dangling fetch: GET /api/v1/sensors?device=${encodeURIComponent(e(t).drilldown.name)} (service/public/v2/_app/immutable/nodes/9.BLwRZqA_.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/9.BLwRZqA_.js:1` calls `GET /api/v1/sensors?device=${encodeURIComponent(e(t).drilldown.name)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/sensors`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-db76ac436c2dcd59", "name": "Dangling fetch: GET /dashboard/api/projects/${e(t).drilldown.id}/tasks (service/public/v2/_app/immutable/nodes/9.BLwRZqA", "shortDescription": {"text": "Dangling fetch: GET /dashboard/api/projects/${e(t).drilldown.id}/tasks (service/public/v2/_app/immutable/nodes/9.BLwRZqA_.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/9.BLwRZqA_.js:1` calls `GET /dashboard/api/projects/${e(t).drilldown.id}/tasks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/dashboard/api/projects/<p>/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2935bba3f1c24474", "name": "Dangling fetch: POST /api/v1/chat/stream (service/public/v2/_app/immutable/nodes/14.ChhyqRxG.js:1)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/chat/stream (service/public/v2/_app/immutable/nodes/14.ChhyqRxG.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/14.ChhyqRxG.js:1` calls `POST /api/v1/chat/stream` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/chat/stream`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-22d2e2336ee79e27", "name": "Dangling fetch: POST /api/v1/cancel (service/public/v2/_app/immutable/nodes/14.ChhyqRxG.js:4)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/cancel (service/public/v2/_app/immutable/nodes/14.ChhyqRxG.js:4)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/14.ChhyqRxG.js:4` calls `POST /api/v1/cancel` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/cancel`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ae29c3d9246da5bd", "name": "Dangling fetch: POST /dashboard/api/sections/${t}/items (service/public/v2/_app/immutable/nodes/26.BpR5ztNG.js:14)", "shortDescription": {"text": "Dangling fetch: POST /dashboard/api/sections/${t}/items (service/public/v2/_app/immutable/nodes/26.BpR5ztNG.js:14)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/26.BpR5ztNG.js:14` calls `POST /dashboard/api/sections/${t}/items` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/dashboard/api/sections/<p>/items`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0026f65582f14ecb", "name": "Dangling fetch: POST /dashboard/api/projects/${s.projectId}/tasks (service/public/v2/_app/immutable/nodes/26.BpR5ztNG.js", "shortDescription": {"text": "Dangling fetch: POST /dashboard/api/projects/${s.projectId}/tasks (service/public/v2/_app/immutable/nodes/26.BpR5ztNG.js:14)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/26.BpR5ztNG.js:14` calls `POST /dashboard/api/projects/${s.projectId}/tasks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/dashboard/api/projects/<p>/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-496b0f0f426db91d", "name": "Dangling fetch: GET /api/v1/needs${ke} (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/needs${ke} (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1` calls `GET /api/v1/needs${ke}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/needs/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b7789837af166fdf", "name": "Dangling fetch: GET /api/v1/pan/synthesis${ke} (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/pan/synthesis${ke} (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1` calls `GET /api/v1/pan/synthesis${ke}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/pan/synthesis/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c0905d4c39355cce", "name": "Dangling fetch: PATCH /dashboard/api/alerts/${D} (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)", "shortDescription": {"text": "Dangling fetch: PATCH /dashboard/api/alerts/${D} (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1` calls `PATCH /dashboard/api/alerts/${D}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/dashboard/api/alerts/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-63d84e46cbf1af78", "name": "Dangling fetch: GET /api/v1/auth/users (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/auth/users (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1` calls `GET /api/v1/auth/users` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/auth/users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d8a5c5a221f25d0b", "name": "Dangling fetch: GET /api/v1/teams (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/teams (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1` calls `GET /api/v1/teams` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/teams`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6b79b644cb347b69", "name": "Dangling fetch: GET /api/v1/teams/${$e} (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/teams/${$e} (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1` calls `GET /api/v1/teams/${$e}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/teams/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fa6611c65f5a2307", "name": "Dangling fetch: GET /api/carrier/status (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)", "shortDescription": {"text": "Dangling fetch: GET /api/carrier/status (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1` calls `GET /api/carrier/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/carrier/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b58190e8f26280c2", "name": "Dangling fetch: GET /lifeboat/status (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)", "shortDescription": {"text": "Dangling fetch: GET /lifeboat/status (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1` calls `GET /lifeboat/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/lifeboat/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-158137f9e9c10b4a", "name": "Dangling fetch: POST /lifeboat/rollback (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)", "shortDescription": {"text": "Dangling fetch: POST /lifeboat/rollback (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1` calls `POST /lifeboat/rollback` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/lifeboat/rollback`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0d0d59648cfe524a", "name": "Dangling fetch: POST /lifeboat/confirm (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)", "shortDescription": {"text": "Dangling fetch: POST /lifeboat/confirm (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1` calls `POST /lifeboat/confirm` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/lifeboat/confirm`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3bb6ab7c707c693e", "name": "Dangling fetch: POST /api/carrier/swap (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)", "shortDescription": {"text": "Dangling fetch: POST /api/carrier/swap (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1` calls `POST /api/carrier/swap` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/carrier/swap`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b918a6302be1adba", "name": "Dangling fetch: GET /api/v1/client/devices (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/client/devices (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1` calls `GET /api/v1/client/devices` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/client/devices`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-64f82232c0fb8ca5", "name": "Dangling fetch: POST /api/v1/client/${encodeURIComponent(m)}/approve (service/public/v2/_app/immutable/nodes/25.25NA2FSH", "shortDescription": {"text": "Dangling fetch: POST /api/v1/client/${encodeURIComponent(m)}/approve (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1` calls `POST /api/v1/client/${encodeURIComponent(m)}/approve` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/client/<p>/approve`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3926f290d7c69579", "name": "Dangling fetch: POST /api/v1/client/${encodeURIComponent(m)}/deny (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js", "shortDescription": {"text": "Dangling fetch: POST /api/v1/client/${encodeURIComponent(m)}/deny (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1` calls `POST /api/v1/client/${encodeURIComponent(m)}/deny` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/client/<p>/deny`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-75d336d69d25a119", "name": "Dangling fetch: POST http://127.0.0.1:${Nu}/open (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:7)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:${Nu}/open (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:7)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:7` calls `POST http://127.0.0.1:${Nu}/open` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/open`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-73979219dae2062d", "name": "Dangling fetch: GET /api/v1/perf/trace (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:7)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/perf/trace (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:7)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:7` calls `GET /api/v1/perf/trace` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/perf/trace`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f1419cb0179b76e6", "name": "Dangling fetch: POST /api/v1/perf/event (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:7)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/perf/event (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:7)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:7` calls `POST /api/v1/perf/event` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/perf/event`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1d7cf8daf3529d60", "name": "Dangling fetch: GET /api/dashboard/bundle-hash (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:12)", "shortDescription": {"text": "Dangling fetch: GET /api/dashboard/bundle-hash (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:12)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:12` calls `GET /api/dashboard/bundle-hash` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/dashboard/bundle-hash`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ea0352dd66cdbcd3", "name": "Dangling fetch: POST /dashboard/api/sections/${r}/items (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:24)", "shortDescription": {"text": "Dangling fetch: POST /dashboard/api/sections/${r}/items (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:24)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:24` calls `POST /dashboard/api/sections/${r}/items` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/dashboard/api/sections/<p>/items`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a79a9132f19de6b7", "name": "Dangling fetch: GET /api/v1/client/devices (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:24)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/client/devices (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:24)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:24` calls `GET /api/v1/client/devices` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/client/devices`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-45355697e8fa824a", "name": "Dangling fetch: GET /api/dashboard/bundle-hash (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:24)", "shortDescription": {"text": "Dangling fetch: GET /api/dashboard/bundle-hash (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:24)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:24` calls `GET /api/dashboard/bundle-hash` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/dashboard/bundle-hash`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eb7a7d05b8beeae0", "name": "Dangling fetch: POST /api/carrier/restart (service/public/v2/_app/immutable/nodes/24.CdENhAy3.js:2)", "shortDescription": {"text": "Dangling fetch: POST /api/carrier/restart (service/public/v2/_app/immutable/nodes/24.CdENhAy3.js:2)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/24.CdENhAy3.js:2` calls `POST /api/carrier/restart` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/carrier/restart`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7cccd3e6bf8770dd", "name": "Dangling fetch: POST /api/carrier/restart?force=1 (service/public/v2/_app/immutable/nodes/24.CdENhAy3.js:2)", "shortDescription": {"text": "Dangling fetch: POST /api/carrier/restart?force=1 (service/public/v2/_app/immutable/nodes/24.CdENhAy3.js:2)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/24.CdENhAy3.js:2` calls `POST /api/carrier/restart?force=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/carrier/restart`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e969e3858c761ca4", "name": "Dangling fetch: GET /api/carrier/status (service/public/v2/_app/immutable/nodes/24.CdENhAy3.js:2)", "shortDescription": {"text": "Dangling fetch: GET /api/carrier/status (service/public/v2/_app/immutable/nodes/24.CdENhAy3.js:2)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/24.CdENhAy3.js:2` calls `GET /api/carrier/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/carrier/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-960fb1c18cea7c24", "name": "Dangling fetch: POST /api/v1/chat (service/public/v2/_app/immutable/nodes/15.DN-UP6g2.js:1)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/chat (service/public/v2/_app/immutable/nodes/15.DN-UP6g2.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/15.DN-UP6g2.js:1` calls `POST /api/v1/chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/chat`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7ac3bd8382365847", "name": "Dangling fetch: POST http://127.0.0.1:${ya}/open (service/public/v2/_app/immutable/nodes/15.DN-UP6g2.js:1)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:${ya}/open (service/public/v2/_app/immutable/nodes/15.DN-UP6g2.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/15.DN-UP6g2.js:1` calls `POST http://127.0.0.1:${ya}/open` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/open`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-757cd89c7d1f14d5", "name": "Dangling fetch: GET /api/v1/intuition/current (service/public/v2/_app/immutable/nodes/10.CIcz8j3-.js:1)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/intuition/current (service/public/v2/_app/immutable/nodes/10.CIcz8j3-.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/10.CIcz8j3-.js:1` calls `GET /api/v1/intuition/current` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/intuition/current`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d49d6c32c42db5f3", "name": "Dangling fetch: GET /api/v1/devices/list (service/public/v2/_app/immutable/nodes/10.CIcz8j3-.js:1)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/devices/list (service/public/v2/_app/immutable/nodes/10.CIcz8j3-.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/10.CIcz8j3-.js:1` calls `GET /api/v1/devices/list` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/devices/list`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8461e0973aa2b62e", "name": "Dangling fetch: POST /api/v1/chat/threads/dm (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/chat/threads/dm (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1` calls `POST /api/v1/chat/threads/dm` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/chat/threads/dm`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-004d1aa6bedb2815", "name": "Dangling fetch: POST /api/v1/chat/threads/${v.thread_id}/read (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/chat/threads/${v.thread_id}/read (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1` calls `POST /api/v1/chat/threads/${v.thread_id}/read` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/chat/threads/<p>/read`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3db5e8c0bfe3e264", "name": "Dangling fetch: GET /api/v1/chat/threads/${a}/messages?limit=20 (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/chat/threads/${a}/messages?limit=20 (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1` calls `GET /api/v1/chat/threads/${a}/messages?limit=20` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/chat/threads/<p>/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d4a3b1d53ca208bc", "name": "Dangling fetch: POST /api/v1/chat/threads/${e(Te)}/messages (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/chat/threads/${e(Te)}/messages (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1` calls `POST /api/v1/chat/threads/${e(Te)}/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/chat/threads/<p>/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-921f6319e94eb0ff", "name": "Dangling fetch: GET /api/v1/chat/calendar?month=${e(R)+1}&year=${e(_e)} (service/public/v2/_app/immutable/nodes/0.eRKQCT", "shortDescription": {"text": "Dangling fetch: GET /api/v1/chat/calendar?month=${e(R)+1}&year=${e(_e)} (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1` calls `GET /api/v1/chat/calendar?month=${e(R)+1}&year=${e(_e)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/chat/calendar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4287edfa350a607b", "name": "Dangling fetch: POST /api/v1/chat/calendar (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/chat/calendar (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1` calls `POST /api/v1/chat/calendar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/chat/calendar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-df0707f5087c87c3", "name": "Dangling fetch: PUT /api/v1/chat/contacts/${a.id} (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)", "shortDescription": {"text": "Dangling fetch: PUT /api/v1/chat/contacts/${a.id} (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1` calls `PUT /api/v1/chat/contacts/${a.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/chat/contacts/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9f05f7bfba464349", "name": "Dangling fetch: GET /api/v1/chat/unread (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/chat/unread (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1` calls `GET /api/v1/chat/unread` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/chat/unread`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6ec2195bbd17ee46", "name": "Dangling fetch: GET /api/v1/orgs (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/orgs (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1` calls `GET /api/v1/orgs` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/orgs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ec1308735aff8fb5", "name": "Dangling fetch: POST /api/v1/orgs/switch (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/orgs/switch (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1` calls `POST /api/v1/orgs/switch` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/orgs/switch`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dcb4c3579f0aaf0c", "name": "Dangling fetch: GET /v2/_app/version.json?_=${Date.now()} (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)", "shortDescription": {"text": "Dangling fetch: GET /v2/_app/version.json?_=${Date.now()} (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)"}, "fullDescription": {"text": "`service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1` calls `GET /v2/_app/version.json?_=${Date.now()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/_app/version.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b1c3c952abd7b05a", "name": "Dangling fetch: GET http://localhost:${svcDef.port}${svcDef.health} (service/src/project-runner.js:130)", "shortDescription": {"text": "Dangling fetch: GET http://localhost:${svcDef.port}${svcDef.health} (service/src/project-runner.js:130)"}, "fullDescription": {"text": "`service/src/project-runner.js:130` calls `GET http://localhost:${svcDef.port}${svcDef.health}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:/<p>/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4aebfedfb2aff4dd", "name": "Dangling fetch: POST http://127.0.0.1:${TAURI_PORT}/screenshot (service/src/dashboard-vision-verifier.js:30)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:${TAURI_PORT}/screenshot (service/src/dashboard-vision-verifier.js:30)"}, "fullDescription": {"text": "`service/src/dashboard-vision-verifier.js:30` calls `POST http://127.0.0.1:${TAURI_PORT}/screenshot` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/screenshot`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4c53f3cf38104e58", "name": "Dangling fetch: POST http://127.0.0.1:${TAURI_PORT}/screenshot (service/src/screen-watcher.js:152)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:${TAURI_PORT}/screenshot (service/src/screen-watcher.js:152)"}, "fullDescription": {"text": "`service/src/screen-watcher.js:152` calls `POST http://127.0.0.1:${TAURI_PORT}/screenshot` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/screenshot`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fbcd1086fb3ee274", "name": "Dangling fetch: POST http://127.0.0.1:${TAURI_PORT}/screenshot (service/src/dashboard-watchdog.js:104)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:${TAURI_PORT}/screenshot (service/src/dashboard-watchdog.js:104)"}, "fullDescription": {"text": "`service/src/dashboard-watchdog.js:104` calls `POST http://127.0.0.1:${TAURI_PORT}/screenshot` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/screenshot`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-93950793dc10e499", "name": "Dangling fetch: GET https://api.github.com/repos/${issue.repo}/issues/${issue.number} (service/src/issue-checker.js:19)", "shortDescription": {"text": "Dangling fetch: GET https://api.github.com/repos/${issue.repo}/issues/${issue.number} (service/src/issue-checker.js:19)"}, "fullDescription": {"text": "`service/src/issue-checker.js:19` calls `GET https://api.github.com/repos/${issue.repo}/issues/${issue.number}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/repos/<p>/issues/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0fc0553b6620605d", "name": "Dangling fetch: GET https://api.github.com/repos/${issue.repo}/issues/${issue.number}/comments?per_page=5&sort=created&d", "shortDescription": {"text": "Dangling fetch: GET https://api.github.com/repos/${issue.repo}/issues/${issue.number}/comments?per_page=5&sort=created&direction=desc (service/src/issue-checker.js:42)"}, "fullDescription": {"text": "`service/src/issue-checker.js:42` calls `GET https://api.github.com/repos/${issue.repo}/issues/${issue.number}/comments?per_page=5&sort=created&direction=desc` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/repos/<p>/issues/<p>/comments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-43fafbe7a68aa70c", "name": "Dangling fetch: GET http://127.0.0.1:${_craftPort()}${path} (service/src/panel-broadcaster.js:51)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:${_craftPort()}${path} (service/src/panel-broadcaster.js:51)"}, "fullDescription": {"text": "`service/src/panel-broadcaster.js:51` calls `GET http://127.0.0.1:${_craftPort()}${path}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fa3b88fcd3a0cd0d", "name": "Dangling fetch: POST http://127.0.0.1:${port}/api/v1/whisper (service/src/mic-router.js:198)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:${port}/api/v1/whisper (service/src/mic-router.js:198)"}, "fullDescription": {"text": "`service/src/mic-router.js:198` calls `POST http://127.0.0.1:${port}/api/v1/whisper` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/api/v1/whisper`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-231864d0eda177d0", "name": "Dangling fetch: GET https://api.tailscale.com/api/v2/tailnet/-/devices (service/src/server.js:325)", "shortDescription": {"text": "Dangling fetch: GET https://api.tailscale.com/api/v2/tailnet/-/devices (service/src/server.js:325)"}, "fullDescription": {"text": "`service/src/server.js:325` calls `GET https://api.tailscale.com/api/v2/tailnet/-/devices` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.tailscale.com/api/v2/tailnet/-/devices`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-db01a2c8f107033f", "name": "Dangling fetch: DELETE https://api.tailscale.com/api/v2/device/${dev.id} (service/src/server.js:335)", "shortDescription": {"text": "Dangling fetch: DELETE https://api.tailscale.com/api/v2/device/${dev.id} (service/src/server.js:335)"}, "fullDescription": {"text": "`service/src/server.js:335` calls `DELETE https://api.tailscale.com/api/v2/device/${dev.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.tailscale.com/api/v2/device/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-45968126b9c3dda7", "name": "Dangling fetch: GET http://127.0.0.1:7777/health (service/src/server.js:796)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:7777/health (service/src/server.js:796)"}, "fullDescription": {"text": "`service/src/server.js:796` calls `GET http://127.0.0.1:7777/health` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:7777/health`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f18ac3e69fab13ae", "name": "Dangling fetch: GET https://api.anthropic.com/v1/models (service/src/server.js:2167)", "shortDescription": {"text": "Dangling fetch: GET https://api.anthropic.com/v1/models (service/src/server.js:2167)"}, "fullDescription": {"text": "`service/src/server.js:2167` calls `GET https://api.anthropic.com/v1/models` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.anthropic.com/v1/models`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-94a5a72fe8f3649a", "name": "Dangling fetch: GET http://localhost:${port}/health (service/src/server.js:3491)", "shortDescription": {"text": "Dangling fetch: GET http://localhost:${port}/health (service/src/server.js:3491)"}, "fullDescription": {"text": "`service/src/server.js:3491` calls `GET http://localhost:${port}/health` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:/<p>/health`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c27d834b1a1222c8", "name": "Dangling fetch: GET http://localhost:${port}/v2/ (service/src/server.js:3496)", "shortDescription": {"text": "Dangling fetch: GET http://localhost:${port}/v2/ (service/src/server.js:3496)"}, "fullDescription": {"text": "`service/src/server.js:3496` calls `GET http://localhost:${port}/v2/` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:/<p>/v2`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7192429b277c8523", "name": "Dangling fetch: GET http://localhost:${DEV_PORT}/health (service/src/server.js:3520)", "shortDescription": {"text": "Dangling fetch: GET http://localhost:${DEV_PORT}/health (service/src/server.js:3520)"}, "fullDescription": {"text": "`service/src/server.js:3520` calls `GET http://localhost:${DEV_PORT}/health` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:/<p>/health`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d75cb0ce4c3cde7f", "name": "Dangling fetch: GET http://localhost:${DEV_PORT}/health (service/src/server.js:3551)", "shortDescription": {"text": "Dangling fetch: GET http://localhost:${DEV_PORT}/health (service/src/server.js:3551)"}, "fullDescription": {"text": "`service/src/server.js:3551` calls `GET http://localhost:${DEV_PORT}/health` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:/<p>/health`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5322eac93d606acb", "name": "Dangling fetch: POST https://api.tailscale.com/api/v2/oauth/token (service/src/server.js:4326)", "shortDescription": {"text": "Dangling fetch: POST https://api.tailscale.com/api/v2/oauth/token (service/src/server.js:4326)"}, "fullDescription": {"text": "`service/src/server.js:4326` calls `POST https://api.tailscale.com/api/v2/oauth/token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.tailscale.com/api/v2/oauth/token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6620172ebc755c81", "name": "Dangling fetch: GET https://api.tailscale.com/api/v2/tailnet/-/devices (service/src/server.js:4336)", "shortDescription": {"text": "Dangling fetch: GET https://api.tailscale.com/api/v2/tailnet/-/devices (service/src/server.js:4336)"}, "fullDescription": {"text": "`service/src/server.js:4336` calls `GET https://api.tailscale.com/api/v2/tailnet/-/devices` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.tailscale.com/api/v2/tailnet/-/devices`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5c20b4be9a90edfe", "name": "Dangling fetch: DELETE https://api.tailscale.com/api/v2/device/${apiDev.id} (service/src/server.js:4345)", "shortDescription": {"text": "Dangling fetch: DELETE https://api.tailscale.com/api/v2/device/${apiDev.id} (service/src/server.js:4345)"}, "fullDescription": {"text": "`service/src/server.js:4345` calls `DELETE https://api.tailscale.com/api/v2/device/${apiDev.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.tailscale.com/api/v2/device/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-59187bb1d44411d6", "name": "Dangling fetch: POST http://127.0.0.1:7790/winh (service/src/server.js:4768)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:7790/winh (service/src/server.js:4768)"}, "fullDescription": {"text": "`service/src/server.js:4768` calls `POST http://127.0.0.1:7790/winh` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:7790/winh`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bf69f6cb3649e963", "name": "Dangling fetch: POST http://127.0.0.1:7790/dictate (service/src/server.js:4779)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:7790/dictate (service/src/server.js:4779)"}, "fullDescription": {"text": "`service/src/server.js:4779` calls `POST http://127.0.0.1:7790/dictate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:7790/dictate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6325365c79917c4b", "name": "Dangling fetch: POST http://127.0.0.1:7790/dictate (service/src/server.js:4802)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:7790/dictate (service/src/server.js:4802)"}, "fullDescription": {"text": "`service/src/server.js:4802` calls `POST http://127.0.0.1:7790/dictate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:7790/dictate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-973b3a95293b7a97", "name": "Dangling fetch: POST http://127.0.0.1:7782/ (service/src/server.js:4880)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:7782/ (service/src/server.js:4880)"}, "fullDescription": {"text": "`service/src/server.js:4880` calls `POST http://127.0.0.1:7782/` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:7782`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e3b6cbda98c4ad28", "name": "Dangling fetch: POST http://127.0.0.1:7782/ (service/src/server.js:4916)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:7782/ (service/src/server.js:4916)"}, "fullDescription": {"text": "`service/src/server.js:4916` calls `POST http://127.0.0.1:7782/` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:7782`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8668bfc72cfccbed", "name": "Dangling fetch: GET http://localhost:1234/v1/models (service/src/server.js:5285)", "shortDescription": {"text": "Dangling fetch: GET http://localhost:1234/v1/models (service/src/server.js:5285)"}, "fullDescription": {"text": "`service/src/server.js:5285` calls `GET http://localhost:1234/v1/models` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:1234/v1/models`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5a96a6b52417f159", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (service/src/server.js:2368)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (service/src/server.js:2368)"}, "fullDescription": {"text": "`service/src/server.js:2368` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-037119ebcecce565", "name": "Dangling fetch: GET http://127.0.0.1:${CARRIER_PORT}/health (service/src/super-carrier.js:59)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:${CARRIER_PORT}/health (service/src/super-carrier.js:59)"}, "fullDescription": {"text": "`service/src/super-carrier.js:59` calls `GET http://127.0.0.1:${CARRIER_PORT}/health` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/health`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-90ecae100f644dc3", "name": "Dangling fetch: GET http://127.0.0.1:7777/health (service/src/steward.js:1092)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:7777/health (service/src/steward.js:1092)"}, "fullDescription": {"text": "`service/src/steward.js:1092` calls `GET http://127.0.0.1:7777/health` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:7777/health`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-86b424d118ad221f", "name": "Dangling fetch: POST http://127.0.0.1:7777/api/carrier/swap (service/src/steward.js:1164)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:7777/api/carrier/swap (service/src/steward.js:1164)"}, "fullDescription": {"text": "`service/src/steward.js:1164` calls `POST http://127.0.0.1:7777/api/carrier/swap` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:7777/api/carrier/swap`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-60dd774ff8608307", "name": "Dangling fetch: POST http://127.0.0.1:${primaryCraft.port}/api/v1/screen-watcher/burst (service/src/carrier.js:1587)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:${primaryCraft.port}/api/v1/screen-watcher/burst (service/src/carrier.js:1587)"}, "fullDescription": {"text": "`service/src/carrier.js:1587` calls `POST http://127.0.0.1:${primaryCraft.port}/api/v1/screen-watcher/burst` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/api/v1/screen-watcher/burst`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9b41cca63928efe2", "name": "Dangling fetch: POST http://127.0.0.1:${primaryCraft.port}/api/v1/tests/run (service/src/carrier.js:1596)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:${primaryCraft.port}/api/v1/tests/run (service/src/carrier.js:1596)"}, "fullDescription": {"text": "`service/src/carrier.js:1596` calls `POST http://127.0.0.1:${primaryCraft.port}/api/v1/tests/run` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/api/v1/tests/run`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-71c6ec3b4a229333", "name": "Dangling fetch: POST http://127.0.0.1:7790/screenshot (service/src/carrier.js:1648)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:7790/screenshot (service/src/carrier.js:1648)"}, "fullDescription": {"text": "`service/src/carrier.js:1648` calls `POST http://127.0.0.1:7790/screenshot` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:7790/screenshot`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cd7da1f480bee8b4", "name": "Dangling fetch: GET http://127.0.0.1:${CARRIER_PORT}/health (service/src/carrier.js:2171)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:${CARRIER_PORT}/health (service/src/carrier.js:2171)"}, "fullDescription": {"text": "`service/src/carrier.js:2171` calls `GET http://127.0.0.1:${CARRIER_PORT}/health` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/health`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-867eb370a9c041cb", "name": "Dangling fetch: GET http://127.0.0.1:${PAN_PORT}/api/v1/terminal/sessions (service/src/router.js:727)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:${PAN_PORT}/api/v1/terminal/sessions (service/src/router.js:727)"}, "fullDescription": {"text": "`service/src/router.js:727` calls `GET http://127.0.0.1:${PAN_PORT}/api/v1/terminal/sessions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/api/v1/terminal/sessions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1dbae40bd97b8a0b", "name": "Dangling fetch: GET http://127.0.0.1:${carrierPort}/api/carrier/clients (service/src/router.js:798)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:${carrierPort}/api/carrier/clients (service/src/router.js:798)"}, "fullDescription": {"text": "`service/src/router.js:798` calls `GET http://127.0.0.1:${carrierPort}/api/carrier/clients` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/api/carrier/clients`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-83818955b20623dd", "name": "Dangling fetch: POST http://127.0.0.1:7777/api/v1/claude-control/send (service/src/router.js:871)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:7777/api/v1/claude-control/send (service/src/router.js:871)"}, "fullDescription": {"text": "`service/src/router.js:871` calls `POST http://127.0.0.1:7777/api/v1/claude-control/send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:7777/api/v1/claude-control/send`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bb6a6ead86832f0d", "name": "Dangling fetch: POST http://127.0.0.1:${carrierPort}/api/carrier/client-send (service/src/router.js:888)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:${carrierPort}/api/carrier/client-send (service/src/router.js:888)"}, "fullDescription": {"text": "`service/src/router.js:888` calls `POST http://127.0.0.1:${carrierPort}/api/carrier/client-send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/api/carrier/client-send`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-89c7d59908631a6b", "name": "Dangling fetch: POST http://127.0.0.1:${PAN_PORT}/api/v1/terminal/pipe (service/src/router.js:1008)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:${PAN_PORT}/api/v1/terminal/pipe (service/src/router.js:1008)"}, "fullDescription": {"text": "`service/src/router.js:1008` calls `POST http://127.0.0.1:${PAN_PORT}/api/v1/terminal/pipe` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/api/v1/terminal/pipe`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-04d3db29e59c2ede", "name": "Dangling fetch: POST http://127.0.0.1:7777/api/v1/client/command (service/src/smart-steward.js:307)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:7777/api/v1/client/command (service/src/smart-steward.js:307)"}, "fullDescription": {"text": "`service/src/smart-steward.js:307` calls `POST http://127.0.0.1:7777/api/v1/client/command` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:7777/api/v1/client/command`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e5ef9605e16fa847", "name": "Dangling fetch: POST http://127.0.0.1:7777/api/v1/client/push-update (service/src/smart-steward.js:321)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:7777/api/v1/client/push-update (service/src/smart-steward.js:321)"}, "fullDescription": {"text": "`service/src/smart-steward.js:321` calls `POST http://127.0.0.1:7777/api/v1/client/push-update` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:7777/api/v1/client/push-update`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-41407450a0719d1e", "name": "Dangling fetch: GET http://127.0.0.1:${port}/health (service/src/cli/start.js:41)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:${port}/health (service/src/cli/start.js:41)"}, "fullDescription": {"text": "`service/src/cli/start.js:41` calls `GET http://127.0.0.1:${port}/health` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/health`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-82e200ce31d1d9a6", "name": "Dangling fetch: GET http://127.0.0.1:${port}/health (service/src/cli/start.js:60)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:${port}/health (service/src/cli/start.js:60)"}, "fullDescription": {"text": "`service/src/cli/start.js:60` calls `GET http://127.0.0.1:${port}/health` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/health`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-81deb12125be7907", "name": "Dangling fetch: GET http://127.0.0.1:7777/health (service/src/routes/dashboard.js:995)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:7777/health (service/src/routes/dashboard.js:995)"}, "fullDescription": {"text": "`service/src/routes/dashboard.js:995` calls `GET http://127.0.0.1:7777/health` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:7777/health`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dbbb812a66eb294f", "name": "Dangling fetch: GET http://127.0.0.1:7782 (service/src/routes/dashboard.js:997)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:7782 (service/src/routes/dashboard.js:997)"}, "fullDescription": {"text": "`service/src/routes/dashboard.js:997` calls `GET http://127.0.0.1:7782` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:7782`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9084255d5c14d639", "name": "Dangling fetch: GET https://oauth2.googleapis.com/tokeninfo?id_token=${token} (service/src/routes/auth.js:18)", "shortDescription": {"text": "Dangling fetch: GET https://oauth2.googleapis.com/tokeninfo?id_token=${token} (service/src/routes/auth.js:18)"}, "fullDescription": {"text": "`service/src/routes/auth.js:18` calls `GET https://oauth2.googleapis.com/tokeninfo?id_token=${token}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/oauth2.googleapis.com/tokeninfo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-92227da6e5ff5e46", "name": "Dangling fetch: GET https://graph.microsoft.com/v1.0/me (service/src/routes/auth.js:24)", "shortDescription": {"text": "Dangling fetch: GET https://graph.microsoft.com/v1.0/me (service/src/routes/auth.js:24)"}, "fullDescription": {"text": "`service/src/routes/auth.js:24` calls `GET https://graph.microsoft.com/v1.0/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.microsoft.com/v1.0/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d7d496b7743ac169", "name": "Dangling fetch: GET https://api.github.com/user (service/src/routes/auth.js:33)", "shortDescription": {"text": "Dangling fetch: GET https://api.github.com/user (service/src/routes/auth.js:33)"}, "fullDescription": {"text": "`service/src/routes/auth.js:33` calls `GET https://api.github.com/user` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/user`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9cb1006b2e77ba66", "name": "Dangling fetch: GET https://api.github.com/user/emails (service/src/routes/auth.js:34)", "shortDescription": {"text": "Dangling fetch: GET https://api.github.com/user/emails (service/src/routes/auth.js:34)"}, "fullDescription": {"text": "`service/src/routes/auth.js:34` calls `GET https://api.github.com/user/emails` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/user/emails`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5aceda80ed853886", "name": "Dangling fetch: POST https://github.com/login/oauth/access_token (service/src/routes/auth.js:297)", "shortDescription": {"text": "Dangling fetch: POST https://github.com/login/oauth/access_token (service/src/routes/auth.js:297)"}, "fullDescription": {"text": "`service/src/routes/auth.js:297` calls `POST https://github.com/login/oauth/access_token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/github.com/login/oauth/access_token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-09b63b0299b410c3", "name": "Dangling fetch: POST https://oauth2.googleapis.com/token (service/src/routes/auth.js:366)", "shortDescription": {"text": "Dangling fetch: POST https://oauth2.googleapis.com/token (service/src/routes/auth.js:366)"}, "fullDescription": {"text": "`service/src/routes/auth.js:366` calls `POST https://oauth2.googleapis.com/token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/oauth2.googleapis.com/token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6d647ed0aaa2abf6", "name": "Dangling fetch: POST http://127.0.0.1:${carrierPort}/api/carrier/client-send (service/src/routes/client.js:178)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:${carrierPort}/api/carrier/client-send (service/src/routes/client.js:178)"}, "fullDescription": {"text": "`service/src/routes/client.js:178` calls `POST http://127.0.0.1:${carrierPort}/api/carrier/client-send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/api/carrier/client-send`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f1f55382f40dee69", "name": "Dangling fetch: POST http://127.0.0.1:7790/wrap/inbound (service/src/routes/wrap.js:281)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:7790/wrap/inbound (service/src/routes/wrap.js:281)"}, "fullDescription": {"text": "`service/src/routes/wrap.js:281` calls `POST http://127.0.0.1:7790/wrap/inbound` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:7790/wrap/inbound`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-184b5be544b7781a", "name": "Dangling fetch: POST https://api.cerebras.ai/v1/chat/completions (service/src/hooks/skill-learner.js:34)", "shortDescription": {"text": "Dangling fetch: POST https://api.cerebras.ai/v1/chat/completions (service/src/hooks/skill-learner.js:34)"}, "fullDescription": {"text": "`service/src/hooks/skill-learner.js:34` calls `POST https://api.cerebras.ai/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.cerebras.ai/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2ddbef6843ea7bd3", "name": "Dangling fetch: POST http://127.0.0.1:7777/api/v1/logs (service/src/hooks/skill-learner.js:214)", "shortDescription": {"text": "Dangling fetch: POST http://127.0.0.1:7777/api/v1/logs (service/src/hooks/skill-learner.js:214)"}, "fullDescription": {"text": "`service/src/hooks/skill-learner.js:214` calls `POST http://127.0.0.1:7777/api/v1/logs` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:7777/api/v1/logs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`hub/src/server.js` declares `GET /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-df49db00a7390b4c", "name": "Unused endpoint: POST /api/v1/challenge", "shortDescription": {"text": "Unused endpoint: POST /api/v1/challenge"}, "fullDescription": {"text": "`hub/src/server.js` declares `POST /api/v1/challenge` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-accce7e914a5a492", "name": "Unused endpoint: POST /api/v1/devices/register", "shortDescription": {"text": "Unused endpoint: POST /api/v1/devices/register"}, "fullDescription": {"text": "`hub/src/server.js` declares `POST /api/v1/devices/register` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6690d10201eefb26", "name": "Unused endpoint: POST /api/v1/relay", "shortDescription": {"text": "Unused endpoint: POST /api/v1/relay"}, "fullDescription": {"text": "`hub/src/server.js` declares `POST /api/v1/relay` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0d2ab7293dfa5c9e", "name": "Unused endpoint: GET /api/v1/instances/:id", "shortDescription": {"text": "Unused endpoint: GET /api/v1/instances/:id"}, "fullDescription": {"text": "`hub/src/server.js` declares `GET /api/v1/instances/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-75670300e1933426", "name": "Unused endpoint: POST /endpoint", "shortDescription": {"text": "Unused endpoint: POST /endpoint"}, "fullDescription": {"text": "`service/src/permissions.js` declares `POST /endpoint` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3bec7ccd0b909bea", "name": "Unused endpoint: USE /api/v1/auth", "shortDescription": {"text": "Unused endpoint: USE /api/v1/auth"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /api/v1/auth` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-08b870df8d54279a", "name": "Unused endpoint: POST /api/v1/screenshot/upload", "shortDescription": {"text": "Unused endpoint: POST /api/v1/screenshot/upload"}, "fullDescription": {"text": "`service/src/server.js` declares `POST /api/v1/screenshot/upload` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa88773aa3dba862", "name": "Unused endpoint: GET /api/v1/screenshot/latest", "shortDescription": {"text": "Unused endpoint: GET /api/v1/screenshot/latest"}, "fullDescription": {"text": "`service/src/server.js` declares `GET /api/v1/screenshot/latest` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-77321fb7a451b74c", "name": "Unused endpoint: GET /api/v1/screenshot/view", "shortDescription": {"text": "Unused endpoint: GET /api/v1/screenshot/view"}, "fullDescription": {"text": "`service/src/server.js` declares `GET /api/v1/screenshot/view` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d90dff95bd8f5625", "name": "Unused endpoint: GET /api/v1/screenshot/list", "shortDescription": {"text": "Unused endpoint: GET /api/v1/screenshot/list"}, "fullDescription": {"text": "`service/src/server.js` declares `GET /api/v1/screenshot/list` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b0f3766c7188d5bf", "name": "Unused endpoint: GET /api/setup-status", "shortDescription": {"text": "Unused endpoint: GET /api/setup-status"}, "fullDescription": {"text": "`service/src/server.js` declares `GET /api/setup-status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ef72cd4eae72a16", "name": "Unused endpoint: GET /api/system-check", "shortDescription": {"text": "Unused endpoint: GET /api/system-check"}, "fullDescription": {"text": "`service/src/server.js` declares `GET /api/system-check` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dde3adb27bf7eebe", "name": "Unused endpoint: USE /api", "shortDescription": {"text": "Unused endpoint: USE /api"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /api` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ca4e4b2fb53fa701", "name": "Unused endpoint: USE /hooks", "shortDescription": {"text": "Unused endpoint: USE /hooks"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /hooks` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3e9e321736479230", "name": "Unused endpoint: GET /dashboard/api/perf", "shortDescription": {"text": "Unused endpoint: GET /dashboard/api/perf"}, "fullDescription": {"text": "`service/src/server.js` declares `GET /dashboard/api/perf` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7fbb51844b5c5f70", "name": "Unused endpoint: POST /dashboard/api/perf/reset-loop", "shortDescription": {"text": "Unused endpoint: POST /dashboard/api/perf/reset-loop"}, "fullDescription": {"text": "`service/src/server.js` declares `POST /dashboard/api/perf/reset-loop` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ab5c2280ba962e20", "name": "Unused endpoint: GET /dashboard/api/processes", "shortDescription": {"text": "Unused endpoint: GET /dashboard/api/processes"}, "fullDescription": {"text": "`service/src/server.js` declares `GET /dashboard/api/processes` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-42b04908b50f52e1", "name": "Unused endpoint: POST /dashboard/api/processes/kill", "shortDescription": {"text": "Unused endpoint: POST /dashboard/api/processes/kill"}, "fullDescription": {"text": "`service/src/server.js` declares `POST /dashboard/api/processes/kill` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-94da1aaaf36cc41f", "name": "Unused endpoint: USE /api/v1", "shortDescription": {"text": "Unused endpoint: USE /api/v1"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /api/v1` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-98e434bcca327c07", "name": "Unused endpoint: USE /api/v1/devices", "shortDescription": {"text": "Unused endpoint: USE /api/v1/devices"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /api/v1/devices` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-89ef019e1fe94ce0", "name": "Unused endpoint: USE /api/sensors", "shortDescription": {"text": "Unused endpoint: USE /api/sensors"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /api/sensors` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0cf985639873282a", "name": "Unused endpoint: USE /api/v1/runner", "shortDescription": {"text": "Unused endpoint: USE /api/v1/runner"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /api/v1/runner` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f36a37ffde9b3d7c", "name": "Unused endpoint: USE /api/v1/incognito", "shortDescription": {"text": "Unused endpoint: USE /api/v1/incognito"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /api/v1/incognito` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-479e0e978455f345", "name": "Unused endpoint: USE /api/v1/audit", "shortDescription": {"text": "Unused endpoint: USE /api/v1/audit"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /api/v1/audit` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-757c07dd9c0bd34e", "name": "Unused endpoint: USE /api/v1/replication", "shortDescription": {"text": "Unused endpoint: USE /api/v1/replication"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /api/v1/replication` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e283701de0add507", "name": "Unused endpoint: USE /api/v1/zones", "shortDescription": {"text": "Unused endpoint: USE /api/v1/zones"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /api/v1/zones` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c8a280a8e14dda49", "name": "Unused endpoint: USE /api/v1/quality-log", "shortDescription": {"text": "Unused endpoint: USE /api/v1/quality-log"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /api/v1/quality-log` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eac979ccbd34b60c", "name": "Unused endpoint: USE /mcp/quality-log", "shortDescription": {"text": "Unused endpoint: USE /mcp/quality-log"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /mcp/quality-log` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3d258c8868816015", "name": "Unused endpoint: USE /mcp/pan", "shortDescription": {"text": "Unused endpoint: USE /mcp/pan"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /mcp/pan` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a72aeb1e7c5d73af", "name": "Unused endpoint: USE /api/v1/capture", "shortDescription": {"text": "Unused endpoint: USE /api/v1/capture"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /api/v1/capture` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-94e2828c264e7410", "name": "Unused endpoint: USE /api/v1/identity", "shortDescription": {"text": "Unused endpoint: USE /api/v1/identity"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /api/v1/identity` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e835ad612a23d702", "name": "Unused endpoint: USE /api/v1/sync", "shortDescription": {"text": "Unused endpoint: USE /api/v1/sync"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /api/v1/sync` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-67b24360729896e8", "name": "Unused endpoint: USE /api/v1/orgs", "shortDescription": {"text": "Unused endpoint: USE /api/v1/orgs"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /api/v1/orgs` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7e1e9e4ddc4b1823", "name": "Unused endpoint: USE /api/v1/guardian", "shortDescription": {"text": "Unused endpoint: USE /api/v1/guardian"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /api/v1/guardian` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-37c828c9717ee0d2", "name": "Unused endpoint: USE /api/v1/privacy", "shortDescription": {"text": "Unused endpoint: USE /api/v1/privacy"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /api/v1/privacy` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cff8da5fbc19c76d", "name": "Unused endpoint: POST /chat", "shortDescription": {"text": "Unused endpoint: POST /chat"}, "fullDescription": {"text": "`service/src/server.js` declares `POST /chat` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8c85f5c1f60d8bd6", "name": "Unused endpoint: USE /api/v1/chat", "shortDescription": {"text": "Unused endpoint: USE /api/v1/chat"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /api/v1/chat` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f640ec2dcc229977", "name": "Unused endpoint: USE /api/v1/email", "shortDescription": {"text": "Unused endpoint: USE /api/v1/email"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /api/v1/email` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8254da1b6504a42c", "name": "Unused endpoint: USE /api/v1/teams", "shortDescription": {"text": "Unused endpoint: USE /api/v1/teams"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /api/v1/teams` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-df79cde670958ebe", "name": "Unused endpoint: USE /api/v1/wrap", "shortDescription": {"text": "Unused endpoint: USE /api/v1/wrap"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /api/v1/wrap` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2cf48b11f7b3eb34", "name": "Unused endpoint: USE /api/v1/messaging-prefs", "shortDescription": {"text": "Unused endpoint: USE /api/v1/messaging-prefs"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /api/v1/messaging-prefs` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72148af6f39f0bec", "name": "Unused endpoint: USE /api/v1/intuition", "shortDescription": {"text": "Unused endpoint: USE /api/v1/intuition"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /api/v1/intuition` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-042d5ebe9689b925", "name": "Unused endpoint: USE /api/v1/preferences", "shortDescription": {"text": "Unused endpoint: USE /api/v1/preferences"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /api/v1/preferences` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7e77a703a2429f02", "name": "Unused endpoint: GET /api/v1/webcam-watcher/status", "shortDescription": {"text": "Unused endpoint: GET /api/v1/webcam-watcher/status"}, "fullDescription": {"text": "`service/src/server.js` declares `GET /api/v1/webcam-watcher/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f52aac4e63e0a0c1", "name": "Unused endpoint: POST /api/v1/webcam-watcher/force", "shortDescription": {"text": "Unused endpoint: POST /api/v1/webcam-watcher/force"}, "fullDescription": {"text": "`service/src/server.js` declares `POST /api/v1/webcam-watcher/force` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-61c2a054cade99bd", "name": "Unused endpoint: POST /api/v1/screen-watcher/burst", "shortDescription": {"text": "Unused endpoint: POST /api/v1/screen-watcher/burst"}, "fullDescription": {"text": "`service/src/server.js` declares `POST /api/v1/screen-watcher/burst` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6a298d05aebddbaa", "name": "Unused endpoint: GET /api/v1/screen-watcher/status", "shortDescription": {"text": "Unused endpoint: GET /api/v1/screen-watcher/status"}, "fullDescription": {"text": "`service/src/server.js` declares `GET /api/v1/screen-watcher/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7fca4d54b5bf4d95", "name": "Unused endpoint: POST /api/v1/screen-watcher/reset-backoff", "shortDescription": {"text": "Unused endpoint: POST /api/v1/screen-watcher/reset-backoff"}, "fullDescription": {"text": "`service/src/server.js` declares `POST /api/v1/screen-watcher/reset-backoff` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-622fb2cd08aab299", "name": "Unused endpoint: USE /api/v1/ai", "shortDescription": {"text": "Unused endpoint: USE /api/v1/ai"}, "fullDescription": {"text": "`service/src/server.js` declares `USE /api/v1/ai` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/20992"}, "properties": {"repository": "Tereseus/PAN", "repoUrl": "https://github.com/Tereseus/PAN", "branch": "main"}, "results": [{"ruleId": "scanner-acd5f0c42d3e5205", "level": "note", "message": {"text": "Possibly dead Python function: callback"}, "properties": {"repobilityId": "d86912f8937c65c2", "scanner": "scanner-primary", "fingerprint": "acd5f0c42d3e5205", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/dictate-vad.py:88"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d2c228f3f44ae3a6", "level": "note", "message": {"text": "Possibly dead Python function: callback"}, "properties": {"repobilityId": "d86912f8937c65c2", "scanner": "scanner-primary", "fingerprint": "d2c228f3f44ae3a6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/record.py:44"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-05b4c1a09c73f596", "level": "note", "message": {"text": "Possibly dead Python function: transcribe_buffer"}, "properties": {"repobilityId": "a558424e49167694", "scanner": "scanner-primary", "fingerprint": "05b4c1a09c73f596", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/whisper-server.py:89"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-46d0b7484c3af3fe", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "46d0b7484c3af3fe", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/whisper-server.py:192"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a5eef5958ab260cf", "level": "note", "message": {"text": "Possibly dead Python function: do_GET"}, "properties": {"repobilityId": "2d943bb45e4f13bd", "scanner": "scanner-primary", "fingerprint": "a5eef5958ab260cf", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/whisper-server.py:207"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-74edcb237f3adaf0", "level": "note", "message": {"text": "Possibly dead Python function: do_DELETE"}, "properties": {"repobilityId": "f3eb582f191adaea", "scanner": "scanner-primary", "fingerprint": "74edcb237f3adaf0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/whisper-server.py:222"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a3c3b7c3e7e5f5f7", "level": "note", "message": {"text": "Possibly dead Python function: do_POST"}, "properties": {"repobilityId": "53357410ca9379a9", "scanner": "scanner-primary", "fingerprint": "a3c3b7c3e7e5f5f7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/whisper-server.py:234"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8df297ab70eb9446", "level": "note", "message": {"text": "Possibly dead Python function: do_transcribe"}, "properties": {"repobilityId": "199cfa4bd867ab54", "scanner": "scanner-primary", "fingerprint": "8df297ab70eb9446", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/whisper-server.py:307"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-13bce112d17a55bd", "level": "note", "message": {"text": "Possibly dead Python function: do_identify"}, "properties": {"repobilityId": "80ccf8efadd780ad", "scanner": "scanner-primary", "fingerprint": "13bce112d17a55bd", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/whisper-server.py:310"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c07af33518a71dee", "level": "note", "message": {"text": "Possibly dead Python function: run_ws"}, "properties": {"repobilityId": "a67c83834a3cc85d", "scanner": "scanner-primary", "fingerprint": "c07af33518a71dee", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/whisper-server.py:439"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-997d13c7578bc11b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 run_build.js:6"}, "properties": {"repobilityId": "4e3160e72a02b4eb", "scanner": "scanner-primary", "fingerprint": "997d13c7578bc11b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0a46b06384f01bd6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 install_apk.js:25"}, "properties": {"repobilityId": "05ba9059f6eea2a1", "scanner": "scanner-primary", "fingerprint": "0a46b06384f01bd6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-62af024cc5ae584c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 build_apk.js:7"}, "properties": {"repobilityId": "536b5f200762b612", "scanner": "scanner-primary", "fingerprint": "62af024cc5ae584c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-da61eb6cea6be628", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 parse-tasks.js:11"}, "properties": {"repobilityId": "8d1d3c2529b464ff", "scanner": "scanner-primary", "fingerprint": "da61eb6cea6be628", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb191c3a2f02112b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 android/app/src/main/assets/node-test.js:37"}, "properties": {"repobilityId": "ea416e4208ddd9d4", "scanner": "scanner-primary", "fingerprint": "cb191c3a2f02112b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-61568bf365e02303", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 hub/hub.js:16"}, "properties": {"repobilityId": "fd5f0eaac37dd9fd", "scanner": "scanner-primary", "fingerprint": "61568bf365e02303", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bf6721813f0a32b4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 hub/test.js:70"}, "properties": {"repobilityId": "38162b79fb811f14", "scanner": "scanner-primary", "fingerprint": "bf6721813f0a32b4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f3cf8f716c4d0b51", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 hub/src/queue.js:92"}, "properties": {"repobilityId": "00f1c0ac08e75034", "scanner": "scanner-primary", "fingerprint": "f3cf8f716c4d0b51", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2089b668cc581fe4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 hub/src/db.js:27"}, "properties": {"repobilityId": "5f7dd264e37d3e7c", "scanner": "scanner-primary", "fingerprint": "2089b668cc581fe4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-af1add831e9eff44", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 hub/src/auth.js:78"}, "properties": {"repobilityId": "1ea7c10460a85478", "scanner": "scanner-primary", "fingerprint": "af1add831e9eff44", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0ff00e2ebd854f14", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 hub/src/server.js:152"}, "properties": {"repobilityId": "8389e4a14a417fa2", "scanner": "scanner-primary", "fingerprint": "0ff00e2ebd854f14", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c2463a4dcd506e8b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 hub/src/router.js:169"}, "properties": {"repobilityId": "d7a7f39432b82240", "scanner": "scanner-primary", "fingerprint": "c2463a4dcd506e8b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-689f889fd7f9802d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 hub/src/federation.js:37"}, "properties": {"repobilityId": "9e296453d6589643", "scanner": "scanner-primary", "fingerprint": "689f889fd7f9802d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-27e207593e09c259", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 browser-extension/background.js:540"}, "properties": {"repobilityId": "541c33fad9486b74", "scanner": "scanner-primary", "fingerprint": "27e207593e09c259", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-854a19b0c155323c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/test-restart.js:70"}, "properties": {"repobilityId": "6a3a34a06579c9f1", "scanner": "scanner-primary", "fingerprint": "854a19b0c155323c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-429426b39247c77b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/seed-tasks.js:30"}, "properties": {"repobilityId": "74b85de4e81a7c48", "scanner": "scanner-primary", "fingerprint": "429426b39247c77b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cc6ae3e01f129d7b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/check_settings.js:5"}, "properties": {"repobilityId": "a043a161ec155953", "scanner": "scanner-primary", "fingerprint": "cc6ae3e01f129d7b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3fec13e6d7f5b6b9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/force_gemini.js:4"}, "properties": {"repobilityId": "6c8768d22def8298", "scanner": "scanner-primary", "fingerprint": "3fec13e6d7f5b6b9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6cc344f7a368b7cb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/dev-server.js:26"}, "properties": {"repobilityId": "d7c4b6f700b8dcda", "scanner": "scanner-primary", "fingerprint": "6cc344f7a368b7cb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-34ca044441c38a87", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/pan.js:40"}, "properties": {"repobilityId": "ad9d382c3848a329", "scanner": "scanner-primary", "fingerprint": "34ca044441c38a87", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c8ea763b0fee2eb8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/install-service.js:29"}, "properties": {"repobilityId": "1dd50b7de1204f11", "scanner": "scanner-primary", "fingerprint": "c8ea763b0fee2eb8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ca8f8c6405528c0a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/test-memory.js:14"}, "properties": {"repobilityId": "ae0874517b510301", "scanner": "scanner-primary", "fingerprint": "ca8f8c6405528c0a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-af19f17b68ae7b8c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/scripts/build-installer.js:25"}, "properties": {"repobilityId": "3873d29fd4d3fc14", "scanner": "scanner-primary", "fingerprint": "af19f17b68ae7b8c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-898f9173dcb0c253", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/dashboard/build.js:36"}, "properties": {"repobilityId": "5dbba4455b39a494", "scanner": "scanner-primary", "fingerprint": "898f9173dcb0c253", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fe482ce8e0d1ee55", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/dashboard/src/routes/+layout.svelte:255"}, "properties": {"repobilityId": "a293cb88fab0bb0e", "scanner": "scanner-primary", "fingerprint": "fe482ce8e0d1ee55", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ce427bf7f0de3e11", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/dashboard/src/routes/terminal/+page.svelte:142"}, "properties": {"repobilityId": "8cba9d203574d7cc", "scanner": "scanner-primary", "fingerprint": "ce427bf7f0de3e11", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bd614714b9a3a564", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 service/public/v2/_app/immutable/nodes/9.BLwRZqA_.js:1"}, "properties": {"repobilityId": "fc66585fca22dbca", "scanner": "scanner-primary", "fingerprint": "bd614714b9a3a564", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-ce2ada8c582de4a7", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 service/public/v2/_app/immutable/nodes/14.ChhyqRxG.js:1"}, "properties": {"repobilityId": "9fa6af9e6e11b3d0", "scanner": "scanner-primary", "fingerprint": "ce2ada8c582de4a7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-fb525bbf4f2aa28f", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1"}, "properties": {"repobilityId": "6820d4d34b0719cb", "scanner": "scanner-primary", "fingerprint": "fb525bbf4f2aa28f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-3cfba95310f6e18d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:7"}, "properties": {"repobilityId": "7ad10b967c23303b", "scanner": "scanner-primary", "fingerprint": "3cfba95310f6e18d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dfb8bbbfe17e43a2", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 service/public/v2/_app/immutable/nodes/11.BtOMsgph.js:1"}, "properties": {"repobilityId": "c296109a27218a04", "scanner": "scanner-primary", "fingerprint": "dfb8bbbfe17e43a2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-d4003c85257ba926", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 service/public/v2/_app/immutable/nodes/10.CIcz8j3-.js:1"}, "properties": {"repobilityId": "569867ff0e88ee8c", "scanner": "scanner-primary", "fingerprint": "d4003c85257ba926", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-835557ccd6268eba", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1"}, "properties": {"repobilityId": "4be93f28a16829b6", "scanner": "scanner-primary", "fingerprint": "835557ccd6268eba", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8c0c732075aba073", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 service/src/cloudflare-tunnel.js:5"}, "properties": {"repobilityId": "6a9676d15ce7c553", "scanner": "scanner-primary", "fingerprint": "8c0c732075aba073", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-2bfc170a7f2235ec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/cloudflare-tunnel.js:38"}, "properties": {"repobilityId": "589d1a41fe40d59c", "scanner": "scanner-primary", "fingerprint": "2bfc170a7f2235ec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4111ad3b70b686ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/wezterm.js:26"}, "properties": {"repobilityId": "bc0ddc5295aaeef1", "scanner": "scanner-primary", "fingerprint": "4111ad3b70b686ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a70fc7bf709290ed", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/dashboard-vision-verifier.js:105"}, "properties": {"repobilityId": "baf6e5e6b39c725e", "scanner": "scanner-primary", "fingerprint": "a70fc7bf709290ed", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6c82d554ba934cb2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/resistance.js:111"}, "properties": {"repobilityId": "00227352403af07e", "scanner": "scanner-primary", "fingerprint": "6c82d554ba934cb2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eb3b432ba97662aa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/smart-router.js:342"}, "properties": {"repobilityId": "2ac15335b8e3538a", "scanner": "scanner-primary", "fingerprint": "eb3b432ba97662aa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cda460d788277ab1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/session-summary.js:283"}, "properties": {"repobilityId": "cebdad7cb83a5ab4", "scanner": "scanner-primary", "fingerprint": "cda460d788277ab1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e0f557c35c68e6ee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/forge-dashboard.js:126"}, "properties": {"repobilityId": "09119154917f0c79", "scanner": "scanner-primary", "fingerprint": "e0f557c35c68e6ee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a479dbe6d9537feb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/face-id.js:94"}, "properties": {"repobilityId": "1cabaf7f06bf6ebd", "scanner": "scanner-primary", "fingerprint": "a479dbe6d9537feb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-71d721604839b3a0", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 service/src/hub-client.js:65"}, "properties": {"repobilityId": "98b5527416bc5cd5", "scanner": "scanner-primary", "fingerprint": "71d721604839b3a0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-ac5dfc2580d38cd5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/hub-client.js:28"}, "properties": {"repobilityId": "e8a35c6ca9e09285", "scanner": "scanner-primary", "fingerprint": "ac5dfc2580d38cd5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f31b7034a66f4b80", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/classifier.js:26"}, "properties": {"repobilityId": "b84d35ee139cbf10", "scanner": "scanner-primary", "fingerprint": "f31b7034a66f4b80", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f1ce278387dfec62", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/terminal.js:111"}, "properties": {"repobilityId": "d934e27f876d2267", "scanner": "scanner-primary", "fingerprint": "f1ce278387dfec62", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-46b030e988f1dcf2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/webcam-watcher.js:98"}, "properties": {"repobilityId": "e34cb9908fb95b5b", "scanner": "scanner-primary", "fingerprint": "46b030e988f1dcf2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fa498d139959fa7e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 service/src/db.js:318"}, "properties": {"repobilityId": "61327510239c589b", "scanner": "scanner-primary", "fingerprint": "fa498d139959fa7e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-6b9a8a2bed2c537d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/db.js:35"}, "properties": {"repobilityId": "6487d17a0bc90739", "scanner": "scanner-primary", "fingerprint": "6b9a8a2bed2c537d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a15e82245166aa0c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/memory-search.js:85"}, "properties": {"repobilityId": "0cebfd3dab9bb6ed", "scanner": "scanner-primary", "fingerprint": "a15e82245166aa0c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-37982b958d8cbfa4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/dream.js:37"}, "properties": {"repobilityId": "8dbe0f05ab5442ef", "scanner": "scanner-primary", "fingerprint": "37982b958d8cbfa4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0794591aeb75143c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/screen-watcher.js:271"}, "properties": {"repobilityId": "ef733bf7dabec055", "scanner": "scanner-primary", "fingerprint": "0794591aeb75143c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d8a4556067b592b2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/stack-scanner.js:169"}, "properties": {"repobilityId": "660a04dc72f10e91", "scanner": "scanner-primary", "fingerprint": "d8a4556067b592b2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-25f02ddfc58b6350", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/pan-notify.js:72"}, "properties": {"repobilityId": "ea0a19b227c378cb", "scanner": "scanner-primary", "fingerprint": "25f02ddfc58b6350", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dcd8e2b818cfd41c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/discovery.js:31"}, "properties": {"repobilityId": "f0228db5d43b5a1a", "scanner": "scanner-primary", "fingerprint": "dcd8e2b818cfd41c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-755864af27c2a536", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/scout.js:230"}, "properties": {"repobilityId": "50d7e25d8fdaa9fd", "scanner": "scanner-primary", "fingerprint": "755864af27c2a536", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6d2f0347bb05f714", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/modules.js:120"}, "properties": {"repobilityId": "f0ceb07f1c08e64f", "scanner": "scanner-primary", "fingerprint": "6d2f0347bb05f714", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-160bfcdc246e352f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/llm-adapter-gemini.js:40"}, "properties": {"repobilityId": "deef22aa01a92ea0", "scanner": "scanner-primary", "fingerprint": "160bfcdc246e352f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-246820602e481b2e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/dashboard-watchdog.js:43"}, "properties": {"repobilityId": "d08ad93d62b5dbb0", "scanner": "scanner-primary", "fingerprint": "246820602e481b2e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e67133e959242fc3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/dashboard-render-health.js:72"}, "properties": {"repobilityId": "13e745bdbfc7b58b", "scanner": "scanner-primary", "fingerprint": "e67133e959242fc3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ac5bac56624a2541", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/transcript-watcher.js:78"}, "properties": {"repobilityId": "9978b8126346475b", "scanner": "scanner-primary", "fingerprint": "ac5bac56624a2541", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bdb15208891e14ef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/org-db.js:141"}, "properties": {"repobilityId": "40c138053f9d4c65", "scanner": "scanner-primary", "fingerprint": "bdb15208891e14ef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1adc9701c9e1c846", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/issue-checker.js:62"}, "properties": {"repobilityId": "0855424948f41bbc", "scanner": "scanner-primary", "fingerprint": "1adc9701c9e1c846", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-541dccbe646a7577", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/client-manager.js:188"}, "properties": {"repobilityId": "7b464a911da7862c", "scanner": "scanner-primary", "fingerprint": "541dccbe646a7577", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-933901d07a1f806a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/capture-consent.js:123"}, "properties": {"repobilityId": "d41227668e1456f8", "scanner": "scanner-primary", "fingerprint": "933901d07a1f806a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-06f2a1ddebe922da", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/llm.js:223"}, "properties": {"repobilityId": "cd10b6424f704a8b", "scanner": "scanner-primary", "fingerprint": "06f2a1ddebe922da", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aed6c5a7b25991f6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/hub-crypto.js:28"}, "properties": {"repobilityId": "4169c4f428a1c14f", "scanner": "scanner-primary", "fingerprint": "aed6c5a7b25991f6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-022d4c47b54d8896", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/activity-tracker.js:52"}, "properties": {"repobilityId": "560cab47a9c25042", "scanner": "scanner-primary", "fingerprint": "022d4c47b54d8896", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b645a262e5b8b90d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/panel-broadcaster.js:124"}, "properties": {"repobilityId": "2a31dc8cd8f4f2c8", "scanner": "scanner-primary", "fingerprint": "b645a262e5b8b90d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4377a92cf13acf65", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/skills.js:97"}, "properties": {"repobilityId": "6235302ad774bfb8", "scanner": "scanner-primary", "fingerprint": "4377a92cf13acf65", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-33cd562067df9464", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/server.js:252"}, "properties": {"repobilityId": "b5dd37ac9d6864e3", "scanner": "scanner-primary", "fingerprint": "33cd562067df9464", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1b521f5cb97866ed", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/remote-screen-watcher.js:80"}, "properties": {"repobilityId": "e79b6514ae657fe9", "scanner": "scanner-primary", "fingerprint": "1b521f5cb97866ed", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c32594b554350e48", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/super-carrier.js:72"}, "properties": {"repobilityId": "b0542393f4306101", "scanner": "scanner-primary", "fingerprint": "c32594b554350e48", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-77a9a7ea1afe9590", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/conv-state-watcher.js:250"}, "properties": {"repobilityId": "2b5388e60d0bd8bc", "scanner": "scanner-primary", "fingerprint": "77a9a7ea1afe9590", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d4eb51b40e85e1e1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/steward.js:126"}, "properties": {"repobilityId": "b496e59e8068ddeb", "scanner": "scanner-primary", "fingerprint": "d4eb51b40e85e1e1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a71560de519f879e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/github-monitor.js:55"}, "properties": {"repobilityId": "d120671884f9e910", "scanner": "scanner-primary", "fingerprint": "a71560de519f879e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6d1e4eb1086e9086", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/carrier.js:179"}, "properties": {"repobilityId": "488b032ce5b5cad6", "scanner": "scanner-primary", "fingerprint": "6d1e4eb1086e9086", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ccec1493b42b500c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/autodev.js:90"}, "properties": {"repobilityId": "f625287130dda830", "scanner": "scanner-primary", "fingerprint": "ccec1493b42b500c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-87e5ebfab53f61d3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/pty-transcript.js:40"}, "properties": {"repobilityId": "16f53a2049115af7", "scanner": "scanner-primary", "fingerprint": "87e5ebfab53f61d3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e896e95f83ee402a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/setup-plugins.js:25"}, "properties": {"repobilityId": "1cc55b65f2aad0ae", "scanner": "scanner-primary", "fingerprint": "e896e95f83ee402a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-02e143ef57a830ba", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/router.js:242"}, "properties": {"repobilityId": "d10f21cb5866b05d", "scanner": "scanner-primary", "fingerprint": "02e143ef57a830ba", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7287e075c7b1bd19", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/llm-adapter-claude.js:42"}, "properties": {"repobilityId": "9c6fcda333e886cd", "scanner": "scanner-primary", "fingerprint": "7287e075c7b1bd19", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f761af8938ef477f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/screen-recorder.js:62"}, "properties": {"repobilityId": "477bbc03142604b7", "scanner": "scanner-primary", "fingerprint": "f761af8938ef477f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6dae505acfc9ece8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/db-registry.js:66"}, "properties": {"repobilityId": "c676c788ac1c4d39", "scanner": "scanner-primary", "fingerprint": "6dae505acfc9ece8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-495fc4d0d614f78d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/claude-control.js:92"}, "properties": {"repobilityId": "3f26284542019b59", "scanner": "scanner-primary", "fingerprint": "495fc4d0d614f78d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-effedd51bd0cfe7f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/jobs.js:48"}, "properties": {"repobilityId": "24f992d52304cc0c", "scanner": "scanner-primary", "fingerprint": "effedd51bd0cfe7f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-770d2b8624777a94", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/mode.js:61"}, "properties": {"repobilityId": "0a2de4d6524e8c0e", "scanner": "scanner-primary", "fingerprint": "770d2b8624777a94", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d3c0b7cf0e51f901", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/smart-steward.js:63"}, "properties": {"repobilityId": "a4f1a0f87d0973b9", "scanner": "scanner-primary", "fingerprint": "d3c0b7cf0e51f901", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a001c1d3a7bfe1d5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/orchestrator.js:76"}, "properties": {"repobilityId": "2af1c1ad27d10ac8", "scanner": "scanner-primary", "fingerprint": "a001c1d3a7bfe1d5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b16ac5faf7fc865a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/tts.js:159"}, "properties": {"repobilityId": "fa3d808706b19e78", "scanner": "scanner-primary", "fingerprint": "b16ac5faf7fc865a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b9f94662ac6e8597", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/playwright-bridge.js:49"}, "properties": {"repobilityId": "cdcc352130962846", "scanner": "scanner-primary", "fingerprint": "b9f94662ac6e8597", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a58fc712696e69ec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/__tests__/platform.test.js:19"}, "properties": {"repobilityId": "6b28aeb2fc2d1e8a", "scanner": "scanner-primary", "fingerprint": "a58fc712696e69ec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e350a0745ca19458", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/__tests__/screen-buffer-log.test.js:11"}, "properties": {"repobilityId": "bcab6f94c70f7234", "scanner": "scanner-primary", "fingerprint": "e350a0745ca19458", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2831c61e6577cb5e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/wrappers/discord.js:17"}, "properties": {"repobilityId": "7a294d42a08d1cf3", "scanner": "scanner-primary", "fingerprint": "2831c61e6577cb5e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-125fc96daa3aefa1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/middleware/org-context.js:38"}, "properties": {"repobilityId": "c6d930ad7f5f6cfd", "scanner": "scanner-primary", "fingerprint": "125fc96daa3aefa1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7d9b97e9acbcd5ec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/cli/projects.js:13"}, "properties": {"repobilityId": "f4183dee64c79d99", "scanner": "scanner-primary", "fingerprint": "7d9b97e9acbcd5ec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de67f483b08a2b31", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/cli/query.js:7"}, "properties": {"repobilityId": "3c619470f4a79409", "scanner": "scanner-primary", "fingerprint": "de67f483b08a2b31", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a3bd7b231d38ee28", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/cli/launch.js:223"}, "properties": {"repobilityId": "64323acd4fbaee08", "scanner": "scanner-primary", "fingerprint": "a3bd7b231d38ee28", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-98ddfe71de273fec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/cli/start.js:18"}, "properties": {"repobilityId": "0e091f523ee62005", "scanner": "scanner-primary", "fingerprint": "98ddfe71de273fec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d42c8b63b28f1944", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/cli/status.js:20"}, "properties": {"repobilityId": "53466599e057be52", "scanner": "scanner-primary", "fingerprint": "d42c8b63b28f1944", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8dccc995d186650a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/schema/ownership.js:35"}, "properties": {"repobilityId": "06c242b09fbd4859", "scanner": "scanner-primary", "fingerprint": "8dccc995d186650a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-da6b1ecc3de11f60", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/routes/replication.js:87"}, "properties": {"repobilityId": "c4fb407a514aa4d9", "scanner": "scanner-primary", "fingerprint": "da6b1ecc3de11f60", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-572733a9d3d73c24", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/routes/incognito.js:44"}, "properties": {"repobilityId": "ef4ed7db073b881b", "scanner": "scanner-primary", "fingerprint": "572733a9d3d73c24", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aaaa46b05f710ea4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/routes/tests.js:75"}, "properties": {"repobilityId": "d73f9534f49b6c9d", "scanner": "scanner-primary", "fingerprint": "aaaa46b05f710ea4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-884f12bc536200ab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/routes/sync.js:807"}, "properties": {"repobilityId": "cf9a60ee4c084d52", "scanner": "scanner-primary", "fingerprint": "884f12bc536200ab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-651800efb91bf514", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/routes/dashboard.js:1811"}, "properties": {"repobilityId": "300d08ea1abbae3c", "scanner": "scanner-primary", "fingerprint": "651800efb91bf514", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-36a7f11eb0a9e11d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/routes/auth.js:99"}, "properties": {"repobilityId": "0629e71c6619cd55", "scanner": "scanner-primary", "fingerprint": "36a7f11eb0a9e11d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5f9e19a0e798dbac", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 service/src/routes/chat.js:330"}, "properties": {"repobilityId": "b1bf417e277693c9", "scanner": "scanner-primary", "fingerprint": "5f9e19a0e798dbac", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-cbc357c99c7008df", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/routes/hooks.js:55"}, "properties": {"repobilityId": "fb0ff6de00ffe070", "scanner": "scanner-primary", "fingerprint": "cbc357c99c7008df", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-501a6ce658a2e4f5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/routes/client.js:548"}, "properties": {"repobilityId": "1de5d3e4aa91dc40", "scanner": "scanner-primary", "fingerprint": "501a6ce658a2e4f5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-603f5ac2faf25f3a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/routes/api.js:431"}, "properties": {"repobilityId": "a765d673325baa71", "scanner": "scanner-primary", "fingerprint": "603f5ac2faf25f3a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-24a001ad66424d36", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/routes/sensors.js:45"}, "properties": {"repobilityId": "34836256d6e2bee5", "scanner": "scanner-primary", "fingerprint": "24a001ad66424d36", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-81e7b27556d2c8b4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/routes/devices.js:49"}, "properties": {"repobilityId": "49e886c7d7b05021", "scanner": "scanner-primary", "fingerprint": "81e7b27556d2c8b4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d1a5cbeddcd80fbe", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 service/src/intuition/nourishment.js:24"}, "properties": {"repobilityId": "860a6d28ef4522c3", "scanner": "scanner-primary", "fingerprint": "d1a5cbeddcd80fbe", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-e159e8acdf02e5b8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/intuition/index.js:982"}, "properties": {"repobilityId": "f41bb913c6facf7b", "scanner": "scanner-primary", "fingerprint": "e159e8acdf02e5b8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cf8d3d95ae3ac48e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/intuition/action.js:360"}, "properties": {"repobilityId": "12908d8371b1c68e", "scanner": "scanner-primary", "fingerprint": "cf8d3d95ae3ac48e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cbd4a7a63b23f0c6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/memory/ollama-boot.js:45"}, "properties": {"repobilityId": "dc7ab6dc2a01af0c", "scanner": "scanner-primary", "fingerprint": "cbd4a7a63b23f0c6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6b56ce9c9557729b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/memory/consolidation.js:248"}, "properties": {"repobilityId": "076ae1704efd2ac5", "scanner": "scanner-primary", "fingerprint": "6b56ce9c9557729b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-61ceee867e4a8ec5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/memory/semantic.js:37"}, "properties": {"repobilityId": "df126b1e9f5f73bf", "scanner": "scanner-primary", "fingerprint": "61ceee867e4a8ec5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b14727fa9d8afe3c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/memory/episodic.js:135"}, "properties": {"repobilityId": "b52ce055e75cdb2a", "scanner": "scanner-primary", "fingerprint": "b14727fa9d8afe3c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-64a46f3dabd0d242", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/memory/embeddings.js:86"}, "properties": {"repobilityId": "7baac4829e84022d", "scanner": "scanner-primary", "fingerprint": "64a46f3dabd0d242", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9999908a411753df", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/hooks/behavioral-lock-breaker.js:194"}, "properties": {"repobilityId": "81cddb145f50dec9", "scanner": "scanner-primary", "fingerprint": "9999908a411753df", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8a49955e8821b7d5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/hooks/skill-learner.js:226"}, "properties": {"repobilityId": "4a0e35b3284f99a8", "scanner": "scanner-primary", "fingerprint": "8a49955e8821b7d5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-50659608861eb3e0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/migrations/tier0-org-foundation.js:120"}, "properties": {"repobilityId": "13749b166c25f652", "scanner": "scanner-primary", "fingerprint": "50659608861eb3e0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2c1e94bb5c0329ab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/migrations/run.js:21"}, "properties": {"repobilityId": "a972a13caf4f2fa6", "scanner": "scanner-primary", "fingerprint": "2c1e94bb5c0329ab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f08318c841650a93", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 service/src/evolution/engine.js:35"}, "properties": {"repobilityId": "4651849b10743e40", "scanner": "scanner-primary", "fingerprint": "f08318c841650a93", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f69fb9709af97314", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 pan-client/pan-client.js:193"}, "properties": {"repobilityId": "5b578b8bb481cfc2", "scanner": "scanner-primary", "fingerprint": "f69fb9709af97314", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d3a88b67e2ad7e17", "level": "warning", "message": {"text": "Dockerfile runs as root: hub/Dockerfile"}, "properties": {"repobilityId": "320c7646efbb2d9c", "scanner": "scanner-primary", "fingerprint": "d3a88b67e2ad7e17", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-cbe75e8fc3bcf1eb", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine"}, "properties": {"repobilityId": "9dad9ec3625ecfb7", "scanner": "scanner-primary", "fingerprint": "cbe75e8fc3bcf1eb", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "hub/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-304aa74877ffb246", "level": "warning", "message": {"text": "Dockerfile runs as root: installer/Dockerfile"}, "properties": {"repobilityId": "abcb581e69bcc0de", "scanner": "scanner-primary", "fingerprint": "304aa74877ffb246", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-3b7d0ee41c861850", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-bookworm-slim"}, "properties": {"repobilityId": "db18a7447393ade3", "scanner": "scanner-primary", "fingerprint": "3b7d0ee41c861850", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "installer/Dockerfile"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-3b7d0ee41c861850", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-bookworm-slim"}, "properties": {"repobilityId": "ebe07dacab5a62d1", "scanner": "scanner-primary", "fingerprint": "3b7d0ee41c861850", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "installer/Dockerfile"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-8a028c60fe0eb579", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in run_build.js:1"}, "properties": {"repobilityId": "c1b4febe42983a96", "scanner": "scanner-primary", "fingerprint": "8a028c60fe0eb579", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "run_build.js"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-63de36ebf5741708", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in install_apk.js:1"}, "properties": {"repobilityId": "0d8650f0524879e9", "scanner": "scanner-primary", "fingerprint": "63de36ebf5741708", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "install_apk.js"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e595b68260f8b598", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in build_apk.js:1"}, "properties": {"repobilityId": "d1c1bb103b1d96f1", "scanner": "scanner-primary", "fingerprint": "e595b68260f8b598", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "build_apk.js"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ab915a47a7632e66", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/index.html:757"}, "properties": {"repobilityId": "cba7363c134f7b1d", "scanner": "scanner-primary", "fingerprint": "ab915a47a7632e66", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/index.html"}, "region": {"startLine": 757}}}]}, {"ruleId": "scanner-a532f5f95c0467c2", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in browser-extension/background.js:236"}, "properties": {"repobilityId": "3c5f49e17af47668", "scanner": "scanner-primary", "fingerprint": "a532f5f95c0467c2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "browser-extension/background.js"}, "region": {"startLine": 236}}}]}, {"ruleId": "scanner-1324cd9edd2674f0", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/claude-runner.cjs:9"}, "properties": {"repobilityId": "9a182eff521ce827", "scanner": "scanner-primary", "fingerprint": "1324cd9edd2674f0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/claude-runner.cjs"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-3a35ff553c8b4466", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/dev-server.js:8"}, "properties": {"repobilityId": "6990d0bd9901b9e5", "scanner": "scanner-primary", "fingerprint": "3a35ff553c8b4466", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/dev-server.js"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-4151248efb706477", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in service/pan-tray.cjs:130"}, "properties": {"repobilityId": "d8ae95519078efc9", "scanner": "scanner-primary", "fingerprint": "4151248efb706477", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/pan-tray.cjs"}, "region": {"startLine": 130}}}]}, {"ruleId": "scanner-9c1898805c68743e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/pan-tray.cjs:7"}, "properties": {"repobilityId": "0e1eb14214576719", "scanner": "scanner-primary", "fingerprint": "9c1898805c68743e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/pan-tray.cjs"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-76333ddc3dbc061f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/scripts/build-installer.js:9"}, "properties": {"repobilityId": "4e6cbb5338bf554c", "scanner": "scanner-primary", "fingerprint": "76333ddc3dbc061f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/scripts/build-installer.js"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-aaf02086a34167ab", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/dashboard/build.js:5"}, "properties": {"repobilityId": "442c179f5506dab1", "scanner": "scanner-primary", "fingerprint": "aaf02086a34167ab", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/dashboard/build.js"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-205d6c5d309c07cb", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/dashboard/src/app.html:165"}, "properties": {"repobilityId": "0a089e599c80a06f", "scanner": "scanner-primary", "fingerprint": "205d6c5d309c07cb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/dashboard/src/app.html"}, "region": {"startLine": 165}}}]}, {"ruleId": "scanner-480b61c628d30285", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/dashboard/src/routes/terminal-dev/+page.svelte:263"}, "properties": {"repobilityId": "e954a651ae8b68f5", "scanner": "scanner-primary", "fingerprint": "480b61c628d30285", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/dashboard/src/routes/terminal-dev/+page.svelte"}, "region": {"startLine": 263}}}]}, {"ruleId": "scanner-5035323bcf425602", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in service/dashboard/src/routes/terminal-dev/+page.svelte:266"}, "properties": {"repobilityId": "7608534033e16562", "scanner": "scanner-primary", "fingerprint": "5035323bcf425602", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/dashboard/src/routes/terminal-dev/+page.svelte"}, "region": {"startLine": 266}}}]}, {"ruleId": "scanner-26cbb7d148cf6b97", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/dashboard/src/routes/terminal/+page.svelte:1190"}, "properties": {"repobilityId": "49b1127318dc4fd7", "scanner": "scanner-primary", "fingerprint": "26cbb7d148cf6b97", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/dashboard/src/routes/terminal/+page.svelte"}, "region": {"startLine": 1190}}}]}, {"ruleId": "scanner-8d0a75fe00ff8e34", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in service/dashboard/src/routes/terminal/+page.svelte:1188"}, "properties": {"repobilityId": "d7195f14e2432108", "scanner": "scanner-primary", "fingerprint": "8d0a75fe00ff8e34", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/dashboard/src/routes/terminal/+page.svelte"}, "region": {"startLine": 1188}}}]}, {"ruleId": "scanner-0e607ae0061fc2d4", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in service/dashboard/src/routes/terminal/+page.svelte:564"}, "properties": {"repobilityId": "fa259f44257b540c", "scanner": "scanner-primary", "fingerprint": "0e607ae0061fc2d4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/dashboard/src/routes/terminal/+page.svelte"}, "region": {"startLine": 564}}}]}, {"ruleId": "scanner-4c22c47926271b62", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/installer/pan-installer.cjs:27"}, "properties": {"repobilityId": "1fa631ba11084fdd", "scanner": "scanner-primary", "fingerprint": "4c22c47926271b62", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/installer/pan-installer.cjs"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-056885f38665a81a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/installer/pan-installer.cjs:933"}, "properties": {"repobilityId": "396e9ce120a15752", "scanner": "scanner-primary", "fingerprint": "056885f38665a81a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/installer/pan-installer.cjs"}, "region": {"startLine": 933}}}]}, {"ruleId": "scanner-0c57b784ad9c1f47", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in service/installer/pan-installer.cjs:979"}, "properties": {"repobilityId": "c7bd1872c11b6233", "scanner": "scanner-primary", "fingerprint": "0c57b784ad9c1f47", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/installer/pan-installer.cjs"}, "region": {"startLine": 979}}}]}, {"ruleId": "scanner-ee968fd1ef936839", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/report.html:373"}, "properties": {"repobilityId": "612b1ec3a788bd0d", "scanner": "scanner-primary", "fingerprint": "ee968fd1ef936839", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/report.html"}, "region": {"startLine": 373}}}]}, {"ruleId": "scanner-8fe85227753812e2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/runner.html:112"}, "properties": {"repobilityId": "4adbf76c5194de28", "scanner": "scanner-primary", "fingerprint": "8fe85227753812e2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/runner.html"}, "region": {"startLine": 112}}}]}, {"ruleId": "scanner-7141a6d45273471c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/index.html:1683"}, "properties": {"repobilityId": "73b0bf8440296260", "scanner": "scanner-primary", "fingerprint": "7141a6d45273471c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/index.html"}, "region": {"startLine": 1683}}}]}, {"ruleId": "scanner-8acbf59f86cddf9f", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in service/public/index.html:1559"}, "properties": {"repobilityId": "8266597f22401dd3", "scanner": "scanner-primary", "fingerprint": "8acbf59f86cddf9f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/index.html"}, "region": {"startLine": 1559}}}]}, {"ruleId": "scanner-ad3f3d34d2b7800d", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in service/public/terminal-pre.html:275"}, "properties": {"repobilityId": "54577ecc98f39131", "scanner": "scanner-primary", "fingerprint": "ad3f3d34d2b7800d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/terminal-pre.html"}, "region": {"startLine": 275}}}]}, {"ruleId": "scanner-35329ee82613ad8a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/status.html:113"}, "properties": {"repobilityId": "70af398cb96dffd0", "scanner": "scanner-primary", "fingerprint": "35329ee82613ad8a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/status.html"}, "region": {"startLine": 113}}}]}, {"ruleId": "scanner-f0c58cf442a67bca", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/automation.html:177"}, "properties": {"repobilityId": "e54a319b8b21f0c2", "scanner": "scanner-primary", "fingerprint": "f0c58cf442a67bca", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/v2/automation.html"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-e86962c9e01ff998", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/kronos.html:177"}, "properties": {"repobilityId": "877bb6f1210dc0e0", "scanner": "scanner-primary", "fingerprint": "e86962c9e01ff998", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/v2/kronos.html"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-39916e7966d32c38", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/comms.html:177"}, "properties": {"repobilityId": "72e5117dec024871", "scanner": "scanner-primary", "fingerprint": "39916e7966d32c38", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/v2/comms.html"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-80653727d7343f4d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/atlas-v2.html:177"}, "properties": {"repobilityId": "70960e1fd0739036", "scanner": "scanner-primary", "fingerprint": "80653727d7343f4d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/v2/atlas-v2.html"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-9c900f3996a5c246", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/terminal.html:177"}, "properties": {"repobilityId": "20d0ba87bed31d7f", "scanner": "scanner-primary", "fingerprint": "9c900f3996a5c246", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/v2/terminal.html"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-93ddbbe304d433d2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/chat.html:177"}, "properties": {"repobilityId": "2b9576ab2368884e", "scanner": "scanner-primary", "fingerprint": "93ddbbe304d433d2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/v2/chat.html"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-b2248e9204075fe5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/data.html:177"}, "properties": {"repobilityId": "e35773531bcfed5c", "scanner": "scanner-primary", "fingerprint": "b2248e9204075fe5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/v2/data.html"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-34e3785b234c50e3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/index.html:177"}, "properties": {"repobilityId": "f5cde1e29fe0fa8e", "scanner": "scanner-primary", "fingerprint": "34e3785b234c50e3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/v2/index.html"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-0eebaede1c755cfb", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/terminal-dev.html:177"}, "properties": {"repobilityId": "a77eec1d75745f0a", "scanner": "scanner-primary", "fingerprint": "0eebaede1c755cfb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/v2/terminal-dev.html"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-6145942a14e5bfb6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/call.html:177"}, "properties": {"repobilityId": "0ec70a5d104eefc3", "scanner": "scanner-primary", "fingerprint": "6145942a14e5bfb6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/v2/call.html"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-2d4f47f1a4e2b38b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/timeline.html:177"}, "properties": {"repobilityId": "490f095b51090244", "scanner": "scanner-primary", "fingerprint": "2d4f47f1a4e2b38b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/v2/timeline.html"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-fe614dcbb6f8a0f9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/compose.html:177"}, "properties": {"repobilityId": "7282b627124913b2", "scanner": "scanner-primary", "fingerprint": "fe614dcbb6f8a0f9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/v2/compose.html"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-409ef53f6bc9cdd0", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/projects.html:177"}, "properties": {"repobilityId": "5426b0e95f0fc060", "scanner": "scanner-primary", "fingerprint": "409ef53f6bc9cdd0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/v2/projects.html"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-f240cf020e4e8e2a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/settings.html:177"}, "properties": {"repobilityId": "c60640dcf205af13", "scanner": "scanner-primary", "fingerprint": "f240cf020e4e8e2a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/v2/settings.html"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-a734ec403731c4ac", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/atlas.html:177"}, "properties": {"repobilityId": "f727d8c93e0b5841", "scanner": "scanner-primary", "fingerprint": "a734ec403731c4ac", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/v2/atlas.html"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-56104f20373ef1db", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/sensors.html:177"}, "properties": {"repobilityId": "4a86d5f4c35dbb39", "scanner": "scanner-primary", "fingerprint": "56104f20373ef1db", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/v2/sensors.html"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-fbed27d1b3d4b5e6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/kanban.html:177"}, "properties": {"repobilityId": "27972a4866fb391d", "scanner": "scanner-primary", "fingerprint": "fbed27d1b3d4b5e6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/v2/kanban.html"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-66a7c42a1ddb28b2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/conversations.html:177"}, "properties": {"repobilityId": "37496f4c447d6671", "scanner": "scanner-primary", "fingerprint": "66a7c42a1ddb28b2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/v2/conversations.html"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-d9b5e77f23eed698", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/crucible.html:177"}, "properties": {"repobilityId": "e231eb4299505a6b", "scanner": "scanner-primary", "fingerprint": "d9b5e77f23eed698", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/v2/crucible.html"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-5cea0074b3b76053", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/_app/immutable/nodes/26.BpR5ztNG.js:1"}, "properties": {"repobilityId": "ea9435d414bea28b", "scanner": "scanner-primary", "fingerprint": "5cea0074b3b76053", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/v2/_app/immutable/nodes/26.BpR5ztNG.js"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1ecd265c1112bbde", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in service/public/v2/_app/immutable/nodes/26.BpR5ztNG.js:2"}, "properties": {"repobilityId": "7f68ee8283442f23", "scanner": "scanner-primary", "fingerprint": "1ecd265c1112bbde", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/v2/_app/immutable/nodes/26.BpR5ztNG.js"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-9e29ac9645c8e1db", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:9"}, "properties": {"repobilityId": "277aa9b4c118b120", "scanner": "scanner-primary", "fingerprint": "9e29ac9645c8e1db", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/v2/_app/immutable/nodes/25.25NA2FSH.js"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-a5c87443fb81236b", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:7"}, "properties": {"repobilityId": "8b750844f16a13cd", "scanner": "scanner-primary", "fingerprint": "a5c87443fb81236b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/v2/_app/immutable/nodes/25.25NA2FSH.js"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-ea4dde6bd5cdda16", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:7"}, "properties": {"repobilityId": "c021b33d93c1f6ae", "scanner": "scanner-primary", "fingerprint": "ea4dde6bd5cdda16", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/v2/_app/immutable/nodes/25.25NA2FSH.js"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-a175ebfd429ac0bc", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/v2/atlas/phone.html:177"}, "properties": {"repobilityId": "07a71e4be2da9103", "scanner": "scanner-primary", "fingerprint": "a175ebfd429ac0bc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/v2/atlas/phone.html"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-d529f3cfed138798", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/docs/viewer.html:320"}, "properties": {"repobilityId": "ba93f026e5e16824", "scanner": "scanner-primary", "fingerprint": "d529f3cfed138798", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/docs/viewer.html"}, "region": {"startLine": 320}}}]}, {"ruleId": "scanner-73e791ec9fb52439", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/public/mobile/index.html:477"}, "properties": {"repobilityId": "5676b941ccf1ed00", "scanner": "scanner-primary", "fingerprint": "73e791ec9fb52439", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/mobile/index.html"}, "region": {"startLine": 477}}}]}, {"ruleId": "scanner-9fc828edfef616ea", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in service/public/mobile/index.html:457"}, "properties": {"repobilityId": "e022948ca4305e7c", "scanner": "scanner-primary", "fingerprint": "9fc828edfef616ea", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/public/mobile/index.html"}, "region": {"startLine": 457}}}]}, {"ruleId": "scanner-0629a1ac29722214", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/cloudflare-tunnel.js:10"}, "properties": {"repobilityId": "bd47be695846590d", "scanner": "scanner-primary", "fingerprint": "0629a1ac29722214", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/cloudflare-tunnel.js"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-eab9984c0cbc5a93", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/wezterm.js:5"}, "properties": {"repobilityId": "06a28cacb41cb666", "scanner": "scanner-primary", "fingerprint": "eab9984c0cbc5a93", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/wezterm.js"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-4ec1ac0bbbd6b3c8", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/project-runner.js:5"}, "properties": {"repobilityId": "c29a10cc754ca582", "scanner": "scanner-primary", "fingerprint": "4ec1ac0bbbd6b3c8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/project-runner.js"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-5fd4ca10d4501b44", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/session-summary.js:20"}, "properties": {"repobilityId": "526cd4b600b6db1b", "scanner": "scanner-primary", "fingerprint": "5fd4ca10d4501b44", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/session-summary.js"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-7d151b5e88a9dd21", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/forge-dashboard.js:22"}, "properties": {"repobilityId": "cf1f61bb3d078cc0", "scanner": "scanner-primary", "fingerprint": "7d151b5e88a9dd21", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/forge-dashboard.js"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-dce203cfbf75d7ff", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/terminal.js:11"}, "properties": {"repobilityId": "1115de80b44fcdb1", "scanner": "scanner-primary", "fingerprint": "dce203cfbf75d7ff", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/terminal.js"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-bf032cc8a9250e7d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/webcam-watcher.js:11"}, "properties": {"repobilityId": "81202326ae0d52fe", "scanner": "scanner-primary", "fingerprint": "bf032cc8a9250e7d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/webcam-watcher.js"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-9ff5111ff767c32a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/dream.js:14"}, "properties": {"repobilityId": "c7f58661fbca55ef", "scanner": "scanner-primary", "fingerprint": "9ff5111ff767c32a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/dream.js"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-b9e0f746c24549c6", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/screen-watcher.js:9"}, "properties": {"repobilityId": "f185a907eb266a39", "scanner": "scanner-primary", "fingerprint": "b9e0f746c24549c6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/screen-watcher.js"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-8127c4486d5f49e2", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/discovery.js:13"}, "properties": {"repobilityId": "a389660ee8a86138", "scanner": "scanner-primary", "fingerprint": "8127c4486d5f49e2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/discovery.js"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-c03a36f0a3107dc3", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/scout.js:12"}, "properties": {"repobilityId": "fcd1c8b8186038c6", "scanner": "scanner-primary", "fingerprint": "c03a36f0a3107dc3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/scout.js"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-c7b89ed7c5f552b1", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/llm-adapter-gemini.js:11"}, "properties": {"repobilityId": "4fecc7739d2fc271", "scanner": "scanner-primary", "fingerprint": "c7b89ed7c5f552b1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/llm-adapter-gemini.js"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-c250873f4cad02e7", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/dashboard-watchdog.js:10"}, "properties": {"repobilityId": "5982021630821839", "scanner": "scanner-primary", "fingerprint": "c250873f4cad02e7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/dashboard-watchdog.js"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-5a61cb144ff4423f", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in service/src/activity-tracker.js:69"}, "properties": {"repobilityId": "89257dc76302e40b", "scanner": "scanner-primary", "fingerprint": "5a61cb144ff4423f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/activity-tracker.js"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-215506205e000235", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/activity-tracker.js:7"}, "properties": {"repobilityId": "000b74b819d6d086", "scanner": "scanner-primary", "fingerprint": "215506205e000235", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/activity-tracker.js"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-80fd6191997b7db0", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in service/src/server.js:738"}, "properties": {"repobilityId": "b53d79a472d4d589", "scanner": "scanner-primary", "fingerprint": "80fd6191997b7db0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/server.js"}, "region": {"startLine": 738}}}]}, {"ruleId": "scanner-c013e0e047de7e32", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/server.js:82"}, "properties": {"repobilityId": "11dc327a367785ce", "scanner": "scanner-primary", "fingerprint": "c013e0e047de7e32", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/server.js"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-e13594702a729d9d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in service/src/server.js:3192"}, "properties": {"repobilityId": "3bd58cf56a5e769a", "scanner": "scanner-primary", "fingerprint": "e13594702a729d9d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/server.js"}, "region": {"startLine": 3192}}}]}, {"ruleId": "scanner-972c8a021c64c070", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in service/src/server.js:2977"}, "properties": {"repobilityId": "67c87127d9d951f4", "scanner": "scanner-primary", "fingerprint": "972c8a021c64c070", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/server.js"}, "region": {"startLine": 2977}}}]}, {"ruleId": "scanner-202aad976f4fea32", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/remote-screen-watcher.js:8"}, "properties": {"repobilityId": "4d28fe6aac9977fa", "scanner": "scanner-primary", "fingerprint": "202aad976f4fea32", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/remote-screen-watcher.js"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-d48cce571849f825", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/platform.js:10"}, "properties": {"repobilityId": "7ad58bfcc547a576", "scanner": "scanner-primary", "fingerprint": "d48cce571849f825", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/platform.js"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-a68cd808cdecb532", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/super-carrier.js:17"}, "properties": {"repobilityId": "5312b4a3bab4a563", "scanner": "scanner-primary", "fingerprint": "a68cd808cdecb532", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/super-carrier.js"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-f7e8a0f9a6ad6e5a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/steward.js:33"}, "properties": {"repobilityId": "6d78b7b732decd2b", "scanner": "scanner-primary", "fingerprint": "f7e8a0f9a6ad6e5a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/steward.js"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-7d46e111a55664df", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/github-monitor.js:7"}, "properties": {"repobilityId": "5a1928fb93c40873", "scanner": "scanner-primary", "fingerprint": "7d46e111a55664df", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/github-monitor.js"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-a00e751c54bf7a47", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/carrier.js:26"}, "properties": {"repobilityId": "45955cfe4c72e4b7", "scanner": "scanner-primary", "fingerprint": "a00e751c54bf7a47", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/carrier.js"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-f618723345150ed0", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in service/src/carrier.js:1802"}, "properties": {"repobilityId": "2596c5be8742c5fb", "scanner": "scanner-primary", "fingerprint": "f618723345150ed0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/carrier.js"}, "region": {"startLine": 1802}}}]}, {"ruleId": "scanner-96d19eb45e05fe32", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/autodev.js:10"}, "properties": {"repobilityId": "d9c1598ee7a9ea07", "scanner": "scanner-primary", "fingerprint": "96d19eb45e05fe32", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/autodev.js"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-566d0c84d8718b6b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/setup-plugins.js:11"}, "properties": {"repobilityId": "6db4eac59f719352", "scanner": "scanner-primary", "fingerprint": "566d0c84d8718b6b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/setup-plugins.js"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-481097228f529c5b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/router.js:1"}, "properties": {"repobilityId": "90232c57bbf3ce8e", "scanner": "scanner-primary", "fingerprint": "481097228f529c5b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/router.js"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-06eef14fcb3a944d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/screen-recorder.js:5"}, "properties": {"repobilityId": "a6195ef2ed12c38e", "scanner": "scanner-primary", "fingerprint": "06eef14fcb3a944d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/screen-recorder.js"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-be6e2875d725f90f", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in service/src/whisper-server.py:199"}, "properties": {"repobilityId": "fe36a594edb48ead", "scanner": "scanner-primary", "fingerprint": "be6e2875d725f90f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/whisper-server.py"}, "region": {"startLine": 199}}}]}, {"ruleId": "scanner-020f72acc5bd671a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/tts.js:16"}, "properties": {"repobilityId": "9ff86a74228b0ea2", "scanner": "scanner-primary", "fingerprint": "020f72acc5bd671a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/tts.js"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-b7b8ec5a8a25cb12", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/playwright-bridge.js:9"}, "properties": {"repobilityId": "99a119fb0422a054", "scanner": "scanner-primary", "fingerprint": "b7b8ec5a8a25cb12", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/playwright-bridge.js"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-c2651d600ae1b1e8", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/cli/launch.js:14"}, "properties": {"repobilityId": "c93452cb4fabe5a5", "scanner": "scanner-primary", "fingerprint": "c2651d600ae1b1e8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/cli/launch.js"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-1a27b088e0c0848c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/routes/dashboard.js:14"}, "properties": {"repobilityId": "42acb9ef052bd895", "scanner": "scanner-primary", "fingerprint": "1a27b088e0c0848c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/routes/dashboard.js"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-cc66c5ae828e2d21", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/routes/client.js:30"}, "properties": {"repobilityId": "e147f925fa2847c2", "scanner": "scanner-primary", "fingerprint": "cc66c5ae828e2d21", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/routes/client.js"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-98dd5c671295daa2", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/routes/api.js:9"}, "properties": {"repobilityId": "910a1f0440768b5d", "scanner": "scanner-primary", "fingerprint": "98dd5c671295daa2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/routes/api.js"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-9dc993b2b5479d29", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/memory/ollama-boot.js:7"}, "properties": {"repobilityId": "44ab55c5aeb18923", "scanner": "scanner-primary", "fingerprint": "9dc993b2b5479d29", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/memory/ollama-boot.js"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-25b3af4759a0f62c", "level": "error", "message": {"text": "Possible secret in service/src/hooks/skill-learner.js"}, "properties": {"repobilityId": "b13f46e7af9386ae", "scanner": "scanner-primary", "fingerprint": "25b3af4759a0f62c", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/hooks/skill-learner.js"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-0324cf85b4802336", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in service/src/perf/probes.js:14"}, "properties": {"repobilityId": "c035832c4f078e6d", "scanner": "scanner-primary", "fingerprint": "0324cf85b4802336", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/src/perf/probes.js"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-c18dc43d5756add6", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in pan-client/pan-client.js:1108"}, "properties": {"repobilityId": "e540e3f2e5324a18", "scanner": "scanner-primary", "fingerprint": "c18dc43d5756add6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pan-client/pan-client.js"}, "region": {"startLine": 1108}}}]}, {"ruleId": "scanner-63dcea2a1428143b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in pan-client/pan-client.js:17"}, "properties": {"repobilityId": "9b493cb931de7053", "scanner": "scanner-primary", "fingerprint": "63dcea2a1428143b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pan-client/pan-client.js"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-561b85c2bf86e729", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "10076ac5c8d74682", "scanner": "scanner-primary", "fingerprint": "561b85c2bf86e729", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-installer.yml"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-561b85c2bf86e729", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e3c2f659874160f5", "scanner": "scanner-primary", "fingerprint": "561b85c2bf86e729", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-installer.yml"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-561b85c2bf86e729", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "68bff092029a2c07", "scanner": "scanner-primary", "fingerprint": "561b85c2bf86e729", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-installer.yml"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-42ac69d8719019f4", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "ad802d14a416cac6", "scanner": "scanner-primary", "fingerprint": "42ac69d8719019f4", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-installer.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-93ad662268a560df", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "df99ec3ce021023d", "scanner": "scanner-primary", "fingerprint": "93ad662268a560df", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/dashboard/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a38056446a04e89a", "level": "note", "message": {"text": "Very large file: service/src/terminal.js (2273 lines)"}, "properties": {"repobilityId": "ee9577a5dfe0f875", "scanner": "scanner-primary", "fingerprint": "a38056446a04e89a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b70146ca07c8db9c", "level": "note", "message": {"text": "Very large file: service/src/benchmark.js (1783 lines)"}, "properties": {"repobilityId": "1f9ce4bf31f2226e", "scanner": "scanner-primary", "fingerprint": "b70146ca07c8db9c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ca48bae2271abeff", "level": "note", "message": {"text": "Very large file: service/src/server.js (6525 lines)"}, "properties": {"repobilityId": "971b2fe48629b5ec", "scanner": "scanner-primary", "fingerprint": "ca48bae2271abeff", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9ab0f651307ab257", "level": "note", "message": {"text": "Very large file: service/src/steward.js (1797 lines)"}, "properties": {"repobilityId": "276e487044295470", "scanner": "scanner-primary", "fingerprint": "9ab0f651307ab257", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6ad669c649b26411", "level": "note", "message": {"text": "Very large file: service/src/carrier.js (2218 lines)"}, "properties": {"repobilityId": "e45b0d7d0f1a45cf", "scanner": "scanner-primary", "fingerprint": "6ad669c649b26411", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-552a34998529c95d", "level": "note", "message": {"text": "Very large file: service/src/router.js (1752 lines)"}, "properties": {"repobilityId": "eaca0ad41de3af38", "scanner": "scanner-primary", "fingerprint": "552a34998529c95d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-02fcd658b89b0c25", "level": "note", "message": {"text": "Very large file: service/src/routes/tests.js (2668 lines)"}, "properties": {"repobilityId": "4a9e7ca87eb1f7eb", "scanner": "scanner-primary", "fingerprint": "02fcd658b89b0c25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-45179349c41875a6", "level": "note", "message": {"text": "Very large file: service/src/routes/dashboard.js (2212 lines)"}, "properties": {"repobilityId": "2953049251851a7a", "scanner": "scanner-primary", "fingerprint": "45179349c41875a6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-60e9451baf6270d9", "level": "note", "message": {"text": "Very large file: service/src/routes/api.js (1595 lines)"}, "properties": {"repobilityId": "6f396bae7fafa051", "scanner": "scanner-primary", "fingerprint": "60e9451baf6270d9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4d074753933677fe", "level": "note", "message": {"text": "Very large file: service/src/intuition/index.js (1887 lines)"}, "properties": {"repobilityId": "3f780a5b78cdb8a7", "scanner": "scanner-primary", "fingerprint": "4d074753933677fe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-38b550dbcc1062b3", "level": "note", "message": {"text": "Very large file: pan-client/pan-client.js (1652 lines)"}, "properties": {"repobilityId": "ac12625e898973bb", "scanner": "scanner-primary", "fingerprint": "38b550dbcc1062b3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "689be8f2e58c8702", "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": "98bf72c117f15325", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "73ce1cf2fcdfef31", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "474db56c6a8eb380", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "e6f5c6aaefd888da", "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": "bdb56f81ff48c8df", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-cc55229a7a3c078d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .mcp.json"}, "properties": {"repobilityId": "51942fb3d5b8b5b4", "scanner": "scanner-primary", "fingerprint": "cc55229a7a3c078d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "mcp_config"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".mcp.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a240419482f5dce3", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: service/.mcp.json"}, "properties": {"repobilityId": "abf30e1a560259c0", "scanner": "scanner-primary", "fingerprint": "a240419482f5dce3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "mcp_config"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "service/.mcp.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3cd66090ead82232", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 hub/test.js:116"}, "properties": {"repobilityId": "7433ebc833237745", "scanner": "scanner-primary", "fingerprint": "3cd66090ead82232", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8aa4729b1e1755d1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/seed-tasks.js:8"}, "properties": {"repobilityId": "09646ef7ef181c94", "scanner": "scanner-primary", "fingerprint": "8aa4729b1e1755d1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-22e5f7fb04b3e23b", "level": "none", "message": {"text": "Commented-code block (6 lines) in service/run-tests.cjs:6"}, "properties": {"repobilityId": "d474e02ac2780330", "scanner": "scanner-primary", "fingerprint": "22e5f7fb04b3e23b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e3d32ad8c61d142", "level": "none", "message": {"text": "Commented-code block (6 lines) in service/pan.js:58"}, "properties": {"repobilityId": "3150e93727d23e7b", "scanner": "scanner-primary", "fingerprint": "2e3d32ad8c61d142", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7111537b9fd7a751", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/test-memory.js:68"}, "properties": {"repobilityId": "1c82358751b94809", "scanner": "scanner-primary", "fingerprint": "7111537b9fd7a751", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-02d637dda00fb064", "level": "note", "message": {"text": "Legacy-named symbol `restoreOld` in service/dashboard/build.js:45"}, "properties": {"repobilityId": "058c6262b11b85c0", "scanner": "scanner-primary", "fingerprint": "02d637dda00fb064", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ecc4109c98594c06", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/dashboard/src/lib/api.js:5"}, "properties": {"repobilityId": "85299a01a3071198", "scanner": "scanner-primary", "fingerprint": "ecc4109c98594c06", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-06fac9fbb30d742d", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/dashboard/src/lib/stores/chat.svelte.js:6"}, "properties": {"repobilityId": "fb824d92fd7e9bea", "scanner": "scanner-primary", "fingerprint": "06fac9fbb30d742d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57bbd9ffd4675ced", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/dashboard/src/lib/stores/devices.svelte.js:66"}, "properties": {"repobilityId": "22ae97aa487254cc", "scanner": "scanner-primary", "fingerprint": "57bbd9ffd4675ced", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9adde87fd045b0f2", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/dashboard/src/lib/stores/voice.svelte.js:5"}, "properties": {"repobilityId": "04c9506a128a356e", "scanner": "scanner-primary", "fingerprint": "9adde87fd045b0f2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-956ed5a495dd0409", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/dashboard/src/lib/stores/terminal.svelte.js:9"}, "properties": {"repobilityId": "d7dc8d46e5cd5872", "scanner": "scanner-primary", "fingerprint": "956ed5a495dd0409", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b6818fe32ed60cdc", "level": "none", "message": {"text": "Commented-code block (9 lines) in service/dashboard/src/lib/stores/perf.svelte.js:3"}, "properties": {"repobilityId": "1aa20fa44d5384a9", "scanner": "scanner-primary", "fingerprint": "b6818fe32ed60cdc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2197f246d386e8bf", "level": "none", "message": {"text": "Commented-code block (8 lines) in service/dashboard/src/lib/stores/index.js:9"}, "properties": {"repobilityId": "f174a586ad419953", "scanner": "scanner-primary", "fingerprint": "2197f246d386e8bf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e0a3344dc4939e2e", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/dashboard/src/lib/stores/atlas.svelte.js:1"}, "properties": {"repobilityId": "090af42dbf87cac1", "scanner": "scanner-primary", "fingerprint": "e0a3344dc4939e2e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c6f590bb9980af5b", "level": "none", "message": {"text": "Commented-code block (8 lines) in service/installer/pan-installer.cjs:154"}, "properties": {"repobilityId": "a3fdd601559287c5", "scanner": "scanner-primary", "fingerprint": "c6f590bb9980af5b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-efa59230aa105f8b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/9.BLwRZqA_.js:1"}, "properties": {"repobilityId": "35f103581f797a13", "scanner": "scanner-primary", "fingerprint": "efa59230aa105f8b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a7b071846183eada", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/14.ChhyqRxG.js:1"}, "properties": {"repobilityId": "aa86626c1536e0af", "scanner": "scanner-primary", "fingerprint": "a7b071846183eada", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-589c838fa561695b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/13.BgBCn-6I.js:1"}, "properties": {"repobilityId": "f358d4165e17f7b4", "scanner": "scanner-primary", "fingerprint": "589c838fa561695b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7ed243837a14d713", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/26.BpR5ztNG.js:14"}, "properties": {"repobilityId": "54807e0a962d7aa5", "scanner": "scanner-primary", "fingerprint": "7ed243837a14d713", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3021858c56cf119b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1"}, "properties": {"repobilityId": "84b6a949fe298fbb", "scanner": "scanner-primary", "fingerprint": "3021858c56cf119b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-95296484743d0e79", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/18.TuDxOq-a.js:1"}, "properties": {"repobilityId": "b026d82ad865ec0b", "scanner": "scanner-primary", "fingerprint": "95296484743d0e79", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cc52ac4ba7a66722", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/24.CdENhAy3.js:2"}, "properties": {"repobilityId": "812421ecf7abcd42", "scanner": "scanner-primary", "fingerprint": "cc52ac4ba7a66722", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c779083cc4288628", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/21.wkXNyAUX.js:1"}, "properties": {"repobilityId": "3e91a795b59cd9ea", "scanner": "scanner-primary", "fingerprint": "c779083cc4288628", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c8bb1023b979ceb9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/16.Cugh_AJ9.js:1"}, "properties": {"repobilityId": "cfa1839d723f3ed0", "scanner": "scanner-primary", "fingerprint": "c8bb1023b979ceb9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2956f7744df85824", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/15.DN-UP6g2.js:1"}, "properties": {"repobilityId": "367c2567949eed83", "scanner": "scanner-primary", "fingerprint": "2956f7744df85824", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-61bd82c2360405ad", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/11.BtOMsgph.js:1"}, "properties": {"repobilityId": "1af07b475a1b085c", "scanner": "scanner-primary", "fingerprint": "61bd82c2360405ad", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-52c44654c2a8a859", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1"}, "properties": {"repobilityId": "c6a19f93384f11af", "scanner": "scanner-primary", "fingerprint": "52c44654c2a8a859", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4ac862ced852f757", "level": "none", "message": {"text": "Commented-code block (6 lines) in service/src/dashboard-vision-verifier.js:3"}, "properties": {"repobilityId": "473e0e53e747b2e5", "scanner": "scanner-primary", "fingerprint": "4ac862ced852f757", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57b00c6a02527920", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/smart-router.js:16"}, "properties": {"repobilityId": "c597c29d94e544f8", "scanner": "scanner-primary", "fingerprint": "57b00c6a02527920", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-161dabb40d3692c4", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/session-summary.js:3"}, "properties": {"repobilityId": "5934ccf104ae8aca", "scanner": "scanner-primary", "fingerprint": "161dabb40d3692c4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bea50e3e3d466abe", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/email.js:161"}, "properties": {"repobilityId": "6dc22fcb45740612", "scanner": "scanner-primary", "fingerprint": "bea50e3e3d466abe", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-53f28c22d2f05d4b", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/forge-dashboard.js:3"}, "properties": {"repobilityId": "f4245ccd2744d50a", "scanner": "scanner-primary", "fingerprint": "53f28c22d2f05d4b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e0c348c0c754e207", "level": "none", "message": {"text": "Commented-code block (9 lines) in service/src/face-id.js:3"}, "properties": {"repobilityId": "6e726f67d90ea83b", "scanner": "scanner-primary", "fingerprint": "e0c348c0c754e207", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a2cc9062c1aa9c73", "level": "none", "message": {"text": "Commented-code block (6 lines) in service/src/guardian.js:6"}, "properties": {"repobilityId": "5eae1435c4067f43", "scanner": "scanner-primary", "fingerprint": "a2cc9062c1aa9c73", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b33a42a41228b02d", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/trust-ladder.js:8"}, "properties": {"repobilityId": "59cbc8d27eb1a008", "scanner": "scanner-primary", "fingerprint": "b33a42a41228b02d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-821c5e7279d27ef6", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/terminal.js:71"}, "properties": {"repobilityId": "eeb90c2b32eaf84d", "scanner": "scanner-primary", "fingerprint": "821c5e7279d27ef6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7f37f0063ffcecfa", "level": "none", "message": {"text": "Commented-code block (13 lines) in service/src/benchmark.js:3"}, "properties": {"repobilityId": "ad5fa1c7dbdfed80", "scanner": "scanner-primary", "fingerprint": "7f37f0063ffcecfa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f247e3a2c19a2bee", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/webcam-watcher.js:3"}, "properties": {"repobilityId": "c8ce6cdf8512bd6a", "scanner": "scanner-primary", "fingerprint": "f247e3a2c19a2bee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-84da7526e2c43faa", "level": "none", "message": {"text": "Commented-code block (8 lines) in service/src/speak-router.js:5"}, "properties": {"repobilityId": "5cdb645304e957bf", "scanner": "scanner-primary", "fingerprint": "84da7526e2c43faa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f93dc516f285f7d", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/tts-prosody.js:12"}, "properties": {"repobilityId": "39487f7013f3c52f", "scanner": "scanner-primary", "fingerprint": "4f93dc516f285f7d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ee608f1f14e721f7", "level": "note", "message": {"text": "Legacy-named symbol `_settings_old` in service/src/db.js:210"}, "properties": {"repobilityId": "f7c6694e9e5c1523", "scanner": "scanner-primary", "fingerprint": "ee608f1f14e721f7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9c40d25afb073808", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/db.js:165"}, "properties": {"repobilityId": "ad78c323d568e0d0", "scanner": "scanner-primary", "fingerprint": "9c40d25afb073808", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f0d114c7a1efaf2", "level": "none", "message": {"text": "Commented-code block (6 lines) in service/src/memory-search.js:182"}, "properties": {"repobilityId": "763ff2887c7a0ee2", "scanner": "scanner-primary", "fingerprint": "2f0d114c7a1efaf2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b14e8bb6fabe07f", "level": "none", "message": {"text": "Commented-code block (6 lines) in service/src/screen-watcher.js:29"}, "properties": {"repobilityId": "e324112e3e25caf8", "scanner": "scanner-primary", "fingerprint": "7b14e8bb6fabe07f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ccb69c8a2981144d", "level": "none", "message": {"text": "Commented-code block (6 lines) in service/src/carrier-observability.js:3"}, "properties": {"repobilityId": "1a81366ab27874cd", "scanner": "scanner-primary", "fingerprint": "ccb69c8a2981144d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0802a38833b79a2d", "level": "none", "message": {"text": "Commented-code block (7 lines) in service/src/pan-notify.js:7"}, "properties": {"repobilityId": "b2e7203c3c54cf13", "scanner": "scanner-primary", "fingerprint": "0802a38833b79a2d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9c09295bd5eedaa1", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/scout.js:18"}, "properties": {"repobilityId": "cd59da557f88a38d", "scanner": "scanner-primary", "fingerprint": "9c09295bd5eedaa1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c14d2c6f7ed76de4", "level": "none", "message": {"text": "Commented-code block (8 lines) in service/src/modules.js:11"}, "properties": {"repobilityId": "8af3726ced1b7839", "scanner": "scanner-primary", "fingerprint": "c14d2c6f7ed76de4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-08ca872ef88bb513", "level": "none", "message": {"text": "Commented-code block (6 lines) in service/src/llm-adapter-gemini.js:4"}, "properties": {"repobilityId": "d20c3f685bd2d5aa", "scanner": "scanner-primary", "fingerprint": "08ca872ef88bb513", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4af5403358f5fb17", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/dashboard-render-health.js:3"}, "properties": {"repobilityId": "8e93d7d775e82f1f", "scanner": "scanner-primary", "fingerprint": "4af5403358f5fb17", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d149627a3e21494f", "level": "none", "message": {"text": "Commented-code block (9 lines) in service/src/transcript-watcher.js:33"}, "properties": {"repobilityId": "6e90d60c7b4ea932", "scanner": "scanner-primary", "fingerprint": "d149627a3e21494f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-49b985aa041a4004", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/org-db.js:9"}, "properties": {"repobilityId": "be8af7141b262eca", "scanner": "scanner-primary", "fingerprint": "49b985aa041a4004", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-abed9e71d88f0d81", "level": "none", "message": {"text": "Commented-code block (11 lines) in service/src/memory-search-worker.js:7"}, "properties": {"repobilityId": "f3f3f35343b51f0a", "scanner": "scanner-primary", "fingerprint": "abed9e71d88f0d81", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-94f733340fa7e0a7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/issue-checker.js:42"}, "properties": {"repobilityId": "5ed02746a3d440a9", "scanner": "scanner-primary", "fingerprint": "94f733340fa7e0a7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aa8ffec5bba8b4e7", "level": "none", "message": {"text": "Commented-code block (7 lines) in service/src/client-manager.js:111"}, "properties": {"repobilityId": "9925a91eabc635a0", "scanner": "scanner-primary", "fingerprint": "aa8ffec5bba8b4e7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-443ba6c0e18ed407", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/capture-consent.js:8"}, "properties": {"repobilityId": "2f73fda688fef7dd", "scanner": "scanner-primary", "fingerprint": "443ba6c0e18ed407", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f23b3215d9f931d", "level": "none", "message": {"text": "Commented-code block (6 lines) in service/src/llm.js:146"}, "properties": {"repobilityId": "8891bfc6c3dd0a59", "scanner": "scanner-primary", "fingerprint": "5f23b3215d9f931d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f196c8d030626ecb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/llm.js:639"}, "properties": {"repobilityId": "a45f3d869f14ba96", "scanner": "scanner-primary", "fingerprint": "f196c8d030626ecb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-902dfffbc8262c02", "level": "none", "message": {"text": "Commented-code block (7 lines) in service/src/panel-broadcaster.js:3"}, "properties": {"repobilityId": "2201ca880bb7a988", "scanner": "scanner-primary", "fingerprint": "902dfffbc8262c02", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-255d8cf9663b185d", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/privacy.js:110"}, "properties": {"repobilityId": "6e33e1bf7dc93442", "scanner": "scanner-primary", "fingerprint": "255d8cf9663b185d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91a651f5620fef86", "level": "none", "message": {"text": "Commented-code block (9 lines) in service/src/mic-router.js:5"}, "properties": {"repobilityId": "2658505cf87ce8e5", "scanner": "scanner-primary", "fingerprint": "91a651f5620fef86", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c219c5550d234292", "level": "none", "message": {"text": "Commented-code block (6 lines) in service/src/server.js:10"}, "properties": {"repobilityId": "12e0e0a25fa4a160", "scanner": "scanner-primary", "fingerprint": "c219c5550d234292", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9a9f73aff9302f04", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/server.js:325"}, "properties": {"repobilityId": "42786603600bc7d2", "scanner": "scanner-primary", "fingerprint": "9a9f73aff9302f04", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b4d990e8cb805726", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/super-carrier.js:147"}, "properties": {"repobilityId": "2f7429e5da4c4557", "scanner": "scanner-primary", "fingerprint": "b4d990e8cb805726", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1d5b921b45730ee1", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/conv-state-watcher.js:3"}, "properties": {"repobilityId": "e71958c5826ae202", "scanner": "scanner-primary", "fingerprint": "1d5b921b45730ee1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3099857b6fd3cdb1", "level": "none", "message": {"text": "Commented-code block (7 lines) in service/src/steward.js:7"}, "properties": {"repobilityId": "aff5fa91608d8caf", "scanner": "scanner-primary", "fingerprint": "3099857b6fd3cdb1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-69559577057d2a42", "level": "none", "message": {"text": "Commented-code block (8 lines) in service/src/carrier.js:16"}, "properties": {"repobilityId": "58ff8ac66dbdf8a6", "scanner": "scanner-primary", "fingerprint": "69559577057d2a42", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-21322d3daa48d4fd", "level": "none", "message": {"text": "Commented-code block (7 lines) in service/src/pty-transcript.js:7"}, "properties": {"repobilityId": "969402c6361742cd", "scanner": "scanner-primary", "fingerprint": "21322d3daa48d4fd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d3619fd412659de", "level": "none", "message": {"text": "Commented-code block (7 lines) in service/src/router.js:49"}, "properties": {"repobilityId": "bada822b8a9943c3", "scanner": "scanner-primary", "fingerprint": "0d3619fd412659de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-92196328c99d981f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/router.js:1008"}, "properties": {"repobilityId": "4242c8592fd45c97", "scanner": "scanner-primary", "fingerprint": "92196328c99d981f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-389c2e7032a6708e", "level": "none", "message": {"text": "Commented-code block (6 lines) in service/src/llm-adapter-claude.js:4"}, "properties": {"repobilityId": "d9e45e550069f266", "scanner": "scanner-primary", "fingerprint": "389c2e7032a6708e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5e514bd2121c55b0", "level": "none", "message": {"text": "Commented-code block (6 lines) in service/src/llm-fallback.js:3"}, "properties": {"repobilityId": "24e00cc8ac2a51f6", "scanner": "scanner-primary", "fingerprint": "5e514bd2121c55b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0bbbe72cc9e4f701", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 service/src/train-voice.py:227"}, "properties": {"repobilityId": "b8cc534accbf5f4d", "scanner": "scanner-primary", "fingerprint": "0bbbe72cc9e4f701", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-866bba95c8237290", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/db-registry.js:3"}, "properties": {"repobilityId": "cd79ff883be89622", "scanner": "scanner-primary", "fingerprint": "866bba95c8237290", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1202708d7852a470", "level": "none", "message": {"text": "Commented-code block (8 lines) in service/src/profiles.js:3"}, "properties": {"repobilityId": "3783b987c9d3296a", "scanner": "scanner-primary", "fingerprint": "1202708d7852a470", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-27c7334e58488e89", "level": "none", "message": {"text": "Commented-code block (6 lines) in service/src/claude-control.js:9"}, "properties": {"repobilityId": "f212a0729f85e8c8", "scanner": "scanner-primary", "fingerprint": "27c7334e58488e89", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef876728d237d71e", "level": "none", "message": {"text": "Commented-code block (6 lines) in service/src/jobs.js:3"}, "properties": {"repobilityId": "5fc4ed125d7dbdc1", "scanner": "scanner-primary", "fingerprint": "ef876728d237d71e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f3155f8e2a801e80", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/mode.js:5"}, "properties": {"repobilityId": "0086384ae3aafc3d", "scanner": "scanner-primary", "fingerprint": "f3155f8e2a801e80", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-35f34cc3e1134dd8", "level": "none", "message": {"text": "Commented-code block (7 lines) in service/src/smart-steward.js:9"}, "properties": {"repobilityId": "3e849bfb3c6906ad", "scanner": "scanner-primary", "fingerprint": "35f34cc3e1134dd8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-afc3ccfc7fd44834", "level": "none", "message": {"text": "Commented-code block (8 lines) in service/src/face-id-worker.js:3"}, "properties": {"repobilityId": "b028963314fc0a46", "scanner": "scanner-primary", "fingerprint": "afc3ccfc7fd44834", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff0449455fb2ccca", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/tts.js:3"}, "properties": {"repobilityId": "0687eaede92985cd", "scanner": "scanner-primary", "fingerprint": "ff0449455fb2ccca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f2e4f47b85fae82", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/middleware/org-context.js:3"}, "properties": {"repobilityId": "783167cbeb974dfa", "scanner": "scanner-primary", "fingerprint": "4f2e4f47b85fae82", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7e19b5bacc81cd5e", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/mcp/pan-tools.js:3"}, "properties": {"repobilityId": "f550be451f26c4c3", "scanner": "scanner-primary", "fingerprint": "7e19b5bacc81cd5e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a1083a40caf55cb3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/mcp/pan-tools.js:22"}, "properties": {"repobilityId": "d29d5fd82eab2dd1", "scanner": "scanner-primary", "fingerprint": "a1083a40caf55cb3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-217273cac548069d", "level": "none", "message": {"text": "Commented-code block (6 lines) in service/src/mcp/quality-log-tools.js:1"}, "properties": {"repobilityId": "b850d2a65a17882e", "scanner": "scanner-primary", "fingerprint": "217273cac548069d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6f484e0ceea9fc06", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/mcp/quality-log-tools.js:17"}, "properties": {"repobilityId": "397c496df500ea42", "scanner": "scanner-primary", "fingerprint": "6f484e0ceea9fc06", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b9c1e2f4334cd506", "level": "none", "message": {"text": "Commented-code block (6 lines) in service/src/scripts/add-events-org-index.mjs:3"}, "properties": {"repobilityId": "5c9e223b8a742b7e", "scanner": "scanner-primary", "fingerprint": "b9c1e2f4334cd506", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-65af51a77e36a3dd", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/cli/launch.js:3"}, "properties": {"repobilityId": "3e24e46b9ef8e71e", "scanner": "scanner-primary", "fingerprint": "65af51a77e36a3dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dd93bcfc4d72902b", "level": "none", "message": {"text": "Commented-code block (9 lines) in service/src/schema/ownership.js:47"}, "properties": {"repobilityId": "81a156741b304076", "scanner": "scanner-primary", "fingerprint": "dd93bcfc4d72902b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-44792f31cf583e29", "level": "none", "message": {"text": "Commented-code block (11 lines) in service/src/routes/teams.js:3"}, "properties": {"repobilityId": "c3e607ea05fe1e04", "scanner": "scanner-primary", "fingerprint": "44792f31cf583e29", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a835440c7758d801", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/routes/activity.js:3"}, "properties": {"repobilityId": "a17f89d3c67cf8e4", "scanner": "scanner-primary", "fingerprint": "a835440c7758d801", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7eb8d9bd911cfe1d", "level": "note", "message": {"text": "Legacy-named symbol `latest_backup` in service/src/routes/replication.js:63"}, "properties": {"repobilityId": "bb9595f027d3d3d1", "scanner": "scanner-primary", "fingerprint": "7eb8d9bd911cfe1d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-abc14236835d5514", "level": "none", "message": {"text": "Commented-code block (6 lines) in service/src/routes/replication.js:6"}, "properties": {"repobilityId": "dcd42b6862b81ff0", "scanner": "scanner-primary", "fingerprint": "abc14236835d5514", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4898236f6effd376", "level": "none", "message": {"text": "Commented-code block (7 lines) in service/src/routes/incognito.js:3"}, "properties": {"repobilityId": "ab337a93a9cab1f8", "scanner": "scanner-primary", "fingerprint": "4898236f6effd376", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ca571cfde06e5e7d", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/routes/tests.js:8"}, "properties": {"repobilityId": "89936bbc0be4b96c", "scanner": "scanner-primary", "fingerprint": "ca571cfde06e5e7d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2efeff2649049258", "level": "none", "message": {"text": "Commented-code block (6 lines) in service/src/routes/intuition.js:3"}, "properties": {"repobilityId": "4d24a36a6a57914d", "scanner": "scanner-primary", "fingerprint": "2efeff2649049258", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-10e89aa7bbbc815b", "level": "none", "message": {"text": "Commented-code block (10 lines) in service/src/routes/sync.js:7"}, "properties": {"repobilityId": "2ce2447f06fcbf39", "scanner": "scanner-primary", "fingerprint": "10e89aa7bbbc815b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ee2e27cbed3e2275", "level": "none", "message": {"text": "Commented-code block (9 lines) in service/src/routes/dashboard.js:55"}, "properties": {"repobilityId": "771951a2963f3ca6", "scanner": "scanner-primary", "fingerprint": "ee2e27cbed3e2275", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac41f7b41c11f1d8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/routes/auth.js:18"}, "properties": {"repobilityId": "3507cc76eec771cc", "scanner": "scanner-primary", "fingerprint": "ac41f7b41c11f1d8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1247e4adc57f27ef", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/routes/chat.js:461"}, "properties": {"repobilityId": "f92fc69438e8946c", "scanner": "scanner-primary", "fingerprint": "1247e4adc57f27ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-781fad47f8bef89c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/routes/voice.js:20"}, "properties": {"repobilityId": "d8ae4797a14ab739", "scanner": "scanner-primary", "fingerprint": "781fad47f8bef89c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1f2cd1218b590f26", "level": "none", "message": {"text": "Commented-code block (9 lines) in service/src/routes/hooks.js:527"}, "properties": {"repobilityId": "d05f1d8b7d2ee599", "scanner": "scanner-primary", "fingerprint": "1f2cd1218b590f26", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b820c03abe861d1d", "level": "none", "message": {"text": "Commented-code block (9 lines) in service/src/routes/client.js:3"}, "properties": {"repobilityId": "e0de5053d8fc9f34", "scanner": "scanner-primary", "fingerprint": "b820c03abe861d1d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a9c527981da9fad9", "level": "none", "message": {"text": "Commented-code block (8 lines) in service/src/routes/privacy.js:1"}, "properties": {"repobilityId": "cf85b783d2360747", "scanner": "scanner-primary", "fingerprint": "a9c527981da9fad9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d0c51b1258c2d5f8", "level": "none", "message": {"text": "Commented-code block (8 lines) in service/src/routes/identity.js:7"}, "properties": {"repobilityId": "eafa598503fd848e", "scanner": "scanner-primary", "fingerprint": "d0c51b1258c2d5f8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bd26799d35194bc0", "level": "none", "message": {"text": "Commented-code block (6 lines) in service/src/routes/api.js:54"}, "properties": {"repobilityId": "665ce8203ee1e36e", "scanner": "scanner-primary", "fingerprint": "bd26799d35194bc0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-928459d65d51cfb3", "level": "none", "message": {"text": "Commented-code block (14 lines) in service/src/routes/orgs.js:3"}, "properties": {"repobilityId": "1840275c418c7042", "scanner": "scanner-primary", "fingerprint": "928459d65d51cfb3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b7a15875cefcd6cf", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/routes/audit.js:3"}, "properties": {"repobilityId": "90657ef76d623ec9", "scanner": "scanner-primary", "fingerprint": "b7a15875cefcd6cf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-48bd0057b4ee4c12", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/routes/mcp-quality-log.js:8"}, "properties": {"repobilityId": "f0bb47fce8bca074", "scanner": "scanner-primary", "fingerprint": "48bd0057b4ee4c12", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3ae6570111b4cb72", "level": "none", "message": {"text": "Commented-code block (9 lines) in service/src/routes/wrap.js:3"}, "properties": {"repobilityId": "d41ff1494e0d3594", "scanner": "scanner-primary", "fingerprint": "3ae6570111b4cb72", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-661657efe68d97eb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/routes/wrap.js:111"}, "properties": {"repobilityId": "80222d6a427171dd", "scanner": "scanner-primary", "fingerprint": "661657efe68d97eb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-75beae3b68918a7c", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/routes/sensors.js:208"}, "properties": {"repobilityId": "03aa7e0db53421e7", "scanner": "scanner-primary", "fingerprint": "75beae3b68918a7c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-92ebc3a59b14097f", "level": "none", "message": {"text": "Commented-code block (6 lines) in service/src/routes/devices.js:10"}, "properties": {"repobilityId": "5e0153c5daec646b", "scanner": "scanner-primary", "fingerprint": "92ebc3a59b14097f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2bca207cc6d890e7", "level": "none", "message": {"text": "Commented-code block (10 lines) in service/src/intuition/needs.js:3"}, "properties": {"repobilityId": "6d7c8d1a55420feb", "scanner": "scanner-primary", "fingerprint": "2bca207cc6d890e7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e55315ce3ee9d124", "level": "none", "message": {"text": "Commented-code block (7 lines) in service/src/intuition/nourishment.js:7"}, "properties": {"repobilityId": "2f3c746abbe1f07b", "scanner": "scanner-primary", "fingerprint": "e55315ce3ee9d124", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d6ed2edca424884", "level": "none", "message": {"text": "Commented-code block (6 lines) in service/src/intuition/mind.js:3"}, "properties": {"repobilityId": "9fbe3fed7417dd83", "scanner": "scanner-primary", "fingerprint": "8d6ed2edca424884", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-66db49512064a3aa", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/intuition/signals.js:3"}, "properties": {"repobilityId": "e479ab3de56f689e", "scanner": "scanner-primary", "fingerprint": "66db49512064a3aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b76d5c2b11577691", "level": "none", "message": {"text": "Commented-code block (6 lines) in service/src/intuition/reasoning.js:3"}, "properties": {"repobilityId": "b77e6a013ae7c9cf", "scanner": "scanner-primary", "fingerprint": "b76d5c2b11577691", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1575db29da391c91", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/intuition/index.js:189"}, "properties": {"repobilityId": "3b7c5e0fb2534786", "scanner": "scanner-primary", "fingerprint": "1575db29da391c91", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0609348f9e4809d5", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/intuition/action.js:9"}, "properties": {"repobilityId": "36aece7b18988bf2", "scanner": "scanner-primary", "fingerprint": "0609348f9e4809d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d38b5b9774630b33", "level": "none", "message": {"text": "Commented-code block (7 lines) in service/src/intuition/synthesis.js:4"}, "properties": {"repobilityId": "6c1564d2eacfc0dd", "scanner": "scanner-primary", "fingerprint": "d38b5b9774630b33", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e169852906c5f3ea", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/memory/context-builder.js:3"}, "properties": {"repobilityId": "2875a374c305ebed", "scanner": "scanner-primary", "fingerprint": "e169852906c5f3ea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-006b79ad15b09752", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/memory/embeddings.js:14"}, "properties": {"repobilityId": "ce85fb9e76348638", "scanner": "scanner-primary", "fingerprint": "006b79ad15b09752", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5616346e5f1af469", "level": "none", "message": {"text": "Commented-code block (9 lines) in service/src/hooks/skill-learner.js:16"}, "properties": {"repobilityId": "4381a8dcdb02ea8e", "scanner": "scanner-primary", "fingerprint": "5616346e5f1af469", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-02433e40280655d7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 service/src/hooks/skill-learner.js:34"}, "properties": {"repobilityId": "000b2172d6fb7594", "scanner": "scanner-primary", "fingerprint": "02433e40280655d7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-34f403003fd89b20", "level": "none", "message": {"text": "Commented-code block (10 lines) in service/src/migrations/tier0-org-foundation.js:5"}, "properties": {"repobilityId": "4a2c2b02c4032658", "scanner": "scanner-primary", "fingerprint": "34f403003fd89b20", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8a1d419979b145b8", "level": "none", "message": {"text": "Commented-code block (7 lines) in service/src/migrations/run.js:7"}, "properties": {"repobilityId": "7389071392e0bdbc", "scanner": "scanner-primary", "fingerprint": "8a1d419979b145b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6878979f10c7e980", "level": "none", "message": {"text": "Commented-code block (7 lines) in service/src/evolution/engine.js:3"}, "properties": {"repobilityId": "0bd480b4da9b6250", "scanner": "scanner-primary", "fingerprint": "6878979f10c7e980", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c60e5ce8cb82f811", "level": "none", "message": {"text": "Commented-code block (10 lines) in service/src/perf/stages.js:5"}, "properties": {"repobilityId": "51957e8bed26f3a2", "scanner": "scanner-primary", "fingerprint": "c60e5ce8cb82f811", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8aef4d0a72304134", "level": "none", "message": {"text": "Commented-code block (9 lines) in service/src/perf/engine.js:13"}, "properties": {"repobilityId": "0b96091746c6f20e", "scanner": "scanner-primary", "fingerprint": "8aef4d0a72304134", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dda89e18d6125ff4", "level": "none", "message": {"text": "Commented-code block (5 lines) in service/src/perf/probes.js:34"}, "properties": {"repobilityId": "d77c42ca70446bcf", "scanner": "scanner-primary", "fingerprint": "dda89e18d6125ff4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d835cca91d3c91b9", "level": "none", "message": {"text": "Commented-code block (6 lines) in pan-client/pan-client.js:202"}, "properties": {"repobilityId": "e4518bd0b2ee8f9a", "scanner": "scanner-primary", "fingerprint": "d835cca91d3c91b9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "6ed579de23b595a4", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-918b308863c20750", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:${PORT}/health (hub/test.js:116)"}, "properties": {"repobilityId": "5b030b84bf48efbe", "scanner": "scanner-primary", "fingerprint": "918b308863c20750", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4c0b959ca06d642e", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost:11434/api/tags (service/test-memory.js:68)"}, "properties": {"repobilityId": "73c9e108a72739da", "scanner": "scanner-primary", "fingerprint": "4c0b959ca06d642e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e74a7abdcbdd4531", "level": "error", "message": {"text": "Dangling fetch: POST http://localhost:11434/api/pull (service/test-memory.js:76)"}, "properties": {"repobilityId": "983a49bd5b382736", "scanner": "scanner-primary", "fingerprint": "e74a7abdcbdd4531", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-13e038693258a971", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:${TAURI_PORT}/open (service/dashboard/src/lib/compose.js:23)"}, "properties": {"repobilityId": "1239a11d1b25de66", "scanner": "scanner-primary", "fingerprint": "13e038693258a971", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-333c0de3adc1612d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/client/devices (service/dashboard/src/lib/stores/devices.svelte.js:50)"}, "properties": {"repobilityId": "2d4c7774ae027bc5", "scanner": "scanner-primary", "fingerprint": "333c0de3adc1612d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-02a7a3969fe65a09", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/client/${encodeURIComponent(deviceId)}/approve (service/dashboard/src/lib/stores/devices.svelte.js:66)"}, "properties": {"repobilityId": "bc61a87389ba6d74", "scanner": "scanner-primary", "fingerprint": "02a7a3969fe65a09", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2fe6cf2b7235a58b", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/client/${encodeURIComponent(deviceId)}/deny (service/dashboard/src/lib/stores/devices.svelte.js:72)"}, "properties": {"repobilityId": "97c0916cad4caff9", "scanner": "scanner-primary", "fingerprint": "2fe6cf2b7235a58b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-446e1f232e74bcbc", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/perf/trace (service/dashboard/src/lib/stores/perf.svelte.js:179)"}, "properties": {"repobilityId": "095b46f17c516f8b", "scanner": "scanner-primary", "fingerprint": "446e1f232e74bcbc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6d6bf8895faebd73", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/perf/event (service/dashboard/src/lib/stores/perf.svelte.js:198)"}, "properties": {"repobilityId": "40860fb27c2ed4ea", "scanner": "scanner-primary", "fingerprint": "6d6bf8895faebd73", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b0c083028fe87961", "level": "error", "message": {"text": "Dangling fetch: GET /api/carrier/status (service/dashboard/src/lib/stores/services.svelte.js:22)"}, "properties": {"repobilityId": "7f20cd4addaac70a", "scanner": "scanner-primary", "fingerprint": "b0c083028fe87961", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6a48fff1bda967aa", "level": "error", "message": {"text": "Dangling fetch: GET /api/hostname (service/installer/pan-installer.cjs:901)"}, "properties": {"repobilityId": "7107aabd611b38e8", "scanner": "scanner-primary", "fingerprint": "6a48fff1bda967aa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d01fc00ee3162bc0", "level": "error", "message": {"text": "Dangling fetch: POST /api/install (service/installer/pan-installer.cjs:940)"}, "properties": {"repobilityId": "90266f7190311f74", "scanner": "scanner-primary", "fingerprint": "d01fc00ee3162bc0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0cb5cfb4c2a407d0", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/sensors?device=${encodeURIComponent(e(t).drilldown.name)} (service/public/v2/_app/immutable/nodes/9.BLwRZqA_.js:1)"}, "properties": {"repobilityId": "39e71bb346f48164", "scanner": "scanner-primary", "fingerprint": "0cb5cfb4c2a407d0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-db76ac436c2dcd59", "level": "error", "message": {"text": "Dangling fetch: GET /dashboard/api/projects/${e(t).drilldown.id}/tasks (service/public/v2/_app/immutable/nodes/9.BLwRZqA_.js:1)"}, "properties": {"repobilityId": "4e0c0b3e5328da11", "scanner": "scanner-primary", "fingerprint": "db76ac436c2dcd59", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2935bba3f1c24474", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/chat/stream (service/public/v2/_app/immutable/nodes/14.ChhyqRxG.js:1)"}, "properties": {"repobilityId": "fbeff643fd614b22", "scanner": "scanner-primary", "fingerprint": "2935bba3f1c24474", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-22d2e2336ee79e27", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/cancel (service/public/v2/_app/immutable/nodes/14.ChhyqRxG.js:4)"}, "properties": {"repobilityId": "72a9ac852ca48717", "scanner": "scanner-primary", "fingerprint": "22d2e2336ee79e27", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ae29c3d9246da5bd", "level": "error", "message": {"text": "Dangling fetch: POST /dashboard/api/sections/${t}/items (service/public/v2/_app/immutable/nodes/26.BpR5ztNG.js:14)"}, "properties": {"repobilityId": "c75ed532dc68f254", "scanner": "scanner-primary", "fingerprint": "ae29c3d9246da5bd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0026f65582f14ecb", "level": "error", "message": {"text": "Dangling fetch: POST /dashboard/api/projects/${s.projectId}/tasks (service/public/v2/_app/immutable/nodes/26.BpR5ztNG.js:14)"}, "properties": {"repobilityId": "bec8b9a506c07e82", "scanner": "scanner-primary", "fingerprint": "0026f65582f14ecb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0026f65582f14ecb", "level": "error", "message": {"text": "Dangling fetch: POST /dashboard/api/projects/${s.projectId}/tasks (service/public/v2/_app/immutable/nodes/26.BpR5ztNG.js:14)"}, "properties": {"repobilityId": "bec8b9a506c07e82", "scanner": "scanner-primary", "fingerprint": "0026f65582f14ecb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-496b0f0f426db91d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/needs${ke} (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "properties": {"repobilityId": "41500c6c39686408", "scanner": "scanner-primary", "fingerprint": "496b0f0f426db91d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b7789837af166fdf", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/pan/synthesis${ke} (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "properties": {"repobilityId": "41724ce36f2d5485", "scanner": "scanner-primary", "fingerprint": "b7789837af166fdf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b7789837af166fdf", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/pan/synthesis${ke} (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "properties": {"repobilityId": "41724ce36f2d5485", "scanner": "scanner-primary", "fingerprint": "b7789837af166fdf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c0905d4c39355cce", "level": "error", "message": {"text": "Dangling fetch: PATCH /dashboard/api/alerts/${D} (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "properties": {"repobilityId": "e6ee5b4342f87008", "scanner": "scanner-primary", "fingerprint": "c0905d4c39355cce", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-63d84e46cbf1af78", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/auth/users (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "properties": {"repobilityId": "330e246ad0e9a3f9", "scanner": "scanner-primary", "fingerprint": "63d84e46cbf1af78", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d8a5c5a221f25d0b", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/teams (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "properties": {"repobilityId": "44c4d570d6426c65", "scanner": "scanner-primary", "fingerprint": "d8a5c5a221f25d0b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6b79b644cb347b69", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/teams/${$e} (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "properties": {"repobilityId": "0d1d33d2e04a39f2", "scanner": "scanner-primary", "fingerprint": "6b79b644cb347b69", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fa6611c65f5a2307", "level": "error", "message": {"text": "Dangling fetch: GET /api/carrier/status (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "properties": {"repobilityId": "2eb59f996dfe0a4e", "scanner": "scanner-primary", "fingerprint": "fa6611c65f5a2307", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b58190e8f26280c2", "level": "error", "message": {"text": "Dangling fetch: GET /lifeboat/status (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "properties": {"repobilityId": "780ad135d6c5a9d5", "scanner": "scanner-primary", "fingerprint": "b58190e8f26280c2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-158137f9e9c10b4a", "level": "error", "message": {"text": "Dangling fetch: POST /lifeboat/rollback (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "properties": {"repobilityId": "af73449f9d881f8a", "scanner": "scanner-primary", "fingerprint": "158137f9e9c10b4a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0d0d59648cfe524a", "level": "error", "message": {"text": "Dangling fetch: POST /lifeboat/confirm (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "properties": {"repobilityId": "3b2b0b449bb4ac50", "scanner": "scanner-primary", "fingerprint": "0d0d59648cfe524a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3bb6ab7c707c693e", "level": "error", "message": {"text": "Dangling fetch: POST /api/carrier/swap (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "properties": {"repobilityId": "74dae4e185dcb621", "scanner": "scanner-primary", "fingerprint": "3bb6ab7c707c693e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b918a6302be1adba", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/client/devices (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "properties": {"repobilityId": "b9f2429ae900ded7", "scanner": "scanner-primary", "fingerprint": "b918a6302be1adba", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-64f82232c0fb8ca5", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/client/${encodeURIComponent(m)}/approve (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "properties": {"repobilityId": "6b7302330176a957", "scanner": "scanner-primary", "fingerprint": "64f82232c0fb8ca5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3926f290d7c69579", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/client/${encodeURIComponent(m)}/deny (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:1)"}, "properties": {"repobilityId": "ec28e56a3be75df1", "scanner": "scanner-primary", "fingerprint": "3926f290d7c69579", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-75d336d69d25a119", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:${Nu}/open (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:7)"}, "properties": {"repobilityId": "6dda0478ae6be6f9", "scanner": "scanner-primary", "fingerprint": "75d336d69d25a119", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-73979219dae2062d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/perf/trace (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:7)"}, "properties": {"repobilityId": "8588a298d8bfad77", "scanner": "scanner-primary", "fingerprint": "73979219dae2062d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f1419cb0179b76e6", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/perf/event (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:7)"}, "properties": {"repobilityId": "2a706699c06da8f4", "scanner": "scanner-primary", "fingerprint": "f1419cb0179b76e6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1d7cf8daf3529d60", "level": "error", "message": {"text": "Dangling fetch: GET /api/dashboard/bundle-hash (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:12)"}, "properties": {"repobilityId": "1cf9e87dc09ec016", "scanner": "scanner-primary", "fingerprint": "1d7cf8daf3529d60", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ea0352dd66cdbcd3", "level": "error", "message": {"text": "Dangling fetch: POST /dashboard/api/sections/${r}/items (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:24)"}, "properties": {"repobilityId": "81480ef192e23a5a", "scanner": "scanner-primary", "fingerprint": "ea0352dd66cdbcd3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a79a9132f19de6b7", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/client/devices (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:24)"}, "properties": {"repobilityId": "041f3dbd0a47f8cf", "scanner": "scanner-primary", "fingerprint": "a79a9132f19de6b7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-45355697e8fa824a", "level": "error", "message": {"text": "Dangling fetch: GET /api/dashboard/bundle-hash (service/public/v2/_app/immutable/nodes/25.25NA2FSH.js:24)"}, "properties": {"repobilityId": "e036338efdda5b41", "scanner": "scanner-primary", "fingerprint": "45355697e8fa824a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-eb7a7d05b8beeae0", "level": "error", "message": {"text": "Dangling fetch: POST /api/carrier/restart (service/public/v2/_app/immutable/nodes/24.CdENhAy3.js:2)"}, "properties": {"repobilityId": "9d222115d1ae75ab", "scanner": "scanner-primary", "fingerprint": "eb7a7d05b8beeae0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7cccd3e6bf8770dd", "level": "error", "message": {"text": "Dangling fetch: POST /api/carrier/restart?force=1 (service/public/v2/_app/immutable/nodes/24.CdENhAy3.js:2)"}, "properties": {"repobilityId": "bbd5568d3ade4412", "scanner": "scanner-primary", "fingerprint": "7cccd3e6bf8770dd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e969e3858c761ca4", "level": "error", "message": {"text": "Dangling fetch: GET /api/carrier/status (service/public/v2/_app/immutable/nodes/24.CdENhAy3.js:2)"}, "properties": {"repobilityId": "15d160cc02f2e1a7", "scanner": "scanner-primary", "fingerprint": "e969e3858c761ca4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-960fb1c18cea7c24", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/chat (service/public/v2/_app/immutable/nodes/15.DN-UP6g2.js:1)"}, "properties": {"repobilityId": "1c5b9bb0a4c2872a", "scanner": "scanner-primary", "fingerprint": "960fb1c18cea7c24", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-960fb1c18cea7c24", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/chat (service/public/v2/_app/immutable/nodes/15.DN-UP6g2.js:1)"}, "properties": {"repobilityId": "1c5b9bb0a4c2872a", "scanner": "scanner-primary", "fingerprint": "960fb1c18cea7c24", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7ac3bd8382365847", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:${ya}/open (service/public/v2/_app/immutable/nodes/15.DN-UP6g2.js:1)"}, "properties": {"repobilityId": "2d6a99ff66a89785", "scanner": "scanner-primary", "fingerprint": "7ac3bd8382365847", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-757cd89c7d1f14d5", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/intuition/current (service/public/v2/_app/immutable/nodes/10.CIcz8j3-.js:1)"}, "properties": {"repobilityId": "c2cd74981aac4809", "scanner": "scanner-primary", "fingerprint": "757cd89c7d1f14d5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d49d6c32c42db5f3", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/devices/list (service/public/v2/_app/immutable/nodes/10.CIcz8j3-.js:1)"}, "properties": {"repobilityId": "f769d60e0f8af393", "scanner": "scanner-primary", "fingerprint": "d49d6c32c42db5f3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8461e0973aa2b62e", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/chat/threads/dm (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)"}, "properties": {"repobilityId": "83e5e49f8589c46e", "scanner": "scanner-primary", "fingerprint": "8461e0973aa2b62e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-004d1aa6bedb2815", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/chat/threads/${v.thread_id}/read (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)"}, "properties": {"repobilityId": "0a4d3106345d69cb", "scanner": "scanner-primary", "fingerprint": "004d1aa6bedb2815", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3db5e8c0bfe3e264", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/chat/threads/${a}/messages?limit=20 (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)"}, "properties": {"repobilityId": "6ba849109dc7996b", "scanner": "scanner-primary", "fingerprint": "3db5e8c0bfe3e264", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d4a3b1d53ca208bc", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/chat/threads/${e(Te)}/messages (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)"}, "properties": {"repobilityId": "89bd303d9e273eea", "scanner": "scanner-primary", "fingerprint": "d4a3b1d53ca208bc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-921f6319e94eb0ff", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/chat/calendar?month=${e(R)+1}&year=${e(_e)} (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)"}, "properties": {"repobilityId": "2e060339ae187ad6", "scanner": "scanner-primary", "fingerprint": "921f6319e94eb0ff", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4287edfa350a607b", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/chat/calendar (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)"}, "properties": {"repobilityId": "fb4c4db9b5818a4c", "scanner": "scanner-primary", "fingerprint": "4287edfa350a607b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-df0707f5087c87c3", "level": "error", "message": {"text": "Dangling fetch: PUT /api/v1/chat/contacts/${a.id} (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)"}, "properties": {"repobilityId": "5b4e439c1405a8cf", "scanner": "scanner-primary", "fingerprint": "df0707f5087c87c3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9f05f7bfba464349", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/chat/unread (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)"}, "properties": {"repobilityId": "edffe4b5f5cea928", "scanner": "scanner-primary", "fingerprint": "9f05f7bfba464349", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6ec2195bbd17ee46", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/orgs (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)"}, "properties": {"repobilityId": "292881746c893dc5", "scanner": "scanner-primary", "fingerprint": "6ec2195bbd17ee46", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ec1308735aff8fb5", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/orgs/switch (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)"}, "properties": {"repobilityId": "cf848426e36a282a", "scanner": "scanner-primary", "fingerprint": "ec1308735aff8fb5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dcb4c3579f0aaf0c", "level": "error", "message": {"text": "Dangling fetch: GET /v2/_app/version.json?_=${Date.now()} (service/public/v2/_app/immutable/nodes/0.eRKQCTaV.js:1)"}, "properties": {"repobilityId": "fb46fc138b904759", "scanner": "scanner-primary", "fingerprint": "dcb4c3579f0aaf0c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b1c3c952abd7b05a", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost:${svcDef.port}${svcDef.health} (service/src/project-runner.js:130)"}, "properties": {"repobilityId": "dd84996a70db9441", "scanner": "scanner-primary", "fingerprint": "b1c3c952abd7b05a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4aebfedfb2aff4dd", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:${TAURI_PORT}/screenshot (service/src/dashboard-vision-verifier.js:30)"}, "properties": {"repobilityId": "3e1ae39a03ea2371", "scanner": "scanner-primary", "fingerprint": "4aebfedfb2aff4dd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4c53f3cf38104e58", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:${TAURI_PORT}/screenshot (service/src/screen-watcher.js:152)"}, "properties": {"repobilityId": "896800d680c6e171", "scanner": "scanner-primary", "fingerprint": "4c53f3cf38104e58", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fbcd1086fb3ee274", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:${TAURI_PORT}/screenshot (service/src/dashboard-watchdog.js:104)"}, "properties": {"repobilityId": "02d2925b0263dc26", "scanner": "scanner-primary", "fingerprint": "fbcd1086fb3ee274", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-93950793dc10e499", "level": "error", "message": {"text": "Dangling fetch: GET https://api.github.com/repos/${issue.repo}/issues/${issue.number} (service/src/issue-checker.js:19)"}, "properties": {"repobilityId": "ae1056bd001d540c", "scanner": "scanner-primary", "fingerprint": "93950793dc10e499", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0fc0553b6620605d", "level": "error", "message": {"text": "Dangling fetch: GET https://api.github.com/repos/${issue.repo}/issues/${issue.number}/comments?per_page=5&sort=created&direction=desc (service/src/issue-checker.js:42)"}, "properties": {"repobilityId": "ee56a696f970a183", "scanner": "scanner-primary", "fingerprint": "0fc0553b6620605d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-43fafbe7a68aa70c", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:${_craftPort()}${path} (service/src/panel-broadcaster.js:51)"}, "properties": {"repobilityId": "639fd6ada0d37247", "scanner": "scanner-primary", "fingerprint": "43fafbe7a68aa70c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fa3b88fcd3a0cd0d", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:${port}/api/v1/whisper (service/src/mic-router.js:198)"}, "properties": {"repobilityId": "b0c7b7caa3c6ff07", "scanner": "scanner-primary", "fingerprint": "fa3b88fcd3a0cd0d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-231864d0eda177d0", "level": "error", "message": {"text": "Dangling fetch: GET https://api.tailscale.com/api/v2/tailnet/-/devices (service/src/server.js:325)"}, "properties": {"repobilityId": "d663bb7725301a52", "scanner": "scanner-primary", "fingerprint": "231864d0eda177d0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-db01a2c8f107033f", "level": "error", "message": {"text": "Dangling fetch: DELETE https://api.tailscale.com/api/v2/device/${dev.id} (service/src/server.js:335)"}, "properties": {"repobilityId": "29caa3e8b92e803c", "scanner": "scanner-primary", "fingerprint": "db01a2c8f107033f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-45968126b9c3dda7", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:7777/health (service/src/server.js:796)"}, "properties": {"repobilityId": "bb4e0419064de77b", "scanner": "scanner-primary", "fingerprint": "45968126b9c3dda7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f18ac3e69fab13ae", "level": "error", "message": {"text": "Dangling fetch: GET https://api.anthropic.com/v1/models (service/src/server.js:2167)"}, "properties": {"repobilityId": "f38fef26079d6646", "scanner": "scanner-primary", "fingerprint": "f18ac3e69fab13ae", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-94a5a72fe8f3649a", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost:${port}/health (service/src/server.js:3491)"}, "properties": {"repobilityId": "5820fa2e04d61c79", "scanner": "scanner-primary", "fingerprint": "94a5a72fe8f3649a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c27d834b1a1222c8", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost:${port}/v2/ (service/src/server.js:3496)"}, "properties": {"repobilityId": "f79cb4918edcd804", "scanner": "scanner-primary", "fingerprint": "c27d834b1a1222c8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7192429b277c8523", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost:${DEV_PORT}/health (service/src/server.js:3520)"}, "properties": {"repobilityId": "39a7b1a41aaed455", "scanner": "scanner-primary", "fingerprint": "7192429b277c8523", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d75cb0ce4c3cde7f", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost:${DEV_PORT}/health (service/src/server.js:3551)"}, "properties": {"repobilityId": "7dc5ac78a2b1e750", "scanner": "scanner-primary", "fingerprint": "d75cb0ce4c3cde7f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5322eac93d606acb", "level": "error", "message": {"text": "Dangling fetch: POST https://api.tailscale.com/api/v2/oauth/token (service/src/server.js:4326)"}, "properties": {"repobilityId": "731ac15426dcc763", "scanner": "scanner-primary", "fingerprint": "5322eac93d606acb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6620172ebc755c81", "level": "error", "message": {"text": "Dangling fetch: GET https://api.tailscale.com/api/v2/tailnet/-/devices (service/src/server.js:4336)"}, "properties": {"repobilityId": "c0a3d6fad121e2b5", "scanner": "scanner-primary", "fingerprint": "6620172ebc755c81", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5c20b4be9a90edfe", "level": "error", "message": {"text": "Dangling fetch: DELETE https://api.tailscale.com/api/v2/device/${apiDev.id} (service/src/server.js:4345)"}, "properties": {"repobilityId": "866fd639f5ce8bc8", "scanner": "scanner-primary", "fingerprint": "5c20b4be9a90edfe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-59187bb1d44411d6", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:7790/winh (service/src/server.js:4768)"}, "properties": {"repobilityId": "9cdb6878bd8c92dd", "scanner": "scanner-primary", "fingerprint": "59187bb1d44411d6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bf69f6cb3649e963", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:7790/dictate (service/src/server.js:4779)"}, "properties": {"repobilityId": "65749c9730847570", "scanner": "scanner-primary", "fingerprint": "bf69f6cb3649e963", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6325365c79917c4b", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:7790/dictate (service/src/server.js:4802)"}, "properties": {"repobilityId": "78d7e9d72374c74b", "scanner": "scanner-primary", "fingerprint": "6325365c79917c4b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-973b3a95293b7a97", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:7782/ (service/src/server.js:4880)"}, "properties": {"repobilityId": "af1b09adc5f7d799", "scanner": "scanner-primary", "fingerprint": "973b3a95293b7a97", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e3b6cbda98c4ad28", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:7782/ (service/src/server.js:4916)"}, "properties": {"repobilityId": "4d2be8a841974f02", "scanner": "scanner-primary", "fingerprint": "e3b6cbda98c4ad28", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8668bfc72cfccbed", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost:1234/v1/models (service/src/server.js:5285)"}, "properties": {"repobilityId": "f5dbe96c45063959", "scanner": "scanner-primary", "fingerprint": "8668bfc72cfccbed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5a96a6b52417f159", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (service/src/server.js:2368)"}, "properties": {"repobilityId": "c5239cd7f44760dd", "scanner": "scanner-primary", "fingerprint": "5a96a6b52417f159", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-037119ebcecce565", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:${CARRIER_PORT}/health (service/src/super-carrier.js:59)"}, "properties": {"repobilityId": "2be1ec956c290711", "scanner": "scanner-primary", "fingerprint": "037119ebcecce565", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-90ecae100f644dc3", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:7777/health (service/src/steward.js:1092)"}, "properties": {"repobilityId": "6c6d106c0fda2581", "scanner": "scanner-primary", "fingerprint": "90ecae100f644dc3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-86b424d118ad221f", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:7777/api/carrier/swap (service/src/steward.js:1164)"}, "properties": {"repobilityId": "ff0989370dc65e1d", "scanner": "scanner-primary", "fingerprint": "86b424d118ad221f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-60dd774ff8608307", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:${primaryCraft.port}/api/v1/screen-watcher/burst (service/src/carrier.js:1587)"}, "properties": {"repobilityId": "f6c7041e6762bfeb", "scanner": "scanner-primary", "fingerprint": "60dd774ff8608307", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9b41cca63928efe2", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:${primaryCraft.port}/api/v1/tests/run (service/src/carrier.js:1596)"}, "properties": {"repobilityId": "97986b12f33ede63", "scanner": "scanner-primary", "fingerprint": "9b41cca63928efe2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-71c6ec3b4a229333", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:7790/screenshot (service/src/carrier.js:1648)"}, "properties": {"repobilityId": "86105120601982d5", "scanner": "scanner-primary", "fingerprint": "71c6ec3b4a229333", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cd7da1f480bee8b4", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:${CARRIER_PORT}/health (service/src/carrier.js:2171)"}, "properties": {"repobilityId": "d452d068306e947b", "scanner": "scanner-primary", "fingerprint": "cd7da1f480bee8b4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-867eb370a9c041cb", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:${PAN_PORT}/api/v1/terminal/sessions (service/src/router.js:727)"}, "properties": {"repobilityId": "16d1981341485f93", "scanner": "scanner-primary", "fingerprint": "867eb370a9c041cb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1dbae40bd97b8a0b", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:${carrierPort}/api/carrier/clients (service/src/router.js:798)"}, "properties": {"repobilityId": "9444df2e4ac8832a", "scanner": "scanner-primary", "fingerprint": "1dbae40bd97b8a0b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-83818955b20623dd", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:7777/api/v1/claude-control/send (service/src/router.js:871)"}, "properties": {"repobilityId": "72e67fe6b7fe6e84", "scanner": "scanner-primary", "fingerprint": "83818955b20623dd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bb6a6ead86832f0d", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:${carrierPort}/api/carrier/client-send (service/src/router.js:888)"}, "properties": {"repobilityId": "dde4971c5fe27c44", "scanner": "scanner-primary", "fingerprint": "bb6a6ead86832f0d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-89c7d59908631a6b", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:${PAN_PORT}/api/v1/terminal/pipe (service/src/router.js:1008)"}, "properties": {"repobilityId": "281fbc09572a3ff2", "scanner": "scanner-primary", "fingerprint": "89c7d59908631a6b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-04d3db29e59c2ede", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:7777/api/v1/client/command (service/src/smart-steward.js:307)"}, "properties": {"repobilityId": "e426043e179a67dc", "scanner": "scanner-primary", "fingerprint": "04d3db29e59c2ede", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e5ef9605e16fa847", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:7777/api/v1/client/push-update (service/src/smart-steward.js:321)"}, "properties": {"repobilityId": "ebd543a318bca18f", "scanner": "scanner-primary", "fingerprint": "e5ef9605e16fa847", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-41407450a0719d1e", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:${port}/health (service/src/cli/start.js:41)"}, "properties": {"repobilityId": "f5fea1d7a4039af6", "scanner": "scanner-primary", "fingerprint": "41407450a0719d1e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-82e200ce31d1d9a6", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:${port}/health (service/src/cli/start.js:60)"}, "properties": {"repobilityId": "0a051fdb2755ab99", "scanner": "scanner-primary", "fingerprint": "82e200ce31d1d9a6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-81deb12125be7907", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:7777/health (service/src/routes/dashboard.js:995)"}, "properties": {"repobilityId": "ace925bb522a1f1f", "scanner": "scanner-primary", "fingerprint": "81deb12125be7907", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dbbb812a66eb294f", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:7782 (service/src/routes/dashboard.js:997)"}, "properties": {"repobilityId": "f02b9d79679f23da", "scanner": "scanner-primary", "fingerprint": "dbbb812a66eb294f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9084255d5c14d639", "level": "error", "message": {"text": "Dangling fetch: GET https://oauth2.googleapis.com/tokeninfo?id_token=${token} (service/src/routes/auth.js:18)"}, "properties": {"repobilityId": "6094b5709067045c", "scanner": "scanner-primary", "fingerprint": "9084255d5c14d639", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-92227da6e5ff5e46", "level": "error", "message": {"text": "Dangling fetch: GET https://graph.microsoft.com/v1.0/me (service/src/routes/auth.js:24)"}, "properties": {"repobilityId": "b3c4f68399c4d926", "scanner": "scanner-primary", "fingerprint": "92227da6e5ff5e46", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d7d496b7743ac169", "level": "error", "message": {"text": "Dangling fetch: GET https://api.github.com/user (service/src/routes/auth.js:33)"}, "properties": {"repobilityId": "18f37c452dbc4bbf", "scanner": "scanner-primary", "fingerprint": "d7d496b7743ac169", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9cb1006b2e77ba66", "level": "error", "message": {"text": "Dangling fetch: GET https://api.github.com/user/emails (service/src/routes/auth.js:34)"}, "properties": {"repobilityId": "e65058ed24bccd6e", "scanner": "scanner-primary", "fingerprint": "9cb1006b2e77ba66", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5aceda80ed853886", "level": "error", "message": {"text": "Dangling fetch: POST https://github.com/login/oauth/access_token (service/src/routes/auth.js:297)"}, "properties": {"repobilityId": "fb80a7bbc88e1775", "scanner": "scanner-primary", "fingerprint": "5aceda80ed853886", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-09b63b0299b410c3", "level": "error", "message": {"text": "Dangling fetch: POST https://oauth2.googleapis.com/token (service/src/routes/auth.js:366)"}, "properties": {"repobilityId": "2873eb1a84b6d65a", "scanner": "scanner-primary", "fingerprint": "09b63b0299b410c3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6d647ed0aaa2abf6", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:${carrierPort}/api/carrier/client-send (service/src/routes/client.js:178)"}, "properties": {"repobilityId": "e4815b4f89ffc708", "scanner": "scanner-primary", "fingerprint": "6d647ed0aaa2abf6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f1f55382f40dee69", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:7790/wrap/inbound (service/src/routes/wrap.js:281)"}, "properties": {"repobilityId": "ec06bcce36ea034c", "scanner": "scanner-primary", "fingerprint": "f1f55382f40dee69", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f1f55382f40dee69", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:7790/wrap/inbound (service/src/routes/wrap.js:281)"}, "properties": {"repobilityId": "ec06bcce36ea034c", "scanner": "scanner-primary", "fingerprint": "f1f55382f40dee69", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f1f55382f40dee69", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:7790/wrap/inbound (service/src/routes/wrap.js:281)"}, "properties": {"repobilityId": "ec06bcce36ea034c", "scanner": "scanner-primary", "fingerprint": "f1f55382f40dee69", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-184b5be544b7781a", "level": "error", "message": {"text": "Dangling fetch: POST https://api.cerebras.ai/v1/chat/completions (service/src/hooks/skill-learner.js:34)"}, "properties": {"repobilityId": "09bd8979fb679f5c", "scanner": "scanner-primary", "fingerprint": "184b5be544b7781a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2ddbef6843ea7bd3", "level": "error", "message": {"text": "Dangling fetch: POST http://127.0.0.1:7777/api/v1/logs (service/src/hooks/skill-learner.js:214)"}, "properties": {"repobilityId": "5292fd22226a879d", "scanner": "scanner-primary", "fingerprint": "2ddbef6843ea7bd3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "f1aac2339ec2b027", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-df49db00a7390b4c", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/challenge"}, "properties": {"repobilityId": "a2a213e9b23f0c76", "scanner": "scanner-primary", "fingerprint": "df49db00a7390b4c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-accce7e914a5a492", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/devices/register"}, "properties": {"repobilityId": "42cc0bd65af809d0", "scanner": "scanner-primary", "fingerprint": "accce7e914a5a492", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6690d10201eefb26", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/relay"}, "properties": {"repobilityId": "cfcf624d2213ec49", "scanner": "scanner-primary", "fingerprint": "6690d10201eefb26", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0d2ab7293dfa5c9e", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/instances/:id"}, "properties": {"repobilityId": "1151fc7e970e6760", "scanner": "scanner-primary", "fingerprint": "0d2ab7293dfa5c9e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-75670300e1933426", "level": "note", "message": {"text": "Unused endpoint: POST /endpoint"}, "properties": {"repobilityId": "747f909e263dd490", "scanner": "scanner-primary", "fingerprint": "75670300e1933426", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3bec7ccd0b909bea", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/auth"}, "properties": {"repobilityId": "932a2ccfd2f3ed22", "scanner": "scanner-primary", "fingerprint": "3bec7ccd0b909bea", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-08b870df8d54279a", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/screenshot/upload"}, "properties": {"repobilityId": "1d4653660bd555aa", "scanner": "scanner-primary", "fingerprint": "08b870df8d54279a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-aa88773aa3dba862", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/screenshot/latest"}, "properties": {"repobilityId": "17ebd6505a81e2ba", "scanner": "scanner-primary", "fingerprint": "aa88773aa3dba862", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-77321fb7a451b74c", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/screenshot/view"}, "properties": {"repobilityId": "2ffdabff4faa3e54", "scanner": "scanner-primary", "fingerprint": "77321fb7a451b74c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d90dff95bd8f5625", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/screenshot/list"}, "properties": {"repobilityId": "b58f3f86cc73e47a", "scanner": "scanner-primary", "fingerprint": "d90dff95bd8f5625", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b0f3766c7188d5bf", "level": "note", "message": {"text": "Unused endpoint: GET /api/setup-status"}, "properties": {"repobilityId": "74f77c2d8568f9ff", "scanner": "scanner-primary", "fingerprint": "b0f3766c7188d5bf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3ef72cd4eae72a16", "level": "note", "message": {"text": "Unused endpoint: GET /api/system-check"}, "properties": {"repobilityId": "c8ee945ff9a7b67b", "scanner": "scanner-primary", "fingerprint": "3ef72cd4eae72a16", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dde3adb27bf7eebe", "level": "note", "message": {"text": "Unused endpoint: USE /api"}, "properties": {"repobilityId": "5fddade6cfccf17d", "scanner": "scanner-primary", "fingerprint": "dde3adb27bf7eebe", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ca4e4b2fb53fa701", "level": "note", "message": {"text": "Unused endpoint: USE /hooks"}, "properties": {"repobilityId": "dcc1f01d1d565c31", "scanner": "scanner-primary", "fingerprint": "ca4e4b2fb53fa701", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3e9e321736479230", "level": "note", "message": {"text": "Unused endpoint: GET /dashboard/api/perf"}, "properties": {"repobilityId": "9e25399da7a9aa78", "scanner": "scanner-primary", "fingerprint": "3e9e321736479230", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7fbb51844b5c5f70", "level": "note", "message": {"text": "Unused endpoint: POST /dashboard/api/perf/reset-loop"}, "properties": {"repobilityId": "02f56a789390e08e", "scanner": "scanner-primary", "fingerprint": "7fbb51844b5c5f70", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ab5c2280ba962e20", "level": "note", "message": {"text": "Unused endpoint: GET /dashboard/api/processes"}, "properties": {"repobilityId": "db7dedb538b059b6", "scanner": "scanner-primary", "fingerprint": "ab5c2280ba962e20", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-42b04908b50f52e1", "level": "note", "message": {"text": "Unused endpoint: POST /dashboard/api/processes/kill"}, "properties": {"repobilityId": "046d0f67dabe9387", "scanner": "scanner-primary", "fingerprint": "42b04908b50f52e1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-94da1aaaf36cc41f", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1"}, "properties": {"repobilityId": "6eb8a79dee505c51", "scanner": "scanner-primary", "fingerprint": "94da1aaaf36cc41f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-98e434bcca327c07", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/devices"}, "properties": {"repobilityId": "e59bffb33bed7d30", "scanner": "scanner-primary", "fingerprint": "98e434bcca327c07", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-89ef019e1fe94ce0", "level": "note", "message": {"text": "Unused endpoint: USE /api/sensors"}, "properties": {"repobilityId": "d1ed1fca9c7cf0f3", "scanner": "scanner-primary", "fingerprint": "89ef019e1fe94ce0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0cf985639873282a", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/runner"}, "properties": {"repobilityId": "8dadf8a0813910da", "scanner": "scanner-primary", "fingerprint": "0cf985639873282a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f36a37ffde9b3d7c", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/incognito"}, "properties": {"repobilityId": "0f741b194ea6553c", "scanner": "scanner-primary", "fingerprint": "f36a37ffde9b3d7c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-479e0e978455f345", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/audit"}, "properties": {"repobilityId": "c499796f005008a1", "scanner": "scanner-primary", "fingerprint": "479e0e978455f345", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-757c07dd9c0bd34e", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/replication"}, "properties": {"repobilityId": "79e6a41326a14a81", "scanner": "scanner-primary", "fingerprint": "757c07dd9c0bd34e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e283701de0add507", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/zones"}, "properties": {"repobilityId": "85f53ec743878008", "scanner": "scanner-primary", "fingerprint": "e283701de0add507", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c8a280a8e14dda49", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/quality-log"}, "properties": {"repobilityId": "8fc29aa9cd5db765", "scanner": "scanner-primary", "fingerprint": "c8a280a8e14dda49", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-eac979ccbd34b60c", "level": "note", "message": {"text": "Unused endpoint: USE /mcp/quality-log"}, "properties": {"repobilityId": "10f3479c9dae132e", "scanner": "scanner-primary", "fingerprint": "eac979ccbd34b60c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3d258c8868816015", "level": "note", "message": {"text": "Unused endpoint: USE /mcp/pan"}, "properties": {"repobilityId": "ba4bda4a34f06f05", "scanner": "scanner-primary", "fingerprint": "3d258c8868816015", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a72aeb1e7c5d73af", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/capture"}, "properties": {"repobilityId": "ad63fa762d3ab859", "scanner": "scanner-primary", "fingerprint": "a72aeb1e7c5d73af", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-94e2828c264e7410", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/identity"}, "properties": {"repobilityId": "21ad006cc3a7370e", "scanner": "scanner-primary", "fingerprint": "94e2828c264e7410", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e835ad612a23d702", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/sync"}, "properties": {"repobilityId": "652723490bcb8ed5", "scanner": "scanner-primary", "fingerprint": "e835ad612a23d702", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-67b24360729896e8", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/orgs"}, "properties": {"repobilityId": "6d39a7a93097825e", "scanner": "scanner-primary", "fingerprint": "67b24360729896e8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7e1e9e4ddc4b1823", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/guardian"}, "properties": {"repobilityId": "1b33aee96fa64e93", "scanner": "scanner-primary", "fingerprint": "7e1e9e4ddc4b1823", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-37c828c9717ee0d2", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/privacy"}, "properties": {"repobilityId": "44fff932f797de52", "scanner": "scanner-primary", "fingerprint": "37c828c9717ee0d2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cff8da5fbc19c76d", "level": "note", "message": {"text": "Unused endpoint: POST /chat"}, "properties": {"repobilityId": "66d4ceaf68e58890", "scanner": "scanner-primary", "fingerprint": "cff8da5fbc19c76d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8c85f5c1f60d8bd6", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/chat"}, "properties": {"repobilityId": "d09f0610a9473fa5", "scanner": "scanner-primary", "fingerprint": "8c85f5c1f60d8bd6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f640ec2dcc229977", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/email"}, "properties": {"repobilityId": "1e80fab0ca7952b4", "scanner": "scanner-primary", "fingerprint": "f640ec2dcc229977", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8254da1b6504a42c", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/teams"}, "properties": {"repobilityId": "69cb92df03306e1e", "scanner": "scanner-primary", "fingerprint": "8254da1b6504a42c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-df79cde670958ebe", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/wrap"}, "properties": {"repobilityId": "b24285045a193f82", "scanner": "scanner-primary", "fingerprint": "df79cde670958ebe", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2cf48b11f7b3eb34", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/messaging-prefs"}, "properties": {"repobilityId": "fef8e498d1919e3e", "scanner": "scanner-primary", "fingerprint": "2cf48b11f7b3eb34", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-72148af6f39f0bec", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/intuition"}, "properties": {"repobilityId": "fda8bfc137f68183", "scanner": "scanner-primary", "fingerprint": "72148af6f39f0bec", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-042d5ebe9689b925", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/preferences"}, "properties": {"repobilityId": "4312c6fdef352b17", "scanner": "scanner-primary", "fingerprint": "042d5ebe9689b925", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7e77a703a2429f02", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/webcam-watcher/status"}, "properties": {"repobilityId": "dbae368ec754c8b0", "scanner": "scanner-primary", "fingerprint": "7e77a703a2429f02", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f52aac4e63e0a0c1", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/webcam-watcher/force"}, "properties": {"repobilityId": "4affb1b9ca392532", "scanner": "scanner-primary", "fingerprint": "f52aac4e63e0a0c1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-61c2a054cade99bd", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/screen-watcher/burst"}, "properties": {"repobilityId": "4f908ebbba4f7292", "scanner": "scanner-primary", "fingerprint": "61c2a054cade99bd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6a298d05aebddbaa", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/screen-watcher/status"}, "properties": {"repobilityId": "08fdf37f9ab249f2", "scanner": "scanner-primary", "fingerprint": "6a298d05aebddbaa", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7fca4d54b5bf4d95", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/screen-watcher/reset-backoff"}, "properties": {"repobilityId": "f3d70f5f60a26dc1", "scanner": "scanner-primary", "fingerprint": "7fca4d54b5bf4d95", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-622fb2cd08aab299", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/ai"}, "properties": {"repobilityId": "70ffc2c96cf752fc", "scanner": "scanner-primary", "fingerprint": "622fb2cd08aab299", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}