{"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-f3600a12ef9698db", "name": "Possibly dead Python function: cleanup", "shortDescription": {"text": "Possibly dead Python function: 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-869237e91044bfc3", "name": "Possibly dead Python function: start_server", "shortDescription": {"text": "Possibly dead Python function: start_server"}, "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-85b116dfa1ef86f3", "name": "Possibly dead Python function: log_message", "shortDescription": {"text": "Possibly dead Python function: log_message"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e266896544b8de31", "name": "Possibly dead Python function: start_static_server", "shortDescription": {"text": "Possibly dead Python function: start_static_server"}, "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-4ecaa95a70d0e331", "name": "Possibly dead Python function: open_url", "shortDescription": {"text": "Possibly dead Python function: open_url"}, "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-54afb4ae194060d6", "name": "Possibly dead Python function: getLocalDomain", "shortDescription": {"text": "Possibly dead Python function: getLocalDomain"}, "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-3657b3a657f562db", "name": "Possibly dead Python function: launchRdp", "shortDescription": {"text": "Possibly dead Python function: launchRdp"}, "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-21b777f47146f0cc", "name": "Possibly dead Python function: launchMsra", "shortDescription": {"text": "Possibly dead Python function: launchMsra"}, "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-ca3fd6b6fd52029c", "name": "Possibly dead Python function: launchTeamViewer", "shortDescription": {"text": "Possibly dead Python function: launchTeamViewer"}, "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-e7ed80d7c6b04117", "name": "Possibly dead Python function: openExternal", "shortDescription": {"text": "Possibly dead Python function: openExternal"}, "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-ec257a13a667c3bc", "name": "Possibly dead Python function: showItemInFolder", "shortDescription": {"text": "Possibly dead Python function: showItemInFolder"}, "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-e87c9b3d1f1c7098", "name": "Possibly dead Python function: saveFileAs", "shortDescription": {"text": "Possibly dead Python function: saveFileAs"}, "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-b127fc7646fc6af6", "name": "Possibly dead Python function: initialize_shim", "shortDescription": {"text": "Possibly dead Python function: initialize_shim"}, "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-02991490bdb90de7", "name": "Possibly dead Python function: handle_host_update", "shortDescription": {"text": "Possibly dead Python function: handle_host_update"}, "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-73069200d33352f0", "name": "Possibly dead Python function: filter", "shortDescription": {"text": "Possibly dead Python function: filter"}, "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-b96f3d0916f76a7e", "name": "Possibly dead Python function: connect_winrm", "shortDescription": {"text": "Possibly dead Python function: connect_winrm"}, "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-a0d0632290bc974f", "name": "Possibly dead Python function: producer", "shortDescription": {"text": "Possibly dead Python function: producer"}, "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-0426b27ba513150b", "name": "Possibly dead Python function: translate", "shortDescription": {"text": "Possibly dead Python function: translate"}, "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-c186d383c960377f", "name": "Possibly dead Python function: check_port", "shortDescription": {"text": "Possibly dead Python function: check_port"}, "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-d6779022a5947497", "name": "Possibly dead Python function: resolve_and_check_status", "shortDescription": {"text": "Possibly dead Python function: resolve_and_check_status"}, "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-c40b8f257219d335", "name": "Possibly dead Python function: start_ping", "shortDescription": {"text": "Possibly dead Python function: start_ping"}, "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-09ddc61981825268", "name": "Possibly dead Python function: run_traceroute", "shortDescription": {"text": "Possibly dead Python function: run_traceroute"}, "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-a94f10666dcaf58b", "name": "Possibly dead Python function: test_specific_ports", "shortDescription": {"text": "Possibly dead Python function: test_specific_ports"}, "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-41ba1c9186b1b3cc", "name": "Possibly dead Python function: initiate_rdp", "shortDescription": {"text": "Possibly dead Python function: initiate_rdp"}, "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-b7baf3a5adebe7d8", "name": "Possibly dead Python function: initiate_msra", "shortDescription": {"text": "Possibly dead Python function: initiate_msra"}, "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-f709d1c80b4dbceb", "name": "Possibly dead Python function: find_host_by_name", "shortDescription": {"text": "Possibly dead Python function: find_host_by_name"}, "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-f85543c7a24582e5", "name": "Possibly dead Python function: scan_host", "shortDescription": {"text": "Possibly dead Python function: scan_host"}, "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-a832e9ce4ab1223a", "name": "Possibly dead Python function: scan_port", "shortDescription": {"text": "Possibly dead Python function: scan_port"}, "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-6ff156404058f007", "name": "Possibly dead Python function: run_daily_backup_check", "shortDescription": {"text": "Possibly dead Python function: run_daily_backup_check"}, "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-44454a9d58eb4d98", "name": "Stray `console.log` in TS/JS \u2014 electron/electron/main.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 electron/electron/main.ts:56"}, "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-0b150834ec97815d", "name": "Stray `console.log` in TS/JS \u2014 electron/dist-electron/main.js:2", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 electron/dist-electron/main.js:2"}, "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-5733956c1bf62373", "name": "`truncate` class without `title=` for hover reveal \u2014 electron/src/components/LoadingScreen.tsx:115", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 electron/src/components/LoadingScreen.tsx:115"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-05934a67cfb0defe", "name": "`truncate` class without `title=` for hover reveal \u2014 electron/src/components/Dashboard/PixModal.tsx:47", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 electron/src/components/Dashboard/PixModal.tsx:47"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b775eda31c2de4d0", "name": "`truncate` class without `title=` for hover reveal \u2014 electron/src/components/Dashboard/HostDetailsModal.tsx:255", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 electron/src/components/Dashboard/HostDetailsModal.tsx:255"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8a278da2f005855e", "name": "`truncate` class without `title=` for hover reveal \u2014 electron/src/components/HostDetails/SessionsTab.tsx:39", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 electron/src/components/HostDetails/SessionsTab.tsx:39"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8cd149d36c5f2259", "name": "`truncate` class without `title=` for hover reveal \u2014 electron/src/components/HostDetails/ServicesTab.tsx:106", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 electron/src/components/HostDetails/ServicesTab.tsx:106"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-adcda5bf2d2f3582", "name": "`truncate` class without `title=` for hover reveal \u2014 electron/src/components/HostDetails/LogsTab.tsx:78", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 electron/src/components/HostDetails/LogsTab.tsx:78"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-81f4c350dd784cf3", "name": "`truncate` class without `title=` for hover reveal \u2014 electron/src/components/Tools/NetworkScanner.tsx:246", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 electron/src/components/Tools/NetworkScanner.tsx:246"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bccc45c1d85731ee", "name": "Stray `console.log` in TS/JS \u2014 electron/src/contexts/VaultContext.tsx:155", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 electron/src/contexts/VaultContext.tsx:155"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-050ffebf263a058c", "name": "`truncate` class without `title=` for hover reveal \u2014 electron/src/pages/Terminal.tsx:334", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 electron/src/pages/Terminal.tsx:334"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-061c5c3e289101ee", "name": "`truncate` class without `title=` for hover reveal \u2014 electron/src/pages/Security.tsx:449", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 electron/src/pages/Security.tsx:449"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d5eb20c5d97cd30d", "name": "Insecure pattern 'node_child_process' in electron/electron/main.ts:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in electron/electron/main.ts:5"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c366fc0f2c5bfe3b", "name": "Insecure pattern 'node_child_process' in electron/dist-electron/main.js:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in electron/dist-electron/main.js:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-058396efa73f46e6", "name": "Possible secret in electron/src/pages/Security.tsx", "shortDescription": {"text": "Possible secret in electron/src/pages/Security.tsx"}, "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-c86b9fcd7e5bff61", "name": "Insecure pattern 'subprocess_shell_true' in python/main.py:30", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in python/main.py:30"}, "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-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-node@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-118b20824a0f4866", "name": "Very large file: python/api/routes/network.py (1201 lines)", "shortDescription": {"text": "Very large file: python/api/routes/network.py (1201 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "6 test file(s) for 111 source file(s) (ratio 0.05). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 45 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 73 placeholder/mock markers across 20 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ecb0d2c55ed6875d", "name": "Agent authority lacks a verifier contract: .claude/settings.local.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/settings.local.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-92c5e987febb36be", "name": "Commented-code block (5 lines) in electron/electron/preload.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in electron/electron/preload.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cfb52ff28349a65e", "name": "Commented-code block (5 lines) in electron/electron/main.ts:311", "shortDescription": {"text": "Commented-code block (5 lines) in electron/electron/main.ts: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-0b5896ca3c7be3ee", "name": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/utils/teamviewer.ts:50", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/utils/teamviewer.ts:50"}, "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-9b1825e38cd715a9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/components/Tools/NetworkScanner.tsx:64", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/components/Tools/NetworkScanner.tsx:64"}, "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-449637a4a8f93879", "name": "Commented-code block (5 lines) in electron/src/contexts/MonitoringContext.tsx:34", "shortDescription": {"text": "Commented-code block (5 lines) in electron/src/contexts/MonitoringContext.tsx: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-1fa46e4f71727636", "name": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/contexts/MonitoringContext.tsx:36", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/contexts/MonitoringContext.tsx:36"}, "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-27b3e193fa2bf2a9", "name": "Commented-code block (5 lines) in electron/src/contexts/ToolsContext.tsx:123", "shortDescription": {"text": "Commented-code block (5 lines) in electron/src/contexts/ToolsContext.tsx: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-f0c0845507cc99e9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/contexts/ToolsContext.tsx:459", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/contexts/ToolsContext.tsx:459"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-18599eae300d6f83", "name": "Commented-code block (6 lines) in electron/src/pages/Dashboard.tsx:413", "shortDescription": {"text": "Commented-code block (6 lines) in electron/src/pages/Dashboard.tsx:413"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-97174cac54fa1689", "name": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/pages/Dashboard.tsx:279", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/pages/Dashboard.tsx:279"}, "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-ac5f0097869a68b5", "name": "Commented-code block (6 lines) in electron/src/pages/Terminal.tsx:111", "shortDescription": {"text": "Commented-code block (6 lines) in electron/src/pages/Terminal.tsx:111"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b8ad8465f202bafb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/pages/Terminal.tsx:36", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/pages/Terminal.tsx:36"}, "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-5febbdb5a2869bc5", "name": "Commented-code block (7 lines) in electron/src/pages/HostDetails.tsx:160", "shortDescription": {"text": "Commented-code block (7 lines) in electron/src/pages/HostDetails.tsx: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-c7622fbb2442e38e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/pages/HostDetails.tsx:222", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/pages/HostDetails.tsx: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-da253f8fd5dce4df", "name": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/pages/Settings.tsx:146", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/pages/Settings.tsx:146"}, "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-b8498077b4cffef0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/pages/Security.tsx:131", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/pages/Security.tsx:131"}, "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-1325c25142ae4b88", "name": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/pages/Tools.tsx:98", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/pages/Tools.tsx:98"}, "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-7fb2b31d80d0f36d", "name": "Commented-code block (6 lines) in electron/src/hooks/useHostData.ts:95", "shortDescription": {"text": "Commented-code block (6 lines) in electron/src/hooks/useHostData.ts:95"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0abf15914b04aa9f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/hooks/useHostData.ts:149", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/hooks/useHostData.ts:149"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5835e861d39d869a", "name": "Commented-code block (6 lines) in electron/src/hooks/useHostActions.ts:142", "shortDescription": {"text": "Commented-code block (6 lines) in electron/src/hooks/useHostActions.ts:142"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-23ccca5e79d4430d", "name": "Commented-code block (6 lines) in electron/src/hooks/useFilteredHosts.ts:80", "shortDescription": {"text": "Commented-code block (6 lines) in electron/src/hooks/useFilteredHosts.ts:80"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-78d3b09e4b0f4fd5", "name": "Commented-code block (5 lines) in python/main_webview.py:108", "shortDescription": {"text": "Commented-code block (5 lines) in python/main_webview.py:108"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-15feb37bd9fd93d6", "name": "Stub function `log_message` (body is just `pass`/`return`) \u2014 python/main_webview.py:124", "shortDescription": {"text": "Stub function `log_message` (body is just `pass`/`return`) \u2014 python/main_webview.py:124"}, "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-76e60fc550b758e8", "name": "Network/subprocess call without timeout or try/except \u2014 python/main.py:41", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 python/main.py:41"}, "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-aa6aed59b92bc2b2", "name": "Commented-code block (7 lines) in python/api/server.py:123", "shortDescription": {"text": "Commented-code block (7 lines) in python/api/server.py: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-3549a8c2eab704d4", "name": "Commented-code block (6 lines) in python/api/routes/network.py:113", "shortDescription": {"text": "Commented-code block (6 lines) in python/api/routes/network.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-2fd80a59e8804312", "name": "Network/subprocess call without timeout or try/except \u2014 python/api/routes/network.py:979", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 python/api/routes/network.py:979"}, "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-17e98d45ffe76e5f", "name": "Legacy-named symbol `create_manual_backup` in python/api/routes/settings.py:409", "shortDescription": {"text": "Legacy-named symbol `create_manual_backup` in python/api/routes/settings.py:409"}, "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-33b314e2a07ae361", "name": "Commented-code block (5 lines) in python/api/routes/settings.py:69", "shortDescription": {"text": "Commented-code block (5 lines) in python/api/routes/settings.py:69"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cac3e3226a1f024c", "name": "Commented-code block (5 lines) in python/api/routes/security.py:18", "shortDescription": {"text": "Commented-code block (5 lines) in python/api/routes/security.py:18"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-00c965d2d4a46028", "name": "Commented-code block (7 lines) in python/api/routes/system.py:16", "shortDescription": {"text": "Commented-code block (7 lines) in python/api/routes/system.py:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-99a3c046da342b23", "name": "Commented-code block (5 lines) in python/src/security/vault.py:23", "shortDescription": {"text": "Commented-code block (5 lines) in python/src/security/vault.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-259ec8e8d05bd0bf", "name": "Commented-code block (6 lines) in python/src/network/ping.py:87", "shortDescription": {"text": "Commented-code block (6 lines) in python/src/network/ping.py:87"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7ee69a65e9a08535", "name": "Network/subprocess call without timeout or try/except \u2014 python/src/network/ping.py:427", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 python/src/network/ping.py:427"}, "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-c907a53ec17c896a", "name": "Commented-code block (6 lines) in python/src/network/monitor.py:336", "shortDescription": {"text": "Commented-code block (6 lines) in python/src/network/monitor.py:336"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4b473e371c064f20", "name": "Network/subprocess call without timeout or try/except \u2014 python/src/network/tools.py:266", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 python/src/network/tools.py:266"}, "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-d7240abd0b213913", "name": "Commented-code block (7 lines) in python/src/network/traceroute.py:18", "shortDescription": {"text": "Commented-code block (7 lines) in python/src/network/traceroute.py:18"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c178e42e164bfe7a", "name": "Network/subprocess call without timeout or try/except \u2014 python/src/network/traceroute.py:41", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 python/src/network/traceroute.py:41"}, "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-7785d4127ff41d4c", "name": "Legacy-named symbol `files_to_backup` in python/src/system/backup.py:21", "shortDescription": {"text": "Legacy-named symbol `files_to_backup` in python/src/system/backup.py:21"}, "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-f93345b7703d7db7", "name": "Commented-code block (6 lines) in python/src/system/tools.py:175", "shortDescription": {"text": "Commented-code block (6 lines) in python/src/system/tools.py:175"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bc3f6f47dd875e94", "name": "Commented-code block (7 lines) in python/src/system/core/local_commands.py:86", "shortDescription": {"text": "Commented-code block (7 lines) in python/src/system/core/local_commands.py:86"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c5d53e437ba01e2", "name": "Commented-code block (5 lines) in python/src/system/core/winrm_handler.py:167", "shortDescription": {"text": "Commented-code block (5 lines) in python/src/system/core/winrm_handler.py:167"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-259215e40a0314e3", "name": "Commented-code block (5 lines) in python/src/core/database.py:144", "shortDescription": {"text": "Commented-code block (5 lines) in python/src/core/database.py:144"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\npython/api/routes/network.py:get_hosts_list, python/api/routes/network.py:get_hosts\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:\npython/api/routes/network.py:event_generator, python/api/routes/network.py:event_generator, python/api/routes/network.py:event_generator\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-46969939caf8120b", "name": "Near-duplicate function bodies in 9 places", "shortDescription": {"text": "Near-duplicate function bodies in 9 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\npython/api/routes/system.py:event_generator, python/api/routes/system.py:event_generator, python/api/routes/system.py:event_generator, python/api/routes/system.py:event_generator\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-0a21e968f84ad04b", "name": "Frontend route `/dashboard` has no Link/navigate to it \u2014 electron/src/App.tsx", "shortDescription": {"text": "Frontend route `/dashboard` has no Link/navigate to it \u2014 electron/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3e4e61f8e3005f25", "name": "Frontend route `/host/:ip` has no Link/navigate to it \u2014 electron/src/App.tsx", "shortDescription": {"text": "Frontend route `/host/:ip` has no Link/navigate to it \u2014 electron/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-70bbff48a29116b6", "name": "FastAPI POST `refresh_host` without auth dependency \u2014 python/api/routes/network.py:203", "shortDescription": {"text": "FastAPI POST `refresh_host` without auth dependency \u2014 python/api/routes/network.py:203"}, "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-2e61c492517d9668", "name": "FastAPI PATCH `update_host` without auth dependency \u2014 python/api/routes/network.py:307", "shortDescription": {"text": "FastAPI PATCH `update_host` without auth dependency \u2014 python/api/routes/network.py:307"}, "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-3b70b162e390e60c", "name": "FastAPI POST `add_host` without auth dependency \u2014 python/api/routes/network.py:627", "shortDescription": {"text": "FastAPI POST `add_host` without auth dependency \u2014 python/api/routes/network.py:627"}, "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-b5148e0401ed305d", "name": "FastAPI DELETE `delete_host` without auth dependency \u2014 python/api/routes/network.py:679", "shortDescription": {"text": "FastAPI DELETE `delete_host` without auth dependency \u2014 python/api/routes/network.py:679"}, "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-73ccdcb6248bc423", "name": "FastAPI POST `resolve_via_specific_dns` without auth dependency \u2014 python/api/routes/network.py:731", "shortDescription": {"text": "FastAPI POST `resolve_via_specific_dns` without auth dependency \u2014 python/api/routes/network.py:731"}, "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-203fe8b3a4b9a8ae", "name": "FastAPI POST `discover_network` without auth dependency \u2014 python/api/routes/network.py:759", "shortDescription": {"text": "FastAPI POST `discover_network` without auth dependency \u2014 python/api/routes/network.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-f81b059510a5882d", "name": "FastAPI POST `run_ping` without auth dependency \u2014 python/api/routes/network.py:845", "shortDescription": {"text": "FastAPI POST `run_ping` without auth dependency \u2014 python/api/routes/network.py:845"}, "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-8034d846a0bd53b5", "name": "FastAPI POST `run_traceroute` without auth dependency \u2014 python/api/routes/network.py:866", "shortDescription": {"text": "FastAPI POST `run_traceroute` without auth dependency \u2014 python/api/routes/network.py:866"}, "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-0f4fc2e01569ab75", "name": "FastAPI POST `stop_tool` without auth dependency \u2014 python/api/routes/network.py:887", "shortDescription": {"text": "FastAPI POST `stop_tool` without auth dependency \u2014 python/api/routes/network.py:887"}, "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-a58806e23e7a4cd4", "name": "FastAPI POST `wake_on_lan` without auth dependency \u2014 python/api/routes/network.py:892", "shortDescription": {"text": "FastAPI POST `wake_on_lan` without auth dependency \u2014 python/api/routes/network.py:892"}, "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-d451b78fecc71702", "name": "FastAPI POST `open_external_terminal` without auth dependency \u2014 python/api/routes/network.py:962", "shortDescription": {"text": "FastAPI POST `open_external_terminal` without auth dependency \u2014 python/api/routes/network.py:962"}, "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-d8afcf57d4a5ba9b", "name": "FastAPI POST `save_settings` without auth dependency \u2014 python/api/routes/settings.py:154", "shortDescription": {"text": "FastAPI POST `save_settings` without auth dependency \u2014 python/api/routes/settings.py:154"}, "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-31b59f26e343f7a3", "name": "FastAPI POST `add_trusted_host` without auth dependency \u2014 python/api/routes/settings.py:195", "shortDescription": {"text": "FastAPI POST `add_trusted_host` without auth dependency \u2014 python/api/routes/settings.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-fa1cb7c7728d9e09", "name": "FastAPI DELETE `remove_trusted_host_endpoint` without auth dependency \u2014 python/api/routes/settings.py:206", "shortDescription": {"text": "FastAPI DELETE `remove_trusted_host_endpoint` without auth dependency \u2014 python/api/routes/settings.py:206"}, "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-3a23203535d4858d", "name": "FastAPI POST `import_hosts` without auth dependency \u2014 python/api/routes/settings.py:251", "shortDescription": {"text": "FastAPI POST `import_hosts` without auth dependency \u2014 python/api/routes/settings.py:251"}, "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-ccd2e5a1872670c3", "name": "FastAPI POST `factory_reset` without auth dependency \u2014 python/api/routes/settings.py:358", "shortDescription": {"text": "FastAPI POST `factory_reset` without auth dependency \u2014 python/api/routes/settings.py:358"}, "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-cfaabaeb84977daf", "name": "FastAPI POST `create_manual_backup` without auth dependency \u2014 python/api/routes/settings.py:408", "shortDescription": {"text": "FastAPI POST `create_manual_backup` without auth dependency \u2014 python/api/routes/settings.py:408"}, "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-d65055b935169c83", "name": "FastAPI POST `restore_backup` without auth dependency \u2014 python/api/routes/settings.py:416", "shortDescription": {"text": "FastAPI POST `restore_backup` without auth dependency \u2014 python/api/routes/settings.py:416"}, "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-e03a69b2d7251e26", "name": "FastAPI DELETE `delete_backup` without auth dependency \u2014 python/api/routes/settings.py:424", "shortDescription": {"text": "FastAPI DELETE `delete_backup` without auth dependency \u2014 python/api/routes/settings.py:424"}, "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-644c0f875f043616", "name": "FastAPI POST `unlock_vault` without auth dependency \u2014 python/api/routes/security.py:75", "shortDescription": {"text": "FastAPI POST `unlock_vault` without auth dependency \u2014 python/api/routes/security.py:75"}, "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-2c52c56e771f8ec2", "name": "FastAPI POST `lock_vault` without auth dependency \u2014 python/api/routes/security.py:93", "shortDescription": {"text": "FastAPI POST `lock_vault` without auth dependency \u2014 python/api/routes/security.py:93"}, "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-8916617ae14d058f", "name": "FastAPI POST `add_credential` without auth dependency \u2014 python/api/routes/security.py:112", "shortDescription": {"text": "FastAPI POST `add_credential` without auth dependency \u2014 python/api/routes/security.py:112"}, "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-d8f895809f160d87", "name": "FastAPI DELETE `delete_credential` without auth dependency \u2014 python/api/routes/security.py:120", "shortDescription": {"text": "FastAPI DELETE `delete_credential` without auth dependency \u2014 python/api/routes/security.py:120"}, "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-94b32e672986da34", "name": "FastAPI POST `decrypt_credential` without auth dependency \u2014 python/api/routes/security.py:128", "shortDescription": {"text": "FastAPI POST `decrypt_credential` without auth dependency \u2014 python/api/routes/security.py:128"}, "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-c3e4f7c9ecef575a", "name": "FastAPI POST `reset_vault` without auth dependency \u2014 python/api/routes/security.py:145", "shortDescription": {"text": "FastAPI POST `reset_vault` without auth dependency \u2014 python/api/routes/security.py:145"}, "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-bab62c1cd41b8341", "name": "FastAPI POST `diagnose_target` without auth dependency \u2014 python/api/routes/system.py:187", "shortDescription": {"text": "FastAPI POST `diagnose_target` without auth dependency \u2014 python/api/routes/system.py:187"}, "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-f0f26fae1a3502b1", "name": "FastAPI POST `system_info` without auth dependency \u2014 python/api/routes/system.py:237", "shortDescription": {"text": "FastAPI POST `system_info` without auth dependency \u2014 python/api/routes/system.py:237"}, "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-f66bd4033327493c", "name": "FastAPI POST `list_services` without auth dependency \u2014 python/api/routes/system.py:296", "shortDescription": {"text": "FastAPI POST `list_services` without auth dependency \u2014 python/api/routes/system.py:296"}, "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-23a505c5e99ea656", "name": "FastAPI POST `manage_service` without auth dependency \u2014 python/api/routes/system.py:317", "shortDescription": {"text": "FastAPI POST `manage_service` without auth dependency \u2014 python/api/routes/system.py:317"}, "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-ec444fd84f9f7875", "name": "FastAPI POST `manage_spooler` without auth dependency \u2014 python/api/routes/system.py:361", "shortDescription": {"text": "FastAPI POST `manage_spooler` without auth dependency \u2014 python/api/routes/system.py:361"}, "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-e7ba3c7df8cf8ed7", "name": "FastAPI POST `get_logs` without auth dependency \u2014 python/api/routes/system.py:391", "shortDescription": {"text": "FastAPI POST `get_logs` without auth dependency \u2014 python/api/routes/system.py:391"}, "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-36498c05fdb5f40a", "name": "FastAPI POST `host_probe` without auth dependency \u2014 python/api/routes/system.py:420", "shortDescription": {"text": "FastAPI POST `host_probe` without auth dependency \u2014 python/api/routes/system.py:420"}, "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-2186ab34c201dabc", "name": "FastAPI POST `pre_power_check` without auth dependency \u2014 python/api/routes/system.py:481", "shortDescription": {"text": "FastAPI POST `pre_power_check` without auth dependency \u2014 python/api/routes/system.py:481"}, "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-8563ac5caabb98ca", "name": "FastAPI POST `get_teamviewer_id` without auth dependency \u2014 python/api/routes/system.py:513", "shortDescription": {"text": "FastAPI POST `get_teamviewer_id` without auth dependency \u2014 python/api/routes/system.py:513"}, "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-ed182a0670671910", "name": "FastAPI POST `list_sessions` without auth dependency \u2014 python/api/routes/system.py:559", "shortDescription": {"text": "FastAPI POST `list_sessions` without auth dependency \u2014 python/api/routes/system.py:559"}, "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-694b4cf7a2a81bab", "name": "FastAPI POST `disconnect_session` without auth dependency \u2014 python/api/routes/system.py:591", "shortDescription": {"text": "FastAPI POST `disconnect_session` without auth dependency \u2014 python/api/routes/system.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-62e7925a39851c6a", "name": "FastAPI POST `power_action` without auth dependency \u2014 python/api/routes/system.py:618", "shortDescription": {"text": "FastAPI POST `power_action` without auth dependency \u2014 python/api/routes/system.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-dd05db9085a51665", "name": "FastAPI POST `configure_trusted_hosts` without auth dependency \u2014 python/api/routes/system.py:721", "shortDescription": {"text": "FastAPI POST `configure_trusted_hosts` without auth dependency \u2014 python/api/routes/system.py:721"}, "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-781919fad94c1642", "name": "FastAPI POST `test_connection` without auth dependency \u2014 python/api/routes/system.py:730", "shortDescription": {"text": "FastAPI POST `test_connection` without auth dependency \u2014 python/api/routes/system.py:730"}, "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-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`python/api/server.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-c0c2ddc375f6f532", "name": "Unused endpoint: POST /hosts/{address}/refresh", "shortDescription": {"text": "Unused endpoint: POST /hosts/{address}/refresh"}, "fullDescription": {"text": "`python/api/routes/network.py` declares `POST /hosts/{address}/refresh` 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-4ef9fe38e5918ea2", "name": "Unused endpoint: PATCH /hosts/{address}", "shortDescription": {"text": "Unused endpoint: PATCH /hosts/{address}"}, "fullDescription": {"text": "`python/api/routes/network.py` declares `PATCH /hosts/{address}` 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-cd4c6c6d7943bd40", "name": "Unused endpoint: GET /hosts", "shortDescription": {"text": "Unused endpoint: GET /hosts"}, "fullDescription": {"text": "`python/api/routes/network.py` declares `GET /hosts` 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-d6e29ad5bcb67831", "name": "Unused endpoint: POST /hosts", "shortDescription": {"text": "Unused endpoint: POST /hosts"}, "fullDescription": {"text": "`python/api/routes/network.py` declares `POST /hosts` 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-fb9fd83359ab43d6", "name": "Unused endpoint: DELETE /hosts/{address}", "shortDescription": {"text": "Unused endpoint: DELETE /hosts/{address}"}, "fullDescription": {"text": "`python/api/routes/network.py` declares `DELETE /hosts/{address}` 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-daad9c69a951ea69", "name": "Unused endpoint: GET /network/monitor", "shortDescription": {"text": "Unused endpoint: GET /network/monitor"}, "fullDescription": {"text": "`python/api/routes/network.py` declares `GET /network/monitor` 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-cc8876c01ac0c7f4", "name": "Unused endpoint: GET /network/local", "shortDescription": {"text": "Unused endpoint: GET /network/local"}, "fullDescription": {"text": "`python/api/routes/network.py` declares `GET /network/local` 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-0bc822416dfd40c0", "name": "Unused endpoint: GET /network/interfaces", "shortDescription": {"text": "Unused endpoint: GET /network/interfaces"}, "fullDescription": {"text": "`python/api/routes/network.py` declares `GET /network/interfaces` 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-8e7f0a7bfd649aff", "name": "Unused endpoint: POST /network/dns/resolve", "shortDescription": {"text": "Unused endpoint: POST /network/dns/resolve"}, "fullDescription": {"text": "`python/api/routes/network.py` declares `POST /network/dns/resolve` 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-a05d8766b689f804", "name": "Unused endpoint: POST /network/discovery", "shortDescription": {"text": "Unused endpoint: POST /network/discovery"}, "fullDescription": {"text": "`python/api/routes/network.py` declares `POST /network/discovery` 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-98cb90c5347d2e3b", "name": "Unused endpoint: POST /tools/ping", "shortDescription": {"text": "Unused endpoint: POST /tools/ping"}, "fullDescription": {"text": "`python/api/routes/network.py` declares `POST /tools/ping` 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-452271f2342f5386", "name": "Unused endpoint: POST /tools/traceroute", "shortDescription": {"text": "Unused endpoint: POST /tools/traceroute"}, "fullDescription": {"text": "`python/api/routes/network.py` declares `POST /tools/traceroute` 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-9f4e4356604cf0cd", "name": "Unused endpoint: POST /tools/stop", "shortDescription": {"text": "Unused endpoint: POST /tools/stop"}, "fullDescription": {"text": "`python/api/routes/network.py` declares `POST /tools/stop` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e302987b2b48471d", "name": "Unused endpoint: POST /network/wol", "shortDescription": {"text": "Unused endpoint: POST /network/wol"}, "fullDescription": {"text": "`python/api/routes/network.py` declares `POST /network/wol` 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-67f97c6d84415e54", "name": "Unused endpoint: POST /tools/terminal/external", "shortDescription": {"text": "Unused endpoint: POST /tools/terminal/external"}, "fullDescription": {"text": "`python/api/routes/network.py` declares `POST /tools/terminal/external` 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-38f42433b947788e", "name": "Unused endpoint: GET /network/status", "shortDescription": {"text": "Unused endpoint: GET /network/status"}, "fullDescription": {"text": "`python/api/routes/network.py` declares `GET /network/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-512ccb0fd0b230ba", "name": "Unused endpoint: GET /settings", "shortDescription": {"text": "Unused endpoint: GET /settings"}, "fullDescription": {"text": "`python/api/routes/settings.py` declares `GET /settings` 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-d9fbbfd361e91f1e", "name": "Unused endpoint: POST /settings", "shortDescription": {"text": "Unused endpoint: POST /settings"}, "fullDescription": {"text": "`python/api/routes/settings.py` declares `POST /settings` 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-5a5d197a88648569", "name": "Unused endpoint: GET /settings/trusted-hosts", "shortDescription": {"text": "Unused endpoint: GET /settings/trusted-hosts"}, "fullDescription": {"text": "`python/api/routes/settings.py` declares `GET /settings/trusted-hosts` 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-996c27da6fa70c5c", "name": "Unused endpoint: POST /settings/trusted-hosts", "shortDescription": {"text": "Unused endpoint: POST /settings/trusted-hosts"}, "fullDescription": {"text": "`python/api/routes/settings.py` declares `POST /settings/trusted-hosts` 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-52a26ff404b63211", "name": "Unused endpoint: DELETE /settings/trusted-hosts", "shortDescription": {"text": "Unused endpoint: DELETE /settings/trusted-hosts"}, "fullDescription": {"text": "`python/api/routes/settings.py` declares `DELETE /settings/trusted-hosts` 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-ae265ac951684f0a", "name": "Unused endpoint: GET /settings/export", "shortDescription": {"text": "Unused endpoint: GET /settings/export"}, "fullDescription": {"text": "`python/api/routes/settings.py` declares `GET /settings/export` 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-748e0902108c75c8", "name": "Unused endpoint: POST /settings/import", "shortDescription": {"text": "Unused endpoint: POST /settings/import"}, "fullDescription": {"text": "`python/api/routes/settings.py` declares `POST /settings/import` 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-b77b573717980efb", "name": "Unused endpoint: POST /settings/reset", "shortDescription": {"text": "Unused endpoint: POST /settings/reset"}, "fullDescription": {"text": "`python/api/routes/settings.py` declares `POST /settings/reset` 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-af052f44f3ebf3a8", "name": "Unused endpoint: GET /settings/backups", "shortDescription": {"text": "Unused endpoint: GET /settings/backups"}, "fullDescription": {"text": "`python/api/routes/settings.py` declares `GET /settings/backups` 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-3f1c5c1ebee99392", "name": "Unused endpoint: POST /settings/backups/create", "shortDescription": {"text": "Unused endpoint: POST /settings/backups/create"}, "fullDescription": {"text": "`python/api/routes/settings.py` declares `POST /settings/backups/create` 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-490c2a21fc0030f0", "name": "Unused endpoint: POST /settings/backups/{filename}/restore", "shortDescription": {"text": "Unused endpoint: POST /settings/backups/{filename}/restore"}, "fullDescription": {"text": "`python/api/routes/settings.py` declares `POST /settings/backups/{filename}/restore` 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-434ffe92b1256514", "name": "Unused endpoint: DELETE /settings/backups/{filename}", "shortDescription": {"text": "Unused endpoint: DELETE /settings/backups/{filename}"}, "fullDescription": {"text": "`python/api/routes/settings.py` declares `DELETE /settings/backups/{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-c3b64e2815c7659b", "name": "Unused endpoint: POST /security/unlock", "shortDescription": {"text": "Unused endpoint: POST /security/unlock"}, "fullDescription": {"text": "`python/api/routes/security.py` declares `POST /security/unlock` 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-68b3bd9a4badd401", "name": "Unused endpoint: POST /security/lock", "shortDescription": {"text": "Unused endpoint: POST /security/lock"}, "fullDescription": {"text": "`python/api/routes/security.py` declares `POST /security/lock` 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-c6cab8eb7f3485c2", "name": "Unused endpoint: GET /security/status", "shortDescription": {"text": "Unused endpoint: GET /security/status"}, "fullDescription": {"text": "`python/api/routes/security.py` declares `GET /security/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4407452036d7e61b", "name": "Unused endpoint: GET /security/credentials", "shortDescription": {"text": "Unused endpoint: GET /security/credentials"}, "fullDescription": {"text": "`python/api/routes/security.py` declares `GET /security/credentials` 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-02595740bfb598cc", "name": "Unused endpoint: POST /security/credentials", "shortDescription": {"text": "Unused endpoint: POST /security/credentials"}, "fullDescription": {"text": "`python/api/routes/security.py` declares `POST /security/credentials` 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-de0bf17da63f126f", "name": "Unused endpoint: DELETE /security/credentials/{entry_id}", "shortDescription": {"text": "Unused endpoint: DELETE /security/credentials/{entry_id}"}, "fullDescription": {"text": "`python/api/routes/security.py` declares `DELETE /security/credentials/{entry_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-34b23c6e33eee49e", "name": "Unused endpoint: POST /security/credentials/decrypt", "shortDescription": {"text": "Unused endpoint: POST /security/credentials/decrypt"}, "fullDescription": {"text": "`python/api/routes/security.py` declares `POST /security/credentials/decrypt` 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-d38323dfc5ee27a7", "name": "Unused endpoint: GET /security/hint", "shortDescription": {"text": "Unused endpoint: GET /security/hint"}, "fullDescription": {"text": "`python/api/routes/security.py` declares `GET /security/hint` 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-0101d243882f1f64", "name": "Unused endpoint: POST /security/reset", "shortDescription": {"text": "Unused endpoint: POST /security/reset"}, "fullDescription": {"text": "`python/api/routes/security.py` declares `POST /security/reset` 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-7283403f0f3762c4", "name": "Unused endpoint: POST /diagnose-target", "shortDescription": {"text": "Unused endpoint: POST /diagnose-target"}, "fullDescription": {"text": "`python/api/routes/system.py` declares `POST /diagnose-target` 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-c09b6d90f7fb6557", "name": "Unused endpoint: POST /services", "shortDescription": {"text": "Unused endpoint: POST /services"}, "fullDescription": {"text": "`python/api/routes/system.py` declares `POST /services` 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-ebe26f4bfaf59b68", "name": "Unused endpoint: POST /services/manage", "shortDescription": {"text": "Unused endpoint: POST /services/manage"}, "fullDescription": {"text": "`python/api/routes/system.py` declares `POST /services/manage` 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-6e5a7e7aa3aa0386", "name": "Unused endpoint: POST /spooler/manage", "shortDescription": {"text": "Unused endpoint: POST /spooler/manage"}, "fullDescription": {"text": "`python/api/routes/system.py` declares `POST /spooler/manage` 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-0197bbf7918528da", "name": "Unused endpoint: POST /logs", "shortDescription": {"text": "Unused endpoint: POST /logs"}, "fullDescription": {"text": "`python/api/routes/system.py` declares `POST /logs` 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-f414a9477ccf808f", "name": "Unused endpoint: POST /host-probe", "shortDescription": {"text": "Unused endpoint: POST /host-probe"}, "fullDescription": {"text": "`python/api/routes/system.py` declares `POST /host-probe` 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-717b77188852d500", "name": "Unused endpoint: POST /pre-power-check", "shortDescription": {"text": "Unused endpoint: POST /pre-power-check"}, "fullDescription": {"text": "`python/api/routes/system.py` declares `POST /pre-power-check` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-91e18f1d803a9d57", "name": "Unused endpoint: POST /teamviewer", "shortDescription": {"text": "Unused endpoint: POST /teamviewer"}, "fullDescription": {"text": "`python/api/routes/system.py` declares `POST /teamviewer` 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-92efb2dc9205e7a4", "name": "Unused endpoint: POST /sessions", "shortDescription": {"text": "Unused endpoint: POST /sessions"}, "fullDescription": {"text": "`python/api/routes/system.py` declares `POST /sessions` 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-540ebf4772ccf420", "name": "Unused endpoint: POST /disconnect", "shortDescription": {"text": "Unused endpoint: POST /disconnect"}, "fullDescription": {"text": "`python/api/routes/system.py` declares `POST /disconnect` 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-fff3a3880c5521ef", "name": "Unused endpoint: POST /power", "shortDescription": {"text": "Unused endpoint: POST /power"}, "fullDescription": {"text": "`python/api/routes/system.py` declares `POST /power` 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-1c58c8464feff3f5", "name": "Unused endpoint: GET /trusted-hosts", "shortDescription": {"text": "Unused endpoint: GET /trusted-hosts"}, "fullDescription": {"text": "`python/api/routes/system.py` declares `GET /trusted-hosts` 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/17817"}, "properties": {"repository": "raphaelredes/ferramentasderede", "repoUrl": "https://github.com/raphaelredes/ferramentasderede", "branch": "main"}, "results": [{"ruleId": "scanner-f3600a12ef9698db", "level": "note", "message": {"text": "Possibly dead Python function: cleanup"}, "properties": {"repobilityId": "c1cf2fbdf1e262a0", "scanner": "scanner-primary", "fingerprint": "f3600a12ef9698db", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/main_webview.py:58"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-869237e91044bfc3", "level": "note", "message": {"text": "Possibly dead Python function: start_server"}, "properties": {"repobilityId": "6e6e1a8d7002b2fd", "scanner": "scanner-primary", "fingerprint": "869237e91044bfc3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/main_webview.py:63"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-85b116dfa1ef86f3", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "85b116dfa1ef86f3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/main_webview.py:124"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e266896544b8de31", "level": "note", "message": {"text": "Possibly dead Python function: start_static_server"}, "properties": {"repobilityId": "0f1c7d92211b1694", "scanner": "scanner-primary", "fingerprint": "e266896544b8de31", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/main_webview.py:130"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4ecaa95a70d0e331", "level": "note", "message": {"text": "Possibly dead Python function: open_url"}, "properties": {"repobilityId": "2746ca741b715642", "scanner": "scanner-primary", "fingerprint": "4ecaa95a70d0e331", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/main_webview.py:148"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-54afb4ae194060d6", "level": "note", "message": {"text": "Possibly dead Python function: getLocalDomain"}, "properties": {"repobilityId": "2770a562b9f0974f", "scanner": "scanner-primary", "fingerprint": "54afb4ae194060d6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/main_webview.py:152"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3657b3a657f562db", "level": "note", "message": {"text": "Possibly dead Python function: launchRdp"}, "properties": {"repobilityId": "9e55c04bfa5a7234", "scanner": "scanner-primary", "fingerprint": "3657b3a657f562db", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/main_webview.py:177"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-21b777f47146f0cc", "level": "note", "message": {"text": "Possibly dead Python function: launchMsra"}, "properties": {"repobilityId": "3cc968fa3bd577e9", "scanner": "scanner-primary", "fingerprint": "21b777f47146f0cc", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/main_webview.py:189"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ca3fd6b6fd52029c", "level": "note", "message": {"text": "Possibly dead Python function: launchTeamViewer"}, "properties": {"repobilityId": "5e8abbae737e50cb", "scanner": "scanner-primary", "fingerprint": "ca3fd6b6fd52029c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/main_webview.py:221"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e7ed80d7c6b04117", "level": "note", "message": {"text": "Possibly dead Python function: openExternal"}, "properties": {"repobilityId": "1e48c36d6140f7c9", "scanner": "scanner-primary", "fingerprint": "e7ed80d7c6b04117", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/main_webview.py:237"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ec257a13a667c3bc", "level": "note", "message": {"text": "Possibly dead Python function: showItemInFolder"}, "properties": {"repobilityId": "4fafbdeabbfb3b43", "scanner": "scanner-primary", "fingerprint": "ec257a13a667c3bc", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/main_webview.py:242"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e87c9b3d1f1c7098", "level": "note", "message": {"text": "Possibly dead Python function: saveFileAs"}, "properties": {"repobilityId": "615947b595b7398d", "scanner": "scanner-primary", "fingerprint": "e87c9b3d1f1c7098", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/main_webview.py:262"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b127fc7646fc6af6", "level": "note", "message": {"text": "Possibly dead Python function: initialize_shim"}, "properties": {"repobilityId": "b3934a4025cce18b", "scanner": "scanner-primary", "fingerprint": "b127fc7646fc6af6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/main_webview.py:303"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-02991490bdb90de7", "level": "note", "message": {"text": "Possibly dead Python function: handle_host_update"}, "properties": {"repobilityId": "6a588d11f92ad667", "scanner": "scanner-primary", "fingerprint": "02991490bdb90de7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/server.py:52"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-73069200d33352f0", "level": "note", "message": {"text": "Possibly dead Python function: filter"}, "properties": {"repobilityId": "7da968b6f6ed2422", "scanner": "scanner-primary", "fingerprint": "73069200d33352f0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/server.py:186"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b96f3d0916f76a7e", "level": "note", "message": {"text": "Possibly dead Python function: connect_winrm"}, "properties": {"repobilityId": "a7f37062584de105", "scanner": "scanner-primary", "fingerprint": "b96f3d0916f76a7e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/network.py:1064"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a0d0632290bc974f", "level": "note", "message": {"text": "Possibly dead Python function: producer"}, "properties": {"repobilityId": "cf90102d1300948f", "scanner": "scanner-primary", "fingerprint": "a0d0632290bc974f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/network.py:1095"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0426b27ba513150b", "level": "note", "message": {"text": "Possibly dead Python function: translate"}, "properties": {"repobilityId": "80ee4284ee3a9ad6", "scanner": "scanner-primary", "fingerprint": "0426b27ba513150b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/system.py:43"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c186d383c960377f", "level": "note", "message": {"text": "Possibly dead Python function: check_port"}, "properties": {"repobilityId": "42e349d1a7aed94b", "scanner": "scanner-primary", "fingerprint": "c186d383c960377f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/src/network/tools.py:58"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d6779022a5947497", "level": "note", "message": {"text": "Possibly dead Python function: resolve_and_check_status"}, "properties": {"repobilityId": "6523236263f239d0", "scanner": "scanner-primary", "fingerprint": "d6779022a5947497", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/src/network/tools.py:69"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c40b8f257219d335", "level": "note", "message": {"text": "Possibly dead Python function: start_ping"}, "properties": {"repobilityId": "4b6ab1db2b35b9ef", "scanner": "scanner-primary", "fingerprint": "c40b8f257219d335", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/src/network/tools.py:112"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-09ddc61981825268", "level": "note", "message": {"text": "Possibly dead Python function: run_traceroute"}, "properties": {"repobilityId": "921b211a4898db62", "scanner": "scanner-primary", "fingerprint": "09ddc61981825268", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/src/network/tools.py:133"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a94f10666dcaf58b", "level": "note", "message": {"text": "Possibly dead Python function: test_specific_ports"}, "properties": {"repobilityId": "2ab0cb8fee034135", "scanner": "scanner-primary", "fingerprint": "a94f10666dcaf58b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/src/network/tools.py:182"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-41ba1c9186b1b3cc", "level": "note", "message": {"text": "Possibly dead Python function: initiate_rdp"}, "properties": {"repobilityId": "e537f2e92339e8d3", "scanner": "scanner-primary", "fingerprint": "41ba1c9186b1b3cc", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/src/network/tools.py:261"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b7baf3a5adebe7d8", "level": "note", "message": {"text": "Possibly dead Python function: initiate_msra"}, "properties": {"repobilityId": "db5224cb046f80f0", "scanner": "scanner-primary", "fingerprint": "b7baf3a5adebe7d8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/src/network/tools.py:268"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f709d1c80b4dbceb", "level": "note", "message": {"text": "Possibly dead Python function: find_host_by_name"}, "properties": {"repobilityId": "58edb6394e87caf9", "scanner": "scanner-primary", "fingerprint": "f709d1c80b4dbceb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/src/network/tools.py:452"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f85543c7a24582e5", "level": "note", "message": {"text": "Possibly dead Python function: scan_host"}, "properties": {"repobilityId": "a12afff4239c7ea5", "scanner": "scanner-primary", "fingerprint": "f85543c7a24582e5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/src/network/tools.py:567"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a832e9ce4ab1223a", "level": "note", "message": {"text": "Possibly dead Python function: scan_port"}, "properties": {"repobilityId": "e453ca5b239ff743", "scanner": "scanner-primary", "fingerprint": "a832e9ce4ab1223a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/src/network/scanner.py:82"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6ff156404058f007", "level": "note", "message": {"text": "Possibly dead Python function: run_daily_backup_check"}, "properties": {"repobilityId": "e68ebdd1d35bbca9", "scanner": "scanner-primary", "fingerprint": "6ff156404058f007", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/src/system/backup.py:324"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-44454a9d58eb4d98", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 electron/electron/main.ts:56"}, "properties": {"repobilityId": "86dafaec750ef531", "scanner": "scanner-primary", "fingerprint": "44454a9d58eb4d98", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0b150834ec97815d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 electron/dist-electron/main.js:2"}, "properties": {"repobilityId": "dcc8280efebc06a3", "scanner": "scanner-primary", "fingerprint": "0b150834ec97815d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5733956c1bf62373", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 electron/src/components/LoadingScreen.tsx:115"}, "properties": {"repobilityId": "84dfbf3f50a16920", "scanner": "scanner-primary", "fingerprint": "5733956c1bf62373", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-05934a67cfb0defe", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 electron/src/components/Dashboard/PixModal.tsx:47"}, "properties": {"repobilityId": "eebfd6504545db52", "scanner": "scanner-primary", "fingerprint": "05934a67cfb0defe", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b775eda31c2de4d0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 electron/src/components/Dashboard/HostDetailsModal.tsx:255"}, "properties": {"repobilityId": "54a361524de608c1", "scanner": "scanner-primary", "fingerprint": "b775eda31c2de4d0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8a278da2f005855e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 electron/src/components/HostDetails/SessionsTab.tsx:39"}, "properties": {"repobilityId": "81aecfc8287767c1", "scanner": "scanner-primary", "fingerprint": "8a278da2f005855e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8cd149d36c5f2259", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 electron/src/components/HostDetails/ServicesTab.tsx:106"}, "properties": {"repobilityId": "d959d41664351fee", "scanner": "scanner-primary", "fingerprint": "8cd149d36c5f2259", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-adcda5bf2d2f3582", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 electron/src/components/HostDetails/LogsTab.tsx:78"}, "properties": {"repobilityId": "6253e258c4d75d90", "scanner": "scanner-primary", "fingerprint": "adcda5bf2d2f3582", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-81f4c350dd784cf3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 electron/src/components/Tools/NetworkScanner.tsx:246"}, "properties": {"repobilityId": "f1d32a7707db9379", "scanner": "scanner-primary", "fingerprint": "81f4c350dd784cf3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bccc45c1d85731ee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 electron/src/contexts/VaultContext.tsx:155"}, "properties": {"repobilityId": "58e2f84beed53261", "scanner": "scanner-primary", "fingerprint": "bccc45c1d85731ee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-050ffebf263a058c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 electron/src/pages/Terminal.tsx:334"}, "properties": {"repobilityId": "a0ee8ba082508579", "scanner": "scanner-primary", "fingerprint": "050ffebf263a058c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-061c5c3e289101ee", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 electron/src/pages/Security.tsx:449"}, "properties": {"repobilityId": "cb38316ebf43b5cb", "scanner": "scanner-primary", "fingerprint": "061c5c3e289101ee", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d5eb20c5d97cd30d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in electron/electron/main.ts:5"}, "properties": {"repobilityId": "12a24cfc3091f33e", "scanner": "scanner-primary", "fingerprint": "d5eb20c5d97cd30d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "electron/electron/main.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-c366fc0f2c5bfe3b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in electron/dist-electron/main.js:1"}, "properties": {"repobilityId": "46ece03c86cef206", "scanner": "scanner-primary", "fingerprint": "c366fc0f2c5bfe3b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "electron/dist-electron/main.js"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-058396efa73f46e6", "level": "error", "message": {"text": "Possible secret in electron/src/pages/Security.tsx"}, "properties": {"repobilityId": "694217e69607ff3a", "scanner": "scanner-primary", "fingerprint": "058396efa73f46e6", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "electron/src/pages/Security.tsx"}, "region": {"startLine": 450}}}]}, {"ruleId": "scanner-c86b9fcd7e5bff61", "level": "warning", "message": {"text": "Insecure pattern 'subprocess_shell_true' in python/main.py:30"}, "properties": {"repobilityId": "80916203b6981087", "scanner": "scanner-primary", "fingerprint": "c86b9fcd7e5bff61", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/main.py"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "04f57d208548fcef", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "04f57d208548fcef", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 94}}}]}, {"ruleId": "scanner-118b20824a0f4866", "level": "note", "message": {"text": "Very large file: python/api/routes/network.py (1201 lines)"}, "properties": {"repobilityId": "fc830949ac8579f8", "scanner": "scanner-primary", "fingerprint": "118b20824a0f4866", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "f8f82b750cd0c197", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "d6f3f4c62174d8a1", "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": "041d85d9cb69f6d5", "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": "82665c65577c7ecd", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "c7c22c4ecf99d81b", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "3c6b56842fd19ae8", "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": "be783050cef9f295", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-ecb0d2c55ed6875d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/settings.local.json"}, "properties": {"repobilityId": "d8bae33a6d517bf0", "scanner": "scanner-primary", "fingerprint": "ecb0d2c55ed6875d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/settings.local.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-92c5e987febb36be", "level": "none", "message": {"text": "Commented-code block (5 lines) in electron/electron/preload.ts:3"}, "properties": {"repobilityId": "f1b82ad571dc5dae", "scanner": "scanner-primary", "fingerprint": "92c5e987febb36be", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cfb52ff28349a65e", "level": "none", "message": {"text": "Commented-code block (5 lines) in electron/electron/main.ts:311"}, "properties": {"repobilityId": "ecf04907f11f06b7", "scanner": "scanner-primary", "fingerprint": "cfb52ff28349a65e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b5896ca3c7be3ee", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/utils/teamviewer.ts:50"}, "properties": {"repobilityId": "413a4442212bfb3f", "scanner": "scanner-primary", "fingerprint": "0b5896ca3c7be3ee", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9b1825e38cd715a9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/components/Tools/NetworkScanner.tsx:64"}, "properties": {"repobilityId": "68e71a8ba91866dd", "scanner": "scanner-primary", "fingerprint": "9b1825e38cd715a9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-449637a4a8f93879", "level": "none", "message": {"text": "Commented-code block (5 lines) in electron/src/contexts/MonitoringContext.tsx:34"}, "properties": {"repobilityId": "065124deb9f9a199", "scanner": "scanner-primary", "fingerprint": "449637a4a8f93879", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1fa46e4f71727636", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/contexts/MonitoringContext.tsx:36"}, "properties": {"repobilityId": "c9983444792f9dd2", "scanner": "scanner-primary", "fingerprint": "1fa46e4f71727636", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-27b3e193fa2bf2a9", "level": "none", "message": {"text": "Commented-code block (5 lines) in electron/src/contexts/ToolsContext.tsx:123"}, "properties": {"repobilityId": "0d540dfbb7269a41", "scanner": "scanner-primary", "fingerprint": "27b3e193fa2bf2a9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f0c0845507cc99e9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/contexts/ToolsContext.tsx:459"}, "properties": {"repobilityId": "6c1e4f187c3280f0", "scanner": "scanner-primary", "fingerprint": "f0c0845507cc99e9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-18599eae300d6f83", "level": "none", "message": {"text": "Commented-code block (6 lines) in electron/src/pages/Dashboard.tsx:413"}, "properties": {"repobilityId": "87aa60d35c484df0", "scanner": "scanner-primary", "fingerprint": "18599eae300d6f83", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-97174cac54fa1689", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/pages/Dashboard.tsx:279"}, "properties": {"repobilityId": "0baca1b3ee0a36ac", "scanner": "scanner-primary", "fingerprint": "97174cac54fa1689", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ac5f0097869a68b5", "level": "none", "message": {"text": "Commented-code block (6 lines) in electron/src/pages/Terminal.tsx:111"}, "properties": {"repobilityId": "3732286dc57a0ac0", "scanner": "scanner-primary", "fingerprint": "ac5f0097869a68b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b8ad8465f202bafb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/pages/Terminal.tsx:36"}, "properties": {"repobilityId": "0b3593462c392e0a", "scanner": "scanner-primary", "fingerprint": "b8ad8465f202bafb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5febbdb5a2869bc5", "level": "none", "message": {"text": "Commented-code block (7 lines) in electron/src/pages/HostDetails.tsx:160"}, "properties": {"repobilityId": "0158bfe6dcbf4cd1", "scanner": "scanner-primary", "fingerprint": "5febbdb5a2869bc5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c7622fbb2442e38e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/pages/HostDetails.tsx:222"}, "properties": {"repobilityId": "71988a8a2131b8b1", "scanner": "scanner-primary", "fingerprint": "c7622fbb2442e38e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-da253f8fd5dce4df", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/pages/Settings.tsx:146"}, "properties": {"repobilityId": "0dbf1e2796fe39c1", "scanner": "scanner-primary", "fingerprint": "da253f8fd5dce4df", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b8498077b4cffef0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/pages/Security.tsx:131"}, "properties": {"repobilityId": "5fb16b7e1f081249", "scanner": "scanner-primary", "fingerprint": "b8498077b4cffef0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1325c25142ae4b88", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/pages/Tools.tsx:98"}, "properties": {"repobilityId": "b35605139e5f1f19", "scanner": "scanner-primary", "fingerprint": "1325c25142ae4b88", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7fb2b31d80d0f36d", "level": "none", "message": {"text": "Commented-code block (6 lines) in electron/src/hooks/useHostData.ts:95"}, "properties": {"repobilityId": "a6a18276db78a48e", "scanner": "scanner-primary", "fingerprint": "7fb2b31d80d0f36d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0abf15914b04aa9f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 electron/src/hooks/useHostData.ts:149"}, "properties": {"repobilityId": "6476be3829ada2c1", "scanner": "scanner-primary", "fingerprint": "0abf15914b04aa9f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5835e861d39d869a", "level": "none", "message": {"text": "Commented-code block (6 lines) in electron/src/hooks/useHostActions.ts:142"}, "properties": {"repobilityId": "52de71675789433e", "scanner": "scanner-primary", "fingerprint": "5835e861d39d869a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23ccca5e79d4430d", "level": "none", "message": {"text": "Commented-code block (6 lines) in electron/src/hooks/useFilteredHosts.ts:80"}, "properties": {"repobilityId": "01bbd27ace481d2f", "scanner": "scanner-primary", "fingerprint": "23ccca5e79d4430d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-78d3b09e4b0f4fd5", "level": "none", "message": {"text": "Commented-code block (5 lines) in python/main_webview.py:108"}, "properties": {"repobilityId": "055b5e02c41db412", "scanner": "scanner-primary", "fingerprint": "78d3b09e4b0f4fd5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-15feb37bd9fd93d6", "level": "note", "message": {"text": "Stub function `log_message` (body is just `pass`/`return`) \u2014 python/main_webview.py:124"}, "properties": {"repobilityId": "ee53635fd0ec4196", "scanner": "scanner-primary", "fingerprint": "15feb37bd9fd93d6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-76e60fc550b758e8", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 python/main.py:41"}, "properties": {"repobilityId": "b9f03e45e60e132a", "scanner": "scanner-primary", "fingerprint": "76e60fc550b758e8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aa6aed59b92bc2b2", "level": "none", "message": {"text": "Commented-code block (7 lines) in python/api/server.py:123"}, "properties": {"repobilityId": "b0dc3b4f9a7e4572", "scanner": "scanner-primary", "fingerprint": "aa6aed59b92bc2b2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3549a8c2eab704d4", "level": "none", "message": {"text": "Commented-code block (6 lines) in python/api/routes/network.py:113"}, "properties": {"repobilityId": "c99c54879389de29", "scanner": "scanner-primary", "fingerprint": "3549a8c2eab704d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2fd80a59e8804312", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 python/api/routes/network.py:979"}, "properties": {"repobilityId": "e179ee1cf243320f", "scanner": "scanner-primary", "fingerprint": "2fd80a59e8804312", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-17e98d45ffe76e5f", "level": "note", "message": {"text": "Legacy-named symbol `create_manual_backup` in python/api/routes/settings.py:409"}, "properties": {"repobilityId": "2b2d7348bf8ee7fe", "scanner": "scanner-primary", "fingerprint": "17e98d45ffe76e5f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-33b314e2a07ae361", "level": "none", "message": {"text": "Commented-code block (5 lines) in python/api/routes/settings.py:69"}, "properties": {"repobilityId": "d60ac1e264b51cb3", "scanner": "scanner-primary", "fingerprint": "33b314e2a07ae361", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cac3e3226a1f024c", "level": "none", "message": {"text": "Commented-code block (5 lines) in python/api/routes/security.py:18"}, "properties": {"repobilityId": "63b5817958ea3a92", "scanner": "scanner-primary", "fingerprint": "cac3e3226a1f024c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-00c965d2d4a46028", "level": "none", "message": {"text": "Commented-code block (7 lines) in python/api/routes/system.py:16"}, "properties": {"repobilityId": "85c954c1afb9736e", "scanner": "scanner-primary", "fingerprint": "00c965d2d4a46028", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-99a3c046da342b23", "level": "none", "message": {"text": "Commented-code block (5 lines) in python/src/security/vault.py:23"}, "properties": {"repobilityId": "c6234ba817695ca0", "scanner": "scanner-primary", "fingerprint": "99a3c046da342b23", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-259ec8e8d05bd0bf", "level": "none", "message": {"text": "Commented-code block (6 lines) in python/src/network/ping.py:87"}, "properties": {"repobilityId": "e7db8a966e358c1f", "scanner": "scanner-primary", "fingerprint": "259ec8e8d05bd0bf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7ee69a65e9a08535", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 python/src/network/ping.py:427"}, "properties": {"repobilityId": "4d47e7bd268b98f0", "scanner": "scanner-primary", "fingerprint": "7ee69a65e9a08535", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c907a53ec17c896a", "level": "none", "message": {"text": "Commented-code block (6 lines) in python/src/network/monitor.py:336"}, "properties": {"repobilityId": "a68d33001a14474f", "scanner": "scanner-primary", "fingerprint": "c907a53ec17c896a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b473e371c064f20", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 python/src/network/tools.py:266"}, "properties": {"repobilityId": "1063e1983c81f9c0", "scanner": "scanner-primary", "fingerprint": "4b473e371c064f20", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d7240abd0b213913", "level": "none", "message": {"text": "Commented-code block (7 lines) in python/src/network/traceroute.py:18"}, "properties": {"repobilityId": "665938912c3a4782", "scanner": "scanner-primary", "fingerprint": "d7240abd0b213913", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c178e42e164bfe7a", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 python/src/network/traceroute.py:41"}, "properties": {"repobilityId": "102622b65000baf3", "scanner": "scanner-primary", "fingerprint": "c178e42e164bfe7a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7785d4127ff41d4c", "level": "note", "message": {"text": "Legacy-named symbol `files_to_backup` in python/src/system/backup.py:21"}, "properties": {"repobilityId": "64592b93723a5f44", "scanner": "scanner-primary", "fingerprint": "7785d4127ff41d4c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f93345b7703d7db7", "level": "none", "message": {"text": "Commented-code block (6 lines) in python/src/system/tools.py:175"}, "properties": {"repobilityId": "afbd02e8eac298b4", "scanner": "scanner-primary", "fingerprint": "f93345b7703d7db7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc3f6f47dd875e94", "level": "none", "message": {"text": "Commented-code block (7 lines) in python/src/system/core/local_commands.py:86"}, "properties": {"repobilityId": "324610dc73f820ee", "scanner": "scanner-primary", "fingerprint": "bc3f6f47dd875e94", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c5d53e437ba01e2", "level": "none", "message": {"text": "Commented-code block (5 lines) in python/src/system/core/winrm_handler.py:167"}, "properties": {"repobilityId": "7cb417521ebd9286", "scanner": "scanner-primary", "fingerprint": "2c5d53e437ba01e2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-259215e40a0314e3", "level": "none", "message": {"text": "Commented-code block (5 lines) in python/src/core/database.py:144"}, "properties": {"repobilityId": "f6133ed37537d613", "scanner": "scanner-primary", "fingerprint": "259215e40a0314e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "ca9a756f83456e2e", "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": "b39e5bd310f5124f", "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": "b62ba1da380cd980", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-46969939caf8120b", "level": "note", "message": {"text": "Near-duplicate function bodies in 9 places"}, "properties": {"repobilityId": "bd2bebd36b984fee", "scanner": "scanner-primary", "fingerprint": "46969939caf8120b", "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": "95759906c63b4bf0", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-0a21e968f84ad04b", "level": "warning", "message": {"text": "Frontend route `/dashboard` has no Link/navigate to it \u2014 electron/src/App.tsx"}, "properties": {"repobilityId": "d10a2cdd19d293d0", "scanner": "scanner-primary", "fingerprint": "0a21e968f84ad04b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-3e4e61f8e3005f25", "level": "warning", "message": {"text": "Frontend route `/host/:ip` has no Link/navigate to it \u2014 electron/src/App.tsx"}, "properties": {"repobilityId": "fbf30539a5b77297", "scanner": "scanner-primary", "fingerprint": "3e4e61f8e3005f25", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-70bbff48a29116b6", "level": "error", "message": {"text": "FastAPI POST `refresh_host` without auth dependency \u2014 python/api/routes/network.py:203"}, "properties": {"repobilityId": "2702b7bd184584bf", "scanner": "scanner-primary", "fingerprint": "70bbff48a29116b6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/network.py"}, "region": {"startLine": 203}}}]}, {"ruleId": "scanner-2e61c492517d9668", "level": "error", "message": {"text": "FastAPI PATCH `update_host` without auth dependency \u2014 python/api/routes/network.py:307"}, "properties": {"repobilityId": "e51e4b3f5c10b9a4", "scanner": "scanner-primary", "fingerprint": "2e61c492517d9668", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/network.py"}, "region": {"startLine": 307}}}]}, {"ruleId": "scanner-3b70b162e390e60c", "level": "error", "message": {"text": "FastAPI POST `add_host` without auth dependency \u2014 python/api/routes/network.py:627"}, "properties": {"repobilityId": "dc2a355f14d72d17", "scanner": "scanner-primary", "fingerprint": "3b70b162e390e60c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/network.py"}, "region": {"startLine": 627}}}]}, {"ruleId": "scanner-b5148e0401ed305d", "level": "error", "message": {"text": "FastAPI DELETE `delete_host` without auth dependency \u2014 python/api/routes/network.py:679"}, "properties": {"repobilityId": "d5ad71c210f41cf2", "scanner": "scanner-primary", "fingerprint": "b5148e0401ed305d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/network.py"}, "region": {"startLine": 679}}}]}, {"ruleId": "scanner-73ccdcb6248bc423", "level": "error", "message": {"text": "FastAPI POST `resolve_via_specific_dns` without auth dependency \u2014 python/api/routes/network.py:731"}, "properties": {"repobilityId": "33c8a5156736c1e7", "scanner": "scanner-primary", "fingerprint": "73ccdcb6248bc423", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/network.py"}, "region": {"startLine": 731}}}]}, {"ruleId": "scanner-203fe8b3a4b9a8ae", "level": "error", "message": {"text": "FastAPI POST `discover_network` without auth dependency \u2014 python/api/routes/network.py:759"}, "properties": {"repobilityId": "2c6db458cdfd8c96", "scanner": "scanner-primary", "fingerprint": "203fe8b3a4b9a8ae", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/network.py"}, "region": {"startLine": 759}}}]}, {"ruleId": "scanner-f81b059510a5882d", "level": "error", "message": {"text": "FastAPI POST `run_ping` without auth dependency \u2014 python/api/routes/network.py:845"}, "properties": {"repobilityId": "c6ef04372c4648ee", "scanner": "scanner-primary", "fingerprint": "f81b059510a5882d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/network.py"}, "region": {"startLine": 845}}}]}, {"ruleId": "scanner-8034d846a0bd53b5", "level": "error", "message": {"text": "FastAPI POST `run_traceroute` without auth dependency \u2014 python/api/routes/network.py:866"}, "properties": {"repobilityId": "e81ae40d8ee449c0", "scanner": "scanner-primary", "fingerprint": "8034d846a0bd53b5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/network.py"}, "region": {"startLine": 866}}}]}, {"ruleId": "scanner-0f4fc2e01569ab75", "level": "error", "message": {"text": "FastAPI POST `stop_tool` without auth dependency \u2014 python/api/routes/network.py:887"}, "properties": {"repobilityId": "01484e3b93764c7a", "scanner": "scanner-primary", "fingerprint": "0f4fc2e01569ab75", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/network.py"}, "region": {"startLine": 887}}}]}, {"ruleId": "scanner-a58806e23e7a4cd4", "level": "error", "message": {"text": "FastAPI POST `wake_on_lan` without auth dependency \u2014 python/api/routes/network.py:892"}, "properties": {"repobilityId": "7e0974cec7544ed4", "scanner": "scanner-primary", "fingerprint": "a58806e23e7a4cd4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/network.py"}, "region": {"startLine": 892}}}]}, {"ruleId": "scanner-d451b78fecc71702", "level": "error", "message": {"text": "FastAPI POST `open_external_terminal` without auth dependency \u2014 python/api/routes/network.py:962"}, "properties": {"repobilityId": "4ecb0d3d164e3e8f", "scanner": "scanner-primary", "fingerprint": "d451b78fecc71702", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/network.py"}, "region": {"startLine": 962}}}]}, {"ruleId": "scanner-d8afcf57d4a5ba9b", "level": "error", "message": {"text": "FastAPI POST `save_settings` without auth dependency \u2014 python/api/routes/settings.py:154"}, "properties": {"repobilityId": "659ba3786d3f7aa4", "scanner": "scanner-primary", "fingerprint": "d8afcf57d4a5ba9b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/settings.py"}, "region": {"startLine": 154}}}]}, {"ruleId": "scanner-31b59f26e343f7a3", "level": "error", "message": {"text": "FastAPI POST `add_trusted_host` without auth dependency \u2014 python/api/routes/settings.py:195"}, "properties": {"repobilityId": "74a1d4ae3381b3fc", "scanner": "scanner-primary", "fingerprint": "31b59f26e343f7a3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/settings.py"}, "region": {"startLine": 195}}}]}, {"ruleId": "scanner-fa1cb7c7728d9e09", "level": "error", "message": {"text": "FastAPI DELETE `remove_trusted_host_endpoint` without auth dependency \u2014 python/api/routes/settings.py:206"}, "properties": {"repobilityId": "c606a4091436c8ce", "scanner": "scanner-primary", "fingerprint": "fa1cb7c7728d9e09", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/settings.py"}, "region": {"startLine": 206}}}]}, {"ruleId": "scanner-3a23203535d4858d", "level": "error", "message": {"text": "FastAPI POST `import_hosts` without auth dependency \u2014 python/api/routes/settings.py:251"}, "properties": {"repobilityId": "9728430bf52a17da", "scanner": "scanner-primary", "fingerprint": "3a23203535d4858d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/settings.py"}, "region": {"startLine": 251}}}]}, {"ruleId": "scanner-ccd2e5a1872670c3", "level": "error", "message": {"text": "FastAPI POST `factory_reset` without auth dependency \u2014 python/api/routes/settings.py:358"}, "properties": {"repobilityId": "f1113588597c0d4d", "scanner": "scanner-primary", "fingerprint": "ccd2e5a1872670c3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/settings.py"}, "region": {"startLine": 358}}}]}, {"ruleId": "scanner-cfaabaeb84977daf", "level": "error", "message": {"text": "FastAPI POST `create_manual_backup` without auth dependency \u2014 python/api/routes/settings.py:408"}, "properties": {"repobilityId": "09a28ff7da79b93c", "scanner": "scanner-primary", "fingerprint": "cfaabaeb84977daf", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/settings.py"}, "region": {"startLine": 408}}}]}, {"ruleId": "scanner-d65055b935169c83", "level": "error", "message": {"text": "FastAPI POST `restore_backup` without auth dependency \u2014 python/api/routes/settings.py:416"}, "properties": {"repobilityId": "f70c29e84d79b0fb", "scanner": "scanner-primary", "fingerprint": "d65055b935169c83", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/settings.py"}, "region": {"startLine": 416}}}]}, {"ruleId": "scanner-e03a69b2d7251e26", "level": "error", "message": {"text": "FastAPI DELETE `delete_backup` without auth dependency \u2014 python/api/routes/settings.py:424"}, "properties": {"repobilityId": "76dc3fd450cb2dc2", "scanner": "scanner-primary", "fingerprint": "e03a69b2d7251e26", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/settings.py"}, "region": {"startLine": 424}}}]}, {"ruleId": "scanner-644c0f875f043616", "level": "error", "message": {"text": "FastAPI POST `unlock_vault` without auth dependency \u2014 python/api/routes/security.py:75"}, "properties": {"repobilityId": "3e31152d810fe2e7", "scanner": "scanner-primary", "fingerprint": "644c0f875f043616", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/security.py"}, "region": {"startLine": 75}}}]}, {"ruleId": "scanner-2c52c56e771f8ec2", "level": "error", "message": {"text": "FastAPI POST `lock_vault` without auth dependency \u2014 python/api/routes/security.py:93"}, "properties": {"repobilityId": "7c698890f9169d44", "scanner": "scanner-primary", "fingerprint": "2c52c56e771f8ec2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/security.py"}, "region": {"startLine": 93}}}]}, {"ruleId": "scanner-8916617ae14d058f", "level": "error", "message": {"text": "FastAPI POST `add_credential` without auth dependency \u2014 python/api/routes/security.py:112"}, "properties": {"repobilityId": "126ffd6c8d46371b", "scanner": "scanner-primary", "fingerprint": "8916617ae14d058f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/security.py"}, "region": {"startLine": 112}}}]}, {"ruleId": "scanner-d8f895809f160d87", "level": "error", "message": {"text": "FastAPI DELETE `delete_credential` without auth dependency \u2014 python/api/routes/security.py:120"}, "properties": {"repobilityId": "b57344881da82074", "scanner": "scanner-primary", "fingerprint": "d8f895809f160d87", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/security.py"}, "region": {"startLine": 120}}}]}, {"ruleId": "scanner-94b32e672986da34", "level": "error", "message": {"text": "FastAPI POST `decrypt_credential` without auth dependency \u2014 python/api/routes/security.py:128"}, "properties": {"repobilityId": "6be4e490fe27f197", "scanner": "scanner-primary", "fingerprint": "94b32e672986da34", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/security.py"}, "region": {"startLine": 128}}}]}, {"ruleId": "scanner-c3e4f7c9ecef575a", "level": "error", "message": {"text": "FastAPI POST `reset_vault` without auth dependency \u2014 python/api/routes/security.py:145"}, "properties": {"repobilityId": "8067c2d1840548bb", "scanner": "scanner-primary", "fingerprint": "c3e4f7c9ecef575a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/security.py"}, "region": {"startLine": 145}}}]}, {"ruleId": "scanner-bab62c1cd41b8341", "level": "error", "message": {"text": "FastAPI POST `diagnose_target` without auth dependency \u2014 python/api/routes/system.py:187"}, "properties": {"repobilityId": "521874c75f4daf75", "scanner": "scanner-primary", "fingerprint": "bab62c1cd41b8341", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/system.py"}, "region": {"startLine": 187}}}]}, {"ruleId": "scanner-f0f26fae1a3502b1", "level": "error", "message": {"text": "FastAPI POST `system_info` without auth dependency \u2014 python/api/routes/system.py:237"}, "properties": {"repobilityId": "93fbd13166f37339", "scanner": "scanner-primary", "fingerprint": "f0f26fae1a3502b1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/system.py"}, "region": {"startLine": 237}}}]}, {"ruleId": "scanner-f66bd4033327493c", "level": "error", "message": {"text": "FastAPI POST `list_services` without auth dependency \u2014 python/api/routes/system.py:296"}, "properties": {"repobilityId": "fba547c520e0f445", "scanner": "scanner-primary", "fingerprint": "f66bd4033327493c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/system.py"}, "region": {"startLine": 296}}}]}, {"ruleId": "scanner-23a505c5e99ea656", "level": "error", "message": {"text": "FastAPI POST `manage_service` without auth dependency \u2014 python/api/routes/system.py:317"}, "properties": {"repobilityId": "4469a0c7bee76cfe", "scanner": "scanner-primary", "fingerprint": "23a505c5e99ea656", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/system.py"}, "region": {"startLine": 317}}}]}, {"ruleId": "scanner-ec444fd84f9f7875", "level": "error", "message": {"text": "FastAPI POST `manage_spooler` without auth dependency \u2014 python/api/routes/system.py:361"}, "properties": {"repobilityId": "c33dd07a26a74c16", "scanner": "scanner-primary", "fingerprint": "ec444fd84f9f7875", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/system.py"}, "region": {"startLine": 361}}}]}, {"ruleId": "scanner-e7ba3c7df8cf8ed7", "level": "error", "message": {"text": "FastAPI POST `get_logs` without auth dependency \u2014 python/api/routes/system.py:391"}, "properties": {"repobilityId": "cd63db3ab143d13d", "scanner": "scanner-primary", "fingerprint": "e7ba3c7df8cf8ed7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/system.py"}, "region": {"startLine": 391}}}]}, {"ruleId": "scanner-36498c05fdb5f40a", "level": "error", "message": {"text": "FastAPI POST `host_probe` without auth dependency \u2014 python/api/routes/system.py:420"}, "properties": {"repobilityId": "f7a632507b30a31d", "scanner": "scanner-primary", "fingerprint": "36498c05fdb5f40a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/system.py"}, "region": {"startLine": 420}}}]}, {"ruleId": "scanner-2186ab34c201dabc", "level": "error", "message": {"text": "FastAPI POST `pre_power_check` without auth dependency \u2014 python/api/routes/system.py:481"}, "properties": {"repobilityId": "c389c014fa664892", "scanner": "scanner-primary", "fingerprint": "2186ab34c201dabc", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/system.py"}, "region": {"startLine": 481}}}]}, {"ruleId": "scanner-8563ac5caabb98ca", "level": "error", "message": {"text": "FastAPI POST `get_teamviewer_id` without auth dependency \u2014 python/api/routes/system.py:513"}, "properties": {"repobilityId": "6bcc57f4de742cb5", "scanner": "scanner-primary", "fingerprint": "8563ac5caabb98ca", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/system.py"}, "region": {"startLine": 513}}}]}, {"ruleId": "scanner-ed182a0670671910", "level": "error", "message": {"text": "FastAPI POST `list_sessions` without auth dependency \u2014 python/api/routes/system.py:559"}, "properties": {"repobilityId": "118eb268183e8ba2", "scanner": "scanner-primary", "fingerprint": "ed182a0670671910", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/system.py"}, "region": {"startLine": 559}}}]}, {"ruleId": "scanner-694b4cf7a2a81bab", "level": "error", "message": {"text": "FastAPI POST `disconnect_session` without auth dependency \u2014 python/api/routes/system.py:591"}, "properties": {"repobilityId": "39081b32c30d9698", "scanner": "scanner-primary", "fingerprint": "694b4cf7a2a81bab", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/system.py"}, "region": {"startLine": 591}}}]}, {"ruleId": "scanner-62e7925a39851c6a", "level": "error", "message": {"text": "FastAPI POST `power_action` without auth dependency \u2014 python/api/routes/system.py:618"}, "properties": {"repobilityId": "190d3b822fb58031", "scanner": "scanner-primary", "fingerprint": "62e7925a39851c6a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/system.py"}, "region": {"startLine": 618}}}]}, {"ruleId": "scanner-dd05db9085a51665", "level": "error", "message": {"text": "FastAPI POST `configure_trusted_hosts` without auth dependency \u2014 python/api/routes/system.py:721"}, "properties": {"repobilityId": "ee35a17e82961668", "scanner": "scanner-primary", "fingerprint": "dd05db9085a51665", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/system.py"}, "region": {"startLine": 721}}}]}, {"ruleId": "scanner-781919fad94c1642", "level": "error", "message": {"text": "FastAPI POST `test_connection` without auth dependency \u2014 python/api/routes/system.py:730"}, "properties": {"repobilityId": "75969faa73ef6779", "scanner": "scanner-primary", "fingerprint": "781919fad94c1642", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "python/api/routes/system.py"}, "region": {"startLine": 730}}}]}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "40a62314a70eced3", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c0c2ddc375f6f532", "level": "note", "message": {"text": "Unused endpoint: POST /hosts/{address}/refresh"}, "properties": {"repobilityId": "045bc7f7ad58e3af", "scanner": "scanner-primary", "fingerprint": "c0c2ddc375f6f532", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4ef9fe38e5918ea2", "level": "note", "message": {"text": "Unused endpoint: PATCH /hosts/{address}"}, "properties": {"repobilityId": "1f9e38edbdcb49af", "scanner": "scanner-primary", "fingerprint": "4ef9fe38e5918ea2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cd4c6c6d7943bd40", "level": "note", "message": {"text": "Unused endpoint: GET /hosts"}, "properties": {"repobilityId": "a315e5f9dc857526", "scanner": "scanner-primary", "fingerprint": "cd4c6c6d7943bd40", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d6e29ad5bcb67831", "level": "note", "message": {"text": "Unused endpoint: POST /hosts"}, "properties": {"repobilityId": "fa27c19d98e141e8", "scanner": "scanner-primary", "fingerprint": "d6e29ad5bcb67831", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fb9fd83359ab43d6", "level": "note", "message": {"text": "Unused endpoint: DELETE /hosts/{address}"}, "properties": {"repobilityId": "b7632a3d60225bb6", "scanner": "scanner-primary", "fingerprint": "fb9fd83359ab43d6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-daad9c69a951ea69", "level": "note", "message": {"text": "Unused endpoint: GET /network/monitor"}, "properties": {"repobilityId": "01a7bec4d3c9d769", "scanner": "scanner-primary", "fingerprint": "daad9c69a951ea69", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cc8876c01ac0c7f4", "level": "note", "message": {"text": "Unused endpoint: GET /network/local"}, "properties": {"repobilityId": "b7053b327fe84904", "scanner": "scanner-primary", "fingerprint": "cc8876c01ac0c7f4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0bc822416dfd40c0", "level": "note", "message": {"text": "Unused endpoint: GET /network/interfaces"}, "properties": {"repobilityId": "f053c715cf9c382c", "scanner": "scanner-primary", "fingerprint": "0bc822416dfd40c0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8e7f0a7bfd649aff", "level": "note", "message": {"text": "Unused endpoint: POST /network/dns/resolve"}, "properties": {"repobilityId": "36f5ead5d730367e", "scanner": "scanner-primary", "fingerprint": "8e7f0a7bfd649aff", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a05d8766b689f804", "level": "note", "message": {"text": "Unused endpoint: POST /network/discovery"}, "properties": {"repobilityId": "07c598403aed3774", "scanner": "scanner-primary", "fingerprint": "a05d8766b689f804", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-98cb90c5347d2e3b", "level": "note", "message": {"text": "Unused endpoint: POST /tools/ping"}, "properties": {"repobilityId": "ccf88fdd87a7c27d", "scanner": "scanner-primary", "fingerprint": "98cb90c5347d2e3b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-452271f2342f5386", "level": "note", "message": {"text": "Unused endpoint: POST /tools/traceroute"}, "properties": {"repobilityId": "16de614f3df3de86", "scanner": "scanner-primary", "fingerprint": "452271f2342f5386", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9f4e4356604cf0cd", "level": "note", "message": {"text": "Unused endpoint: POST /tools/stop"}, "properties": {"repobilityId": "380298726e208616", "scanner": "scanner-primary", "fingerprint": "9f4e4356604cf0cd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e302987b2b48471d", "level": "note", "message": {"text": "Unused endpoint: POST /network/wol"}, "properties": {"repobilityId": "e279d0a3bf9e371b", "scanner": "scanner-primary", "fingerprint": "e302987b2b48471d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-67f97c6d84415e54", "level": "note", "message": {"text": "Unused endpoint: POST /tools/terminal/external"}, "properties": {"repobilityId": "404f494ef299e575", "scanner": "scanner-primary", "fingerprint": "67f97c6d84415e54", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-38f42433b947788e", "level": "note", "message": {"text": "Unused endpoint: GET /network/status"}, "properties": {"repobilityId": "bb916ff8316bea92", "scanner": "scanner-primary", "fingerprint": "38f42433b947788e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-512ccb0fd0b230ba", "level": "note", "message": {"text": "Unused endpoint: GET /settings"}, "properties": {"repobilityId": "9d9f6d58fc3d8572", "scanner": "scanner-primary", "fingerprint": "512ccb0fd0b230ba", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d9fbbfd361e91f1e", "level": "note", "message": {"text": "Unused endpoint: POST /settings"}, "properties": {"repobilityId": "b7da421467bb62de", "scanner": "scanner-primary", "fingerprint": "d9fbbfd361e91f1e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5a5d197a88648569", "level": "note", "message": {"text": "Unused endpoint: GET /settings/trusted-hosts"}, "properties": {"repobilityId": "12f7f959742321da", "scanner": "scanner-primary", "fingerprint": "5a5d197a88648569", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-996c27da6fa70c5c", "level": "note", "message": {"text": "Unused endpoint: POST /settings/trusted-hosts"}, "properties": {"repobilityId": "77fe2a5469314635", "scanner": "scanner-primary", "fingerprint": "996c27da6fa70c5c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-52a26ff404b63211", "level": "note", "message": {"text": "Unused endpoint: DELETE /settings/trusted-hosts"}, "properties": {"repobilityId": "e0fbd0b01cb94832", "scanner": "scanner-primary", "fingerprint": "52a26ff404b63211", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ae265ac951684f0a", "level": "note", "message": {"text": "Unused endpoint: GET /settings/export"}, "properties": {"repobilityId": "69cc55bcf7dce189", "scanner": "scanner-primary", "fingerprint": "ae265ac951684f0a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-748e0902108c75c8", "level": "note", "message": {"text": "Unused endpoint: POST /settings/import"}, "properties": {"repobilityId": "4c1ef6df59f6cae5", "scanner": "scanner-primary", "fingerprint": "748e0902108c75c8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b77b573717980efb", "level": "note", "message": {"text": "Unused endpoint: POST /settings/reset"}, "properties": {"repobilityId": "db28da0ae2703a55", "scanner": "scanner-primary", "fingerprint": "b77b573717980efb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-af052f44f3ebf3a8", "level": "note", "message": {"text": "Unused endpoint: GET /settings/backups"}, "properties": {"repobilityId": "fd2efa52aee214c5", "scanner": "scanner-primary", "fingerprint": "af052f44f3ebf3a8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3f1c5c1ebee99392", "level": "note", "message": {"text": "Unused endpoint: POST /settings/backups/create"}, "properties": {"repobilityId": "a7d9bce2c641a4a6", "scanner": "scanner-primary", "fingerprint": "3f1c5c1ebee99392", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-490c2a21fc0030f0", "level": "note", "message": {"text": "Unused endpoint: POST /settings/backups/{filename}/restore"}, "properties": {"repobilityId": "cab9f37d64c5a62a", "scanner": "scanner-primary", "fingerprint": "490c2a21fc0030f0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-434ffe92b1256514", "level": "note", "message": {"text": "Unused endpoint: DELETE /settings/backups/{filename}"}, "properties": {"repobilityId": "96f778da10cb928f", "scanner": "scanner-primary", "fingerprint": "434ffe92b1256514", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c3b64e2815c7659b", "level": "note", "message": {"text": "Unused endpoint: POST /security/unlock"}, "properties": {"repobilityId": "e1b0c6a9c80e5aa2", "scanner": "scanner-primary", "fingerprint": "c3b64e2815c7659b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-68b3bd9a4badd401", "level": "note", "message": {"text": "Unused endpoint: POST /security/lock"}, "properties": {"repobilityId": "01672372188eb02c", "scanner": "scanner-primary", "fingerprint": "68b3bd9a4badd401", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c6cab8eb7f3485c2", "level": "note", "message": {"text": "Unused endpoint: GET /security/status"}, "properties": {"repobilityId": "d42b399df889bb3d", "scanner": "scanner-primary", "fingerprint": "c6cab8eb7f3485c2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4407452036d7e61b", "level": "note", "message": {"text": "Unused endpoint: GET /security/credentials"}, "properties": {"repobilityId": "7189ac76474197a9", "scanner": "scanner-primary", "fingerprint": "4407452036d7e61b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-02595740bfb598cc", "level": "note", "message": {"text": "Unused endpoint: POST /security/credentials"}, "properties": {"repobilityId": "6eac64cebf2dedc0", "scanner": "scanner-primary", "fingerprint": "02595740bfb598cc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-de0bf17da63f126f", "level": "note", "message": {"text": "Unused endpoint: DELETE /security/credentials/{entry_id}"}, "properties": {"repobilityId": "9b8ef43c25b41661", "scanner": "scanner-primary", "fingerprint": "de0bf17da63f126f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-34b23c6e33eee49e", "level": "note", "message": {"text": "Unused endpoint: POST /security/credentials/decrypt"}, "properties": {"repobilityId": "0741e9c218717a37", "scanner": "scanner-primary", "fingerprint": "34b23c6e33eee49e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d38323dfc5ee27a7", "level": "note", "message": {"text": "Unused endpoint: GET /security/hint"}, "properties": {"repobilityId": "1d27f04aabe77308", "scanner": "scanner-primary", "fingerprint": "d38323dfc5ee27a7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0101d243882f1f64", "level": "note", "message": {"text": "Unused endpoint: POST /security/reset"}, "properties": {"repobilityId": "81bca8b9e4dbaed8", "scanner": "scanner-primary", "fingerprint": "0101d243882f1f64", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7283403f0f3762c4", "level": "note", "message": {"text": "Unused endpoint: POST /diagnose-target"}, "properties": {"repobilityId": "e0dcdc6485c40acc", "scanner": "scanner-primary", "fingerprint": "7283403f0f3762c4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c09b6d90f7fb6557", "level": "note", "message": {"text": "Unused endpoint: POST /services"}, "properties": {"repobilityId": "2a3b3fa126e37efc", "scanner": "scanner-primary", "fingerprint": "c09b6d90f7fb6557", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ebe26f4bfaf59b68", "level": "note", "message": {"text": "Unused endpoint: POST /services/manage"}, "properties": {"repobilityId": "7708faf38d809fc7", "scanner": "scanner-primary", "fingerprint": "ebe26f4bfaf59b68", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6e5a7e7aa3aa0386", "level": "note", "message": {"text": "Unused endpoint: POST /spooler/manage"}, "properties": {"repobilityId": "b9f2cf805e56fb7a", "scanner": "scanner-primary", "fingerprint": "6e5a7e7aa3aa0386", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0197bbf7918528da", "level": "note", "message": {"text": "Unused endpoint: POST /logs"}, "properties": {"repobilityId": "4d6641865dd18c22", "scanner": "scanner-primary", "fingerprint": "0197bbf7918528da", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f414a9477ccf808f", "level": "note", "message": {"text": "Unused endpoint: POST /host-probe"}, "properties": {"repobilityId": "3ad20177b4e68bce", "scanner": "scanner-primary", "fingerprint": "f414a9477ccf808f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-717b77188852d500", "level": "note", "message": {"text": "Unused endpoint: POST /pre-power-check"}, "properties": {"repobilityId": "da4468ed520af061", "scanner": "scanner-primary", "fingerprint": "717b77188852d500", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-91e18f1d803a9d57", "level": "note", "message": {"text": "Unused endpoint: POST /teamviewer"}, "properties": {"repobilityId": "4d6c1739974a6241", "scanner": "scanner-primary", "fingerprint": "91e18f1d803a9d57", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-92efb2dc9205e7a4", "level": "note", "message": {"text": "Unused endpoint: POST /sessions"}, "properties": {"repobilityId": "63c4009f0f719391", "scanner": "scanner-primary", "fingerprint": "92efb2dc9205e7a4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-540ebf4772ccf420", "level": "note", "message": {"text": "Unused endpoint: POST /disconnect"}, "properties": {"repobilityId": "d62328451b42b236", "scanner": "scanner-primary", "fingerprint": "540ebf4772ccf420", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fff3a3880c5521ef", "level": "note", "message": {"text": "Unused endpoint: POST /power"}, "properties": {"repobilityId": "45d3e9bceaae17db", "scanner": "scanner-primary", "fingerprint": "fff3a3880c5521ef", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1c58c8464feff3f5", "level": "note", "message": {"text": "Unused endpoint: GET /trusted-hosts"}, "properties": {"repobilityId": "cf05e45532f1e615", "scanner": "scanner-primary", "fingerprint": "1c58c8464feff3f5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}