{"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-20e249843e5f5280", "name": "Icon-only button without accessible name \u2014 dashboard/src/js/chat.js:441", "shortDescription": {"text": "Icon-only button without accessible name \u2014 dashboard/src/js/chat.js:441"}, "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-50afb1bb5a357ddf", "name": "Icon-only button without accessible name \u2014 dashboard/src/js/code.js:793", "shortDescription": {"text": "Icon-only button without accessible name \u2014 dashboard/src/js/code.js:793"}, "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-a76a5c1510b30392", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/js/code.js:711", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/js/code.js:711"}, "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-c59678ad943ff4e6", "name": "Stray `console.log` in TS/JS \u2014 NESTeq/workers/garmin-sync/src/index.ts:177", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 NESTeq/workers/garmin-sync/src/index.ts:177"}, "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-80d4f12d118ed1d9", "name": "Stray `console.log` in TS/JS \u2014 NESTeq/nexus-ingester/scripts/scan-chat-html.js:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 NESTeq/nexus-ingester/scripts/scan-chat-html.js:32"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e625997cf61121ba", "name": "Stray `console.log` in TS/JS \u2014 NESTeq/nexus-ingester/scripts/extract-conversation.js:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 NESTeq/nexus-ingester/scripts/extract-conversation.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-b2fd1b5439414d77", "name": "Stray `console.log` in TS/JS \u2014 NESTeq/nexus-ingester/src/index.js:138", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 NESTeq/nexus-ingester/src/index.js:138"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6d970fea90140439", "name": "Stray `console.log` in TS/JS \u2014 NESTdesktop/local-agent.js:147", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 NESTdesktop/local-agent.js:147"}, "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-b1b727eb5406692d", "name": "Stray `console.log` in TS/JS \u2014 NESTdesktop/dashboard/serve.js:165", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 NESTdesktop/dashboard/serve.js:165"}, "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-a6673f3713a57378", "name": "Icon-only button without accessible name \u2014 NESTdesktop/dashboard/js/chat.js:433", "shortDescription": {"text": "Icon-only button without accessible name \u2014 NESTdesktop/dashboard/js/chat.js:433"}, "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-cf3fae2874de7a78", "name": "Stray `console.log` in TS/JS \u2014 NESTdesktop/dashboard/js/chat.js:1339", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 NESTdesktop/dashboard/js/chat.js:1339"}, "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-1d992d14047b40ec", "name": "Icon-only button without accessible name \u2014 NESTdesktop/dashboard/js/code.js:791", "shortDescription": {"text": "Icon-only button without accessible name \u2014 NESTdesktop/dashboard/js/code.js:791"}, "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-a3ed0f5f6a845779", "name": "Stray `console.log` in TS/JS \u2014 NESTdesktop/dashboard/js/code.js:709", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 NESTdesktop/dashboard/js/code.js:709"}, "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-52256372ba9e5874", "name": "Stray `console.log` in TS/JS \u2014 NESTcode/nestcode-cli/src/index.jsx:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 NESTcode/nestcode-cli/src/index.jsx: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-a5a4e73a1712e4c2", "name": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/housekeeping.html:176", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/housekeeping.html:176"}, "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-932c133433a4c10f", "name": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/chats.html:342", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/chats.html:342"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-09c222472f465579", "name": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/gallery.html:217", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/gallery.html:217"}, "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-de4aeed88539cfc0", "name": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/autonomous.html:466", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/autonomous.html:466"}, "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-de6f85349f298a53", "name": "Insecure pattern 'insert_adjacent_html' in dashboard/src/autonomous.html:772", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in dashboard/src/autonomous.html:772"}, "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-130f16abd6129ccc", "name": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/fox.html:559", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/fox.html:559"}, "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-6a7499b50a493335", "name": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/alex.html:779", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/alex.html:779"}, "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-255b0fda85ac7579", "name": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/writing.html:348", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/writing.html:348"}, "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-065c42e8c07463d1", "name": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/us.html:405", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/us.html:405"}, "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-d356ce02b41c7c38", "name": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/shadow.html:334", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/shadow.html:334"}, "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-47ae243d0396e1e5", "name": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/orb.html:473", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/orb.html:473"}, "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-28ceaa5d0d8ac660", "name": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/index.html:698", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/index.html:698"}, "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-88c08930f61bc38a", "name": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/chat.html:233", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/chat.html:233"}, "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-b7ad54b63a2d3d95", "name": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/neural.html:419", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/neural.html:419"}, "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-8e27658b8ea74876", "name": "Possible secret in dashboard/src/js/shadow-api.js", "shortDescription": {"text": "Possible secret in dashboard/src/js/shadow-api.js"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-502d63e3d205b6af", "name": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/js/chat.js:182", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/js/chat.js:182"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cf8b188e5d8b9e0b", "name": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/js/code.js:88", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/js/code.js:88"}, "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-6c39bdc37c57b22d", "name": "Insecure pattern 'cors_wildcard' in NEST-gateway/src/index.ts:42", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in NEST-gateway/src/index.ts:42"}, "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-46eaa0e7140bde5b", "name": "Insecure pattern 'cors_wildcard' in NEST-gateway/src/chat.ts:327", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in NEST-gateway/src/chat.ts:327"}, "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-502ef51b9afa090d", "name": "Insecure pattern 'cors_wildcard' in NEST-gateway/src/tts.ts:9", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in NEST-gateway/src/tts.ts:9"}, "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-db351e12c5e1fb42", "name": "Insecure pattern 'cors_wildcard' in NEST-gateway/src/mobile.ts:29", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in NEST-gateway/src/mobile.ts:29"}, "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-70dc114eb3d3b1e9", "name": "Insecure pattern 'cors_wildcard' in NEST-gateway/src/daemon.ts:334", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in NEST-gateway/src/daemon.ts:334"}, "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-7d4425987d5c4cb1", "name": "Insecure pattern 'cors_wildcard' in NEST-discord/worker/index.ts:325", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in NEST-discord/worker/index.ts:325"}, "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-5207f5711fe13e69", "name": "Insecure pattern 'node_child_process' in NESTeq/workers/rooms-worker/scripts/backfill.mjs:13", "shortDescription": {"text": "Insecure pattern 'node_child_process' in NESTeq/workers/rooms-worker/scripts/backfill.mjs: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-18bb4318a71c6eca", "name": "Insecure pattern 'cors_wildcard' in NESTeq/workers/rooms-worker/src/index.ts:34", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in NESTeq/workers/rooms-worker/src/index.ts:34"}, "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-d7cc3e69301d5aa1", "name": "Insecure pattern 'cors_wildcard' in NESTeq/workers/ai-mind/src/index.ts:1289", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in NESTeq/workers/ai-mind/src/index.ts:1289"}, "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-3eae6c2ee6f92178", "name": "Insecure pattern 'cors_wildcard' in NESTeq/workers/discord-mcp/src/index.ts:325", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in NESTeq/workers/discord-mcp/src/index.ts:325"}, "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-7369e23174aeb8fc", "name": "Insecure pattern 'cors_wildcard' in NESTeq/workers/fox-mind/src/index.js:15", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in NESTeq/workers/fox-mind/src/index.js:15"}, "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-73be26c7ff5d2d45", "name": "Insecure pattern 'direct_innerhtml_assignment' in NESTeq/dashboard/housekeeping.html:146", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTeq/dashboard/housekeeping.html:146"}, "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-341376b78ac4e812", "name": "Insecure pattern 'direct_innerhtml_assignment' in NESTeq/dashboard/fox.html:439", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTeq/dashboard/fox.html:439"}, "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-b497aa8bb7e18204", "name": "Insecure pattern 'direct_innerhtml_assignment' in NESTeq/dashboard/alex.html:487", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTeq/dashboard/alex.html:487"}, "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-27c2633c5c4708e5", "name": "Insecure pattern 'direct_innerhtml_assignment' in NESTeq/dashboard/us.html:401", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTeq/dashboard/us.html:401"}, "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-fcf32d12ebbd2a54", "name": "Insecure pattern 'direct_innerhtml_assignment' in NESTeq/dashboard/index.html:242", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTeq/dashboard/index.html:242"}, "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-d3c73fdfa39e7a44", "name": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/housekeeping.html:192", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/housekeeping.html:192"}, "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-59e28da03c9acaca", "name": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/human.html:559", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/human.html:559"}, "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-c1f8b1ff6d5a9bad", "name": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/gallery.html:216", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/gallery.html:216"}, "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-8141f6637d669456", "name": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/autonomous.html:466", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/autonomous.html:466"}, "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-a8ec1e0539423afb", "name": "Insecure pattern 'insert_adjacent_html' in NESTdesktop/dashboard/autonomous.html:772", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in NESTdesktop/dashboard/autonomous.html:772"}, "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-20606b887c0e0d03", "name": "Insecure pattern 'cors_wildcard' in NESTdesktop/dashboard/serve.js:59", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in NESTdesktop/dashboard/serve.js:59"}, "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-ac9f09d1489a9b47", "name": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/writing.html:348", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/writing.html:348"}, "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-7df6512b1c8ef525", "name": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/us.html:404", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/us.html:404"}, "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-858220f536c0553b", "name": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/orb.html:473", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/orb.html:473"}, "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-c9e8e71c34f166ca", "name": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/index.html:695", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/index.html:695"}, "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-ca10e3dc44fa4054", "name": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/companion.html:779", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/companion.html:779"}, "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-5c9cddd64c297a46", "name": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/setup.html:404", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/setup.html:404"}, "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-8fabca2b7c2bd4fb", "name": "Insecure pattern 'insert_adjacent_html' in NESTdesktop/dashboard/setup.html:735", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in NESTdesktop/dashboard/setup.html:735"}, "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-7ff675ca057fc6f3", "name": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/chat.html:256", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/chat.html:256"}, "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-4af1e71988b32998", "name": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/neural.html:419", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/neural.html:419"}, "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-3932fac62e6ef496", "name": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/js/config.js:125", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/js/config.js:125"}, "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-868662dbb8a31ead", "name": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/js/chat.js:191", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/js/chat.js:191"}, "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-f7901310406523be", "name": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/js/code.js:86", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/js/code.js:86"}, "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-93aa17b7c77d0b3f", "name": "Insecure pattern 'cors_wildcard' in NESTdesktop/dashboard/functions/api/chat/completions.js:14", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in NESTdesktop/dashboard/functions/api/chat/completions.js:14"}, "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-39f8823ba86cc7cc", "name": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/share/mind-health-card.html:268", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/share/mind-health-card.html:268"}, "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-1c593e7052be3704", "name": "Insecure pattern 'node_child_process' in NESTdesktop/pc-tools/shell.js:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in NESTdesktop/pc-tools/shell.js:2"}, "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-520a56ac6288443c", "name": "Insecure pattern 'node_child_process' in NESTdesktop/pc-tools/screenshot.js:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in NESTdesktop/pc-tools/screenshot.js:2"}, "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-6767bf6d70aa92d9", "name": "Insecure pattern 'node_child_process' in NESTdesktop/pc-tools/grep.js:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in NESTdesktop/pc-tools/grep.js:2"}, "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-5ea6bff29f44dc95", "name": "Insecure pattern 'node_child_process' in NESTdesktop/pc-tools/app.js:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in NESTdesktop/pc-tools/app.js:2"}, "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-fd06ef1c5d7f776c", "name": "Insecure pattern 'node_child_process' in NESTdesktop/pc-tools/process.js:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in NESTdesktop/pc-tools/process.js:2"}, "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-973a0ab7918f909f", "name": "Insecure pattern 'node_child_process' in NESTdesktop/pc-tools/clipboard.js:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in NESTdesktop/pc-tools/clipboard.js:2"}, "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-8bd2f689dd8662f8", "name": "Insecure pattern 'direct_innerhtml_assignment' in NESTsoul/dashboard/soul-tab.html:95", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTsoul/dashboard/soul-tab.html:95"}, "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-d492eb228384f02a", "name": "Insecure pattern 'cors_wildcard' in NESTsoul/src/nestsoul-endpoints.ts:24", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in NESTsoul/src/nestsoul-endpoints.ts:24"}, "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-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8f0d0dfa9df364bf", "name": "Very large file: dashboard/src/js/code.js (1645 lines)", "shortDescription": {"text": "Very large file: dashboard/src/js/code.js (1645 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-6cedb973200e29a7", "name": "Very large file: NEST-gateway/src/daemon.ts (2322 lines)", "shortDescription": {"text": "Very large file: NEST-gateway/src/daemon.ts (2322 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-b11e613682caf24d", "name": "Very large file: NESTeq/workers/ai-mind/src/index.ts (2745 lines)", "shortDescription": {"text": "Very large file: NESTeq/workers/ai-mind/src/index.ts (2745 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-98dc73ae9bb3f652", "name": "Very large file: NESTdesktop/dashboard/js/chat.js (1457 lines)", "shortDescription": {"text": "Very large file: NESTdesktop/dashboard/js/chat.js (1457 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-39097634ceb81df9", "name": "Very large file: NESTdesktop/dashboard/js/code.js (1619 lines)", "shortDescription": {"text": "Very large file: NESTdesktop/dashboard/js/code.js (1619 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": "1 test file(s) for 155 source file(s) (ratio 0.01). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7c33b67ab52d5db4", "name": "Node manifest has dependencies but no lockfile: NEST-gateway/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: NEST-gateway/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ddf52d5af5b08a15", "name": "Node manifest has dependencies but no lockfile: NEST-discord/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: NEST-discord/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a8e1efda12c8b8ff", "name": "Node manifest has dependencies but no lockfile: NESTeq/workers/rooms-worker/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: NESTeq/workers/rooms-worker/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b7d9cf5929e5dd98", "name": "Node manifest has dependencies but no lockfile: NESTeq/workers/garmin-sync/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: NESTeq/workers/garmin-sync/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-84842db500208ae5", "name": "Node manifest has dependencies but no lockfile: NESTeq/workers/discord-mcp/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: NESTeq/workers/discord-mcp/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a193c1d7d098bc22", "name": "Node manifest has dependencies but no lockfile: NESTcode/nestcode-cli/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: NESTcode/nestcode-cli/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 105 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: ci, tests, lockfile. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing ci, tests, lockfile. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8866f51a5e8468a0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 dashboard/src/js/pc.js:116", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 dashboard/src/js/pc.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-1267ce0f1eaf5063", "name": "`fetch()` without try/.catch or AbortSignal \u2014 dashboard/src/js/chat.js:341", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 dashboard/src/js/chat.js:341"}, "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-c5fd050dc5031670", "name": "`fetch()` without try/.catch or AbortSignal \u2014 dashboard/src/js/api.js:61", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 dashboard/src/js/api.js:61"}, "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-4b1332443f2538b2", "name": "Commented-code block (6 lines) in NEST-gateway/src/index.ts:252", "shortDescription": {"text": "Commented-code block (6 lines) in NEST-gateway/src/index.ts:252"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0042eacde6135fb8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/index.ts:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/index.ts:48"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-28e2614aca642933", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/openrouter.ts:4", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/openrouter.ts:4"}, "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-4d3108c3d6447044", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/chat.ts:435", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/chat.ts:435"}, "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-78c9b188a52514e9", "name": "Legacy-named symbol `eleven_multilingual_v2` in NEST-gateway/src/tts.ts:73", "shortDescription": {"text": "Legacy-named symbol `eleven_multilingual_v2` in NEST-gateway/src/tts.ts:73"}, "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-00407c414af9dc63", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/tts.ts:65", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/tts.ts:65"}, "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-019bfb0cbce90ca6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/proxy.ts:77", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/proxy.ts:77"}, "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-9a823f07eb9bc9de", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/daemon.ts:263", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/daemon.ts:263"}, "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-1527382d784cfc93", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/tools/cloudflare.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/tools/cloudflare.ts:13"}, "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-304d1b425b827f63", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/tools/discord.ts:18", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/tools/discord.ts: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-13e4e3af1b1a36ed", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/tools/execute.ts:41", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/tools/execute.ts:41"}, "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-62d1c4d1ce3a94f3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/worker/index.ts:135", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/worker/index.ts:135"}, "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-13200f5f7bd2006e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/worker/discord.ts:49", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/worker/discord.ts:49"}, "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-e92e65a71a1c2a71", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/src/toolList.ts:113", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/src/toolList.ts:113"}, "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-708506109a0b78ef", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/src/tools/server.ts:21", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/src/tools/server.ts:21"}, "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-61fbc8e0ec7b6aaa", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/src/tools/channel.ts:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/src/tools/channel.ts:27"}, "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-21b26f100fcc956c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/src/tools/reactions.ts:25", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/src/tools/reactions.ts:25"}, "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-8ea63a804ddf05a3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/src/tools/send-message.ts:16", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/src/tools/send-message.ts:16"}, "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-8024bb3b39e9f69a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/src/tools/webhooks.ts:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/src/tools/webhooks.ts:33"}, "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-2065aaf7b17f8021", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/src/tools/forum.ts:17", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/src/tools/forum.ts: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-3681001e3e57a831", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/workers/rooms-worker/scripts/backfill.mjs:51", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/workers/rooms-worker/scripts/backfill.mjs:51"}, "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-9757584c36b20319", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/workers/rooms-worker/src/index.ts:459", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/workers/rooms-worker/src/index.ts:459"}, "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-2b25572bed835910", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/workers/ai-mind/src/index.ts:1283", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/workers/ai-mind/src/index.ts:1283"}, "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-e29baea4890b9ace", "name": "Commented-code block (6 lines) in NESTeq/workers/ai-mind/src/ade.ts:28", "shortDescription": {"text": "Commented-code block (6 lines) in NESTeq/workers/ai-mind/src/ade.ts:28"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fe61a39f0cdc842a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/workers/ai-mind/src/spotify.ts:123", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/workers/ai-mind/src/spotify.ts:123"}, "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-12abc014352f88fc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/workers/garmin-sync/src/index.ts:128", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/workers/garmin-sync/src/index.ts:128"}, "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-1df09696c5d5702b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/workers/discord-mcp/src/index.ts:135", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/workers/discord-mcp/src/index.ts:135"}, "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-8de7939c80c8c9ef", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/workers/discord-mcp/src/discord.ts:49", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/workers/discord-mcp/src/discord.ts:49"}, "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-6e8300d381d379f0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/dashboard/js/api.js:18", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/dashboard/js/api.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-bc3a8373a4d59a02", "name": "Commented-code block (5 lines) in NESTeq/nexus-ingester/src/parse-grok.js:7", "shortDescription": {"text": "Commented-code block (5 lines) in NESTeq/nexus-ingester/src/parse-grok.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-8380f5b2d74c3fe9", "name": "Commented-code block (5 lines) in NESTeq/nexus-ingester/src/index.js:152", "shortDescription": {"text": "Commented-code block (5 lines) in NESTeq/nexus-ingester/src/index.js:152"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ba91b071699516b0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/nexus-ingester/src/api.js:30", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/nexus-ingester/src/api.js:30"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d222ee87507d0111", "name": "Commented-code block (16 lines) in NESTeq/nexus-ingester/src/parse-chatgpt.js:8", "shortDescription": {"text": "Commented-code block (16 lines) in NESTeq/nexus-ingester/src/parse-chatgpt.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-48835fff80ab5f64", "name": "Commented-code block (5 lines) in NESTeq/nexus-ingester/src/parse-claude-native.js:11", "shortDescription": {"text": "Commented-code block (5 lines) in NESTeq/nexus-ingester/src/parse-claude-native.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-66d22b757b991a08", "name": "Legacy-named symbol `migrateLegacy` in NESTdesktop/local-agent.js:117", "shortDescription": {"text": "Legacy-named symbol `migrateLegacy` in NESTdesktop/local-agent.js:117"}, "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-66faafd572eb015b", "name": "Commented-code block (5 lines) in NESTdesktop/local-agent.js:499", "shortDescription": {"text": "Commented-code block (5 lines) in NESTdesktop/local-agent.js:499"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1de15fd5e31abd85", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NESTdesktop/local-agent.js:408", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTdesktop/local-agent.js:408"}, "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-bd60b8a57dbc052f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NESTdesktop/dashboard/js/pc.js:116", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTdesktop/dashboard/js/pc.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-b694a4571a5a7697", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NESTdesktop/dashboard/js/config.js:42", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTdesktop/dashboard/js/config.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-e71bb6acf92421f0", "name": "Commented-code block (8 lines) in NESTdesktop/dashboard/js/chat.js:697", "shortDescription": {"text": "Commented-code block (8 lines) in NESTdesktop/dashboard/js/chat.js:697"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e715d33a2793d1da", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NESTdesktop/dashboard/js/chat.js:313", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTdesktop/dashboard/js/chat.js:313"}, "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-e82223c9797a37c8", "name": "Commented-code block (5 lines) in NESTchat/chat-handler.example.ts:235", "shortDescription": {"text": "Commented-code block (5 lines) in NESTchat/chat-handler.example.ts:235"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-09a966439847b1f5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NESTchat/chat-handler.example.ts:313", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTchat/chat-handler.example.ts:313"}, "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-9f3a02311e9cb470", "name": "`fetch()` without try/.catch or AbortSignal \u2014 NESTsoul/src/nestsoul-endpoints.ts:97", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTsoul/src/nestsoul-endpoints.ts:97"}, "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-9fffdbd9c2c205fe", "name": "Dangling fetch: GET https://your-garmin-sync.workers.dev/status (dashboard/src/js/api.js:269)", "shortDescription": {"text": "Dangling fetch: GET https://your-garmin-sync.workers.dev/status (dashboard/src/js/api.js:269)"}, "fullDescription": {"text": "`dashboard/src/js/api.js:269` calls `GET https://your-garmin-sync.workers.dev/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/your-garmin-sync.workers.dev/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-f60e695d8b2b28f9", "name": "Dangling fetch: GET https://your-garmin-sync.workers.dev/status (NESTeq/dashboard/js/api.js:193)", "shortDescription": {"text": "Dangling fetch: GET https://your-garmin-sync.workers.dev/status (NESTeq/dashboard/js/api.js:193)"}, "fullDescription": {"text": "`NESTeq/dashboard/js/api.js:193` calls `GET https://your-garmin-sync.workers.dev/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/your-garmin-sync.workers.dev/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-d93828d19e75c4d8", "name": "Dangling fetch: GET https://openrouter.ai/api/v1/models (NESTdesktop/local-agent.js:201)", "shortDescription": {"text": "Dangling fetch: GET https://openrouter.ai/api/v1/models (NESTdesktop/local-agent.js:201)"}, "fullDescription": {"text": "`NESTdesktop/local-agent.js:201` calls `GET https://openrouter.ai/api/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:/openrouter.ai/api/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-defc1dfe08ad29ca", "name": "Dangling fetch: GET https://api.elevenlabs.io/v1/user (NESTdesktop/local-agent.js:220)", "shortDescription": {"text": "Dangling fetch: GET https://api.elevenlabs.io/v1/user (NESTdesktop/local-agent.js:220)"}, "fullDescription": {"text": "`NESTdesktop/local-agent.js:220` calls `GET https://api.elevenlabs.io/v1/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.elevenlabs.io/v1/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-f7e0f20a2d82e7f7", "name": "Dangling fetch: POST https://api.tavily.com/search (NESTdesktop/pc-tools/web.js:61)", "shortDescription": {"text": "Dangling fetch: POST https://api.tavily.com/search (NESTdesktop/pc-tools/web.js:61)"}, "fullDescription": {"text": "`NESTdesktop/pc-tools/web.js:61` calls `POST https://api.tavily.com/search` 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.tavily.com/search`\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-4529c5be1fe33b60", "name": "Dangling fetch: GET https://openrouter.ai/api/v1/... (NEST-gateway/src/openrouter.ts:4)", "shortDescription": {"text": "Dangling fetch: GET https://openrouter.ai/api/v1/... (NEST-gateway/src/openrouter.ts:4)"}, "fullDescription": {"text": "`NEST-gateway/src/openrouter.ts:4` calls `GET https://openrouter.ai/api/v1/...` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/openrouter.ai/api/v1/...`\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-23ab6be3e82b60ab", "name": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/chat.ts:435)", "shortDescription": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/chat.ts:435)"}, "fullDescription": {"text": "`NEST-gateway/src/chat.ts:435` calls `POST https://openrouter.ai/api/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:/openrouter.ai/api/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-13b963068323e6f8", "name": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/chat.ts:516)", "shortDescription": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/chat.ts:516)"}, "fullDescription": {"text": "`NEST-gateway/src/chat.ts:516` calls `POST https://openrouter.ai/api/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:/openrouter.ai/api/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-d89f89aa86cf143b", "name": "Dangling fetch: POST https://api.elevenlabs.io/v1/text-to-speech/${voiceId} (NEST-gateway/src/tts.ts:65)", "shortDescription": {"text": "Dangling fetch: POST https://api.elevenlabs.io/v1/text-to-speech/${voiceId} (NEST-gateway/src/tts.ts:65)"}, "fullDescription": {"text": "`NEST-gateway/src/tts.ts:65` calls `POST https://api.elevenlabs.io/v1/text-to-speech/${voiceId}` 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.elevenlabs.io/v1/text-to-speech/<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-0b1fcec324132600", "name": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/daemon.ts:574)", "shortDescription": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/daemon.ts:574)"}, "fullDescription": {"text": "`NEST-gateway/src/daemon.ts:574` calls `POST https://openrouter.ai/api/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:/openrouter.ai/api/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-da05cf41cb772431", "name": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/daemon.ts:699)", "shortDescription": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/daemon.ts:699)"}, "fullDescription": {"text": "`NEST-gateway/src/daemon.ts:699` calls `POST https://openrouter.ai/api/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:/openrouter.ai/api/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-845d068e15dd5fdd", "name": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/daemon.ts:1181)", "shortDescription": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/daemon.ts:1181)"}, "fullDescription": {"text": "`NEST-gateway/src/daemon.ts:1181` calls `POST https://openrouter.ai/api/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:/openrouter.ai/api/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-8a4166e64aa0d5c4", "name": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/daemon.ts:1502)", "shortDescription": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/daemon.ts:1502)"}, "fullDescription": {"text": "`NEST-gateway/src/daemon.ts:1502` calls `POST https://openrouter.ai/api/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:/openrouter.ai/api/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-2b4677c3c5dc280d", "name": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/daemon.ts:1554)", "shortDescription": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/daemon.ts:1554)"}, "fullDescription": {"text": "`NEST-gateway/src/daemon.ts:1554` calls `POST https://openrouter.ai/api/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:/openrouter.ai/api/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-a070672bfccdc321", "name": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/daemon.ts:2119)", "shortDescription": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/daemon.ts:2119)"}, "fullDescription": {"text": "`NEST-gateway/src/daemon.ts:2119` calls `POST https://openrouter.ai/api/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:/openrouter.ai/api/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-d987fc9ac43751c5", "name": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/tools/execute.ts:251)", "shortDescription": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/tools/execute.ts:251)"}, "fullDescription": {"text": "`NEST-gateway/src/tools/execute.ts:251` calls `POST https://openrouter.ai/api/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:/openrouter.ai/api/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-802014b4dc93f586", "name": "Dangling fetch: POST https://api.tavily.com/search (NEST-gateway/src/tools/execute.ts:387)", "shortDescription": {"text": "Dangling fetch: POST https://api.tavily.com/search (NEST-gateway/src/tools/execute.ts:387)"}, "fullDescription": {"text": "`NEST-gateway/src/tools/execute.ts:387` calls `POST https://api.tavily.com/search` 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.tavily.com/search`\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-95eda336c8f6f67b", "name": "Dangling fetch: POST /channels/${channelId}/messages (NEST-discord/worker/discord.ts:93)", "shortDescription": {"text": "Dangling fetch: POST /channels/${channelId}/messages (NEST-discord/worker/discord.ts:93)"}, "fullDescription": {"text": "`NEST-discord/worker/discord.ts:93` calls `POST /channels/${channelId}/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: `/channels/<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-b8e9263077d66a2b", "name": "Dangling fetch: PUT /channels/${channelId}/messages/${messageId}/reactions/${encodedEmoji}/@me (NEST-discord/worker/disc", "shortDescription": {"text": "Dangling fetch: PUT /channels/${channelId}/messages/${messageId}/reactions/${encodedEmoji}/@me (NEST-discord/worker/discord.ts:135)"}, "fullDescription": {"text": "`NEST-discord/worker/discord.ts:135` calls `PUT /channels/${channelId}/messages/${messageId}/reactions/${encodedEmoji}/@me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/channels/<p>/messages/<p>/reactions/<p>/@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-008466513807d264", "name": "Dangling fetch: GET /users/@me/guilds (NEST-discord/worker/discord.ts:144)", "shortDescription": {"text": "Dangling fetch: GET /users/@me/guilds (NEST-discord/worker/discord.ts:144)"}, "fullDescription": {"text": "`NEST-discord/worker/discord.ts:144` calls `GET /users/@me/guilds` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/@me/guilds`\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-829ea6d92d2951c2", "name": "Dangling fetch: GET /guilds/${guildId}?with_counts=true (NEST-discord/worker/discord.ts:148)", "shortDescription": {"text": "Dangling fetch: GET /guilds/${guildId}?with_counts=true (NEST-discord/worker/discord.ts:148)"}, "fullDescription": {"text": "`NEST-discord/worker/discord.ts:148` calls `GET /guilds/${guildId}?with_counts=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/guilds/<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-6c9b45b9b2902a04", "name": "Dangling fetch: GET /guilds/${guildId}/channels (NEST-discord/worker/discord.ts:152)", "shortDescription": {"text": "Dangling fetch: GET /guilds/${guildId}/channels (NEST-discord/worker/discord.ts:152)"}, "fullDescription": {"text": "`NEST-discord/worker/discord.ts:152` calls `GET /guilds/${guildId}/channels` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/guilds/<p>/channels`\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-24bab5148eeec0b3", "name": "Dangling fetch: POST https://accounts.spotify.com/api/token (NESTeq/workers/ai-mind/src/spotify.ts:57)", "shortDescription": {"text": "Dangling fetch: POST https://accounts.spotify.com/api/token (NESTeq/workers/ai-mind/src/spotify.ts:57)"}, "fullDescription": {"text": "`NESTeq/workers/ai-mind/src/spotify.ts:57` calls `POST https://accounts.spotify.com/api/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:/accounts.spotify.com/api/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-9c552394aa1ce572", "name": "Dangling fetch: POST https://accounts.spotify.com/api/token (NESTeq/workers/ai-mind/src/spotify.ts:123)", "shortDescription": {"text": "Dangling fetch: POST https://accounts.spotify.com/api/token (NESTeq/workers/ai-mind/src/spotify.ts:123)"}, "fullDescription": {"text": "`NESTeq/workers/ai-mind/src/spotify.ts:123` calls `POST https://accounts.spotify.com/api/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:/accounts.spotify.com/api/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-0fd928e7ac25a239", "name": "Dangling fetch: GET https://api.spotify.com/v1${endpoint} (NESTeq/workers/ai-mind/src/spotify.ts:163)", "shortDescription": {"text": "Dangling fetch: GET https://api.spotify.com/v1${endpoint} (NESTeq/workers/ai-mind/src/spotify.ts:163)"}, "fullDescription": {"text": "`NESTeq/workers/ai-mind/src/spotify.ts:163` calls `GET https://api.spotify.com/v1${endpoint}` 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.spotify.com/v1/<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-3b7c88733408ab6d", "name": "Dangling fetch: GET https://api.spotify.com/v1/me (NESTeq/workers/ai-mind/src/spotify.ts:172)", "shortDescription": {"text": "Dangling fetch: GET https://api.spotify.com/v1/me (NESTeq/workers/ai-mind/src/spotify.ts:172)"}, "fullDescription": {"text": "`NESTeq/workers/ai-mind/src/spotify.ts:172` calls `GET https://api.spotify.com/v1/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:/api.spotify.com/v1/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-2abdd966e834e561", "name": "Dangling fetch: POST /channels/${channelId}/messages (NESTeq/workers/discord-mcp/src/discord.ts:93)", "shortDescription": {"text": "Dangling fetch: POST /channels/${channelId}/messages (NESTeq/workers/discord-mcp/src/discord.ts:93)"}, "fullDescription": {"text": "`NESTeq/workers/discord-mcp/src/discord.ts:93` calls `POST /channels/${channelId}/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: `/channels/<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-29197b76729853d1", "name": "Dangling fetch: PUT /channels/${channelId}/messages/${messageId}/reactions/${encodedEmoji}/@me (NESTeq/workers/discord-m", "shortDescription": {"text": "Dangling fetch: PUT /channels/${channelId}/messages/${messageId}/reactions/${encodedEmoji}/@me (NESTeq/workers/discord-mcp/src/discord.ts:135)"}, "fullDescription": {"text": "`NESTeq/workers/discord-mcp/src/discord.ts:135` calls `PUT /channels/${channelId}/messages/${messageId}/reactions/${encodedEmoji}/@me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/channels/<p>/messages/<p>/reactions/<p>/@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-8ca96ccd4bef21b5", "name": "Dangling fetch: GET /users/@me/guilds (NESTeq/workers/discord-mcp/src/discord.ts:144)", "shortDescription": {"text": "Dangling fetch: GET /users/@me/guilds (NESTeq/workers/discord-mcp/src/discord.ts:144)"}, "fullDescription": {"text": "`NESTeq/workers/discord-mcp/src/discord.ts:144` calls `GET /users/@me/guilds` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/@me/guilds`\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-06a7d0055e9bf761", "name": "Dangling fetch: GET /guilds/${guildId}?with_counts=true (NESTeq/workers/discord-mcp/src/discord.ts:148)", "shortDescription": {"text": "Dangling fetch: GET /guilds/${guildId}?with_counts=true (NESTeq/workers/discord-mcp/src/discord.ts:148)"}, "fullDescription": {"text": "`NESTeq/workers/discord-mcp/src/discord.ts:148` calls `GET /guilds/${guildId}?with_counts=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/guilds/<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-841a877d15e7ce70", "name": "Dangling fetch: GET /guilds/${guildId}/channels (NESTeq/workers/discord-mcp/src/discord.ts:152)", "shortDescription": {"text": "Dangling fetch: GET /guilds/${guildId}/channels (NESTeq/workers/discord-mcp/src/discord.ts:152)"}, "fullDescription": {"text": "`NESTeq/workers/discord-mcp/src/discord.ts:152` calls `GET /guilds/${guildId}/channels` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/guilds/<p>/channels`\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-5b720b8b8072d4dc", "name": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NESTchat/chat-handler.example.ts:313)", "shortDescription": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NESTchat/chat-handler.example.ts:313)"}, "fullDescription": {"text": "`NESTchat/chat-handler.example.ts:313` calls `POST https://openrouter.ai/api/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:/openrouter.ai/api/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-4d6f588e47430e1a", "name": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NESTchat/chat-handler.example.ts:393)", "shortDescription": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NESTchat/chat-handler.example.ts:393)"}, "fullDescription": {"text": "`NESTchat/chat-handler.example.ts:393` calls `POST https://openrouter.ai/api/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:/openrouter.ai/api/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-c2cbc8dac9a38574", "name": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NESTsoul/src/nestsoul-endpoints.ts:97)", "shortDescription": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NESTsoul/src/nestsoul-endpoints.ts:97)"}, "fullDescription": {"text": "`NESTsoul/src/nestsoul-endpoints.ts:97` calls `POST https://openrouter.ai/api/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:/openrouter.ai/api/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-046dda00f1450b3d", "name": "Unused endpoint: POST /chat/completions", "shortDescription": {"text": "Unused endpoint: POST /chat/completions"}, "fullDescription": {"text": "`NESTdesktop/local-agent.js` declares `POST /chat/completions` 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-a7cadc43bf9f2d89", "name": "Unused endpoint: ALL /api/{*path}", "shortDescription": {"text": "Unused endpoint: ALL /api/{*path}"}, "fullDescription": {"text": "`NESTdesktop/local-agent.js` declares `ALL /api/{*path}` 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-0cc3eeb41684e2bd", "name": "Unused endpoint: ALL /v1/{*path}", "shortDescription": {"text": "Unused endpoint: ALL /v1/{*path}"}, "fullDescription": {"text": "`NESTdesktop/local-agent.js` declares `ALL /v1/{*path}` 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-e92f893918d20e6c", "name": "Unused endpoint: USE /pc", "shortDescription": {"text": "Unused endpoint: USE /pc"}, "fullDescription": {"text": "`NESTdesktop/local-agent.js` declares `USE /pc` 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-a73cef199d37d47f", "name": "Unused endpoint: POST /shell", "shortDescription": {"text": "Unused endpoint: POST /shell"}, "fullDescription": {"text": "`NESTdesktop/pc-tools/shell.js` declares `POST /shell` 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-4069bb9c1c1e4187", "name": "Unused endpoint: GET /screenshot", "shortDescription": {"text": "Unused endpoint: GET /screenshot"}, "fullDescription": {"text": "`NESTdesktop/pc-tools/screenshot.js` declares `GET /screenshot` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-13db345156724042", "name": "Unused endpoint: POST /grep", "shortDescription": {"text": "Unused endpoint: POST /grep"}, "fullDescription": {"text": "`NESTdesktop/pc-tools/grep.js` declares `POST /grep` 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-3dfa27698203a144", "name": "Unused endpoint: POST /read", "shortDescription": {"text": "Unused endpoint: POST /read"}, "fullDescription": {"text": "`NESTdesktop/pc-tools/file-read.js` declares `POST /read` 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-df0b14486654128d", "name": "Unused endpoint: POST /launch", "shortDescription": {"text": "Unused endpoint: POST /launch"}, "fullDescription": {"text": "`NESTdesktop/pc-tools/app.js` declares `POST /launch` 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-d682e1d215955e6a", "name": "Unused endpoint: GET /list", "shortDescription": {"text": "Unused endpoint: GET /list"}, "fullDescription": {"text": "`NESTdesktop/pc-tools/app.js` declares `GET /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-25f11ede0ee9ec69", "name": "Unused endpoint: USE /file", "shortDescription": {"text": "Unused endpoint: USE /file"}, "fullDescription": {"text": "`NESTdesktop/pc-tools/index.js` declares `USE /file` 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-f02a079c69b52f2d", "name": "Unused endpoint: USE /", "shortDescription": {"text": "Unused endpoint: USE /"}, "fullDescription": {"text": "`NESTdesktop/pc-tools/index.js` declares `USE /` 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-32ffb23adf53caf9", "name": "Unused endpoint: USE /process", "shortDescription": {"text": "Unused endpoint: USE /process"}, "fullDescription": {"text": "`NESTdesktop/pc-tools/index.js` declares `USE /process` 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-68079190a693980d", "name": "Unused endpoint: USE /clipboard", "shortDescription": {"text": "Unused endpoint: USE /clipboard"}, "fullDescription": {"text": "`NESTdesktop/pc-tools/index.js` declares `USE /clipboard` 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-d43292933532c7da", "name": "Unused endpoint: USE /app", "shortDescription": {"text": "Unused endpoint: USE /app"}, "fullDescription": {"text": "`NESTdesktop/pc-tools/index.js` declares `USE /app` 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-d6c56f545bd04b96", "name": "Unused endpoint: USE /web", "shortDescription": {"text": "Unused endpoint: USE /web"}, "fullDescription": {"text": "`NESTdesktop/pc-tools/index.js` declares `USE /web` 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-915a0e8a98eafe02", "name": "Unused endpoint: POST /glob", "shortDescription": {"text": "Unused endpoint: POST /glob"}, "fullDescription": {"text": "`NESTdesktop/pc-tools/glob.js` declares `POST /glob` 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-f67c8b3020a57e65", "name": "Unused endpoint: POST /write", "shortDescription": {"text": "Unused endpoint: POST /write"}, "fullDescription": {"text": "`NESTdesktop/pc-tools/file-write.js` declares `POST /write` 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-ae81e427508a9951", "name": "Unused endpoint: POST /fetch", "shortDescription": {"text": "Unused endpoint: POST /fetch"}, "fullDescription": {"text": "`NESTdesktop/pc-tools/web.js` declares `POST /fetch` 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-17a164638609b114", "name": "Unused endpoint: POST /search", "shortDescription": {"text": "Unused endpoint: POST /search"}, "fullDescription": {"text": "`NESTdesktop/pc-tools/web.js` declares `POST /search` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7569de4538b5c19a", "name": "Unused endpoint: POST /kill", "shortDescription": {"text": "Unused endpoint: POST /kill"}, "fullDescription": {"text": "`NESTdesktop/pc-tools/process.js` declares `POST /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-2b1260fff9b74e7d", "name": "Unused endpoint: POST /edit", "shortDescription": {"text": "Unused endpoint: POST /edit"}, "fullDescription": {"text": "`NESTdesktop/pc-tools/file-edit.js` declares `POST /edit` 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-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`NESTdesktop/pc-tools/clipboard.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-7a009b1a56794f45", "name": "Unused endpoint: POST /", "shortDescription": {"text": "Unused endpoint: POST /"}, "fullDescription": {"text": "`NESTdesktop/pc-tools/clipboard.js` declares `POST /` 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-efbc80312c5027b5", "name": "Unused endpoint: ALL /mcp", "shortDescription": {"text": "Unused endpoint: ALL /mcp"}, "fullDescription": {"text": "`NEST-discord/src/transport.ts` declares `ALL /mcp` 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/24984"}, "properties": {"repository": "cindiekinzz-coder/NESTstack", "repoUrl": "https://github.com/cindiekinzz-coder/NESTstack", "branch": "main"}, "results": [{"ruleId": "scanner-20e249843e5f5280", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 dashboard/src/js/chat.js:441"}, "properties": {"repobilityId": "e175f10f68474321", "scanner": "scanner-primary", "fingerprint": "20e249843e5f5280", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-50afb1bb5a357ddf", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 dashboard/src/js/code.js:793"}, "properties": {"repobilityId": "9a4e42f277dd8cca", "scanner": "scanner-primary", "fingerprint": "50afb1bb5a357ddf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-a76a5c1510b30392", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/js/code.js:711"}, "properties": {"repobilityId": "63e52ad608c68775", "scanner": "scanner-primary", "fingerprint": "a76a5c1510b30392", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c59678ad943ff4e6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 NESTeq/workers/garmin-sync/src/index.ts:177"}, "properties": {"repobilityId": "03639b3888162495", "scanner": "scanner-primary", "fingerprint": "c59678ad943ff4e6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-80d4f12d118ed1d9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 NESTeq/nexus-ingester/scripts/scan-chat-html.js:32"}, "properties": {"repobilityId": "fbbd1ad7ac4e771d", "scanner": "scanner-primary", "fingerprint": "80d4f12d118ed1d9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e625997cf61121ba", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 NESTeq/nexus-ingester/scripts/extract-conversation.js:13"}, "properties": {"repobilityId": "a9ef277c66fd2bdf", "scanner": "scanner-primary", "fingerprint": "e625997cf61121ba", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b2fd1b5439414d77", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 NESTeq/nexus-ingester/src/index.js:138"}, "properties": {"repobilityId": "44529b7cf639b17a", "scanner": "scanner-primary", "fingerprint": "b2fd1b5439414d77", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6d970fea90140439", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 NESTdesktop/local-agent.js:147"}, "properties": {"repobilityId": "0e8e92d0f7c2648c", "scanner": "scanner-primary", "fingerprint": "6d970fea90140439", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b1b727eb5406692d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 NESTdesktop/dashboard/serve.js:165"}, "properties": {"repobilityId": "b070c69ad00e8d5e", "scanner": "scanner-primary", "fingerprint": "b1b727eb5406692d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a6673f3713a57378", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 NESTdesktop/dashboard/js/chat.js:433"}, "properties": {"repobilityId": "14cd5abb29fd7cbb", "scanner": "scanner-primary", "fingerprint": "a6673f3713a57378", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-cf3fae2874de7a78", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 NESTdesktop/dashboard/js/chat.js:1339"}, "properties": {"repobilityId": "1e0ccc6e73c472d3", "scanner": "scanner-primary", "fingerprint": "cf3fae2874de7a78", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1d992d14047b40ec", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 NESTdesktop/dashboard/js/code.js:791"}, "properties": {"repobilityId": "080f5664fac72963", "scanner": "scanner-primary", "fingerprint": "1d992d14047b40ec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-a3ed0f5f6a845779", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 NESTdesktop/dashboard/js/code.js:709"}, "properties": {"repobilityId": "17aec2f4825f3f40", "scanner": "scanner-primary", "fingerprint": "a3ed0f5f6a845779", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-52256372ba9e5874", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 NESTcode/nestcode-cli/src/index.jsx:13"}, "properties": {"repobilityId": "06cc69045abd4ed6", "scanner": "scanner-primary", "fingerprint": "52256372ba9e5874", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a5a4e73a1712e4c2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/housekeeping.html:176"}, "properties": {"repobilityId": "76cd36c0e9f196bb", "scanner": "scanner-primary", "fingerprint": "a5a4e73a1712e4c2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard/src/housekeeping.html"}, "region": {"startLine": 176}}}]}, {"ruleId": "scanner-932c133433a4c10f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/chats.html:342"}, "properties": {"repobilityId": "4adbd99d60686a33", "scanner": "scanner-primary", "fingerprint": "932c133433a4c10f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard/src/chats.html"}, "region": {"startLine": 342}}}]}, {"ruleId": "scanner-09c222472f465579", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/gallery.html:217"}, "properties": {"repobilityId": "a72203a4935ff8fd", "scanner": "scanner-primary", "fingerprint": "09c222472f465579", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard/src/gallery.html"}, "region": {"startLine": 217}}}]}, {"ruleId": "scanner-de4aeed88539cfc0", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/autonomous.html:466"}, "properties": {"repobilityId": "0d7d63ee730a0281", "scanner": "scanner-primary", "fingerprint": "de4aeed88539cfc0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard/src/autonomous.html"}, "region": {"startLine": 466}}}]}, {"ruleId": "scanner-de6f85349f298a53", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in dashboard/src/autonomous.html:772"}, "properties": {"repobilityId": "c3f52e4cc94a0fbd", "scanner": "scanner-primary", "fingerprint": "de6f85349f298a53", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard/src/autonomous.html"}, "region": {"startLine": 772}}}]}, {"ruleId": "scanner-130f16abd6129ccc", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/fox.html:559"}, "properties": {"repobilityId": "8397210c25f061f1", "scanner": "scanner-primary", "fingerprint": "130f16abd6129ccc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard/src/fox.html"}, "region": {"startLine": 559}}}]}, {"ruleId": "scanner-6a7499b50a493335", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/alex.html:779"}, "properties": {"repobilityId": "accce606fc7f6726", "scanner": "scanner-primary", "fingerprint": "6a7499b50a493335", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard/src/alex.html"}, "region": {"startLine": 779}}}]}, {"ruleId": "scanner-255b0fda85ac7579", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/writing.html:348"}, "properties": {"repobilityId": "8cf7e7ab1b83d4ce", "scanner": "scanner-primary", "fingerprint": "255b0fda85ac7579", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard/src/writing.html"}, "region": {"startLine": 348}}}]}, {"ruleId": "scanner-065c42e8c07463d1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/us.html:405"}, "properties": {"repobilityId": "3f31fe0b56bd3939", "scanner": "scanner-primary", "fingerprint": "065c42e8c07463d1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard/src/us.html"}, "region": {"startLine": 405}}}]}, {"ruleId": "scanner-d356ce02b41c7c38", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/shadow.html:334"}, "properties": {"repobilityId": "0fb59feb04628efb", "scanner": "scanner-primary", "fingerprint": "d356ce02b41c7c38", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard/src/shadow.html"}, "region": {"startLine": 334}}}]}, {"ruleId": "scanner-47ae243d0396e1e5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/orb.html:473"}, "properties": {"repobilityId": "a68d148b7f1e4f63", "scanner": "scanner-primary", "fingerprint": "47ae243d0396e1e5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard/src/orb.html"}, "region": {"startLine": 473}}}]}, {"ruleId": "scanner-28ceaa5d0d8ac660", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/index.html:698"}, "properties": {"repobilityId": "45c06ee972f046ff", "scanner": "scanner-primary", "fingerprint": "28ceaa5d0d8ac660", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard/src/index.html"}, "region": {"startLine": 698}}}]}, {"ruleId": "scanner-88c08930f61bc38a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/chat.html:233"}, "properties": {"repobilityId": "d8bb044e672f2e27", "scanner": "scanner-primary", "fingerprint": "88c08930f61bc38a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard/src/chat.html"}, "region": {"startLine": 233}}}]}, {"ruleId": "scanner-b7ad54b63a2d3d95", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/neural.html:419"}, "properties": {"repobilityId": "231b3b44b292d260", "scanner": "scanner-primary", "fingerprint": "b7ad54b63a2d3d95", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard/src/neural.html"}, "region": {"startLine": 419}}}]}, {"ruleId": "scanner-8e27658b8ea74876", "level": "error", "message": {"text": "Possible secret in dashboard/src/js/shadow-api.js"}, "properties": {"repobilityId": "6ee89779047a8054", "scanner": "scanner-primary", "fingerprint": "8e27658b8ea74876", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard/src/js/shadow-api.js"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-502d63e3d205b6af", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/js/chat.js:182"}, "properties": {"repobilityId": "4f914c421103edf3", "scanner": "scanner-primary", "fingerprint": "502d63e3d205b6af", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard/src/js/chat.js"}, "region": {"startLine": 182}}}]}, {"ruleId": "scanner-cf8b188e5d8b9e0b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/js/code.js:88"}, "properties": {"repobilityId": "41140c24b714136b", "scanner": "scanner-primary", "fingerprint": "cf8b188e5d8b9e0b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard/src/js/code.js"}, "region": {"startLine": 88}}}]}, {"ruleId": "scanner-6c39bdc37c57b22d", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in NEST-gateway/src/index.ts:42"}, "properties": {"repobilityId": "e1f954fa15ad7739", "scanner": "scanner-primary", "fingerprint": "6c39bdc37c57b22d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NEST-gateway/src/index.ts"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-46eaa0e7140bde5b", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in NEST-gateway/src/chat.ts:327"}, "properties": {"repobilityId": "fdd30a05507139e3", "scanner": "scanner-primary", "fingerprint": "46eaa0e7140bde5b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NEST-gateway/src/chat.ts"}, "region": {"startLine": 327}}}]}, {"ruleId": "scanner-502ef51b9afa090d", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in NEST-gateway/src/tts.ts:9"}, "properties": {"repobilityId": "928ae1f72a0c8179", "scanner": "scanner-primary", "fingerprint": "502ef51b9afa090d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NEST-gateway/src/tts.ts"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-db351e12c5e1fb42", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in NEST-gateway/src/mobile.ts:29"}, "properties": {"repobilityId": "1011ac3bf22c8259", "scanner": "scanner-primary", "fingerprint": "db351e12c5e1fb42", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NEST-gateway/src/mobile.ts"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-70dc114eb3d3b1e9", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in NEST-gateway/src/daemon.ts:334"}, "properties": {"repobilityId": "d405858aa4d5e75d", "scanner": "scanner-primary", "fingerprint": "70dc114eb3d3b1e9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NEST-gateway/src/daemon.ts"}, "region": {"startLine": 334}}}]}, {"ruleId": "scanner-7d4425987d5c4cb1", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in NEST-discord/worker/index.ts:325"}, "properties": {"repobilityId": "4034bf69a79fa507", "scanner": "scanner-primary", "fingerprint": "7d4425987d5c4cb1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NEST-discord/worker/index.ts"}, "region": {"startLine": 325}}}]}, {"ruleId": "scanner-5207f5711fe13e69", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in NESTeq/workers/rooms-worker/scripts/backfill.mjs:13"}, "properties": {"repobilityId": "fa805023091aca10", "scanner": "scanner-primary", "fingerprint": "5207f5711fe13e69", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTeq/workers/rooms-worker/scripts/backfill.mjs"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-18bb4318a71c6eca", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in NESTeq/workers/rooms-worker/src/index.ts:34"}, "properties": {"repobilityId": "63ffef0a1e948cbd", "scanner": "scanner-primary", "fingerprint": "18bb4318a71c6eca", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTeq/workers/rooms-worker/src/index.ts"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-d7cc3e69301d5aa1", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in NESTeq/workers/ai-mind/src/index.ts:1289"}, "properties": {"repobilityId": "9c1e9453fe9ce77a", "scanner": "scanner-primary", "fingerprint": "d7cc3e69301d5aa1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTeq/workers/ai-mind/src/index.ts"}, "region": {"startLine": 1289}}}]}, {"ruleId": "scanner-3eae6c2ee6f92178", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in NESTeq/workers/discord-mcp/src/index.ts:325"}, "properties": {"repobilityId": "77bd1eaa2fb58f14", "scanner": "scanner-primary", "fingerprint": "3eae6c2ee6f92178", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTeq/workers/discord-mcp/src/index.ts"}, "region": {"startLine": 325}}}]}, {"ruleId": "scanner-7369e23174aeb8fc", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in NESTeq/workers/fox-mind/src/index.js:15"}, "properties": {"repobilityId": "6ff2c4068d58387e", "scanner": "scanner-primary", "fingerprint": "7369e23174aeb8fc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTeq/workers/fox-mind/src/index.js"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-73be26c7ff5d2d45", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTeq/dashboard/housekeeping.html:146"}, "properties": {"repobilityId": "90dd01d53ef018af", "scanner": "scanner-primary", "fingerprint": "73be26c7ff5d2d45", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTeq/dashboard/housekeeping.html"}, "region": {"startLine": 146}}}]}, {"ruleId": "scanner-341376b78ac4e812", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTeq/dashboard/fox.html:439"}, "properties": {"repobilityId": "b5be37a51b3066e1", "scanner": "scanner-primary", "fingerprint": "341376b78ac4e812", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTeq/dashboard/fox.html"}, "region": {"startLine": 439}}}]}, {"ruleId": "scanner-b497aa8bb7e18204", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTeq/dashboard/alex.html:487"}, "properties": {"repobilityId": "43055881967914a0", "scanner": "scanner-primary", "fingerprint": "b497aa8bb7e18204", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTeq/dashboard/alex.html"}, "region": {"startLine": 487}}}]}, {"ruleId": "scanner-27c2633c5c4708e5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTeq/dashboard/us.html:401"}, "properties": {"repobilityId": "edfcf2cdcac6cc5a", "scanner": "scanner-primary", "fingerprint": "27c2633c5c4708e5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTeq/dashboard/us.html"}, "region": {"startLine": 401}}}]}, {"ruleId": "scanner-fcf32d12ebbd2a54", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTeq/dashboard/index.html:242"}, "properties": {"repobilityId": "fe735f468d9cbfa8", "scanner": "scanner-primary", "fingerprint": "fcf32d12ebbd2a54", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTeq/dashboard/index.html"}, "region": {"startLine": 242}}}]}, {"ruleId": "scanner-d3c73fdfa39e7a44", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/housekeeping.html:192"}, "properties": {"repobilityId": "880f8512a7e7c149", "scanner": "scanner-primary", "fingerprint": "d3c73fdfa39e7a44", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTdesktop/dashboard/housekeeping.html"}, "region": {"startLine": 192}}}]}, {"ruleId": "scanner-59e28da03c9acaca", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/human.html:559"}, "properties": {"repobilityId": "cfb265595ddae367", "scanner": "scanner-primary", "fingerprint": "59e28da03c9acaca", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTdesktop/dashboard/human.html"}, "region": {"startLine": 559}}}]}, {"ruleId": "scanner-c1f8b1ff6d5a9bad", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/gallery.html:216"}, "properties": {"repobilityId": "8c52c1b66b22870e", "scanner": "scanner-primary", "fingerprint": "c1f8b1ff6d5a9bad", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTdesktop/dashboard/gallery.html"}, "region": {"startLine": 216}}}]}, {"ruleId": "scanner-8141f6637d669456", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/autonomous.html:466"}, "properties": {"repobilityId": "7f4d64114a6e2ea0", "scanner": "scanner-primary", "fingerprint": "8141f6637d669456", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTdesktop/dashboard/autonomous.html"}, "region": {"startLine": 466}}}]}, {"ruleId": "scanner-a8ec1e0539423afb", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in NESTdesktop/dashboard/autonomous.html:772"}, "properties": {"repobilityId": "45cf9a3bf7f4046f", "scanner": "scanner-primary", "fingerprint": "a8ec1e0539423afb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTdesktop/dashboard/autonomous.html"}, "region": {"startLine": 772}}}]}, {"ruleId": "scanner-20606b887c0e0d03", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in NESTdesktop/dashboard/serve.js:59"}, "properties": {"repobilityId": "cd7a68c487124874", "scanner": "scanner-primary", "fingerprint": "20606b887c0e0d03", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTdesktop/dashboard/serve.js"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-ac9f09d1489a9b47", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/writing.html:348"}, "properties": {"repobilityId": "ee9e707d41ff279e", "scanner": "scanner-primary", "fingerprint": "ac9f09d1489a9b47", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTdesktop/dashboard/writing.html"}, "region": {"startLine": 348}}}]}, {"ruleId": "scanner-7df6512b1c8ef525", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/us.html:404"}, "properties": {"repobilityId": "1a01a8a209c3cfad", "scanner": "scanner-primary", "fingerprint": "7df6512b1c8ef525", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTdesktop/dashboard/us.html"}, "region": {"startLine": 404}}}]}, {"ruleId": "scanner-858220f536c0553b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/orb.html:473"}, "properties": {"repobilityId": "2af7970b8f7e6b83", "scanner": "scanner-primary", "fingerprint": "858220f536c0553b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTdesktop/dashboard/orb.html"}, "region": {"startLine": 473}}}]}, {"ruleId": "scanner-c9e8e71c34f166ca", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/index.html:695"}, "properties": {"repobilityId": "c6ebb6de54345908", "scanner": "scanner-primary", "fingerprint": "c9e8e71c34f166ca", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTdesktop/dashboard/index.html"}, "region": {"startLine": 695}}}]}, {"ruleId": "scanner-ca10e3dc44fa4054", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/companion.html:779"}, "properties": {"repobilityId": "4f2393bede03fd85", "scanner": "scanner-primary", "fingerprint": "ca10e3dc44fa4054", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTdesktop/dashboard/companion.html"}, "region": {"startLine": 779}}}]}, {"ruleId": "scanner-5c9cddd64c297a46", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/setup.html:404"}, "properties": {"repobilityId": "47aa6c6d5f73d483", "scanner": "scanner-primary", "fingerprint": "5c9cddd64c297a46", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTdesktop/dashboard/setup.html"}, "region": {"startLine": 404}}}]}, {"ruleId": "scanner-8fabca2b7c2bd4fb", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in NESTdesktop/dashboard/setup.html:735"}, "properties": {"repobilityId": "d013b46cdc24c7d0", "scanner": "scanner-primary", "fingerprint": "8fabca2b7c2bd4fb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTdesktop/dashboard/setup.html"}, "region": {"startLine": 735}}}]}, {"ruleId": "scanner-7ff675ca057fc6f3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/chat.html:256"}, "properties": {"repobilityId": "a77fb787f2e89eac", "scanner": "scanner-primary", "fingerprint": "7ff675ca057fc6f3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTdesktop/dashboard/chat.html"}, "region": {"startLine": 256}}}]}, {"ruleId": "scanner-4af1e71988b32998", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/neural.html:419"}, "properties": {"repobilityId": "4da53e2accbfe999", "scanner": "scanner-primary", "fingerprint": "4af1e71988b32998", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTdesktop/dashboard/neural.html"}, "region": {"startLine": 419}}}]}, {"ruleId": "scanner-3932fac62e6ef496", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/js/config.js:125"}, "properties": {"repobilityId": "4a3723601052a64e", "scanner": "scanner-primary", "fingerprint": "3932fac62e6ef496", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTdesktop/dashboard/js/config.js"}, "region": {"startLine": 125}}}]}, {"ruleId": "scanner-868662dbb8a31ead", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/js/chat.js:191"}, "properties": {"repobilityId": "9d86210291ea1f15", "scanner": "scanner-primary", "fingerprint": "868662dbb8a31ead", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTdesktop/dashboard/js/chat.js"}, "region": {"startLine": 191}}}]}, {"ruleId": "scanner-f7901310406523be", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/js/code.js:86"}, "properties": {"repobilityId": "f172a4359e3eafc4", "scanner": "scanner-primary", "fingerprint": "f7901310406523be", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTdesktop/dashboard/js/code.js"}, "region": {"startLine": 86}}}]}, {"ruleId": "scanner-93aa17b7c77d0b3f", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in NESTdesktop/dashboard/functions/api/chat/completions.js:14"}, "properties": {"repobilityId": "aa0a9550d46a784d", "scanner": "scanner-primary", "fingerprint": "93aa17b7c77d0b3f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTdesktop/dashboard/functions/api/chat/completions.js"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-39f8823ba86cc7cc", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTdesktop/dashboard/share/mind-health-card.html:268"}, "properties": {"repobilityId": "8489ba03c85d7f73", "scanner": "scanner-primary", "fingerprint": "39f8823ba86cc7cc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTdesktop/dashboard/share/mind-health-card.html"}, "region": {"startLine": 268}}}]}, {"ruleId": "scanner-1c593e7052be3704", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in NESTdesktop/pc-tools/shell.js:2"}, "properties": {"repobilityId": "113eea65be9afc70", "scanner": "scanner-primary", "fingerprint": "1c593e7052be3704", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTdesktop/pc-tools/shell.js"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-520a56ac6288443c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in NESTdesktop/pc-tools/screenshot.js:2"}, "properties": {"repobilityId": "2c3ee43b45ce6341", "scanner": "scanner-primary", "fingerprint": "520a56ac6288443c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTdesktop/pc-tools/screenshot.js"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-6767bf6d70aa92d9", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in NESTdesktop/pc-tools/grep.js:2"}, "properties": {"repobilityId": "fe3765e37043387c", "scanner": "scanner-primary", "fingerprint": "6767bf6d70aa92d9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTdesktop/pc-tools/grep.js"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-5ea6bff29f44dc95", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in NESTdesktop/pc-tools/app.js:2"}, "properties": {"repobilityId": "3f0ed7c029669b34", "scanner": "scanner-primary", "fingerprint": "5ea6bff29f44dc95", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTdesktop/pc-tools/app.js"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-fd06ef1c5d7f776c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in NESTdesktop/pc-tools/process.js:2"}, "properties": {"repobilityId": "e7199e53c662f728", "scanner": "scanner-primary", "fingerprint": "fd06ef1c5d7f776c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTdesktop/pc-tools/process.js"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-973a0ab7918f909f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in NESTdesktop/pc-tools/clipboard.js:2"}, "properties": {"repobilityId": "385c808fb7dafc85", "scanner": "scanner-primary", "fingerprint": "973a0ab7918f909f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTdesktop/pc-tools/clipboard.js"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-8bd2f689dd8662f8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in NESTsoul/dashboard/soul-tab.html:95"}, "properties": {"repobilityId": "e42b7ec011d01bc6", "scanner": "scanner-primary", "fingerprint": "8bd2f689dd8662f8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTsoul/dashboard/soul-tab.html"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-d492eb228384f02a", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in NESTsoul/src/nestsoul-endpoints.ts:24"}, "properties": {"repobilityId": "de4d2c1198ef83a6", "scanner": "scanner-primary", "fingerprint": "d492eb228384f02a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTsoul/src/nestsoul-endpoints.ts"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-8f0d0dfa9df364bf", "level": "note", "message": {"text": "Very large file: dashboard/src/js/code.js (1645 lines)"}, "properties": {"repobilityId": "fb41c289434b5774", "scanner": "scanner-primary", "fingerprint": "8f0d0dfa9df364bf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6cedb973200e29a7", "level": "note", "message": {"text": "Very large file: NEST-gateway/src/daemon.ts (2322 lines)"}, "properties": {"repobilityId": "b41be86cdc7ec11b", "scanner": "scanner-primary", "fingerprint": "6cedb973200e29a7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b11e613682caf24d", "level": "note", "message": {"text": "Very large file: NESTeq/workers/ai-mind/src/index.ts (2745 lines)"}, "properties": {"repobilityId": "080c059e9c9a88e6", "scanner": "scanner-primary", "fingerprint": "b11e613682caf24d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-98dc73ae9bb3f652", "level": "note", "message": {"text": "Very large file: NESTdesktop/dashboard/js/chat.js (1457 lines)"}, "properties": {"repobilityId": "c74422fe1bfbd3d1", "scanner": "scanner-primary", "fingerprint": "98dc73ae9bb3f652", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-39097634ceb81df9", "level": "note", "message": {"text": "Very large file: NESTdesktop/dashboard/js/code.js (1619 lines)"}, "properties": {"repobilityId": "1778ce6d7d4df445", "scanner": "scanner-primary", "fingerprint": "39097634ceb81df9", "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-7c33b67ab52d5db4", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: NEST-gateway/package.json"}, "properties": {"repobilityId": "761fa99cef0d2512", "scanner": "scanner-primary", "fingerprint": "7c33b67ab52d5db4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NEST-gateway/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ddf52d5af5b08a15", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: NEST-discord/package.json"}, "properties": {"repobilityId": "2ab49d54356d072b", "scanner": "scanner-primary", "fingerprint": "ddf52d5af5b08a15", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NEST-discord/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a8e1efda12c8b8ff", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: NESTeq/workers/rooms-worker/package.json"}, "properties": {"repobilityId": "67ea203252c9f9e8", "scanner": "scanner-primary", "fingerprint": "a8e1efda12c8b8ff", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTeq/workers/rooms-worker/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b7d9cf5929e5dd98", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: NESTeq/workers/garmin-sync/package.json"}, "properties": {"repobilityId": "29efb954e176c80d", "scanner": "scanner-primary", "fingerprint": "b7d9cf5929e5dd98", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTeq/workers/garmin-sync/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-84842db500208ae5", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: NESTeq/workers/discord-mcp/package.json"}, "properties": {"repobilityId": "1ad2fa6cc2757a88", "scanner": "scanner-primary", "fingerprint": "84842db500208ae5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTeq/workers/discord-mcp/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a193c1d7d098bc22", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: NESTcode/nestcode-cli/package.json"}, "properties": {"repobilityId": "05e592b96a48896d", "scanner": "scanner-primary", "fingerprint": "a193c1d7d098bc22", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "NESTcode/nestcode-cli/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "74a6a2ebc657c0b3", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "907d166e55287949", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "0493ad1405dfc333", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "c07bc2ef0be69507", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-8866f51a5e8468a0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 dashboard/src/js/pc.js:116"}, "properties": {"repobilityId": "6df0d6b0d21504ee", "scanner": "scanner-primary", "fingerprint": "8866f51a5e8468a0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1267ce0f1eaf5063", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 dashboard/src/js/chat.js:341"}, "properties": {"repobilityId": "84533f8b8f0bdaec", "scanner": "scanner-primary", "fingerprint": "1267ce0f1eaf5063", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c5fd050dc5031670", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 dashboard/src/js/api.js:61"}, "properties": {"repobilityId": "447fec68f0f96637", "scanner": "scanner-primary", "fingerprint": "c5fd050dc5031670", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4b1332443f2538b2", "level": "none", "message": {"text": "Commented-code block (6 lines) in NEST-gateway/src/index.ts:252"}, "properties": {"repobilityId": "b05cb9e17bdb80a3", "scanner": "scanner-primary", "fingerprint": "4b1332443f2538b2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0042eacde6135fb8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/index.ts:48"}, "properties": {"repobilityId": "cca9b5c4176f6524", "scanner": "scanner-primary", "fingerprint": "0042eacde6135fb8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-28e2614aca642933", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/openrouter.ts:4"}, "properties": {"repobilityId": "fb9bcde6a4d4e77a", "scanner": "scanner-primary", "fingerprint": "28e2614aca642933", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4d3108c3d6447044", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/chat.ts:435"}, "properties": {"repobilityId": "1426835e7f1810c3", "scanner": "scanner-primary", "fingerprint": "4d3108c3d6447044", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-78c9b188a52514e9", "level": "note", "message": {"text": "Legacy-named symbol `eleven_multilingual_v2` in NEST-gateway/src/tts.ts:73"}, "properties": {"repobilityId": "0029c68ee6ad64eb", "scanner": "scanner-primary", "fingerprint": "78c9b188a52514e9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-00407c414af9dc63", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/tts.ts:65"}, "properties": {"repobilityId": "baacfb814aea7ad3", "scanner": "scanner-primary", "fingerprint": "00407c414af9dc63", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-019bfb0cbce90ca6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/proxy.ts:77"}, "properties": {"repobilityId": "2292049076802fda", "scanner": "scanner-primary", "fingerprint": "019bfb0cbce90ca6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9a823f07eb9bc9de", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/daemon.ts:263"}, "properties": {"repobilityId": "e4fd35b47a0943d1", "scanner": "scanner-primary", "fingerprint": "9a823f07eb9bc9de", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1527382d784cfc93", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/tools/cloudflare.ts:13"}, "properties": {"repobilityId": "7f78ef52d98b04b4", "scanner": "scanner-primary", "fingerprint": "1527382d784cfc93", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-304d1b425b827f63", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/tools/discord.ts:18"}, "properties": {"repobilityId": "6b273c0647bc5357", "scanner": "scanner-primary", "fingerprint": "304d1b425b827f63", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-13e4e3af1b1a36ed", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-gateway/src/tools/execute.ts:41"}, "properties": {"repobilityId": "440c04cd36596e5d", "scanner": "scanner-primary", "fingerprint": "13e4e3af1b1a36ed", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-62d1c4d1ce3a94f3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/worker/index.ts:135"}, "properties": {"repobilityId": "f90a94463bdba5d2", "scanner": "scanner-primary", "fingerprint": "62d1c4d1ce3a94f3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-13200f5f7bd2006e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/worker/discord.ts:49"}, "properties": {"repobilityId": "1d69bba7760e5b83", "scanner": "scanner-primary", "fingerprint": "13200f5f7bd2006e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e92e65a71a1c2a71", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/src/toolList.ts:113"}, "properties": {"repobilityId": "ed028ca99693f668", "scanner": "scanner-primary", "fingerprint": "e92e65a71a1c2a71", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-708506109a0b78ef", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/src/tools/server.ts:21"}, "properties": {"repobilityId": "f91ff41545563d56", "scanner": "scanner-primary", "fingerprint": "708506109a0b78ef", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-61fbc8e0ec7b6aaa", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/src/tools/channel.ts:27"}, "properties": {"repobilityId": "f918708237111d12", "scanner": "scanner-primary", "fingerprint": "61fbc8e0ec7b6aaa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-21b26f100fcc956c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/src/tools/reactions.ts:25"}, "properties": {"repobilityId": "8faca2de581ee32a", "scanner": "scanner-primary", "fingerprint": "21b26f100fcc956c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8ea63a804ddf05a3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/src/tools/send-message.ts:16"}, "properties": {"repobilityId": "1c12f82c3b5e3b8b", "scanner": "scanner-primary", "fingerprint": "8ea63a804ddf05a3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8024bb3b39e9f69a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/src/tools/webhooks.ts:33"}, "properties": {"repobilityId": "7e7a5e24d47fa9b8", "scanner": "scanner-primary", "fingerprint": "8024bb3b39e9f69a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2065aaf7b17f8021", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NEST-discord/src/tools/forum.ts:17"}, "properties": {"repobilityId": "0859bff166edaf92", "scanner": "scanner-primary", "fingerprint": "2065aaf7b17f8021", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3681001e3e57a831", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/workers/rooms-worker/scripts/backfill.mjs:51"}, "properties": {"repobilityId": "c58e2f913666a9fc", "scanner": "scanner-primary", "fingerprint": "3681001e3e57a831", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9757584c36b20319", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/workers/rooms-worker/src/index.ts:459"}, "properties": {"repobilityId": "45ec0169e7c3f95b", "scanner": "scanner-primary", "fingerprint": "9757584c36b20319", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2b25572bed835910", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/workers/ai-mind/src/index.ts:1283"}, "properties": {"repobilityId": "fcb2e653fafc7c7f", "scanner": "scanner-primary", "fingerprint": "2b25572bed835910", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e29baea4890b9ace", "level": "none", "message": {"text": "Commented-code block (6 lines) in NESTeq/workers/ai-mind/src/ade.ts:28"}, "properties": {"repobilityId": "508c3e135e4608d2", "scanner": "scanner-primary", "fingerprint": "e29baea4890b9ace", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fe61a39f0cdc842a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/workers/ai-mind/src/spotify.ts:123"}, "properties": {"repobilityId": "87fc788128ec75db", "scanner": "scanner-primary", "fingerprint": "fe61a39f0cdc842a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-12abc014352f88fc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/workers/garmin-sync/src/index.ts:128"}, "properties": {"repobilityId": "40344db9b2a95ee6", "scanner": "scanner-primary", "fingerprint": "12abc014352f88fc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1df09696c5d5702b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/workers/discord-mcp/src/index.ts:135"}, "properties": {"repobilityId": "f2e767894bee9a51", "scanner": "scanner-primary", "fingerprint": "1df09696c5d5702b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8de7939c80c8c9ef", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/workers/discord-mcp/src/discord.ts:49"}, "properties": {"repobilityId": "dccd17d1ab3f0e35", "scanner": "scanner-primary", "fingerprint": "8de7939c80c8c9ef", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6e8300d381d379f0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/dashboard/js/api.js:18"}, "properties": {"repobilityId": "198e3d920c29a5ef", "scanner": "scanner-primary", "fingerprint": "6e8300d381d379f0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bc3a8373a4d59a02", "level": "none", "message": {"text": "Commented-code block (5 lines) in NESTeq/nexus-ingester/src/parse-grok.js:7"}, "properties": {"repobilityId": "a122c60999ca7083", "scanner": "scanner-primary", "fingerprint": "bc3a8373a4d59a02", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8380f5b2d74c3fe9", "level": "none", "message": {"text": "Commented-code block (5 lines) in NESTeq/nexus-ingester/src/index.js:152"}, "properties": {"repobilityId": "2f0ae2065bd3773c", "scanner": "scanner-primary", "fingerprint": "8380f5b2d74c3fe9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ba91b071699516b0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTeq/nexus-ingester/src/api.js:30"}, "properties": {"repobilityId": "6a0ba8980219d483", "scanner": "scanner-primary", "fingerprint": "ba91b071699516b0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d222ee87507d0111", "level": "none", "message": {"text": "Commented-code block (16 lines) in NESTeq/nexus-ingester/src/parse-chatgpt.js:8"}, "properties": {"repobilityId": "60f6634cdce4cbe7", "scanner": "scanner-primary", "fingerprint": "d222ee87507d0111", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-48835fff80ab5f64", "level": "none", "message": {"text": "Commented-code block (5 lines) in NESTeq/nexus-ingester/src/parse-claude-native.js:11"}, "properties": {"repobilityId": "0da41ed72082ba69", "scanner": "scanner-primary", "fingerprint": "48835fff80ab5f64", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-66d22b757b991a08", "level": "note", "message": {"text": "Legacy-named symbol `migrateLegacy` in NESTdesktop/local-agent.js:117"}, "properties": {"repobilityId": "0d4055c26fd205bc", "scanner": "scanner-primary", "fingerprint": "66d22b757b991a08", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-66faafd572eb015b", "level": "none", "message": {"text": "Commented-code block (5 lines) in NESTdesktop/local-agent.js:499"}, "properties": {"repobilityId": "d2380f02534a38d6", "scanner": "scanner-primary", "fingerprint": "66faafd572eb015b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1de15fd5e31abd85", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTdesktop/local-agent.js:408"}, "properties": {"repobilityId": "d888171c5a5179fe", "scanner": "scanner-primary", "fingerprint": "1de15fd5e31abd85", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bd60b8a57dbc052f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTdesktop/dashboard/js/pc.js:116"}, "properties": {"repobilityId": "13a79e7402c5aac9", "scanner": "scanner-primary", "fingerprint": "bd60b8a57dbc052f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b694a4571a5a7697", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTdesktop/dashboard/js/config.js:42"}, "properties": {"repobilityId": "c1a21bd47c9e61ef", "scanner": "scanner-primary", "fingerprint": "b694a4571a5a7697", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e71bb6acf92421f0", "level": "none", "message": {"text": "Commented-code block (8 lines) in NESTdesktop/dashboard/js/chat.js:697"}, "properties": {"repobilityId": "71c6075f6d664422", "scanner": "scanner-primary", "fingerprint": "e71bb6acf92421f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e715d33a2793d1da", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTdesktop/dashboard/js/chat.js:313"}, "properties": {"repobilityId": "e1263043edf438d6", "scanner": "scanner-primary", "fingerprint": "e715d33a2793d1da", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e82223c9797a37c8", "level": "none", "message": {"text": "Commented-code block (5 lines) in NESTchat/chat-handler.example.ts:235"}, "properties": {"repobilityId": "fac88286e7bc6995", "scanner": "scanner-primary", "fingerprint": "e82223c9797a37c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-09a966439847b1f5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTchat/chat-handler.example.ts:313"}, "properties": {"repobilityId": "83809c1b894e518a", "scanner": "scanner-primary", "fingerprint": "09a966439847b1f5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9f3a02311e9cb470", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 NESTsoul/src/nestsoul-endpoints.ts:97"}, "properties": {"repobilityId": "c07bb2fdc643ead3", "scanner": "scanner-primary", "fingerprint": "9f3a02311e9cb470", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9fffdbd9c2c205fe", "level": "error", "message": {"text": "Dangling fetch: GET https://your-garmin-sync.workers.dev/status (dashboard/src/js/api.js:269)"}, "properties": {"repobilityId": "9f2a5bdc5197d439", "scanner": "scanner-primary", "fingerprint": "9fffdbd9c2c205fe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f60e695d8b2b28f9", "level": "error", "message": {"text": "Dangling fetch: GET https://your-garmin-sync.workers.dev/status (NESTeq/dashboard/js/api.js:193)"}, "properties": {"repobilityId": "182620611a3e470b", "scanner": "scanner-primary", "fingerprint": "f60e695d8b2b28f9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d93828d19e75c4d8", "level": "error", "message": {"text": "Dangling fetch: GET https://openrouter.ai/api/v1/models (NESTdesktop/local-agent.js:201)"}, "properties": {"repobilityId": "4a5dd66d87e15aac", "scanner": "scanner-primary", "fingerprint": "d93828d19e75c4d8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-defc1dfe08ad29ca", "level": "error", "message": {"text": "Dangling fetch: GET https://api.elevenlabs.io/v1/user (NESTdesktop/local-agent.js:220)"}, "properties": {"repobilityId": "9fb679bd454f308d", "scanner": "scanner-primary", "fingerprint": "defc1dfe08ad29ca", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f7e0f20a2d82e7f7", "level": "error", "message": {"text": "Dangling fetch: POST https://api.tavily.com/search (NESTdesktop/pc-tools/web.js:61)"}, "properties": {"repobilityId": "7854e5f767d4ae7a", "scanner": "scanner-primary", "fingerprint": "f7e0f20a2d82e7f7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4529c5be1fe33b60", "level": "error", "message": {"text": "Dangling fetch: GET https://openrouter.ai/api/v1/... (NEST-gateway/src/openrouter.ts:4)"}, "properties": {"repobilityId": "55215e55f4923456", "scanner": "scanner-primary", "fingerprint": "4529c5be1fe33b60", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-23ab6be3e82b60ab", "level": "error", "message": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/chat.ts:435)"}, "properties": {"repobilityId": "2bb260a337c72162", "scanner": "scanner-primary", "fingerprint": "23ab6be3e82b60ab", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-13b963068323e6f8", "level": "error", "message": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/chat.ts:516)"}, "properties": {"repobilityId": "a7e4f5c235ea91a9", "scanner": "scanner-primary", "fingerprint": "13b963068323e6f8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d89f89aa86cf143b", "level": "error", "message": {"text": "Dangling fetch: POST https://api.elevenlabs.io/v1/text-to-speech/${voiceId} (NEST-gateway/src/tts.ts:65)"}, "properties": {"repobilityId": "fe98d27013c42d4c", "scanner": "scanner-primary", "fingerprint": "d89f89aa86cf143b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0b1fcec324132600", "level": "error", "message": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/daemon.ts:574)"}, "properties": {"repobilityId": "3e0bce96ba1c5294", "scanner": "scanner-primary", "fingerprint": "0b1fcec324132600", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-da05cf41cb772431", "level": "error", "message": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/daemon.ts:699)"}, "properties": {"repobilityId": "7d41077a941a3242", "scanner": "scanner-primary", "fingerprint": "da05cf41cb772431", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-845d068e15dd5fdd", "level": "error", "message": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/daemon.ts:1181)"}, "properties": {"repobilityId": "edffa0d6348f73ca", "scanner": "scanner-primary", "fingerprint": "845d068e15dd5fdd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8a4166e64aa0d5c4", "level": "error", "message": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/daemon.ts:1502)"}, "properties": {"repobilityId": "1762d044fa6bf265", "scanner": "scanner-primary", "fingerprint": "8a4166e64aa0d5c4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2b4677c3c5dc280d", "level": "error", "message": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/daemon.ts:1554)"}, "properties": {"repobilityId": "1fceb48549673fc8", "scanner": "scanner-primary", "fingerprint": "2b4677c3c5dc280d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a070672bfccdc321", "level": "error", "message": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/daemon.ts:2119)"}, "properties": {"repobilityId": "393cb1d9604f552b", "scanner": "scanner-primary", "fingerprint": "a070672bfccdc321", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d987fc9ac43751c5", "level": "error", "message": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NEST-gateway/src/tools/execute.ts:251)"}, "properties": {"repobilityId": "5485fe512a43631a", "scanner": "scanner-primary", "fingerprint": "d987fc9ac43751c5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-802014b4dc93f586", "level": "error", "message": {"text": "Dangling fetch: POST https://api.tavily.com/search (NEST-gateway/src/tools/execute.ts:387)"}, "properties": {"repobilityId": "bbdd561364aec280", "scanner": "scanner-primary", "fingerprint": "802014b4dc93f586", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-95eda336c8f6f67b", "level": "error", "message": {"text": "Dangling fetch: POST /channels/${channelId}/messages (NEST-discord/worker/discord.ts:93)"}, "properties": {"repobilityId": "e815b6bf73f68838", "scanner": "scanner-primary", "fingerprint": "95eda336c8f6f67b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b8e9263077d66a2b", "level": "error", "message": {"text": "Dangling fetch: PUT /channels/${channelId}/messages/${messageId}/reactions/${encodedEmoji}/@me (NEST-discord/worker/discord.ts:135)"}, "properties": {"repobilityId": "36ff889f96631be4", "scanner": "scanner-primary", "fingerprint": "b8e9263077d66a2b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-008466513807d264", "level": "error", "message": {"text": "Dangling fetch: GET /users/@me/guilds (NEST-discord/worker/discord.ts:144)"}, "properties": {"repobilityId": "8bc23058e85b2180", "scanner": "scanner-primary", "fingerprint": "008466513807d264", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-829ea6d92d2951c2", "level": "error", "message": {"text": "Dangling fetch: GET /guilds/${guildId}?with_counts=true (NEST-discord/worker/discord.ts:148)"}, "properties": {"repobilityId": "7c8d3f93aaf1468b", "scanner": "scanner-primary", "fingerprint": "829ea6d92d2951c2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6c9b45b9b2902a04", "level": "error", "message": {"text": "Dangling fetch: GET /guilds/${guildId}/channels (NEST-discord/worker/discord.ts:152)"}, "properties": {"repobilityId": "b2c34da174887567", "scanner": "scanner-primary", "fingerprint": "6c9b45b9b2902a04", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-24bab5148eeec0b3", "level": "error", "message": {"text": "Dangling fetch: POST https://accounts.spotify.com/api/token (NESTeq/workers/ai-mind/src/spotify.ts:57)"}, "properties": {"repobilityId": "192dc99f82fb4e1d", "scanner": "scanner-primary", "fingerprint": "24bab5148eeec0b3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9c552394aa1ce572", "level": "error", "message": {"text": "Dangling fetch: POST https://accounts.spotify.com/api/token (NESTeq/workers/ai-mind/src/spotify.ts:123)"}, "properties": {"repobilityId": "941a1e905fedeaaf", "scanner": "scanner-primary", "fingerprint": "9c552394aa1ce572", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0fd928e7ac25a239", "level": "error", "message": {"text": "Dangling fetch: GET https://api.spotify.com/v1${endpoint} (NESTeq/workers/ai-mind/src/spotify.ts:163)"}, "properties": {"repobilityId": "9de1c8e21327b428", "scanner": "scanner-primary", "fingerprint": "0fd928e7ac25a239", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3b7c88733408ab6d", "level": "error", "message": {"text": "Dangling fetch: GET https://api.spotify.com/v1/me (NESTeq/workers/ai-mind/src/spotify.ts:172)"}, "properties": {"repobilityId": "a43e1e78a356718a", "scanner": "scanner-primary", "fingerprint": "3b7c88733408ab6d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2abdd966e834e561", "level": "error", "message": {"text": "Dangling fetch: POST /channels/${channelId}/messages (NESTeq/workers/discord-mcp/src/discord.ts:93)"}, "properties": {"repobilityId": "3a77f36e33bae9ad", "scanner": "scanner-primary", "fingerprint": "2abdd966e834e561", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-29197b76729853d1", "level": "error", "message": {"text": "Dangling fetch: PUT /channels/${channelId}/messages/${messageId}/reactions/${encodedEmoji}/@me (NESTeq/workers/discord-mcp/src/discord.ts:135)"}, "properties": {"repobilityId": "f976a07502cd4a09", "scanner": "scanner-primary", "fingerprint": "29197b76729853d1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8ca96ccd4bef21b5", "level": "error", "message": {"text": "Dangling fetch: GET /users/@me/guilds (NESTeq/workers/discord-mcp/src/discord.ts:144)"}, "properties": {"repobilityId": "cc9f0b1f5c09913f", "scanner": "scanner-primary", "fingerprint": "8ca96ccd4bef21b5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-06a7d0055e9bf761", "level": "error", "message": {"text": "Dangling fetch: GET /guilds/${guildId}?with_counts=true (NESTeq/workers/discord-mcp/src/discord.ts:148)"}, "properties": {"repobilityId": "afbd999d4e81da96", "scanner": "scanner-primary", "fingerprint": "06a7d0055e9bf761", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-841a877d15e7ce70", "level": "error", "message": {"text": "Dangling fetch: GET /guilds/${guildId}/channels (NESTeq/workers/discord-mcp/src/discord.ts:152)"}, "properties": {"repobilityId": "829cb278013c9951", "scanner": "scanner-primary", "fingerprint": "841a877d15e7ce70", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5b720b8b8072d4dc", "level": "error", "message": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NESTchat/chat-handler.example.ts:313)"}, "properties": {"repobilityId": "dc154680f0d803a7", "scanner": "scanner-primary", "fingerprint": "5b720b8b8072d4dc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4d6f588e47430e1a", "level": "error", "message": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NESTchat/chat-handler.example.ts:393)"}, "properties": {"repobilityId": "4bbefcfaa8ef43f6", "scanner": "scanner-primary", "fingerprint": "4d6f588e47430e1a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c2cbc8dac9a38574", "level": "error", "message": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (NESTsoul/src/nestsoul-endpoints.ts:97)"}, "properties": {"repobilityId": "3f95fb0cdba3d09e", "scanner": "scanner-primary", "fingerprint": "c2cbc8dac9a38574", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-046dda00f1450b3d", "level": "note", "message": {"text": "Unused endpoint: POST /chat/completions"}, "properties": {"repobilityId": "fc6f627c1a25a0f2", "scanner": "scanner-primary", "fingerprint": "046dda00f1450b3d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a7cadc43bf9f2d89", "level": "note", "message": {"text": "Unused endpoint: ALL /api/{*path}"}, "properties": {"repobilityId": "9329f87073f281fc", "scanner": "scanner-primary", "fingerprint": "a7cadc43bf9f2d89", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0cc3eeb41684e2bd", "level": "note", "message": {"text": "Unused endpoint: ALL /v1/{*path}"}, "properties": {"repobilityId": "bfef38b292afeec7", "scanner": "scanner-primary", "fingerprint": "0cc3eeb41684e2bd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e92f893918d20e6c", "level": "note", "message": {"text": "Unused endpoint: USE /pc"}, "properties": {"repobilityId": "86af6239147b8cd8", "scanner": "scanner-primary", "fingerprint": "e92f893918d20e6c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a73cef199d37d47f", "level": "note", "message": {"text": "Unused endpoint: POST /shell"}, "properties": {"repobilityId": "de1700018871bd48", "scanner": "scanner-primary", "fingerprint": "a73cef199d37d47f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4069bb9c1c1e4187", "level": "note", "message": {"text": "Unused endpoint: GET /screenshot"}, "properties": {"repobilityId": "71c1b7c6b662a407", "scanner": "scanner-primary", "fingerprint": "4069bb9c1c1e4187", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-13db345156724042", "level": "note", "message": {"text": "Unused endpoint: POST /grep"}, "properties": {"repobilityId": "cc2f2122d6043e9a", "scanner": "scanner-primary", "fingerprint": "13db345156724042", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3dfa27698203a144", "level": "note", "message": {"text": "Unused endpoint: POST /read"}, "properties": {"repobilityId": "e7667ee8206a389b", "scanner": "scanner-primary", "fingerprint": "3dfa27698203a144", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-df0b14486654128d", "level": "note", "message": {"text": "Unused endpoint: POST /launch"}, "properties": {"repobilityId": "d3e1058deb30aa56", "scanner": "scanner-primary", "fingerprint": "df0b14486654128d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d682e1d215955e6a", "level": "note", "message": {"text": "Unused endpoint: GET /list"}, "properties": {"repobilityId": "c0b4c70d612874b4", "scanner": "scanner-primary", "fingerprint": "d682e1d215955e6a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-25f11ede0ee9ec69", "level": "note", "message": {"text": "Unused endpoint: USE /file"}, "properties": {"repobilityId": "c759478921341b21", "scanner": "scanner-primary", "fingerprint": "25f11ede0ee9ec69", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f02a079c69b52f2d", "level": "note", "message": {"text": "Unused endpoint: USE /"}, "properties": {"repobilityId": "d6c0195831e1fea5", "scanner": "scanner-primary", "fingerprint": "f02a079c69b52f2d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-32ffb23adf53caf9", "level": "note", "message": {"text": "Unused endpoint: USE /process"}, "properties": {"repobilityId": "370e85b904f36875", "scanner": "scanner-primary", "fingerprint": "32ffb23adf53caf9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-68079190a693980d", "level": "note", "message": {"text": "Unused endpoint: USE /clipboard"}, "properties": {"repobilityId": "e941f4de1c7df928", "scanner": "scanner-primary", "fingerprint": "68079190a693980d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d43292933532c7da", "level": "note", "message": {"text": "Unused endpoint: USE /app"}, "properties": {"repobilityId": "2d8991b6bb8ecb2b", "scanner": "scanner-primary", "fingerprint": "d43292933532c7da", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d6c56f545bd04b96", "level": "note", "message": {"text": "Unused endpoint: USE /web"}, "properties": {"repobilityId": "5a97462033b611ae", "scanner": "scanner-primary", "fingerprint": "d6c56f545bd04b96", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-915a0e8a98eafe02", "level": "note", "message": {"text": "Unused endpoint: POST /glob"}, "properties": {"repobilityId": "962467ff65f3e369", "scanner": "scanner-primary", "fingerprint": "915a0e8a98eafe02", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f67c8b3020a57e65", "level": "note", "message": {"text": "Unused endpoint: POST /write"}, "properties": {"repobilityId": "4c90312ac0f53ac5", "scanner": "scanner-primary", "fingerprint": "f67c8b3020a57e65", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ae81e427508a9951", "level": "note", "message": {"text": "Unused endpoint: POST /fetch"}, "properties": {"repobilityId": "6579be0448bbee05", "scanner": "scanner-primary", "fingerprint": "ae81e427508a9951", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-17a164638609b114", "level": "note", "message": {"text": "Unused endpoint: POST /search"}, "properties": {"repobilityId": "d73e8adabcf3c2a2", "scanner": "scanner-primary", "fingerprint": "17a164638609b114", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7569de4538b5c19a", "level": "note", "message": {"text": "Unused endpoint: POST /kill"}, "properties": {"repobilityId": "adba011dd6ebf590", "scanner": "scanner-primary", "fingerprint": "7569de4538b5c19a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2b1260fff9b74e7d", "level": "note", "message": {"text": "Unused endpoint: POST /edit"}, "properties": {"repobilityId": "a36b2f521bd21b47", "scanner": "scanner-primary", "fingerprint": "2b1260fff9b74e7d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "5c1abf69f50c3065", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7a009b1a56794f45", "level": "note", "message": {"text": "Unused endpoint: POST /"}, "properties": {"repobilityId": "3dd06417c72aab12", "scanner": "scanner-primary", "fingerprint": "7a009b1a56794f45", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-efbc80312c5027b5", "level": "note", "message": {"text": "Unused endpoint: ALL /mcp"}, "properties": {"repobilityId": "89901250c080658d", "scanner": "scanner-primary", "fingerprint": "efbc80312c5027b5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}