{"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-2f33761892540654", "name": "Possibly dead Python function: overlap_clusters", "shortDescription": {"text": "Possibly dead Python function: overlap_clusters"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3351254170957f4c", "name": "Possibly dead Python function: positive_int", "shortDescription": {"text": "Possibly dead Python function: positive_int"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fe8cb22bf58a7969", "name": "Possibly dead Python function: set_description", "shortDescription": {"text": "Possibly dead Python function: set_description"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-da709d77729d8b7a", "name": "Possibly dead Python function: set_postfix", "shortDescription": {"text": "Possibly dead Python function: set_postfix"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-beedc84ced06de49", "name": "Possibly dead Python function: set_postfix_str", "shortDescription": {"text": "Possibly dead Python function: set_postfix_str"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e891e612775907df", "name": "Possibly dead Python function: quiet_logs", "shortDescription": {"text": "Possibly dead Python function: quiet_logs"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-35198ec2ca3d518d", "name": "Possibly dead Python function: common_parser", "shortDescription": {"text": "Possibly dead Python function: common_parser"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bf56672d01430d8f", "name": "Possibly dead Python function: handle_starttag", "shortDescription": {"text": "Possibly dead Python function: handle_starttag"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-558119bd5bc26506", "name": "Possibly dead Python function: handle_startendtag", "shortDescription": {"text": "Possibly dead Python function: handle_startendtag"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bdda5eeaf33a6480", "name": "Possibly dead Python function: handle_endtag", "shortDescription": {"text": "Possibly dead Python function: handle_endtag"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9f05433cd346f062", "name": "Possibly dead Python function: handle_data", "shortDescription": {"text": "Possibly dead Python function: handle_data"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6c2116deff57f22d", "name": "Possibly dead Python function: require_owner", "shortDescription": {"text": "Possibly dead Python function: require_owner"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-354b203effe78a4b", "name": "Possibly dead Python function: try_fallback_endpoint", "shortDescription": {"text": "Possibly dead Python function: try_fallback_endpoint"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b0b46c12b6af87aa", "name": "Possibly dead Python function: periodic_rate_limit_cleanup", "shortDescription": {"text": "Possibly dead Python function: periodic_rate_limit_cleanup"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5feae732c0a719db", "name": "Possibly dead Python function: set_voice", "shortDescription": {"text": "Possibly dead Python function: set_voice"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-52e04ad7f479f286", "name": "Possibly dead Python function: start_background", "shortDescription": {"text": "Possibly dead Python function: start_background"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-190a2b6c2aca60c4", "name": "Possibly dead Python function: process_bind_param", "shortDescription": {"text": "Possibly dead Python function: process_bind_param"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4f97e6d0212d94ed", "name": "Possibly dead Python function: process_result_value", "shortDescription": {"text": "Possibly dead Python function: process_result_value"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3194a8c38b2cf103", "name": "Possibly dead Python function: bulk_insert_messages", "shortDescription": {"text": "Possibly dead Python function: bulk_insert_messages"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8e15c57132732056", "name": "Stray `console.log` in TS/JS \u2014 static/app.js:3576", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 static/app.js:3576"}, "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-337074d4e8f2721d", "name": "Icon-only button without accessible name \u2014 static/js/slashCommands.js:2392", "shortDescription": {"text": "Icon-only button without accessible name \u2014 static/js/slashCommands.js:2392"}, "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-13d839b2a7a75a91", "name": "Stray `console.log` in TS/JS \u2014 static/js/cookbookRunning.js:3220", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 static/js/cookbookRunning.js:3220"}, "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-40fe62f86bde49ac", "name": "TODO/FIXME marker in shipping code \u2014 static/js/notes.js:2855", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 static/js/notes.js:2855"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0b9e7b338949c664", "name": "Icon-only button without accessible name \u2014 static/js/editor/wire-import.js:118", "shortDescription": {"text": "Icon-only button without accessible name \u2014 static/js/editor/wire-import.js:118"}, "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-f587f6fb5def08fa", "name": "Stray `console.log` in TS/JS \u2014 static/lib/mammoth.browser.min.js:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 static/lib/mammoth.browser.min.js:6"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ab340a0e501ffff9", "name": "Stray `console.log` in TS/JS \u2014 static/lib/xlsx.full.min.js:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 static/lib/xlsx.full.min.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-ab83cce2d95a4dbb", "name": "Stray `console.log` in TS/JS \u2014 static/lib/highlight.min.js:107", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 static/lib/highlight.min.js:107"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-272c3b87f15d32b2", "name": "Stray `console.log` in TS/JS \u2014 static/lib/docx.umd.min.js:4201", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 static/lib/docx.umd.min.js:4201"}, "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-59868562782cd0f8", "name": "Privileged port 1000 in use", "shortDescription": {"text": "Privileged port 1000 in use"}, "fullDescription": {"text": "Port 1000 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cb0acdfe8e7021df", "name": "Privileged port 993 in use", "shortDescription": {"text": "Privileged port 993 in use"}, "fullDescription": {"text": "Port 993 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d63da3583b14afc0", "name": "Dockerfile runs as root: Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-de3c1f217d72a063", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9ddb72c5903d8f67", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/login.html:349", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/login.html:349"}, "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-787f963fd1fd1244", "name": "Insecure pattern 'local_storage_auth_token' in static/login.html:473", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in static/login.html:473"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a214c3075ed2b05d", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/app.js:665", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/app.js:665"}, "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-cf573f9effd5784c", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/landing.html:666", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/landing.html:666"}, "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-2c6f229dfb78e22c", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/colorPicker.js:101", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/colorPicker.js:101"}, "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-72d003bfd8fb2908", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/settings.js:97", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/settings.js:97"}, "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-cb4ea2bfd692d25a", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/models.js:107", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/models.js:107"}, "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-749689c985abf4e0", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/cookbook-diagnosis.js:553", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/cookbook-diagnosis.js:553"}, "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-5aadaffdd929cbca", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/group.js:65", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/group.js:65"}, "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-dd91103ace362656", "name": "Insecure pattern 'local_storage_auth_token' in static/js/group.js:555", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in static/js/group.js:555"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f23a8c2e39f4eede", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/presets.js:133", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/presets.js:133"}, "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-679f1cb9f1fb3525", "name": "Insecure pattern 'local_storage_auth_token' in static/js/presets.js:428", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in static/js/presets.js:428"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d00b22955d58715e", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/emailInbox.js:296", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/emailInbox.js:296"}, "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-f36953b2844723de", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/assistant.js:93", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/assistant.js:93"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0fd547110ccfa0b7", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/documentLibrary.js:196", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/documentLibrary.js:196"}, "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-55086d79621e4dad", "name": "Insecure pattern 'domparser_html_parse' in static/js/documentLibrary.js:1381", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in static/js/documentLibrary.js:1381"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d8686a54c188f49", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/document.js:299", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/document.js:299"}, "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-5ef3ab56fe0062ba", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/modalManager.js:320", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/modalManager.js:320"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3120955834db295e", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/spinner.js:279", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/spinner.js:279"}, "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-3decdc45749bbc3e", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/galleryEditor.js:488", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/galleryEditor.js:488"}, "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-5d28d9157ba28c87", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/tourHints.js:75", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/tourHints.js:75"}, "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-b0cb78166dfb33c6", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/admin.js:36", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/admin.js:36"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-88e226cfe8c78b35", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/rag.js:30", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/rag.js:30"}, "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-c0680305bef59de2", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/cookbookDownload.js:318", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/cookbookDownload.js:318"}, "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-a1999aef9b7c1fb3", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/memory.js:67", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/memory.js:67"}, "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-e4468c697ede1c84", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/chatStream.js:233", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/chatStream.js: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-775f195318d10ede", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/ui.js:323", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/ui.js:323"}, "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-86397cd0ee58ceb6", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/emailLibrary.js:68", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/emailLibrary.js:68"}, "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-9d3de9904da817ac", "name": "Insecure pattern 'insert_adjacent_html' in static/js/emailLibrary.js:4238", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in static/js/emailLibrary.js:4238"}, "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-a22cde7b2f1464a2", "name": "Insecure pattern 'domparser_html_parse' in static/js/emailLibrary.js:2789", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in static/js/emailLibrary.js:2789"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-17f27f01e98a3276", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/slashAutocomplete.js:133", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/slashAutocomplete.js:133"}, "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-2467c1497b14ae2c", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/slashCommands.js:265", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/slashCommands.js:265"}, "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-284fa4ecdf567b22", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/researchSynapse.js:29", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/researchSynapse.js:29"}, "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-997f48c01a050576", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/chat.js:187", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/chat.js:187"}, "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-308c76677a11a8a6", "name": "Insecure pattern 'insert_adjacent_html' in static/js/chat.js:2414", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in static/js/chat.js:2414"}, "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-efacebae4c7d269e", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/emojiPicker.js:121", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/emojiPicker.js:121"}, "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-499ddae62658808e", "name": "Insecure pattern 'exec_used' in static/js/codeRunner.js:208", "shortDescription": {"text": "Insecure pattern 'exec_used' in static/js/codeRunner.js:208"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-22d40563769e3d5b", "name": "Insecure pattern 'document_write' in static/js/codeRunner.js:366", "shortDescription": {"text": "Insecure pattern 'document_write' in static/js/codeRunner.js:366"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-580b68ddb77da3ec", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/codeRunner.js:19", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/codeRunner.js:19"}, "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-8095c658492c4901", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/keyboard-shortcuts.js:213", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/keyboard-shortcuts.js:213"}, "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-7a398f2c35bc20cd", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/gallery.js:355", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/gallery.js:355"}, "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-c42d88ea21b4f10e", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/signature.js:309", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/signature.js:309"}, "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-6b2f15edf5a7efed", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/cookbookRunning.js:388", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/cookbookRunning.js:388"}, "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-401977541d526ffd", "name": "Insecure pattern 'insert_adjacent_html' in static/js/cookbookRunning.js:1716", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in static/js/cookbookRunning.js:1716"}, "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-cba58f4d4e6c93c1", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/skills.js:389", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/skills.js:389"}, "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-e1f68768bcae999a", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/sessions.js:64", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/sessions.js:64"}, "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-f20fb019b40b9036", "name": "Insecure pattern 'local_storage_auth_token' in static/js/sessions.js:1426", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in static/js/sessions.js:1426"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1c725f4d21f7df12", "name": "Insecure pattern 'insert_adjacent_html' in static/js/section-management.js:21", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in static/js/section-management.js:21"}, "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-0b924e8880fb865b", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/tasks.js:377", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/tasks.js:377"}, "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-ffda85837dfa0bd0", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/cookbook-hwfit.js:123", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/cookbook-hwfit.js:123"}, "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-f38e95d4f1ad0df1", "name": "Insecure pattern 'insert_adjacent_html' in static/js/cookbook-hwfit.js:484", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in static/js/cookbook-hwfit.js:484"}, "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-671877e5cedade85", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/search-chat.js:24", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/search-chat.js:24"}, "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-43aa396e13cff3e9", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/notes.js:82", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/notes.js:82"}, "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-1b83d2779b91b337", "name": "Insecure pattern 'insert_adjacent_html' in static/js/notes.js:1725", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in static/js/notes.js:1725"}, "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-a3168a4f78a3b2ea", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/theme.js:669", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/theme.js:669"}, "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-0d375a0affe3bee4", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/cookbook.js:585", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/cookbook.js:585"}, "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-2e4383f170829eac", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/chatRenderer.js:142", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/chatRenderer.js:142"}, "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-92cab93533191357", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/tts-ai.js:74", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/tts-ai.js:74"}, "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-d568c113df37d53a", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/modelPicker.js:261", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/modelPicker.js:261"}, "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-a64ca5f9db805e7f", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/calendar.js:445", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/calendar.js:445"}, "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-170022a79e31d5a3", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/cookbookServe.js:321", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/cookbookServe.js:321"}, "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-58891199bc240960", "name": "Insecure pattern 'insert_adjacent_html' in static/js/cookbookServe.js:740", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in static/js/cookbookServe.js:740"}, "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-f86e11e01d4600d0", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/markdown.js:68", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/markdown.js:68"}, "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-f6be8b7c24f5cdec", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/research/panel.js:33", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/research/panel.js:33"}, "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-010e4160c500555c", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/layer-panel.js:87", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/layer-panel.js:87"}, "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-4416c0dd89b15043", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/wire-inpaint-controls.js:104", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/wire-inpaint-controls.js:104"}, "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-68f611805566877f", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/clipboard-and-drop.js:92", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/clipboard-and-drop.js:92"}, "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-9f6756cd2596aea3", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/wire-selection-controls.js:144", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/wire-selection-controls.js:144"}, "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-53532d215543114f", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/history-panel.js:81", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/history-panel.js:81"}, "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-5ce1dbd23521e93c", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/wire-import.js:118", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/wire-import.js:118"}, "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-8df53b3d737bf25f", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/ai-tools-misc.js:111", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/ai-tools-misc.js:111"}, "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-6cf8733dfec1907e", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/shortcuts-popover.js:39", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/shortcuts-popover.js:39"}, "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-cfd794c38123dd25", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/ai-models.js:99", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/ai-models.js:99"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea23fdb384d974fc", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/ai-tool-runner.js:55", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/ai-tool-runner.js:55"}, "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-8c38ad0fd4a26d10", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/fx/adj-popup.js:142", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/fx/adj-popup.js:142"}, "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-d4afbf31c6d9ef04", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/tools/transform-session.js:90", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/tools/transform-session.js:90"}, "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-ece4676df9b84b64", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/compare/stream.js:92", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/compare/stream.js:92"}, "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-dc9b4f1fc464845a", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/compare/vote.js:47", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/compare/vote.js:47"}, "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-379a5f2606fc8f77", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/compare/probe.js:28", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/compare/probe.js:28"}, "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-900ae4cf637ee495", "name": "Insecure pattern 'document_write' in static/js/compare/index.js:1101", "shortDescription": {"text": "Insecure pattern 'document_write' in static/js/compare/index.js:1101"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4cf2b658e39f18e9", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/compare/index.js:315", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/compare/index.js:315"}, "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-e2218d5de1af24e9", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/compare/panes.js:69", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/compare/panes.js:69"}, "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-700a085ac9cf8f70", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/compare/scoreboard.js:53", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/compare/scoreboard.js:53"}, "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-7c52e8d12f5f79e1", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/js/compare/selector.js:78", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/compare/selector.js:78"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8b87c1ea586d070e", "name": "Insecure pattern 'domparser_html_parse' in static/js/emailLibrary/utils.js:137", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in static/js/emailLibrary/utils.js:137"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-18f1d2d7a1018b32", "name": "Insecure pattern 'document_write' in static/lib/html2pdf.bundle.min.js:2", "shortDescription": {"text": "Insecure pattern 'document_write' in static/lib/html2pdf.bundle.min.js:2"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1286857463b7566d", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/lib/html2pdf.bundle.min.js:2", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/lib/html2pdf.bundle.min.js:2"}, "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-01d3c250843bf1d4", "name": "Insecure pattern 'direct_outerhtml_assignment' in static/lib/html2pdf.bundle.min.js:2", "shortDescription": {"text": "Insecure pattern 'direct_outerhtml_assignment' in static/lib/html2pdf.bundle.min.js:2"}, "fullDescription": {"text": "Found a known-risky pattern (direct_outerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ab3d87441881e5a8", "name": "Insecure pattern 'domparser_html_parse' in static/lib/html2pdf.bundle.min.js:2", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in static/lib/html2pdf.bundle.min.js:2"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bd058e2b88c87bf1", "name": "Insecure pattern 'new_function_used' in static/lib/mammoth.browser.min.js:5", "shortDescription": {"text": "Insecure pattern 'new_function_used' in static/lib/mammoth.browser.min.js:5"}, "fullDescription": {"text": "Found a known-risky pattern (new_function_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3d95bd90954e894f", "name": "Insecure pattern 'exec_used' in static/lib/xlsx.full.min.js:10", "shortDescription": {"text": "Insecure pattern 'exec_used' in static/lib/xlsx.full.min.js:10"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-90d9622f7d7104a6", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/lib/highlight.min.js:271", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/lib/highlight.min.js:271"}, "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-93f24babd1f685d8", "name": "Insecure pattern 'new_function_used' in static/lib/docx.umd.min.js:18524", "shortDescription": {"text": "Insecure pattern 'new_function_used' in static/lib/docx.umd.min.js:18524"}, "fullDescription": {"text": "Found a known-risky pattern (new_function_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c9b79121711f06aa", "name": "Insecure pattern 'exec_used' in static/lib/docx.umd.min.js:2849", "shortDescription": {"text": "Insecure pattern 'exec_used' in static/lib/docx.umd.min.js:2849"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b8292c66ed5d85d8", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/index.html:756", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/index.html:756"}, "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-e924d3c048d92d63", "name": "Insecure pattern 'cors_wildcard' in scripts/diffusion_server.py:55", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in scripts/diffusion_server.py:55"}, "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-009ac5d370e46706", "name": "Possible secret in scripts/demo_email/demo_account.py", "shortDescription": {"text": "Possible secret in scripts/demo_email/demo_account.py"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-f2892ac6751d7827", "name": "Insecure pattern 'subprocess_shell_true' in src/builtin_actions.py:314", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in src/builtin_actions.py:314"}, "fullDescription": {"text": "Found a known-risky pattern (subprocess_shell_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eea92ea2706e01e9", "name": "Very large file: static/app.js (4131 lines)", "shortDescription": {"text": "Very large file: static/app.js (4131 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-8e425a0a8bf954cb", "name": "Very large file: static/js/settings.js (5042 lines)", "shortDescription": {"text": "Very large file: static/js/settings.js (5042 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-721e4699c78d61cf", "name": "Very large file: static/js/emailInbox.js (1245 lines)", "shortDescription": {"text": "Very large file: static/js/emailInbox.js (1245 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-28ce45a54be8345f", "name": "Very large file: static/js/documentLibrary.js (3376 lines)", "shortDescription": {"text": "Very large file: static/js/documentLibrary.js (3376 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-69fe30d92c8ffa1f", "name": "Very large file: static/js/document.js (9734 lines)", "shortDescription": {"text": "Very large file: static/js/document.js (9734 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-4492331691fe4f51", "name": "Very large file: static/js/modalManager.js (1552 lines)", "shortDescription": {"text": "Very large file: static/js/modalManager.js (1552 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-9e8e9077199ba89c", "name": "Very large file: static/js/galleryEditor.js (3798 lines)", "shortDescription": {"text": "Very large file: static/js/galleryEditor.js (3798 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-d60a67a5ab8b5777", "name": "Very large file: static/js/admin.js (2135 lines)", "shortDescription": {"text": "Very large file: static/js/admin.js (2135 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-e2d46ad2512ae3d5", "name": "Very large file: static/js/memory.js (1418 lines)", "shortDescription": {"text": "Very large file: static/js/memory.js (1418 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-d9b4925bff680b93", "name": "Very large file: static/js/ui.js (1288 lines)", "shortDescription": {"text": "Very large file: static/js/ui.js (1288 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-2bf0652ddf08bad8", "name": "Very large file: static/js/emailLibrary.js (5217 lines)", "shortDescription": {"text": "Very large file: static/js/emailLibrary.js (5217 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-d31d1d0994c3eadf", "name": "Very large file: static/js/slashCommands.js (6099 lines)", "shortDescription": {"text": "Very large file: static/js/slashCommands.js (6099 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-a76eb0d070694a7f", "name": "Very large file: static/js/chat.js (4567 lines)", "shortDescription": {"text": "Very large file: static/js/chat.js (4567 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-13913f227628ba73", "name": "Very large file: static/js/gallery.js (2835 lines)", "shortDescription": {"text": "Very large file: static/js/gallery.js (2835 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-4377b458f5c7846e", "name": "Very large file: static/js/cookbookRunning.js (3537 lines)", "shortDescription": {"text": "Very large file: static/js/cookbookRunning.js (3537 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-7c9ddedde04d9891", "name": "Very large file: static/js/skills.js (1908 lines)", "shortDescription": {"text": "Very large file: static/js/skills.js (1908 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-8166747ac3d45d71", "name": "Very large file: static/js/sessions.js (3108 lines)", "shortDescription": {"text": "Very large file: static/js/sessions.js (3108 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-d1aa6439d9e71aa4", "name": "Very large file: static/js/tasks.js (2699 lines)", "shortDescription": {"text": "Very large file: static/js/tasks.js (2699 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-0fe8e505c3d26088", "name": "Very large file: static/js/cookbook-hwfit.js (1888 lines)", "shortDescription": {"text": "Very large file: static/js/cookbook-hwfit.js (1888 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-8ff9cc64a211134c", "name": "Very large file: static/js/notes.js (5054 lines)", "shortDescription": {"text": "Very large file: static/js/notes.js (5054 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-4ee0679ff56f3e62", "name": "Very large file: static/js/theme.js (2135 lines)", "shortDescription": {"text": "Very large file: static/js/theme.js (2135 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-7397b68057c66f88", "name": "Very large file: static/js/cookbook.js (2093 lines)", "shortDescription": {"text": "Very large file: static/js/cookbook.js (2093 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-52daca3adbb935e8", "name": "Very large file: static/js/chatRenderer.js (2294 lines)", "shortDescription": {"text": "Very large file: static/js/chatRenderer.js (2294 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-5edd98cc3f023e1f", "name": "Very large file: static/js/calendar.js (3349 lines)", "shortDescription": {"text": "Very large file: static/js/calendar.js (3349 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-59e25937bda244ab", "name": "Very large file: static/js/cookbookServe.js (2128 lines)", "shortDescription": {"text": "Very large file: static/js/cookbookServe.js (2128 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-439b157282d93025", "name": "Very large file: static/js/research/panel.js (1233 lines)", "shortDescription": {"text": "Very large file: static/js/research/panel.js (1233 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-46858f847593e25f", "name": "Very large file: static/js/compare/index.js (1482 lines)", "shortDescription": {"text": "Very large file: static/js/compare/index.js (1482 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-c26317e519f4e2ba", "name": "Very large file: static/js/compare/selector.js (1335 lines)", "shortDescription": {"text": "Very large file: static/js/compare/selector.js (1335 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-43dc98d1524de01b", "name": "Very large file: static/lib/highlight.min.js (1212 lines)", "shortDescription": {"text": "Very large file: static/lib/highlight.min.js (1212 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-d5e82676eaa28671", "name": "Very large file: static/lib/docx.umd.min.js (20116 lines)", "shortDescription": {"text": "Very large file: static/lib/docx.umd.min.js (20116 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-608bfa812c698476", "name": "Very large file: routes/gallery_routes.py (1810 lines)", "shortDescription": {"text": "Very large file: routes/gallery_routes.py (1810 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-9374ec81b83777fb", "name": "Very large file: routes/cookbook_routes.py (2209 lines)", "shortDescription": {"text": "Very large file: routes/cookbook_routes.py (2209 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-b55d0e24a8c2e1e5", "name": "Very large file: routes/email_routes.py (3212 lines)", "shortDescription": {"text": "Very large file: routes/email_routes.py (3212 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-673f3a437f799223", "name": "Very large file: routes/email_pollers.py (1128 lines)", "shortDescription": {"text": "Very large file: routes/email_pollers.py (1128 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-2929b359f6275004", "name": "Very large file: routes/session_routes.py (1242 lines)", "shortDescription": {"text": "Very large file: routes/session_routes.py (1242 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-d083a991224fe0bd", "name": "Very large file: routes/model_routes.py (2082 lines)", "shortDescription": {"text": "Very large file: routes/model_routes.py (2082 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-7030e9ee8b95d594", "name": "Very large file: routes/skills_routes.py (1542 lines)", "shortDescription": {"text": "Very large file: routes/skills_routes.py (1542 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-d54932a0c44e69ba", "name": "Very large file: routes/document_routes.py (1688 lines)", "shortDescription": {"text": "Very large file: routes/document_routes.py (1688 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-ad80f178b3a839b0", "name": "Very large file: routes/email_helpers.py (1390 lines)", "shortDescription": {"text": "Very large file: routes/email_helpers.py (1390 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-566b3d1740bfbdbc", "name": "Very large file: routes/chat_routes.py (1323 lines)", "shortDescription": {"text": "Very large file: routes/chat_routes.py (1323 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-deb8f0c1acaa3341", "name": "Very large file: routes/calendar_routes.py (1341 lines)", "shortDescription": {"text": "Very large file: routes/calendar_routes.py (1341 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-96a8bde0735b2f8f", "name": "Very large file: core/database.py (1933 lines)", "shortDescription": {"text": "Very large file: core/database.py (1933 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-90c1b21a270b9707", "name": "Very large file: mcp_servers/email_server.py (1609 lines)", "shortDescription": {"text": "Very large file: mcp_servers/email_server.py (1609 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-333431b0425b7044", "name": "Very large file: src/task_scheduler.py (2282 lines)", "shortDescription": {"text": "Very large file: src/task_scheduler.py (2282 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-dbde8db3df870687", "name": "Very large file: src/tool_schemas.py (1236 lines)", "shortDescription": {"text": "Very large file: src/tool_schemas.py (1236 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-6e670f641ce824fa", "name": "Very large file: src/tool_implementations.py (4144 lines)", "shortDescription": {"text": "Very large file: src/tool_implementations.py (4144 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-edc7beb1ebfabed9", "name": "Very large file: src/llm_core.py (1603 lines)", "shortDescription": {"text": "Very large file: src/llm_core.py (1603 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-13df7b5d548071df", "name": "Very large file: src/builtin_actions.py (2043 lines)", "shortDescription": {"text": "Very large file: src/builtin_actions.py (2043 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-87770dbf2196257a", "name": "Very large file: src/agent_loop.py (2329 lines)", "shortDescription": {"text": "Very large file: src/agent_loop.py (2329 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-e22c11596c9aea4f", "name": "Very large file: src/visual_report.py (1918 lines)", "shortDescription": {"text": "Very large file: src/visual_report.py (1918 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-f7d7e7d1a24bc1ac", "name": "Very large file: src/ai_interaction.py (1824 lines)", "shortDescription": {"text": "Very large file: src/ai_interaction.py (1824 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-d53e6fc6e96b42a4", "name": "43 TODO/FIXME markers", "shortDescription": {"text": "43 TODO/FIXME markers"}, "fullDescription": {"text": "High count of TODO/FIXME/HACK markers \u2014 track them as issues so they're not forgotten."}, "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 133 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 327 placeholder/mock markers across 49 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9ade3e41df41446b", "name": "Commented-code block (5 lines) in app.py:21", "shortDescription": {"text": "Commented-code block (5 lines) in app.py:21"}, "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-e4d38cda93a3c2ce", "name": "Commented-code block (6 lines) in tests/test_security_regressions.py:802", "shortDescription": {"text": "Commented-code block (6 lines) in tests/test_security_regressions.py:802"}, "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-dccef5ed993c259e", "name": "Commented-code block (7 lines) in tests/test_email_polly_imap_leak.py:44", "shortDescription": {"text": "Commented-code block (7 lines) in tests/test_email_polly_imap_leak.py:44"}, "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-f7e787d09f8fa599", "name": "Commented-code block (5 lines) in tests/conftest.py:10", "shortDescription": {"text": "Commented-code block (5 lines) in tests/conftest.py:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-13746101840c2456", "name": "Commented-code block (6 lines) in tests/test_blind_compare_redaction.py:27", "shortDescription": {"text": "Commented-code block (6 lines) in tests/test_blind_compare_redaction.py:27"}, "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-827b951ce1692ae6", "name": "Legacy-named symbol `anthropic_v1` in tests/test_provider_endpoints.py:44", "shortDescription": {"text": "Legacy-named symbol `anthropic_v1` in tests/test_provider_endpoints.py:44"}, "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-3752f9c081d2e314", "name": "Commented-code block (6 lines) in tests/test_skills_manager_owner_isolation.py:83", "shortDescription": {"text": "Commented-code block (6 lines) in tests/test_skills_manager_owner_isolation.py:83"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c197849c87a865d6", "name": "Commented-code block (5 lines) in tests/test_webhook_ssrf_resilience.py:5", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_webhook_ssrf_resilience.py:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7d3b0eede300087e", "name": "Legacy-named symbol `test_localhost_v1` in tests/test_ollama_port_detection.py:31", "shortDescription": {"text": "Legacy-named symbol `test_localhost_v1` in tests/test_ollama_port_detection.py:31"}, "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-6ed36920e316e11b", "name": "Legacy-named symbol `test_anthropic_v1_base_does_not_double_v1` in tests/test_endpoint_resolver.py:147", "shortDescription": {"text": "Legacy-named symbol `test_anthropic_v1_base_does_not_double_v1` in tests/test_endpoint_resolver.py:147"}, "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-3a64366541838e9b", "name": "Commented-code block (6 lines) in tests/test_session_ghost_delete.py:26", "shortDescription": {"text": "Commented-code block (6 lines) in tests/test_session_ghost_delete.py:26"}, "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-b5c70568de04cbea", "name": "Commented-code block (5 lines) in tests/test_upload_handler_atomicity.py:184", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_upload_handler_atomicity.py:184"}, "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-79ceea2dde36d46e", "name": "Commented-code block (6 lines) in tests/test_companion_pairing.py:38", "shortDescription": {"text": "Commented-code block (6 lines) in tests/test_companion_pairing.py:38"}, "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-a05680ce9b77189a", "name": "Legacy-named symbol `JPG_backup` in tests/test_upload_id_extension.py:18", "shortDescription": {"text": "Legacy-named symbol `JPG_backup` in tests/test_upload_id_extension.py:18"}, "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-15c09181b1cf7d15", "name": "Commented-code block (6 lines) in tests/test_null_owner_gates.py:21", "shortDescription": {"text": "Commented-code block (6 lines) in tests/test_null_owner_gates.py:21"}, "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-0f4696b7b84c2d48", "name": "Commented-code block (8 lines) in tests/test_task_scheduler_session_delivery.py:34", "shortDescription": {"text": "Commented-code block (8 lines) in tests/test_task_scheduler_session_delivery.py:34"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-16534473b3ad0ef0", "name": "Commented-code block (5 lines) in tests/test_compare_endpoint_owner_scope.py:23", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_compare_endpoint_owner_scope.py:23"}, "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-88d370731dd90215", "name": "Commented-code block (6 lines) in tests/test_split_chunks_no_duplicate_tail.py:17", "shortDescription": {"text": "Commented-code block (6 lines) in tests/test_split_chunks_no_duplicate_tail.py:17"}, "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-95ba19b6562ca092", "name": "Legacy-named symbol `test_anthropic_probe_does_not_double_v1` in tests/test_model_routes.py:410", "shortDescription": {"text": "Legacy-named symbol `test_anthropic_probe_does_not_double_v1` in tests/test_model_routes.py:410"}, "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-9e7ec085db31f66a", "name": "Commented-code block (9 lines) in tests/test_auth_event_loop.py:23", "shortDescription": {"text": "Commented-code block (9 lines) in tests/test_auth_event_loop.py:23"}, "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-4d79a246e6c6d61c", "name": "Commented-code block (9 lines) in static/sw.js:1", "shortDescription": {"text": "Commented-code block (9 lines) in static/sw.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e5f8f27e702cfe6c", "name": "Commented-code block (5 lines) in static/app.js:33", "shortDescription": {"text": "Commented-code block (5 lines) in static/app.js:33"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5e00f21e9f96160d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/app.js:381", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/app.js:381"}, "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-775f00f01c8f9f69", "name": "Commented-code block (5 lines) in static/js/colorPicker.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/colorPicker.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-591fab2959580651", "name": "Commented-code block (7 lines) in static/js/settings.js:2179", "shortDescription": {"text": "Commented-code block (7 lines) in static/js/settings.js:2179"}, "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-86f767ce352ae9be", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/settings.js:170", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/settings.js:170"}, "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-00534997331e9087", "name": "Commented-code block (6 lines) in static/js/a11y.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in static/js/a11y.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a87f4bd25c9da2a6", "name": "Commented-code block (9 lines) in static/js/group.js:622", "shortDescription": {"text": "Commented-code block (9 lines) in static/js/group.js:622"}, "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-5488baf7554a9c79", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/group.js:186", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/group.js:186"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e66248deb8208117", "name": "Commented-code block (6 lines) in static/js/presets.js:804", "shortDescription": {"text": "Commented-code block (6 lines) in static/js/presets.js:804"}, "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-d64ba68309d21980", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/presets.js:415", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/presets.js:415"}, "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-8d3e4df8fc4eed3c", "name": "Commented-code block (7 lines) in static/js/emailInbox.js:93", "shortDescription": {"text": "Commented-code block (7 lines) in static/js/emailInbox.js:93"}, "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-26d742868db0dec5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/emailInbox.js:688", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/emailInbox.js:688"}, "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-d44014e6c61b4d22", "name": "Commented-code block (8 lines) in static/js/documentLibrary.js:477", "shortDescription": {"text": "Commented-code block (8 lines) in static/js/documentLibrary.js:477"}, "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-1b07713096d7d8e6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/documentLibrary.js:1017", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/documentLibrary.js:1017"}, "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-6bd3de7326ef71a7", "name": "Legacy-named symbol `chunkOld` in static/js/document.js:7538", "shortDescription": {"text": "Legacy-named symbol `chunkOld` in static/js/document.js:7538"}, "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-5c07dbc4f903cd07", "name": "Commented-code block (6 lines) in static/js/document.js:1384", "shortDescription": {"text": "Commented-code block (6 lines) in static/js/document.js:1384"}, "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-a00029a0be26d254", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/document.js:2991", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/document.js:2991"}, "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-668d26cbbf2fe548", "name": "Commented-code block (5 lines) in static/js/modalManager.js:59", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/modalManager.js:59"}, "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-f2541984c2663234", "name": "Commented-code block (9 lines) in static/js/galleryEditor.js:156", "shortDescription": {"text": "Commented-code block (9 lines) in static/js/galleryEditor.js:156"}, "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-8d8011c64214f810", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/galleryEditor.js:806", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/galleryEditor.js:806"}, "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-bf1584d0887d3b3d", "name": "Commented-code block (5 lines) in static/js/sidebar-layout.js:110", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/sidebar-layout.js:110"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2ef7e526f3260414", "name": "Commented-code block (5 lines) in static/js/tourHints.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/tourHints.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-13c6d9ed63758c42", "name": "Legacy-named symbol `listLegacy` in static/js/admin.js:371", "shortDescription": {"text": "Legacy-named symbol `listLegacy` in static/js/admin.js:371"}, "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-faf077ca5c9d9078", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/admin.js:191", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/admin.js:191"}, "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-4133b82a9a86b44a", "name": "Commented-code block (6 lines) in static/js/escMenuStack.js:64", "shortDescription": {"text": "Commented-code block (6 lines) in static/js/escMenuStack.js:64"}, "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-c8fe1db1e1d9a752", "name": "Commented-code block (5 lines) in static/js/cookbookDownload.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/cookbookDownload.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b70b8be3ed3d6875", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/cookbookDownload.js:553", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/cookbookDownload.js:553"}, "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-b21ba222f8f48425", "name": "Commented-code block (9 lines) in static/js/modalSnap.js:3", "shortDescription": {"text": "Commented-code block (9 lines) in static/js/modalSnap.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-be89bf266f74a6dd", "name": "Commented-code block (9 lines) in static/js/tileManager.js:173", "shortDescription": {"text": "Commented-code block (9 lines) in static/js/tileManager.js:173"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c997f7bfca7fd451", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/memory.js:437", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/memory.js:437"}, "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-99d8f34121e83739", "name": "Commented-code block (5 lines) in static/js/fileHandler.js:174", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/fileHandler.js:174"}, "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-9fae1dac7f5ab677", "name": "Commented-code block (5 lines) in static/js/chatStream.js:138", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/chatStream.js:138"}, "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-fc95fbbd2eda530f", "name": "Commented-code block (6 lines) in static/js/ui.js:236", "shortDescription": {"text": "Commented-code block (6 lines) in static/js/ui.js:236"}, "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-901ca9e6c4e6333c", "name": "Commented-code block (5 lines) in static/js/emailLibrary.js:546", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/emailLibrary.js:546"}, "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-becbe147b10af91c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/emailLibrary.js:1693", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/emailLibrary.js:1693"}, "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-a8dfb3799180fe0a", "name": "Commented-code block (5 lines) in static/js/slashAutocomplete.js:10", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/slashAutocomplete.js:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d0cf9a320e494854", "name": "Commented-code block (5 lines) in static/js/slashCommands.js:1852", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/slashCommands.js:1852"}, "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-96220258d48c4564", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/slashCommands.js:583", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/slashCommands.js:583"}, "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-9802b57f1a7793bc", "name": "Commented-code block (6 lines) in static/js/chat.js:31", "shortDescription": {"text": "Commented-code block (6 lines) in static/js/chat.js:31"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-62dbe781ad77de2f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/chat.js:690", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/chat.js:690"}, "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-8256b9373435d781", "name": "Commented-code block (30 lines) in static/js/windowDrag.js:8", "shortDescription": {"text": "Commented-code block (30 lines) in static/js/windowDrag.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-9717afc2a11b395d", "name": "Commented-code block (5 lines) in static/js/emojiPicker.js:273", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/emojiPicker.js:273"}, "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-0fe65cf35efc0baf", "name": "Legacy-named symbol `addCopyBtn_unused` in static/js/codeRunner.js:93", "shortDescription": {"text": "Legacy-named symbol `addCopyBtn_unused` in static/js/codeRunner.js:93"}, "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-2cbc61da260ea3df", "name": "Commented-code block (9 lines) in static/js/keyboard-shortcuts.js:64", "shortDescription": {"text": "Commented-code block (9 lines) in static/js/keyboard-shortcuts.js:64"}, "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-95c4e25e9fa13b37", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/keyboard-shortcuts.js:188", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/keyboard-shortcuts.js:188"}, "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-13eb48058e84eaff", "name": "Commented-code block (5 lines) in static/js/gallery.js:822", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/gallery.js:822"}, "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-c6a836f5a9c49291", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/gallery.js:700", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/gallery.js:700"}, "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-9628169a7c8e036c", "name": "Commented-code block (5 lines) in static/js/signature.js:9", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/signature.js:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-30da5c94512c6b02", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/signature.js:315", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/signature.js:315"}, "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-1da3d90cf6057cac", "name": "Commented-code block (5 lines) in static/js/cookbookRunning.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/cookbookRunning.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8150be25ab44997e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/cookbookRunning.js:378", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/cookbookRunning.js:378"}, "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-c9383b9209282e52", "name": "Commented-code block (5 lines) in static/js/skills.js:628", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/skills.js:628"}, "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-4d0cd6412d676b8a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/skills.js:37", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/skills.js:37"}, "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-be30a51131d7e08e", "name": "Commented-code block (9 lines) in static/js/sessions.js:1415", "shortDescription": {"text": "Commented-code block (9 lines) in static/js/sessions.js:1415"}, "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-38fa821f77325666", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/sessions.js:148", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/sessions.js:148"}, "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-9c73f315c08e7719", "name": "Commented-code block (6 lines) in static/js/platform.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in static/js/platform.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6230f253bc88ffe7", "name": "Commented-code block (5 lines) in static/js/windowResize.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/windowResize.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f4c878cdb5cc5b3c", "name": "Commented-code block (7 lines) in static/js/section-management.js:46", "shortDescription": {"text": "Commented-code block (7 lines) in static/js/section-management.js:46"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4fb7aeecb73d9ba8", "name": "Commented-code block (7 lines) in static/js/init.js:20", "shortDescription": {"text": "Commented-code block (7 lines) in static/js/init.js:20"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-51fc928189b5173b", "name": "Commented-code block (7 lines) in static/js/tasks.js:833", "shortDescription": {"text": "Commented-code block (7 lines) in static/js/tasks.js:833"}, "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-50d07ccb2858ee96", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/tasks.js:44", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/tasks.js:44"}, "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-f86e67faf163c884", "name": "Legacy-named symbol `hwfit_scan_cache_v1` in static/js/cookbook-hwfit.js:234", "shortDescription": {"text": "Legacy-named symbol `hwfit_scan_cache_v1` in static/js/cookbook-hwfit.js:234"}, "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-74dbfa5fa2b11478", "name": "Commented-code block (5 lines) in static/js/cookbook-hwfit.js:73", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/cookbook-hwfit.js:73"}, "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-0e78001f27edcea3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/cookbook-hwfit.js:472", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/cookbook-hwfit.js:472"}, "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-0e42e7fbdb561b3e", "name": "Commented-code block (5 lines) in static/js/notes.js:667", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/notes.js:667"}, "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-3e400264065c005f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/notes.js:412", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/notes.js:412"}, "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-9fd662838dcff6c3", "name": "Legacy-named symbol `saveNameInputOld` in static/js/theme.js:915", "shortDescription": {"text": "Legacy-named symbol `saveNameInputOld` in static/js/theme.js:915"}, "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-3bd49b148157ad46", "name": "Commented-code block (5 lines) in static/js/theme.js:562", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/theme.js:562"}, "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-4d8790405f668e8e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/theme.js:1157", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/theme.js:1157"}, "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-543e0d6a41dc6ad0", "name": "Legacy-named symbol `cookbook_dl_tab_folded_v1` in static/js/cookbook.js:1253", "shortDescription": {"text": "Legacy-named symbol `cookbook_dl_tab_folded_v1` in static/js/cookbook.js:1253"}, "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-e16e6b6a5f13522c", "name": "Commented-code block (5 lines) in static/js/cookbook.js:39", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/cookbook.js:39"}, "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-d1e7e339853b8b15", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/cookbook.js:617", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/cookbook.js:617"}, "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-83003d8524007954", "name": "Commented-code block (5 lines) in static/js/chatRenderer.js:258", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/chatRenderer.js:258"}, "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-bc49428250207acc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/chatRenderer.js:301", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/chatRenderer.js:301"}, "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-c2d624c7af361071", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/tts-ai.js:44", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/tts-ai.js:44"}, "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-52e2b5b60c28d587", "name": "Commented-code block (5 lines) in static/js/calendar.js:243", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/calendar.js:243"}, "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-4aa67a683bb409bd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/calendar.js:120", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/calendar.js:120"}, "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-87a7cb2058bdda7a", "name": "Commented-code block (5 lines) in static/js/cookbookServe.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/cookbookServe.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e09f45c8a4a9d04c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/cookbookServe.js:139", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/cookbookServe.js:139"}, "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-b753af5951b1388c", "name": "Commented-code block (8 lines) in static/js/markdown.js:214", "shortDescription": {"text": "Commented-code block (8 lines) in static/js/markdown.js:214"}, "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-3c2a4e5e479178d7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/research/jobs.js:72", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/research/jobs.js:72"}, "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-94935e555325b8ed", "name": "Commented-code block (8 lines) in static/js/editor/wire-topbar.js:78", "shortDescription": {"text": "Commented-code block (8 lines) in static/js/editor/wire-topbar.js:78"}, "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-a40df5297a6ab4ea", "name": "Commented-code block (5 lines) in static/js/editor/keyboard-shortcuts.js:129", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/editor/keyboard-shortcuts.js:129"}, "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-894d40dd9f251f98", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/editor/ai-tools-misc.js:176", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/editor/ai-tools-misc.js:176"}, "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-282c91b05ec387e5", "name": "Commented-code block (5 lines) in static/js/editor/stroke-pipeline.js:84", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/editor/stroke-pipeline.js:84"}, "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-74cb3833edd6143b", "name": "Commented-code block (5 lines) in static/js/editor/canvas-events.js:137", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/editor/canvas-events.js:137"}, "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-bd8bc17b3d4d0053", "name": "Commented-code block (6 lines) in static/js/editor/ai-inpaint.js:123", "shortDescription": {"text": "Commented-code block (6 lines) in static/js/editor/ai-inpaint.js:123"}, "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-0eaad851dede7452", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/editor/ai-inpaint.js:139", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/editor/ai-inpaint.js:139"}, "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-ef43694981e0b735", "name": "Commented-code block (6 lines) in static/js/editor/fx/adj-popup.js:107", "shortDescription": {"text": "Commented-code block (6 lines) in static/js/editor/fx/adj-popup.js:107"}, "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-b2189cecb68e3edd", "name": "Commented-code block (7 lines) in static/js/editor/tools/transform-handles.js:51", "shortDescription": {"text": "Commented-code block (7 lines) in static/js/editor/tools/transform-handles.js:51"}, "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-7f8ce784751fafc5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/compare/models.js:57", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/compare/models.js:57"}, "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-49c357da2c61f656", "name": "Commented-code block (6 lines) in static/js/compare/stream.js:222", "shortDescription": {"text": "Commented-code block (6 lines) in static/js/compare/stream.js:222"}, "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-bce59933b3f8ac39", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/compare/stream.js:84", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/compare/stream.js:84"}, "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-6356496c2f132d80", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/compare/probe.js:45", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/compare/probe.js:45"}, "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-17d1fd747169c64d", "name": "Commented-code block (9 lines) in static/js/compare/index.js:545", "shortDescription": {"text": "Commented-code block (9 lines) in static/js/compare/index.js:545"}, "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-ac0d3bcb0424842d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/compare/index.js:222", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/compare/index.js:222"}, "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-17893fb294e8545b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/compare/panes.js:393", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/compare/panes.js:393"}, "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-1bea18f46bccad60", "name": "Commented-code block (5 lines) in static/js/compare/selector.js:967", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/compare/selector.js:967"}, "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-d215fb634617eecc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/compare/selector.js:1009", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/compare/selector.js:1009"}, "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-46d657c92fc1ea43", "name": "Commented-code block (5 lines) in static/js/emailLibrary/replyRecipients.js:15", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/emailLibrary/replyRecipients.js:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4b279677820d392f", "name": "Commented-code block (5 lines) in static/js/emailLibrary/utils.js:6", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/emailLibrary/utils.js:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6737995f6105cd57", "name": "Commented-code block (5 lines) in static/js/emailLibrary/state.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/emailLibrary/state.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3615f224241e9636", "name": "Commented-code block (5 lines) in static/js/emailLibrary/signatureFold.js:7", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/emailLibrary/signatureFold.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-e764191d6e4a71a6", "name": "Commented-code block (5 lines) in static/js/calendar/reminders.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in static/js/calendar/reminders.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0412061cf5b33aae", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/lib/html2pdf.bundle.min.js:2", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/lib/html2pdf.bundle.min.js:2"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9b75ce07be3ea502", "name": "Commented-code block (6 lines) in scripts/add_hwfit_models.py:269", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/add_hwfit_models.py:269"}, "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-b6bc66d6251abe58", "name": "Commented-code block (5 lines) in scripts/diffusion_server.py:801", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/diffusion_server.py:801"}, "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-d4a662bbf5d20518", "name": "Stub function `set_postfix` (body is just `pass`/`return`) \u2014 scripts/hf_download.py:96", "shortDescription": {"text": "Stub function `set_postfix` (body is just `pass`/`return`) \u2014 scripts/hf_download.py:96"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5a99d2c584e51960", "name": "Commented-code block (6 lines) in routes/gallery_routes.py:829", "shortDescription": {"text": "Commented-code block (6 lines) in routes/gallery_routes.py:829"}, "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-a767fba748bf5f66", "name": "Commented-code block (5 lines) in routes/cookbook_routes.py:441", "shortDescription": {"text": "Commented-code block (5 lines) in routes/cookbook_routes.py:441"}, "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-ffa4d817b604eccd", "name": "Network/subprocess call without timeout or try/except \u2014 routes/cookbook_routes.py:381", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 routes/cookbook_routes.py:381"}, "fullDescription": {"text": "`subprocess.Popen(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e8b797e8aea5e832", "name": "Commented-code block (5 lines) in routes/shell_routes.py:17", "shortDescription": {"text": "Commented-code block (5 lines) in routes/shell_routes.py:17"}, "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-be86ce32febdb1e3", "name": "Commented-code block (6 lines) in routes/contacts_routes.py:133", "shortDescription": {"text": "Commented-code block (6 lines) in routes/contacts_routes.py:133"}, "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-070f09bedd5139d3", "name": "Commented-code block (7 lines) in routes/memory_routes.py:388", "shortDescription": {"text": "Commented-code block (7 lines) in routes/memory_routes.py:388"}, "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-7d4515e0a1479056", "name": "Commented-code block (12 lines) in routes/email_routes.py:463", "shortDescription": {"text": "Commented-code block (12 lines) in routes/email_routes.py:463"}, "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-d41acc5391955be0", "name": "Commented-code block (6 lines) in routes/cookbook_helpers.py:229", "shortDescription": {"text": "Commented-code block (6 lines) in routes/cookbook_helpers.py:229"}, "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-761d66b182636ec0", "name": "Commented-code block (5 lines) in routes/email_pollers.py:191", "shortDescription": {"text": "Commented-code block (5 lines) in routes/email_pollers.py:191"}, "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-b7c79b0e3b36336c", "name": "Commented-code block (9 lines) in routes/session_routes.py:191", "shortDescription": {"text": "Commented-code block (9 lines) in routes/session_routes.py:191"}, "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-d8b8d7244d29ca20", "name": "Commented-code block (6 lines) in routes/model_routes.py:269", "shortDescription": {"text": "Commented-code block (6 lines) in routes/model_routes.py:269"}, "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-bad98b6e18faa4fc", "name": "Commented-code block (5 lines) in routes/prefs_routes.py:48", "shortDescription": {"text": "Commented-code block (5 lines) in routes/prefs_routes.py:48"}, "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-87ae9f780f339146", "name": "Commented-code block (6 lines) in routes/note_routes.py:200", "shortDescription": {"text": "Commented-code block (6 lines) in routes/note_routes.py:200"}, "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-3f9c4d066b721a38", "name": "Commented-code block (5 lines) in routes/auth_routes.py:514", "shortDescription": {"text": "Commented-code block (5 lines) in routes/auth_routes.py:514"}, "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-5d99ef21f9ec58c5", "name": "Commented-code block (6 lines) in routes/document_routes.py:75", "shortDescription": {"text": "Commented-code block (6 lines) in routes/document_routes.py:75"}, "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-59030ae7496c4754", "name": "Commented-code block (5 lines) in routes/email_helpers.py:328", "shortDescription": {"text": "Commented-code block (5 lines) in routes/email_helpers.py:328"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d2884189d489be23", "name": "Legacy-named symbol `msgs_to_copy` in routes/history_routes.py:464", "shortDescription": {"text": "Legacy-named symbol `msgs_to_copy` in routes/history_routes.py:464"}, "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-9cad05b7f069f386", "name": "Commented-code block (12 lines) in routes/emoji_routes.py:1", "shortDescription": {"text": "Commented-code block (12 lines) in routes/emoji_routes.py:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-110deed796879c0e", "name": "Commented-code block (7 lines) in routes/chat_routes.py:401", "shortDescription": {"text": "Commented-code block (7 lines) in routes/chat_routes.py:401"}, "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-4d099a9abb1f507a", "name": "Commented-code block (6 lines) in routes/calendar_routes.py:36", "shortDescription": {"text": "Commented-code block (6 lines) in routes/calendar_routes.py:36"}, "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-cfb151a601f70579", "name": "Commented-code block (5 lines) in routes/chat_helpers.py:159", "shortDescription": {"text": "Commented-code block (5 lines) in routes/chat_helpers.py:159"}, "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-655216e63ac019f9", "name": "Commented-code block (6 lines) in routes/upload_routes.py:29", "shortDescription": {"text": "Commented-code block (6 lines) in routes/upload_routes.py:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-64b691f35ba6ef8c", "name": "Commented-code block (6 lines) in routes/task_routes.py:748", "shortDescription": {"text": "Commented-code block (6 lines) in routes/task_routes.py:748"}, "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-f4d414eb3f38c2ef", "name": "Network/subprocess call without timeout or try/except \u2014 routes/task_routes.py:329", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 routes/task_routes.py:329"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0c81dfb35325031a", "name": "Commented-code block (5 lines) in services/hwfit/hardware.py:121", "shortDescription": {"text": "Commented-code block (5 lines) in services/hwfit/hardware.py:121"}, "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-fa7c8e49f92d337b", "name": "Commented-code block (5 lines) in services/hwfit/fit.py:311", "shortDescription": {"text": "Commented-code block (5 lines) in services/hwfit/fit.py:311"}, "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-6236a63596fcb14c", "name": "Commented-code block (5 lines) in services/hwfit/models.py:164", "shortDescription": {"text": "Commented-code block (5 lines) in services/hwfit/models.py:164"}, "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-5daa5bb9e8117916", "name": "Legacy-named symbol `days_old` in services/search/ranking.py:40", "shortDescription": {"text": "Legacy-named symbol `days_old` in services/search/ranking.py:40"}, "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-ea7e01267f4fd1bd", "name": "Legacy-named symbol `body_copy` in services/search/content.py:334", "shortDescription": {"text": "Legacy-named symbol `body_copy` in services/search/content.py:334"}, "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-a6f8e98fb9c5494a", "name": "Commented-code block (10 lines) in services/search/providers.py:145", "shortDescription": {"text": "Commented-code block (10 lines) in services/search/providers.py:145"}, "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-3c6e0651867292c7", "name": "Commented-code block (5 lines) in services/search/service.py:66", "shortDescription": {"text": "Commented-code block (5 lines) in services/search/service.py:66"}, "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-e494d5152b5f7b98", "name": "Commented-code block (5 lines) in services/memory/skills.py:282", "shortDescription": {"text": "Commented-code block (5 lines) in services/memory/skills.py:282"}, "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-a567ad206c29cdcd", "name": "Commented-code block (6 lines) in services/memory/memory_extractor.py:335", "shortDescription": {"text": "Commented-code block (6 lines) in services/memory/memory_extractor.py:335"}, "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-f4f9b3397847d61b", "name": "Commented-code block (6 lines) in services/memory/skill_extractor.py:160", "shortDescription": {"text": "Commented-code block (6 lines) in services/memory/skill_extractor.py:160"}, "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-e5c55862afac5d7b", "name": "Commented-code block (8 lines) in services/stt/stt_service.py:68", "shortDescription": {"text": "Commented-code block (8 lines) in services/stt/stt_service.py:68"}, "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-6456625b3a12fd22", "name": "Commented-code block (5 lines) in core/database.py:110", "shortDescription": {"text": "Commented-code block (5 lines) in core/database.py:110"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4f77a77cb2290833", "name": "Legacy-named symbol `archived_old` in core/session_manager.py:615", "shortDescription": {"text": "Legacy-named symbol `archived_old` in core/session_manager.py:615"}, "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-5d678c42a223212f", "name": "Commented-code block (6 lines) in core/session_manager.py:307", "shortDescription": {"text": "Commented-code block (6 lines) in core/session_manager.py:307"}, "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-3d6292ce24743cd1", "name": "Commented-code block (14 lines) in core/auth.py:43", "shortDescription": {"text": "Commented-code block (14 lines) in core/auth.py:43"}, "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-e00630055ce6e799", "name": "Commented-code block (6 lines) in core/middleware.py:84", "shortDescription": {"text": "Commented-code block (6 lines) in core/middleware.py:84"}, "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-92d5fe8f591f0477", "name": "Commented-code block (5 lines) in mcp_servers/email_server.py:44", "shortDescription": {"text": "Commented-code block (5 lines) in mcp_servers/email_server.py:44"}, "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-5f6a4716e48cd791", "name": "Commented-code block (5 lines) in .github/scripts/check-pr-description.js:89", "shortDescription": {"text": "Commented-code block (5 lines) in .github/scripts/check-pr-description.js:89"}, "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-1733be936255007a", "name": "Commented-code block (5 lines) in .github/scripts/check-issue-description.js:125", "shortDescription": {"text": "Commented-code block (5 lines) in .github/scripts/check-issue-description.js:125"}, "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-aae755c77bf8655c", "name": "Legacy-named symbol `days_old` in src/chat_processor.py:140", "shortDescription": {"text": "Legacy-named symbol `days_old` in src/chat_processor.py:140"}, "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-56afa60ceefe988a", "name": "Commented-code block (6 lines) in src/chat_processor.py:287", "shortDescription": {"text": "Commented-code block (6 lines) in src/chat_processor.py:287"}, "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-3c4efb27f45bc5da", "name": "Commented-code block (5 lines) in src/context_compactor.py:232", "shortDescription": {"text": "Commented-code block (5 lines) in src/context_compactor.py:232"}, "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-2b914b3176631baf", "name": "Commented-code block (5 lines) in src/task_scheduler.py:20", "shortDescription": {"text": "Commented-code block (5 lines) in src/task_scheduler.py:20"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-375ce09640765022", "name": "Commented-code block (7 lines) in src/tool_index.py:27", "shortDescription": {"text": "Commented-code block (7 lines) in src/tool_index.py:27"}, "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-4dd96fb10e62f631", "name": "Commented-code block (8 lines) in src/email_thread_parser.py:68", "shortDescription": {"text": "Commented-code block (8 lines) in src/email_thread_parser.py:68"}, "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-c41b82022a86ce2e", "name": "Commented-code block (5 lines) in src/tool_implementations.py:1665", "shortDescription": {"text": "Commented-code block (5 lines) in src/tool_implementations.py:1665"}, "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-7487104d0c6e0a95", "name": "Commented-code block (6 lines) in src/auth_helpers.py:66", "shortDescription": {"text": "Commented-code block (6 lines) in src/auth_helpers.py:66"}, "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-f60935ff06906768", "name": "Commented-code block (6 lines) in src/bg_jobs.py:92", "shortDescription": {"text": "Commented-code block (6 lines) in src/bg_jobs.py:92"}, "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-a893c1835b549b08", "name": "Network/subprocess call without timeout or try/except \u2014 src/bg_jobs.py:131", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 src/bg_jobs.py:131"}, "fullDescription": {"text": "`subprocess.Popen(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f1c49a88cbd440fb", "name": "Commented-code block (6 lines) in src/upload_handler.py:79", "shortDescription": {"text": "Commented-code block (6 lines) in src/upload_handler.py:79"}, "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-28749e6c0b06fab0", "name": "Commented-code block (6 lines) in src/deep_research.py:577", "shortDescription": {"text": "Commented-code block (6 lines) in src/deep_research.py:577"}, "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-03eb5fc6fb0819c5", "name": "Commented-code block (5 lines) in src/agent_tools.py:45", "shortDescription": {"text": "Commented-code block (5 lines) in src/agent_tools.py:45"}, "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-8fd9dbf316a262ec", "name": "Commented-code block (8 lines) in src/config.py:7", "shortDescription": {"text": "Commented-code block (8 lines) in src/config.py: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-87a6b5aa53a71a56", "name": "Commented-code block (5 lines) in src/personal_docs.py:267", "shortDescription": {"text": "Commented-code block (5 lines) in src/personal_docs.py:267"}, "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-45a6ba192d94befb", "name": "Commented-code block (5 lines) in src/youtube_handler.py:210", "shortDescription": {"text": "Commented-code block (5 lines) in src/youtube_handler.py:210"}, "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-326b4248f2d4a8f8", "name": "Commented-code block (5 lines) in src/chat_handler.py:188", "shortDescription": {"text": "Commented-code block (5 lines) in src/chat_handler.py:188"}, "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-7ee2a77f3c01f813", "name": "Legacy-named symbol `_migrate_from_legacy` in src/memory.py:125", "shortDescription": {"text": "Legacy-named symbol `_migrate_from_legacy` in src/memory.py:125"}, "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-9ccd4bdcee424924", "name": "Commented-code block (5 lines) in src/memory.py:64", "shortDescription": {"text": "Commented-code block (5 lines) in src/memory.py:64"}, "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-bae4f83d3399c8bd", "name": "Commented-code block (5 lines) in src/research_handler.py:91", "shortDescription": {"text": "Commented-code block (5 lines) in src/research_handler.py:91"}, "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-304660d6b1a455a1", "name": "Legacy-named symbol `last_copy` in src/llm_core.py:714", "shortDescription": {"text": "Legacy-named symbol `last_copy` in src/llm_core.py:714"}, "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-9c9197ebddd631b5", "name": "Commented-code block (6 lines) in src/llm_core.py:51", "shortDescription": {"text": "Commented-code block (6 lines) in src/llm_core.py:51"}, "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-9ee9422a4c1dcf2d", "name": "Commented-code block (5 lines) in src/event_bus.py:99", "shortDescription": {"text": "Commented-code block (5 lines) in src/event_bus.py:99"}, "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-42e8b5711f333e85", "name": "Commented-code block (10 lines) in src/tool_execution.py:161", "shortDescription": {"text": "Commented-code block (10 lines) in src/tool_execution.py:161"}, "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-48170b1ee821d760", "name": "Commented-code block (11 lines) in src/builtin_mcp.py:132", "shortDescription": {"text": "Commented-code block (11 lines) in src/builtin_mcp.py:132"}, "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-9934469878e4ad09", "name": "Commented-code block (7 lines) in src/builtin_actions.py:1182", "shortDescription": {"text": "Commented-code block (7 lines) in src/builtin_actions.py:1182"}, "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-c725e24791289a61", "name": "Commented-code block (13 lines) in src/tool_parsing.py:57", "shortDescription": {"text": "Commented-code block (13 lines) in src/tool_parsing.py:57"}, "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-42f79fd2f5db03b7", "name": "Commented-code block (5 lines) in src/pdf_forms.py:298", "shortDescription": {"text": "Commented-code block (5 lines) in src/pdf_forms.py:298"}, "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-ed8b432a4e423404", "name": "Commented-code block (7 lines) in src/preset_manager.py:98", "shortDescription": {"text": "Commented-code block (7 lines) in src/preset_manager.py:98"}, "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-27b1184c130c8e28", "name": "Commented-code block (7 lines) in src/agent_loop.py:449", "shortDescription": {"text": "Commented-code block (7 lines) in src/agent_loop.py:449"}, "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-32362a407e43f3e5", "name": "Commented-code block (6 lines) in src/visual_report.py:32", "shortDescription": {"text": "Commented-code block (6 lines) in src/visual_report.py:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-12bd09a693e52c58", "name": "Commented-code block (7 lines) in src/settings.py:58", "shortDescription": {"text": "Commented-code block (7 lines) in src/settings.py:58"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3790bcb4c7ae6dae", "name": "Commented-code block (7 lines) in src/pdf_form_doc.py:97", "shortDescription": {"text": "Commented-code block (7 lines) in src/pdf_form_doc.py:97"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0b68eddf9524daaa", "name": "Commented-code block (5 lines) in src/bg_monitor.py:113", "shortDescription": {"text": "Commented-code block (5 lines) in src/bg_monitor.py:113"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a5f0e07e771b2ca5", "name": "Commented-code block (7 lines) in src/teacher_escalation.py:126", "shortDescription": {"text": "Commented-code block (7 lines) in src/teacher_escalation.py:126"}, "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-b685858d8ffcfe77", "name": "Commented-code block (6 lines) in src/embeddings.py:17", "shortDescription": {"text": "Commented-code block (6 lines) in src/embeddings.py:17"}, "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-18e874fa92eb87b8", "name": "Commented-code block (5 lines) in src/endpoint_resolver.py:19", "shortDescription": {"text": "Commented-code block (5 lines) in src/endpoint_resolver.py:19"}, "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-743bff5bcacedf27", "name": "Commented-code block (6 lines) in src/chat_helpers.py:41", "shortDescription": {"text": "Commented-code block (6 lines) in src/chat_helpers.py:41"}, "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-37878f01b2201ed9", "name": "Commented-code block (7 lines) in src/document_processor.py:447", "shortDescription": {"text": "Commented-code block (7 lines) in src/document_processor.py:447"}, "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-ed7be3f4cd2a005a", "name": "Commented-code block (6 lines) in src/ai_interaction.py:716", "shortDescription": {"text": "Commented-code block (6 lines) in src/ai_interaction.py:716"}, "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-f538f79f9ee244ef", "name": "Blocking `httpx.get(...)` inside `async def do_list_models` \u2014 src/ai_interaction.py:1131", "shortDescription": {"text": "Blocking `httpx.get(...)` inside `async def do_list_models` \u2014 src/ai_interaction.py:1131"}, "fullDescription": {"text": "Sync I/O inside an async function blocks the event loop. While `httpx.get(...)` is running, *all* other coroutines on this loop are paused \u2014 silent throughput collapse under concurrency. Use the async equivalent (`httpx.AsyncClient`, `asyncio.sleep`, `aiofiles`) or wrap with `await asyncio.to_thread(...)`."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f845adee2c65a341", "name": "Blocking `httpx.get(...)` inside `async def do_generate_image` \u2014 src/ai_interaction.py:1729", "shortDescription": {"text": "Blocking `httpx.get(...)` inside `async def do_generate_image` \u2014 src/ai_interaction.py:1729"}, "fullDescription": {"text": "Sync I/O inside an async function blocks the event loop. While `httpx.get(...)` is running, *all* other coroutines on this loop are paused \u2014 silent throughput collapse under concurrency. Use the async equivalent (`httpx.AsyncClient`, `asyncio.sleep`, `aiofiles`) or wrap with `await asyncio.to_thread(...)`."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ddcc7fe267debbe3", "name": "Legacy-named symbol `body_copy` in src/search/content.py:341", "shortDescription": {"text": "Legacy-named symbol `body_copy` in src/search/content.py:341"}, "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-df0afc1f01418874", "name": "Commented-code block (7 lines) in src/search/content.py:328", "shortDescription": {"text": "Commented-code block (7 lines) in src/search/content.py:328"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d9605dfafce61a4a", "name": "91 env vars used in code but missing from .env.example", "shortDescription": {"text": "91 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ALLOWED_ORIGINS`, `APPDATA`, `APP_PORT`, `ARCHIVE_FOLDER`, `AUTH_ENABLED`, `CARDDAV_PASSWORD`, `CARDDAV_URL`, `CARDDAV_USERNAME` + 83 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\napp.py:dispatch, app.py:dispatch\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscripts/pr_blocker_audit.py:build_structured_report, scripts/pr_blocker_audit.py:render_markdown, scripts/pr_blocker_audit.py:render_terminal\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-33a6b62e30ce7ab4", "name": "Near-duplicate function bodies in 6 places", "shortDescription": {"text": "Near-duplicate function bodies in 6 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nroutes/note_routes.py:get_note, routes/note_routes.py:update_note, routes/note_routes.py:delete_note, routes/note_routes.py:toggle_pin\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9e797351ad71f680", "name": "FastAPI POST `pair_create` without auth dependency \u2014 companion/routes.py:175", "shortDescription": {"text": "FastAPI POST `pair_create` without auth dependency \u2014 companion/routes.py:175"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a1294cbd2d69c94f", "name": "FastAPI POST `generate_image` without auth dependency \u2014 scripts/diffusion_server.py:421", "shortDescription": {"text": "FastAPI POST `generate_image` without auth dependency \u2014 scripts/diffusion_server.py:421"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cc99ec91c8713b86", "name": "FastAPI POST `inpaint_image` without auth dependency \u2014 scripts/diffusion_server.py:584", "shortDescription": {"text": "FastAPI POST `inpaint_image` without auth dependency \u2014 scripts/diffusion_server.py:584"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a770960e84b90756", "name": "FastAPI POST `harmonize_image` without auth dependency \u2014 scripts/diffusion_server.py:917", "shortDescription": {"text": "FastAPI POST `harmonize_image` without auth dependency \u2014 scripts/diffusion_server.py:917"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e87e2867fa04de51", "name": "FastAPI POST `gallery_upload` without auth dependency \u2014 routes/gallery_routes.py:39", "shortDescription": {"text": "FastAPI POST `gallery_upload` without auth dependency \u2014 routes/gallery_routes.py:39"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-16fbab9d3ccb6aa8", "name": "FastAPI POST `gallery_replace` without auth dependency \u2014 routes/gallery_routes.py:118", "shortDescription": {"text": "FastAPI POST `gallery_replace` without auth dependency \u2014 routes/gallery_routes.py:118"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d69a549cca69a0ae", "name": "FastAPI POST `gallery_rename` without auth dependency \u2014 routes/gallery_routes.py:163", "shortDescription": {"text": "FastAPI POST `gallery_rename` without auth dependency \u2014 routes/gallery_routes.py:163"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-54f8c5847a19a00e", "name": "FastAPI POST `gallery_rotate` without auth dependency \u2014 routes/gallery_routes.py:189", "shortDescription": {"text": "FastAPI POST `gallery_rotate` without auth dependency \u2014 routes/gallery_routes.py:189"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-53d1c092b48978a7", "name": "FastAPI POST `gallery_ai_upscale` without auth dependency \u2014 routes/gallery_routes.py:246", "shortDescription": {"text": "FastAPI POST `gallery_ai_upscale` without auth dependency \u2014 routes/gallery_routes.py:246"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d2f4f9fbb067df47", "name": "FastAPI POST `gallery_style_transfer` without auth dependency \u2014 routes/gallery_routes.py:289", "shortDescription": {"text": "FastAPI POST `gallery_style_transfer` without auth dependency \u2014 routes/gallery_routes.py:289"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b6edb400931ace5d", "name": "FastAPI POST `create_album` without auth dependency \u2014 routes/gallery_routes.py:531", "shortDescription": {"text": "FastAPI POST `create_album` without auth dependency \u2014 routes/gallery_routes.py:531"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-82c45d4a9066e931", "name": "FastAPI POST `ai_tag_batch` without auth dependency \u2014 routes/gallery_routes.py:579", "shortDescription": {"text": "FastAPI POST `ai_tag_batch` without auth dependency \u2014 routes/gallery_routes.py:579"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-deec17f3a317f7a7", "name": "FastAPI PATCH `patch_gallery_image` without auth dependency \u2014 routes/gallery_routes.py:624", "shortDescription": {"text": "FastAPI PATCH `patch_gallery_image` without auth dependency \u2014 routes/gallery_routes.py:624"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f662aedceff38c8d", "name": "FastAPI POST `gallery_download_zip` without auth dependency \u2014 routes/gallery_routes.py:668", "shortDescription": {"text": "FastAPI POST `gallery_download_zip` without auth dependency \u2014 routes/gallery_routes.py:668"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-66af7953eae94e8e", "name": "FastAPI POST `clear_gallery_user_tags` without auth dependency \u2014 routes/gallery_routes.py:723", "shortDescription": {"text": "FastAPI POST `clear_gallery_user_tags` without auth dependency \u2014 routes/gallery_routes.py:723"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fb5afe59a4a134c8", "name": "FastAPI POST `clear_gallery_ai_tags` without auth dependency \u2014 routes/gallery_routes.py:747", "shortDescription": {"text": "FastAPI POST `clear_gallery_ai_tags` without auth dependency \u2014 routes/gallery_routes.py:747"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ccf52318802ba40d", "name": "FastAPI POST `dedupe_gallery_tags` without auth dependency \u2014 routes/gallery_routes.py:773", "shortDescription": {"text": "FastAPI POST `dedupe_gallery_tags` without auth dependency \u2014 routes/gallery_routes.py:773"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b3985724190042c3", "name": "FastAPI DELETE `delete_gallery_image` without auth dependency \u2014 routes/gallery_routes.py:808", "shortDescription": {"text": "FastAPI DELETE `delete_gallery_image` without auth dependency \u2014 routes/gallery_routes.py:808"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-363895332873f3f6", "name": "FastAPI POST `inpaint_proxy` without auth dependency \u2014 routes/gallery_routes.py:920", "shortDescription": {"text": "FastAPI POST `inpaint_proxy` without auth dependency \u2014 routes/gallery_routes.py:920"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-988c53e5f461f476", "name": "FastAPI POST `harmonize_image` without auth dependency \u2014 routes/gallery_routes.py:1117", "shortDescription": {"text": "FastAPI POST `harmonize_image` without auth dependency \u2014 routes/gallery_routes.py:1117"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-acc86c524db6a9c2", "name": "FastAPI POST `sharpen_image` without auth dependency \u2014 routes/gallery_routes.py:1316", "shortDescription": {"text": "FastAPI POST `sharpen_image` without auth dependency \u2014 routes/gallery_routes.py:1316"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f82aad53303d8430", "name": "FastAPI POST `denoise_image` without auth dependency \u2014 routes/gallery_routes.py:1340", "shortDescription": {"text": "FastAPI POST `denoise_image` without auth dependency \u2014 routes/gallery_routes.py:1340"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d3d76c31da05474c", "name": "FastAPI POST `upscale_image_local` without auth dependency \u2014 routes/gallery_routes.py:1390", "shortDescription": {"text": "FastAPI POST `upscale_image_local` without auth dependency \u2014 routes/gallery_routes.py:1390"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d96bde9524550fc4", "name": "FastAPI POST `remove_background` without auth dependency \u2014 routes/gallery_routes.py:1435", "shortDescription": {"text": "FastAPI POST `remove_background` without auth dependency \u2014 routes/gallery_routes.py:1435"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d79faf6e347db8da", "name": "FastAPI POST `enhance_face` without auth dependency \u2014 routes/gallery_routes.py:1528", "shortDescription": {"text": "FastAPI POST `enhance_face` without auth dependency \u2014 routes/gallery_routes.py:1528"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-37ed748c0a74d716", "name": "FastAPI PUT `update_album` without auth dependency \u2014 routes/gallery_routes.py:1611", "shortDescription": {"text": "FastAPI PUT `update_album` without auth dependency \u2014 routes/gallery_routes.py:1611"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bc54014cb134b9cf", "name": "FastAPI DELETE `delete_album` without auth dependency \u2014 routes/gallery_routes.py:1632", "shortDescription": {"text": "FastAPI DELETE `delete_album` without auth dependency \u2014 routes/gallery_routes.py:1632"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-06efee687f75848c", "name": "FastAPI POST `add_to_album` without auth dependency \u2014 routes/gallery_routes.py:1647", "shortDescription": {"text": "FastAPI POST `add_to_album` without auth dependency \u2014 routes/gallery_routes.py:1647"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-75d88f40f7496004", "name": "FastAPI POST `remove_from_album` without auth dependency \u2014 routes/gallery_routes.py:1665", "shortDescription": {"text": "FastAPI POST `remove_from_album` without auth dependency \u2014 routes/gallery_routes.py:1665"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b62edc43e1d71d0c", "name": "FastAPI POST `toggle_favorite` without auth dependency \u2014 routes/gallery_routes.py:1686", "shortDescription": {"text": "FastAPI POST `toggle_favorite` without auth dependency \u2014 routes/gallery_routes.py:1686"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bf44073e8097743c", "name": "FastAPI POST `ai_tag_image` without auth dependency \u2014 routes/gallery_routes.py:1700", "shortDescription": {"text": "FastAPI POST `ai_tag_image` without auth dependency \u2014 routes/gallery_routes.py:1700"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eaa2ab8e54b8817c", "name": "FastAPI POST `generate_cookbook_ssh_key` without auth dependency \u2014 routes/cookbook_routes.py:272", "shortDescription": {"text": "FastAPI POST `generate_cookbook_ssh_key` without auth dependency \u2014 routes/cookbook_routes.py:272"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0316588f1f0c1501", "name": "FastAPI POST `model_download` without auth dependency \u2014 routes/cookbook_routes.py:392", "shortDescription": {"text": "FastAPI POST `model_download` without auth dependency \u2014 routes/cookbook_routes.py:392"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d6f1a9512fe1d813", "name": "FastAPI POST `model_serve` without auth dependency \u2014 routes/cookbook_routes.py:878", "shortDescription": {"text": "FastAPI POST `model_serve` without auth dependency \u2014 routes/cookbook_routes.py:878"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7f1af5e816ed8881", "name": "FastAPI POST `server_setup` without auth dependency \u2014 routes/cookbook_routes.py:1265", "shortDescription": {"text": "FastAPI POST `server_setup` without auth dependency \u2014 routes/cookbook_routes.py:1265"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1bbb3dbc3b89e19e", "name": "FastAPI POST `kill_pid` without auth dependency \u2014 routes/cookbook_routes.py:1663", "shortDescription": {"text": "FastAPI POST `kill_pid` without auth dependency \u2014 routes/cookbook_routes.py:1663"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-79dd6088d3ddbef6", "name": "FastAPI POST `save_cookbook_state` without auth dependency \u2014 routes/cookbook_routes.py:1726", "shortDescription": {"text": "FastAPI POST `save_cookbook_state` without auth dependency \u2014 routes/cookbook_routes.py:1726"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bbe18fe7a2c26a43", "name": "FastAPI POST `shell_exec` without auth dependency \u2014 routes/shell_routes.py:747", "shortDescription": {"text": "FastAPI POST `shell_exec` without auth dependency \u2014 routes/shell_routes.py:747"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-41ee134cd05c2bc9", "name": "FastAPI POST `shell_stream` without auth dependency \u2014 routes/shell_routes.py:759", "shortDescription": {"text": "FastAPI POST `shell_stream` without auth dependency \u2014 routes/shell_routes.py:759"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-05474c386e6e7f87", "name": "FastAPI POST `install_package` without auth dependency \u2014 routes/shell_routes.py:1035", "shortDescription": {"text": "FastAPI POST `install_package` without auth dependency \u2014 routes/shell_routes.py:1035"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-183491be8c2c1368", "name": "FastAPI POST `rebuild_engine` without auth dependency \u2014 routes/shell_routes.py:1061", "shortDescription": {"text": "FastAPI POST `rebuild_engine` without auth dependency \u2014 routes/shell_routes.py:1061"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a5db65ffee8057a8", "name": "FastAPI POST `expand_character_prompt` without auth dependency \u2014 routes/preset_routes.py:71", "shortDescription": {"text": "FastAPI POST `expand_character_prompt` without auth dependency \u2014 routes/preset_routes.py:71"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-accbad5fcdf8ade9", "name": "FastAPI POST `create_webhook` without auth dependency \u2014 routes/webhook_routes.py:96", "shortDescription": {"text": "FastAPI POST `create_webhook` without auth dependency \u2014 routes/webhook_routes.py:96"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3f7969b71446050f", "name": "FastAPI POST `test_webhook` without auth dependency \u2014 routes/webhook_routes.py:142", "shortDescription": {"text": "FastAPI POST `test_webhook` without auth dependency \u2014 routes/webhook_routes.py:142"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5afb3f5bdca89f9f", "name": "FastAPI PATCH `toggle_webhook` without auth dependency \u2014 routes/webhook_routes.py:157", "shortDescription": {"text": "FastAPI PATCH `toggle_webhook` without auth dependency \u2014 routes/webhook_routes.py:157"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-64c8e8d6cf9a2e57", "name": "FastAPI DELETE `delete_webhook` without auth dependency \u2014 routes/webhook_routes.py:171", "shortDescription": {"text": "FastAPI DELETE `delete_webhook` without auth dependency \u2014 routes/webhook_routes.py:171"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6e6a0d5da7705774", "name": "FastAPI POST `sync_chat` without auth dependency \u2014 routes/webhook_routes.py:232", "shortDescription": {"text": "FastAPI POST `sync_chat` without auth dependency \u2014 routes/webhook_routes.py:232"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-21ca0923fb76f595", "name": "FastAPI DELETE `wipe` without auth dependency \u2014 routes/admin_wipe_routes.py:71", "shortDescription": {"text": "FastAPI DELETE `wipe` without auth dependency \u2014 routes/admin_wipe_routes.py:71"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d1fc46721dbc3847", "name": "FastAPI POST `start_comparison` without auth dependency \u2014 routes/compare_routes.py:51", "shortDescription": {"text": "FastAPI POST `start_comparison` without auth dependency \u2014 routes/compare_routes.py:51"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-24c030f033aea1bb", "name": "FastAPI POST `vote_comparison` without auth dependency \u2014 routes/compare_routes.py:149", "shortDescription": {"text": "FastAPI POST `vote_comparison` without auth dependency \u2014 routes/compare_routes.py:149"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a7bd6a1278bdbc36", "name": "FastAPI POST `record_comparison` without auth dependency \u2014 routes/compare_routes.py:195", "shortDescription": {"text": "FastAPI POST `record_comparison` without auth dependency \u2014 routes/compare_routes.py:195"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b85f491140a5d618", "name": "FastAPI DELETE `delete_comparison` without auth dependency \u2014 routes/compare_routes.py:258", "shortDescription": {"text": "FastAPI DELETE `delete_comparison` without auth dependency \u2014 routes/compare_routes.py:258"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8858dbd183da7ade", "name": "FastAPI POST `debug_memory_relevance` without auth dependency \u2014 routes/memory_routes.py:69", "shortDescription": {"text": "FastAPI POST `debug_memory_relevance` without auth dependency \u2014 routes/memory_routes.py:69"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7df9b2389bf012ef", "name": "FastAPI POST `api_add_memory` without auth dependency \u2014 routes/memory_routes.py:84", "shortDescription": {"text": "FastAPI POST `api_add_memory` without auth dependency \u2014 routes/memory_routes.py:84"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9b4225bc1d5b3ec9", "name": "FastAPI POST `search_memories` without auth dependency \u2014 routes/memory_routes.py:131", "shortDescription": {"text": "FastAPI POST `search_memories` without auth dependency \u2014 routes/memory_routes.py:131"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9578364feed3639f", "name": "FastAPI POST `extract_memory` without auth dependency \u2014 routes/memory_routes.py:206", "shortDescription": {"text": "FastAPI POST `extract_memory` without auth dependency \u2014 routes/memory_routes.py:206"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8ef9be83eb98ecc3", "name": "FastAPI POST `api_audit_memories` without auth dependency \u2014 routes/memory_routes.py:252", "shortDescription": {"text": "FastAPI POST `api_audit_memories` without auth dependency \u2014 routes/memory_routes.py:252"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9d2df84d5c7b8942", "name": "FastAPI POST `import_memories_from_file` without auth dependency \u2014 routes/memory_routes.py:330", "shortDescription": {"text": "FastAPI POST `import_memories_from_file` without auth dependency \u2014 routes/memory_routes.py:330"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a782cceaec54e1f7", "name": "FastAPI POST `pin_memory` without auth dependency \u2014 routes/memory_routes.py:482", "shortDescription": {"text": "FastAPI POST `pin_memory` without auth dependency \u2014 routes/memory_routes.py:482"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8e13489f8b966050", "name": "FastAPI PUT `update_memory` without auth dependency \u2014 routes/memory_routes.py:507", "shortDescription": {"text": "FastAPI PUT `update_memory` without auth dependency \u2014 routes/memory_routes.py:507"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-308b3d31b838e204", "name": "FastAPI DELETE `delete_memory` without auth dependency \u2014 routes/memory_routes.py:529", "shortDescription": {"text": "FastAPI DELETE `delete_memory` without auth dependency \u2014 routes/memory_routes.py:529"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b3933d9f06c2e71e", "name": "FastAPI POST `download_model` without auth dependency \u2014 routes/embedding_routes.py:141", "shortDescription": {"text": "FastAPI POST `download_model` without auth dependency \u2014 routes/embedding_routes.py:141"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-81027478faa49400", "name": "FastAPI DELETE `delete_model` without auth dependency \u2014 routes/embedding_routes.py:198", "shortDescription": {"text": "FastAPI DELETE `delete_model` without auth dependency \u2014 routes/embedding_routes.py:198"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bb3bd6e8cbc02ba6", "name": "FastAPI POST `set_endpoint` without auth dependency \u2014 routes/embedding_routes.py:239", "shortDescription": {"text": "FastAPI POST `set_endpoint` without auth dependency \u2014 routes/embedding_routes.py:239"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-71b3972fa07b8b71", "name": "FastAPI DELETE `clear_endpoint` without auth dependency \u2014 routes/embedding_routes.py:302", "shortDescription": {"text": "FastAPI DELETE `clear_endpoint` without auth dependency \u2014 routes/embedding_routes.py:302"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-088e9f663f47a156", "name": "FastAPI POST `upload_files_to_rag` without auth dependency \u2014 routes/personal_routes.py:194", "shortDescription": {"text": "FastAPI POST `upload_files_to_rag` without auth dependency \u2014 routes/personal_routes.py:194"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-31e50f76ccdf2cde", "name": "FastAPI POST `create_session` without auth dependency \u2014 routes/session_routes.py:288", "shortDescription": {"text": "FastAPI POST `create_session` without auth dependency \u2014 routes/session_routes.py:288"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bed07c1356c40353", "name": "FastAPI PATCH `rename_session` without auth dependency \u2014 routes/session_routes.py:409", "shortDescription": {"text": "FastAPI PATCH `rename_session` without auth dependency \u2014 routes/session_routes.py:409"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9e4e6166089355c8", "name": "FastAPI POST `inject_messages` without auth dependency \u2014 routes/session_routes.py:487", "shortDescription": {"text": "FastAPI POST `inject_messages` without auth dependency \u2014 routes/session_routes.py:487"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c5d907a2b7c4aafd", "name": "FastAPI POST `delete_session_beacon` without auth dependency \u2014 routes/session_routes.py:503", "shortDescription": {"text": "FastAPI POST `delete_session_beacon` without auth dependency \u2014 routes/session_routes.py:503"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-70caf01516cce85c", "name": "FastAPI POST `bulk_delete_sessions` without auth dependency \u2014 routes/session_routes.py:508", "shortDescription": {"text": "FastAPI POST `bulk_delete_sessions` without auth dependency \u2014 routes/session_routes.py:508"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3d5309d860ceaaf8", "name": "FastAPI DELETE `delete_session` without auth dependency \u2014 routes/session_routes.py:534", "shortDescription": {"text": "FastAPI DELETE `delete_session` without auth dependency \u2014 routes/session_routes.py:534"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5818b731a0de6de4", "name": "FastAPI DELETE `delete_all_sessions` without auth dependency \u2014 routes/session_routes.py:568", "shortDescription": {"text": "FastAPI DELETE `delete_all_sessions` without auth dependency \u2014 routes/session_routes.py:568"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-090650c0e0db2616", "name": "FastAPI POST `archive_session` without auth dependency \u2014 routes/session_routes.py:591", "shortDescription": {"text": "FastAPI POST `archive_session` without auth dependency \u2014 routes/session_routes.py:591"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f983c03e5ea8a919", "name": "FastAPI POST `unarchive_session` without auth dependency \u2014 routes/session_routes.py:629", "shortDescription": {"text": "FastAPI POST `unarchive_session` without auth dependency \u2014 routes/session_routes.py:629"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-89d9ec296c00f82b", "name": "FastAPI POST `sessions_save_now` without auth dependency \u2014 routes/session_routes.py:806", "shortDescription": {"text": "FastAPI POST `sessions_save_now` without auth dependency \u2014 routes/session_routes.py:806"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-674d1e6504257e5d", "name": "FastAPI POST `create_session_openai` without auth dependency \u2014 routes/session_routes.py:814", "shortDescription": {"text": "FastAPI POST `create_session_openai` without auth dependency \u2014 routes/session_routes.py:814"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-91f37808edc2d49d", "name": "FastAPI POST `mark_session_important` without auth dependency \u2014 routes/session_routes.py:839", "shortDescription": {"text": "FastAPI POST `mark_session_important` without auth dependency \u2014 routes/session_routes.py:839"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-660a14342e59de42", "name": "FastAPI POST `compact_session` without auth dependency \u2014 routes/session_routes.py:876", "shortDescription": {"text": "FastAPI POST `compact_session` without auth dependency \u2014 routes/session_routes.py:876"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5ef2b22cad9d8028", "name": "FastAPI POST `auto_sort_sessions` without auth dependency \u2014 routes/session_routes.py:954", "shortDescription": {"text": "FastAPI POST `auto_sort_sessions` without auth dependency \u2014 routes/session_routes.py:954"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-40c2dd7eca2477b6", "name": "FastAPI POST `probe_selected` without auth dependency \u2014 routes/model_routes.py:1229", "shortDescription": {"text": "FastAPI POST `probe_selected` without auth dependency \u2014 routes/model_routes.py:1229"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e3ed48d7c43f222d", "name": "FastAPI POST `create_model_endpoint` without auth dependency \u2014 routes/model_routes.py:1411", "shortDescription": {"text": "FastAPI POST `create_model_endpoint` without auth dependency \u2014 routes/model_routes.py:1411"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9a3008f2de2eb2fb", "name": "FastAPI POST `test_model_endpoint` without auth dependency \u2014 routes/model_routes.py:1603", "shortDescription": {"text": "FastAPI POST `test_model_endpoint` without auth dependency \u2014 routes/model_routes.py:1603"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1f5222696e8e546e", "name": "FastAPI PATCH `update_hidden_models` without auth dependency \u2014 routes/model_routes.py:1735", "shortDescription": {"text": "FastAPI PATCH `update_hidden_models` without auth dependency \u2014 routes/model_routes.py:1735"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a777abcd18d9b767", "name": "FastAPI PATCH `toggle_model_endpoint` without auth dependency \u2014 routes/model_routes.py:1874", "shortDescription": {"text": "FastAPI PATCH `toggle_model_endpoint` without auth dependency \u2014 routes/model_routes.py:1874"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4641b201ea9b980a", "name": "FastAPI DELETE `delete_model_endpoint` without auth dependency \u2014 routes/model_routes.py:2030", "shortDescription": {"text": "FastAPI DELETE `delete_model_endpoint` without auth dependency \u2014 routes/model_routes.py:2030"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2effb7326230800a", "name": "FastAPI POST `update_tools` without auth dependency \u2014 routes/model_routes.py:2073", "shortDescription": {"text": "FastAPI POST `update_tools` without auth dependency \u2014 routes/model_routes.py:2073"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9f383d74ceda1bed", "name": "FastAPI PUT `set_builtin_override` without auth dependency \u2014 routes/skills_routes.py:1167", "shortDescription": {"text": "FastAPI PUT `set_builtin_override` without auth dependency \u2014 routes/skills_routes.py:1167"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b7ee032d356e6a81", "name": "FastAPI DELETE `reset_builtin_override` without auth dependency \u2014 routes/skills_routes.py:1193", "shortDescription": {"text": "FastAPI DELETE `reset_builtin_override` without auth dependency \u2014 routes/skills_routes.py:1193"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f4cdd1f1a9ab53b2", "name": "FastAPI POST `add_skill` without auth dependency \u2014 routes/skills_routes.py:1206", "shortDescription": {"text": "FastAPI POST `add_skill` without auth dependency \u2014 routes/skills_routes.py:1206"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8fa7feffcc02489a", "name": "FastAPI POST `test_skill` without auth dependency \u2014 routes/skills_routes.py:1263", "shortDescription": {"text": "FastAPI POST `test_skill` without auth dependency \u2014 routes/skills_routes.py:1263"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9013da3d76503a5c", "name": "FastAPI POST `audit_all_skills` without auth dependency \u2014 routes/skills_routes.py:1344", "shortDescription": {"text": "FastAPI POST `audit_all_skills` without auth dependency \u2014 routes/skills_routes.py:1344"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-179c1180ed0e4074", "name": "FastAPI POST `audit_cancel` without auth dependency \u2014 routes/skills_routes.py:1433", "shortDescription": {"text": "FastAPI POST `audit_cancel` without auth dependency \u2014 routes/skills_routes.py:1433"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ad2e7045ce60ca2f", "name": "FastAPI POST `save_skill_markdown` without auth dependency \u2014 routes/skills_routes.py:1446", "shortDescription": {"text": "FastAPI POST `save_skill_markdown` without auth dependency \u2014 routes/skills_routes.py:1446"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a06de52eb657664e", "name": "FastAPI PUT `update_skill` without auth dependency \u2014 routes/skills_routes.py:1499", "shortDescription": {"text": "FastAPI PUT `update_skill` without auth dependency \u2014 routes/skills_routes.py:1499"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-49dbf1b7209b3028", "name": "FastAPI DELETE `delete_skill` without auth dependency \u2014 routes/skills_routes.py:1518", "shortDescription": {"text": "FastAPI DELETE `delete_skill` without auth dependency \u2014 routes/skills_routes.py:1518"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-65b6c9a729a1baaa", "name": "FastAPI POST `search_skills` without auth dependency \u2014 routes/skills_routes.py:1531", "shortDescription": {"text": "FastAPI POST `search_skills` without auth dependency \u2014 routes/skills_routes.py:1531"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b6a2df04a33383f5", "name": "FastAPI POST `add_server` without auth dependency \u2014 routes/mcp_routes.py:81", "shortDescription": {"text": "FastAPI POST `add_server` without auth dependency \u2014 routes/mcp_routes.py:81"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-543606709feb25e4", "name": "FastAPI POST `reconnect_server` without auth dependency \u2014 routes/mcp_routes.py:201", "shortDescription": {"text": "FastAPI POST `reconnect_server` without auth dependency \u2014 routes/mcp_routes.py:201"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1b3c8a77f2d4abbf", "name": "FastAPI PATCH `toggle_server` without auth dependency \u2014 routes/mcp_routes.py:235", "shortDescription": {"text": "FastAPI PATCH `toggle_server` without auth dependency \u2014 routes/mcp_routes.py:235"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c9ca4b85a1701476", "name": "FastAPI DELETE `delete_server` without auth dependency \u2014 routes/mcp_routes.py:268", "shortDescription": {"text": "FastAPI DELETE `delete_server` without auth dependency \u2014 routes/mcp_routes.py:268"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2cdda74888f31553", "name": "FastAPI PATCH `update_disabled_tools` without auth dependency \u2014 routes/mcp_routes.py:313", "shortDescription": {"text": "FastAPI PATCH `update_disabled_tools` without auth dependency \u2014 routes/mcp_routes.py:313"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0b5596573d952775", "name": "FastAPI PUT `set_pref` without auth dependency \u2014 routes/prefs_routes.py:82", "shortDescription": {"text": "FastAPI PUT `set_pref` without auth dependency \u2014 routes/prefs_routes.py:82"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b9366fcbdaf03768", "name": "FastAPI POST `create_signature` without auth dependency \u2014 routes/signature_routes.py:67", "shortDescription": {"text": "FastAPI POST `create_signature` without auth dependency \u2014 routes/signature_routes.py:67"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d02cdf0948b55e77", "name": "FastAPI DELETE `delete_signature` without auth dependency \u2014 routes/signature_routes.py:102", "shortDescription": {"text": "FastAPI DELETE `delete_signature` without auth dependency \u2014 routes/signature_routes.py:102"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-68693ec2aad6eab9", "name": "FastAPI POST `create_note` without auth dependency \u2014 routes/note_routes.py:499", "shortDescription": {"text": "FastAPI POST `create_note` without auth dependency \u2014 routes/note_routes.py:499"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-85db4af408654ed4", "name": "FastAPI PUT `update_note` without auth dependency \u2014 routes/note_routes.py:546", "shortDescription": {"text": "FastAPI PUT `update_note` without auth dependency \u2014 routes/note_routes.py:546"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2e8df021fcafa327", "name": "FastAPI DELETE `delete_note` without auth dependency \u2014 routes/note_routes.py:594", "shortDescription": {"text": "FastAPI DELETE `delete_note` without auth dependency \u2014 routes/note_routes.py:594"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8a0f2a7fd9378b9e", "name": "FastAPI POST `toggle_pin` without auth dependency \u2014 routes/note_routes.py:613", "shortDescription": {"text": "FastAPI POST `toggle_pin` without auth dependency \u2014 routes/note_routes.py:613"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9eda4326a59edb5f", "name": "FastAPI POST `toggle_archive` without auth dependency \u2014 routes/note_routes.py:632", "shortDescription": {"text": "FastAPI POST `toggle_archive` without auth dependency \u2014 routes/note_routes.py:632"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ac59cef6659cf051", "name": "FastAPI POST `toggle_item` without auth dependency \u2014 routes/note_routes.py:651", "shortDescription": {"text": "FastAPI POST `toggle_item` without auth dependency \u2014 routes/note_routes.py:651"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-10d75becbf8d99e2", "name": "FastAPI POST `fire_reminder` without auth dependency \u2014 routes/note_routes.py:677", "shortDescription": {"text": "FastAPI POST `fire_reminder` without auth dependency \u2014 routes/note_routes.py:677"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d70fccba230692af", "name": "FastAPI POST `reorder_notes` without auth dependency \u2014 routes/note_routes.py:704", "shortDescription": {"text": "FastAPI POST `reorder_notes` without auth dependency \u2014 routes/note_routes.py:704"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d9d111187ee1813a", "name": "FastAPI POST `first_run_setup` without auth dependency \u2014 routes/auth_routes.py:87", "shortDescription": {"text": "FastAPI POST `first_run_setup` without auth dependency \u2014 routes/auth_routes.py:87"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-52e7ab9126405250", "name": "FastAPI POST `change_password` without auth dependency \u2014 routes/auth_routes.py:176", "shortDescription": {"text": "FastAPI POST `change_password` without auth dependency \u2014 routes/auth_routes.py:176"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b2c71cd8f65af818", "name": "FastAPI POST `totp_setup` without auth dependency \u2014 routes/auth_routes.py:194", "shortDescription": {"text": "FastAPI POST `totp_setup` without auth dependency \u2014 routes/auth_routes.py:194"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-67583e42a7f72811", "name": "FastAPI POST `totp_confirm` without auth dependency \u2014 routes/auth_routes.py:217", "shortDescription": {"text": "FastAPI POST `totp_confirm` without auth dependency \u2014 routes/auth_routes.py:217"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ec705777450e117d", "name": "FastAPI POST `totp_disable` without auth dependency \u2014 routes/auth_routes.py:231", "shortDescription": {"text": "FastAPI POST `totp_disable` without auth dependency \u2014 routes/auth_routes.py:231"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-23c7ddba76297c4f", "name": "FastAPI POST `admin_create_user` without auth dependency \u2014 routes/auth_routes.py:257", "shortDescription": {"text": "FastAPI POST `admin_create_user` without auth dependency \u2014 routes/auth_routes.py:257"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1a6ad112a53ecbaa", "name": "FastAPI PUT `update_user_privileges` without auth dependency \u2014 routes/auth_routes.py:269", "shortDescription": {"text": "FastAPI PUT `update_user_privileges` without auth dependency \u2014 routes/auth_routes.py:269"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c035d01a66c77b48", "name": "FastAPI PUT `rename_user` without auth dependency \u2014 routes/auth_routes.py:280", "shortDescription": {"text": "FastAPI PUT `rename_user` without auth dependency \u2014 routes/auth_routes.py:280"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-095587bc8373d9a2", "name": "FastAPI POST `toggle_signup` without auth dependency \u2014 routes/auth_routes.py:345", "shortDescription": {"text": "FastAPI POST `toggle_signup` without auth dependency \u2014 routes/auth_routes.py:345"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e62af92c6ab1f4bc", "name": "FastAPI PUT `set_signup_enabled` without auth dependency \u2014 routes/auth_routes.py:361", "shortDescription": {"text": "FastAPI PUT `set_signup_enabled` without auth dependency \u2014 routes/auth_routes.py:361"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ae098b5983635700", "name": "FastAPI DELETE `admin_delete_user` without auth dependency \u2014 routes/auth_routes.py:370", "shortDescription": {"text": "FastAPI DELETE `admin_delete_user` without auth dependency \u2014 routes/auth_routes.py:370"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-282ee5d9598122c3", "name": "FastAPI POST `set_features` without auth dependency \u2014 routes/auth_routes.py:398", "shortDescription": {"text": "FastAPI POST `set_features` without auth dependency \u2014 routes/auth_routes.py:398"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-53a25c64db11d5bf", "name": "FastAPI POST `set_settings` without auth dependency \u2014 routes/auth_routes.py:425", "shortDescription": {"text": "FastAPI POST `set_settings` without auth dependency \u2014 routes/auth_routes.py:425"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-83d177236f027867", "name": "FastAPI POST `create_integration` without auth dependency \u2014 routes/auth_routes.py:460", "shortDescription": {"text": "FastAPI POST `create_integration` without auth dependency \u2014 routes/auth_routes.py:460"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-71835c84a4ac72d0", "name": "FastAPI PUT `update_integration_route` without auth dependency \u2014 routes/auth_routes.py:470", "shortDescription": {"text": "FastAPI PUT `update_integration_route` without auth dependency \u2014 routes/auth_routes.py:470"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fe072d1e5e9e0b8a", "name": "FastAPI DELETE `delete_integration_route` without auth dependency \u2014 routes/auth_routes.py:482", "shortDescription": {"text": "FastAPI DELETE `delete_integration_route` without auth dependency \u2014 routes/auth_routes.py:482"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4175174adf4e6b0b", "name": "FastAPI POST `test_integration_route` without auth dependency \u2014 routes/auth_routes.py:493", "shortDescription": {"text": "FastAPI POST `test_integration_route` without auth dependency \u2014 routes/auth_routes.py:493"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d68cb8cfe8feae81", "name": "FastAPI POST `test_research` without auth dependency \u2014 routes/diagnostics_routes.py:60", "shortDescription": {"text": "FastAPI POST `test_research` without auth dependency \u2014 routes/diagnostics_routes.py:60"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6eb2c9aaa7382c0f", "name": "FastAPI POST `create_document` without auth dependency \u2014 routes/document_routes.py:61", "shortDescription": {"text": "FastAPI POST `create_document` without auth dependency \u2014 routes/document_routes.py:61"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d57ef11c8d49f141", "name": "FastAPI POST `import_pdf` without auth dependency \u2014 routes/document_routes.py:143", "shortDescription": {"text": "FastAPI POST `import_pdf` without auth dependency \u2014 routes/document_routes.py:143"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-06f0e4da5ad60946", "name": "FastAPI POST `archive_document` without auth dependency \u2014 routes/document_routes.py:396", "shortDescription": {"text": "FastAPI POST `archive_document` without auth dependency \u2014 routes/document_routes.py:396"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-81e8001c4a370ef0", "name": "FastAPI POST `extract_pdf_text` without auth dependency \u2014 routes/document_routes.py:412", "shortDescription": {"text": "FastAPI POST `extract_pdf_text` without auth dependency \u2014 routes/document_routes.py:412"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-36127db4855840fd", "name": "FastAPI POST `documents_export_zip` without auth dependency \u2014 routes/document_routes.py:472", "shortDescription": {"text": "FastAPI POST `documents_export_zip` without auth dependency \u2014 routes/document_routes.py:472"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3acce11d02010c98", "name": "FastAPI PUT `update_document` without auth dependency \u2014 routes/document_routes.py:535", "shortDescription": {"text": "FastAPI PUT `update_document` without auth dependency \u2014 routes/document_routes.py:535"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c5e4dd98e307cb39", "name": "FastAPI PATCH `patch_document` without auth dependency \u2014 routes/document_routes.py:597", "shortDescription": {"text": "FastAPI PATCH `patch_document` without auth dependency \u2014 routes/document_routes.py:597"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-70b21f95b971f397", "name": "FastAPI DELETE `delete_document` without auth dependency \u2014 routes/document_routes.py:634", "shortDescription": {"text": "FastAPI DELETE `delete_document` without auth dependency \u2014 routes/document_routes.py:634"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2e1454eca89616e1", "name": "FastAPI POST `restore_version` without auth dependency \u2014 routes/document_routes.py:706", "shortDescription": {"text": "FastAPI POST `restore_version` without auth dependency \u2014 routes/document_routes.py:706"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0db7311c66d47a26", "name": "FastAPI POST `tidy_documents` without auth dependency \u2014 routes/document_routes.py:747", "shortDescription": {"text": "FastAPI POST `tidy_documents` without auth dependency \u2014 routes/document_routes.py:747"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-53fa65348f333bef", "name": "FastAPI POST `ai_tidy_documents` without auth dependency \u2014 routes/document_routes.py:850", "shortDescription": {"text": "FastAPI POST `ai_tidy_documents` without auth dependency \u2014 routes/document_routes.py:850"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fdfc9ef0a291c65f", "name": "FastAPI POST `export_pdf_preview` without auth dependency \u2014 routes/document_routes.py:947", "shortDescription": {"text": "FastAPI POST `export_pdf_preview` without auth dependency \u2014 routes/document_routes.py:947"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-79deb80355bfb2d9", "name": "FastAPI POST `ai_fill_annotations` without auth dependency \u2014 routes/document_routes.py:1121", "shortDescription": {"text": "FastAPI POST `ai_fill_annotations` without auth dependency \u2014 routes/document_routes.py:1121"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-17026717a2de1e0f", "name": "FastAPI POST `prepare_signed_reply` without auth dependency \u2014 routes/document_routes.py:1491", "shortDescription": {"text": "FastAPI POST `prepare_signed_reply` without auth dependency \u2014 routes/document_routes.py:1491"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d5743390004007f1", "name": "FastAPI POST `create_draft` without auth dependency \u2014 routes/editor_draft_routes.py:111", "shortDescription": {"text": "FastAPI POST `create_draft` without auth dependency \u2014 routes/editor_draft_routes.py:111"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ef008284929fb11e", "name": "FastAPI PUT `update_draft` without auth dependency \u2014 routes/editor_draft_routes.py:137", "shortDescription": {"text": "FastAPI PUT `update_draft` without auth dependency \u2014 routes/editor_draft_routes.py:137"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c9cf59c7d48af827", "name": "FastAPI DELETE `delete_draft` without auth dependency \u2014 routes/editor_draft_routes.py:169", "shortDescription": {"text": "FastAPI DELETE `delete_draft` without auth dependency \u2014 routes/editor_draft_routes.py:169"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c4a9239d5184f15e", "name": "FastAPI POST `research_cancel` without auth dependency \u2014 routes/research_routes.py:139", "shortDescription": {"text": "FastAPI POST `research_cancel` without auth dependency \u2014 routes/research_routes.py:139"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6b4b465b35852cb1", "name": "FastAPI POST `research_result` without auth dependency \u2014 routes/research_routes.py:148", "shortDescription": {"text": "FastAPI POST `research_result` without auth dependency \u2014 routes/research_routes.py:148"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-164483895ac2e009", "name": "FastAPI POST `research_hide_image` without auth dependency \u2014 routes/research_routes.py:195", "shortDescription": {"text": "FastAPI POST `research_hide_image` without auth dependency \u2014 routes/research_routes.py:195"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-609828c9ae2bae17", "name": "FastAPI POST `research_unhide_images` without auth dependency \u2014 routes/research_routes.py:207", "shortDescription": {"text": "FastAPI POST `research_unhide_images` without auth dependency \u2014 routes/research_routes.py:207"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f021c1f0e28bc23e", "name": "FastAPI POST `research_archive` without auth dependency \u2014 routes/research_routes.py:290", "shortDescription": {"text": "FastAPI POST `research_archive` without auth dependency \u2014 routes/research_routes.py:290"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-62d286db92e2ccb5", "name": "FastAPI DELETE `research_delete` without auth dependency \u2014 routes/research_routes.py:310", "shortDescription": {"text": "FastAPI DELETE `research_delete` without auth dependency \u2014 routes/research_routes.py:310"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4269ffa10a7b7531", "name": "FastAPI POST `research_start` without auth dependency \u2014 routes/research_routes.py:348", "shortDescription": {"text": "FastAPI POST `research_start` without auth dependency \u2014 routes/research_routes.py:348"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ba785e5c07badc7d", "name": "FastAPI POST `research_result_peek` without auth dependency \u2014 routes/research_routes.py:488", "shortDescription": {"text": "FastAPI POST `research_result_peek` without auth dependency \u2014 routes/research_routes.py:488"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e09b650c825dfa5f", "name": "FastAPI POST `research_spinoff` without auth dependency \u2014 routes/research_routes.py:511", "shortDescription": {"text": "FastAPI POST `research_spinoff` without auth dependency \u2014 routes/research_routes.py:511"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f724c95b9e16d44b", "name": "FastAPI POST `cleanup_endpoint` without auth dependency \u2014 routes/cleanup_routes.py:38", "shortDescription": {"text": "FastAPI POST `cleanup_endpoint` without auth dependency \u2014 routes/cleanup_routes.py:38"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9d8d9b92cac21a84", "name": "FastAPI PATCH `update_assistant_settings` without auth dependency \u2014 routes/assistant_routes.py:155", "shortDescription": {"text": "FastAPI PATCH `update_assistant_settings` without auth dependency \u2014 routes/assistant_routes.py:155"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-035694055dae464f", "name": "FastAPI POST `run_check_in_now` without auth dependency \u2014 routes/assistant_routes.py:267", "shortDescription": {"text": "FastAPI POST `run_check_in_now` without auth dependency \u2014 routes/assistant_routes.py:267"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-564ed9f149d9c20f", "name": "FastAPI POST `truncate_session` without auth dependency \u2014 routes/history_routes.py:99", "shortDescription": {"text": "FastAPI POST `truncate_session` without auth dependency \u2014 routes/history_routes.py:99"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1f7546711cb8c31f", "name": "FastAPI POST `add_message` without auth dependency \u2014 routes/history_routes.py:113", "shortDescription": {"text": "FastAPI POST `add_message` without auth dependency \u2014 routes/history_routes.py:113"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fd08fa03a481c0cb", "name": "FastAPI POST `delete_messages` without auth dependency \u2014 routes/history_routes.py:129", "shortDescription": {"text": "FastAPI POST `delete_messages` without auth dependency \u2014 routes/history_routes.py:129"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4e214222bd3c0da4", "name": "FastAPI POST `edit_message` without auth dependency \u2014 routes/history_routes.py:192", "shortDescription": {"text": "FastAPI POST `edit_message` without auth dependency \u2014 routes/history_routes.py:192"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b805c7e520e03b96", "name": "FastAPI POST `mark_stopped` without auth dependency \u2014 routes/history_routes.py:245", "shortDescription": {"text": "FastAPI POST `mark_stopped` without auth dependency \u2014 routes/history_routes.py:245"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8cea3419e0b36f25", "name": "FastAPI POST `update_last_meta` without auth dependency \u2014 routes/history_routes.py:300", "shortDescription": {"text": "FastAPI POST `update_last_meta` without auth dependency \u2014 routes/history_routes.py:300"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c52f086545900d2f", "name": "FastAPI POST `merge_last_assistant` without auth dependency \u2014 routes/history_routes.py:351", "shortDescription": {"text": "FastAPI POST `merge_last_assistant` without auth dependency \u2014 routes/history_routes.py:351"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fa1f7f660d63cf0c", "name": "FastAPI POST `fork_session` without auth dependency \u2014 routes/history_routes.py:438", "shortDescription": {"text": "FastAPI POST `fork_session` without auth dependency \u2014 routes/history_routes.py:438"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5ac38aa28e8c42f7", "name": "FastAPI POST `compact_session` without auth dependency \u2014 routes/history_routes.py:494", "shortDescription": {"text": "FastAPI POST `compact_session` without auth dependency \u2014 routes/history_routes.py:494"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7375a6c230273764", "name": "FastAPI POST `transcribe_audio` without auth dependency \u2014 routes/stt_routes.py:27", "shortDescription": {"text": "FastAPI POST `transcribe_audio` without auth dependency \u2014 routes/stt_routes.py:27"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d4a3f31241a78a05", "name": "FastAPI POST `synthesize_speech` without auth dependency \u2014 routes/tts_routes.py:30", "shortDescription": {"text": "FastAPI POST `synthesize_speech` without auth dependency \u2014 routes/tts_routes.py:30"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9f351b81c8e37bce", "name": "FastAPI POST `clear_tts_cache` without auth dependency \u2014 routes/tts_routes.py:77", "shortDescription": {"text": "FastAPI POST `clear_tts_cache` without auth dependency \u2014 routes/tts_routes.py:77"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f6f7884da677e999", "name": "FastAPI POST `create_token` without auth dependency \u2014 routes/api_token_routes.py:111", "shortDescription": {"text": "FastAPI POST `create_token` without auth dependency \u2014 routes/api_token_routes.py:111"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-14d8cea150862425", "name": "FastAPI PATCH `update_token` without auth dependency \u2014 routes/api_token_routes.py:151", "shortDescription": {"text": "FastAPI PATCH `update_token` without auth dependency \u2014 routes/api_token_routes.py:151"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1db67f43252c6375", "name": "FastAPI DELETE `delete_token` without auth dependency \u2014 routes/api_token_routes.py:178", "shortDescription": {"text": "FastAPI DELETE `delete_token` without auth dependency \u2014 routes/api_token_routes.py:178"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-202ed4ccc2fb2d32", "name": "FastAPI POST `import_data` without auth dependency \u2014 routes/backup_routes.py:62", "shortDescription": {"text": "FastAPI POST `import_data` without auth dependency \u2014 routes/backup_routes.py:62"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4356acf992db03bf", "name": "FastAPI POST `do_web_search` without auth dependency \u2014 routes/search_routes.py:46", "shortDescription": {"text": "FastAPI POST `do_web_search` without auth dependency \u2014 routes/search_routes.py:46"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-720e0a3fcbd09354", "name": "FastAPI POST `search_with_provider` without auth dependency \u2014 routes/search_routes.py:87", "shortDescription": {"text": "FastAPI POST `search_with_provider` without auth dependency \u2014 routes/search_routes.py:87"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-50400c8ee9567ce3", "name": "FastAPI POST `chat_endpoint` without auth dependency \u2014 routes/chat_routes.py:268", "shortDescription": {"text": "FastAPI POST `chat_endpoint` without auth dependency \u2014 routes/chat_routes.py:268"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b036c896497444a2", "name": "FastAPI POST `chat_stream` without auth dependency \u2014 routes/chat_routes.py:366", "shortDescription": {"text": "FastAPI POST `chat_stream` without auth dependency \u2014 routes/chat_routes.py:366"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3bfb0b9e4dc236fb", "name": "FastAPI POST `chat_stop` without auth dependency \u2014 routes/chat_routes.py:1118", "shortDescription": {"text": "FastAPI POST `chat_stop` without auth dependency \u2014 routes/chat_routes.py:1118"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-979662aa0e60c100", "name": "FastAPI POST `inject_context` without auth dependency \u2014 routes/chat_routes.py:1145", "shortDescription": {"text": "FastAPI POST `inject_context` without auth dependency \u2014 routes/chat_routes.py:1145"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-be5c4fee06ee28e6", "name": "FastAPI POST `rewrite_message` without auth dependency \u2014 routes/chat_routes.py:1213", "shortDescription": {"text": "FastAPI POST `rewrite_message` without auth dependency \u2014 routes/chat_routes.py:1213"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-53e8df559621d479", "name": "FastAPI POST `manage_todos` without auth dependency \u2014 routes/codex_routes.py:167", "shortDescription": {"text": "FastAPI POST `manage_todos` without auth dependency \u2014 routes/codex_routes.py:167"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aea3af0c73aacf96", "name": "FastAPI POST `codex_email_draft` without auth dependency \u2014 routes/codex_routes.py:235", "shortDescription": {"text": "FastAPI POST `codex_email_draft` without auth dependency \u2014 routes/codex_routes.py:235"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a9f96a18f4f726c3", "name": "FastAPI POST `codex_email_send` without auth dependency \u2014 routes/codex_routes.py:248", "shortDescription": {"text": "FastAPI POST `codex_email_send` without auth dependency \u2014 routes/codex_routes.py:248"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dc65e034e4600741", "name": "FastAPI POST `codex_memory_add` without auth dependency \u2014 routes/codex_routes.py:270", "shortDescription": {"text": "FastAPI POST `codex_memory_add` without auth dependency \u2014 routes/codex_routes.py:270"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f37d644e96bf9c31", "name": "FastAPI POST `codex_calendar_create` without auth dependency \u2014 routes/codex_routes.py:299", "shortDescription": {"text": "FastAPI POST `codex_calendar_create` without auth dependency \u2014 routes/codex_routes.py:299"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d0547ce834a73d6e", "name": "FastAPI DELETE `codex_memory_delete` without auth dependency \u2014 routes/codex_routes.py:345", "shortDescription": {"text": "FastAPI DELETE `codex_memory_delete` without auth dependency \u2014 routes/codex_routes.py:345"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c0b4a612a6430791", "name": "FastAPI DELETE `codex_calendar_delete` without auth dependency \u2014 routes/codex_routes.py:352", "shortDescription": {"text": "FastAPI DELETE `codex_calendar_delete` without auth dependency \u2014 routes/codex_routes.py:352"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eeb9035a25a1a1ed", "name": "FastAPI DELETE `codex_documents_delete` without auth dependency \u2014 routes/codex_routes.py:359", "shortDescription": {"text": "FastAPI DELETE `codex_documents_delete` without auth dependency \u2014 routes/codex_routes.py:359"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-836be3bafeb14ffa", "name": "FastAPI POST `codex_documents_create` without auth dependency \u2014 routes/codex_routes.py:366", "shortDescription": {"text": "FastAPI POST `codex_documents_create` without auth dependency \u2014 routes/codex_routes.py:366"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-45b18126d3c01ec2", "name": "FastAPI POST `save_config` without auth dependency \u2014 routes/calendar_routes.py:573", "shortDescription": {"text": "FastAPI POST `save_config` without auth dependency \u2014 routes/calendar_routes.py:573"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-855e9db15216eef5", "name": "FastAPI POST `test_connection` without auth dependency \u2014 routes/calendar_routes.py:606", "shortDescription": {"text": "FastAPI POST `test_connection` without auth dependency \u2014 routes/calendar_routes.py:606"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-05f66f74f337a731", "name": "FastAPI POST `sync_caldav_endpoint` without auth dependency \u2014 routes/calendar_routes.py:689", "shortDescription": {"text": "FastAPI POST `sync_caldav_endpoint` without auth dependency \u2014 routes/calendar_routes.py:689"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b87bd841b7c59ed0", "name": "FastAPI POST `create_event` without auth dependency \u2014 routes/calendar_routes.py:779", "shortDescription": {"text": "FastAPI POST `create_event` without auth dependency \u2014 routes/calendar_routes.py:779"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-19ddd9d4d346c2cc", "name": "FastAPI PUT `update_event` without auth dependency \u2014 routes/calendar_routes.py:847", "shortDescription": {"text": "FastAPI PUT `update_event` without auth dependency \u2014 routes/calendar_routes.py:847"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e822bb41c4cfa5e9", "name": "FastAPI DELETE `delete_event` without auth dependency \u2014 routes/calendar_routes.py:901", "shortDescription": {"text": "FastAPI DELETE `delete_event` without auth dependency \u2014 routes/calendar_routes.py:901"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e063bbe45deac78b", "name": "FastAPI POST `create_calendar` without auth dependency \u2014 routes/calendar_routes.py:930", "shortDescription": {"text": "FastAPI POST `create_calendar` without auth dependency \u2014 routes/calendar_routes.py:930"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-12f4f13af2dfe417", "name": "FastAPI PUT `update_calendar` without auth dependency \u2014 routes/calendar_routes.py:952", "shortDescription": {"text": "FastAPI PUT `update_calendar` without auth dependency \u2014 routes/calendar_routes.py:952"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2ff7ad8e18773a31", "name": "FastAPI DELETE `delete_calendar` without auth dependency \u2014 routes/calendar_routes.py:973", "shortDescription": {"text": "FastAPI DELETE `delete_calendar` without auth dependency \u2014 routes/calendar_routes.py:973"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cbbce9d0fca3dbbe", "name": "FastAPI POST `import_ics` without auth dependency \u2014 routes/calendar_routes.py:995", "shortDescription": {"text": "FastAPI POST `import_ics` without auth dependency \u2014 routes/calendar_routes.py:995"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-71990e71dba93027", "name": "FastAPI POST `quick_parse` without auth dependency \u2014 routes/calendar_routes.py:1185", "shortDescription": {"text": "FastAPI POST `quick_parse` without auth dependency \u2014 routes/calendar_routes.py:1185"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5ec25ad802d6830a", "name": "FastAPI POST `save_config` without auth dependency \u2014 routes/vault_routes.py:141", "shortDescription": {"text": "FastAPI POST `save_config` without auth dependency \u2014 routes/vault_routes.py:141"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6267ffc32150e578", "name": "FastAPI POST `unlock` without auth dependency \u2014 routes/vault_routes.py:182", "shortDescription": {"text": "FastAPI POST `unlock` without auth dependency \u2014 routes/vault_routes.py:182"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3780056377383c1c", "name": "FastAPI POST `lock` without auth dependency \u2014 routes/vault_routes.py:204", "shortDescription": {"text": "FastAPI POST `lock` without auth dependency \u2014 routes/vault_routes.py:204"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ea070601568c873a", "name": "FastAPI POST `api_upload` without auth dependency \u2014 routes/upload_routes.py:20", "shortDescription": {"text": "FastAPI POST `api_upload` without auth dependency \u2014 routes/upload_routes.py:20"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-18396ad533756800", "name": "FastAPI POST `manual_cleanup` without auth dependency \u2014 routes/upload_routes.py:70", "shortDescription": {"text": "FastAPI POST `manual_cleanup` without auth dependency \u2014 routes/upload_routes.py:70"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-249f1915e40d5aca", "name": "FastAPI PUT `put_vision_text` without auth dependency \u2014 routes/upload_routes.py:223", "shortDescription": {"text": "FastAPI PUT `put_vision_text` without auth dependency \u2014 routes/upload_routes.py:223"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-20608a0de7bb1841", "name": "FastAPI POST `update_tasks_onboarding` without auth dependency \u2014 routes/task_routes.py:254", "shortDescription": {"text": "FastAPI POST `update_tasks_onboarding` without auth dependency \u2014 routes/task_routes.py:254"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-969b10b22db23ad6", "name": "FastAPI POST `create_task` without auth dependency \u2014 routes/task_routes.py:319", "shortDescription": {"text": "FastAPI POST `create_task` without auth dependency \u2014 routes/task_routes.py:319"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-498bd4f1c3c7e1ad", "name": "FastAPI POST `clear_task_cache` without auth dependency \u2014 routes/task_routes.py:430", "shortDescription": {"text": "FastAPI POST `clear_task_cache` without auth dependency \u2014 routes/task_routes.py:430"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1ab9b3eafff9f623", "name": "FastAPI PUT `update_task` without auth dependency \u2014 routes/task_routes.py:516", "shortDescription": {"text": "FastAPI PUT `update_task` without auth dependency \u2014 routes/task_routes.py:516"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b9330d559fe1f141", "name": "FastAPI DELETE `delete_task` without auth dependency \u2014 routes/task_routes.py:602", "shortDescription": {"text": "FastAPI DELETE `delete_task` without auth dependency \u2014 routes/task_routes.py:602"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fc4588f722065620", "name": "FastAPI POST `pause_task` without auth dependency \u2014 routes/task_routes.py:618", "shortDescription": {"text": "FastAPI POST `pause_task` without auth dependency \u2014 routes/task_routes.py:618"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4c53c439b847f4e7", "name": "FastAPI POST `resume_task` without auth dependency \u2014 routes/task_routes.py:634", "shortDescription": {"text": "FastAPI POST `resume_task` without auth dependency \u2014 routes/task_routes.py:634"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-abf341d61affc24c", "name": "FastAPI POST `revert_task` without auth dependency \u2014 routes/task_routes.py:656", "shortDescription": {"text": "FastAPI POST `revert_task` without auth dependency \u2014 routes/task_routes.py:656"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4b41c2645ba1f54a", "name": "FastAPI POST `run_task_now` without auth dependency \u2014 routes/task_routes.py:696", "shortDescription": {"text": "FastAPI POST `run_task_now` without auth dependency \u2014 routes/task_routes.py:696"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-569515258bebfe00", "name": "FastAPI POST `stop_task_now` without auth dependency \u2014 routes/task_routes.py:713", "shortDescription": {"text": "FastAPI POST `stop_task_now` without auth dependency \u2014 routes/task_routes.py:713"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-37e2ef820b76ed8c", "name": "FastAPI POST `regenerate_webhook` without auth dependency \u2014 routes/task_routes.py:891", "shortDescription": {"text": "FastAPI POST `regenerate_webhook` without auth dependency \u2014 routes/task_routes.py:891"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dd81d82d4a94453e", "name": "FastAPI POST `parse_task` without auth dependency \u2014 routes/task_routes.py:908", "shortDescription": {"text": "FastAPI POST `parse_task` without auth dependency \u2014 routes/task_routes.py:908"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f041685323e2b44f", "name": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:290)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:290)"}, "fullDescription": {"text": "`static/js/settings.js:290` calls `POST /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-184330fbaab835ac", "name": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:457)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:457)"}, "fullDescription": {"text": "`static/js/settings.js:457` calls `GET /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-9d11feadac8358c0", "name": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:472)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:472)"}, "fullDescription": {"text": "`static/js/settings.js:472` calls `POST /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-df8512ca2904cf22", "name": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:522)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:522)"}, "fullDescription": {"text": "`static/js/settings.js:522` calls `GET /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-033f506c032b1524", "name": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:542)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:542)"}, "fullDescription": {"text": "`static/js/settings.js:542` calls `POST /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-200d6cb458b358bc", "name": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:609)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:609)"}, "fullDescription": {"text": "`static/js/settings.js:609` calls `GET /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-9f722a894efcbff3", "name": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:640)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:640)"}, "fullDescription": {"text": "`static/js/settings.js:640` calls `POST /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-9f9eb7e6cf11da66", "name": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:701)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:701)"}, "fullDescription": {"text": "`static/js/settings.js:701` calls `GET /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-b330572c79d286a2", "name": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:718)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:718)"}, "fullDescription": {"text": "`static/js/settings.js:718` calls `POST /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-4755f7121fc890b1", "name": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:763)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:763)"}, "fullDescription": {"text": "`static/js/settings.js:763` calls `GET /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-cb9948badfb29a9b", "name": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:791)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:791)"}, "fullDescription": {"text": "`static/js/settings.js:791` calls `POST /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-49f65c153e3c95c2", "name": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:853)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:853)"}, "fullDescription": {"text": "`static/js/settings.js:853` calls `GET /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-54b62d4086c33de5", "name": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:873)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:873)"}, "fullDescription": {"text": "`static/js/settings.js:873` calls `POST /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-36faf6f93c648924", "name": "Dangling fetch: POST /api/tts/clear-cache (static/js/settings.js:882)", "shortDescription": {"text": "Dangling fetch: POST /api/tts/clear-cache (static/js/settings.js:882)"}, "fullDescription": {"text": "`static/js/settings.js:882` calls `POST /api/tts/clear-cache` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/tts/clear-cache`\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-969ea54e75a76add", "name": "Dangling fetch: POST /api/tts/synthesize (static/js/settings.js:940)", "shortDescription": {"text": "Dangling fetch: POST /api/tts/synthesize (static/js/settings.js:940)"}, "fullDescription": {"text": "`static/js/settings.js:940` calls `POST /api/tts/synthesize` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/tts/synthesize`\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-2d95057529bbde55", "name": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:1021)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:1021)"}, "fullDescription": {"text": "`static/js/settings.js:1021` calls `GET /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-aff2d63e0f5bb20c", "name": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:1035)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:1035)"}, "fullDescription": {"text": "`static/js/settings.js:1035` calls `POST /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-acd453b1403af867", "name": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:1124)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:1124)"}, "fullDescription": {"text": "`static/js/settings.js:1124` calls `GET /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-534b3e20b9f9ffc4", "name": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:1145)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:1145)"}, "fullDescription": {"text": "`static/js/settings.js:1145` calls `GET /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-4c89ad65659861cf", "name": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:1190)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:1190)"}, "fullDescription": {"text": "`static/js/settings.js:1190` calls `POST /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-75c24d4a1f3b86cd", "name": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:1327)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:1327)"}, "fullDescription": {"text": "`static/js/settings.js:1327` calls `POST /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-4d34ddbd57d7534f", "name": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:1421)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:1421)"}, "fullDescription": {"text": "`static/js/settings.js:1421` calls `GET /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-201457a9aa70945a", "name": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:1484)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:1484)"}, "fullDescription": {"text": "`static/js/settings.js:1484` calls `POST /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-e0a4a096fe42433f", "name": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:1534)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:1534)"}, "fullDescription": {"text": "`static/js/settings.js:1534` calls `GET /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-591ed4e224796792", "name": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:1542)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:1542)"}, "fullDescription": {"text": "`static/js/settings.js:1542` calls `POST /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-3a65693195653db9", "name": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:1561)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:1561)"}, "fullDescription": {"text": "`static/js/settings.js:1561` calls `GET /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-af47adc7f370e40a", "name": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:1569)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:1569)"}, "fullDescription": {"text": "`static/js/settings.js:1569` calls `POST /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-13fe25d67228b3d8", "name": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:1789)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:1789)"}, "fullDescription": {"text": "`static/js/settings.js:1789` calls `GET /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-4c8ecfb166a44544", "name": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:1947)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:1947)"}, "fullDescription": {"text": "`static/js/settings.js:1947` calls `POST /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-094db703fe13f7cc", "name": "Dangling fetch: GET /api/auth/status (static/js/settings.js:1988)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/status (static/js/settings.js:1988)"}, "fullDescription": {"text": "`static/js/settings.js:1988` calls `GET /api/auth/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/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-5f6ccb85d7f15db2", "name": "Dangling fetch: GET /api/prefs/display_name (static/js/settings.js:1993)", "shortDescription": {"text": "Dangling fetch: GET /api/prefs/display_name (static/js/settings.js:1993)"}, "fullDescription": {"text": "`static/js/settings.js:1993` calls `GET /api/prefs/display_name` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/prefs/display_name`\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-9a36da2f9c79aaf9", "name": "Dangling fetch: PUT /api/prefs/display_name (static/js/settings.js:2024)", "shortDescription": {"text": "Dangling fetch: PUT /api/prefs/display_name (static/js/settings.js:2024)"}, "fullDescription": {"text": "`static/js/settings.js:2024` calls `PUT /api/prefs/display_name` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/prefs/display_name`\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-d7dd93f7a135df72", "name": "Dangling fetch: POST /api/auth/change-password (static/js/settings.js:2056)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/change-password (static/js/settings.js:2056)"}, "fullDescription": {"text": "`static/js/settings.js:2056` calls `POST /api/auth/change-password` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/change-password`\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-e146a7572c9e7803", "name": "Dangling fetch: GET /api/auth/2fa/status (static/js/settings.js:2081)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/2fa/status (static/js/settings.js:2081)"}, "fullDescription": {"text": "`static/js/settings.js:2081` calls `GET /api/auth/2fa/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/2fa/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-c31a156204c614df", "name": "Dangling fetch: POST /api/auth/2fa/disable (static/js/settings.js:2100)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/2fa/disable (static/js/settings.js:2100)"}, "fullDescription": {"text": "`static/js/settings.js:2100` calls `POST /api/auth/2fa/disable` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/2fa/disable`\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-fbd1a6018e8d65c0", "name": "Dangling fetch: POST /api/auth/2fa/setup (static/js/settings.js:2120)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/2fa/setup (static/js/settings.js:2120)"}, "fullDescription": {"text": "`static/js/settings.js:2120` calls `POST /api/auth/2fa/setup` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/2fa/setup`\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-1958f764bf83e108", "name": "Dangling fetch: POST /api/auth/2fa/confirm (static/js/settings.js:2145)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/2fa/confirm (static/js/settings.js:2145)"}, "fullDescription": {"text": "`static/js/settings.js:2145` calls `POST /api/auth/2fa/confirm` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/2fa/confirm`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fcd871a14da6ee86", "name": "Dangling fetch: POST /api/auth/logout (static/js/settings.js:2178)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/logout (static/js/settings.js:2178)"}, "fullDescription": {"text": "`static/js/settings.js:2178` calls `POST /api/auth/logout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/logout`\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-424f762ee18e2299", "name": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:2244)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:2244)"}, "fullDescription": {"text": "`static/js/settings.js:2244` calls `GET /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-2f34c0ebe8d7ca4a", "name": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:2254)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:2254)"}, "fullDescription": {"text": "`static/js/settings.js:2254` calls `POST /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-720bc289d1c97969", "name": "Dangling fetch: GET /api/email/accounts (static/js/settings.js:2297)", "shortDescription": {"text": "Dangling fetch: GET /api/email/accounts (static/js/settings.js:2297)"}, "fullDescription": {"text": "`static/js/settings.js:2297` calls `GET /api/email/accounts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email/accounts`\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-1021243a4e6bab09", "name": "Dangling fetch: GET /api/auth/integrations (static/js/settings.js:2314)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/integrations (static/js/settings.js:2314)"}, "fullDescription": {"text": "`static/js/settings.js:2314` calls `GET /api/auth/integrations` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/integrations`\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-bca534e9e7e070a5", "name": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:2325)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:2325)"}, "fullDescription": {"text": "`static/js/settings.js:2325` calls `GET /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-2b4337a23a3bd9a7", "name": "Dangling fetch: GET /api/email/accounts (static/js/settings.js:2367)", "shortDescription": {"text": "Dangling fetch: GET /api/email/accounts (static/js/settings.js:2367)"}, "fullDescription": {"text": "`static/js/settings.js:2367` calls `GET /api/email/accounts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email/accounts`\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-4124df3bbcc6021f", "name": "Dangling fetch: GET /api/auth/integrations (static/js/settings.js:2377)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/integrations (static/js/settings.js:2377)"}, "fullDescription": {"text": "`static/js/settings.js:2377` calls `GET /api/auth/integrations` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/integrations`\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-f551848f00168ac5", "name": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:2387)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:2387)"}, "fullDescription": {"text": "`static/js/settings.js:2387` calls `GET /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-b2b9330cde321fa1", "name": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:2431)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:2431)"}, "fullDescription": {"text": "`static/js/settings.js:2431` calls `GET /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-e1dede289dca31bd", "name": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:2456)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:2456)"}, "fullDescription": {"text": "`static/js/settings.js:2456` calls `POST /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-493bf4fc55c29f96", "name": "Dangling fetch: POST /api/notes/fire-reminder (static/js/settings.js:2517)", "shortDescription": {"text": "Dangling fetch: POST /api/notes/fire-reminder (static/js/settings.js:2517)"}, "fullDescription": {"text": "`static/js/settings.js:2517` calls `POST /api/notes/fire-reminder` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/notes/fire-reminder`\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-c25dafe7ca3fa25a", "name": "Dangling fetch: GET /api/email/accounts (static/js/settings.js:2591)", "shortDescription": {"text": "Dangling fetch: GET /api/email/accounts (static/js/settings.js:2591)"}, "fullDescription": {"text": "`static/js/settings.js:2591` calls `GET /api/email/accounts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email/accounts`\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-c5f59a5b1aaf1c06", "name": "Dangling fetch: POST /api/email/accounts/${id}/set-default (static/js/settings.js:2623)", "shortDescription": {"text": "Dangling fetch: POST /api/email/accounts/${id}/set-default (static/js/settings.js:2623)"}, "fullDescription": {"text": "`static/js/settings.js:2623` calls `POST /api/email/accounts/${id}/set-default` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email/accounts/<p>/set-default`\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-1d2855295c2e363a", "name": "Dangling fetch: DELETE /api/email/accounts/${id} (static/js/settings.js:2633)", "shortDescription": {"text": "Dangling fetch: DELETE /api/email/accounts/${id} (static/js/settings.js:2633)"}, "fullDescription": {"text": "`static/js/settings.js:2633` calls `DELETE /api/email/accounts/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email/accounts/<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-8ac7df1abc717887", "name": "Dangling fetch: GET /api/email/config (static/js/settings.js:2787)", "shortDescription": {"text": "Dangling fetch: GET /api/email/config (static/js/settings.js:2787)"}, "fullDescription": {"text": "`static/js/settings.js:2787` calls `GET /api/email/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email/config`\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-cbe57dc0ccd3c8a8", "name": "Dangling fetch: GET /api/contacts/config (static/js/settings.js:2802)", "shortDescription": {"text": "Dangling fetch: GET /api/contacts/config (static/js/settings.js:2802)"}, "fullDescription": {"text": "`static/js/settings.js:2802` calls `GET /api/contacts/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/contacts/config`\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-29cfed276ebbafe6", "name": "Dangling fetch: GET /api/email/style (static/js/settings.js:2811)", "shortDescription": {"text": "Dangling fetch: GET /api/email/style (static/js/settings.js:2811)"}, "fullDescription": {"text": "`static/js/settings.js:2811` calls `GET /api/email/style` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email/style`\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-a0c57c7d15d12ff8", "name": "Dangling fetch: PUT /api/email/config (static/js/settings.js:2834)", "shortDescription": {"text": "Dangling fetch: PUT /api/email/config (static/js/settings.js:2834)"}, "fullDescription": {"text": "`static/js/settings.js:2834` calls `PUT /api/email/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email/config`\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-0f67199439bd8f39", "name": "Dangling fetch: PUT /api/contacts/config (static/js/settings.js:2858)", "shortDescription": {"text": "Dangling fetch: PUT /api/contacts/config (static/js/settings.js:2858)"}, "fullDescription": {"text": "`static/js/settings.js:2858` calls `PUT /api/contacts/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/contacts/config`\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-c6e50c6b2518eff6", "name": "Dangling fetch: POST /api/email/extract-style (static/js/settings.js:2899)", "shortDescription": {"text": "Dangling fetch: POST /api/email/extract-style (static/js/settings.js:2899)"}, "fullDescription": {"text": "`static/js/settings.js:2899` calls `POST /api/email/extract-style` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email/extract-style`\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-ba38240df0221837", "name": "Dangling fetch: PUT /api/email/style (static/js/settings.js:2925)", "shortDescription": {"text": "Dangling fetch: PUT /api/email/style (static/js/settings.js:2925)"}, "fullDescription": {"text": "`static/js/settings.js:2925` calls `PUT /api/email/style` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email/style`\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-3c629f6f72fb8aee", "name": "Dangling fetch: GET /api/auth/integrations/presets (static/js/settings.js:2973)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/integrations/presets (static/js/settings.js:2973)"}, "fullDescription": {"text": "`static/js/settings.js:2973` calls `GET /api/auth/integrations/presets` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/integrations/presets`\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-69e156269629c686", "name": "Dangling fetch: GET /api/auth/integrations (static/js/settings.js:3000)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/integrations (static/js/settings.js:3000)"}, "fullDescription": {"text": "`static/js/settings.js:3000` calls `GET /api/auth/integrations` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/integrations`\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-6e594c4e5becb3da", "name": "Dangling fetch: GET /api/auth/integrations (static/js/settings.js:3033)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/integrations (static/js/settings.js:3033)"}, "fullDescription": {"text": "`static/js/settings.js:3033` calls `GET /api/auth/integrations` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/integrations`\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-1e5e093eb1c1110e", "name": "Dangling fetch: POST /api/auth/integrations/${editingId}/test (static/js/settings.js:3113)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/integrations/${editingId}/test (static/js/settings.js:3113)"}, "fullDescription": {"text": "`static/js/settings.js:3113` calls `POST /api/auth/integrations/${editingId}/test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/integrations/<p>/test`\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-9512153b4b152edf", "name": "Dangling fetch: DELETE /api/auth/integrations/${id} (static/js/settings.js:3127)", "shortDescription": {"text": "Dangling fetch: DELETE /api/auth/integrations/${id} (static/js/settings.js:3127)"}, "fullDescription": {"text": "`static/js/settings.js:3127` calls `DELETE /api/auth/integrations/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/integrations/<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-d2789e01e7a190e0", "name": "Dangling fetch: GET /api/auth/integrations (static/js/settings.js:3228)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/integrations (static/js/settings.js:3228)"}, "fullDescription": {"text": "`static/js/settings.js:3228` calls `GET /api/auth/integrations` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/integrations`\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-433deb9a471bb4ba", "name": "Dangling fetch: GET /api/calendar/config (static/js/settings.js:3229)", "shortDescription": {"text": "Dangling fetch: GET /api/calendar/config (static/js/settings.js:3229)"}, "fullDescription": {"text": "`static/js/settings.js:3229` calls `GET /api/calendar/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/calendar/config`\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-36e722e56d39738e", "name": "Dangling fetch: GET /api/contacts/config (static/js/settings.js:3230)", "shortDescription": {"text": "Dangling fetch: GET /api/contacts/config (static/js/settings.js:3230)"}, "fullDescription": {"text": "`static/js/settings.js:3230` calls `GET /api/contacts/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/contacts/config`\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-49c4cb9f014aaf66", "name": "Dangling fetch: GET /api/contacts/list (static/js/settings.js:3231)", "shortDescription": {"text": "Dangling fetch: GET /api/contacts/list (static/js/settings.js:3231)"}, "fullDescription": {"text": "`static/js/settings.js:3231` calls `GET /api/contacts/list` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/contacts/list`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-421b0ad56fad9e92", "name": "Dangling fetch: GET /api/email/accounts (static/js/settings.js:3232)", "shortDescription": {"text": "Dangling fetch: GET /api/email/accounts (static/js/settings.js:3232)"}, "fullDescription": {"text": "`static/js/settings.js:3232` calls `GET /api/email/accounts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email/accounts`\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-ed27a86ff34c4386", "name": "Dangling fetch: GET /api/mcp/servers (static/js/settings.js:3233)", "shortDescription": {"text": "Dangling fetch: GET /api/mcp/servers (static/js/settings.js:3233)"}, "fullDescription": {"text": "`static/js/settings.js:3233` calls `GET /api/mcp/servers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/mcp/servers`\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-1066f1fb42f859b6", "name": "Dangling fetch: GET /api/vault/config (static/js/settings.js:3234)", "shortDescription": {"text": "Dangling fetch: GET /api/vault/config (static/js/settings.js:3234)"}, "fullDescription": {"text": "`static/js/settings.js:3234` calls `GET /api/vault/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/vault/config`\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-9e565bd8dbcfc532", "name": "Dangling fetch: DELETE /api/auth/integrations/${id} (static/js/settings.js:3355)", "shortDescription": {"text": "Dangling fetch: DELETE /api/auth/integrations/${id} (static/js/settings.js:3355)"}, "fullDescription": {"text": "`static/js/settings.js:3355` calls `DELETE /api/auth/integrations/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/integrations/<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-f4d179a4cae5e533", "name": "Dangling fetch: POST /api/calendar/config (static/js/settings.js:3356)", "shortDescription": {"text": "Dangling fetch: POST /api/calendar/config (static/js/settings.js:3356)"}, "fullDescription": {"text": "`static/js/settings.js:3356` calls `POST /api/calendar/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/calendar/config`\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-e134a33c6754773d", "name": "Dangling fetch: DELETE /api/contacts/clear (static/js/settings.js:3358)", "shortDescription": {"text": "Dangling fetch: DELETE /api/contacts/clear (static/js/settings.js:3358)"}, "fullDescription": {"text": "`static/js/settings.js:3358` calls `DELETE /api/contacts/clear` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/contacts/clear`\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-77becf1963099078", "name": "Dangling fetch: PUT /api/contacts/config (static/js/settings.js:3361)", "shortDescription": {"text": "Dangling fetch: PUT /api/contacts/config (static/js/settings.js:3361)"}, "fullDescription": {"text": "`static/js/settings.js:3361` calls `PUT /api/contacts/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/contacts/config`\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-3a3f1ba3dee1ce68", "name": "Dangling fetch: DELETE /api/email/accounts/${id} (static/js/settings.js:3363)", "shortDescription": {"text": "Dangling fetch: DELETE /api/email/accounts/${id} (static/js/settings.js:3363)"}, "fullDescription": {"text": "`static/js/settings.js:3363` calls `DELETE /api/email/accounts/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email/accounts/<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-dba03b4dcbc83fbf", "name": "Dangling fetch: DELETE /api/mcp/servers/${id} (static/js/settings.js:3364)", "shortDescription": {"text": "Dangling fetch: DELETE /api/mcp/servers/${id} (static/js/settings.js:3364)"}, "fullDescription": {"text": "`static/js/settings.js:3364` calls `DELETE /api/mcp/servers/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/mcp/servers/<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-ef3f51ef4ac6fdcf", "name": "Dangling fetch: POST /api/vault/logout (static/js/settings.js:3366)", "shortDescription": {"text": "Dangling fetch: POST /api/vault/logout (static/js/settings.js:3366)"}, "fullDescription": {"text": "`static/js/settings.js:3366` calls `POST /api/vault/logout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/vault/logout`\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-32a2f295b29bff64", "name": "Dangling fetch: GET /api/auth/integrations/presets (static/js/settings.js:3391)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/integrations/presets (static/js/settings.js:3391)"}, "fullDescription": {"text": "`static/js/settings.js:3391` calls `GET /api/auth/integrations/presets` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/integrations/presets`\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-31144048ea54db80", "name": "Dangling fetch: GET /api/auth/integrations (static/js/settings.js:3504)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/integrations (static/js/settings.js:3504)"}, "fullDescription": {"text": "`static/js/settings.js:3504` calls `GET /api/auth/integrations` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/integrations`\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-bcfcc01908de83d1", "name": "Dangling fetch: POST /api/auth/integrations/${_editId}/test (static/js/settings.js:3556)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/integrations/${_editId}/test (static/js/settings.js:3556)"}, "fullDescription": {"text": "`static/js/settings.js:3556` calls `POST /api/auth/integrations/${_editId}/test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/integrations/<p>/test`\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-f9b16e42b2adffd8", "name": "Dangling fetch: GET /api/calendar/config (static/js/settings.js:3583)", "shortDescription": {"text": "Dangling fetch: GET /api/calendar/config (static/js/settings.js:3583)"}, "fullDescription": {"text": "`static/js/settings.js:3583` calls `GET /api/calendar/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/calendar/config`\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-f058e5b5fc302916", "name": "Dangling fetch: POST /api/calendar/test (static/js/settings.js:3598)", "shortDescription": {"text": "Dangling fetch: POST /api/calendar/test (static/js/settings.js:3598)"}, "fullDescription": {"text": "`static/js/settings.js:3598` calls `POST /api/calendar/test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/calendar/test`\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-49f754377eddcfbd", "name": "Dangling fetch: POST /api/calendar/config (static/js/settings.js:3627)", "shortDescription": {"text": "Dangling fetch: POST /api/calendar/config (static/js/settings.js:3627)"}, "fullDescription": {"text": "`static/js/settings.js:3627` calls `POST /api/calendar/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/calendar/config`\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-9dab1909fb6d649a", "name": "Dangling fetch: GET /api/contacts/config (static/js/settings.js:3691)", "shortDescription": {"text": "Dangling fetch: GET /api/contacts/config (static/js/settings.js:3691)"}, "fullDescription": {"text": "`static/js/settings.js:3691` calls `GET /api/contacts/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/contacts/config`\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-bc1014c6cfdf43e3", "name": "Dangling fetch: PUT /api/contacts/config (static/js/settings.js:3699)", "shortDescription": {"text": "Dangling fetch: PUT /api/contacts/config (static/js/settings.js:3699)"}, "fullDescription": {"text": "`static/js/settings.js:3699` calls `PUT /api/contacts/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/contacts/config`\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-38c0ff5f0670cac9", "name": "Dangling fetch: POST /api/contacts/add (static/js/settings.js:3725)", "shortDescription": {"text": "Dangling fetch: POST /api/contacts/add (static/js/settings.js:3725)"}, "fullDescription": {"text": "`static/js/settings.js:3725` calls `POST /api/contacts/add` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/contacts/add`\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-477021f1adfa44eb", "name": "Dangling fetch: GET /api/contacts/export?format=${encodeURIComponent(format)} (static/js/settings.js:3736)", "shortDescription": {"text": "Dangling fetch: GET /api/contacts/export?format=${encodeURIComponent(format)} (static/js/settings.js:3736)"}, "fullDescription": {"text": "`static/js/settings.js:3736` calls `GET /api/contacts/export?format=${encodeURIComponent(format)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/contacts/export`\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-71181158887bd1b2", "name": "Dangling fetch: POST /api/contacts/import (static/js/settings.js:3777)", "shortDescription": {"text": "Dangling fetch: POST /api/contacts/import (static/js/settings.js:3777)"}, "fullDescription": {"text": "`static/js/settings.js:3777` calls `POST /api/contacts/import` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/contacts/import`\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-2ff4de2e3ededab3", "name": "Dangling fetch: GET /api/contacts/list (static/js/settings.js:3811)", "shortDescription": {"text": "Dangling fetch: GET /api/contacts/list (static/js/settings.js:3811)"}, "fullDescription": {"text": "`static/js/settings.js:3811` calls `GET /api/contacts/list` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/contacts/list`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6ce5e0e7d862a909", "name": "Dangling fetch: GET /api/email/accounts (static/js/settings.js:3899)", "shortDescription": {"text": "Dangling fetch: GET /api/email/accounts (static/js/settings.js:3899)"}, "fullDescription": {"text": "`static/js/settings.js:3899` calls `GET /api/email/accounts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email/accounts`\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-91ea7c0cd0c23ca7", "name": "Dangling fetch: POST /api/email/accounts/test (static/js/settings.js:4260)", "shortDescription": {"text": "Dangling fetch: POST /api/email/accounts/test (static/js/settings.js:4260)"}, "fullDescription": {"text": "`static/js/settings.js:4260` calls `POST /api/email/accounts/test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email/accounts/test`\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-bffa9bf21d5b622c", "name": "Dangling fetch: GET /api/vault/config (static/js/settings.js:4383)", "shortDescription": {"text": "Dangling fetch: GET /api/vault/config (static/js/settings.js:4383)"}, "fullDescription": {"text": "`static/js/settings.js:4383` calls `GET /api/vault/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/vault/config`\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-c7f6c28031baa797", "name": "Dangling fetch: POST /api/vault/config (static/js/settings.js:4406)", "shortDescription": {"text": "Dangling fetch: POST /api/vault/config (static/js/settings.js:4406)"}, "fullDescription": {"text": "`static/js/settings.js:4406` calls `POST /api/vault/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/vault/config`\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-f9a20d8cc5031242", "name": "Dangling fetch: POST /api/vault/login (static/js/settings.js:4423)", "shortDescription": {"text": "Dangling fetch: POST /api/vault/login (static/js/settings.js:4423)"}, "fullDescription": {"text": "`static/js/settings.js:4423` calls `POST /api/vault/login` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/vault/login`\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-5e8779e942e5fd27", "name": "Dangling fetch: POST /api/vault/unlock (static/js/settings.js:4442)", "shortDescription": {"text": "Dangling fetch: POST /api/vault/unlock (static/js/settings.js:4442)"}, "fullDescription": {"text": "`static/js/settings.js:4442` calls `POST /api/vault/unlock` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/vault/unlock`\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-1f19b6cf47ecf708", "name": "Dangling fetch: POST /api/vault/lock (static/js/settings.js:4459)", "shortDescription": {"text": "Dangling fetch: POST /api/vault/lock (static/js/settings.js:4459)"}, "fullDescription": {"text": "`static/js/settings.js:4459` calls `POST /api/vault/lock` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/vault/lock`\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-e7fbe65ecb0fb6a5", "name": "Dangling fetch: POST /api/vault/logout (static/js/settings.js:4469)", "shortDescription": {"text": "Dangling fetch: POST /api/vault/logout (static/js/settings.js:4469)"}, "fullDescription": {"text": "`static/js/settings.js:4469` calls `POST /api/vault/logout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/vault/logout`\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-8a69ea0dcb0c7643", "name": "Dangling fetch: GET /api/mcp/servers (static/js/settings.js:4482)", "shortDescription": {"text": "Dangling fetch: GET /api/mcp/servers (static/js/settings.js:4482)"}, "fullDescription": {"text": "`static/js/settings.js:4482` calls `GET /api/mcp/servers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/mcp/servers`\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-8eeff84fe2da1d39", "name": "Dangling fetch: POST /api/mcp/servers/${srv.id}/reconnect (static/js/settings.js:4510)", "shortDescription": {"text": "Dangling fetch: POST /api/mcp/servers/${srv.id}/reconnect (static/js/settings.js:4510)"}, "fullDescription": {"text": "`static/js/settings.js:4510` calls `POST /api/mcp/servers/${srv.id}/reconnect` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/mcp/servers/<p>/reconnect`\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-579cb1e89706d860", "name": "Dangling fetch: PATCH /api/mcp/servers/${srv.id} (static/js/settings.js:4520)", "shortDescription": {"text": "Dangling fetch: PATCH /api/mcp/servers/${srv.id} (static/js/settings.js:4520)"}, "fullDescription": {"text": "`static/js/settings.js:4520` calls `PATCH /api/mcp/servers/${srv.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/mcp/servers/<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-7fbccaeab410293e", "name": "Dangling fetch: GET /api/mcp/servers/${srv.id}/tools (static/js/settings.js:4529)", "shortDescription": {"text": "Dangling fetch: GET /api/mcp/servers/${srv.id}/tools (static/js/settings.js:4529)"}, "fullDescription": {"text": "`static/js/settings.js:4529` calls `GET /api/mcp/servers/${srv.id}/tools` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/mcp/servers/<p>/tools`\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-63cbb6a9b7f77f96", "name": "Dangling fetch: PATCH /api/mcp/servers/${srv.id}/tools (static/js/settings.js:4537)", "shortDescription": {"text": "Dangling fetch: PATCH /api/mcp/servers/${srv.id}/tools (static/js/settings.js:4537)"}, "fullDescription": {"text": "`static/js/settings.js:4537` calls `PATCH /api/mcp/servers/${srv.id}/tools` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/mcp/servers/<p>/tools`\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-3b72451da9ac4529", "name": "Dangling fetch: POST /api/mcp/servers (static/js/settings.js:4589)", "shortDescription": {"text": "Dangling fetch: POST /api/mcp/servers (static/js/settings.js:4589)"}, "fullDescription": {"text": "`static/js/settings.js:4589` calls `POST /api/mcp/servers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/mcp/servers`\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-2f2eea220dca98e2", "name": "Dangling fetch: GET /api/auth/users (static/js/admin.js:35)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/users (static/js/admin.js:35)"}, "fullDescription": {"text": "`static/js/admin.js:35` calls `GET /api/auth/users` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c88ee2e6fc319435", "name": "Dangling fetch: PUT /api/auth/users/${encodeURIComponent(username)}/privileges (static/js/admin.js:136)", "shortDescription": {"text": "Dangling fetch: PUT /api/auth/users/${encodeURIComponent(username)}/privileges (static/js/admin.js:136)"}, "fullDescription": {"text": "`static/js/admin.js:136` calls `PUT /api/auth/users/${encodeURIComponent(username)}/privileges` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/users/<p>/privileges`\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-2f894a6176e8bd4c", "name": "Dangling fetch: PUT /api/auth/users/${encodeURIComponent(oldUsername)}/rename (static/js/admin.js:162)", "shortDescription": {"text": "Dangling fetch: PUT /api/auth/users/${encodeURIComponent(oldUsername)}/rename (static/js/admin.js:162)"}, "fullDescription": {"text": "`static/js/admin.js:162` calls `PUT /api/auth/users/${encodeURIComponent(oldUsername)}/rename` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/users/<p>/rename`\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-2fb18ce69edc52fa", "name": "Dangling fetch: DELETE /api/auth/users (static/js/admin.js:191)", "shortDescription": {"text": "Dangling fetch: DELETE /api/auth/users (static/js/admin.js:191)"}, "fullDescription": {"text": "`static/js/admin.js:191` calls `DELETE /api/auth/users` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-25f803919ba0efff", "name": "Dangling fetch: PUT /api/auth/users/${encodeURIComponent(username)}/privileges (static/js/admin.js:239)", "shortDescription": {"text": "Dangling fetch: PUT /api/auth/users/${encodeURIComponent(username)}/privileges (static/js/admin.js:239)"}, "fullDescription": {"text": "`static/js/admin.js:239` calls `PUT /api/auth/users/${encodeURIComponent(username)}/privileges` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/users/<p>/privileges`\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-01dae179f74dbfb0", "name": "Dangling fetch: GET /api/auth/status (static/js/admin.js:265)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/status (static/js/admin.js:265)"}, "fullDescription": {"text": "`static/js/admin.js:265` calls `GET /api/auth/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/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-c526bf98723713d2", "name": "Dangling fetch: POST /api/auth/signup-toggle (static/js/admin.js:271)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/signup-toggle (static/js/admin.js:271)"}, "fullDescription": {"text": "`static/js/admin.js:271` calls `POST /api/auth/signup-toggle` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/signup-toggle`\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-492c1ba21ddef136", "name": "Dangling fetch: POST /api/auth/users (static/js/admin.js:289)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/users (static/js/admin.js:289)"}, "fullDescription": {"text": "`static/js/admin.js:289` calls `POST /api/auth/users` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/users`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e7991870a00f22f7", "name": "Dangling fetch: GET /api/mcp/servers (static/js/admin.js:1367)", "shortDescription": {"text": "Dangling fetch: GET /api/mcp/servers (static/js/admin.js:1367)"}, "fullDescription": {"text": "`static/js/admin.js:1367` calls `GET /api/mcp/servers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/mcp/servers`\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-624bdebf98e59ee7", "name": "Dangling fetch: POST /api/mcp/servers/${btn.dataset.admMcpReconnect}/reconnect (static/js/admin.js:1397)", "shortDescription": {"text": "Dangling fetch: POST /api/mcp/servers/${btn.dataset.admMcpReconnect}/reconnect (static/js/admin.js:1397)"}, "fullDescription": {"text": "`static/js/admin.js:1397` calls `POST /api/mcp/servers/${btn.dataset.admMcpReconnect}/reconnect` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/mcp/servers/<p>/reconnect`\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-6ab5933ad0e51c3a", "name": "Dangling fetch: PATCH /api/mcp/servers/${btn.dataset.admMcpToggle} (static/js/admin.js:1408)", "shortDescription": {"text": "Dangling fetch: PATCH /api/mcp/servers/${btn.dataset.admMcpToggle} (static/js/admin.js:1408)"}, "fullDescription": {"text": "`static/js/admin.js:1408` calls `PATCH /api/mcp/servers/${btn.dataset.admMcpToggle}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/mcp/servers/<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-dc68d1c49775a629", "name": "Dangling fetch: DELETE /api/mcp/servers/${btn.dataset.admMcpDelete} (static/js/admin.js:1415)", "shortDescription": {"text": "Dangling fetch: DELETE /api/mcp/servers/${btn.dataset.admMcpDelete} (static/js/admin.js:1415)"}, "fullDescription": {"text": "`static/js/admin.js:1415` calls `DELETE /api/mcp/servers/${btn.dataset.admMcpDelete}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/mcp/servers/<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-281fb8293fd4f849", "name": "Dangling fetch: GET /api/mcp/servers/${sid}/tools (static/js/admin.js:1441)", "shortDescription": {"text": "Dangling fetch: GET /api/mcp/servers/${sid}/tools (static/js/admin.js:1441)"}, "fullDescription": {"text": "`static/js/admin.js:1441` calls `GET /api/mcp/servers/${sid}/tools` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/mcp/servers/<p>/tools`\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-06b768b692fae086", "name": "Dangling fetch: PATCH /api/mcp/servers/${serverId}/tools (static/js/admin.js:1485)", "shortDescription": {"text": "Dangling fetch: PATCH /api/mcp/servers/${serverId}/tools (static/js/admin.js:1485)"}, "fullDescription": {"text": "`static/js/admin.js:1485` calls `PATCH /api/mcp/servers/${serverId}/tools` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/mcp/servers/<p>/tools`\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-beea443f394c326e", "name": "Dangling fetch: POST /api/mcp/servers (static/js/admin.js:1684)", "shortDescription": {"text": "Dangling fetch: POST /api/mcp/servers (static/js/admin.js:1684)"}, "fullDescription": {"text": "`static/js/admin.js:1684` calls `POST /api/mcp/servers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/mcp/servers`\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-e44a1470b3863622", "name": "Dangling fetch: GET /api/personal (static/js/admin.js:1708)", "shortDescription": {"text": "Dangling fetch: GET /api/personal (static/js/admin.js:1708)"}, "fullDescription": {"text": "`static/js/admin.js:1708` calls `GET /api/personal` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/personal`\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-cdba7255004a67ed", "name": "Dangling fetch: POST /api/personal/upload (static/js/admin.js:1767)", "shortDescription": {"text": "Dangling fetch: POST /api/personal/upload (static/js/admin.js:1767)"}, "fullDescription": {"text": "`static/js/admin.js:1767` calls `POST /api/personal/upload` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/personal/upload`\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-c5eed0f3320f5d74", "name": "Dangling fetch: POST /api/personal/add_directory (static/js/admin.js:1788)", "shortDescription": {"text": "Dangling fetch: POST /api/personal/add_directory (static/js/admin.js:1788)"}, "fullDescription": {"text": "`static/js/admin.js:1788` calls `POST /api/personal/add_directory` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/personal/add_directory`\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-02a2b68394eadbd3", "name": "Dangling fetch: POST /api/personal/reload (static/js/admin.js:1799)", "shortDescription": {"text": "Dangling fetch: POST /api/personal/reload (static/js/admin.js:1799)"}, "fullDescription": {"text": "`static/js/admin.js:1799` calls `POST /api/personal/reload` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/personal/reload`\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-18f8b2abee8b19d3", "name": "Dangling fetch: GET /api/auth/features (static/js/admin.js:1945)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/features (static/js/admin.js:1945)"}, "fullDescription": {"text": "`static/js/admin.js:1945` calls `GET /api/auth/features` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/features`\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-0b09d9c105450e67", "name": "Dangling fetch: POST /api/auth/features (static/js/admin.js:1955)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/features (static/js/admin.js:1955)"}, "fullDescription": {"text": "`static/js/admin.js:1955` calls `POST /api/auth/features` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/features`\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-99a785f0c98608e8", "name": "Dangling fetch: DELETE /api/admin/wipe/${kind} (static/js/admin.js:2082)", "shortDescription": {"text": "Dangling fetch: DELETE /api/admin/wipe/${kind} (static/js/admin.js:2082)"}, "fullDescription": {"text": "`static/js/admin.js:2082` calls `DELETE /api/admin/wipe/${kind}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/wipe/<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-fadf9826980586f0", "name": "Dangling fetch: GET /api/stt/stats (static/js/voiceRecorder.js:31)", "shortDescription": {"text": "Dangling fetch: GET /api/stt/stats (static/js/voiceRecorder.js:31)"}, "fullDescription": {"text": "`static/js/voiceRecorder.js:31` calls `GET /api/stt/stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/stt/stats`\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-c6cdae84c30a45d1", "name": "Dangling fetch: POST /api/stt/transcribe (static/js/voiceRecorder.js:115)", "shortDescription": {"text": "Dangling fetch: POST /api/stt/transcribe (static/js/voiceRecorder.js:115)"}, "fullDescription": {"text": "`static/js/voiceRecorder.js:115` calls `POST /api/stt/transcribe` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/stt/transcribe`\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-94d6dadd16ab3c91", "name": "Dangling fetch: GET /api/auth/settings (static/js/emailLibrary.js:322)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/settings (static/js/emailLibrary.js:322)"}, "fullDescription": {"text": "`static/js/emailLibrary.js:322` calls `GET /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-a43d5344d6fa03ec", "name": "Dangling fetch: GET /api/auth/features (static/js/censor.js:62)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/features (static/js/censor.js:62)"}, "fullDescription": {"text": "`static/js/censor.js:62` calls `GET /api/auth/features` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/features`\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-a2df9348a795f4b5", "name": "Dangling fetch: GET /api/auth/settings (static/js/keyboard-shortcuts.js:59)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/settings (static/js/keyboard-shortcuts.js:59)"}, "fullDescription": {"text": "`static/js/keyboard-shortcuts.js:59` calls `GET /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-e50e84d6613058a5", "name": "Dangling fetch: GET /api/auth/status (static/js/init.js:29)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/status (static/js/init.js:29)"}, "fullDescription": {"text": "`static/js/init.js:29` calls `GET /api/auth/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/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-cc393c4a3935aa5a", "name": "Dangling fetch: GET /api/auth/settings (static/js/tasks.js:185)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/settings (static/js/tasks.js:185)"}, "fullDescription": {"text": "`static/js/tasks.js:185` calls `GET /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-5d265f64b54d1852", "name": "Dangling fetch: POST /api/auth/settings (static/js/tasks.js:198)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/settings (static/js/tasks.js:198)"}, "fullDescription": {"text": "`static/js/tasks.js:198` calls `POST /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-c5eafe3c5262f523", "name": "Dangling fetch: GET /api/hwfit/models?${fallbackParams} (static/js/cookbook-hwfit.js:545)", "shortDescription": {"text": "Dangling fetch: GET /api/hwfit/models?${fallbackParams} (static/js/cookbook-hwfit.js:545)"}, "fullDescription": {"text": "`static/js/cookbook-hwfit.js:545` calls `GET /api/hwfit/models?${fallbackParams}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/hwfit/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-c39fe55c1b5e3710", "name": "Dangling fetch: POST /api/notes/fire-reminder (static/js/notes.js:948)", "shortDescription": {"text": "Dangling fetch: POST /api/notes/fire-reminder (static/js/notes.js:948)"}, "fullDescription": {"text": "`static/js/notes.js:948` calls `POST /api/notes/fire-reminder` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/notes/fire-reminder`\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-6a0145bc4ee58213", "name": "Dangling fetch: PUT /api/prefs/custom-themes (static/js/theme.js:165)", "shortDescription": {"text": "Dangling fetch: PUT /api/prefs/custom-themes (static/js/theme.js:165)"}, "fullDescription": {"text": "`static/js/theme.js:165` calls `PUT /api/prefs/custom-themes` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/prefs/custom-themes`\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-db5a18512d3d6c08", "name": "Dangling fetch: PUT /api/prefs/theme (static/js/theme.js:513)", "shortDescription": {"text": "Dangling fetch: PUT /api/prefs/theme (static/js/theme.js:513)"}, "fullDescription": {"text": "`static/js/theme.js:513` calls `PUT /api/prefs/theme` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/prefs/theme`\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-a1e4b95bc86a95fe", "name": "Dangling fetch: GET /api/prefs/theme (static/js/theme.js:524)", "shortDescription": {"text": "Dangling fetch: GET /api/prefs/theme (static/js/theme.js:524)"}, "fullDescription": {"text": "`static/js/theme.js:524` calls `GET /api/prefs/theme` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/prefs/theme`\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-3ddf3a16e656b933", "name": "Dangling fetch: GET /api/fonts/custom (static/js/theme.js:1157)", "shortDescription": {"text": "Dangling fetch: GET /api/fonts/custom (static/js/theme.js:1157)"}, "fullDescription": {"text": "`static/js/theme.js:1157` calls `GET /api/fonts/custom` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/fonts/custom`\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-7b5120ca6000c806", "name": "Dangling fetch: GET /api/prefs/custom-themes (static/js/theme.js:2116)", "shortDescription": {"text": "Dangling fetch: GET /api/prefs/custom-themes (static/js/theme.js:2116)"}, "fullDescription": {"text": "`static/js/theme.js:2116` calls `GET /api/prefs/custom-themes` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/prefs/custom-themes`\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-e4af4ecf663c0f2a", "name": "Dangling fetch: GET /api/hwfit/system?${qp} (static/js/cookbook.js:1292)", "shortDescription": {"text": "Dangling fetch: GET /api/hwfit/system?${qp} (static/js/cookbook.js:1292)"}, "fullDescription": {"text": "`static/js/cookbook.js:1292` calls `GET /api/hwfit/system?${qp}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/hwfit/system`\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-008ce1aae33bd03c", "name": "Dangling fetch: PUT /api/upload/${att.id}/vision (static/js/chatRenderer.js:301)", "shortDescription": {"text": "Dangling fetch: PUT /api/upload/${att.id}/vision (static/js/chatRenderer.js:301)"}, "fullDescription": {"text": "`static/js/chatRenderer.js:301` calls `PUT /api/upload/${att.id}/vision` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/upload/<p>/vision`\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-2dd5aa5b817581f1", "name": "Dangling fetch: GET /api/upload/${att.id}/vision (static/js/chatRenderer.js:365)", "shortDescription": {"text": "Dangling fetch: GET /api/upload/${att.id}/vision (static/js/chatRenderer.js:365)"}, "fullDescription": {"text": "`static/js/chatRenderer.js:365` calls `GET /api/upload/${att.id}/vision` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/upload/<p>/vision`\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-dcdeeb9cec197350", "name": "Dangling fetch: GET /api/auth/settings (static/js/tts-ai.js:35)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/settings (static/js/tts-ai.js:35)"}, "fullDescription": {"text": "`static/js/tts-ai.js:35` calls `GET /api/auth/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/settings`\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-7590a950e482284f", "name": "Dangling fetch: GET /api/tts/stats (static/js/tts-ai.js:44)", "shortDescription": {"text": "Dangling fetch: GET /api/tts/stats (static/js/tts-ai.js:44)"}, "fullDescription": {"text": "`static/js/tts-ai.js:44` calls `GET /api/tts/stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/tts/stats`\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-f84e24a78dabaa71", "name": "Dangling fetch: POST /api/tts/synthesize (static/js/tts-ai.js:132)", "shortDescription": {"text": "Dangling fetch: POST /api/tts/synthesize (static/js/tts-ai.js:132)"}, "fullDescription": {"text": "`static/js/tts-ai.js:132` calls `POST /api/tts/synthesize` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/tts/synthesize`\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-e2a6bf96e2166f3a", "name": "Dangling fetch: GET /api/hwfit/profiles?${params} (static/js/cookbookServe.js:839)", "shortDescription": {"text": "Dangling fetch: GET /api/hwfit/profiles?${params} (static/js/cookbookServe.js:839)"}, "fullDescription": {"text": "`static/js/cookbookServe.js:839` calls `GET /api/hwfit/profiles?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/hwfit/profiles`\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-dc283a5f5e152a53", "name": "Dangling fetch: GET /api/model/cached${params} (static/js/cookbookServe.js:2007)", "shortDescription": {"text": "Dangling fetch: GET /api/model/cached${params} (static/js/cookbookServe.js:2007)"}, "fullDescription": {"text": "`static/js/cookbookServe.js:2007` calls `GET /api/model/cached${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/model/cached/<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-504c1e942221dd39", "name": "Unused endpoint: GET /api/generated-image/{filename}", "shortDescription": {"text": "Unused endpoint: GET /api/generated-image/{filename}"}, "fullDescription": {"text": "`app.py` declares `GET /api/generated-image/{filename}` 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": "`app.py` 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-5f9819d9ecb49931", "name": "Unused endpoint: GET /calendar", "shortDescription": {"text": "Unused endpoint: GET /calendar"}, "fullDescription": {"text": "`app.py` declares `GET /calendar` 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-9c4ef629fd907879", "name": "Unused endpoint: GET /cookbook", "shortDescription": {"text": "Unused endpoint: GET /cookbook"}, "fullDescription": {"text": "`app.py` declares `GET /cookbook` 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-2036430dc3a32669", "name": "Unused endpoint: GET /email", "shortDescription": {"text": "Unused endpoint: GET /email"}, "fullDescription": {"text": "`app.py` declares `GET /email` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-279d61489dedfa5f", "name": "Unused endpoint: GET /memory", "shortDescription": {"text": "Unused endpoint: GET /memory"}, "fullDescription": {"text": "`app.py` declares `GET /memory` 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-a460cef1f3efcd6e", "name": "Unused endpoint: GET /gallery", "shortDescription": {"text": "Unused endpoint: GET /gallery"}, "fullDescription": {"text": "`app.py` declares `GET /gallery` 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-fd0e06afbaab19b3", "name": "Unused endpoint: GET /tasks", "shortDescription": {"text": "Unused endpoint: GET /tasks"}, "fullDescription": {"text": "`app.py` declares `GET /tasks` 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-60ce72dcd3e9a568", "name": "Unused endpoint: GET /library", "shortDescription": {"text": "Unused endpoint: GET /library"}, "fullDescription": {"text": "`app.py` declares `GET /library` 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-a282a367387e9e3c", "name": "Unused endpoint: GET /backgrounds", "shortDescription": {"text": "Unused endpoint: GET /backgrounds"}, "fullDescription": {"text": "`app.py` declares `GET /backgrounds` 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-6a4dfcad3eb1618a", "name": "Unused endpoint: GET /login", "shortDescription": {"text": "Unused endpoint: GET /login"}, "fullDescription": {"text": "`app.py` declares `GET /login` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6c2507f3182299a0", "name": "Unused endpoint: GET /api/version", "shortDescription": {"text": "Unused endpoint: GET /api/version"}, "fullDescription": {"text": "`app.py` declares `GET /api/version` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4756b4c4da7d2088", "name": "Unused endpoint: GET /api/health", "shortDescription": {"text": "Unused endpoint: GET /api/health"}, "fullDescription": {"text": "`app.py` declares `GET /api/health` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-52765bcf81a6e09b", "name": "Unused endpoint: GET /api/ready", "shortDescription": {"text": "Unused endpoint: GET /api/ready"}, "fullDescription": {"text": "`app.py` declares `GET /api/ready` 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-f279069c5e862217", "name": "Unused endpoint: GET /pair", "shortDescription": {"text": "Unused endpoint: GET /pair"}, "fullDescription": {"text": "`companion/routes.py` declares `GET /pair` 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-e343c1fa58c93a21", "name": "Unused endpoint: POST /pair", "shortDescription": {"text": "Unused endpoint: POST /pair"}, "fullDescription": {"text": "`companion/routes.py` declares `POST /pair` 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-251e3dbd600caba5", "name": "Unused endpoint: GET /v1/models", "shortDescription": {"text": "Unused endpoint: GET /v1/models"}, "fullDescription": {"text": "`scripts/diffusion_server.py` declares `GET /v1/models` 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-347ef23ab91848f0", "name": "Unused endpoint: POST /v1/images/generations", "shortDescription": {"text": "Unused endpoint: POST /v1/images/generations"}, "fullDescription": {"text": "`scripts/diffusion_server.py` declares `POST /v1/images/generations` 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-970f907bd25af793", "name": "Unused endpoint: POST /v1/images/inpaint", "shortDescription": {"text": "Unused endpoint: POST /v1/images/inpaint"}, "fullDescription": {"text": "`scripts/diffusion_server.py` declares `POST /v1/images/inpaint` 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-35bd0071352fd56b", "name": "Unused endpoint: POST /v1/images/harmonize", "shortDescription": {"text": "Unused endpoint: POST /v1/images/harmonize"}, "fullDescription": {"text": "`scripts/diffusion_server.py` declares `POST /v1/images/harmonize` 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-45c45555041fa74b", "name": "Unused endpoint: GET /system", "shortDescription": {"text": "Unused endpoint: GET /system"}, "fullDescription": {"text": "`routes/hwfit_routes.py` declares `GET /system` 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-6d9534131ed7ca41", "name": "Unused endpoint: GET /profiles", "shortDescription": {"text": "Unused endpoint: GET /profiles"}, "fullDescription": {"text": "`routes/hwfit_routes.py` declares `GET /profiles` 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-5c0aed83ee15ffc6", "name": "Unused endpoint: GET /image-models", "shortDescription": {"text": "Unused endpoint: GET /image-models"}, "fullDescription": {"text": "`routes/hwfit_routes.py` declares `GET /image-models` 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-4a12a9bd91f7e8b8", "name": "Unused endpoint: POST /api/gallery/upload", "shortDescription": {"text": "Unused endpoint: POST /api/gallery/upload"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `POST /api/gallery/upload` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2e4d4797e5043e1d", "name": "Unused endpoint: POST /api/gallery/{image_id}/replace", "shortDescription": {"text": "Unused endpoint: POST /api/gallery/{image_id}/replace"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `POST /api/gallery/{image_id}/replace` 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-32bc838333a2769d", "name": "Unused endpoint: POST /api/gallery/{image_id}/rename", "shortDescription": {"text": "Unused endpoint: POST /api/gallery/{image_id}/rename"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `POST /api/gallery/{image_id}/rename` 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-bd2566dc90d6d2a5", "name": "Unused endpoint: POST /api/gallery/{image_id}/rotate", "shortDescription": {"text": "Unused endpoint: POST /api/gallery/{image_id}/rotate"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `POST /api/gallery/{image_id}/rotate` 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-6a29f328b3a0ad20", "name": "Unused endpoint: POST /api/gallery/ai-upscale", "shortDescription": {"text": "Unused endpoint: POST /api/gallery/ai-upscale"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `POST /api/gallery/ai-upscale` 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-daa36793be0a19b7", "name": "Unused endpoint: POST /api/gallery/style-transfer", "shortDescription": {"text": "Unused endpoint: POST /api/gallery/style-transfer"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `POST /api/gallery/style-transfer` 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-a247b71180396f44", "name": "Unused endpoint: GET /api/gallery/tags", "shortDescription": {"text": "Unused endpoint: GET /api/gallery/tags"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `GET /api/gallery/tags` 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-b084476c864f2b2a", "name": "Unused endpoint: GET /api/gallery/albums", "shortDescription": {"text": "Unused endpoint: GET /api/gallery/albums"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `GET /api/gallery/albums` 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-89b3da950dd4fd8d", "name": "Unused endpoint: POST /api/gallery/albums", "shortDescription": {"text": "Unused endpoint: POST /api/gallery/albums"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `POST /api/gallery/albums` 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-3c8fd71877c420be", "name": "Unused endpoint: GET /api/gallery/stats", "shortDescription": {"text": "Unused endpoint: GET /api/gallery/stats"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `GET /api/gallery/stats` 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-4b9f5b4ee13fd47f", "name": "Unused endpoint: POST /api/gallery/ai-tag-batch", "shortDescription": {"text": "Unused endpoint: POST /api/gallery/ai-tag-batch"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `POST /api/gallery/ai-tag-batch` 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-09b1735973f6af1a", "name": "Unused endpoint: GET /api/gallery/{image_id}", "shortDescription": {"text": "Unused endpoint: GET /api/gallery/{image_id}"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `GET /api/gallery/{image_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dc7e9275ac5cd002", "name": "Unused endpoint: PATCH /api/gallery/{image_id}", "shortDescription": {"text": "Unused endpoint: PATCH /api/gallery/{image_id}"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `PATCH /api/gallery/{image_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c54dea87b8f0be4d", "name": "Unused endpoint: POST /api/gallery/download-zip", "shortDescription": {"text": "Unused endpoint: POST /api/gallery/download-zip"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `POST /api/gallery/download-zip` 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-150ced4ab00a917b", "name": "Unused endpoint: POST /api/gallery/clear-user-tags", "shortDescription": {"text": "Unused endpoint: POST /api/gallery/clear-user-tags"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `POST /api/gallery/clear-user-tags` 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-d005f10aa8fb4f99", "name": "Unused endpoint: POST /api/gallery/clear-ai-tags", "shortDescription": {"text": "Unused endpoint: POST /api/gallery/clear-ai-tags"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `POST /api/gallery/clear-ai-tags` 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-df08e10e338fae04", "name": "Unused endpoint: POST /api/gallery/dedupe-tags", "shortDescription": {"text": "Unused endpoint: POST /api/gallery/dedupe-tags"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `POST /api/gallery/dedupe-tags` 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-c0794109680b418f", "name": "Unused endpoint: POST /api/image/harmonize", "shortDescription": {"text": "Unused endpoint: POST /api/image/harmonize"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `POST /api/image/harmonize` 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-0cac05ad6de9fefc", "name": "Unused endpoint: POST /api/image/sharpen", "shortDescription": {"text": "Unused endpoint: POST /api/image/sharpen"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `POST /api/image/sharpen` 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-e3cacd3a03162c19", "name": "Unused endpoint: POST /api/image/denoise", "shortDescription": {"text": "Unused endpoint: POST /api/image/denoise"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `POST /api/image/denoise` 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-43afb1301f8f651f", "name": "Unused endpoint: POST /api/image/remove-bg", "shortDescription": {"text": "Unused endpoint: POST /api/image/remove-bg"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `POST /api/image/remove-bg` 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-547fd38c0d6b8869", "name": "Unused endpoint: POST /api/image/enhance-face", "shortDescription": {"text": "Unused endpoint: POST /api/image/enhance-face"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `POST /api/image/enhance-face` 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-5953d2d195eba81f", "name": "Unused endpoint: PUT /api/gallery/albums/{album_id}", "shortDescription": {"text": "Unused endpoint: PUT /api/gallery/albums/{album_id}"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `PUT /api/gallery/albums/{album_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-71295cbf78aeb911", "name": "Unused endpoint: DELETE /api/gallery/albums/{album_id}", "shortDescription": {"text": "Unused endpoint: DELETE /api/gallery/albums/{album_id}"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `DELETE /api/gallery/albums/{album_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c48a98c50c40ee88", "name": "Unused endpoint: POST /api/gallery/albums/{album_id}/add", "shortDescription": {"text": "Unused endpoint: POST /api/gallery/albums/{album_id}/add"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `POST /api/gallery/albums/{album_id}/add` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f679d5c4c2fe4ddd", "name": "Unused endpoint: POST /api/gallery/albums/{album_id}/remove", "shortDescription": {"text": "Unused endpoint: POST /api/gallery/albums/{album_id}/remove"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `POST /api/gallery/albums/{album_id}/remove` 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-d99043581b9196af", "name": "Unused endpoint: POST /api/gallery/{image_id}/favorite", "shortDescription": {"text": "Unused endpoint: POST /api/gallery/{image_id}/favorite"}, "fullDescription": {"text": "`routes/gallery_routes.py` declares `POST /api/gallery/{image_id}/favorite` 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/22347"}, "properties": {"repository": "VitorLudke/jarvis-local-llm", "repoUrl": "https://github.com/VitorLudke/jarvis-local-llm", "branch": "main"}, "results": [{"ruleId": "scanner-2f33761892540654", "level": "note", "message": {"text": "Possibly dead Python function: overlap_clusters"}, "properties": {"repobilityId": "0a501516d1d63699", "scanner": "scanner-primary", "fingerprint": "2f33761892540654", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/pr_blocker_audit.py:393"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3351254170957f4c", "level": "note", "message": {"text": "Possibly dead Python function: positive_int"}, "properties": {"repobilityId": "4bd4f862ce15138a", "scanner": "scanner-primary", "fingerprint": "3351254170957f4c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/pr_blocker_audit.py:990"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fe8cb22bf58a7969", "level": "note", "message": {"text": "Possibly dead Python function: set_description"}, "properties": {"repobilityId": "4d8e45b086defd4c", "scanner": "scanner-primary", "fingerprint": "fe8cb22bf58a7969", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/hf_download.py:93"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-da709d77729d8b7a", "level": "note", "message": {"text": "Possibly dead Python function: set_postfix"}, "properties": {"repobilityId": "3fbaa7a42ab18e67", "scanner": "scanner-primary", "fingerprint": "da709d77729d8b7a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/hf_download.py:96"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-beedc84ced06de49", "level": "note", "message": {"text": "Possibly dead Python function: set_postfix_str"}, "properties": {"repobilityId": "71e2f084479033f3", "scanner": "scanner-primary", "fingerprint": "beedc84ced06de49", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/hf_download.py:99"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e891e612775907df", "level": "note", "message": {"text": "Possibly dead Python function: quiet_logs"}, "properties": {"repobilityId": "3783e1948a7b1651", "scanner": "scanner-primary", "fingerprint": "e891e612775907df", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/_lib/cli.py:48"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-35198ec2ca3d518d", "level": "note", "message": {"text": "Possibly dead Python function: common_parser"}, "properties": {"repobilityId": "099ad14b556ddd65", "scanner": "scanner-primary", "fingerprint": "35198ec2ca3d518d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/_lib/cli.py:84"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bf56672d01430d8f", "level": "note", "message": {"text": "Possibly dead Python function: handle_starttag"}, "properties": {"repobilityId": "3bf216d149959ebf", "scanner": "scanner-primary", "fingerprint": "bf56672d01430d8f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/email_routes.py:405"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-558119bd5bc26506", "level": "note", "message": {"text": "Possibly dead Python function: handle_startendtag"}, "properties": {"repobilityId": "259e69d47dc2412b", "scanner": "scanner-primary", "fingerprint": "558119bd5bc26506", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/email_routes.py:425"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bdda5eeaf33a6480", "level": "note", "message": {"text": "Possibly dead Python function: handle_endtag"}, "properties": {"repobilityId": "7eb6f3decafc1766", "scanner": "scanner-primary", "fingerprint": "bdda5eeaf33a6480", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/email_routes.py:429"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9f05433cd346f062", "level": "note", "message": {"text": "Possibly dead Python function: handle_data"}, "properties": {"repobilityId": "3a673a278f4fc1e6", "scanner": "scanner-primary", "fingerprint": "9f05433cd346f062", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/email_routes.py:438"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6c2116deff57f22d", "level": "note", "message": {"text": "Possibly dead Python function: require_owner"}, "properties": {"repobilityId": "08cd706909dee345", "scanner": "scanner-primary", "fingerprint": "6c2116deff57f22d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/email_helpers.py:164"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-354b203effe78a4b", "level": "note", "message": {"text": "Possibly dead Python function: try_fallback_endpoint"}, "properties": {"repobilityId": "54693b4ec7a3d243", "scanner": "scanner-primary", "fingerprint": "354b203effe78a4b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/chat_helpers.py:191"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b0b46c12b6af87aa", "level": "note", "message": {"text": "Possibly dead Python function: periodic_rate_limit_cleanup"}, "properties": {"repobilityId": "2c3011295e4a042a", "scanner": "scanner-primary", "fingerprint": "b0b46c12b6af87aa", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/upload_routes.py:249"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5feae732c0a719db", "level": "note", "message": {"text": "Possibly dead Python function: set_voice"}, "properties": {"repobilityId": "6e02d44fa8852dd7", "scanner": "scanner-primary", "fingerprint": "5feae732c0a719db", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/tts/tts_service.py:195"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-52e04ad7f479f286", "level": "note", "message": {"text": "Possibly dead Python function: start_background"}, "properties": {"repobilityId": "833826065b0c8d33", "scanner": "scanner-primary", "fingerprint": "52e04ad7f479f286", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/research/service.py:148"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-190a2b6c2aca60c4", "level": "note", "message": {"text": "Possibly dead Python function: process_bind_param"}, "properties": {"repobilityId": "a51428934072abb6", "scanner": "scanner-primary", "fingerprint": "190a2b6c2aca60c4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/database.py:69"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4f97e6d0212d94ed", "level": "note", "message": {"text": "Possibly dead Python function: process_result_value"}, "properties": {"repobilityId": "2b4ef95eaf3928de", "scanner": "scanner-primary", "fingerprint": "4f97e6d0212d94ed", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/database.py:75"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3194a8c38b2cf103", "level": "note", "message": {"text": "Possibly dead Python function: bulk_insert_messages"}, "properties": {"repobilityId": "944c1ee16325e948", "scanner": "scanner-primary", "fingerprint": "3194a8c38b2cf103", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/database.py:1791"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8e15c57132732056", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 static/app.js:3576"}, "properties": {"repobilityId": "59ba33ff2299d9c8", "scanner": "scanner-primary", "fingerprint": "8e15c57132732056", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-337074d4e8f2721d", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 static/js/slashCommands.js:2392"}, "properties": {"repobilityId": "a4fc336257a1d38f", "scanner": "scanner-primary", "fingerprint": "337074d4e8f2721d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-13d839b2a7a75a91", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 static/js/cookbookRunning.js:3220"}, "properties": {"repobilityId": "d58be00c31248a5c", "scanner": "scanner-primary", "fingerprint": "13d839b2a7a75a91", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-40fe62f86bde49ac", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 static/js/notes.js:2855"}, "properties": {"repobilityId": "63663e502d97fe68", "scanner": "scanner-primary", "fingerprint": "40fe62f86bde49ac", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-0b9e7b338949c664", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 static/js/editor/wire-import.js:118"}, "properties": {"repobilityId": "9df38802c7c5eea5", "scanner": "scanner-primary", "fingerprint": "0b9e7b338949c664", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-f587f6fb5def08fa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 static/lib/mammoth.browser.min.js:6"}, "properties": {"repobilityId": "46af0bf77c23a0d4", "scanner": "scanner-primary", "fingerprint": "f587f6fb5def08fa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ab340a0e501ffff9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 static/lib/xlsx.full.min.js:13"}, "properties": {"repobilityId": "48e8c75f99fbdf69", "scanner": "scanner-primary", "fingerprint": "ab340a0e501ffff9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ab83cce2d95a4dbb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 static/lib/highlight.min.js:107"}, "properties": {"repobilityId": "2791491f6372749f", "scanner": "scanner-primary", "fingerprint": "ab83cce2d95a4dbb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-272c3b87f15d32b2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 static/lib/docx.umd.min.js:4201"}, "properties": {"repobilityId": "743eb9e286bbcb97", "scanner": "scanner-primary", "fingerprint": "272c3b87f15d32b2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-59868562782cd0f8", "level": "warning", "message": {"text": "Privileged port 1000 in use"}, "properties": {"repobilityId": "5ac9fc9372cfe169", "scanner": "scanner-primary", "fingerprint": "59868562782cd0f8", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cb0acdfe8e7021df", "level": "warning", "message": {"text": "Privileged port 993 in use"}, "properties": {"repobilityId": "a36e56a26353e9ee", "scanner": "scanner-primary", "fingerprint": "cb0acdfe8e7021df", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/settings.js"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d63da3583b14afc0", "level": "warning", "message": {"text": "Dockerfile runs as root: Dockerfile"}, "properties": {"repobilityId": "a2ed1bd120e507db", "scanner": "scanner-primary", "fingerprint": "d63da3583b14afc0", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-de3c1f217d72a063", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "properties": {"repobilityId": "1de0ecd007803dbd", "scanner": "scanner-primary", "fingerprint": "de3c1f217d72a063", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-9ddb72c5903d8f67", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/login.html:349"}, "properties": {"repobilityId": "fb9725e3edd2d955", "scanner": "scanner-primary", "fingerprint": "9ddb72c5903d8f67", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/login.html"}, "region": {"startLine": 349}}}]}, {"ruleId": "scanner-787f963fd1fd1244", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in static/login.html:473"}, "properties": {"repobilityId": "8fee4880242d9324", "scanner": "scanner-primary", "fingerprint": "787f963fd1fd1244", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/login.html"}, "region": {"startLine": 473}}}]}, {"ruleId": "scanner-a214c3075ed2b05d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/app.js:665"}, "properties": {"repobilityId": "25869ecb6dadc3f6", "scanner": "scanner-primary", "fingerprint": "a214c3075ed2b05d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/app.js"}, "region": {"startLine": 665}}}]}, {"ruleId": "scanner-cf573f9effd5784c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/landing.html:666"}, "properties": {"repobilityId": "b09163b0f28b6ba2", "scanner": "scanner-primary", "fingerprint": "cf573f9effd5784c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/landing.html"}, "region": {"startLine": 666}}}]}, {"ruleId": "scanner-2c6f229dfb78e22c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/colorPicker.js:101"}, "properties": {"repobilityId": "5d583c19abac714a", "scanner": "scanner-primary", "fingerprint": "2c6f229dfb78e22c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/colorPicker.js"}, "region": {"startLine": 101}}}]}, {"ruleId": "scanner-72d003bfd8fb2908", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/settings.js:97"}, "properties": {"repobilityId": "fd495d2812bafb96", "scanner": "scanner-primary", "fingerprint": "72d003bfd8fb2908", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/settings.js"}, "region": {"startLine": 97}}}]}, {"ruleId": "scanner-cb4ea2bfd692d25a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/models.js:107"}, "properties": {"repobilityId": "ae47e169f069ad4c", "scanner": "scanner-primary", "fingerprint": "cb4ea2bfd692d25a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/models.js"}, "region": {"startLine": 107}}}]}, {"ruleId": "scanner-749689c985abf4e0", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/cookbook-diagnosis.js:553"}, "properties": {"repobilityId": "de5e0498c3574ecd", "scanner": "scanner-primary", "fingerprint": "749689c985abf4e0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/cookbook-diagnosis.js"}, "region": {"startLine": 553}}}]}, {"ruleId": "scanner-5aadaffdd929cbca", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/group.js:65"}, "properties": {"repobilityId": "14b929896614c8c1", "scanner": "scanner-primary", "fingerprint": "5aadaffdd929cbca", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/group.js"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-dd91103ace362656", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in static/js/group.js:555"}, "properties": {"repobilityId": "47778fc9e794ddf5", "scanner": "scanner-primary", "fingerprint": "dd91103ace362656", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/group.js"}, "region": {"startLine": 555}}}]}, {"ruleId": "scanner-f23a8c2e39f4eede", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/presets.js:133"}, "properties": {"repobilityId": "210b78a4df5aa601", "scanner": "scanner-primary", "fingerprint": "f23a8c2e39f4eede", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/presets.js"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-679f1cb9f1fb3525", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in static/js/presets.js:428"}, "properties": {"repobilityId": "4bcf0a647b02eeaa", "scanner": "scanner-primary", "fingerprint": "679f1cb9f1fb3525", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/presets.js"}, "region": {"startLine": 428}}}]}, {"ruleId": "scanner-d00b22955d58715e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/emailInbox.js:296"}, "properties": {"repobilityId": "00791ad77b5320de", "scanner": "scanner-primary", "fingerprint": "d00b22955d58715e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/emailInbox.js"}, "region": {"startLine": 296}}}]}, {"ruleId": "scanner-f36953b2844723de", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/assistant.js:93"}, "properties": {"repobilityId": "3608686287c9938e", "scanner": "scanner-primary", "fingerprint": "f36953b2844723de", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/assistant.js"}, "region": {"startLine": 93}}}]}, {"ruleId": "scanner-0fd547110ccfa0b7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/documentLibrary.js:196"}, "properties": {"repobilityId": "6ea5caf1983bfd09", "scanner": "scanner-primary", "fingerprint": "0fd547110ccfa0b7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/documentLibrary.js"}, "region": {"startLine": 196}}}]}, {"ruleId": "scanner-55086d79621e4dad", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in static/js/documentLibrary.js:1381"}, "properties": {"repobilityId": "219ad64f9e49076b", "scanner": "scanner-primary", "fingerprint": "55086d79621e4dad", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/documentLibrary.js"}, "region": {"startLine": 1381}}}]}, {"ruleId": "scanner-9d8686a54c188f49", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/document.js:299"}, "properties": {"repobilityId": "4b35ad17c59957c1", "scanner": "scanner-primary", "fingerprint": "9d8686a54c188f49", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/document.js"}, "region": {"startLine": 299}}}]}, {"ruleId": "scanner-5ef3ab56fe0062ba", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/modalManager.js:320"}, "properties": {"repobilityId": "c46d1564ebf73b69", "scanner": "scanner-primary", "fingerprint": "5ef3ab56fe0062ba", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/modalManager.js"}, "region": {"startLine": 320}}}]}, {"ruleId": "scanner-3120955834db295e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/spinner.js:279"}, "properties": {"repobilityId": "19fffcfc1cd9faa4", "scanner": "scanner-primary", "fingerprint": "3120955834db295e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/spinner.js"}, "region": {"startLine": 279}}}]}, {"ruleId": "scanner-3decdc45749bbc3e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/galleryEditor.js:488"}, "properties": {"repobilityId": "c1e72717927c1be2", "scanner": "scanner-primary", "fingerprint": "3decdc45749bbc3e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/galleryEditor.js"}, "region": {"startLine": 488}}}]}, {"ruleId": "scanner-5d28d9157ba28c87", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/tourHints.js:75"}, "properties": {"repobilityId": "8d825e3c3ba37474", "scanner": "scanner-primary", "fingerprint": "5d28d9157ba28c87", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/tourHints.js"}, "region": {"startLine": 75}}}]}, {"ruleId": "scanner-b0cb78166dfb33c6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/admin.js:36"}, "properties": {"repobilityId": "2e893fbfa43c1aa4", "scanner": "scanner-primary", "fingerprint": "b0cb78166dfb33c6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/admin.js"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-88e226cfe8c78b35", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/rag.js:30"}, "properties": {"repobilityId": "e08caaafd2b8762d", "scanner": "scanner-primary", "fingerprint": "88e226cfe8c78b35", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/rag.js"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-c0680305bef59de2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/cookbookDownload.js:318"}, "properties": {"repobilityId": "95f293148a59eb00", "scanner": "scanner-primary", "fingerprint": "c0680305bef59de2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/cookbookDownload.js"}, "region": {"startLine": 318}}}]}, {"ruleId": "scanner-a1999aef9b7c1fb3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/memory.js:67"}, "properties": {"repobilityId": "d9a72c483c761b8d", "scanner": "scanner-primary", "fingerprint": "a1999aef9b7c1fb3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/memory.js"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-e4468c697ede1c84", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/chatStream.js:233"}, "properties": {"repobilityId": "7840ef0d13955cdd", "scanner": "scanner-primary", "fingerprint": "e4468c697ede1c84", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/chatStream.js"}, "region": {"startLine": 233}}}]}, {"ruleId": "scanner-775f195318d10ede", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/ui.js:323"}, "properties": {"repobilityId": "e3c3e705bd836d53", "scanner": "scanner-primary", "fingerprint": "775f195318d10ede", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/ui.js"}, "region": {"startLine": 323}}}]}, {"ruleId": "scanner-86397cd0ee58ceb6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/emailLibrary.js:68"}, "properties": {"repobilityId": "d10feb3020c200d7", "scanner": "scanner-primary", "fingerprint": "86397cd0ee58ceb6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/emailLibrary.js"}, "region": {"startLine": 68}}}]}, {"ruleId": "scanner-9d3de9904da817ac", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in static/js/emailLibrary.js:4238"}, "properties": {"repobilityId": "892bab42ebbe15be", "scanner": "scanner-primary", "fingerprint": "9d3de9904da817ac", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/emailLibrary.js"}, "region": {"startLine": 4238}}}]}, {"ruleId": "scanner-a22cde7b2f1464a2", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in static/js/emailLibrary.js:2789"}, "properties": {"repobilityId": "ab7a1468af3195ff", "scanner": "scanner-primary", "fingerprint": "a22cde7b2f1464a2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/emailLibrary.js"}, "region": {"startLine": 2789}}}]}, {"ruleId": "scanner-17f27f01e98a3276", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/slashAutocomplete.js:133"}, "properties": {"repobilityId": "38bc182d89bcc2c2", "scanner": "scanner-primary", "fingerprint": "17f27f01e98a3276", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/slashAutocomplete.js"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-2467c1497b14ae2c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/slashCommands.js:265"}, "properties": {"repobilityId": "b77aae7ffc2388c3", "scanner": "scanner-primary", "fingerprint": "2467c1497b14ae2c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/slashCommands.js"}, "region": {"startLine": 265}}}]}, {"ruleId": "scanner-284fa4ecdf567b22", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/researchSynapse.js:29"}, "properties": {"repobilityId": "7c85fab0fb25b7ab", "scanner": "scanner-primary", "fingerprint": "284fa4ecdf567b22", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/researchSynapse.js"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-997f48c01a050576", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/chat.js:187"}, "properties": {"repobilityId": "536c28736dbfb4c2", "scanner": "scanner-primary", "fingerprint": "997f48c01a050576", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/chat.js"}, "region": {"startLine": 187}}}]}, {"ruleId": "scanner-308c76677a11a8a6", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in static/js/chat.js:2414"}, "properties": {"repobilityId": "3c713254f61162a9", "scanner": "scanner-primary", "fingerprint": "308c76677a11a8a6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/chat.js"}, "region": {"startLine": 2414}}}]}, {"ruleId": "scanner-efacebae4c7d269e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/emojiPicker.js:121"}, "properties": {"repobilityId": "a1ca2e5e3671da70", "scanner": "scanner-primary", "fingerprint": "efacebae4c7d269e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/emojiPicker.js"}, "region": {"startLine": 121}}}]}, {"ruleId": "scanner-499ddae62658808e", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in static/js/codeRunner.js:208"}, "properties": {"repobilityId": "95cbfdc73dcc1eec", "scanner": "scanner-primary", "fingerprint": "499ddae62658808e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/codeRunner.js"}, "region": {"startLine": 208}}}]}, {"ruleId": "scanner-22d40563769e3d5b", "level": "note", "message": {"text": "Insecure pattern 'document_write' in static/js/codeRunner.js:366"}, "properties": {"repobilityId": "ec1ef96d9dc18d74", "scanner": "scanner-primary", "fingerprint": "22d40563769e3d5b", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/codeRunner.js"}, "region": {"startLine": 366}}}]}, {"ruleId": "scanner-580b68ddb77da3ec", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/codeRunner.js:19"}, "properties": {"repobilityId": "87debe3f1eed274d", "scanner": "scanner-primary", "fingerprint": "580b68ddb77da3ec", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/codeRunner.js"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-8095c658492c4901", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/keyboard-shortcuts.js:213"}, "properties": {"repobilityId": "d4294efed92f2ce5", "scanner": "scanner-primary", "fingerprint": "8095c658492c4901", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/keyboard-shortcuts.js"}, "region": {"startLine": 213}}}]}, {"ruleId": "scanner-7a398f2c35bc20cd", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/gallery.js:355"}, "properties": {"repobilityId": "5f3767232366c42a", "scanner": "scanner-primary", "fingerprint": "7a398f2c35bc20cd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/gallery.js"}, "region": {"startLine": 355}}}]}, {"ruleId": "scanner-c42d88ea21b4f10e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/signature.js:309"}, "properties": {"repobilityId": "124f4f9cd16c8262", "scanner": "scanner-primary", "fingerprint": "c42d88ea21b4f10e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/signature.js"}, "region": {"startLine": 309}}}]}, {"ruleId": "scanner-6b2f15edf5a7efed", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/cookbookRunning.js:388"}, "properties": {"repobilityId": "0b860f59b96cf1ca", "scanner": "scanner-primary", "fingerprint": "6b2f15edf5a7efed", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/cookbookRunning.js"}, "region": {"startLine": 388}}}]}, {"ruleId": "scanner-401977541d526ffd", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in static/js/cookbookRunning.js:1716"}, "properties": {"repobilityId": "040e773cfc02c21e", "scanner": "scanner-primary", "fingerprint": "401977541d526ffd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/cookbookRunning.js"}, "region": {"startLine": 1716}}}]}, {"ruleId": "scanner-cba58f4d4e6c93c1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/skills.js:389"}, "properties": {"repobilityId": "3570f3fa84a289dd", "scanner": "scanner-primary", "fingerprint": "cba58f4d4e6c93c1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/skills.js"}, "region": {"startLine": 389}}}]}, {"ruleId": "scanner-e1f68768bcae999a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/sessions.js:64"}, "properties": {"repobilityId": "2c3f443f2592917d", "scanner": "scanner-primary", "fingerprint": "e1f68768bcae999a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/sessions.js"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-f20fb019b40b9036", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in static/js/sessions.js:1426"}, "properties": {"repobilityId": "fefd8555708456a7", "scanner": "scanner-primary", "fingerprint": "f20fb019b40b9036", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/sessions.js"}, "region": {"startLine": 1426}}}]}, {"ruleId": "scanner-1c725f4d21f7df12", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in static/js/section-management.js:21"}, "properties": {"repobilityId": "715939c7d68238f6", "scanner": "scanner-primary", "fingerprint": "1c725f4d21f7df12", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/section-management.js"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-0b924e8880fb865b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/tasks.js:377"}, "properties": {"repobilityId": "6d2356009a0d9406", "scanner": "scanner-primary", "fingerprint": "0b924e8880fb865b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/tasks.js"}, "region": {"startLine": 377}}}]}, {"ruleId": "scanner-ffda85837dfa0bd0", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/cookbook-hwfit.js:123"}, "properties": {"repobilityId": "81f5a553bae5b2d7", "scanner": "scanner-primary", "fingerprint": "ffda85837dfa0bd0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/cookbook-hwfit.js"}, "region": {"startLine": 123}}}]}, {"ruleId": "scanner-f38e95d4f1ad0df1", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in static/js/cookbook-hwfit.js:484"}, "properties": {"repobilityId": "1a14de4c7b8b139a", "scanner": "scanner-primary", "fingerprint": "f38e95d4f1ad0df1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/cookbook-hwfit.js"}, "region": {"startLine": 484}}}]}, {"ruleId": "scanner-671877e5cedade85", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/search-chat.js:24"}, "properties": {"repobilityId": "9f2b4b96a23f1a0d", "scanner": "scanner-primary", "fingerprint": "671877e5cedade85", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/search-chat.js"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-43aa396e13cff3e9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/notes.js:82"}, "properties": {"repobilityId": "0c5fc1c7c8956c16", "scanner": "scanner-primary", "fingerprint": "43aa396e13cff3e9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/notes.js"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-1b83d2779b91b337", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in static/js/notes.js:1725"}, "properties": {"repobilityId": "4ca3fea43c099f10", "scanner": "scanner-primary", "fingerprint": "1b83d2779b91b337", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/notes.js"}, "region": {"startLine": 1725}}}]}, {"ruleId": "scanner-a3168a4f78a3b2ea", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/theme.js:669"}, "properties": {"repobilityId": "59e8a74d761b3456", "scanner": "scanner-primary", "fingerprint": "a3168a4f78a3b2ea", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/theme.js"}, "region": {"startLine": 669}}}]}, {"ruleId": "scanner-0d375a0affe3bee4", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/cookbook.js:585"}, "properties": {"repobilityId": "679ddef8127388df", "scanner": "scanner-primary", "fingerprint": "0d375a0affe3bee4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/cookbook.js"}, "region": {"startLine": 585}}}]}, {"ruleId": "scanner-2e4383f170829eac", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/chatRenderer.js:142"}, "properties": {"repobilityId": "8c6ab335979a388f", "scanner": "scanner-primary", "fingerprint": "2e4383f170829eac", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/chatRenderer.js"}, "region": {"startLine": 142}}}]}, {"ruleId": "scanner-92cab93533191357", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/tts-ai.js:74"}, "properties": {"repobilityId": "f7fc68f368dbc00c", "scanner": "scanner-primary", "fingerprint": "92cab93533191357", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/tts-ai.js"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-d568c113df37d53a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/modelPicker.js:261"}, "properties": {"repobilityId": "1110fcfa7bf77301", "scanner": "scanner-primary", "fingerprint": "d568c113df37d53a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/modelPicker.js"}, "region": {"startLine": 261}}}]}, {"ruleId": "scanner-a64ca5f9db805e7f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/calendar.js:445"}, "properties": {"repobilityId": "92ac16a0310687ce", "scanner": "scanner-primary", "fingerprint": "a64ca5f9db805e7f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/calendar.js"}, "region": {"startLine": 445}}}]}, {"ruleId": "scanner-170022a79e31d5a3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/cookbookServe.js:321"}, "properties": {"repobilityId": "30df73238f854e2e", "scanner": "scanner-primary", "fingerprint": "170022a79e31d5a3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/cookbookServe.js"}, "region": {"startLine": 321}}}]}, {"ruleId": "scanner-58891199bc240960", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in static/js/cookbookServe.js:740"}, "properties": {"repobilityId": "7fc8fc9d47d6fb55", "scanner": "scanner-primary", "fingerprint": "58891199bc240960", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/cookbookServe.js"}, "region": {"startLine": 740}}}]}, {"ruleId": "scanner-f86e11e01d4600d0", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/markdown.js:68"}, "properties": {"repobilityId": "04d4e0666ea837d3", "scanner": "scanner-primary", "fingerprint": "f86e11e01d4600d0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/markdown.js"}, "region": {"startLine": 68}}}]}, {"ruleId": "scanner-f6be8b7c24f5cdec", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/research/panel.js:33"}, "properties": {"repobilityId": "c22f9cd5d71abee5", "scanner": "scanner-primary", "fingerprint": "f6be8b7c24f5cdec", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/research/panel.js"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-010e4160c500555c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/layer-panel.js:87"}, "properties": {"repobilityId": "489756e31b5d6be6", "scanner": "scanner-primary", "fingerprint": "010e4160c500555c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/editor/layer-panel.js"}, "region": {"startLine": 87}}}]}, {"ruleId": "scanner-4416c0dd89b15043", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/wire-inpaint-controls.js:104"}, "properties": {"repobilityId": "61ed88961022f942", "scanner": "scanner-primary", "fingerprint": "4416c0dd89b15043", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/editor/wire-inpaint-controls.js"}, "region": {"startLine": 104}}}]}, {"ruleId": "scanner-68f611805566877f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/clipboard-and-drop.js:92"}, "properties": {"repobilityId": "87e4a2650c056247", "scanner": "scanner-primary", "fingerprint": "68f611805566877f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/editor/clipboard-and-drop.js"}, "region": {"startLine": 92}}}]}, {"ruleId": "scanner-9f6756cd2596aea3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/wire-selection-controls.js:144"}, "properties": {"repobilityId": "d19cedf79ea00ec0", "scanner": "scanner-primary", "fingerprint": "9f6756cd2596aea3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/editor/wire-selection-controls.js"}, "region": {"startLine": 144}}}]}, {"ruleId": "scanner-53532d215543114f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/history-panel.js:81"}, "properties": {"repobilityId": "8b57ce4496014455", "scanner": "scanner-primary", "fingerprint": "53532d215543114f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/editor/history-panel.js"}, "region": {"startLine": 81}}}]}, {"ruleId": "scanner-5ce1dbd23521e93c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/wire-import.js:118"}, "properties": {"repobilityId": "e07b1cf1670f4b05", "scanner": "scanner-primary", "fingerprint": "5ce1dbd23521e93c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/editor/wire-import.js"}, "region": {"startLine": 118}}}]}, {"ruleId": "scanner-8df53b3d737bf25f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/ai-tools-misc.js:111"}, "properties": {"repobilityId": "ad92c1b347521055", "scanner": "scanner-primary", "fingerprint": "8df53b3d737bf25f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/editor/ai-tools-misc.js"}, "region": {"startLine": 111}}}]}, {"ruleId": "scanner-6cf8733dfec1907e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/shortcuts-popover.js:39"}, "properties": {"repobilityId": "8b8fd3e1a8d292bd", "scanner": "scanner-primary", "fingerprint": "6cf8733dfec1907e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/editor/shortcuts-popover.js"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-cfd794c38123dd25", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/ai-models.js:99"}, "properties": {"repobilityId": "84c4433b99286db4", "scanner": "scanner-primary", "fingerprint": "cfd794c38123dd25", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/editor/ai-models.js"}, "region": {"startLine": 99}}}]}, {"ruleId": "scanner-ea23fdb384d974fc", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/ai-tool-runner.js:55"}, "properties": {"repobilityId": "06e6d936056d42de", "scanner": "scanner-primary", "fingerprint": "ea23fdb384d974fc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/editor/ai-tool-runner.js"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-8c38ad0fd4a26d10", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/fx/adj-popup.js:142"}, "properties": {"repobilityId": "a68b5fa99d9c9425", "scanner": "scanner-primary", "fingerprint": "8c38ad0fd4a26d10", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/editor/fx/adj-popup.js"}, "region": {"startLine": 142}}}]}, {"ruleId": "scanner-d4afbf31c6d9ef04", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/editor/tools/transform-session.js:90"}, "properties": {"repobilityId": "e331de66b8d26acf", "scanner": "scanner-primary", "fingerprint": "d4afbf31c6d9ef04", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/editor/tools/transform-session.js"}, "region": {"startLine": 90}}}]}, {"ruleId": "scanner-ece4676df9b84b64", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/compare/stream.js:92"}, "properties": {"repobilityId": "9612ca4da06cc156", "scanner": "scanner-primary", "fingerprint": "ece4676df9b84b64", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/compare/stream.js"}, "region": {"startLine": 92}}}]}, {"ruleId": "scanner-dc9b4f1fc464845a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/compare/vote.js:47"}, "properties": {"repobilityId": "461a9b9118d8aeef", "scanner": "scanner-primary", "fingerprint": "dc9b4f1fc464845a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/compare/vote.js"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-379a5f2606fc8f77", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/compare/probe.js:28"}, "properties": {"repobilityId": "8470f2be40dd6376", "scanner": "scanner-primary", "fingerprint": "379a5f2606fc8f77", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/compare/probe.js"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-900ae4cf637ee495", "level": "note", "message": {"text": "Insecure pattern 'document_write' in static/js/compare/index.js:1101"}, "properties": {"repobilityId": "d6062067dfa71989", "scanner": "scanner-primary", "fingerprint": "900ae4cf637ee495", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/compare/index.js"}, "region": {"startLine": 1101}}}]}, {"ruleId": "scanner-4cf2b658e39f18e9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/compare/index.js:315"}, "properties": {"repobilityId": "43f016173027ab0b", "scanner": "scanner-primary", "fingerprint": "4cf2b658e39f18e9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/compare/index.js"}, "region": {"startLine": 315}}}]}, {"ruleId": "scanner-e2218d5de1af24e9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/compare/panes.js:69"}, "properties": {"repobilityId": "583b49a812992055", "scanner": "scanner-primary", "fingerprint": "e2218d5de1af24e9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/compare/panes.js"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-700a085ac9cf8f70", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/compare/scoreboard.js:53"}, "properties": {"repobilityId": "f7ea6a36478c274a", "scanner": "scanner-primary", "fingerprint": "700a085ac9cf8f70", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/compare/scoreboard.js"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-7c52e8d12f5f79e1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/js/compare/selector.js:78"}, "properties": {"repobilityId": "3ec7a433a1a4bcde", "scanner": "scanner-primary", "fingerprint": "7c52e8d12f5f79e1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/compare/selector.js"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-8b87c1ea586d070e", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in static/js/emailLibrary/utils.js:137"}, "properties": {"repobilityId": "01646c3c12159b6c", "scanner": "scanner-primary", "fingerprint": "8b87c1ea586d070e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/js/emailLibrary/utils.js"}, "region": {"startLine": 137}}}]}, {"ruleId": "scanner-18f1d2d7a1018b32", "level": "note", "message": {"text": "Insecure pattern 'document_write' in static/lib/html2pdf.bundle.min.js:2"}, "properties": {"repobilityId": "4a311d47659294a6", "scanner": "scanner-primary", "fingerprint": "18f1d2d7a1018b32", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/lib/html2pdf.bundle.min.js"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-1286857463b7566d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/lib/html2pdf.bundle.min.js:2"}, "properties": {"repobilityId": "9f4d2a697cb2867b", "scanner": "scanner-primary", "fingerprint": "1286857463b7566d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/lib/html2pdf.bundle.min.js"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-01d3c250843bf1d4", "level": "warning", "message": {"text": "Insecure pattern 'direct_outerhtml_assignment' in static/lib/html2pdf.bundle.min.js:2"}, "properties": {"repobilityId": "858ecca380abd178", "scanner": "scanner-primary", "fingerprint": "01d3c250843bf1d4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_outerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/lib/html2pdf.bundle.min.js"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-ab3d87441881e5a8", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in static/lib/html2pdf.bundle.min.js:2"}, "properties": {"repobilityId": "6d9c1fbe14040bbb", "scanner": "scanner-primary", "fingerprint": "ab3d87441881e5a8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/lib/html2pdf.bundle.min.js"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-bd058e2b88c87bf1", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in static/lib/mammoth.browser.min.js:5"}, "properties": {"repobilityId": "a3b3b0b3b5a174bf", "scanner": "scanner-primary", "fingerprint": "bd058e2b88c87bf1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/lib/mammoth.browser.min.js"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-3d95bd90954e894f", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in static/lib/xlsx.full.min.js:10"}, "properties": {"repobilityId": "e936c1231bcab0a4", "scanner": "scanner-primary", "fingerprint": "3d95bd90954e894f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/lib/xlsx.full.min.js"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-90d9622f7d7104a6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/lib/highlight.min.js:271"}, "properties": {"repobilityId": "6e22d71f16a943ee", "scanner": "scanner-primary", "fingerprint": "90d9622f7d7104a6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/lib/highlight.min.js"}, "region": {"startLine": 271}}}]}, {"ruleId": "scanner-93f24babd1f685d8", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in static/lib/docx.umd.min.js:18524"}, "properties": {"repobilityId": "663ff03291b08b6d", "scanner": "scanner-primary", "fingerprint": "93f24babd1f685d8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/lib/docx.umd.min.js"}, "region": {"startLine": 18524}}}]}, {"ruleId": "scanner-c9b79121711f06aa", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in static/lib/docx.umd.min.js:2849"}, "properties": {"repobilityId": "34e99416b97006f4", "scanner": "scanner-primary", "fingerprint": "c9b79121711f06aa", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/lib/docx.umd.min.js"}, "region": {"startLine": 2849}}}]}, {"ruleId": "scanner-b8292c66ed5d85d8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/index.html:756"}, "properties": {"repobilityId": "cba7363c134f7b1d", "scanner": "scanner-primary", "fingerprint": "b8292c66ed5d85d8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/index.html"}, "region": {"startLine": 756}}}]}, {"ruleId": "scanner-e924d3c048d92d63", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in scripts/diffusion_server.py:55"}, "properties": {"repobilityId": "481c32e0778bfcd9", "scanner": "scanner-primary", "fingerprint": "e924d3c048d92d63", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/diffusion_server.py"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-009ac5d370e46706", "level": "error", "message": {"text": "Possible secret in scripts/demo_email/demo_account.py"}, "properties": {"repobilityId": "83864d879a383f0f", "scanner": "scanner-primary", "fingerprint": "009ac5d370e46706", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/demo_email/demo_account.py"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-f2892ac6751d7827", "level": "warning", "message": {"text": "Insecure pattern 'subprocess_shell_true' in src/builtin_actions.py:314"}, "properties": {"repobilityId": "57a8b37928ffded5", "scanner": "scanner-primary", "fingerprint": "f2892ac6751d7827", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/builtin_actions.py"}, "region": {"startLine": 314}}}]}, {"ruleId": "scanner-eea92ea2706e01e9", "level": "note", "message": {"text": "Very large file: static/app.js (4131 lines)"}, "properties": {"repobilityId": "1c051419cfdea300", "scanner": "scanner-primary", "fingerprint": "eea92ea2706e01e9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8e425a0a8bf954cb", "level": "note", "message": {"text": "Very large file: static/js/settings.js (5042 lines)"}, "properties": {"repobilityId": "b4efbcbde12d9352", "scanner": "scanner-primary", "fingerprint": "8e425a0a8bf954cb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-721e4699c78d61cf", "level": "note", "message": {"text": "Very large file: static/js/emailInbox.js (1245 lines)"}, "properties": {"repobilityId": "f60ac545c67c8613", "scanner": "scanner-primary", "fingerprint": "721e4699c78d61cf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-28ce45a54be8345f", "level": "note", "message": {"text": "Very large file: static/js/documentLibrary.js (3376 lines)"}, "properties": {"repobilityId": "5b9acb7d5b2f51af", "scanner": "scanner-primary", "fingerprint": "28ce45a54be8345f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-69fe30d92c8ffa1f", "level": "note", "message": {"text": "Very large file: static/js/document.js (9734 lines)"}, "properties": {"repobilityId": "acc1db166ff2e1a7", "scanner": "scanner-primary", "fingerprint": "69fe30d92c8ffa1f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4492331691fe4f51", "level": "note", "message": {"text": "Very large file: static/js/modalManager.js (1552 lines)"}, "properties": {"repobilityId": "79b530258da20788", "scanner": "scanner-primary", "fingerprint": "4492331691fe4f51", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9e8e9077199ba89c", "level": "note", "message": {"text": "Very large file: static/js/galleryEditor.js (3798 lines)"}, "properties": {"repobilityId": "396889b0a47ea947", "scanner": "scanner-primary", "fingerprint": "9e8e9077199ba89c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d60a67a5ab8b5777", "level": "note", "message": {"text": "Very large file: static/js/admin.js (2135 lines)"}, "properties": {"repobilityId": "20bae41ba1adc47c", "scanner": "scanner-primary", "fingerprint": "d60a67a5ab8b5777", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e2d46ad2512ae3d5", "level": "note", "message": {"text": "Very large file: static/js/memory.js (1418 lines)"}, "properties": {"repobilityId": "5dd8d7f0d74b7948", "scanner": "scanner-primary", "fingerprint": "e2d46ad2512ae3d5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d9b4925bff680b93", "level": "note", "message": {"text": "Very large file: static/js/ui.js (1288 lines)"}, "properties": {"repobilityId": "d65a0157c4918ecf", "scanner": "scanner-primary", "fingerprint": "d9b4925bff680b93", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2bf0652ddf08bad8", "level": "note", "message": {"text": "Very large file: static/js/emailLibrary.js (5217 lines)"}, "properties": {"repobilityId": "6ff41ff9cc1f4980", "scanner": "scanner-primary", "fingerprint": "2bf0652ddf08bad8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d31d1d0994c3eadf", "level": "note", "message": {"text": "Very large file: static/js/slashCommands.js (6099 lines)"}, "properties": {"repobilityId": "34c925588c8564cb", "scanner": "scanner-primary", "fingerprint": "d31d1d0994c3eadf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a76eb0d070694a7f", "level": "note", "message": {"text": "Very large file: static/js/chat.js (4567 lines)"}, "properties": {"repobilityId": "f4e7a876f7ee6f63", "scanner": "scanner-primary", "fingerprint": "a76eb0d070694a7f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-13913f227628ba73", "level": "note", "message": {"text": "Very large file: static/js/gallery.js (2835 lines)"}, "properties": {"repobilityId": "04c717e4e278f937", "scanner": "scanner-primary", "fingerprint": "13913f227628ba73", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4377b458f5c7846e", "level": "note", "message": {"text": "Very large file: static/js/cookbookRunning.js (3537 lines)"}, "properties": {"repobilityId": "e4c9aa16b8ae623e", "scanner": "scanner-primary", "fingerprint": "4377b458f5c7846e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7c9ddedde04d9891", "level": "note", "message": {"text": "Very large file: static/js/skills.js (1908 lines)"}, "properties": {"repobilityId": "d7dd3faad9c8d12a", "scanner": "scanner-primary", "fingerprint": "7c9ddedde04d9891", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8166747ac3d45d71", "level": "note", "message": {"text": "Very large file: static/js/sessions.js (3108 lines)"}, "properties": {"repobilityId": "0ab17ba89aef738f", "scanner": "scanner-primary", "fingerprint": "8166747ac3d45d71", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d1aa6439d9e71aa4", "level": "note", "message": {"text": "Very large file: static/js/tasks.js (2699 lines)"}, "properties": {"repobilityId": "5136205a32b319d7", "scanner": "scanner-primary", "fingerprint": "d1aa6439d9e71aa4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0fe8e505c3d26088", "level": "note", "message": {"text": "Very large file: static/js/cookbook-hwfit.js (1888 lines)"}, "properties": {"repobilityId": "2b116842168b731c", "scanner": "scanner-primary", "fingerprint": "0fe8e505c3d26088", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8ff9cc64a211134c", "level": "note", "message": {"text": "Very large file: static/js/notes.js (5054 lines)"}, "properties": {"repobilityId": "b918f5ea9da9b7e0", "scanner": "scanner-primary", "fingerprint": "8ff9cc64a211134c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4ee0679ff56f3e62", "level": "note", "message": {"text": "Very large file: static/js/theme.js (2135 lines)"}, "properties": {"repobilityId": "f349b4eaf59a3b76", "scanner": "scanner-primary", "fingerprint": "4ee0679ff56f3e62", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7397b68057c66f88", "level": "note", "message": {"text": "Very large file: static/js/cookbook.js (2093 lines)"}, "properties": {"repobilityId": "1486b1f3703e4b12", "scanner": "scanner-primary", "fingerprint": "7397b68057c66f88", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-52daca3adbb935e8", "level": "note", "message": {"text": "Very large file: static/js/chatRenderer.js (2294 lines)"}, "properties": {"repobilityId": "c1497005461f1c4b", "scanner": "scanner-primary", "fingerprint": "52daca3adbb935e8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5edd98cc3f023e1f", "level": "note", "message": {"text": "Very large file: static/js/calendar.js (3349 lines)"}, "properties": {"repobilityId": "e6017690b716e021", "scanner": "scanner-primary", "fingerprint": "5edd98cc3f023e1f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-59e25937bda244ab", "level": "note", "message": {"text": "Very large file: static/js/cookbookServe.js (2128 lines)"}, "properties": {"repobilityId": "39845fa39ad3234c", "scanner": "scanner-primary", "fingerprint": "59e25937bda244ab", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-439b157282d93025", "level": "note", "message": {"text": "Very large file: static/js/research/panel.js (1233 lines)"}, "properties": {"repobilityId": "230e5e7405d1b6b9", "scanner": "scanner-primary", "fingerprint": "439b157282d93025", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-46858f847593e25f", "level": "note", "message": {"text": "Very large file: static/js/compare/index.js (1482 lines)"}, "properties": {"repobilityId": "742027a7eddb54dd", "scanner": "scanner-primary", "fingerprint": "46858f847593e25f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c26317e519f4e2ba", "level": "note", "message": {"text": "Very large file: static/js/compare/selector.js (1335 lines)"}, "properties": {"repobilityId": "12ed2c703eaab5ee", "scanner": "scanner-primary", "fingerprint": "c26317e519f4e2ba", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-43dc98d1524de01b", "level": "note", "message": {"text": "Very large file: static/lib/highlight.min.js (1212 lines)"}, "properties": {"repobilityId": "1e8b7ac21c05a8c3", "scanner": "scanner-primary", "fingerprint": "43dc98d1524de01b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d5e82676eaa28671", "level": "note", "message": {"text": "Very large file: static/lib/docx.umd.min.js (20116 lines)"}, "properties": {"repobilityId": "35f462cdf0cac5c1", "scanner": "scanner-primary", "fingerprint": "d5e82676eaa28671", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-608bfa812c698476", "level": "note", "message": {"text": "Very large file: routes/gallery_routes.py (1810 lines)"}, "properties": {"repobilityId": "c97860af97cd20d3", "scanner": "scanner-primary", "fingerprint": "608bfa812c698476", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9374ec81b83777fb", "level": "note", "message": {"text": "Very large file: routes/cookbook_routes.py (2209 lines)"}, "properties": {"repobilityId": "67ba2d31c136448b", "scanner": "scanner-primary", "fingerprint": "9374ec81b83777fb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b55d0e24a8c2e1e5", "level": "note", "message": {"text": "Very large file: routes/email_routes.py (3212 lines)"}, "properties": {"repobilityId": "60c9257ffcce92fb", "scanner": "scanner-primary", "fingerprint": "b55d0e24a8c2e1e5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-673f3a437f799223", "level": "note", "message": {"text": "Very large file: routes/email_pollers.py (1128 lines)"}, "properties": {"repobilityId": "1e45c7bdb6d9e3f3", "scanner": "scanner-primary", "fingerprint": "673f3a437f799223", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2929b359f6275004", "level": "note", "message": {"text": "Very large file: routes/session_routes.py (1242 lines)"}, "properties": {"repobilityId": "22ffc0ded8ac5f1a", "scanner": "scanner-primary", "fingerprint": "2929b359f6275004", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d083a991224fe0bd", "level": "note", "message": {"text": "Very large file: routes/model_routes.py (2082 lines)"}, "properties": {"repobilityId": "5180b17106495f8a", "scanner": "scanner-primary", "fingerprint": "d083a991224fe0bd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7030e9ee8b95d594", "level": "note", "message": {"text": "Very large file: routes/skills_routes.py (1542 lines)"}, "properties": {"repobilityId": "910853798a0c432a", "scanner": "scanner-primary", "fingerprint": "7030e9ee8b95d594", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d54932a0c44e69ba", "level": "note", "message": {"text": "Very large file: routes/document_routes.py (1688 lines)"}, "properties": {"repobilityId": "7e231d1fd0b30570", "scanner": "scanner-primary", "fingerprint": "d54932a0c44e69ba", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ad80f178b3a839b0", "level": "note", "message": {"text": "Very large file: routes/email_helpers.py (1390 lines)"}, "properties": {"repobilityId": "ff531ed34bab82fb", "scanner": "scanner-primary", "fingerprint": "ad80f178b3a839b0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-566b3d1740bfbdbc", "level": "note", "message": {"text": "Very large file: routes/chat_routes.py (1323 lines)"}, "properties": {"repobilityId": "b0626109994df6e7", "scanner": "scanner-primary", "fingerprint": "566b3d1740bfbdbc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-deb8f0c1acaa3341", "level": "note", "message": {"text": "Very large file: routes/calendar_routes.py (1341 lines)"}, "properties": {"repobilityId": "d24072209797164b", "scanner": "scanner-primary", "fingerprint": "deb8f0c1acaa3341", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-96a8bde0735b2f8f", "level": "note", "message": {"text": "Very large file: core/database.py (1933 lines)"}, "properties": {"repobilityId": "94ac5fbaad5e77b2", "scanner": "scanner-primary", "fingerprint": "96a8bde0735b2f8f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-90c1b21a270b9707", "level": "note", "message": {"text": "Very large file: mcp_servers/email_server.py (1609 lines)"}, "properties": {"repobilityId": "b8cd06651cbf1037", "scanner": "scanner-primary", "fingerprint": "90c1b21a270b9707", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-333431b0425b7044", "level": "note", "message": {"text": "Very large file: src/task_scheduler.py (2282 lines)"}, "properties": {"repobilityId": "0c896bbf14706b76", "scanner": "scanner-primary", "fingerprint": "333431b0425b7044", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-dbde8db3df870687", "level": "note", "message": {"text": "Very large file: src/tool_schemas.py (1236 lines)"}, "properties": {"repobilityId": "c2102e4d3187aacf", "scanner": "scanner-primary", "fingerprint": "dbde8db3df870687", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6e670f641ce824fa", "level": "note", "message": {"text": "Very large file: src/tool_implementations.py (4144 lines)"}, "properties": {"repobilityId": "9745a8c6bb762731", "scanner": "scanner-primary", "fingerprint": "6e670f641ce824fa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-edc7beb1ebfabed9", "level": "note", "message": {"text": "Very large file: src/llm_core.py (1603 lines)"}, "properties": {"repobilityId": "96f0222cc0500292", "scanner": "scanner-primary", "fingerprint": "edc7beb1ebfabed9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-13df7b5d548071df", "level": "note", "message": {"text": "Very large file: src/builtin_actions.py (2043 lines)"}, "properties": {"repobilityId": "5e33501b2f7c28dd", "scanner": "scanner-primary", "fingerprint": "13df7b5d548071df", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-87770dbf2196257a", "level": "note", "message": {"text": "Very large file: src/agent_loop.py (2329 lines)"}, "properties": {"repobilityId": "c44f52f8fb9b5ce6", "scanner": "scanner-primary", "fingerprint": "87770dbf2196257a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e22c11596c9aea4f", "level": "note", "message": {"text": "Very large file: src/visual_report.py (1918 lines)"}, "properties": {"repobilityId": "062e2acfad45fad9", "scanner": "scanner-primary", "fingerprint": "e22c11596c9aea4f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f7d7e7d1a24bc1ac", "level": "note", "message": {"text": "Very large file: src/ai_interaction.py (1824 lines)"}, "properties": {"repobilityId": "0f224411c05cfa02", "scanner": "scanner-primary", "fingerprint": "f7d7e7d1a24bc1ac", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d53e6fc6e96b42a4", "level": "note", "message": {"text": "43 TODO/FIXME markers"}, "properties": {"repobilityId": "4b38c118003e07d2", "scanner": "scanner-primary", "fingerprint": "d53e6fc6e96b42a4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["maintenance"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "cfbd85604c843084", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "1584b56e4265d767", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "e721a04d3dfe822d", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "0b67ca2f4d5bca07", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "9ffed36ca5928282", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-9ade3e41df41446b", "level": "none", "message": {"text": "Commented-code block (5 lines) in app.py:21"}, "properties": {"repobilityId": "5cdfb0def95ab1be", "scanner": "scanner-primary", "fingerprint": "9ade3e41df41446b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e4d38cda93a3c2ce", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/test_security_regressions.py:802"}, "properties": {"repobilityId": "be5cfb5a5b00b1b8", "scanner": "scanner-primary", "fingerprint": "e4d38cda93a3c2ce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dccef5ed993c259e", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/test_email_polly_imap_leak.py:44"}, "properties": {"repobilityId": "1594bdf02602986f", "scanner": "scanner-primary", "fingerprint": "dccef5ed993c259e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f7e787d09f8fa599", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/conftest.py:10"}, "properties": {"repobilityId": "122176c70e02e0af", "scanner": "scanner-primary", "fingerprint": "f7e787d09f8fa599", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-13746101840c2456", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/test_blind_compare_redaction.py:27"}, "properties": {"repobilityId": "c52b4c5f01c79b6d", "scanner": "scanner-primary", "fingerprint": "13746101840c2456", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-827b951ce1692ae6", "level": "note", "message": {"text": "Legacy-named symbol `anthropic_v1` in tests/test_provider_endpoints.py:44"}, "properties": {"repobilityId": "209b17915f64627e", "scanner": "scanner-primary", "fingerprint": "827b951ce1692ae6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3752f9c081d2e314", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/test_skills_manager_owner_isolation.py:83"}, "properties": {"repobilityId": "86f0e7519dfc30b0", "scanner": "scanner-primary", "fingerprint": "3752f9c081d2e314", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c197849c87a865d6", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_webhook_ssrf_resilience.py:5"}, "properties": {"repobilityId": "e29b90c67a8032d1", "scanner": "scanner-primary", "fingerprint": "c197849c87a865d6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d3b0eede300087e", "level": "note", "message": {"text": "Legacy-named symbol `test_localhost_v1` in tests/test_ollama_port_detection.py:31"}, "properties": {"repobilityId": "07cadd8983c74b0f", "scanner": "scanner-primary", "fingerprint": "7d3b0eede300087e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6ed36920e316e11b", "level": "note", "message": {"text": "Legacy-named symbol `test_anthropic_v1_base_does_not_double_v1` in tests/test_endpoint_resolver.py:147"}, "properties": {"repobilityId": "8493672e23b8d95d", "scanner": "scanner-primary", "fingerprint": "6ed36920e316e11b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3a64366541838e9b", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/test_session_ghost_delete.py:26"}, "properties": {"repobilityId": "16deca0c9ff415ef", "scanner": "scanner-primary", "fingerprint": "3a64366541838e9b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b5c70568de04cbea", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_upload_handler_atomicity.py:184"}, "properties": {"repobilityId": "a276c5863ad19a86", "scanner": "scanner-primary", "fingerprint": "b5c70568de04cbea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-79ceea2dde36d46e", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/test_companion_pairing.py:38"}, "properties": {"repobilityId": "54b058027056b7e6", "scanner": "scanner-primary", "fingerprint": "79ceea2dde36d46e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a05680ce9b77189a", "level": "note", "message": {"text": "Legacy-named symbol `JPG_backup` in tests/test_upload_id_extension.py:18"}, "properties": {"repobilityId": "5cf006a9f508193b", "scanner": "scanner-primary", "fingerprint": "a05680ce9b77189a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-15c09181b1cf7d15", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/test_null_owner_gates.py:21"}, "properties": {"repobilityId": "0e3e8432e9ce95e8", "scanner": "scanner-primary", "fingerprint": "15c09181b1cf7d15", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0f4696b7b84c2d48", "level": "none", "message": {"text": "Commented-code block (8 lines) in tests/test_task_scheduler_session_delivery.py:34"}, "properties": {"repobilityId": "63cec5f7d04840fe", "scanner": "scanner-primary", "fingerprint": "0f4696b7b84c2d48", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16534473b3ad0ef0", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_compare_endpoint_owner_scope.py:23"}, "properties": {"repobilityId": "631e9fa02d1eb9cc", "scanner": "scanner-primary", "fingerprint": "16534473b3ad0ef0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-88d370731dd90215", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/test_split_chunks_no_duplicate_tail.py:17"}, "properties": {"repobilityId": "b530ad5b528591b8", "scanner": "scanner-primary", "fingerprint": "88d370731dd90215", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-95ba19b6562ca092", "level": "note", "message": {"text": "Legacy-named symbol `test_anthropic_probe_does_not_double_v1` in tests/test_model_routes.py:410"}, "properties": {"repobilityId": "7afbbd1aebab8fd1", "scanner": "scanner-primary", "fingerprint": "95ba19b6562ca092", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9e7ec085db31f66a", "level": "none", "message": {"text": "Commented-code block (9 lines) in tests/test_auth_event_loop.py:23"}, "properties": {"repobilityId": "3bab170e69298515", "scanner": "scanner-primary", "fingerprint": "9e7ec085db31f66a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d79a246e6c6d61c", "level": "none", "message": {"text": "Commented-code block (9 lines) in static/sw.js:1"}, "properties": {"repobilityId": "c6d999d103402873", "scanner": "scanner-primary", "fingerprint": "4d79a246e6c6d61c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e5f8f27e702cfe6c", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/app.js:33"}, "properties": {"repobilityId": "8204d2594c32c5c4", "scanner": "scanner-primary", "fingerprint": "e5f8f27e702cfe6c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5e00f21e9f96160d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/app.js:381"}, "properties": {"repobilityId": "13c5cf11e4da5e51", "scanner": "scanner-primary", "fingerprint": "5e00f21e9f96160d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-775f00f01c8f9f69", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/colorPicker.js:1"}, "properties": {"repobilityId": "3868f8431f67019a", "scanner": "scanner-primary", "fingerprint": "775f00f01c8f9f69", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-591fab2959580651", "level": "none", "message": {"text": "Commented-code block (7 lines) in static/js/settings.js:2179"}, "properties": {"repobilityId": "e21283f2e28d08b4", "scanner": "scanner-primary", "fingerprint": "591fab2959580651", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-86f767ce352ae9be", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/settings.js:170"}, "properties": {"repobilityId": "6c714ad0b0296f57", "scanner": "scanner-primary", "fingerprint": "86f767ce352ae9be", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-00534997331e9087", "level": "none", "message": {"text": "Commented-code block (6 lines) in static/js/a11y.js:3"}, "properties": {"repobilityId": "4e0c381bc1a10403", "scanner": "scanner-primary", "fingerprint": "00534997331e9087", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a87f4bd25c9da2a6", "level": "none", "message": {"text": "Commented-code block (9 lines) in static/js/group.js:622"}, "properties": {"repobilityId": "841fd0f15983d1de", "scanner": "scanner-primary", "fingerprint": "a87f4bd25c9da2a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5488baf7554a9c79", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/group.js:186"}, "properties": {"repobilityId": "acf5557f45058f93", "scanner": "scanner-primary", "fingerprint": "5488baf7554a9c79", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e66248deb8208117", "level": "none", "message": {"text": "Commented-code block (6 lines) in static/js/presets.js:804"}, "properties": {"repobilityId": "3098aaa61378d883", "scanner": "scanner-primary", "fingerprint": "e66248deb8208117", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d64ba68309d21980", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/presets.js:415"}, "properties": {"repobilityId": "40b96b6a046a20ec", "scanner": "scanner-primary", "fingerprint": "d64ba68309d21980", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8d3e4df8fc4eed3c", "level": "none", "message": {"text": "Commented-code block (7 lines) in static/js/emailInbox.js:93"}, "properties": {"repobilityId": "d73e05e9b90ad466", "scanner": "scanner-primary", "fingerprint": "8d3e4df8fc4eed3c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-26d742868db0dec5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/emailInbox.js:688"}, "properties": {"repobilityId": "96e83fb249d33387", "scanner": "scanner-primary", "fingerprint": "26d742868db0dec5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d44014e6c61b4d22", "level": "none", "message": {"text": "Commented-code block (8 lines) in static/js/documentLibrary.js:477"}, "properties": {"repobilityId": "2dfb24ab0c2373f6", "scanner": "scanner-primary", "fingerprint": "d44014e6c61b4d22", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1b07713096d7d8e6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/documentLibrary.js:1017"}, "properties": {"repobilityId": "4d976a59d2ad2f98", "scanner": "scanner-primary", "fingerprint": "1b07713096d7d8e6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6bd3de7326ef71a7", "level": "note", "message": {"text": "Legacy-named symbol `chunkOld` in static/js/document.js:7538"}, "properties": {"repobilityId": "e8da0a27c505d731", "scanner": "scanner-primary", "fingerprint": "6bd3de7326ef71a7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5c07dbc4f903cd07", "level": "none", "message": {"text": "Commented-code block (6 lines) in static/js/document.js:1384"}, "properties": {"repobilityId": "3907b454f6af5cd1", "scanner": "scanner-primary", "fingerprint": "5c07dbc4f903cd07", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a00029a0be26d254", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/document.js:2991"}, "properties": {"repobilityId": "a133b674516d66d7", "scanner": "scanner-primary", "fingerprint": "a00029a0be26d254", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-668d26cbbf2fe548", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/modalManager.js:59"}, "properties": {"repobilityId": "4bf10506602a82a5", "scanner": "scanner-primary", "fingerprint": "668d26cbbf2fe548", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2541984c2663234", "level": "none", "message": {"text": "Commented-code block (9 lines) in static/js/galleryEditor.js:156"}, "properties": {"repobilityId": "a715958bd875b0e0", "scanner": "scanner-primary", "fingerprint": "f2541984c2663234", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d8011c64214f810", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/galleryEditor.js:806"}, "properties": {"repobilityId": "e2c5195453fafe72", "scanner": "scanner-primary", "fingerprint": "8d8011c64214f810", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bf1584d0887d3b3d", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/sidebar-layout.js:110"}, "properties": {"repobilityId": "9af51f09bed32bb8", "scanner": "scanner-primary", "fingerprint": "bf1584d0887d3b3d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2ef7e526f3260414", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/tourHints.js:1"}, "properties": {"repobilityId": "cbf787463f0fc842", "scanner": "scanner-primary", "fingerprint": "2ef7e526f3260414", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-13c6d9ed63758c42", "level": "note", "message": {"text": "Legacy-named symbol `listLegacy` in static/js/admin.js:371"}, "properties": {"repobilityId": "2a7c91d5362d4d43", "scanner": "scanner-primary", "fingerprint": "13c6d9ed63758c42", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-faf077ca5c9d9078", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/admin.js:191"}, "properties": {"repobilityId": "411bd22ec096009a", "scanner": "scanner-primary", "fingerprint": "faf077ca5c9d9078", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4133b82a9a86b44a", "level": "none", "message": {"text": "Commented-code block (6 lines) in static/js/escMenuStack.js:64"}, "properties": {"repobilityId": "abc0118615ec9c10", "scanner": "scanner-primary", "fingerprint": "4133b82a9a86b44a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8fe1db1e1d9a752", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/cookbookDownload.js:1"}, "properties": {"repobilityId": "bee5c850424cefc9", "scanner": "scanner-primary", "fingerprint": "c8fe1db1e1d9a752", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b70b8be3ed3d6875", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/cookbookDownload.js:553"}, "properties": {"repobilityId": "b7bd4a5658cf6b5a", "scanner": "scanner-primary", "fingerprint": "b70b8be3ed3d6875", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b21ba222f8f48425", "level": "none", "message": {"text": "Commented-code block (9 lines) in static/js/modalSnap.js:3"}, "properties": {"repobilityId": "f02f29ae98a89d95", "scanner": "scanner-primary", "fingerprint": "b21ba222f8f48425", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be89bf266f74a6dd", "level": "none", "message": {"text": "Commented-code block (9 lines) in static/js/tileManager.js:173"}, "properties": {"repobilityId": "4c5fc66104eafe37", "scanner": "scanner-primary", "fingerprint": "be89bf266f74a6dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c997f7bfca7fd451", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/memory.js:437"}, "properties": {"repobilityId": "7ac20d512c24b9ef", "scanner": "scanner-primary", "fingerprint": "c997f7bfca7fd451", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-99d8f34121e83739", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/fileHandler.js:174"}, "properties": {"repobilityId": "a2ae4a3d1ed046d6", "scanner": "scanner-primary", "fingerprint": "99d8f34121e83739", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9fae1dac7f5ab677", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/chatStream.js:138"}, "properties": {"repobilityId": "d6d8dfbc284e869b", "scanner": "scanner-primary", "fingerprint": "9fae1dac7f5ab677", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fc95fbbd2eda530f", "level": "none", "message": {"text": "Commented-code block (6 lines) in static/js/ui.js:236"}, "properties": {"repobilityId": "2c0bcf06cb81e187", "scanner": "scanner-primary", "fingerprint": "fc95fbbd2eda530f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-901ca9e6c4e6333c", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/emailLibrary.js:546"}, "properties": {"repobilityId": "4b5d0fe95e652a42", "scanner": "scanner-primary", "fingerprint": "901ca9e6c4e6333c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-becbe147b10af91c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/emailLibrary.js:1693"}, "properties": {"repobilityId": "2821daec032ae438", "scanner": "scanner-primary", "fingerprint": "becbe147b10af91c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a8dfb3799180fe0a", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/slashAutocomplete.js:10"}, "properties": {"repobilityId": "961a1542e1dbc707", "scanner": "scanner-primary", "fingerprint": "a8dfb3799180fe0a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d0cf9a320e494854", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/slashCommands.js:1852"}, "properties": {"repobilityId": "28cf76ef0714aaf6", "scanner": "scanner-primary", "fingerprint": "d0cf9a320e494854", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-96220258d48c4564", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/slashCommands.js:583"}, "properties": {"repobilityId": "60c63271a596f368", "scanner": "scanner-primary", "fingerprint": "96220258d48c4564", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9802b57f1a7793bc", "level": "none", "message": {"text": "Commented-code block (6 lines) in static/js/chat.js:31"}, "properties": {"repobilityId": "d18efd6da52d590c", "scanner": "scanner-primary", "fingerprint": "9802b57f1a7793bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62dbe781ad77de2f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/chat.js:690"}, "properties": {"repobilityId": "75814b7351f00f64", "scanner": "scanner-primary", "fingerprint": "62dbe781ad77de2f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8256b9373435d781", "level": "none", "message": {"text": "Commented-code block (30 lines) in static/js/windowDrag.js:8"}, "properties": {"repobilityId": "eab46ecfd43e1a0a", "scanner": "scanner-primary", "fingerprint": "8256b9373435d781", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9717afc2a11b395d", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/emojiPicker.js:273"}, "properties": {"repobilityId": "01772822c63c9c80", "scanner": "scanner-primary", "fingerprint": "9717afc2a11b395d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0fe65cf35efc0baf", "level": "note", "message": {"text": "Legacy-named symbol `addCopyBtn_unused` in static/js/codeRunner.js:93"}, "properties": {"repobilityId": "b81bf13aa5ff6eae", "scanner": "scanner-primary", "fingerprint": "0fe65cf35efc0baf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2cbc61da260ea3df", "level": "none", "message": {"text": "Commented-code block (9 lines) in static/js/keyboard-shortcuts.js:64"}, "properties": {"repobilityId": "e1c8512965c5fc36", "scanner": "scanner-primary", "fingerprint": "2cbc61da260ea3df", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-95c4e25e9fa13b37", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/keyboard-shortcuts.js:188"}, "properties": {"repobilityId": "b0ea7928630187d4", "scanner": "scanner-primary", "fingerprint": "95c4e25e9fa13b37", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-13eb48058e84eaff", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/gallery.js:822"}, "properties": {"repobilityId": "adeb5ecea619bb6f", "scanner": "scanner-primary", "fingerprint": "13eb48058e84eaff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c6a836f5a9c49291", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/gallery.js:700"}, "properties": {"repobilityId": "11f67ee106159002", "scanner": "scanner-primary", "fingerprint": "c6a836f5a9c49291", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9628169a7c8e036c", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/signature.js:9"}, "properties": {"repobilityId": "3323d520f9998380", "scanner": "scanner-primary", "fingerprint": "9628169a7c8e036c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30da5c94512c6b02", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/signature.js:315"}, "properties": {"repobilityId": "faf1bd25645ad1a3", "scanner": "scanner-primary", "fingerprint": "30da5c94512c6b02", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1da3d90cf6057cac", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/cookbookRunning.js:1"}, "properties": {"repobilityId": "0b4402de92fbcf6d", "scanner": "scanner-primary", "fingerprint": "1da3d90cf6057cac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8150be25ab44997e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/cookbookRunning.js:378"}, "properties": {"repobilityId": "33cfa2230cdb7e2a", "scanner": "scanner-primary", "fingerprint": "8150be25ab44997e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c9383b9209282e52", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/skills.js:628"}, "properties": {"repobilityId": "dc46ce0a03e42ad4", "scanner": "scanner-primary", "fingerprint": "c9383b9209282e52", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d0cd6412d676b8a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/skills.js:37"}, "properties": {"repobilityId": "d8bbf91ac3adddc7", "scanner": "scanner-primary", "fingerprint": "4d0cd6412d676b8a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-be30a51131d7e08e", "level": "none", "message": {"text": "Commented-code block (9 lines) in static/js/sessions.js:1415"}, "properties": {"repobilityId": "4136d136fb7cf8d1", "scanner": "scanner-primary", "fingerprint": "be30a51131d7e08e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-38fa821f77325666", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/sessions.js:148"}, "properties": {"repobilityId": "a5bb639cd0837f9f", "scanner": "scanner-primary", "fingerprint": "38fa821f77325666", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9c73f315c08e7719", "level": "none", "message": {"text": "Commented-code block (6 lines) in static/js/platform.js:1"}, "properties": {"repobilityId": "63d9f0b5694c8b02", "scanner": "scanner-primary", "fingerprint": "9c73f315c08e7719", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6230f253bc88ffe7", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/windowResize.js:1"}, "properties": {"repobilityId": "c7647e71f93389bc", "scanner": "scanner-primary", "fingerprint": "6230f253bc88ffe7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4c878cdb5cc5b3c", "level": "none", "message": {"text": "Commented-code block (7 lines) in static/js/section-management.js:46"}, "properties": {"repobilityId": "42c378b5fb6ec24b", "scanner": "scanner-primary", "fingerprint": "f4c878cdb5cc5b3c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4fb7aeecb73d9ba8", "level": "none", "message": {"text": "Commented-code block (7 lines) in static/js/init.js:20"}, "properties": {"repobilityId": "a5151d554f7fbc5b", "scanner": "scanner-primary", "fingerprint": "4fb7aeecb73d9ba8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51fc928189b5173b", "level": "none", "message": {"text": "Commented-code block (7 lines) in static/js/tasks.js:833"}, "properties": {"repobilityId": "99a477d45190dcd9", "scanner": "scanner-primary", "fingerprint": "51fc928189b5173b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-50d07ccb2858ee96", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/tasks.js:44"}, "properties": {"repobilityId": "64c8eb2dcbff26f8", "scanner": "scanner-primary", "fingerprint": "50d07ccb2858ee96", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f86e67faf163c884", "level": "note", "message": {"text": "Legacy-named symbol `hwfit_scan_cache_v1` in static/js/cookbook-hwfit.js:234"}, "properties": {"repobilityId": "3765abe6202c34d7", "scanner": "scanner-primary", "fingerprint": "f86e67faf163c884", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-74dbfa5fa2b11478", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/cookbook-hwfit.js:73"}, "properties": {"repobilityId": "a7910b83e2077883", "scanner": "scanner-primary", "fingerprint": "74dbfa5fa2b11478", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0e78001f27edcea3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/cookbook-hwfit.js:472"}, "properties": {"repobilityId": "35203d3de6fc8aac", "scanner": "scanner-primary", "fingerprint": "0e78001f27edcea3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0e42e7fbdb561b3e", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/notes.js:667"}, "properties": {"repobilityId": "dffe3036f669a325", "scanner": "scanner-primary", "fingerprint": "0e42e7fbdb561b3e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e400264065c005f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/notes.js:412"}, "properties": {"repobilityId": "dac744e5376c8603", "scanner": "scanner-primary", "fingerprint": "3e400264065c005f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9fd662838dcff6c3", "level": "note", "message": {"text": "Legacy-named symbol `saveNameInputOld` in static/js/theme.js:915"}, "properties": {"repobilityId": "6c0742fb9c7da92b", "scanner": "scanner-primary", "fingerprint": "9fd662838dcff6c3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3bd49b148157ad46", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/theme.js:562"}, "properties": {"repobilityId": "bb401ca13ca4b4a5", "scanner": "scanner-primary", "fingerprint": "3bd49b148157ad46", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d8790405f668e8e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/theme.js:1157"}, "properties": {"repobilityId": "c363a9f7c8d69381", "scanner": "scanner-primary", "fingerprint": "4d8790405f668e8e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-543e0d6a41dc6ad0", "level": "note", "message": {"text": "Legacy-named symbol `cookbook_dl_tab_folded_v1` in static/js/cookbook.js:1253"}, "properties": {"repobilityId": "3bc6e8aa4e97d6b8", "scanner": "scanner-primary", "fingerprint": "543e0d6a41dc6ad0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e16e6b6a5f13522c", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/cookbook.js:39"}, "properties": {"repobilityId": "0e13d85435617209", "scanner": "scanner-primary", "fingerprint": "e16e6b6a5f13522c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d1e7e339853b8b15", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/cookbook.js:617"}, "properties": {"repobilityId": "3f5395effdd06e54", "scanner": "scanner-primary", "fingerprint": "d1e7e339853b8b15", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-83003d8524007954", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/chatRenderer.js:258"}, "properties": {"repobilityId": "023f4ac2ffbab44b", "scanner": "scanner-primary", "fingerprint": "83003d8524007954", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc49428250207acc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/chatRenderer.js:301"}, "properties": {"repobilityId": "bb17a063d294e51b", "scanner": "scanner-primary", "fingerprint": "bc49428250207acc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c2d624c7af361071", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/tts-ai.js:44"}, "properties": {"repobilityId": "d343ca714a654903", "scanner": "scanner-primary", "fingerprint": "c2d624c7af361071", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-52e2b5b60c28d587", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/calendar.js:243"}, "properties": {"repobilityId": "b06a6a23ba6654ef", "scanner": "scanner-primary", "fingerprint": "52e2b5b60c28d587", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4aa67a683bb409bd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/calendar.js:120"}, "properties": {"repobilityId": "b193b36ed85e1572", "scanner": "scanner-primary", "fingerprint": "4aa67a683bb409bd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-87a7cb2058bdda7a", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/cookbookServe.js:1"}, "properties": {"repobilityId": "f8f037cf5e6b265a", "scanner": "scanner-primary", "fingerprint": "87a7cb2058bdda7a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e09f45c8a4a9d04c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/cookbookServe.js:139"}, "properties": {"repobilityId": "fc22d04372ed9fe2", "scanner": "scanner-primary", "fingerprint": "e09f45c8a4a9d04c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b753af5951b1388c", "level": "none", "message": {"text": "Commented-code block (8 lines) in static/js/markdown.js:214"}, "properties": {"repobilityId": "cbf078ae908a09c5", "scanner": "scanner-primary", "fingerprint": "b753af5951b1388c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3c2a4e5e479178d7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/research/jobs.js:72"}, "properties": {"repobilityId": "3c008fc320cda1c7", "scanner": "scanner-primary", "fingerprint": "3c2a4e5e479178d7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-94935e555325b8ed", "level": "none", "message": {"text": "Commented-code block (8 lines) in static/js/editor/wire-topbar.js:78"}, "properties": {"repobilityId": "4205f30861d393df", "scanner": "scanner-primary", "fingerprint": "94935e555325b8ed", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a40df5297a6ab4ea", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/editor/keyboard-shortcuts.js:129"}, "properties": {"repobilityId": "ff02a5bdbdd14c67", "scanner": "scanner-primary", "fingerprint": "a40df5297a6ab4ea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-894d40dd9f251f98", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/editor/ai-tools-misc.js:176"}, "properties": {"repobilityId": "5f5c145d28d27e2c", "scanner": "scanner-primary", "fingerprint": "894d40dd9f251f98", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-282c91b05ec387e5", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/editor/stroke-pipeline.js:84"}, "properties": {"repobilityId": "d18cdebdfe813a5d", "scanner": "scanner-primary", "fingerprint": "282c91b05ec387e5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-74cb3833edd6143b", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/editor/canvas-events.js:137"}, "properties": {"repobilityId": "07b877c1986c3c76", "scanner": "scanner-primary", "fingerprint": "74cb3833edd6143b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bd8bc17b3d4d0053", "level": "none", "message": {"text": "Commented-code block (6 lines) in static/js/editor/ai-inpaint.js:123"}, "properties": {"repobilityId": "dc789d9c47641c52", "scanner": "scanner-primary", "fingerprint": "bd8bc17b3d4d0053", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0eaad851dede7452", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/editor/ai-inpaint.js:139"}, "properties": {"repobilityId": "b82188170328a9cb", "scanner": "scanner-primary", "fingerprint": "0eaad851dede7452", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ef43694981e0b735", "level": "none", "message": {"text": "Commented-code block (6 lines) in static/js/editor/fx/adj-popup.js:107"}, "properties": {"repobilityId": "604c7577c9e86f92", "scanner": "scanner-primary", "fingerprint": "ef43694981e0b735", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b2189cecb68e3edd", "level": "none", "message": {"text": "Commented-code block (7 lines) in static/js/editor/tools/transform-handles.js:51"}, "properties": {"repobilityId": "623ad8cccf16b817", "scanner": "scanner-primary", "fingerprint": "b2189cecb68e3edd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7f8ce784751fafc5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/compare/models.js:57"}, "properties": {"repobilityId": "f5fbaa8e41fef435", "scanner": "scanner-primary", "fingerprint": "7f8ce784751fafc5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-49c357da2c61f656", "level": "none", "message": {"text": "Commented-code block (6 lines) in static/js/compare/stream.js:222"}, "properties": {"repobilityId": "77c43bbb8e2a1dde", "scanner": "scanner-primary", "fingerprint": "49c357da2c61f656", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bce59933b3f8ac39", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/compare/stream.js:84"}, "properties": {"repobilityId": "f148e0f29a74e0e7", "scanner": "scanner-primary", "fingerprint": "bce59933b3f8ac39", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6356496c2f132d80", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/compare/probe.js:45"}, "properties": {"repobilityId": "735e8cfdc4e0e0ea", "scanner": "scanner-primary", "fingerprint": "6356496c2f132d80", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-17d1fd747169c64d", "level": "none", "message": {"text": "Commented-code block (9 lines) in static/js/compare/index.js:545"}, "properties": {"repobilityId": "5ce3d851927cc65a", "scanner": "scanner-primary", "fingerprint": "17d1fd747169c64d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac0d3bcb0424842d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/compare/index.js:222"}, "properties": {"repobilityId": "6eb48e4d86ec8e4d", "scanner": "scanner-primary", "fingerprint": "ac0d3bcb0424842d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-17893fb294e8545b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/compare/panes.js:393"}, "properties": {"repobilityId": "eb036cccfa60e78a", "scanner": "scanner-primary", "fingerprint": "17893fb294e8545b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1bea18f46bccad60", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/compare/selector.js:967"}, "properties": {"repobilityId": "20847a9e7201974e", "scanner": "scanner-primary", "fingerprint": "1bea18f46bccad60", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d215fb634617eecc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/js/compare/selector.js:1009"}, "properties": {"repobilityId": "feb9afe4039f04ee", "scanner": "scanner-primary", "fingerprint": "d215fb634617eecc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-46d657c92fc1ea43", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/emailLibrary/replyRecipients.js:15"}, "properties": {"repobilityId": "c028d106e81cbd32", "scanner": "scanner-primary", "fingerprint": "46d657c92fc1ea43", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b279677820d392f", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/emailLibrary/utils.js:6"}, "properties": {"repobilityId": "bd35b652f9533538", "scanner": "scanner-primary", "fingerprint": "4b279677820d392f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6737995f6105cd57", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/emailLibrary/state.js:3"}, "properties": {"repobilityId": "b404156fade3c756", "scanner": "scanner-primary", "fingerprint": "6737995f6105cd57", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3615f224241e9636", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/emailLibrary/signatureFold.js:7"}, "properties": {"repobilityId": "0ee9f41e26114272", "scanner": "scanner-primary", "fingerprint": "3615f224241e9636", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e764191d6e4a71a6", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/js/calendar/reminders.js:3"}, "properties": {"repobilityId": "60c4f322b400086d", "scanner": "scanner-primary", "fingerprint": "e764191d6e4a71a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0412061cf5b33aae", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/lib/html2pdf.bundle.min.js:2"}, "properties": {"repobilityId": "51132a4070ad9d48", "scanner": "scanner-primary", "fingerprint": "0412061cf5b33aae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9b75ce07be3ea502", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/add_hwfit_models.py:269"}, "properties": {"repobilityId": "962f0a712a84d506", "scanner": "scanner-primary", "fingerprint": "9b75ce07be3ea502", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b6bc66d6251abe58", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/diffusion_server.py:801"}, "properties": {"repobilityId": "ecc63fcb019709cb", "scanner": "scanner-primary", "fingerprint": "b6bc66d6251abe58", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4a662bbf5d20518", "level": "note", "message": {"text": "Stub function `set_postfix` (body is just `pass`/`return`) \u2014 scripts/hf_download.py:96"}, "properties": {"repobilityId": "956f5ba5ea236fcc", "scanner": "scanner-primary", "fingerprint": "d4a662bbf5d20518", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-5a99d2c584e51960", "level": "none", "message": {"text": "Commented-code block (6 lines) in routes/gallery_routes.py:829"}, "properties": {"repobilityId": "8ffc7596ff710a3e", "scanner": "scanner-primary", "fingerprint": "5a99d2c584e51960", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a767fba748bf5f66", "level": "none", "message": {"text": "Commented-code block (5 lines) in routes/cookbook_routes.py:441"}, "properties": {"repobilityId": "2fad7c39526baf32", "scanner": "scanner-primary", "fingerprint": "a767fba748bf5f66", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ffa4d817b604eccd", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 routes/cookbook_routes.py:381"}, "properties": {"repobilityId": "fa6ab60d3f253419", "scanner": "scanner-primary", "fingerprint": "ffa4d817b604eccd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e8b797e8aea5e832", "level": "none", "message": {"text": "Commented-code block (5 lines) in routes/shell_routes.py:17"}, "properties": {"repobilityId": "6196eadfddd8c04f", "scanner": "scanner-primary", "fingerprint": "e8b797e8aea5e832", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be86ce32febdb1e3", "level": "none", "message": {"text": "Commented-code block (6 lines) in routes/contacts_routes.py:133"}, "properties": {"repobilityId": "94e8e286e5769931", "scanner": "scanner-primary", "fingerprint": "be86ce32febdb1e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-070f09bedd5139d3", "level": "none", "message": {"text": "Commented-code block (7 lines) in routes/memory_routes.py:388"}, "properties": {"repobilityId": "8b4f126d3d26694e", "scanner": "scanner-primary", "fingerprint": "070f09bedd5139d3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d4515e0a1479056", "level": "none", "message": {"text": "Commented-code block (12 lines) in routes/email_routes.py:463"}, "properties": {"repobilityId": "74dd394234446207", "scanner": "scanner-primary", "fingerprint": "7d4515e0a1479056", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d41acc5391955be0", "level": "none", "message": {"text": "Commented-code block (6 lines) in routes/cookbook_helpers.py:229"}, "properties": {"repobilityId": "0ecd05969ad0326b", "scanner": "scanner-primary", "fingerprint": "d41acc5391955be0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-761d66b182636ec0", "level": "none", "message": {"text": "Commented-code block (5 lines) in routes/email_pollers.py:191"}, "properties": {"repobilityId": "0eeaa96c51c8d76b", "scanner": "scanner-primary", "fingerprint": "761d66b182636ec0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b7c79b0e3b36336c", "level": "none", "message": {"text": "Commented-code block (9 lines) in routes/session_routes.py:191"}, "properties": {"repobilityId": "a6168abec8ae2fff", "scanner": "scanner-primary", "fingerprint": "b7c79b0e3b36336c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d8b8d7244d29ca20", "level": "none", "message": {"text": "Commented-code block (6 lines) in routes/model_routes.py:269"}, "properties": {"repobilityId": "cd1be54880023e0a", "scanner": "scanner-primary", "fingerprint": "d8b8d7244d29ca20", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bad98b6e18faa4fc", "level": "none", "message": {"text": "Commented-code block (5 lines) in routes/prefs_routes.py:48"}, "properties": {"repobilityId": "62a31834f86d2b80", "scanner": "scanner-primary", "fingerprint": "bad98b6e18faa4fc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-87ae9f780f339146", "level": "none", "message": {"text": "Commented-code block (6 lines) in routes/note_routes.py:200"}, "properties": {"repobilityId": "335bee3f33ec730b", "scanner": "scanner-primary", "fingerprint": "87ae9f780f339146", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f9c4d066b721a38", "level": "none", "message": {"text": "Commented-code block (5 lines) in routes/auth_routes.py:514"}, "properties": {"repobilityId": "255775dc2c8f1e83", "scanner": "scanner-primary", "fingerprint": "3f9c4d066b721a38", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d99ef21f9ec58c5", "level": "none", "message": {"text": "Commented-code block (6 lines) in routes/document_routes.py:75"}, "properties": {"repobilityId": "e4b6d5a1b6f54dba", "scanner": "scanner-primary", "fingerprint": "5d99ef21f9ec58c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-59030ae7496c4754", "level": "none", "message": {"text": "Commented-code block (5 lines) in routes/email_helpers.py:328"}, "properties": {"repobilityId": "341a99f8bbdfde61", "scanner": "scanner-primary", "fingerprint": "59030ae7496c4754", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d2884189d489be23", "level": "note", "message": {"text": "Legacy-named symbol `msgs_to_copy` in routes/history_routes.py:464"}, "properties": {"repobilityId": "fefb0b5ee5199b0d", "scanner": "scanner-primary", "fingerprint": "d2884189d489be23", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9cad05b7f069f386", "level": "none", "message": {"text": "Commented-code block (12 lines) in routes/emoji_routes.py:1"}, "properties": {"repobilityId": "ae8f9ab9617c6e27", "scanner": "scanner-primary", "fingerprint": "9cad05b7f069f386", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-110deed796879c0e", "level": "none", "message": {"text": "Commented-code block (7 lines) in routes/chat_routes.py:401"}, "properties": {"repobilityId": "b2c8f257bdca05ed", "scanner": "scanner-primary", "fingerprint": "110deed796879c0e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d099a9abb1f507a", "level": "none", "message": {"text": "Commented-code block (6 lines) in routes/calendar_routes.py:36"}, "properties": {"repobilityId": "e669131af70dcc64", "scanner": "scanner-primary", "fingerprint": "4d099a9abb1f507a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cfb151a601f70579", "level": "none", "message": {"text": "Commented-code block (5 lines) in routes/chat_helpers.py:159"}, "properties": {"repobilityId": "cebe006104d4675f", "scanner": "scanner-primary", "fingerprint": "cfb151a601f70579", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-655216e63ac019f9", "level": "none", "message": {"text": "Commented-code block (6 lines) in routes/upload_routes.py:29"}, "properties": {"repobilityId": "295206f2ccaca83c", "scanner": "scanner-primary", "fingerprint": "655216e63ac019f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-64b691f35ba6ef8c", "level": "none", "message": {"text": "Commented-code block (6 lines) in routes/task_routes.py:748"}, "properties": {"repobilityId": "86e1347ec5bb7d41", "scanner": "scanner-primary", "fingerprint": "64b691f35ba6ef8c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4d414eb3f38c2ef", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 routes/task_routes.py:329"}, "properties": {"repobilityId": "6545274452425795", "scanner": "scanner-primary", "fingerprint": "f4d414eb3f38c2ef", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0c81dfb35325031a", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/hwfit/hardware.py:121"}, "properties": {"repobilityId": "5a21abda8ab79a8d", "scanner": "scanner-primary", "fingerprint": "0c81dfb35325031a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa7c8e49f92d337b", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/hwfit/fit.py:311"}, "properties": {"repobilityId": "d3759a06bb5d6b46", "scanner": "scanner-primary", "fingerprint": "fa7c8e49f92d337b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6236a63596fcb14c", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/hwfit/models.py:164"}, "properties": {"repobilityId": "a2406c8e5db21433", "scanner": "scanner-primary", "fingerprint": "6236a63596fcb14c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5daa5bb9e8117916", "level": "note", "message": {"text": "Legacy-named symbol `days_old` in services/search/ranking.py:40"}, "properties": {"repobilityId": "beb00a27809b19cf", "scanner": "scanner-primary", "fingerprint": "5daa5bb9e8117916", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ea7e01267f4fd1bd", "level": "note", "message": {"text": "Legacy-named symbol `body_copy` in services/search/content.py:334"}, "properties": {"repobilityId": "1d945f636ba1ead8", "scanner": "scanner-primary", "fingerprint": "ea7e01267f4fd1bd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a6f8e98fb9c5494a", "level": "none", "message": {"text": "Commented-code block (10 lines) in services/search/providers.py:145"}, "properties": {"repobilityId": "f0cfb35fdf69da1d", "scanner": "scanner-primary", "fingerprint": "a6f8e98fb9c5494a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3c6e0651867292c7", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/search/service.py:66"}, "properties": {"repobilityId": "e4ae52f7223adabc", "scanner": "scanner-primary", "fingerprint": "3c6e0651867292c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e494d5152b5f7b98", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/memory/skills.py:282"}, "properties": {"repobilityId": "1b258771df37f9f3", "scanner": "scanner-primary", "fingerprint": "e494d5152b5f7b98", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a567ad206c29cdcd", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/memory/memory_extractor.py:335"}, "properties": {"repobilityId": "e032b66fddfe4277", "scanner": "scanner-primary", "fingerprint": "a567ad206c29cdcd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4f9b3397847d61b", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/memory/skill_extractor.py:160"}, "properties": {"repobilityId": "0db6064e4d5202b5", "scanner": "scanner-primary", "fingerprint": "f4f9b3397847d61b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e5c55862afac5d7b", "level": "none", "message": {"text": "Commented-code block (8 lines) in services/stt/stt_service.py:68"}, "properties": {"repobilityId": "848971200731eff2", "scanner": "scanner-primary", "fingerprint": "e5c55862afac5d7b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6456625b3a12fd22", "level": "none", "message": {"text": "Commented-code block (5 lines) in core/database.py:110"}, "properties": {"repobilityId": "f791da797b457f9d", "scanner": "scanner-primary", "fingerprint": "6456625b3a12fd22", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f77a77cb2290833", "level": "note", "message": {"text": "Legacy-named symbol `archived_old` in core/session_manager.py:615"}, "properties": {"repobilityId": "5a89f278781e2ec5", "scanner": "scanner-primary", "fingerprint": "4f77a77cb2290833", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5d678c42a223212f", "level": "none", "message": {"text": "Commented-code block (6 lines) in core/session_manager.py:307"}, "properties": {"repobilityId": "e456a36c5bfe4cb7", "scanner": "scanner-primary", "fingerprint": "5d678c42a223212f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3d6292ce24743cd1", "level": "none", "message": {"text": "Commented-code block (14 lines) in core/auth.py:43"}, "properties": {"repobilityId": "3374ca41aa15ffc6", "scanner": "scanner-primary", "fingerprint": "3d6292ce24743cd1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e00630055ce6e799", "level": "none", "message": {"text": "Commented-code block (6 lines) in core/middleware.py:84"}, "properties": {"repobilityId": "5aefc957d381d577", "scanner": "scanner-primary", "fingerprint": "e00630055ce6e799", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-92d5fe8f591f0477", "level": "none", "message": {"text": "Commented-code block (5 lines) in mcp_servers/email_server.py:44"}, "properties": {"repobilityId": "d2c565ba83c5261c", "scanner": "scanner-primary", "fingerprint": "92d5fe8f591f0477", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f6a4716e48cd791", "level": "none", "message": {"text": "Commented-code block (5 lines) in .github/scripts/check-pr-description.js:89"}, "properties": {"repobilityId": "2b160bcf8a4cb4d2", "scanner": "scanner-primary", "fingerprint": "5f6a4716e48cd791", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1733be936255007a", "level": "none", "message": {"text": "Commented-code block (5 lines) in .github/scripts/check-issue-description.js:125"}, "properties": {"repobilityId": "5b526cf6074fe4c0", "scanner": "scanner-primary", "fingerprint": "1733be936255007a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aae755c77bf8655c", "level": "note", "message": {"text": "Legacy-named symbol `days_old` in src/chat_processor.py:140"}, "properties": {"repobilityId": "c2397531d86b6b8b", "scanner": "scanner-primary", "fingerprint": "aae755c77bf8655c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-56afa60ceefe988a", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/chat_processor.py:287"}, "properties": {"repobilityId": "86b19188dad4b724", "scanner": "scanner-primary", "fingerprint": "56afa60ceefe988a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3c4efb27f45bc5da", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/context_compactor.py:232"}, "properties": {"repobilityId": "0259d58b40bfcec1", "scanner": "scanner-primary", "fingerprint": "3c4efb27f45bc5da", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2b914b3176631baf", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/task_scheduler.py:20"}, "properties": {"repobilityId": "67733fdf9ac7414d", "scanner": "scanner-primary", "fingerprint": "2b914b3176631baf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-375ce09640765022", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/tool_index.py:27"}, "properties": {"repobilityId": "04f5167f3deeb636", "scanner": "scanner-primary", "fingerprint": "375ce09640765022", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4dd96fb10e62f631", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/email_thread_parser.py:68"}, "properties": {"repobilityId": "646c4d78e55ce35a", "scanner": "scanner-primary", "fingerprint": "4dd96fb10e62f631", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c41b82022a86ce2e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/tool_implementations.py:1665"}, "properties": {"repobilityId": "65f53e1cd6348490", "scanner": "scanner-primary", "fingerprint": "c41b82022a86ce2e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7487104d0c6e0a95", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/auth_helpers.py:66"}, "properties": {"repobilityId": "111ad7c9f6c187ca", "scanner": "scanner-primary", "fingerprint": "7487104d0c6e0a95", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f60935ff06906768", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/bg_jobs.py:92"}, "properties": {"repobilityId": "d547190bf8029e7e", "scanner": "scanner-primary", "fingerprint": "f60935ff06906768", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a893c1835b549b08", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 src/bg_jobs.py:131"}, "properties": {"repobilityId": "2bc1e92ee63046fd", "scanner": "scanner-primary", "fingerprint": "a893c1835b549b08", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f1c49a88cbd440fb", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/upload_handler.py:79"}, "properties": {"repobilityId": "4d1fdb65d8dd7b50", "scanner": "scanner-primary", "fingerprint": "f1c49a88cbd440fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-28749e6c0b06fab0", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/deep_research.py:577"}, "properties": {"repobilityId": "352c6f3a0f8db540", "scanner": "scanner-primary", "fingerprint": "28749e6c0b06fab0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-03eb5fc6fb0819c5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/agent_tools.py:45"}, "properties": {"repobilityId": "e802c7ae6ed1a8f6", "scanner": "scanner-primary", "fingerprint": "03eb5fc6fb0819c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8fd9dbf316a262ec", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/config.py:7"}, "properties": {"repobilityId": "68783c22dcda70e6", "scanner": "scanner-primary", "fingerprint": "8fd9dbf316a262ec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-87a6b5aa53a71a56", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/personal_docs.py:267"}, "properties": {"repobilityId": "2dd88a5a60f4b3ef", "scanner": "scanner-primary", "fingerprint": "87a6b5aa53a71a56", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-45a6ba192d94befb", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/youtube_handler.py:210"}, "properties": {"repobilityId": "d43d43d3221b9098", "scanner": "scanner-primary", "fingerprint": "45a6ba192d94befb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-326b4248f2d4a8f8", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/chat_handler.py:188"}, "properties": {"repobilityId": "d9d5452a749d1fe3", "scanner": "scanner-primary", "fingerprint": "326b4248f2d4a8f8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7ee2a77f3c01f813", "level": "note", "message": {"text": "Legacy-named symbol `_migrate_from_legacy` in src/memory.py:125"}, "properties": {"repobilityId": "2ee74222926fa17a", "scanner": "scanner-primary", "fingerprint": "7ee2a77f3c01f813", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9ccd4bdcee424924", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/memory.py:64"}, "properties": {"repobilityId": "bcd845ebb72f3532", "scanner": "scanner-primary", "fingerprint": "9ccd4bdcee424924", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bae4f83d3399c8bd", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/research_handler.py:91"}, "properties": {"repobilityId": "396867e6f72515a4", "scanner": "scanner-primary", "fingerprint": "bae4f83d3399c8bd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-304660d6b1a455a1", "level": "note", "message": {"text": "Legacy-named symbol `last_copy` in src/llm_core.py:714"}, "properties": {"repobilityId": "726313590d14dde3", "scanner": "scanner-primary", "fingerprint": "304660d6b1a455a1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9c9197ebddd631b5", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/llm_core.py:51"}, "properties": {"repobilityId": "bc329e3eb1bf5dd3", "scanner": "scanner-primary", "fingerprint": "9c9197ebddd631b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9ee9422a4c1dcf2d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/event_bus.py:99"}, "properties": {"repobilityId": "5072922785c4d3a8", "scanner": "scanner-primary", "fingerprint": "9ee9422a4c1dcf2d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-42e8b5711f333e85", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/tool_execution.py:161"}, "properties": {"repobilityId": "0f88e841a86bd785", "scanner": "scanner-primary", "fingerprint": "42e8b5711f333e85", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-48170b1ee821d760", "level": "none", "message": {"text": "Commented-code block (11 lines) in src/builtin_mcp.py:132"}, "properties": {"repobilityId": "c5d5d04da2d50b59", "scanner": "scanner-primary", "fingerprint": "48170b1ee821d760", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9934469878e4ad09", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/builtin_actions.py:1182"}, "properties": {"repobilityId": "80f75715473f9806", "scanner": "scanner-primary", "fingerprint": "9934469878e4ad09", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c725e24791289a61", "level": "none", "message": {"text": "Commented-code block (13 lines) in src/tool_parsing.py:57"}, "properties": {"repobilityId": "c10738a13236b34f", "scanner": "scanner-primary", "fingerprint": "c725e24791289a61", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-42f79fd2f5db03b7", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/pdf_forms.py:298"}, "properties": {"repobilityId": "35a0142253c77312", "scanner": "scanner-primary", "fingerprint": "42f79fd2f5db03b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed8b432a4e423404", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/preset_manager.py:98"}, "properties": {"repobilityId": "21db67b8924c2a17", "scanner": "scanner-primary", "fingerprint": "ed8b432a4e423404", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-27b1184c130c8e28", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/agent_loop.py:449"}, "properties": {"repobilityId": "683f0b537dff087b", "scanner": "scanner-primary", "fingerprint": "27b1184c130c8e28", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-32362a407e43f3e5", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/visual_report.py:32"}, "properties": {"repobilityId": "90d6620fa75c85d1", "scanner": "scanner-primary", "fingerprint": "32362a407e43f3e5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-12bd09a693e52c58", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/settings.py:58"}, "properties": {"repobilityId": "628f3e241a6924c4", "scanner": "scanner-primary", "fingerprint": "12bd09a693e52c58", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3790bcb4c7ae6dae", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/pdf_form_doc.py:97"}, "properties": {"repobilityId": "1d2a3fc9285b5608", "scanner": "scanner-primary", "fingerprint": "3790bcb4c7ae6dae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b68eddf9524daaa", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/bg_monitor.py:113"}, "properties": {"repobilityId": "fc00ccfa2d597acf", "scanner": "scanner-primary", "fingerprint": "0b68eddf9524daaa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a5f0e07e771b2ca5", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/teacher_escalation.py:126"}, "properties": {"repobilityId": "be9175023f14e6f4", "scanner": "scanner-primary", "fingerprint": "a5f0e07e771b2ca5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b685858d8ffcfe77", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/embeddings.py:17"}, "properties": {"repobilityId": "787df81771575783", "scanner": "scanner-primary", "fingerprint": "b685858d8ffcfe77", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18e874fa92eb87b8", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/endpoint_resolver.py:19"}, "properties": {"repobilityId": "a19e8ed90ba7012a", "scanner": "scanner-primary", "fingerprint": "18e874fa92eb87b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-743bff5bcacedf27", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/chat_helpers.py:41"}, "properties": {"repobilityId": "0c14d53fa5edaf31", "scanner": "scanner-primary", "fingerprint": "743bff5bcacedf27", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-37878f01b2201ed9", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/document_processor.py:447"}, "properties": {"repobilityId": "acbc370447152bf8", "scanner": "scanner-primary", "fingerprint": "37878f01b2201ed9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed7be3f4cd2a005a", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/ai_interaction.py:716"}, "properties": {"repobilityId": "dffbf421c367ea95", "scanner": "scanner-primary", "fingerprint": "ed7be3f4cd2a005a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f538f79f9ee244ef", "level": "error", "message": {"text": "Blocking `httpx.get(...)` inside `async def do_list_models` \u2014 src/ai_interaction.py:1131"}, "properties": {"repobilityId": "b1a5696df4c3f99a", "scanner": "scanner-primary", "fingerprint": "f538f79f9ee244ef", "layer": "quality", "severity": "high", "confidence": 1.0, "tags": ["integrity", "sync-io-in-async", "performance"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ai_interaction.py"}, "region": {"startLine": 1131}}}]}, {"ruleId": "scanner-f845adee2c65a341", "level": "error", "message": {"text": "Blocking `httpx.get(...)` inside `async def do_generate_image` \u2014 src/ai_interaction.py:1729"}, "properties": {"repobilityId": "b592d2673245d367", "scanner": "scanner-primary", "fingerprint": "f845adee2c65a341", "layer": "quality", "severity": "high", "confidence": 1.0, "tags": ["integrity", "sync-io-in-async", "performance"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/ai_interaction.py"}, "region": {"startLine": 1729}}}]}, {"ruleId": "scanner-ddcc7fe267debbe3", "level": "note", "message": {"text": "Legacy-named symbol `body_copy` in src/search/content.py:341"}, "properties": {"repobilityId": "2c3c108da95d4047", "scanner": "scanner-primary", "fingerprint": "ddcc7fe267debbe3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-df0afc1f01418874", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/search/content.py:328"}, "properties": {"repobilityId": "cc0acf04446fea31", "scanner": "scanner-primary", "fingerprint": "df0afc1f01418874", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d9605dfafce61a4a", "level": "note", "message": {"text": "91 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "50ea28f4aae045c4", "scanner": "scanner-primary", "fingerprint": "d9605dfafce61a4a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "c77a1e77d46022a1", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "026e0ac0a5790832", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "da2b198c11b2d7a5", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "168e03e8dfdd9cc2", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "3abd77a24c6d0c81", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "b4b51b8b6e19b5f5", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "fe631651531cabee", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "d12bef328d6bc163", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "f910e622890b1d57", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "791d6e3ef40c70e5", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "77be5e8d537dbfa0", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "cdb50f0678486656", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "47fc2455e213f835", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-33a6b62e30ce7ab4", "level": "note", "message": {"text": "Near-duplicate function bodies in 6 places"}, "properties": {"repobilityId": "0723531d77851b43", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-33a6b62e30ce7ab4", "level": "note", "message": {"text": "Near-duplicate function bodies in 6 places"}, "properties": {"repobilityId": "83149250fe98331b", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "83d30b9b2dbfb8c4", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "2826625295eaa049", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "efff1779a942cf75", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "78edecef57d936e1", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "4d035801c26f6058", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-9e797351ad71f680", "level": "error", "message": {"text": "FastAPI POST `pair_create` without auth dependency \u2014 companion/routes.py:175"}, "properties": {"repobilityId": "bda6568d7efbede4", "scanner": "scanner-primary", "fingerprint": "9e797351ad71f680", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "companion/routes.py"}, "region": {"startLine": 175}}}]}, {"ruleId": "scanner-a1294cbd2d69c94f", "level": "error", "message": {"text": "FastAPI POST `generate_image` without auth dependency \u2014 scripts/diffusion_server.py:421"}, "properties": {"repobilityId": "8933bffe89914284", "scanner": "scanner-primary", "fingerprint": "a1294cbd2d69c94f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/diffusion_server.py"}, "region": {"startLine": 421}}}]}, {"ruleId": "scanner-cc99ec91c8713b86", "level": "error", "message": {"text": "FastAPI POST `inpaint_image` without auth dependency \u2014 scripts/diffusion_server.py:584"}, "properties": {"repobilityId": "1dbdbe636373ac63", "scanner": "scanner-primary", "fingerprint": "cc99ec91c8713b86", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/diffusion_server.py"}, "region": {"startLine": 584}}}]}, {"ruleId": "scanner-a770960e84b90756", "level": "error", "message": {"text": "FastAPI POST `harmonize_image` without auth dependency \u2014 scripts/diffusion_server.py:917"}, "properties": {"repobilityId": "af8d9f8cdd357146", "scanner": "scanner-primary", "fingerprint": "a770960e84b90756", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/diffusion_server.py"}, "region": {"startLine": 917}}}]}, {"ruleId": "scanner-e87e2867fa04de51", "level": "error", "message": {"text": "FastAPI POST `gallery_upload` without auth dependency \u2014 routes/gallery_routes.py:39"}, "properties": {"repobilityId": "07fafde3e9fa8e53", "scanner": "scanner-primary", "fingerprint": "e87e2867fa04de51", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-16fbab9d3ccb6aa8", "level": "error", "message": {"text": "FastAPI POST `gallery_replace` without auth dependency \u2014 routes/gallery_routes.py:118"}, "properties": {"repobilityId": "44f9fc23fc725a1a", "scanner": "scanner-primary", "fingerprint": "16fbab9d3ccb6aa8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 118}}}]}, {"ruleId": "scanner-d69a549cca69a0ae", "level": "error", "message": {"text": "FastAPI POST `gallery_rename` without auth dependency \u2014 routes/gallery_routes.py:163"}, "properties": {"repobilityId": "34af1a846fee1e40", "scanner": "scanner-primary", "fingerprint": "d69a549cca69a0ae", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 163}}}]}, {"ruleId": "scanner-54f8c5847a19a00e", "level": "error", "message": {"text": "FastAPI POST `gallery_rotate` without auth dependency \u2014 routes/gallery_routes.py:189"}, "properties": {"repobilityId": "11cd10ad92b253ea", "scanner": "scanner-primary", "fingerprint": "54f8c5847a19a00e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 189}}}]}, {"ruleId": "scanner-53d1c092b48978a7", "level": "error", "message": {"text": "FastAPI POST `gallery_ai_upscale` without auth dependency \u2014 routes/gallery_routes.py:246"}, "properties": {"repobilityId": "8622d76403d54785", "scanner": "scanner-primary", "fingerprint": "53d1c092b48978a7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 246}}}]}, {"ruleId": "scanner-d2f4f9fbb067df47", "level": "error", "message": {"text": "FastAPI POST `gallery_style_transfer` without auth dependency \u2014 routes/gallery_routes.py:289"}, "properties": {"repobilityId": "f3bcfd76483e4a96", "scanner": "scanner-primary", "fingerprint": "d2f4f9fbb067df47", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 289}}}]}, {"ruleId": "scanner-b6edb400931ace5d", "level": "error", "message": {"text": "FastAPI POST `create_album` without auth dependency \u2014 routes/gallery_routes.py:531"}, "properties": {"repobilityId": "e1ac396d7f48ac8d", "scanner": "scanner-primary", "fingerprint": "b6edb400931ace5d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 531}}}]}, {"ruleId": "scanner-82c45d4a9066e931", "level": "error", "message": {"text": "FastAPI POST `ai_tag_batch` without auth dependency \u2014 routes/gallery_routes.py:579"}, "properties": {"repobilityId": "68d0f73f2b8a98fe", "scanner": "scanner-primary", "fingerprint": "82c45d4a9066e931", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 579}}}]}, {"ruleId": "scanner-deec17f3a317f7a7", "level": "error", "message": {"text": "FastAPI PATCH `patch_gallery_image` without auth dependency \u2014 routes/gallery_routes.py:624"}, "properties": {"repobilityId": "a5ff154b600f1af7", "scanner": "scanner-primary", "fingerprint": "deec17f3a317f7a7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 624}}}]}, {"ruleId": "scanner-f662aedceff38c8d", "level": "error", "message": {"text": "FastAPI POST `gallery_download_zip` without auth dependency \u2014 routes/gallery_routes.py:668"}, "properties": {"repobilityId": "ad4511c8eb69edaa", "scanner": "scanner-primary", "fingerprint": "f662aedceff38c8d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 668}}}]}, {"ruleId": "scanner-66af7953eae94e8e", "level": "error", "message": {"text": "FastAPI POST `clear_gallery_user_tags` without auth dependency \u2014 routes/gallery_routes.py:723"}, "properties": {"repobilityId": "23bd01f5a240e9d8", "scanner": "scanner-primary", "fingerprint": "66af7953eae94e8e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 723}}}]}, {"ruleId": "scanner-fb5afe59a4a134c8", "level": "error", "message": {"text": "FastAPI POST `clear_gallery_ai_tags` without auth dependency \u2014 routes/gallery_routes.py:747"}, "properties": {"repobilityId": "18df272f04c5dedf", "scanner": "scanner-primary", "fingerprint": "fb5afe59a4a134c8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 747}}}]}, {"ruleId": "scanner-ccf52318802ba40d", "level": "error", "message": {"text": "FastAPI POST `dedupe_gallery_tags` without auth dependency \u2014 routes/gallery_routes.py:773"}, "properties": {"repobilityId": "249fcfe85878059d", "scanner": "scanner-primary", "fingerprint": "ccf52318802ba40d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 773}}}]}, {"ruleId": "scanner-b3985724190042c3", "level": "error", "message": {"text": "FastAPI DELETE `delete_gallery_image` without auth dependency \u2014 routes/gallery_routes.py:808"}, "properties": {"repobilityId": "847498f0b2f2ac7c", "scanner": "scanner-primary", "fingerprint": "b3985724190042c3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 808}}}]}, {"ruleId": "scanner-363895332873f3f6", "level": "error", "message": {"text": "FastAPI POST `inpaint_proxy` without auth dependency \u2014 routes/gallery_routes.py:920"}, "properties": {"repobilityId": "748863b2057741bb", "scanner": "scanner-primary", "fingerprint": "363895332873f3f6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 920}}}]}, {"ruleId": "scanner-988c53e5f461f476", "level": "error", "message": {"text": "FastAPI POST `harmonize_image` without auth dependency \u2014 routes/gallery_routes.py:1117"}, "properties": {"repobilityId": "11c626921dc08c98", "scanner": "scanner-primary", "fingerprint": "988c53e5f461f476", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 1117}}}]}, {"ruleId": "scanner-acc86c524db6a9c2", "level": "error", "message": {"text": "FastAPI POST `sharpen_image` without auth dependency \u2014 routes/gallery_routes.py:1316"}, "properties": {"repobilityId": "445e10aa7cc0470d", "scanner": "scanner-primary", "fingerprint": "acc86c524db6a9c2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 1316}}}]}, {"ruleId": "scanner-f82aad53303d8430", "level": "error", "message": {"text": "FastAPI POST `denoise_image` without auth dependency \u2014 routes/gallery_routes.py:1340"}, "properties": {"repobilityId": "2d60bf0263b4e0a4", "scanner": "scanner-primary", "fingerprint": "f82aad53303d8430", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 1340}}}]}, {"ruleId": "scanner-d3d76c31da05474c", "level": "error", "message": {"text": "FastAPI POST `upscale_image_local` without auth dependency \u2014 routes/gallery_routes.py:1390"}, "properties": {"repobilityId": "28cdafc0cd8352c6", "scanner": "scanner-primary", "fingerprint": "d3d76c31da05474c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 1390}}}]}, {"ruleId": "scanner-d96bde9524550fc4", "level": "error", "message": {"text": "FastAPI POST `remove_background` without auth dependency \u2014 routes/gallery_routes.py:1435"}, "properties": {"repobilityId": "86cf46bb2b5f5b1a", "scanner": "scanner-primary", "fingerprint": "d96bde9524550fc4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 1435}}}]}, {"ruleId": "scanner-d79faf6e347db8da", "level": "error", "message": {"text": "FastAPI POST `enhance_face` without auth dependency \u2014 routes/gallery_routes.py:1528"}, "properties": {"repobilityId": "2504750b84250294", "scanner": "scanner-primary", "fingerprint": "d79faf6e347db8da", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 1528}}}]}, {"ruleId": "scanner-37ed748c0a74d716", "level": "error", "message": {"text": "FastAPI PUT `update_album` without auth dependency \u2014 routes/gallery_routes.py:1611"}, "properties": {"repobilityId": "3ccc3796ee3ea2cd", "scanner": "scanner-primary", "fingerprint": "37ed748c0a74d716", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 1611}}}]}, {"ruleId": "scanner-bc54014cb134b9cf", "level": "error", "message": {"text": "FastAPI DELETE `delete_album` without auth dependency \u2014 routes/gallery_routes.py:1632"}, "properties": {"repobilityId": "27c74054ec562d46", "scanner": "scanner-primary", "fingerprint": "bc54014cb134b9cf", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 1632}}}]}, {"ruleId": "scanner-06efee687f75848c", "level": "error", "message": {"text": "FastAPI POST `add_to_album` without auth dependency \u2014 routes/gallery_routes.py:1647"}, "properties": {"repobilityId": "80d075beec078b4a", "scanner": "scanner-primary", "fingerprint": "06efee687f75848c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 1647}}}]}, {"ruleId": "scanner-75d88f40f7496004", "level": "error", "message": {"text": "FastAPI POST `remove_from_album` without auth dependency \u2014 routes/gallery_routes.py:1665"}, "properties": {"repobilityId": "c817d76f25844def", "scanner": "scanner-primary", "fingerprint": "75d88f40f7496004", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 1665}}}]}, {"ruleId": "scanner-b62edc43e1d71d0c", "level": "error", "message": {"text": "FastAPI POST `toggle_favorite` without auth dependency \u2014 routes/gallery_routes.py:1686"}, "properties": {"repobilityId": "31a970acdb295640", "scanner": "scanner-primary", "fingerprint": "b62edc43e1d71d0c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 1686}}}]}, {"ruleId": "scanner-bf44073e8097743c", "level": "error", "message": {"text": "FastAPI POST `ai_tag_image` without auth dependency \u2014 routes/gallery_routes.py:1700"}, "properties": {"repobilityId": "bc0f101819962997", "scanner": "scanner-primary", "fingerprint": "bf44073e8097743c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/gallery_routes.py"}, "region": {"startLine": 1700}}}]}, {"ruleId": "scanner-eaa2ab8e54b8817c", "level": "error", "message": {"text": "FastAPI POST `generate_cookbook_ssh_key` without auth dependency \u2014 routes/cookbook_routes.py:272"}, "properties": {"repobilityId": "d208d02a514e5551", "scanner": "scanner-primary", "fingerprint": "eaa2ab8e54b8817c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/cookbook_routes.py"}, "region": {"startLine": 272}}}]}, {"ruleId": "scanner-0316588f1f0c1501", "level": "error", "message": {"text": "FastAPI POST `model_download` without auth dependency \u2014 routes/cookbook_routes.py:392"}, "properties": {"repobilityId": "3358d2534d631de3", "scanner": "scanner-primary", "fingerprint": "0316588f1f0c1501", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/cookbook_routes.py"}, "region": {"startLine": 392}}}]}, {"ruleId": "scanner-d6f1a9512fe1d813", "level": "error", "message": {"text": "FastAPI POST `model_serve` without auth dependency \u2014 routes/cookbook_routes.py:878"}, "properties": {"repobilityId": "ef6143d40ac1d9e0", "scanner": "scanner-primary", "fingerprint": "d6f1a9512fe1d813", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/cookbook_routes.py"}, "region": {"startLine": 878}}}]}, {"ruleId": "scanner-7f1af5e816ed8881", "level": "error", "message": {"text": "FastAPI POST `server_setup` without auth dependency \u2014 routes/cookbook_routes.py:1265"}, "properties": {"repobilityId": "4c62f82a670a11db", "scanner": "scanner-primary", "fingerprint": "7f1af5e816ed8881", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/cookbook_routes.py"}, "region": {"startLine": 1265}}}]}, {"ruleId": "scanner-1bbb3dbc3b89e19e", "level": "error", "message": {"text": "FastAPI POST `kill_pid` without auth dependency \u2014 routes/cookbook_routes.py:1663"}, "properties": {"repobilityId": "95a32eaff49c87f1", "scanner": "scanner-primary", "fingerprint": "1bbb3dbc3b89e19e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/cookbook_routes.py"}, "region": {"startLine": 1663}}}]}, {"ruleId": "scanner-79dd6088d3ddbef6", "level": "error", "message": {"text": "FastAPI POST `save_cookbook_state` without auth dependency \u2014 routes/cookbook_routes.py:1726"}, "properties": {"repobilityId": "7bc0c02a14097caf", "scanner": "scanner-primary", "fingerprint": "79dd6088d3ddbef6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/cookbook_routes.py"}, "region": {"startLine": 1726}}}]}, {"ruleId": "scanner-bbe18fe7a2c26a43", "level": "error", "message": {"text": "FastAPI POST `shell_exec` without auth dependency \u2014 routes/shell_routes.py:747"}, "properties": {"repobilityId": "152cfccf64167361", "scanner": "scanner-primary", "fingerprint": "bbe18fe7a2c26a43", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/shell_routes.py"}, "region": {"startLine": 747}}}]}, {"ruleId": "scanner-41ee134cd05c2bc9", "level": "error", "message": {"text": "FastAPI POST `shell_stream` without auth dependency \u2014 routes/shell_routes.py:759"}, "properties": {"repobilityId": "1be0b1cb3c4edca9", "scanner": "scanner-primary", "fingerprint": "41ee134cd05c2bc9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/shell_routes.py"}, "region": {"startLine": 759}}}]}, {"ruleId": "scanner-05474c386e6e7f87", "level": "error", "message": {"text": "FastAPI POST `install_package` without auth dependency \u2014 routes/shell_routes.py:1035"}, "properties": {"repobilityId": "c6daa5a7c7b3531b", "scanner": "scanner-primary", "fingerprint": "05474c386e6e7f87", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/shell_routes.py"}, "region": {"startLine": 1035}}}]}, {"ruleId": "scanner-183491be8c2c1368", "level": "error", "message": {"text": "FastAPI POST `rebuild_engine` without auth dependency \u2014 routes/shell_routes.py:1061"}, "properties": {"repobilityId": "eb9428708f889003", "scanner": "scanner-primary", "fingerprint": "183491be8c2c1368", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/shell_routes.py"}, "region": {"startLine": 1061}}}]}, {"ruleId": "scanner-a5db65ffee8057a8", "level": "error", "message": {"text": "FastAPI POST `expand_character_prompt` without auth dependency \u2014 routes/preset_routes.py:71"}, "properties": {"repobilityId": "e250de3b4b226e24", "scanner": "scanner-primary", "fingerprint": "a5db65ffee8057a8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/preset_routes.py"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-accbad5fcdf8ade9", "level": "error", "message": {"text": "FastAPI POST `create_webhook` without auth dependency \u2014 routes/webhook_routes.py:96"}, "properties": {"repobilityId": "8a523a358f81bc7b", "scanner": "scanner-primary", "fingerprint": "accbad5fcdf8ade9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/webhook_routes.py"}, "region": {"startLine": 96}}}]}, {"ruleId": "scanner-3f7969b71446050f", "level": "error", "message": {"text": "FastAPI POST `test_webhook` without auth dependency \u2014 routes/webhook_routes.py:142"}, "properties": {"repobilityId": "650152a83633ebc5", "scanner": "scanner-primary", "fingerprint": "3f7969b71446050f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/webhook_routes.py"}, "region": {"startLine": 142}}}]}, {"ruleId": "scanner-5afb3f5bdca89f9f", "level": "error", "message": {"text": "FastAPI PATCH `toggle_webhook` without auth dependency \u2014 routes/webhook_routes.py:157"}, "properties": {"repobilityId": "6178f54ccb4a962b", "scanner": "scanner-primary", "fingerprint": "5afb3f5bdca89f9f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/webhook_routes.py"}, "region": {"startLine": 157}}}]}, {"ruleId": "scanner-64c8e8d6cf9a2e57", "level": "error", "message": {"text": "FastAPI DELETE `delete_webhook` without auth dependency \u2014 routes/webhook_routes.py:171"}, "properties": {"repobilityId": "5157265e1ed965d7", "scanner": "scanner-primary", "fingerprint": "64c8e8d6cf9a2e57", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/webhook_routes.py"}, "region": {"startLine": 171}}}]}, {"ruleId": "scanner-6e6a0d5da7705774", "level": "error", "message": {"text": "FastAPI POST `sync_chat` without auth dependency \u2014 routes/webhook_routes.py:232"}, "properties": {"repobilityId": "f60029185ed1abdf", "scanner": "scanner-primary", "fingerprint": "6e6a0d5da7705774", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/webhook_routes.py"}, "region": {"startLine": 232}}}]}, {"ruleId": "scanner-21ca0923fb76f595", "level": "error", "message": {"text": "FastAPI DELETE `wipe` without auth dependency \u2014 routes/admin_wipe_routes.py:71"}, "properties": {"repobilityId": "4ab7e814ec42dcf9", "scanner": "scanner-primary", "fingerprint": "21ca0923fb76f595", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/admin_wipe_routes.py"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-d1fc46721dbc3847", "level": "error", "message": {"text": "FastAPI POST `start_comparison` without auth dependency \u2014 routes/compare_routes.py:51"}, "properties": {"repobilityId": "a59b73b3fb989bf9", "scanner": "scanner-primary", "fingerprint": "d1fc46721dbc3847", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/compare_routes.py"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-24c030f033aea1bb", "level": "error", "message": {"text": "FastAPI POST `vote_comparison` without auth dependency \u2014 routes/compare_routes.py:149"}, "properties": {"repobilityId": "2139e82dcfa4fa2c", "scanner": "scanner-primary", "fingerprint": "24c030f033aea1bb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/compare_routes.py"}, "region": {"startLine": 149}}}]}, {"ruleId": "scanner-a7bd6a1278bdbc36", "level": "error", "message": {"text": "FastAPI POST `record_comparison` without auth dependency \u2014 routes/compare_routes.py:195"}, "properties": {"repobilityId": "826ce8d489ed92a5", "scanner": "scanner-primary", "fingerprint": "a7bd6a1278bdbc36", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/compare_routes.py"}, "region": {"startLine": 195}}}]}, {"ruleId": "scanner-b85f491140a5d618", "level": "error", "message": {"text": "FastAPI DELETE `delete_comparison` without auth dependency \u2014 routes/compare_routes.py:258"}, "properties": {"repobilityId": "17d127257b44af7c", "scanner": "scanner-primary", "fingerprint": "b85f491140a5d618", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/compare_routes.py"}, "region": {"startLine": 258}}}]}, {"ruleId": "scanner-8858dbd183da7ade", "level": "error", "message": {"text": "FastAPI POST `debug_memory_relevance` without auth dependency \u2014 routes/memory_routes.py:69"}, "properties": {"repobilityId": "29dd384b8c966465", "scanner": "scanner-primary", "fingerprint": "8858dbd183da7ade", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/memory_routes.py"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-7df9b2389bf012ef", "level": "error", "message": {"text": "FastAPI POST `api_add_memory` without auth dependency \u2014 routes/memory_routes.py:84"}, "properties": {"repobilityId": "c16073f3f6a83826", "scanner": "scanner-primary", "fingerprint": "7df9b2389bf012ef", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/memory_routes.py"}, "region": {"startLine": 84}}}]}, {"ruleId": "scanner-9b4225bc1d5b3ec9", "level": "error", "message": {"text": "FastAPI POST `search_memories` without auth dependency \u2014 routes/memory_routes.py:131"}, "properties": {"repobilityId": "67e21bf4ed052016", "scanner": "scanner-primary", "fingerprint": "9b4225bc1d5b3ec9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/memory_routes.py"}, "region": {"startLine": 131}}}]}, {"ruleId": "scanner-9578364feed3639f", "level": "error", "message": {"text": "FastAPI POST `extract_memory` without auth dependency \u2014 routes/memory_routes.py:206"}, "properties": {"repobilityId": "c2473f4243db4b96", "scanner": "scanner-primary", "fingerprint": "9578364feed3639f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/memory_routes.py"}, "region": {"startLine": 206}}}]}, {"ruleId": "scanner-8ef9be83eb98ecc3", "level": "error", "message": {"text": "FastAPI POST `api_audit_memories` without auth dependency \u2014 routes/memory_routes.py:252"}, "properties": {"repobilityId": "16c89cfaa01986aa", "scanner": "scanner-primary", "fingerprint": "8ef9be83eb98ecc3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/memory_routes.py"}, "region": {"startLine": 252}}}]}, {"ruleId": "scanner-9d2df84d5c7b8942", "level": "error", "message": {"text": "FastAPI POST `import_memories_from_file` without auth dependency \u2014 routes/memory_routes.py:330"}, "properties": {"repobilityId": "86926d8c35180b6a", "scanner": "scanner-primary", "fingerprint": "9d2df84d5c7b8942", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/memory_routes.py"}, "region": {"startLine": 330}}}]}, {"ruleId": "scanner-a782cceaec54e1f7", "level": "error", "message": {"text": "FastAPI POST `pin_memory` without auth dependency \u2014 routes/memory_routes.py:482"}, "properties": {"repobilityId": "8c09fdaeb7913284", "scanner": "scanner-primary", "fingerprint": "a782cceaec54e1f7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/memory_routes.py"}, "region": {"startLine": 482}}}]}, {"ruleId": "scanner-8e13489f8b966050", "level": "error", "message": {"text": "FastAPI PUT `update_memory` without auth dependency \u2014 routes/memory_routes.py:507"}, "properties": {"repobilityId": "45a269d533601184", "scanner": "scanner-primary", "fingerprint": "8e13489f8b966050", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/memory_routes.py"}, "region": {"startLine": 507}}}]}, {"ruleId": "scanner-308b3d31b838e204", "level": "error", "message": {"text": "FastAPI DELETE `delete_memory` without auth dependency \u2014 routes/memory_routes.py:529"}, "properties": {"repobilityId": "be333adbcc646bd0", "scanner": "scanner-primary", "fingerprint": "308b3d31b838e204", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/memory_routes.py"}, "region": {"startLine": 529}}}]}, {"ruleId": "scanner-b3933d9f06c2e71e", "level": "error", "message": {"text": "FastAPI POST `download_model` without auth dependency \u2014 routes/embedding_routes.py:141"}, "properties": {"repobilityId": "23e90099676712d9", "scanner": "scanner-primary", "fingerprint": "b3933d9f06c2e71e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/embedding_routes.py"}, "region": {"startLine": 141}}}]}, {"ruleId": "scanner-81027478faa49400", "level": "error", "message": {"text": "FastAPI DELETE `delete_model` without auth dependency \u2014 routes/embedding_routes.py:198"}, "properties": {"repobilityId": "6e6df6502db65506", "scanner": "scanner-primary", "fingerprint": "81027478faa49400", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/embedding_routes.py"}, "region": {"startLine": 198}}}]}, {"ruleId": "scanner-bb3bd6e8cbc02ba6", "level": "error", "message": {"text": "FastAPI POST `set_endpoint` without auth dependency \u2014 routes/embedding_routes.py:239"}, "properties": {"repobilityId": "adc0daa5b98ecbe4", "scanner": "scanner-primary", "fingerprint": "bb3bd6e8cbc02ba6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/embedding_routes.py"}, "region": {"startLine": 239}}}]}, {"ruleId": "scanner-71b3972fa07b8b71", "level": "error", "message": {"text": "FastAPI DELETE `clear_endpoint` without auth dependency \u2014 routes/embedding_routes.py:302"}, "properties": {"repobilityId": "a6f85c8f293e34a3", "scanner": "scanner-primary", "fingerprint": "71b3972fa07b8b71", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/embedding_routes.py"}, "region": {"startLine": 302}}}]}, {"ruleId": "scanner-088e9f663f47a156", "level": "error", "message": {"text": "FastAPI POST `upload_files_to_rag` without auth dependency \u2014 routes/personal_routes.py:194"}, "properties": {"repobilityId": "5f9db42153f7fea5", "scanner": "scanner-primary", "fingerprint": "088e9f663f47a156", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/personal_routes.py"}, "region": {"startLine": 194}}}]}, {"ruleId": "scanner-31e50f76ccdf2cde", "level": "error", "message": {"text": "FastAPI POST `create_session` without auth dependency \u2014 routes/session_routes.py:288"}, "properties": {"repobilityId": "767551058459a373", "scanner": "scanner-primary", "fingerprint": "31e50f76ccdf2cde", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/session_routes.py"}, "region": {"startLine": 288}}}]}, {"ruleId": "scanner-bed07c1356c40353", "level": "error", "message": {"text": "FastAPI PATCH `rename_session` without auth dependency \u2014 routes/session_routes.py:409"}, "properties": {"repobilityId": "0fb55ae5c45b570e", "scanner": "scanner-primary", "fingerprint": "bed07c1356c40353", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/session_routes.py"}, "region": {"startLine": 409}}}]}, {"ruleId": "scanner-9e4e6166089355c8", "level": "error", "message": {"text": "FastAPI POST `inject_messages` without auth dependency \u2014 routes/session_routes.py:487"}, "properties": {"repobilityId": "48864ba34c144a5d", "scanner": "scanner-primary", "fingerprint": "9e4e6166089355c8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/session_routes.py"}, "region": {"startLine": 487}}}]}, {"ruleId": "scanner-c5d907a2b7c4aafd", "level": "error", "message": {"text": "FastAPI POST `delete_session_beacon` without auth dependency \u2014 routes/session_routes.py:503"}, "properties": {"repobilityId": "b48f18f277d60613", "scanner": "scanner-primary", "fingerprint": "c5d907a2b7c4aafd", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/session_routes.py"}, "region": {"startLine": 503}}}]}, {"ruleId": "scanner-70caf01516cce85c", "level": "error", "message": {"text": "FastAPI POST `bulk_delete_sessions` without auth dependency \u2014 routes/session_routes.py:508"}, "properties": {"repobilityId": "455a8f3c8a6bd4d9", "scanner": "scanner-primary", "fingerprint": "70caf01516cce85c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/session_routes.py"}, "region": {"startLine": 508}}}]}, {"ruleId": "scanner-3d5309d860ceaaf8", "level": "error", "message": {"text": "FastAPI DELETE `delete_session` without auth dependency \u2014 routes/session_routes.py:534"}, "properties": {"repobilityId": "37d93c6b0904cd89", "scanner": "scanner-primary", "fingerprint": "3d5309d860ceaaf8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/session_routes.py"}, "region": {"startLine": 534}}}]}, {"ruleId": "scanner-5818b731a0de6de4", "level": "error", "message": {"text": "FastAPI DELETE `delete_all_sessions` without auth dependency \u2014 routes/session_routes.py:568"}, "properties": {"repobilityId": "ea10c4f99d6ed52a", "scanner": "scanner-primary", "fingerprint": "5818b731a0de6de4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/session_routes.py"}, "region": {"startLine": 568}}}]}, {"ruleId": "scanner-090650c0e0db2616", "level": "error", "message": {"text": "FastAPI POST `archive_session` without auth dependency \u2014 routes/session_routes.py:591"}, "properties": {"repobilityId": "0a197ea9bdd9c651", "scanner": "scanner-primary", "fingerprint": "090650c0e0db2616", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/session_routes.py"}, "region": {"startLine": 591}}}]}, {"ruleId": "scanner-f983c03e5ea8a919", "level": "error", "message": {"text": "FastAPI POST `unarchive_session` without auth dependency \u2014 routes/session_routes.py:629"}, "properties": {"repobilityId": "bf8656de6b6008e3", "scanner": "scanner-primary", "fingerprint": "f983c03e5ea8a919", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/session_routes.py"}, "region": {"startLine": 629}}}]}, {"ruleId": "scanner-89d9ec296c00f82b", "level": "error", "message": {"text": "FastAPI POST `sessions_save_now` without auth dependency \u2014 routes/session_routes.py:806"}, "properties": {"repobilityId": "83e187d2040d9a9a", "scanner": "scanner-primary", "fingerprint": "89d9ec296c00f82b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/session_routes.py"}, "region": {"startLine": 806}}}]}, {"ruleId": "scanner-674d1e6504257e5d", "level": "error", "message": {"text": "FastAPI POST `create_session_openai` without auth dependency \u2014 routes/session_routes.py:814"}, "properties": {"repobilityId": "05a5b16b8aa80db2", "scanner": "scanner-primary", "fingerprint": "674d1e6504257e5d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/session_routes.py"}, "region": {"startLine": 814}}}]}, {"ruleId": "scanner-91f37808edc2d49d", "level": "error", "message": {"text": "FastAPI POST `mark_session_important` without auth dependency \u2014 routes/session_routes.py:839"}, "properties": {"repobilityId": "6a6f2751a17aaba6", "scanner": "scanner-primary", "fingerprint": "91f37808edc2d49d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/session_routes.py"}, "region": {"startLine": 839}}}]}, {"ruleId": "scanner-660a14342e59de42", "level": "error", "message": {"text": "FastAPI POST `compact_session` without auth dependency \u2014 routes/session_routes.py:876"}, "properties": {"repobilityId": "75dff44747999827", "scanner": "scanner-primary", "fingerprint": "660a14342e59de42", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/session_routes.py"}, "region": {"startLine": 876}}}]}, {"ruleId": "scanner-5ef2b22cad9d8028", "level": "error", "message": {"text": "FastAPI POST `auto_sort_sessions` without auth dependency \u2014 routes/session_routes.py:954"}, "properties": {"repobilityId": "f15f414f73d5c297", "scanner": "scanner-primary", "fingerprint": "5ef2b22cad9d8028", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/session_routes.py"}, "region": {"startLine": 954}}}]}, {"ruleId": "scanner-40c2dd7eca2477b6", "level": "error", "message": {"text": "FastAPI POST `probe_selected` without auth dependency \u2014 routes/model_routes.py:1229"}, "properties": {"repobilityId": "1e0e10897d974625", "scanner": "scanner-primary", "fingerprint": "40c2dd7eca2477b6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/model_routes.py"}, "region": {"startLine": 1229}}}]}, {"ruleId": "scanner-e3ed48d7c43f222d", "level": "error", "message": {"text": "FastAPI POST `create_model_endpoint` without auth dependency \u2014 routes/model_routes.py:1411"}, "properties": {"repobilityId": "130e6cb67a6e4680", "scanner": "scanner-primary", "fingerprint": "e3ed48d7c43f222d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/model_routes.py"}, "region": {"startLine": 1411}}}]}, {"ruleId": "scanner-9a3008f2de2eb2fb", "level": "error", "message": {"text": "FastAPI POST `test_model_endpoint` without auth dependency \u2014 routes/model_routes.py:1603"}, "properties": {"repobilityId": "50435cc0bd69d355", "scanner": "scanner-primary", "fingerprint": "9a3008f2de2eb2fb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/model_routes.py"}, "region": {"startLine": 1603}}}]}, {"ruleId": "scanner-1f5222696e8e546e", "level": "error", "message": {"text": "FastAPI PATCH `update_hidden_models` without auth dependency \u2014 routes/model_routes.py:1735"}, "properties": {"repobilityId": "a0e20dcea56365c3", "scanner": "scanner-primary", "fingerprint": "1f5222696e8e546e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/model_routes.py"}, "region": {"startLine": 1735}}}]}, {"ruleId": "scanner-a777abcd18d9b767", "level": "error", "message": {"text": "FastAPI PATCH `toggle_model_endpoint` without auth dependency \u2014 routes/model_routes.py:1874"}, "properties": {"repobilityId": "504784c0034ad2e1", "scanner": "scanner-primary", "fingerprint": "a777abcd18d9b767", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/model_routes.py"}, "region": {"startLine": 1874}}}]}, {"ruleId": "scanner-4641b201ea9b980a", "level": "error", "message": {"text": "FastAPI DELETE `delete_model_endpoint` without auth dependency \u2014 routes/model_routes.py:2030"}, "properties": {"repobilityId": "4b583a2d771c3a01", "scanner": "scanner-primary", "fingerprint": "4641b201ea9b980a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/model_routes.py"}, "region": {"startLine": 2030}}}]}, {"ruleId": "scanner-2effb7326230800a", "level": "error", "message": {"text": "FastAPI POST `update_tools` without auth dependency \u2014 routes/model_routes.py:2073"}, "properties": {"repobilityId": "78801c0d7ccc3d33", "scanner": "scanner-primary", "fingerprint": "2effb7326230800a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/model_routes.py"}, "region": {"startLine": 2073}}}]}, {"ruleId": "scanner-9f383d74ceda1bed", "level": "error", "message": {"text": "FastAPI PUT `set_builtin_override` without auth dependency \u2014 routes/skills_routes.py:1167"}, "properties": {"repobilityId": "e36cda0033119692", "scanner": "scanner-primary", "fingerprint": "9f383d74ceda1bed", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/skills_routes.py"}, "region": {"startLine": 1167}}}]}, {"ruleId": "scanner-b7ee032d356e6a81", "level": "error", "message": {"text": "FastAPI DELETE `reset_builtin_override` without auth dependency \u2014 routes/skills_routes.py:1193"}, "properties": {"repobilityId": "7760f8ec8cd8f587", "scanner": "scanner-primary", "fingerprint": "b7ee032d356e6a81", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/skills_routes.py"}, "region": {"startLine": 1193}}}]}, {"ruleId": "scanner-f4cdd1f1a9ab53b2", "level": "error", "message": {"text": "FastAPI POST `add_skill` without auth dependency \u2014 routes/skills_routes.py:1206"}, "properties": {"repobilityId": "ee5486b229b12e84", "scanner": "scanner-primary", "fingerprint": "f4cdd1f1a9ab53b2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/skills_routes.py"}, "region": {"startLine": 1206}}}]}, {"ruleId": "scanner-8fa7feffcc02489a", "level": "error", "message": {"text": "FastAPI POST `test_skill` without auth dependency \u2014 routes/skills_routes.py:1263"}, "properties": {"repobilityId": "122fe769e88bd52f", "scanner": "scanner-primary", "fingerprint": "8fa7feffcc02489a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/skills_routes.py"}, "region": {"startLine": 1263}}}]}, {"ruleId": "scanner-9013da3d76503a5c", "level": "error", "message": {"text": "FastAPI POST `audit_all_skills` without auth dependency \u2014 routes/skills_routes.py:1344"}, "properties": {"repobilityId": "f53175fe5c888e0a", "scanner": "scanner-primary", "fingerprint": "9013da3d76503a5c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/skills_routes.py"}, "region": {"startLine": 1344}}}]}, {"ruleId": "scanner-179c1180ed0e4074", "level": "error", "message": {"text": "FastAPI POST `audit_cancel` without auth dependency \u2014 routes/skills_routes.py:1433"}, "properties": {"repobilityId": "fc90a66414461b90", "scanner": "scanner-primary", "fingerprint": "179c1180ed0e4074", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/skills_routes.py"}, "region": {"startLine": 1433}}}]}, {"ruleId": "scanner-ad2e7045ce60ca2f", "level": "error", "message": {"text": "FastAPI POST `save_skill_markdown` without auth dependency \u2014 routes/skills_routes.py:1446"}, "properties": {"repobilityId": "0a096316c010dc43", "scanner": "scanner-primary", "fingerprint": "ad2e7045ce60ca2f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/skills_routes.py"}, "region": {"startLine": 1446}}}]}, {"ruleId": "scanner-a06de52eb657664e", "level": "error", "message": {"text": "FastAPI PUT `update_skill` without auth dependency \u2014 routes/skills_routes.py:1499"}, "properties": {"repobilityId": "3d70b8ca1ae4a40b", "scanner": "scanner-primary", "fingerprint": "a06de52eb657664e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/skills_routes.py"}, "region": {"startLine": 1499}}}]}, {"ruleId": "scanner-49dbf1b7209b3028", "level": "error", "message": {"text": "FastAPI DELETE `delete_skill` without auth dependency \u2014 routes/skills_routes.py:1518"}, "properties": {"repobilityId": "ad16c252a7bab296", "scanner": "scanner-primary", "fingerprint": "49dbf1b7209b3028", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/skills_routes.py"}, "region": {"startLine": 1518}}}]}, {"ruleId": "scanner-65b6c9a729a1baaa", "level": "error", "message": {"text": "FastAPI POST `search_skills` without auth dependency \u2014 routes/skills_routes.py:1531"}, "properties": {"repobilityId": "af80a76de03182c3", "scanner": "scanner-primary", "fingerprint": "65b6c9a729a1baaa", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/skills_routes.py"}, "region": {"startLine": 1531}}}]}, {"ruleId": "scanner-b6a2df04a33383f5", "level": "error", "message": {"text": "FastAPI POST `add_server` without auth dependency \u2014 routes/mcp_routes.py:81"}, "properties": {"repobilityId": "7e7a5980a1747501", "scanner": "scanner-primary", "fingerprint": "b6a2df04a33383f5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/mcp_routes.py"}, "region": {"startLine": 81}}}]}, {"ruleId": "scanner-543606709feb25e4", "level": "error", "message": {"text": "FastAPI POST `reconnect_server` without auth dependency \u2014 routes/mcp_routes.py:201"}, "properties": {"repobilityId": "1c4bdd413869073a", "scanner": "scanner-primary", "fingerprint": "543606709feb25e4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/mcp_routes.py"}, "region": {"startLine": 201}}}]}, {"ruleId": "scanner-1b3c8a77f2d4abbf", "level": "error", "message": {"text": "FastAPI PATCH `toggle_server` without auth dependency \u2014 routes/mcp_routes.py:235"}, "properties": {"repobilityId": "c65b94b6a0879af5", "scanner": "scanner-primary", "fingerprint": "1b3c8a77f2d4abbf", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/mcp_routes.py"}, "region": {"startLine": 235}}}]}, {"ruleId": "scanner-c9ca4b85a1701476", "level": "error", "message": {"text": "FastAPI DELETE `delete_server` without auth dependency \u2014 routes/mcp_routes.py:268"}, "properties": {"repobilityId": "2a019b16dd918aff", "scanner": "scanner-primary", "fingerprint": "c9ca4b85a1701476", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/mcp_routes.py"}, "region": {"startLine": 268}}}]}, {"ruleId": "scanner-2cdda74888f31553", "level": "error", "message": {"text": "FastAPI PATCH `update_disabled_tools` without auth dependency \u2014 routes/mcp_routes.py:313"}, "properties": {"repobilityId": "d3624780642eb4f9", "scanner": "scanner-primary", "fingerprint": "2cdda74888f31553", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/mcp_routes.py"}, "region": {"startLine": 313}}}]}, {"ruleId": "scanner-0b5596573d952775", "level": "error", "message": {"text": "FastAPI PUT `set_pref` without auth dependency \u2014 routes/prefs_routes.py:82"}, "properties": {"repobilityId": "d1e81fd543445576", "scanner": "scanner-primary", "fingerprint": "0b5596573d952775", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/prefs_routes.py"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-b9366fcbdaf03768", "level": "error", "message": {"text": "FastAPI POST `create_signature` without auth dependency \u2014 routes/signature_routes.py:67"}, "properties": {"repobilityId": "cd50bd167dc6f649", "scanner": "scanner-primary", "fingerprint": "b9366fcbdaf03768", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/signature_routes.py"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-d02cdf0948b55e77", "level": "error", "message": {"text": "FastAPI DELETE `delete_signature` without auth dependency \u2014 routes/signature_routes.py:102"}, "properties": {"repobilityId": "e6548c31c46ecafc", "scanner": "scanner-primary", "fingerprint": "d02cdf0948b55e77", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/signature_routes.py"}, "region": {"startLine": 102}}}]}, {"ruleId": "scanner-68693ec2aad6eab9", "level": "error", "message": {"text": "FastAPI POST `create_note` without auth dependency \u2014 routes/note_routes.py:499"}, "properties": {"repobilityId": "a3364f55923209ae", "scanner": "scanner-primary", "fingerprint": "68693ec2aad6eab9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/note_routes.py"}, "region": {"startLine": 499}}}]}, {"ruleId": "scanner-85db4af408654ed4", "level": "error", "message": {"text": "FastAPI PUT `update_note` without auth dependency \u2014 routes/note_routes.py:546"}, "properties": {"repobilityId": "f09bbf5ae10d3fa5", "scanner": "scanner-primary", "fingerprint": "85db4af408654ed4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/note_routes.py"}, "region": {"startLine": 546}}}]}, {"ruleId": "scanner-2e8df021fcafa327", "level": "error", "message": {"text": "FastAPI DELETE `delete_note` without auth dependency \u2014 routes/note_routes.py:594"}, "properties": {"repobilityId": "7412884cff8d092e", "scanner": "scanner-primary", "fingerprint": "2e8df021fcafa327", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/note_routes.py"}, "region": {"startLine": 594}}}]}, {"ruleId": "scanner-8a0f2a7fd9378b9e", "level": "error", "message": {"text": "FastAPI POST `toggle_pin` without auth dependency \u2014 routes/note_routes.py:613"}, "properties": {"repobilityId": "d338196aceee24d8", "scanner": "scanner-primary", "fingerprint": "8a0f2a7fd9378b9e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/note_routes.py"}, "region": {"startLine": 613}}}]}, {"ruleId": "scanner-9eda4326a59edb5f", "level": "error", "message": {"text": "FastAPI POST `toggle_archive` without auth dependency \u2014 routes/note_routes.py:632"}, "properties": {"repobilityId": "def1730bacb7930a", "scanner": "scanner-primary", "fingerprint": "9eda4326a59edb5f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/note_routes.py"}, "region": {"startLine": 632}}}]}, {"ruleId": "scanner-ac59cef6659cf051", "level": "error", "message": {"text": "FastAPI POST `toggle_item` without auth dependency \u2014 routes/note_routes.py:651"}, "properties": {"repobilityId": "b378498c577d0300", "scanner": "scanner-primary", "fingerprint": "ac59cef6659cf051", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/note_routes.py"}, "region": {"startLine": 651}}}]}, {"ruleId": "scanner-10d75becbf8d99e2", "level": "error", "message": {"text": "FastAPI POST `fire_reminder` without auth dependency \u2014 routes/note_routes.py:677"}, "properties": {"repobilityId": "8242d48ad14c5d6b", "scanner": "scanner-primary", "fingerprint": "10d75becbf8d99e2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/note_routes.py"}, "region": {"startLine": 677}}}]}, {"ruleId": "scanner-d70fccba230692af", "level": "error", "message": {"text": "FastAPI POST `reorder_notes` without auth dependency \u2014 routes/note_routes.py:704"}, "properties": {"repobilityId": "ab51432336a0d86b", "scanner": "scanner-primary", "fingerprint": "d70fccba230692af", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/note_routes.py"}, "region": {"startLine": 704}}}]}, {"ruleId": "scanner-d9d111187ee1813a", "level": "error", "message": {"text": "FastAPI POST `first_run_setup` without auth dependency \u2014 routes/auth_routes.py:87"}, "properties": {"repobilityId": "f10d11ffd2bc06ed", "scanner": "scanner-primary", "fingerprint": "d9d111187ee1813a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/auth_routes.py"}, "region": {"startLine": 87}}}]}, {"ruleId": "scanner-52e7ab9126405250", "level": "error", "message": {"text": "FastAPI POST `change_password` without auth dependency \u2014 routes/auth_routes.py:176"}, "properties": {"repobilityId": "5a9519b1859aaed4", "scanner": "scanner-primary", "fingerprint": "52e7ab9126405250", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/auth_routes.py"}, "region": {"startLine": 176}}}]}, {"ruleId": "scanner-b2c71cd8f65af818", "level": "error", "message": {"text": "FastAPI POST `totp_setup` without auth dependency \u2014 routes/auth_routes.py:194"}, "properties": {"repobilityId": "10f66daedd7773cc", "scanner": "scanner-primary", "fingerprint": "b2c71cd8f65af818", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/auth_routes.py"}, "region": {"startLine": 194}}}]}, {"ruleId": "scanner-67583e42a7f72811", "level": "error", "message": {"text": "FastAPI POST `totp_confirm` without auth dependency \u2014 routes/auth_routes.py:217"}, "properties": {"repobilityId": "fc4c9c30fce721de", "scanner": "scanner-primary", "fingerprint": "67583e42a7f72811", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/auth_routes.py"}, "region": {"startLine": 217}}}]}, {"ruleId": "scanner-ec705777450e117d", "level": "error", "message": {"text": "FastAPI POST `totp_disable` without auth dependency \u2014 routes/auth_routes.py:231"}, "properties": {"repobilityId": "f283c76afa0d8993", "scanner": "scanner-primary", "fingerprint": "ec705777450e117d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/auth_routes.py"}, "region": {"startLine": 231}}}]}, {"ruleId": "scanner-23c7ddba76297c4f", "level": "error", "message": {"text": "FastAPI POST `admin_create_user` without auth dependency \u2014 routes/auth_routes.py:257"}, "properties": {"repobilityId": "ab8ce68330667c76", "scanner": "scanner-primary", "fingerprint": "23c7ddba76297c4f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/auth_routes.py"}, "region": {"startLine": 257}}}]}, {"ruleId": "scanner-1a6ad112a53ecbaa", "level": "error", "message": {"text": "FastAPI PUT `update_user_privileges` without auth dependency \u2014 routes/auth_routes.py:269"}, "properties": {"repobilityId": "88ac9fd51d7d61c7", "scanner": "scanner-primary", "fingerprint": "1a6ad112a53ecbaa", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/auth_routes.py"}, "region": {"startLine": 269}}}]}, {"ruleId": "scanner-c035d01a66c77b48", "level": "error", "message": {"text": "FastAPI PUT `rename_user` without auth dependency \u2014 routes/auth_routes.py:280"}, "properties": {"repobilityId": "5fbc57fa5c7dd1ea", "scanner": "scanner-primary", "fingerprint": "c035d01a66c77b48", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/auth_routes.py"}, "region": {"startLine": 280}}}]}, {"ruleId": "scanner-095587bc8373d9a2", "level": "error", "message": {"text": "FastAPI POST `toggle_signup` without auth dependency \u2014 routes/auth_routes.py:345"}, "properties": {"repobilityId": "185dfee7a21a3464", "scanner": "scanner-primary", "fingerprint": "095587bc8373d9a2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/auth_routes.py"}, "region": {"startLine": 345}}}]}, {"ruleId": "scanner-e62af92c6ab1f4bc", "level": "error", "message": {"text": "FastAPI PUT `set_signup_enabled` without auth dependency \u2014 routes/auth_routes.py:361"}, "properties": {"repobilityId": "9c30320562e76d40", "scanner": "scanner-primary", "fingerprint": "e62af92c6ab1f4bc", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/auth_routes.py"}, "region": {"startLine": 361}}}]}, {"ruleId": "scanner-ae098b5983635700", "level": "error", "message": {"text": "FastAPI DELETE `admin_delete_user` without auth dependency \u2014 routes/auth_routes.py:370"}, "properties": {"repobilityId": "076db457a611d354", "scanner": "scanner-primary", "fingerprint": "ae098b5983635700", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/auth_routes.py"}, "region": {"startLine": 370}}}]}, {"ruleId": "scanner-282ee5d9598122c3", "level": "error", "message": {"text": "FastAPI POST `set_features` without auth dependency \u2014 routes/auth_routes.py:398"}, "properties": {"repobilityId": "e418e16a24adadc9", "scanner": "scanner-primary", "fingerprint": "282ee5d9598122c3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/auth_routes.py"}, "region": {"startLine": 398}}}]}, {"ruleId": "scanner-53a25c64db11d5bf", "level": "error", "message": {"text": "FastAPI POST `set_settings` without auth dependency \u2014 routes/auth_routes.py:425"}, "properties": {"repobilityId": "53a64df0671e53d5", "scanner": "scanner-primary", "fingerprint": "53a25c64db11d5bf", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/auth_routes.py"}, "region": {"startLine": 425}}}]}, {"ruleId": "scanner-83d177236f027867", "level": "error", "message": {"text": "FastAPI POST `create_integration` without auth dependency \u2014 routes/auth_routes.py:460"}, "properties": {"repobilityId": "f03320d1b3f0f025", "scanner": "scanner-primary", "fingerprint": "83d177236f027867", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/auth_routes.py"}, "region": {"startLine": 460}}}]}, {"ruleId": "scanner-71835c84a4ac72d0", "level": "error", "message": {"text": "FastAPI PUT `update_integration_route` without auth dependency \u2014 routes/auth_routes.py:470"}, "properties": {"repobilityId": "36b10f35492219b0", "scanner": "scanner-primary", "fingerprint": "71835c84a4ac72d0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/auth_routes.py"}, "region": {"startLine": 470}}}]}, {"ruleId": "scanner-fe072d1e5e9e0b8a", "level": "error", "message": {"text": "FastAPI DELETE `delete_integration_route` without auth dependency \u2014 routes/auth_routes.py:482"}, "properties": {"repobilityId": "00dbc1f870d29921", "scanner": "scanner-primary", "fingerprint": "fe072d1e5e9e0b8a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/auth_routes.py"}, "region": {"startLine": 482}}}]}, {"ruleId": "scanner-4175174adf4e6b0b", "level": "error", "message": {"text": "FastAPI POST `test_integration_route` without auth dependency \u2014 routes/auth_routes.py:493"}, "properties": {"repobilityId": "3ce153157fd4724b", "scanner": "scanner-primary", "fingerprint": "4175174adf4e6b0b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/auth_routes.py"}, "region": {"startLine": 493}}}]}, {"ruleId": "scanner-d68cb8cfe8feae81", "level": "error", "message": {"text": "FastAPI POST `test_research` without auth dependency \u2014 routes/diagnostics_routes.py:60"}, "properties": {"repobilityId": "8c5793950cfdb814", "scanner": "scanner-primary", "fingerprint": "d68cb8cfe8feae81", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/diagnostics_routes.py"}, "region": {"startLine": 60}}}]}, {"ruleId": "scanner-6eb2c9aaa7382c0f", "level": "error", "message": {"text": "FastAPI POST `create_document` without auth dependency \u2014 routes/document_routes.py:61"}, "properties": {"repobilityId": "edb0f7a0ff1e2c0a", "scanner": "scanner-primary", "fingerprint": "6eb2c9aaa7382c0f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/document_routes.py"}, "region": {"startLine": 61}}}]}, {"ruleId": "scanner-d57ef11c8d49f141", "level": "error", "message": {"text": "FastAPI POST `import_pdf` without auth dependency \u2014 routes/document_routes.py:143"}, "properties": {"repobilityId": "7541c97b0ab86863", "scanner": "scanner-primary", "fingerprint": "d57ef11c8d49f141", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/document_routes.py"}, "region": {"startLine": 143}}}]}, {"ruleId": "scanner-06f0e4da5ad60946", "level": "error", "message": {"text": "FastAPI POST `archive_document` without auth dependency \u2014 routes/document_routes.py:396"}, "properties": {"repobilityId": "275f2a42fcea839c", "scanner": "scanner-primary", "fingerprint": "06f0e4da5ad60946", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/document_routes.py"}, "region": {"startLine": 396}}}]}, {"ruleId": "scanner-81e8001c4a370ef0", "level": "error", "message": {"text": "FastAPI POST `extract_pdf_text` without auth dependency \u2014 routes/document_routes.py:412"}, "properties": {"repobilityId": "7c8ac6bc5f5bbe43", "scanner": "scanner-primary", "fingerprint": "81e8001c4a370ef0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/document_routes.py"}, "region": {"startLine": 412}}}]}, {"ruleId": "scanner-36127db4855840fd", "level": "error", "message": {"text": "FastAPI POST `documents_export_zip` without auth dependency \u2014 routes/document_routes.py:472"}, "properties": {"repobilityId": "777b35293c5a605b", "scanner": "scanner-primary", "fingerprint": "36127db4855840fd", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/document_routes.py"}, "region": {"startLine": 472}}}]}, {"ruleId": "scanner-3acce11d02010c98", "level": "error", "message": {"text": "FastAPI PUT `update_document` without auth dependency \u2014 routes/document_routes.py:535"}, "properties": {"repobilityId": "f1c0d1997acf3e51", "scanner": "scanner-primary", "fingerprint": "3acce11d02010c98", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/document_routes.py"}, "region": {"startLine": 535}}}]}, {"ruleId": "scanner-c5e4dd98e307cb39", "level": "error", "message": {"text": "FastAPI PATCH `patch_document` without auth dependency \u2014 routes/document_routes.py:597"}, "properties": {"repobilityId": "ead14123b6b59984", "scanner": "scanner-primary", "fingerprint": "c5e4dd98e307cb39", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/document_routes.py"}, "region": {"startLine": 597}}}]}, {"ruleId": "scanner-70b21f95b971f397", "level": "error", "message": {"text": "FastAPI DELETE `delete_document` without auth dependency \u2014 routes/document_routes.py:634"}, "properties": {"repobilityId": "a184a824b71dd0bb", "scanner": "scanner-primary", "fingerprint": "70b21f95b971f397", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/document_routes.py"}, "region": {"startLine": 634}}}]}, {"ruleId": "scanner-2e1454eca89616e1", "level": "error", "message": {"text": "FastAPI POST `restore_version` without auth dependency \u2014 routes/document_routes.py:706"}, "properties": {"repobilityId": "8dc9b3cf21df8915", "scanner": "scanner-primary", "fingerprint": "2e1454eca89616e1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/document_routes.py"}, "region": {"startLine": 706}}}]}, {"ruleId": "scanner-0db7311c66d47a26", "level": "error", "message": {"text": "FastAPI POST `tidy_documents` without auth dependency \u2014 routes/document_routes.py:747"}, "properties": {"repobilityId": "749c80bdd460ece9", "scanner": "scanner-primary", "fingerprint": "0db7311c66d47a26", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/document_routes.py"}, "region": {"startLine": 747}}}]}, {"ruleId": "scanner-53fa65348f333bef", "level": "error", "message": {"text": "FastAPI POST `ai_tidy_documents` without auth dependency \u2014 routes/document_routes.py:850"}, "properties": {"repobilityId": "4556ade71769ebf1", "scanner": "scanner-primary", "fingerprint": "53fa65348f333bef", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/document_routes.py"}, "region": {"startLine": 850}}}]}, {"ruleId": "scanner-fdfc9ef0a291c65f", "level": "error", "message": {"text": "FastAPI POST `export_pdf_preview` without auth dependency \u2014 routes/document_routes.py:947"}, "properties": {"repobilityId": "cadcdc14486659ab", "scanner": "scanner-primary", "fingerprint": "fdfc9ef0a291c65f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/document_routes.py"}, "region": {"startLine": 947}}}]}, {"ruleId": "scanner-79deb80355bfb2d9", "level": "error", "message": {"text": "FastAPI POST `ai_fill_annotations` without auth dependency \u2014 routes/document_routes.py:1121"}, "properties": {"repobilityId": "df04c499e15c349c", "scanner": "scanner-primary", "fingerprint": "79deb80355bfb2d9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/document_routes.py"}, "region": {"startLine": 1121}}}]}, {"ruleId": "scanner-17026717a2de1e0f", "level": "error", "message": {"text": "FastAPI POST `prepare_signed_reply` without auth dependency \u2014 routes/document_routes.py:1491"}, "properties": {"repobilityId": "c85d6521aef15c55", "scanner": "scanner-primary", "fingerprint": "17026717a2de1e0f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/document_routes.py"}, "region": {"startLine": 1491}}}]}, {"ruleId": "scanner-d5743390004007f1", "level": "error", "message": {"text": "FastAPI POST `create_draft` without auth dependency \u2014 routes/editor_draft_routes.py:111"}, "properties": {"repobilityId": "784a2af7fd58f10a", "scanner": "scanner-primary", "fingerprint": "d5743390004007f1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/editor_draft_routes.py"}, "region": {"startLine": 111}}}]}, {"ruleId": "scanner-ef008284929fb11e", "level": "error", "message": {"text": "FastAPI PUT `update_draft` without auth dependency \u2014 routes/editor_draft_routes.py:137"}, "properties": {"repobilityId": "83b2a373d5dcfb84", "scanner": "scanner-primary", "fingerprint": "ef008284929fb11e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/editor_draft_routes.py"}, "region": {"startLine": 137}}}]}, {"ruleId": "scanner-c9cf59c7d48af827", "level": "error", "message": {"text": "FastAPI DELETE `delete_draft` without auth dependency \u2014 routes/editor_draft_routes.py:169"}, "properties": {"repobilityId": "e7996617e096c5a3", "scanner": "scanner-primary", "fingerprint": "c9cf59c7d48af827", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/editor_draft_routes.py"}, "region": {"startLine": 169}}}]}, {"ruleId": "scanner-c4a9239d5184f15e", "level": "error", "message": {"text": "FastAPI POST `research_cancel` without auth dependency \u2014 routes/research_routes.py:139"}, "properties": {"repobilityId": "2c0c18e636fd0aaf", "scanner": "scanner-primary", "fingerprint": "c4a9239d5184f15e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/research_routes.py"}, "region": {"startLine": 139}}}]}, {"ruleId": "scanner-6b4b465b35852cb1", "level": "error", "message": {"text": "FastAPI POST `research_result` without auth dependency \u2014 routes/research_routes.py:148"}, "properties": {"repobilityId": "7d41f4b0f4e34359", "scanner": "scanner-primary", "fingerprint": "6b4b465b35852cb1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/research_routes.py"}, "region": {"startLine": 148}}}]}, {"ruleId": "scanner-164483895ac2e009", "level": "error", "message": {"text": "FastAPI POST `research_hide_image` without auth dependency \u2014 routes/research_routes.py:195"}, "properties": {"repobilityId": "faf0c6e25841922e", "scanner": "scanner-primary", "fingerprint": "164483895ac2e009", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/research_routes.py"}, "region": {"startLine": 195}}}]}, {"ruleId": "scanner-609828c9ae2bae17", "level": "error", "message": {"text": "FastAPI POST `research_unhide_images` without auth dependency \u2014 routes/research_routes.py:207"}, "properties": {"repobilityId": "81ae6d53861692d1", "scanner": "scanner-primary", "fingerprint": "609828c9ae2bae17", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/research_routes.py"}, "region": {"startLine": 207}}}]}, {"ruleId": "scanner-f021c1f0e28bc23e", "level": "error", "message": {"text": "FastAPI POST `research_archive` without auth dependency \u2014 routes/research_routes.py:290"}, "properties": {"repobilityId": "8c4707ab02572dee", "scanner": "scanner-primary", "fingerprint": "f021c1f0e28bc23e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/research_routes.py"}, "region": {"startLine": 290}}}]}, {"ruleId": "scanner-62d286db92e2ccb5", "level": "error", "message": {"text": "FastAPI DELETE `research_delete` without auth dependency \u2014 routes/research_routes.py:310"}, "properties": {"repobilityId": "474d8bbb5363449b", "scanner": "scanner-primary", "fingerprint": "62d286db92e2ccb5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/research_routes.py"}, "region": {"startLine": 310}}}]}, {"ruleId": "scanner-4269ffa10a7b7531", "level": "error", "message": {"text": "FastAPI POST `research_start` without auth dependency \u2014 routes/research_routes.py:348"}, "properties": {"repobilityId": "2f9ad73f2e0d51e5", "scanner": "scanner-primary", "fingerprint": "4269ffa10a7b7531", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/research_routes.py"}, "region": {"startLine": 348}}}]}, {"ruleId": "scanner-ba785e5c07badc7d", "level": "error", "message": {"text": "FastAPI POST `research_result_peek` without auth dependency \u2014 routes/research_routes.py:488"}, "properties": {"repobilityId": "699f8b77fa0ee953", "scanner": "scanner-primary", "fingerprint": "ba785e5c07badc7d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/research_routes.py"}, "region": {"startLine": 488}}}]}, {"ruleId": "scanner-e09b650c825dfa5f", "level": "error", "message": {"text": "FastAPI POST `research_spinoff` without auth dependency \u2014 routes/research_routes.py:511"}, "properties": {"repobilityId": "32fc33125df904b6", "scanner": "scanner-primary", "fingerprint": "e09b650c825dfa5f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/research_routes.py"}, "region": {"startLine": 511}}}]}, {"ruleId": "scanner-f724c95b9e16d44b", "level": "error", "message": {"text": "FastAPI POST `cleanup_endpoint` without auth dependency \u2014 routes/cleanup_routes.py:38"}, "properties": {"repobilityId": "155702925e40808c", "scanner": "scanner-primary", "fingerprint": "f724c95b9e16d44b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/cleanup_routes.py"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-9d8d9b92cac21a84", "level": "error", "message": {"text": "FastAPI PATCH `update_assistant_settings` without auth dependency \u2014 routes/assistant_routes.py:155"}, "properties": {"repobilityId": "91ba24272d293c66", "scanner": "scanner-primary", "fingerprint": "9d8d9b92cac21a84", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/assistant_routes.py"}, "region": {"startLine": 155}}}]}, {"ruleId": "scanner-035694055dae464f", "level": "error", "message": {"text": "FastAPI POST `run_check_in_now` without auth dependency \u2014 routes/assistant_routes.py:267"}, "properties": {"repobilityId": "67d840f31854c7e0", "scanner": "scanner-primary", "fingerprint": "035694055dae464f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/assistant_routes.py"}, "region": {"startLine": 267}}}]}, {"ruleId": "scanner-564ed9f149d9c20f", "level": "error", "message": {"text": "FastAPI POST `truncate_session` without auth dependency \u2014 routes/history_routes.py:99"}, "properties": {"repobilityId": "2d37dffba3a87772", "scanner": "scanner-primary", "fingerprint": "564ed9f149d9c20f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/history_routes.py"}, "region": {"startLine": 99}}}]}, {"ruleId": "scanner-1f7546711cb8c31f", "level": "error", "message": {"text": "FastAPI POST `add_message` without auth dependency \u2014 routes/history_routes.py:113"}, "properties": {"repobilityId": "b6f69fa10d4cd5c8", "scanner": "scanner-primary", "fingerprint": "1f7546711cb8c31f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/history_routes.py"}, "region": {"startLine": 113}}}]}, {"ruleId": "scanner-fd08fa03a481c0cb", "level": "error", "message": {"text": "FastAPI POST `delete_messages` without auth dependency \u2014 routes/history_routes.py:129"}, "properties": {"repobilityId": "7758d790018638b1", "scanner": "scanner-primary", "fingerprint": "fd08fa03a481c0cb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/history_routes.py"}, "region": {"startLine": 129}}}]}, {"ruleId": "scanner-4e214222bd3c0da4", "level": "error", "message": {"text": "FastAPI POST `edit_message` without auth dependency \u2014 routes/history_routes.py:192"}, "properties": {"repobilityId": "df4697247c454915", "scanner": "scanner-primary", "fingerprint": "4e214222bd3c0da4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/history_routes.py"}, "region": {"startLine": 192}}}]}, {"ruleId": "scanner-b805c7e520e03b96", "level": "error", "message": {"text": "FastAPI POST `mark_stopped` without auth dependency \u2014 routes/history_routes.py:245"}, "properties": {"repobilityId": "dcd8f3512f4617b7", "scanner": "scanner-primary", "fingerprint": "b805c7e520e03b96", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/history_routes.py"}, "region": {"startLine": 245}}}]}, {"ruleId": "scanner-8cea3419e0b36f25", "level": "error", "message": {"text": "FastAPI POST `update_last_meta` without auth dependency \u2014 routes/history_routes.py:300"}, "properties": {"repobilityId": "ac8503ac6b1457df", "scanner": "scanner-primary", "fingerprint": "8cea3419e0b36f25", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/history_routes.py"}, "region": {"startLine": 300}}}]}, {"ruleId": "scanner-c52f086545900d2f", "level": "error", "message": {"text": "FastAPI POST `merge_last_assistant` without auth dependency \u2014 routes/history_routes.py:351"}, "properties": {"repobilityId": "93cf2d506b68612f", "scanner": "scanner-primary", "fingerprint": "c52f086545900d2f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/history_routes.py"}, "region": {"startLine": 351}}}]}, {"ruleId": "scanner-fa1f7f660d63cf0c", "level": "error", "message": {"text": "FastAPI POST `fork_session` without auth dependency \u2014 routes/history_routes.py:438"}, "properties": {"repobilityId": "e39152a4d3cab1ef", "scanner": "scanner-primary", "fingerprint": "fa1f7f660d63cf0c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/history_routes.py"}, "region": {"startLine": 438}}}]}, {"ruleId": "scanner-5ac38aa28e8c42f7", "level": "error", "message": {"text": "FastAPI POST `compact_session` without auth dependency \u2014 routes/history_routes.py:494"}, "properties": {"repobilityId": "c2bb2403972b4a5c", "scanner": "scanner-primary", "fingerprint": "5ac38aa28e8c42f7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/history_routes.py"}, "region": {"startLine": 494}}}]}, {"ruleId": "scanner-7375a6c230273764", "level": "error", "message": {"text": "FastAPI POST `transcribe_audio` without auth dependency \u2014 routes/stt_routes.py:27"}, "properties": {"repobilityId": "0a6f82666836ebdb", "scanner": "scanner-primary", "fingerprint": "7375a6c230273764", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/stt_routes.py"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-d4a3f31241a78a05", "level": "error", "message": {"text": "FastAPI POST `synthesize_speech` without auth dependency \u2014 routes/tts_routes.py:30"}, "properties": {"repobilityId": "11e9132648ae6a92", "scanner": "scanner-primary", "fingerprint": "d4a3f31241a78a05", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/tts_routes.py"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-9f351b81c8e37bce", "level": "error", "message": {"text": "FastAPI POST `clear_tts_cache` without auth dependency \u2014 routes/tts_routes.py:77"}, "properties": {"repobilityId": "afbe546ded4529d6", "scanner": "scanner-primary", "fingerprint": "9f351b81c8e37bce", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/tts_routes.py"}, "region": {"startLine": 77}}}]}, {"ruleId": "scanner-f6f7884da677e999", "level": "error", "message": {"text": "FastAPI POST `create_token` without auth dependency \u2014 routes/api_token_routes.py:111"}, "properties": {"repobilityId": "f2ab1bb63323833a", "scanner": "scanner-primary", "fingerprint": "f6f7884da677e999", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/api_token_routes.py"}, "region": {"startLine": 111}}}]}, {"ruleId": "scanner-14d8cea150862425", "level": "error", "message": {"text": "FastAPI PATCH `update_token` without auth dependency \u2014 routes/api_token_routes.py:151"}, "properties": {"repobilityId": "13e1de3a2f74ebdd", "scanner": "scanner-primary", "fingerprint": "14d8cea150862425", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/api_token_routes.py"}, "region": {"startLine": 151}}}]}, {"ruleId": "scanner-1db67f43252c6375", "level": "error", "message": {"text": "FastAPI DELETE `delete_token` without auth dependency \u2014 routes/api_token_routes.py:178"}, "properties": {"repobilityId": "dfb443036d66d32b", "scanner": "scanner-primary", "fingerprint": "1db67f43252c6375", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/api_token_routes.py"}, "region": {"startLine": 178}}}]}, {"ruleId": "scanner-202ed4ccc2fb2d32", "level": "error", "message": {"text": "FastAPI POST `import_data` without auth dependency \u2014 routes/backup_routes.py:62"}, "properties": {"repobilityId": "2ec4b23f22236ea1", "scanner": "scanner-primary", "fingerprint": "202ed4ccc2fb2d32", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/backup_routes.py"}, "region": {"startLine": 62}}}]}, {"ruleId": "scanner-4356acf992db03bf", "level": "error", "message": {"text": "FastAPI POST `do_web_search` without auth dependency \u2014 routes/search_routes.py:46"}, "properties": {"repobilityId": "f151f778c54564e8", "scanner": "scanner-primary", "fingerprint": "4356acf992db03bf", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/search_routes.py"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-720e0a3fcbd09354", "level": "error", "message": {"text": "FastAPI POST `search_with_provider` without auth dependency \u2014 routes/search_routes.py:87"}, "properties": {"repobilityId": "97fc54b9fee0c624", "scanner": "scanner-primary", "fingerprint": "720e0a3fcbd09354", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/search_routes.py"}, "region": {"startLine": 87}}}]}, {"ruleId": "scanner-50400c8ee9567ce3", "level": "error", "message": {"text": "FastAPI POST `chat_endpoint` without auth dependency \u2014 routes/chat_routes.py:268"}, "properties": {"repobilityId": "04ab0632df30fa1a", "scanner": "scanner-primary", "fingerprint": "50400c8ee9567ce3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/chat_routes.py"}, "region": {"startLine": 268}}}]}, {"ruleId": "scanner-b036c896497444a2", "level": "error", "message": {"text": "FastAPI POST `chat_stream` without auth dependency \u2014 routes/chat_routes.py:366"}, "properties": {"repobilityId": "8212bce0c6c9a7fd", "scanner": "scanner-primary", "fingerprint": "b036c896497444a2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/chat_routes.py"}, "region": {"startLine": 366}}}]}, {"ruleId": "scanner-3bfb0b9e4dc236fb", "level": "error", "message": {"text": "FastAPI POST `chat_stop` without auth dependency \u2014 routes/chat_routes.py:1118"}, "properties": {"repobilityId": "68a93499e09be6c3", "scanner": "scanner-primary", "fingerprint": "3bfb0b9e4dc236fb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/chat_routes.py"}, "region": {"startLine": 1118}}}]}, {"ruleId": "scanner-979662aa0e60c100", "level": "error", "message": {"text": "FastAPI POST `inject_context` without auth dependency \u2014 routes/chat_routes.py:1145"}, "properties": {"repobilityId": "4c527a320f62ca0e", "scanner": "scanner-primary", "fingerprint": "979662aa0e60c100", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/chat_routes.py"}, "region": {"startLine": 1145}}}]}, {"ruleId": "scanner-be5c4fee06ee28e6", "level": "error", "message": {"text": "FastAPI POST `rewrite_message` without auth dependency \u2014 routes/chat_routes.py:1213"}, "properties": {"repobilityId": "3f342343568141db", "scanner": "scanner-primary", "fingerprint": "be5c4fee06ee28e6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/chat_routes.py"}, "region": {"startLine": 1213}}}]}, {"ruleId": "scanner-53e8df559621d479", "level": "error", "message": {"text": "FastAPI POST `manage_todos` without auth dependency \u2014 routes/codex_routes.py:167"}, "properties": {"repobilityId": "27264264d31affdb", "scanner": "scanner-primary", "fingerprint": "53e8df559621d479", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/codex_routes.py"}, "region": {"startLine": 167}}}]}, {"ruleId": "scanner-aea3af0c73aacf96", "level": "error", "message": {"text": "FastAPI POST `codex_email_draft` without auth dependency \u2014 routes/codex_routes.py:235"}, "properties": {"repobilityId": "4c9dd9a62315b893", "scanner": "scanner-primary", "fingerprint": "aea3af0c73aacf96", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/codex_routes.py"}, "region": {"startLine": 235}}}]}, {"ruleId": "scanner-a9f96a18f4f726c3", "level": "error", "message": {"text": "FastAPI POST `codex_email_send` without auth dependency \u2014 routes/codex_routes.py:248"}, "properties": {"repobilityId": "93a5ec04b71c0c66", "scanner": "scanner-primary", "fingerprint": "a9f96a18f4f726c3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/codex_routes.py"}, "region": {"startLine": 248}}}]}, {"ruleId": "scanner-dc65e034e4600741", "level": "error", "message": {"text": "FastAPI POST `codex_memory_add` without auth dependency \u2014 routes/codex_routes.py:270"}, "properties": {"repobilityId": "31e09ca05bed9e71", "scanner": "scanner-primary", "fingerprint": "dc65e034e4600741", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/codex_routes.py"}, "region": {"startLine": 270}}}]}, {"ruleId": "scanner-f37d644e96bf9c31", "level": "error", "message": {"text": "FastAPI POST `codex_calendar_create` without auth dependency \u2014 routes/codex_routes.py:299"}, "properties": {"repobilityId": "56fe97a759a69c30", "scanner": "scanner-primary", "fingerprint": "f37d644e96bf9c31", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/codex_routes.py"}, "region": {"startLine": 299}}}]}, {"ruleId": "scanner-d0547ce834a73d6e", "level": "error", "message": {"text": "FastAPI DELETE `codex_memory_delete` without auth dependency \u2014 routes/codex_routes.py:345"}, "properties": {"repobilityId": "f612ca61e7c6d35e", "scanner": "scanner-primary", "fingerprint": "d0547ce834a73d6e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/codex_routes.py"}, "region": {"startLine": 345}}}]}, {"ruleId": "scanner-c0b4a612a6430791", "level": "error", "message": {"text": "FastAPI DELETE `codex_calendar_delete` without auth dependency \u2014 routes/codex_routes.py:352"}, "properties": {"repobilityId": "d302501db42e49e9", "scanner": "scanner-primary", "fingerprint": "c0b4a612a6430791", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/codex_routes.py"}, "region": {"startLine": 352}}}]}, {"ruleId": "scanner-eeb9035a25a1a1ed", "level": "error", "message": {"text": "FastAPI DELETE `codex_documents_delete` without auth dependency \u2014 routes/codex_routes.py:359"}, "properties": {"repobilityId": "0f7ac769277d0b0d", "scanner": "scanner-primary", "fingerprint": "eeb9035a25a1a1ed", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/codex_routes.py"}, "region": {"startLine": 359}}}]}, {"ruleId": "scanner-836be3bafeb14ffa", "level": "error", "message": {"text": "FastAPI POST `codex_documents_create` without auth dependency \u2014 routes/codex_routes.py:366"}, "properties": {"repobilityId": "7f7bdfa25b39adf0", "scanner": "scanner-primary", "fingerprint": "836be3bafeb14ffa", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/codex_routes.py"}, "region": {"startLine": 366}}}]}, {"ruleId": "scanner-45b18126d3c01ec2", "level": "error", "message": {"text": "FastAPI POST `save_config` without auth dependency \u2014 routes/calendar_routes.py:573"}, "properties": {"repobilityId": "c0b04b473d8404a3", "scanner": "scanner-primary", "fingerprint": "45b18126d3c01ec2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/calendar_routes.py"}, "region": {"startLine": 573}}}]}, {"ruleId": "scanner-855e9db15216eef5", "level": "error", "message": {"text": "FastAPI POST `test_connection` without auth dependency \u2014 routes/calendar_routes.py:606"}, "properties": {"repobilityId": "106b6495ae97fa96", "scanner": "scanner-primary", "fingerprint": "855e9db15216eef5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/calendar_routes.py"}, "region": {"startLine": 606}}}]}, {"ruleId": "scanner-05f66f74f337a731", "level": "error", "message": {"text": "FastAPI POST `sync_caldav_endpoint` without auth dependency \u2014 routes/calendar_routes.py:689"}, "properties": {"repobilityId": "feef8a30a60fb89b", "scanner": "scanner-primary", "fingerprint": "05f66f74f337a731", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/calendar_routes.py"}, "region": {"startLine": 689}}}]}, {"ruleId": "scanner-b87bd841b7c59ed0", "level": "error", "message": {"text": "FastAPI POST `create_event` without auth dependency \u2014 routes/calendar_routes.py:779"}, "properties": {"repobilityId": "8be6fddae3248842", "scanner": "scanner-primary", "fingerprint": "b87bd841b7c59ed0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/calendar_routes.py"}, "region": {"startLine": 779}}}]}, {"ruleId": "scanner-19ddd9d4d346c2cc", "level": "error", "message": {"text": "FastAPI PUT `update_event` without auth dependency \u2014 routes/calendar_routes.py:847"}, "properties": {"repobilityId": "b45b203027bdb1db", "scanner": "scanner-primary", "fingerprint": "19ddd9d4d346c2cc", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/calendar_routes.py"}, "region": {"startLine": 847}}}]}, {"ruleId": "scanner-e822bb41c4cfa5e9", "level": "error", "message": {"text": "FastAPI DELETE `delete_event` without auth dependency \u2014 routes/calendar_routes.py:901"}, "properties": {"repobilityId": "25328e3ff1fd7908", "scanner": "scanner-primary", "fingerprint": "e822bb41c4cfa5e9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/calendar_routes.py"}, "region": {"startLine": 901}}}]}, {"ruleId": "scanner-e063bbe45deac78b", "level": "error", "message": {"text": "FastAPI POST `create_calendar` without auth dependency \u2014 routes/calendar_routes.py:930"}, "properties": {"repobilityId": "d55c32fcfd1db3c2", "scanner": "scanner-primary", "fingerprint": "e063bbe45deac78b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/calendar_routes.py"}, "region": {"startLine": 930}}}]}, {"ruleId": "scanner-12f4f13af2dfe417", "level": "error", "message": {"text": "FastAPI PUT `update_calendar` without auth dependency \u2014 routes/calendar_routes.py:952"}, "properties": {"repobilityId": "2ef60a83824c5004", "scanner": "scanner-primary", "fingerprint": "12f4f13af2dfe417", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/calendar_routes.py"}, "region": {"startLine": 952}}}]}, {"ruleId": "scanner-2ff7ad8e18773a31", "level": "error", "message": {"text": "FastAPI DELETE `delete_calendar` without auth dependency \u2014 routes/calendar_routes.py:973"}, "properties": {"repobilityId": "15e9977e72a6db09", "scanner": "scanner-primary", "fingerprint": "2ff7ad8e18773a31", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/calendar_routes.py"}, "region": {"startLine": 973}}}]}, {"ruleId": "scanner-cbbce9d0fca3dbbe", "level": "error", "message": {"text": "FastAPI POST `import_ics` without auth dependency \u2014 routes/calendar_routes.py:995"}, "properties": {"repobilityId": "b172386152ad8ed8", "scanner": "scanner-primary", "fingerprint": "cbbce9d0fca3dbbe", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/calendar_routes.py"}, "region": {"startLine": 995}}}]}, {"ruleId": "scanner-71990e71dba93027", "level": "error", "message": {"text": "FastAPI POST `quick_parse` without auth dependency \u2014 routes/calendar_routes.py:1185"}, "properties": {"repobilityId": "ec9a850b05f4488b", "scanner": "scanner-primary", "fingerprint": "71990e71dba93027", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/calendar_routes.py"}, "region": {"startLine": 1185}}}]}, {"ruleId": "scanner-5ec25ad802d6830a", "level": "error", "message": {"text": "FastAPI POST `save_config` without auth dependency \u2014 routes/vault_routes.py:141"}, "properties": {"repobilityId": "eef0fe3d435376c3", "scanner": "scanner-primary", "fingerprint": "5ec25ad802d6830a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/vault_routes.py"}, "region": {"startLine": 141}}}]}, {"ruleId": "scanner-6267ffc32150e578", "level": "error", "message": {"text": "FastAPI POST `unlock` without auth dependency \u2014 routes/vault_routes.py:182"}, "properties": {"repobilityId": "8f9c77c726eacccb", "scanner": "scanner-primary", "fingerprint": "6267ffc32150e578", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/vault_routes.py"}, "region": {"startLine": 182}}}]}, {"ruleId": "scanner-3780056377383c1c", "level": "error", "message": {"text": "FastAPI POST `lock` without auth dependency \u2014 routes/vault_routes.py:204"}, "properties": {"repobilityId": "3fae5125bf661775", "scanner": "scanner-primary", "fingerprint": "3780056377383c1c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/vault_routes.py"}, "region": {"startLine": 204}}}]}, {"ruleId": "scanner-ea070601568c873a", "level": "error", "message": {"text": "FastAPI POST `api_upload` without auth dependency \u2014 routes/upload_routes.py:20"}, "properties": {"repobilityId": "f42f97b0d90a70dd", "scanner": "scanner-primary", "fingerprint": "ea070601568c873a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/upload_routes.py"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-18396ad533756800", "level": "error", "message": {"text": "FastAPI POST `manual_cleanup` without auth dependency \u2014 routes/upload_routes.py:70"}, "properties": {"repobilityId": "95b89142ca035049", "scanner": "scanner-primary", "fingerprint": "18396ad533756800", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/upload_routes.py"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-249f1915e40d5aca", "level": "error", "message": {"text": "FastAPI PUT `put_vision_text` without auth dependency \u2014 routes/upload_routes.py:223"}, "properties": {"repobilityId": "a92308c460cf945d", "scanner": "scanner-primary", "fingerprint": "249f1915e40d5aca", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/upload_routes.py"}, "region": {"startLine": 223}}}]}, {"ruleId": "scanner-20608a0de7bb1841", "level": "error", "message": {"text": "FastAPI POST `update_tasks_onboarding` without auth dependency \u2014 routes/task_routes.py:254"}, "properties": {"repobilityId": "a900a55add51f812", "scanner": "scanner-primary", "fingerprint": "20608a0de7bb1841", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/task_routes.py"}, "region": {"startLine": 254}}}]}, {"ruleId": "scanner-969b10b22db23ad6", "level": "error", "message": {"text": "FastAPI POST `create_task` without auth dependency \u2014 routes/task_routes.py:319"}, "properties": {"repobilityId": "98745040c4daa24b", "scanner": "scanner-primary", "fingerprint": "969b10b22db23ad6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/task_routes.py"}, "region": {"startLine": 319}}}]}, {"ruleId": "scanner-498bd4f1c3c7e1ad", "level": "error", "message": {"text": "FastAPI POST `clear_task_cache` without auth dependency \u2014 routes/task_routes.py:430"}, "properties": {"repobilityId": "35f720b37b697f47", "scanner": "scanner-primary", "fingerprint": "498bd4f1c3c7e1ad", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/task_routes.py"}, "region": {"startLine": 430}}}]}, {"ruleId": "scanner-1ab9b3eafff9f623", "level": "error", "message": {"text": "FastAPI PUT `update_task` without auth dependency \u2014 routes/task_routes.py:516"}, "properties": {"repobilityId": "be64e54faecd44f5", "scanner": "scanner-primary", "fingerprint": "1ab9b3eafff9f623", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/task_routes.py"}, "region": {"startLine": 516}}}]}, {"ruleId": "scanner-b9330d559fe1f141", "level": "error", "message": {"text": "FastAPI DELETE `delete_task` without auth dependency \u2014 routes/task_routes.py:602"}, "properties": {"repobilityId": "a6d2b784ec2b6f1b", "scanner": "scanner-primary", "fingerprint": "b9330d559fe1f141", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/task_routes.py"}, "region": {"startLine": 602}}}]}, {"ruleId": "scanner-fc4588f722065620", "level": "error", "message": {"text": "FastAPI POST `pause_task` without auth dependency \u2014 routes/task_routes.py:618"}, "properties": {"repobilityId": "1acf4591654e963c", "scanner": "scanner-primary", "fingerprint": "fc4588f722065620", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/task_routes.py"}, "region": {"startLine": 618}}}]}, {"ruleId": "scanner-4c53c439b847f4e7", "level": "error", "message": {"text": "FastAPI POST `resume_task` without auth dependency \u2014 routes/task_routes.py:634"}, "properties": {"repobilityId": "e0bffb4abd87003a", "scanner": "scanner-primary", "fingerprint": "4c53c439b847f4e7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/task_routes.py"}, "region": {"startLine": 634}}}]}, {"ruleId": "scanner-abf341d61affc24c", "level": "error", "message": {"text": "FastAPI POST `revert_task` without auth dependency \u2014 routes/task_routes.py:656"}, "properties": {"repobilityId": "65efa55806605606", "scanner": "scanner-primary", "fingerprint": "abf341d61affc24c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/task_routes.py"}, "region": {"startLine": 656}}}]}, {"ruleId": "scanner-4b41c2645ba1f54a", "level": "error", "message": {"text": "FastAPI POST `run_task_now` without auth dependency \u2014 routes/task_routes.py:696"}, "properties": {"repobilityId": "0414a50d379c65f0", "scanner": "scanner-primary", "fingerprint": "4b41c2645ba1f54a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/task_routes.py"}, "region": {"startLine": 696}}}]}, {"ruleId": "scanner-569515258bebfe00", "level": "error", "message": {"text": "FastAPI POST `stop_task_now` without auth dependency \u2014 routes/task_routes.py:713"}, "properties": {"repobilityId": "0499efbff8a066a0", "scanner": "scanner-primary", "fingerprint": "569515258bebfe00", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/task_routes.py"}, "region": {"startLine": 713}}}]}, {"ruleId": "scanner-37e2ef820b76ed8c", "level": "error", "message": {"text": "FastAPI POST `regenerate_webhook` without auth dependency \u2014 routes/task_routes.py:891"}, "properties": {"repobilityId": "9a966b2b79d418b6", "scanner": "scanner-primary", "fingerprint": "37e2ef820b76ed8c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/task_routes.py"}, "region": {"startLine": 891}}}]}, {"ruleId": "scanner-dd81d82d4a94453e", "level": "error", "message": {"text": "FastAPI POST `parse_task` without auth dependency \u2014 routes/task_routes.py:908"}, "properties": {"repobilityId": "7c8ce7707d3319fc", "scanner": "scanner-primary", "fingerprint": "dd81d82d4a94453e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routes/task_routes.py"}, "region": {"startLine": 908}}}]}, {"ruleId": "scanner-f041685323e2b44f", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:290)"}, "properties": {"repobilityId": "b28937895690a0f0", "scanner": "scanner-primary", "fingerprint": "f041685323e2b44f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-184330fbaab835ac", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:457)"}, "properties": {"repobilityId": "f4b3d5e159240b3c", "scanner": "scanner-primary", "fingerprint": "184330fbaab835ac", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9d11feadac8358c0", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:472)"}, "properties": {"repobilityId": "cefa8605c3ef5505", "scanner": "scanner-primary", "fingerprint": "9d11feadac8358c0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-df8512ca2904cf22", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:522)"}, "properties": {"repobilityId": "9c976e0a4af87870", "scanner": "scanner-primary", "fingerprint": "df8512ca2904cf22", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-033f506c032b1524", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:542)"}, "properties": {"repobilityId": "33cf285066fd0157", "scanner": "scanner-primary", "fingerprint": "033f506c032b1524", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-200d6cb458b358bc", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:609)"}, "properties": {"repobilityId": "fecdc8e5de0fd78b", "scanner": "scanner-primary", "fingerprint": "200d6cb458b358bc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9f722a894efcbff3", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:640)"}, "properties": {"repobilityId": "403a96a8a20dfb76", "scanner": "scanner-primary", "fingerprint": "9f722a894efcbff3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9f9eb7e6cf11da66", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:701)"}, "properties": {"repobilityId": "153bdfb941b3dc4a", "scanner": "scanner-primary", "fingerprint": "9f9eb7e6cf11da66", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b330572c79d286a2", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:718)"}, "properties": {"repobilityId": "c346ef93f8cf9972", "scanner": "scanner-primary", "fingerprint": "b330572c79d286a2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4755f7121fc890b1", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:763)"}, "properties": {"repobilityId": "8b6a2c38ce42a0fb", "scanner": "scanner-primary", "fingerprint": "4755f7121fc890b1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cb9948badfb29a9b", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:791)"}, "properties": {"repobilityId": "c8117654b068bb6c", "scanner": "scanner-primary", "fingerprint": "cb9948badfb29a9b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-49f65c153e3c95c2", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:853)"}, "properties": {"repobilityId": "d75152ffb5ca59e2", "scanner": "scanner-primary", "fingerprint": "49f65c153e3c95c2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-54b62d4086c33de5", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:873)"}, "properties": {"repobilityId": "5e200b8ed4ad04c3", "scanner": "scanner-primary", "fingerprint": "54b62d4086c33de5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-36faf6f93c648924", "level": "error", "message": {"text": "Dangling fetch: POST /api/tts/clear-cache (static/js/settings.js:882)"}, "properties": {"repobilityId": "889e242fec9972fc", "scanner": "scanner-primary", "fingerprint": "36faf6f93c648924", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-969ea54e75a76add", "level": "error", "message": {"text": "Dangling fetch: POST /api/tts/synthesize (static/js/settings.js:940)"}, "properties": {"repobilityId": "11806570299d9c87", "scanner": "scanner-primary", "fingerprint": "969ea54e75a76add", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2d95057529bbde55", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:1021)"}, "properties": {"repobilityId": "a7c2f1b1771060eb", "scanner": "scanner-primary", "fingerprint": "2d95057529bbde55", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-aff2d63e0f5bb20c", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:1035)"}, "properties": {"repobilityId": "7defa6622a154262", "scanner": "scanner-primary", "fingerprint": "aff2d63e0f5bb20c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-acd453b1403af867", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:1124)"}, "properties": {"repobilityId": "506b434c8413d9d6", "scanner": "scanner-primary", "fingerprint": "acd453b1403af867", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-534b3e20b9f9ffc4", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:1145)"}, "properties": {"repobilityId": "f5cf817dba4cc27e", "scanner": "scanner-primary", "fingerprint": "534b3e20b9f9ffc4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4c89ad65659861cf", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:1190)"}, "properties": {"repobilityId": "66201a2ceff56b6f", "scanner": "scanner-primary", "fingerprint": "4c89ad65659861cf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-75c24d4a1f3b86cd", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:1327)"}, "properties": {"repobilityId": "81b518ea3690ec33", "scanner": "scanner-primary", "fingerprint": "75c24d4a1f3b86cd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4d34ddbd57d7534f", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:1421)"}, "properties": {"repobilityId": "a4e57b8eb474812c", "scanner": "scanner-primary", "fingerprint": "4d34ddbd57d7534f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-201457a9aa70945a", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:1484)"}, "properties": {"repobilityId": "400ff1420283205b", "scanner": "scanner-primary", "fingerprint": "201457a9aa70945a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e0a4a096fe42433f", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:1534)"}, "properties": {"repobilityId": "9a4072576bcaafd2", "scanner": "scanner-primary", "fingerprint": "e0a4a096fe42433f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-591ed4e224796792", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:1542)"}, "properties": {"repobilityId": "0bf4066914e8a8cd", "scanner": "scanner-primary", "fingerprint": "591ed4e224796792", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3a65693195653db9", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:1561)"}, "properties": {"repobilityId": "76f310d6bdc330e3", "scanner": "scanner-primary", "fingerprint": "3a65693195653db9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-af47adc7f370e40a", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:1569)"}, "properties": {"repobilityId": "d68b47a139cdb152", "scanner": "scanner-primary", "fingerprint": "af47adc7f370e40a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-13fe25d67228b3d8", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:1789)"}, "properties": {"repobilityId": "e8439f8d0352da1a", "scanner": "scanner-primary", "fingerprint": "13fe25d67228b3d8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4c8ecfb166a44544", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:1947)"}, "properties": {"repobilityId": "768cbf62e16d6210", "scanner": "scanner-primary", "fingerprint": "4c8ecfb166a44544", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-094db703fe13f7cc", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/status (static/js/settings.js:1988)"}, "properties": {"repobilityId": "4432f35ca93bd6a8", "scanner": "scanner-primary", "fingerprint": "094db703fe13f7cc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5f6ccb85d7f15db2", "level": "error", "message": {"text": "Dangling fetch: GET /api/prefs/display_name (static/js/settings.js:1993)"}, "properties": {"repobilityId": "c2699369611976c4", "scanner": "scanner-primary", "fingerprint": "5f6ccb85d7f15db2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9a36da2f9c79aaf9", "level": "error", "message": {"text": "Dangling fetch: PUT /api/prefs/display_name (static/js/settings.js:2024)"}, "properties": {"repobilityId": "e79112e4493aae76", "scanner": "scanner-primary", "fingerprint": "9a36da2f9c79aaf9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d7dd93f7a135df72", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/change-password (static/js/settings.js:2056)"}, "properties": {"repobilityId": "0ad78818f22a4804", "scanner": "scanner-primary", "fingerprint": "d7dd93f7a135df72", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e146a7572c9e7803", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/2fa/status (static/js/settings.js:2081)"}, "properties": {"repobilityId": "6e34361adb4f6f40", "scanner": "scanner-primary", "fingerprint": "e146a7572c9e7803", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c31a156204c614df", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/2fa/disable (static/js/settings.js:2100)"}, "properties": {"repobilityId": "1ff0aab5d353cb85", "scanner": "scanner-primary", "fingerprint": "c31a156204c614df", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fbd1a6018e8d65c0", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/2fa/setup (static/js/settings.js:2120)"}, "properties": {"repobilityId": "7646ad5da3b48b8a", "scanner": "scanner-primary", "fingerprint": "fbd1a6018e8d65c0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1958f764bf83e108", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/2fa/confirm (static/js/settings.js:2145)"}, "properties": {"repobilityId": "0fe159712257a905", "scanner": "scanner-primary", "fingerprint": "1958f764bf83e108", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fcd871a14da6ee86", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/logout (static/js/settings.js:2178)"}, "properties": {"repobilityId": "3ed6b4470fb649d9", "scanner": "scanner-primary", "fingerprint": "fcd871a14da6ee86", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-424f762ee18e2299", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:2244)"}, "properties": {"repobilityId": "769ed2425b2bf57e", "scanner": "scanner-primary", "fingerprint": "424f762ee18e2299", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2f34c0ebe8d7ca4a", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:2254)"}, "properties": {"repobilityId": "d6826ee26a070951", "scanner": "scanner-primary", "fingerprint": "2f34c0ebe8d7ca4a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-720bc289d1c97969", "level": "error", "message": {"text": "Dangling fetch: GET /api/email/accounts (static/js/settings.js:2297)"}, "properties": {"repobilityId": "82a33933d70c7186", "scanner": "scanner-primary", "fingerprint": "720bc289d1c97969", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1021243a4e6bab09", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/integrations (static/js/settings.js:2314)"}, "properties": {"repobilityId": "e95003c7bba507a5", "scanner": "scanner-primary", "fingerprint": "1021243a4e6bab09", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bca534e9e7e070a5", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:2325)"}, "properties": {"repobilityId": "a3971c74e766fde4", "scanner": "scanner-primary", "fingerprint": "bca534e9e7e070a5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2b4337a23a3bd9a7", "level": "error", "message": {"text": "Dangling fetch: GET /api/email/accounts (static/js/settings.js:2367)"}, "properties": {"repobilityId": "7604cbd8dda7e1b6", "scanner": "scanner-primary", "fingerprint": "2b4337a23a3bd9a7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4124df3bbcc6021f", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/integrations (static/js/settings.js:2377)"}, "properties": {"repobilityId": "53fd9736d980fcfd", "scanner": "scanner-primary", "fingerprint": "4124df3bbcc6021f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f551848f00168ac5", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:2387)"}, "properties": {"repobilityId": "9cbdec98271aa77d", "scanner": "scanner-primary", "fingerprint": "f551848f00168ac5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b2b9330cde321fa1", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/settings (static/js/settings.js:2431)"}, "properties": {"repobilityId": "5a518c0c3a30b96c", "scanner": "scanner-primary", "fingerprint": "b2b9330cde321fa1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e1dede289dca31bd", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/settings (static/js/settings.js:2456)"}, "properties": {"repobilityId": "79f1495be684f1c2", "scanner": "scanner-primary", "fingerprint": "e1dede289dca31bd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-493bf4fc55c29f96", "level": "error", "message": {"text": "Dangling fetch: POST /api/notes/fire-reminder (static/js/settings.js:2517)"}, "properties": {"repobilityId": "d62b9307a25c57f8", "scanner": "scanner-primary", "fingerprint": "493bf4fc55c29f96", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c25dafe7ca3fa25a", "level": "error", "message": {"text": "Dangling fetch: GET /api/email/accounts (static/js/settings.js:2591)"}, "properties": {"repobilityId": "dca953ed49178a28", "scanner": "scanner-primary", "fingerprint": "c25dafe7ca3fa25a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c5f59a5b1aaf1c06", "level": "error", "message": {"text": "Dangling fetch: POST /api/email/accounts/${id}/set-default (static/js/settings.js:2623)"}, "properties": {"repobilityId": "6cc2ce54123f75ea", "scanner": "scanner-primary", "fingerprint": "c5f59a5b1aaf1c06", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1d2855295c2e363a", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/email/accounts/${id} (static/js/settings.js:2633)"}, "properties": {"repobilityId": "298f2cc9dd31a631", "scanner": "scanner-primary", "fingerprint": "1d2855295c2e363a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8ac7df1abc717887", "level": "error", "message": {"text": "Dangling fetch: GET /api/email/config (static/js/settings.js:2787)"}, "properties": {"repobilityId": "233ad8d158979771", "scanner": "scanner-primary", "fingerprint": "8ac7df1abc717887", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cbe57dc0ccd3c8a8", "level": "error", "message": {"text": "Dangling fetch: GET /api/contacts/config (static/js/settings.js:2802)"}, "properties": {"repobilityId": "5dfcb077b48ee23f", "scanner": "scanner-primary", "fingerprint": "cbe57dc0ccd3c8a8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-29cfed276ebbafe6", "level": "error", "message": {"text": "Dangling fetch: GET /api/email/style (static/js/settings.js:2811)"}, "properties": {"repobilityId": "41681e2752e32c9a", "scanner": "scanner-primary", "fingerprint": "29cfed276ebbafe6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a0c57c7d15d12ff8", "level": "error", "message": {"text": "Dangling fetch: PUT /api/email/config (static/js/settings.js:2834)"}, "properties": {"repobilityId": "2bbd7c24138c6787", "scanner": "scanner-primary", "fingerprint": "a0c57c7d15d12ff8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0f67199439bd8f39", "level": "error", "message": {"text": "Dangling fetch: PUT /api/contacts/config (static/js/settings.js:2858)"}, "properties": {"repobilityId": "4085f441b828592a", "scanner": "scanner-primary", "fingerprint": "0f67199439bd8f39", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c6e50c6b2518eff6", "level": "error", "message": {"text": "Dangling fetch: POST /api/email/extract-style (static/js/settings.js:2899)"}, "properties": {"repobilityId": "bcff7cff0f2ae826", "scanner": "scanner-primary", "fingerprint": "c6e50c6b2518eff6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ba38240df0221837", "level": "error", "message": {"text": "Dangling fetch: PUT /api/email/style (static/js/settings.js:2925)"}, "properties": {"repobilityId": "0e0974f505d1467e", "scanner": "scanner-primary", "fingerprint": "ba38240df0221837", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3c629f6f72fb8aee", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/integrations/presets (static/js/settings.js:2973)"}, "properties": {"repobilityId": "37bc6867ce7c3de7", "scanner": "scanner-primary", "fingerprint": "3c629f6f72fb8aee", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-69e156269629c686", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/integrations (static/js/settings.js:3000)"}, "properties": {"repobilityId": "92f1f01c336bca84", "scanner": "scanner-primary", "fingerprint": "69e156269629c686", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6e594c4e5becb3da", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/integrations (static/js/settings.js:3033)"}, "properties": {"repobilityId": "eae5a4c55aa3b9a2", "scanner": "scanner-primary", "fingerprint": "6e594c4e5becb3da", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1e5e093eb1c1110e", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/integrations/${editingId}/test (static/js/settings.js:3113)"}, "properties": {"repobilityId": "28bd9adea6a3b94c", "scanner": "scanner-primary", "fingerprint": "1e5e093eb1c1110e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9512153b4b152edf", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/auth/integrations/${id} (static/js/settings.js:3127)"}, "properties": {"repobilityId": "ab718ed1501ffa4e", "scanner": "scanner-primary", "fingerprint": "9512153b4b152edf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d2789e01e7a190e0", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/integrations (static/js/settings.js:3228)"}, "properties": {"repobilityId": "124af1d9de33c08a", "scanner": "scanner-primary", "fingerprint": "d2789e01e7a190e0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-433deb9a471bb4ba", "level": "error", "message": {"text": "Dangling fetch: GET /api/calendar/config (static/js/settings.js:3229)"}, "properties": {"repobilityId": "214fd957ac6e38fb", "scanner": "scanner-primary", "fingerprint": "433deb9a471bb4ba", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-36e722e56d39738e", "level": "error", "message": {"text": "Dangling fetch: GET /api/contacts/config (static/js/settings.js:3230)"}, "properties": {"repobilityId": "a59cfb61c8cd2e66", "scanner": "scanner-primary", "fingerprint": "36e722e56d39738e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-49c4cb9f014aaf66", "level": "error", "message": {"text": "Dangling fetch: GET /api/contacts/list (static/js/settings.js:3231)"}, "properties": {"repobilityId": "e98ac572d9d6e823", "scanner": "scanner-primary", "fingerprint": "49c4cb9f014aaf66", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-421b0ad56fad9e92", "level": "error", "message": {"text": "Dangling fetch: GET /api/email/accounts (static/js/settings.js:3232)"}, "properties": {"repobilityId": "d19837913af2bd9c", "scanner": "scanner-primary", "fingerprint": "421b0ad56fad9e92", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ed27a86ff34c4386", "level": "error", "message": {"text": "Dangling fetch: GET /api/mcp/servers (static/js/settings.js:3233)"}, "properties": {"repobilityId": "a45240cd536387f1", "scanner": "scanner-primary", "fingerprint": "ed27a86ff34c4386", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1066f1fb42f859b6", "level": "error", "message": {"text": "Dangling fetch: GET /api/vault/config (static/js/settings.js:3234)"}, "properties": {"repobilityId": "a46069067b3bb7c4", "scanner": "scanner-primary", "fingerprint": "1066f1fb42f859b6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9e565bd8dbcfc532", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/auth/integrations/${id} (static/js/settings.js:3355)"}, "properties": {"repobilityId": "dcdd209a3b61b81a", "scanner": "scanner-primary", "fingerprint": "9e565bd8dbcfc532", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f4d179a4cae5e533", "level": "error", "message": {"text": "Dangling fetch: POST /api/calendar/config (static/js/settings.js:3356)"}, "properties": {"repobilityId": "8bdb5c20bc938755", "scanner": "scanner-primary", "fingerprint": "f4d179a4cae5e533", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e134a33c6754773d", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/contacts/clear (static/js/settings.js:3358)"}, "properties": {"repobilityId": "fdfc48375e629dcf", "scanner": "scanner-primary", "fingerprint": "e134a33c6754773d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-77becf1963099078", "level": "error", "message": {"text": "Dangling fetch: PUT /api/contacts/config (static/js/settings.js:3361)"}, "properties": {"repobilityId": "c4d06f2c0267f80b", "scanner": "scanner-primary", "fingerprint": "77becf1963099078", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3a3f1ba3dee1ce68", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/email/accounts/${id} (static/js/settings.js:3363)"}, "properties": {"repobilityId": "b71716bcc35ed4fd", "scanner": "scanner-primary", "fingerprint": "3a3f1ba3dee1ce68", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dba03b4dcbc83fbf", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/mcp/servers/${id} (static/js/settings.js:3364)"}, "properties": {"repobilityId": "0ca5b54b42a94eaa", "scanner": "scanner-primary", "fingerprint": "dba03b4dcbc83fbf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ef3f51ef4ac6fdcf", "level": "error", "message": {"text": "Dangling fetch: POST /api/vault/logout (static/js/settings.js:3366)"}, "properties": {"repobilityId": "2f241d8b5ef6a495", "scanner": "scanner-primary", "fingerprint": "ef3f51ef4ac6fdcf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-32a2f295b29bff64", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/integrations/presets (static/js/settings.js:3391)"}, "properties": {"repobilityId": "4f84c5407f59b764", "scanner": "scanner-primary", "fingerprint": "32a2f295b29bff64", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-31144048ea54db80", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/integrations (static/js/settings.js:3504)"}, "properties": {"repobilityId": "b00e1f34c46ff8ef", "scanner": "scanner-primary", "fingerprint": "31144048ea54db80", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bcfcc01908de83d1", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/integrations/${_editId}/test (static/js/settings.js:3556)"}, "properties": {"repobilityId": "30267997e1241744", "scanner": "scanner-primary", "fingerprint": "bcfcc01908de83d1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f9b16e42b2adffd8", "level": "error", "message": {"text": "Dangling fetch: GET /api/calendar/config (static/js/settings.js:3583)"}, "properties": {"repobilityId": "370640697bb48679", "scanner": "scanner-primary", "fingerprint": "f9b16e42b2adffd8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f058e5b5fc302916", "level": "error", "message": {"text": "Dangling fetch: POST /api/calendar/test (static/js/settings.js:3598)"}, "properties": {"repobilityId": "a205b3717ca54741", "scanner": "scanner-primary", "fingerprint": "f058e5b5fc302916", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-49f754377eddcfbd", "level": "error", "message": {"text": "Dangling fetch: POST /api/calendar/config (static/js/settings.js:3627)"}, "properties": {"repobilityId": "007fc00739dfd274", "scanner": "scanner-primary", "fingerprint": "49f754377eddcfbd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9dab1909fb6d649a", "level": "error", "message": {"text": "Dangling fetch: GET /api/contacts/config (static/js/settings.js:3691)"}, "properties": {"repobilityId": "02577e6f717954bb", "scanner": "scanner-primary", "fingerprint": "9dab1909fb6d649a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bc1014c6cfdf43e3", "level": "error", "message": {"text": "Dangling fetch: PUT /api/contacts/config (static/js/settings.js:3699)"}, "properties": {"repobilityId": "9308a04eaa5ce788", "scanner": "scanner-primary", "fingerprint": "bc1014c6cfdf43e3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-38c0ff5f0670cac9", "level": "error", "message": {"text": "Dangling fetch: POST /api/contacts/add (static/js/settings.js:3725)"}, "properties": {"repobilityId": "f840c982605a51b7", "scanner": "scanner-primary", "fingerprint": "38c0ff5f0670cac9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-477021f1adfa44eb", "level": "error", "message": {"text": "Dangling fetch: GET /api/contacts/export?format=${encodeURIComponent(format)} (static/js/settings.js:3736)"}, "properties": {"repobilityId": "76ae0c0208a1c35d", "scanner": "scanner-primary", "fingerprint": "477021f1adfa44eb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-71181158887bd1b2", "level": "error", "message": {"text": "Dangling fetch: POST /api/contacts/import (static/js/settings.js:3777)"}, "properties": {"repobilityId": "14d98deb8c786a66", "scanner": "scanner-primary", "fingerprint": "71181158887bd1b2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2ff4de2e3ededab3", "level": "error", "message": {"text": "Dangling fetch: GET /api/contacts/list (static/js/settings.js:3811)"}, "properties": {"repobilityId": "c188d6aa958d7743", "scanner": "scanner-primary", "fingerprint": "2ff4de2e3ededab3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6ce5e0e7d862a909", "level": "error", "message": {"text": "Dangling fetch: GET /api/email/accounts (static/js/settings.js:3899)"}, "properties": {"repobilityId": "2df712e8d3b1c43b", "scanner": "scanner-primary", "fingerprint": "6ce5e0e7d862a909", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-91ea7c0cd0c23ca7", "level": "error", "message": {"text": "Dangling fetch: POST /api/email/accounts/test (static/js/settings.js:4260)"}, "properties": {"repobilityId": "c78e3d5f7bb18b49", "scanner": "scanner-primary", "fingerprint": "91ea7c0cd0c23ca7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bffa9bf21d5b622c", "level": "error", "message": {"text": "Dangling fetch: GET /api/vault/config (static/js/settings.js:4383)"}, "properties": {"repobilityId": "4903b254aae2f2e8", "scanner": "scanner-primary", "fingerprint": "bffa9bf21d5b622c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c7f6c28031baa797", "level": "error", "message": {"text": "Dangling fetch: POST /api/vault/config (static/js/settings.js:4406)"}, "properties": {"repobilityId": "8e6f12c91b7afec8", "scanner": "scanner-primary", "fingerprint": "c7f6c28031baa797", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f9a20d8cc5031242", "level": "error", "message": {"text": "Dangling fetch: POST /api/vault/login (static/js/settings.js:4423)"}, "properties": {"repobilityId": "f990b77d1e7632d2", "scanner": "scanner-primary", "fingerprint": "f9a20d8cc5031242", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5e8779e942e5fd27", "level": "error", "message": {"text": "Dangling fetch: POST /api/vault/unlock (static/js/settings.js:4442)"}, "properties": {"repobilityId": "1dbe36b9c5610f4c", "scanner": "scanner-primary", "fingerprint": "5e8779e942e5fd27", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1f19b6cf47ecf708", "level": "error", "message": {"text": "Dangling fetch: POST /api/vault/lock (static/js/settings.js:4459)"}, "properties": {"repobilityId": "a6c39773c98a9319", "scanner": "scanner-primary", "fingerprint": "1f19b6cf47ecf708", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e7fbe65ecb0fb6a5", "level": "error", "message": {"text": "Dangling fetch: POST /api/vault/logout (static/js/settings.js:4469)"}, "properties": {"repobilityId": "c1c6986e0f92c173", "scanner": "scanner-primary", "fingerprint": "e7fbe65ecb0fb6a5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8a69ea0dcb0c7643", "level": "error", "message": {"text": "Dangling fetch: GET /api/mcp/servers (static/js/settings.js:4482)"}, "properties": {"repobilityId": "095ef5ab7bbb19dc", "scanner": "scanner-primary", "fingerprint": "8a69ea0dcb0c7643", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8eeff84fe2da1d39", "level": "error", "message": {"text": "Dangling fetch: POST /api/mcp/servers/${srv.id}/reconnect (static/js/settings.js:4510)"}, "properties": {"repobilityId": "4fbe3777d7558085", "scanner": "scanner-primary", "fingerprint": "8eeff84fe2da1d39", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-579cb1e89706d860", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/mcp/servers/${srv.id} (static/js/settings.js:4520)"}, "properties": {"repobilityId": "104c721777cc65ec", "scanner": "scanner-primary", "fingerprint": "579cb1e89706d860", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7fbccaeab410293e", "level": "error", "message": {"text": "Dangling fetch: GET /api/mcp/servers/${srv.id}/tools (static/js/settings.js:4529)"}, "properties": {"repobilityId": "15aac87979629211", "scanner": "scanner-primary", "fingerprint": "7fbccaeab410293e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-63cbb6a9b7f77f96", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/mcp/servers/${srv.id}/tools (static/js/settings.js:4537)"}, "properties": {"repobilityId": "2c97a7502e4b335e", "scanner": "scanner-primary", "fingerprint": "63cbb6a9b7f77f96", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3b72451da9ac4529", "level": "error", "message": {"text": "Dangling fetch: POST /api/mcp/servers (static/js/settings.js:4589)"}, "properties": {"repobilityId": "9dfb19214a24653a", "scanner": "scanner-primary", "fingerprint": "3b72451da9ac4529", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2f2eea220dca98e2", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/users (static/js/admin.js:35)"}, "properties": {"repobilityId": "0a8bc81d2d4261d8", "scanner": "scanner-primary", "fingerprint": "2f2eea220dca98e2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c88ee2e6fc319435", "level": "error", "message": {"text": "Dangling fetch: PUT /api/auth/users/${encodeURIComponent(username)}/privileges (static/js/admin.js:136)"}, "properties": {"repobilityId": "fa62489703bc62f0", "scanner": "scanner-primary", "fingerprint": "c88ee2e6fc319435", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2f894a6176e8bd4c", "level": "error", "message": {"text": "Dangling fetch: PUT /api/auth/users/${encodeURIComponent(oldUsername)}/rename (static/js/admin.js:162)"}, "properties": {"repobilityId": "3073537549613d87", "scanner": "scanner-primary", "fingerprint": "2f894a6176e8bd4c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2fb18ce69edc52fa", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/auth/users (static/js/admin.js:191)"}, "properties": {"repobilityId": "9a7346cce6697fa8", "scanner": "scanner-primary", "fingerprint": "2fb18ce69edc52fa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-25f803919ba0efff", "level": "error", "message": {"text": "Dangling fetch: PUT /api/auth/users/${encodeURIComponent(username)}/privileges (static/js/admin.js:239)"}, "properties": {"repobilityId": "6646bf420d10e038", "scanner": "scanner-primary", "fingerprint": "25f803919ba0efff", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-01dae179f74dbfb0", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/status (static/js/admin.js:265)"}, "properties": {"repobilityId": "8bbb918f91affecf", "scanner": "scanner-primary", "fingerprint": "01dae179f74dbfb0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c526bf98723713d2", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/signup-toggle (static/js/admin.js:271)"}, "properties": {"repobilityId": "b7b4fc4f167140aa", "scanner": "scanner-primary", "fingerprint": "c526bf98723713d2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-492c1ba21ddef136", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/users (static/js/admin.js:289)"}, "properties": {"repobilityId": "ea7c95bf98fadb32", "scanner": "scanner-primary", "fingerprint": "492c1ba21ddef136", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e7991870a00f22f7", "level": "error", "message": {"text": "Dangling fetch: GET /api/mcp/servers (static/js/admin.js:1367)"}, "properties": {"repobilityId": "9a7c6c16246a7219", "scanner": "scanner-primary", "fingerprint": "e7991870a00f22f7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-624bdebf98e59ee7", "level": "error", "message": {"text": "Dangling fetch: POST /api/mcp/servers/${btn.dataset.admMcpReconnect}/reconnect (static/js/admin.js:1397)"}, "properties": {"repobilityId": "9be45ab9a0752dd7", "scanner": "scanner-primary", "fingerprint": "624bdebf98e59ee7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6ab5933ad0e51c3a", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/mcp/servers/${btn.dataset.admMcpToggle} (static/js/admin.js:1408)"}, "properties": {"repobilityId": "50ab3093ab92c8f2", "scanner": "scanner-primary", "fingerprint": "6ab5933ad0e51c3a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dc68d1c49775a629", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/mcp/servers/${btn.dataset.admMcpDelete} (static/js/admin.js:1415)"}, "properties": {"repobilityId": "28208c33b980162f", "scanner": "scanner-primary", "fingerprint": "dc68d1c49775a629", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-281fb8293fd4f849", "level": "error", "message": {"text": "Dangling fetch: GET /api/mcp/servers/${sid}/tools (static/js/admin.js:1441)"}, "properties": {"repobilityId": "61974d1a3dd17634", "scanner": "scanner-primary", "fingerprint": "281fb8293fd4f849", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-06b768b692fae086", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/mcp/servers/${serverId}/tools (static/js/admin.js:1485)"}, "properties": {"repobilityId": "2a7d29bc6ee5fab2", "scanner": "scanner-primary", "fingerprint": "06b768b692fae086", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-beea443f394c326e", "level": "error", "message": {"text": "Dangling fetch: POST /api/mcp/servers (static/js/admin.js:1684)"}, "properties": {"repobilityId": "149ca2ab7a75c10e", "scanner": "scanner-primary", "fingerprint": "beea443f394c326e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e44a1470b3863622", "level": "error", "message": {"text": "Dangling fetch: GET /api/personal (static/js/admin.js:1708)"}, "properties": {"repobilityId": "4726f91516972379", "scanner": "scanner-primary", "fingerprint": "e44a1470b3863622", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cdba7255004a67ed", "level": "error", "message": {"text": "Dangling fetch: POST /api/personal/upload (static/js/admin.js:1767)"}, "properties": {"repobilityId": "99ce6c36b1f53855", "scanner": "scanner-primary", "fingerprint": "cdba7255004a67ed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c5eed0f3320f5d74", "level": "error", "message": {"text": "Dangling fetch: POST /api/personal/add_directory (static/js/admin.js:1788)"}, "properties": {"repobilityId": "1589e87e30b7ee56", "scanner": "scanner-primary", "fingerprint": "c5eed0f3320f5d74", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-02a2b68394eadbd3", "level": "error", "message": {"text": "Dangling fetch: POST /api/personal/reload (static/js/admin.js:1799)"}, "properties": {"repobilityId": "7aac6a3c5e38a76c", "scanner": "scanner-primary", "fingerprint": "02a2b68394eadbd3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-18f8b2abee8b19d3", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/features (static/js/admin.js:1945)"}, "properties": {"repobilityId": "551c21750510e471", "scanner": "scanner-primary", "fingerprint": "18f8b2abee8b19d3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0b09d9c105450e67", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/features (static/js/admin.js:1955)"}, "properties": {"repobilityId": "72bf36b946d9309d", "scanner": "scanner-primary", "fingerprint": "0b09d9c105450e67", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-99a785f0c98608e8", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/admin/wipe/${kind} (static/js/admin.js:2082)"}, "properties": {"repobilityId": "155f5bb683d394b1", "scanner": "scanner-primary", "fingerprint": "99a785f0c98608e8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fadf9826980586f0", "level": "error", "message": {"text": "Dangling fetch: GET /api/stt/stats (static/js/voiceRecorder.js:31)"}, "properties": {"repobilityId": "1cbdb478a5f7be2b", "scanner": "scanner-primary", "fingerprint": "fadf9826980586f0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c6cdae84c30a45d1", "level": "error", "message": {"text": "Dangling fetch: POST /api/stt/transcribe (static/js/voiceRecorder.js:115)"}, "properties": {"repobilityId": "c111ef5e5dcae6af", "scanner": "scanner-primary", "fingerprint": "c6cdae84c30a45d1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-94d6dadd16ab3c91", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/settings (static/js/emailLibrary.js:322)"}, "properties": {"repobilityId": "609a2268609b5a32", "scanner": "scanner-primary", "fingerprint": "94d6dadd16ab3c91", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a43d5344d6fa03ec", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/features (static/js/censor.js:62)"}, "properties": {"repobilityId": "2b987aa7270ac098", "scanner": "scanner-primary", "fingerprint": "a43d5344d6fa03ec", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a2df9348a795f4b5", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/settings (static/js/keyboard-shortcuts.js:59)"}, "properties": {"repobilityId": "e3ee62346d67a695", "scanner": "scanner-primary", "fingerprint": "a2df9348a795f4b5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e50e84d6613058a5", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/status (static/js/init.js:29)"}, "properties": {"repobilityId": "31d8a7179d790056", "scanner": "scanner-primary", "fingerprint": "e50e84d6613058a5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cc393c4a3935aa5a", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/settings (static/js/tasks.js:185)"}, "properties": {"repobilityId": "ecdf51c5d6601eda", "scanner": "scanner-primary", "fingerprint": "cc393c4a3935aa5a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5d265f64b54d1852", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/settings (static/js/tasks.js:198)"}, "properties": {"repobilityId": "8fd7bb1bfa044175", "scanner": "scanner-primary", "fingerprint": "5d265f64b54d1852", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c5eafe3c5262f523", "level": "error", "message": {"text": "Dangling fetch: GET /api/hwfit/models?${fallbackParams} (static/js/cookbook-hwfit.js:545)"}, "properties": {"repobilityId": "cdf0197d5fa69b97", "scanner": "scanner-primary", "fingerprint": "c5eafe3c5262f523", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c39fe55c1b5e3710", "level": "error", "message": {"text": "Dangling fetch: POST /api/notes/fire-reminder (static/js/notes.js:948)"}, "properties": {"repobilityId": "7a1bf37dabc0b85d", "scanner": "scanner-primary", "fingerprint": "c39fe55c1b5e3710", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6a0145bc4ee58213", "level": "error", "message": {"text": "Dangling fetch: PUT /api/prefs/custom-themes (static/js/theme.js:165)"}, "properties": {"repobilityId": "8d52d8f3d6853cf8", "scanner": "scanner-primary", "fingerprint": "6a0145bc4ee58213", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-db5a18512d3d6c08", "level": "error", "message": {"text": "Dangling fetch: PUT /api/prefs/theme (static/js/theme.js:513)"}, "properties": {"repobilityId": "e68fb4a9ee536dbc", "scanner": "scanner-primary", "fingerprint": "db5a18512d3d6c08", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a1e4b95bc86a95fe", "level": "error", "message": {"text": "Dangling fetch: GET /api/prefs/theme (static/js/theme.js:524)"}, "properties": {"repobilityId": "b5cc30f200bd239a", "scanner": "scanner-primary", "fingerprint": "a1e4b95bc86a95fe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3ddf3a16e656b933", "level": "error", "message": {"text": "Dangling fetch: GET /api/fonts/custom (static/js/theme.js:1157)"}, "properties": {"repobilityId": "be9ae01b89316e19", "scanner": "scanner-primary", "fingerprint": "3ddf3a16e656b933", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7b5120ca6000c806", "level": "error", "message": {"text": "Dangling fetch: GET /api/prefs/custom-themes (static/js/theme.js:2116)"}, "properties": {"repobilityId": "985208acb08bb910", "scanner": "scanner-primary", "fingerprint": "7b5120ca6000c806", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e4af4ecf663c0f2a", "level": "error", "message": {"text": "Dangling fetch: GET /api/hwfit/system?${qp} (static/js/cookbook.js:1292)"}, "properties": {"repobilityId": "8b2b516ab1fd875d", "scanner": "scanner-primary", "fingerprint": "e4af4ecf663c0f2a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-008ce1aae33bd03c", "level": "error", "message": {"text": "Dangling fetch: PUT /api/upload/${att.id}/vision (static/js/chatRenderer.js:301)"}, "properties": {"repobilityId": "65353d9f84aa15f0", "scanner": "scanner-primary", "fingerprint": "008ce1aae33bd03c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2dd5aa5b817581f1", "level": "error", "message": {"text": "Dangling fetch: GET /api/upload/${att.id}/vision (static/js/chatRenderer.js:365)"}, "properties": {"repobilityId": "4987d6d0a10b0d68", "scanner": "scanner-primary", "fingerprint": "2dd5aa5b817581f1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dcdeeb9cec197350", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/settings (static/js/tts-ai.js:35)"}, "properties": {"repobilityId": "921c701f8ac353cc", "scanner": "scanner-primary", "fingerprint": "dcdeeb9cec197350", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7590a950e482284f", "level": "error", "message": {"text": "Dangling fetch: GET /api/tts/stats (static/js/tts-ai.js:44)"}, "properties": {"repobilityId": "cb60482bec4ee15c", "scanner": "scanner-primary", "fingerprint": "7590a950e482284f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f84e24a78dabaa71", "level": "error", "message": {"text": "Dangling fetch: POST /api/tts/synthesize (static/js/tts-ai.js:132)"}, "properties": {"repobilityId": "2dff226c34589b76", "scanner": "scanner-primary", "fingerprint": "f84e24a78dabaa71", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e2a6bf96e2166f3a", "level": "error", "message": {"text": "Dangling fetch: GET /api/hwfit/profiles?${params} (static/js/cookbookServe.js:839)"}, "properties": {"repobilityId": "fc13d3c4009911e0", "scanner": "scanner-primary", "fingerprint": "e2a6bf96e2166f3a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dc283a5f5e152a53", "level": "error", "message": {"text": "Dangling fetch: GET /api/model/cached${params} (static/js/cookbookServe.js:2007)"}, "properties": {"repobilityId": "5892a76273591931", "scanner": "scanner-primary", "fingerprint": "dc283a5f5e152a53", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-504c1e942221dd39", "level": "note", "message": {"text": "Unused endpoint: GET /api/generated-image/{filename}"}, "properties": {"repobilityId": "b1c4aa0302c9d5ae", "scanner": "scanner-primary", "fingerprint": "504c1e942221dd39", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "49cf5d64a7f531bc", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5f9819d9ecb49931", "level": "note", "message": {"text": "Unused endpoint: GET /calendar"}, "properties": {"repobilityId": "0998bbd1f23308ad", "scanner": "scanner-primary", "fingerprint": "5f9819d9ecb49931", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9c4ef629fd907879", "level": "note", "message": {"text": "Unused endpoint: GET /cookbook"}, "properties": {"repobilityId": "0c7fa985c8ec1ee4", "scanner": "scanner-primary", "fingerprint": "9c4ef629fd907879", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2036430dc3a32669", "level": "note", "message": {"text": "Unused endpoint: GET /email"}, "properties": {"repobilityId": "f6e544d9ab713485", "scanner": "scanner-primary", "fingerprint": "2036430dc3a32669", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-279d61489dedfa5f", "level": "note", "message": {"text": "Unused endpoint: GET /memory"}, "properties": {"repobilityId": "cec7347cda53dbb2", "scanner": "scanner-primary", "fingerprint": "279d61489dedfa5f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a460cef1f3efcd6e", "level": "note", "message": {"text": "Unused endpoint: GET /gallery"}, "properties": {"repobilityId": "a479455ebc4b3ac9", "scanner": "scanner-primary", "fingerprint": "a460cef1f3efcd6e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fd0e06afbaab19b3", "level": "note", "message": {"text": "Unused endpoint: GET /tasks"}, "properties": {"repobilityId": "0911789277e42d0a", "scanner": "scanner-primary", "fingerprint": "fd0e06afbaab19b3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-60ce72dcd3e9a568", "level": "note", "message": {"text": "Unused endpoint: GET /library"}, "properties": {"repobilityId": "4cde4cc76403e50a", "scanner": "scanner-primary", "fingerprint": "60ce72dcd3e9a568", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a282a367387e9e3c", "level": "note", "message": {"text": "Unused endpoint: GET /backgrounds"}, "properties": {"repobilityId": "18705a0ec462241d", "scanner": "scanner-primary", "fingerprint": "a282a367387e9e3c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6a4dfcad3eb1618a", "level": "note", "message": {"text": "Unused endpoint: GET /login"}, "properties": {"repobilityId": "d75e47f51b6ea43a", "scanner": "scanner-primary", "fingerprint": "6a4dfcad3eb1618a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6c2507f3182299a0", "level": "note", "message": {"text": "Unused endpoint: GET /api/version"}, "properties": {"repobilityId": "93e43274a2d011ed", "scanner": "scanner-primary", "fingerprint": "6c2507f3182299a0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4756b4c4da7d2088", "level": "note", "message": {"text": "Unused endpoint: GET /api/health"}, "properties": {"repobilityId": "11cf961f16829593", "scanner": "scanner-primary", "fingerprint": "4756b4c4da7d2088", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-52765bcf81a6e09b", "level": "note", "message": {"text": "Unused endpoint: GET /api/ready"}, "properties": {"repobilityId": "5eebc0b214f3e310", "scanner": "scanner-primary", "fingerprint": "52765bcf81a6e09b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f279069c5e862217", "level": "note", "message": {"text": "Unused endpoint: GET /pair"}, "properties": {"repobilityId": "2aa8fdf59e785ef9", "scanner": "scanner-primary", "fingerprint": "f279069c5e862217", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e343c1fa58c93a21", "level": "note", "message": {"text": "Unused endpoint: POST /pair"}, "properties": {"repobilityId": "050ef2bdca96ec79", "scanner": "scanner-primary", "fingerprint": "e343c1fa58c93a21", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-251e3dbd600caba5", "level": "note", "message": {"text": "Unused endpoint: GET /v1/models"}, "properties": {"repobilityId": "c7b297b7ffd2e6e3", "scanner": "scanner-primary", "fingerprint": "251e3dbd600caba5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-347ef23ab91848f0", "level": "note", "message": {"text": "Unused endpoint: POST /v1/images/generations"}, "properties": {"repobilityId": "4ae80fc74e1e1d29", "scanner": "scanner-primary", "fingerprint": "347ef23ab91848f0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-970f907bd25af793", "level": "note", "message": {"text": "Unused endpoint: POST /v1/images/inpaint"}, "properties": {"repobilityId": "998f810191fa4cec", "scanner": "scanner-primary", "fingerprint": "970f907bd25af793", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-35bd0071352fd56b", "level": "note", "message": {"text": "Unused endpoint: POST /v1/images/harmonize"}, "properties": {"repobilityId": "0e11b631099c9da7", "scanner": "scanner-primary", "fingerprint": "35bd0071352fd56b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-45c45555041fa74b", "level": "note", "message": {"text": "Unused endpoint: GET /system"}, "properties": {"repobilityId": "8254964a4eb7a3eb", "scanner": "scanner-primary", "fingerprint": "45c45555041fa74b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6d9534131ed7ca41", "level": "note", "message": {"text": "Unused endpoint: GET /profiles"}, "properties": {"repobilityId": "b41a216d7e299cd6", "scanner": "scanner-primary", "fingerprint": "6d9534131ed7ca41", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5c0aed83ee15ffc6", "level": "note", "message": {"text": "Unused endpoint: GET /image-models"}, "properties": {"repobilityId": "4433cd7ffec85cf3", "scanner": "scanner-primary", "fingerprint": "5c0aed83ee15ffc6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4a12a9bd91f7e8b8", "level": "note", "message": {"text": "Unused endpoint: POST /api/gallery/upload"}, "properties": {"repobilityId": "56fc721c0830e6dc", "scanner": "scanner-primary", "fingerprint": "4a12a9bd91f7e8b8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2e4d4797e5043e1d", "level": "note", "message": {"text": "Unused endpoint: POST /api/gallery/{image_id}/replace"}, "properties": {"repobilityId": "1fbb9680d3ec8d4a", "scanner": "scanner-primary", "fingerprint": "2e4d4797e5043e1d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-32bc838333a2769d", "level": "note", "message": {"text": "Unused endpoint: POST /api/gallery/{image_id}/rename"}, "properties": {"repobilityId": "6241440c47dedc4b", "scanner": "scanner-primary", "fingerprint": "32bc838333a2769d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bd2566dc90d6d2a5", "level": "note", "message": {"text": "Unused endpoint: POST /api/gallery/{image_id}/rotate"}, "properties": {"repobilityId": "bd3a1c26ecc4b6bb", "scanner": "scanner-primary", "fingerprint": "bd2566dc90d6d2a5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6a29f328b3a0ad20", "level": "note", "message": {"text": "Unused endpoint: POST /api/gallery/ai-upscale"}, "properties": {"repobilityId": "a11f6f9cda07c6a2", "scanner": "scanner-primary", "fingerprint": "6a29f328b3a0ad20", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-daa36793be0a19b7", "level": "note", "message": {"text": "Unused endpoint: POST /api/gallery/style-transfer"}, "properties": {"repobilityId": "551600256fd1ad01", "scanner": "scanner-primary", "fingerprint": "daa36793be0a19b7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a247b71180396f44", "level": "note", "message": {"text": "Unused endpoint: GET /api/gallery/tags"}, "properties": {"repobilityId": "e7022aca0da64a04", "scanner": "scanner-primary", "fingerprint": "a247b71180396f44", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b084476c864f2b2a", "level": "note", "message": {"text": "Unused endpoint: GET /api/gallery/albums"}, "properties": {"repobilityId": "090f70e7c87b4b88", "scanner": "scanner-primary", "fingerprint": "b084476c864f2b2a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-89b3da950dd4fd8d", "level": "note", "message": {"text": "Unused endpoint: POST /api/gallery/albums"}, "properties": {"repobilityId": "60c9ba6d81b0bd66", "scanner": "scanner-primary", "fingerprint": "89b3da950dd4fd8d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3c8fd71877c420be", "level": "note", "message": {"text": "Unused endpoint: GET /api/gallery/stats"}, "properties": {"repobilityId": "63e0463a3e262ee6", "scanner": "scanner-primary", "fingerprint": "3c8fd71877c420be", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4b9f5b4ee13fd47f", "level": "note", "message": {"text": "Unused endpoint: POST /api/gallery/ai-tag-batch"}, "properties": {"repobilityId": "95a36fe71e33ca9e", "scanner": "scanner-primary", "fingerprint": "4b9f5b4ee13fd47f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-09b1735973f6af1a", "level": "note", "message": {"text": "Unused endpoint: GET /api/gallery/{image_id}"}, "properties": {"repobilityId": "ddb91a3002b2004a", "scanner": "scanner-primary", "fingerprint": "09b1735973f6af1a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dc7e9275ac5cd002", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/gallery/{image_id}"}, "properties": {"repobilityId": "647b868d4a10ee3c", "scanner": "scanner-primary", "fingerprint": "dc7e9275ac5cd002", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c54dea87b8f0be4d", "level": "note", "message": {"text": "Unused endpoint: POST /api/gallery/download-zip"}, "properties": {"repobilityId": "4aba977c031e18de", "scanner": "scanner-primary", "fingerprint": "c54dea87b8f0be4d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-150ced4ab00a917b", "level": "note", "message": {"text": "Unused endpoint: POST /api/gallery/clear-user-tags"}, "properties": {"repobilityId": "b9c89a2adcca6b1b", "scanner": "scanner-primary", "fingerprint": "150ced4ab00a917b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d005f10aa8fb4f99", "level": "note", "message": {"text": "Unused endpoint: POST /api/gallery/clear-ai-tags"}, "properties": {"repobilityId": "d2acc6d76e0d7f48", "scanner": "scanner-primary", "fingerprint": "d005f10aa8fb4f99", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-df08e10e338fae04", "level": "note", "message": {"text": "Unused endpoint: POST /api/gallery/dedupe-tags"}, "properties": {"repobilityId": "e37c3855903b91ae", "scanner": "scanner-primary", "fingerprint": "df08e10e338fae04", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c0794109680b418f", "level": "note", "message": {"text": "Unused endpoint: POST /api/image/harmonize"}, "properties": {"repobilityId": "5d0644affdc588d7", "scanner": "scanner-primary", "fingerprint": "c0794109680b418f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0cac05ad6de9fefc", "level": "note", "message": {"text": "Unused endpoint: POST /api/image/sharpen"}, "properties": {"repobilityId": "fc5fed8458fb9f3f", "scanner": "scanner-primary", "fingerprint": "0cac05ad6de9fefc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e3cacd3a03162c19", "level": "note", "message": {"text": "Unused endpoint: POST /api/image/denoise"}, "properties": {"repobilityId": "c49d05010485e863", "scanner": "scanner-primary", "fingerprint": "e3cacd3a03162c19", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-43afb1301f8f651f", "level": "note", "message": {"text": "Unused endpoint: POST /api/image/remove-bg"}, "properties": {"repobilityId": "b71bd7985908bf7e", "scanner": "scanner-primary", "fingerprint": "43afb1301f8f651f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-547fd38c0d6b8869", "level": "note", "message": {"text": "Unused endpoint: POST /api/image/enhance-face"}, "properties": {"repobilityId": "8c18ffc16169ccec", "scanner": "scanner-primary", "fingerprint": "547fd38c0d6b8869", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5953d2d195eba81f", "level": "note", "message": {"text": "Unused endpoint: PUT /api/gallery/albums/{album_id}"}, "properties": {"repobilityId": "c10738dd7086b369", "scanner": "scanner-primary", "fingerprint": "5953d2d195eba81f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-71295cbf78aeb911", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/gallery/albums/{album_id}"}, "properties": {"repobilityId": "70546f532cb24f5d", "scanner": "scanner-primary", "fingerprint": "71295cbf78aeb911", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c48a98c50c40ee88", "level": "note", "message": {"text": "Unused endpoint: POST /api/gallery/albums/{album_id}/add"}, "properties": {"repobilityId": "38f45b1364303e2e", "scanner": "scanner-primary", "fingerprint": "c48a98c50c40ee88", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f679d5c4c2fe4ddd", "level": "note", "message": {"text": "Unused endpoint: POST /api/gallery/albums/{album_id}/remove"}, "properties": {"repobilityId": "0ff8374eb514f6f2", "scanner": "scanner-primary", "fingerprint": "f679d5c4c2fe4ddd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d99043581b9196af", "level": "note", "message": {"text": "Unused endpoint: POST /api/gallery/{image_id}/favorite"}, "properties": {"repobilityId": "04d1fc78ba46e710", "scanner": "scanner-primary", "fingerprint": "d99043581b9196af", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}