{"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-42a62a6203b990fe", "name": "Possibly dead Python function: handle_client", "shortDescription": {"text": "Possibly dead Python function: handle_client"}, "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-1bc43971c48a474a", "name": "Possibly dead Python function: print_fix", "shortDescription": {"text": "Possibly dead Python function: print_fix"}, "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-9ddb0fde7dab90c5", "name": "Possibly dead Python function: do_GET", "shortDescription": {"text": "Possibly dead Python function: do_GET"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-82ac9081e6a68201", "name": "Possibly dead Python function: do_POST", "shortDescription": {"text": "Possibly dead Python function: do_POST"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-90a951a2d34e1f42", "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-63bed947ac2e52cd", "name": "Possibly dead Python function: move_relative_degrees", "shortDescription": {"text": "Possibly dead Python function: move_relative_degrees"}, "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-078eb7ff5fa7032a", "name": "Possibly dead Python function: sync_position", "shortDescription": {"text": "Possibly dead Python function: sync_position"}, "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-8dd940553b9e244f", "name": "Possibly dead Python function: move_absolute_degrees", "shortDescription": {"text": "Possibly dead Python function: move_absolute_degrees"}, "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-d5ba4eb172273385", "name": "Possibly dead Python function: emergency_stop", "shortDescription": {"text": "Possibly dead Python function: emergency_stop"}, "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-10067e91c961756e", "name": "Possibly dead Python function: set_speed", "shortDescription": {"text": "Possibly dead Python function: set_speed"}, "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-c045a3a458df34e6", "name": "Possibly dead Python function: make_uf2", "shortDescription": {"text": "Possibly dead Python function: make_uf2"}, "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-5164012cf9bde002", "name": "Possibly dead Python function: make_frame_source", "shortDescription": {"text": "Possibly dead Python function: make_frame_source"}, "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-84e8f78c124057c1", "name": "Possibly dead Python function: dependency", "shortDescription": {"text": "Possibly dead Python function: dependency"}, "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-6670c9bdf782250b", "name": "Possibly dead Python function: is_gimbal_fresh", "shortDescription": {"text": "Possibly dead Python function: is_gimbal_fresh"}, "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-ccd1b1a71290e2a7", "name": "Possibly dead Python function: is_target_fresh", "shortDescription": {"text": "Possibly dead Python function: is_target_fresh"}, "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-43d878a8d2a9dc8f", "name": "Privileged port 50 in use", "shortDescription": {"text": "Privileged port 50 in use"}, "fullDescription": {"text": "Port 50 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5d44357494b991cf", "name": "Privileged port 554 in use", "shortDescription": {"text": "Privileged port 554 in use"}, "fullDescription": {"text": "Port 554 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-983900d09acf0f4f", "name": "Privileged port 88 in use", "shortDescription": {"text": "Privileged port 88 in use"}, "fullDescription": {"text": "Port 88 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8b40314811a44351", "name": "Insecure pattern 'cors_wildcard' in archive/legacy-20260606/retired-dashboard/orin-dashboard/dashboard.py:659", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in archive/legacy-20260606/retired-dashboard/orin-dashboard/dashboard.py:659"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cf95dca2d4eb0c34", "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-python@v5 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-b32b9dda168943a6", "name": "Very large file: orin/wavecam/tests/test_control_api.py (1753 lines)", "shortDescription": {"text": "Very large file: orin/wavecam/tests/test_control_api.py (1753 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-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 204 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 16 placeholder/mock markers across 8 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-35e4c6e1d8a365a5", "name": "Stub function `log_message` (body is just `pass`/`return`) \u2014 archive/legacy-20260606/retired-dashboard/orin-dashboard/da", "shortDescription": {"text": "Stub function `log_message` (body is just `pass`/`return`) \u2014 archive/legacy-20260606/retired-dashboard/orin-dashboard/dashboard.py:778"}, "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-f932e9f8fcd17b58", "name": "Network/subprocess call without timeout or try/except \u2014 firmware/direct-lora/tools/uf2_postbuild.py:17", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 firmware/direct-lora/tools/uf2_postbuild.py:17"}, "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-c3ffd087ead3834f", "name": "Stub function `release` (body is just `pass`/`return`) \u2014 orin/vision/frame_source.py:24", "shortDescription": {"text": "Stub function `release` (body is just `pass`/`return`) \u2014 orin/vision/frame_source.py:24"}, "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-295453f819803fa2", "name": "Stub function `get_position` (body is just `pass`/`return`) \u2014 orin/camera_control/camera_adapter.py:50", "shortDescription": {"text": "Stub function `get_position` (body is just `pass`/`return`) \u2014 orin/camera_control/camera_adapter.py:50"}, "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-b21d27bd3d4a464a", "name": "Legacy-named symbol `test_agent_is_read_only_in_v1` in orin/wavecam/tests/test_control_api_auth.py:255", "shortDescription": {"text": "Legacy-named symbol `test_agent_is_read_only_in_v1` in orin/wavecam/tests/test_control_api_auth.py:255"}, "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-c3afc9ada817060b", "name": "Commented-code block (5 lines) in orin/wavecam/wavecam/ptz_state.py:44", "shortDescription": {"text": "Commented-code block (5 lines) in orin/wavecam/wavecam/ptz_state.py:44"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c5a04a486f9b60bd", "name": "Commented-code block (6 lines) in orin/wavecam/wavecam/config.py:335", "shortDescription": {"text": "Commented-code block (6 lines) in orin/wavecam/wavecam/config.py:335"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-75071179d831de25", "name": "Stub function `get_fix` (body is just `pass`/`return`) \u2014 orin/wavecam/wavecam/gps_stub.py:32", "shortDescription": {"text": "Stub function `get_fix` (body is just `pass`/`return`) \u2014 orin/wavecam/wavecam/gps_stub.py:32"}, "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-67a5f0f9b9b36a14", "name": "Commented-code block (5 lines) in orin/wavecam/wavecam/camera_pose.py:19", "shortDescription": {"text": "Commented-code block (5 lines) in orin/wavecam/wavecam/camera_pose.py:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d03540878d76da1e", "name": "Commented-code block (7 lines) in orin/wavecam/wavecam/control_api.py:883", "shortDescription": {"text": "Commented-code block (7 lines) in orin/wavecam/wavecam/control_api.py:883"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ad4f054c6b6c0776", "name": "Commented-code block (5 lines) in orin/wavecam/wavecam/sensor_hub.py:128", "shortDescription": {"text": "Commented-code block (5 lines) in orin/wavecam/wavecam/sensor_hub.py:128"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1a3395ac5a812cfc", "name": "Commented-code block (5 lines) in orin/wavecam/wavecam/ptz_visca.py:165", "shortDescription": {"text": "Commented-code block (5 lines) in orin/wavecam/wavecam/ptz_visca.py:165"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-26bf7e1f899783d9", "name": "Commented-code block (6 lines) in orin/wavecam/wavecam/pipeline.py:294", "shortDescription": {"text": "Commented-code block (6 lines) in orin/wavecam/wavecam/pipeline.py:294"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-413a6945dccb87af", "name": "Commented-code block (8 lines) in orin/wavecam/wavecam/control_calibration.py:740", "shortDescription": {"text": "Commented-code block (8 lines) in orin/wavecam/wavecam/control_calibration.py:740"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3416783193773b49", "name": "Network/subprocess call without timeout or try/except \u2014 orin/wavecam/wavecam/supervisor.py:122", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 orin/wavecam/wavecam/supervisor.py:122"}, "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-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:\narchive/legacy-20260606/apple-gps-cloudflare/orin-gps_server.py:from_dict, archive/legacy-20260606/apple-gps-cloudflare/orin-gps_server.py:from_dict, archive/legacy-20260606/apple-gps-cloudflare/orin-gps_server.py:from_dict\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\norin/media/streamer.py:stop, orin/media/recorder.py:stop\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-a4dc6f1be831f220", "name": "Unused endpoint: GET /api/v1/version", "shortDescription": {"text": "Unused endpoint: GET /api/v1/version"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `GET /api/v1/version` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-506a769a0f154d47", "name": "Unused endpoint: GET /guide", "shortDescription": {"text": "Unused endpoint: GET /guide"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `GET /guide` 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-3a41325fddf72ce1", "name": "Unused endpoint: GET /guide_assets/{asset_path:path}", "shortDescription": {"text": "Unused endpoint: GET /guide_assets/{asset_path:path}"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `GET /guide_assets/{asset_path:path}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e0055a89d5952f94", "name": "Unused endpoint: GET /api/v1/status", "shortDescription": {"text": "Unused endpoint: GET /api/v1/status"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `GET /api/v1/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-57bbab0b17379353", "name": "Unused endpoint: GET /api/v1/preview.mjpeg", "shortDescription": {"text": "Unused endpoint: GET /api/v1/preview.mjpeg"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `GET /api/v1/preview.mjpeg` 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-2a91f5989470f43d", "name": "Unused endpoint: POST /api/v1/safety/kill", "shortDescription": {"text": "Unused endpoint: POST /api/v1/safety/kill"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/safety/kill` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f10f2048d29436e2", "name": "Unused endpoint: POST /api/v1/safety/resume", "shortDescription": {"text": "Unused endpoint: POST /api/v1/safety/resume"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/safety/resume` 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-3d573697ce5f2e2b", "name": "Unused endpoint: POST /api/v1/ptz/stop", "shortDescription": {"text": "Unused endpoint: POST /api/v1/ptz/stop"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/ptz/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-31757d814457436c", "name": "Unused endpoint: POST /api/v1/ptz/auto", "shortDescription": {"text": "Unused endpoint: POST /api/v1/ptz/auto"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/ptz/auto` 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-9518eb7ab2adf386", "name": "Unused endpoint: POST /api/v1/ptz/home", "shortDescription": {"text": "Unused endpoint: POST /api/v1/ptz/home"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/ptz/home` 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-27348dbee5ac97ed", "name": "Unused endpoint: POST /api/v1/ptz/velocity", "shortDescription": {"text": "Unused endpoint: POST /api/v1/ptz/velocity"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/ptz/velocity` 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-a87ddaca0cdd6d42", "name": "Unused endpoint: POST /api/v1/ptz/zoom", "shortDescription": {"text": "Unused endpoint: POST /api/v1/ptz/zoom"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/ptz/zoom` 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-62c6ca476132cbcc", "name": "Unused endpoint: GET /api/v1/calibration", "shortDescription": {"text": "Unused endpoint: GET /api/v1/calibration"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `GET /api/v1/calibration` 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-c82464d9fee22551", "name": "Unused endpoint: POST /api/v1/calibration/session/start", "shortDescription": {"text": "Unused endpoint: POST /api/v1/calibration/session/start"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/calibration/session/start` 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-a1591e48d01551a6", "name": "Unused endpoint: POST /api/v1/calibration/session/exit", "shortDescription": {"text": "Unused endpoint: POST /api/v1/calibration/session/exit"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/calibration/session/exit` 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-87a615718368d1bd", "name": "Unused endpoint: POST /api/v1/calibration/location", "shortDescription": {"text": "Unused endpoint: POST /api/v1/calibration/location"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/calibration/location` 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-b04231cd8583bdcd", "name": "Unused endpoint: POST /api/v1/calibration/level", "shortDescription": {"text": "Unused endpoint: POST /api/v1/calibration/level"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/calibration/level` 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-ae23be00d3908bad", "name": "Unused endpoint: POST /api/v1/calibration/heading-lock", "shortDescription": {"text": "Unused endpoint: POST /api/v1/calibration/heading-lock"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/calibration/heading-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-abe96c98f277ac26", "name": "Unused endpoint: POST /api/v1/calibration/validation", "shortDescription": {"text": "Unused endpoint: POST /api/v1/calibration/validation"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/calibration/validation` 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-d53f6228940f6eb7", "name": "Unused endpoint: POST /api/v1/calibration/validation/confirm", "shortDescription": {"text": "Unused endpoint: POST /api/v1/calibration/validation/confirm"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/calibration/validation/confirm` 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-94e1479b6c999367", "name": "Unused endpoint: POST /api/v1/calibration/heading", "shortDescription": {"text": "Unused endpoint: POST /api/v1/calibration/heading"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/calibration/heading` 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-c6cc428fd6942d65", "name": "Unused endpoint: POST /api/v1/calibration/tilt", "shortDescription": {"text": "Unused endpoint: POST /api/v1/calibration/tilt"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/calibration/tilt` 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-707023e907d74265", "name": "Unused endpoint: POST /api/v1/calibration/zoom", "shortDescription": {"text": "Unused endpoint: POST /api/v1/calibration/zoom"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/calibration/zoom` 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-f5a4465bcff4a770", "name": "Unused endpoint: POST /api/v1/calibration/base-lock", "shortDescription": {"text": "Unused endpoint: POST /api/v1/calibration/base-lock"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/calibration/base-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-a7cb1eaa1f00e957", "name": "Unused endpoint: GET /api/v1/calibration/fov", "shortDescription": {"text": "Unused endpoint: GET /api/v1/calibration/fov"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `GET /api/v1/calibration/fov` 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-7400731b4cc195ab", "name": "Unused endpoint: POST /api/v1/calibration/fov", "shortDescription": {"text": "Unused endpoint: POST /api/v1/calibration/fov"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/calibration/fov` 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-ed74ad0862fffdb2", "name": "Unused endpoint: GET /api/v1/media/status", "shortDescription": {"text": "Unused endpoint: GET /api/v1/media/status"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `GET /api/v1/media/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-2655c8cda8b43e24", "name": "Unused endpoint: GET /api/v1/media/list", "shortDescription": {"text": "Unused endpoint: GET /api/v1/media/list"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `GET /api/v1/media/list` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ba13a0793f2de2b6", "name": "Unused endpoint: GET /api/v1/media/download/{name}", "shortDescription": {"text": "Unused endpoint: GET /api/v1/media/download/{name}"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `GET /api/v1/media/download/{name}` 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-fe10918dade0ed4b", "name": "Unused endpoint: DELETE /api/v1/media/{name}", "shortDescription": {"text": "Unused endpoint: DELETE /api/v1/media/{name}"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `DELETE /api/v1/media/{name}` 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-206b815ab4489f22", "name": "Unused endpoint: POST /api/v1/media/record/start", "shortDescription": {"text": "Unused endpoint: POST /api/v1/media/record/start"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/media/record/start` 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-36ae5d72774d9991", "name": "Unused endpoint: POST /api/v1/media/record/stop", "shortDescription": {"text": "Unused endpoint: POST /api/v1/media/record/stop"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/media/record/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-ecfb856c982996fc", "name": "Unused endpoint: GET /api/v1/presets", "shortDescription": {"text": "Unused endpoint: GET /api/v1/presets"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `GET /api/v1/presets` 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-c64b144959235854", "name": "Unused endpoint: POST /api/v1/presets", "shortDescription": {"text": "Unused endpoint: POST /api/v1/presets"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/presets` 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-5ed76fc9b800f015", "name": "Unused endpoint: POST /api/v1/presets/{name}/apply", "shortDescription": {"text": "Unused endpoint: POST /api/v1/presets/{name}/apply"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/presets/{name}/apply` 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-8a75a63ab0423d12", "name": "Unused endpoint: DELETE /api/v1/presets/{name}", "shortDescription": {"text": "Unused endpoint: DELETE /api/v1/presets/{name}"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `DELETE /api/v1/presets/{name}` 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-0b4ca953cbcb71d7", "name": "Unused endpoint: GET /api/v1/logs", "shortDescription": {"text": "Unused endpoint: GET /api/v1/logs"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `GET /api/v1/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-75f5f4165bf91297", "name": "Unused endpoint: GET /api/v1/config", "shortDescription": {"text": "Unused endpoint: GET /api/v1/config"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `GET /api/v1/config` 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-0ec4766197fa2303", "name": "Unused endpoint: POST /api/v1/config/hot", "shortDescription": {"text": "Unused endpoint: POST /api/v1/config/hot"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/config/hot` 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-f964cfca29bada07", "name": "Unused endpoint: POST /api/v1/system/restart", "shortDescription": {"text": "Unused endpoint: POST /api/v1/system/restart"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/system/restart` 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-893be36de66b31cd", "name": "Unused endpoint: POST /api/v1/agent/summon", "shortDescription": {"text": "Unused endpoint: POST /api/v1/agent/summon"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/agent/summon` 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-ff7d5012791ef76d", "name": "Unused endpoint: GET /api/v1/agent/report", "shortDescription": {"text": "Unused endpoint: GET /api/v1/agent/report"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `GET /api/v1/agent/report` 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-b56f40ecaadd672c", "name": "Unused endpoint: GET /api/v1/events", "shortDescription": {"text": "Unused endpoint: GET /api/v1/events"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `GET /api/v1/events` 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-17853ae3b9e735ba", "name": "Unused endpoint: POST /api/v1/sensors/phone", "shortDescription": {"text": "Unused endpoint: POST /api/v1/sensors/phone"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/sensors/phone` 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-7248b63ad4d5afed", "name": "Unused endpoint: POST /api/v1/sensors/phone/baseline/reset", "shortDescription": {"text": "Unused endpoint: POST /api/v1/sensors/phone/baseline/reset"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `POST /api/v1/sensors/phone/baseline/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-a436691337284d03", "name": "Unused endpoint: GET /api/v1/health", "shortDescription": {"text": "Unused endpoint: GET /api/v1/health"}, "fullDescription": {"text": "`orin/wavecam/wavecam/control_api.py` declares `GET /api/v1/health` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`orin/wavecam/wavecam/web.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-c178268666276f66", "name": "Unused endpoint: GET /stream.mjpg", "shortDescription": {"text": "Unused endpoint: GET /stream.mjpg"}, "fullDescription": {"text": "`orin/wavecam/wavecam/web.py` declares `GET /stream.mjpg` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7569de4538b5c19a", "name": "Unused endpoint: POST /kill", "shortDescription": {"text": "Unused endpoint: POST /kill"}, "fullDescription": {"text": "`orin/wavecam/wavecam/web.py` declares `POST /kill` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1c36c6f9e51a0316", "name": "Unused endpoint: POST /resume", "shortDescription": {"text": "Unused endpoint: POST /resume"}, "fullDescription": {"text": "`orin/wavecam/wavecam/web.py` declares `POST /resume` 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/20373"}, "properties": {"repository": "stonezone/jetsonTracker", "repoUrl": "https://github.com/stonezone/jetsonTracker", "branch": "main"}, "results": [{"ruleId": "scanner-42a62a6203b990fe", "level": "note", "message": {"text": "Possibly dead Python function: handle_client"}, "properties": {"repobilityId": "cb83c99b4c24363d", "scanner": "scanner-primary", "fingerprint": "42a62a6203b990fe", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "archive/legacy-20260606/apple-gps-cloudflare/orin-gps_server.py:344"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1bc43971c48a474a", "level": "note", "message": {"text": "Possibly dead Python function: print_fix"}, "properties": {"repobilityId": "7f9e1c32a08429a5", "scanner": "scanner-primary", "fingerprint": "1bc43971c48a474a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "archive/legacy-20260606/apple-gps-cloudflare/orin-gps_server.py:630"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9ddb0fde7dab90c5", "level": "note", "message": {"text": "Possibly dead Python function: do_GET"}, "properties": {"repobilityId": "2d943bb45e4f13bd", "scanner": "scanner-primary", "fingerprint": "9ddb0fde7dab90c5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "archive/legacy-20260606/retired-dashboard/orin-dashboard/dashboard.py:663"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-82ac9081e6a68201", "level": "note", "message": {"text": "Possibly dead Python function: do_POST"}, "properties": {"repobilityId": "53357410ca9379a9", "scanner": "scanner-primary", "fingerprint": "82ac9081e6a68201", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "archive/legacy-20260606/retired-dashboard/orin-dashboard/dashboard.py:718"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-90a951a2d34e1f42", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "90a951a2d34e1f42", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "archive/legacy-20260606/retired-dashboard/orin-dashboard/dashboard.py:778"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-63bed947ac2e52cd", "level": "note", "message": {"text": "Possibly dead Python function: move_relative_degrees"}, "properties": {"repobilityId": "9e1358c32c6cdf3c", "scanner": "scanner-primary", "fingerprint": "63bed947ac2e52cd", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "archive/legacy-20260606/stm32-nucleo-stepper/orin-gimbal_control/gimbal_controller.py:258"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-078eb7ff5fa7032a", "level": "note", "message": {"text": "Possibly dead Python function: sync_position"}, "properties": {"repobilityId": "cc1afa23e78bec37", "scanner": "scanner-primary", "fingerprint": "078eb7ff5fa7032a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "archive/legacy-20260606/stm32-nucleo-stepper/orin-gimbal_control/gimbal_controller.py:266"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8dd940553b9e244f", "level": "note", "message": {"text": "Possibly dead Python function: move_absolute_degrees"}, "properties": {"repobilityId": "68f07ca1e812cbf4", "scanner": "scanner-primary", "fingerprint": "8dd940553b9e244f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "archive/legacy-20260606/stm32-nucleo-stepper/orin-gimbal_control/gimbal_controller.py:290"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d5ba4eb172273385", "level": "note", "message": {"text": "Possibly dead Python function: emergency_stop"}, "properties": {"repobilityId": "2b036ef1c5f84f3b", "scanner": "scanner-primary", "fingerprint": "d5ba4eb172273385", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "archive/legacy-20260606/stm32-nucleo-stepper/orin-gimbal_control/gimbal_controller.py:334"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-10067e91c961756e", "level": "note", "message": {"text": "Possibly dead Python function: set_speed"}, "properties": {"repobilityId": "e316a81bbbcf9720", "scanner": "scanner-primary", "fingerprint": "10067e91c961756e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "archive/legacy-20260606/stm32-nucleo-stepper/orin-gimbal_control/gimbal_controller.py:339"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c045a3a458df34e6", "level": "note", "message": {"text": "Possibly dead Python function: make_uf2"}, "properties": {"repobilityId": "538993dbcf14e9d0", "scanner": "scanner-primary", "fingerprint": "c045a3a458df34e6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "firmware/direct-lora/tools/uf2_postbuild.py:8"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5164012cf9bde002", "level": "note", "message": {"text": "Possibly dead Python function: make_frame_source"}, "properties": {"repobilityId": "5029cba1595f30a2", "scanner": "scanner-primary", "fingerprint": "5164012cf9bde002", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "orin/vision/frame_source.py:117"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-84e8f78c124057c1", "level": "note", "message": {"text": "Possibly dead Python function: dependency"}, "properties": {"repobilityId": "e2f97c76f5b6acb6", "scanner": "scanner-primary", "fingerprint": "84e8f78c124057c1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "orin/wavecam/wavecam/auth.py:108"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6670c9bdf782250b", "level": "note", "message": {"text": "Possibly dead Python function: is_gimbal_fresh"}, "properties": {"repobilityId": "eed5c740cd48d36f", "scanner": "scanner-primary", "fingerprint": "6670c9bdf782250b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "orin/gps_fusion/gps_client.py:235"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ccd1b1a71290e2a7", "level": "note", "message": {"text": "Possibly dead Python function: is_target_fresh"}, "properties": {"repobilityId": "9522a2872c44ebc6", "scanner": "scanner-primary", "fingerprint": "ccd1b1a71290e2a7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "orin/gps_fusion/gps_client.py:240"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-43d878a8d2a9dc8f", "level": "warning", "message": {"text": "Privileged port 50 in use"}, "properties": {"repobilityId": "da61f654c07ea7a9", "scanner": "scanner-primary", "fingerprint": "43d878a8d2a9dc8f", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "orin/wavecam/config.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5d44357494b991cf", "level": "warning", "message": {"text": "Privileged port 554 in use"}, "properties": {"repobilityId": "6639d60eed047e74", "scanner": "scanner-primary", "fingerprint": "5d44357494b991cf", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "orin/wavecam/config.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-983900d09acf0f4f", "level": "warning", "message": {"text": "Privileged port 88 in use"}, "properties": {"repobilityId": "9d45e69facb9ea27", "scanner": "scanner-primary", "fingerprint": "983900d09acf0f4f", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "orin/wavecam/config.orin.servo.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-8b40314811a44351", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in archive/legacy-20260606/retired-dashboard/orin-dashboard/dashboard.py:659"}, "properties": {"repobilityId": "9a1f07aad11808cd", "scanner": "scanner-primary", "fingerprint": "8b40314811a44351", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "archive/legacy-20260606/retired-dashboard/orin-dashboard/dashboard.py"}, "region": {"startLine": 659}}}]}, {"ruleId": "scanner-cf95dca2d4eb0c34", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e6be7d9507caaa46", "scanner": "scanner-primary", "fingerprint": "cf95dca2d4eb0c34", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/backend-tests.yml"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-b32b9dda168943a6", "level": "note", "message": {"text": "Very large file: orin/wavecam/tests/test_control_api.py (1753 lines)"}, "properties": {"repobilityId": "7284719ca6f92bbb", "scanner": "scanner-primary", "fingerprint": "b32b9dda168943a6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "578f1bfb8e44e619", "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": "65db55d43d4fe804", "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": "240d34201512ad80", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "3e3e0b1fefcfb3fa", "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": "adb274a2d0aae879", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-35e4c6e1d8a365a5", "level": "note", "message": {"text": "Stub function `log_message` (body is just `pass`/`return`) \u2014 archive/legacy-20260606/retired-dashboard/orin-dashboard/dashboard.py:778"}, "properties": {"repobilityId": "7390975884bd311e", "scanner": "scanner-primary", "fingerprint": "35e4c6e1d8a365a5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-f932e9f8fcd17b58", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 firmware/direct-lora/tools/uf2_postbuild.py:17"}, "properties": {"repobilityId": "d388e38bfd4e102f", "scanner": "scanner-primary", "fingerprint": "f932e9f8fcd17b58", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c3ffd087ead3834f", "level": "note", "message": {"text": "Stub function `release` (body is just `pass`/`return`) \u2014 orin/vision/frame_source.py:24"}, "properties": {"repobilityId": "9fcf00b330f32840", "scanner": "scanner-primary", "fingerprint": "c3ffd087ead3834f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-295453f819803fa2", "level": "note", "message": {"text": "Stub function `get_position` (body is just `pass`/`return`) \u2014 orin/camera_control/camera_adapter.py:50"}, "properties": {"repobilityId": "79d820d386e42d30", "scanner": "scanner-primary", "fingerprint": "295453f819803fa2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-b21d27bd3d4a464a", "level": "note", "message": {"text": "Legacy-named symbol `test_agent_is_read_only_in_v1` in orin/wavecam/tests/test_control_api_auth.py:255"}, "properties": {"repobilityId": "157e60b121220d8e", "scanner": "scanner-primary", "fingerprint": "b21d27bd3d4a464a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c3afc9ada817060b", "level": "none", "message": {"text": "Commented-code block (5 lines) in orin/wavecam/wavecam/ptz_state.py:44"}, "properties": {"repobilityId": "b04e866f572150dc", "scanner": "scanner-primary", "fingerprint": "c3afc9ada817060b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c5a04a486f9b60bd", "level": "none", "message": {"text": "Commented-code block (6 lines) in orin/wavecam/wavecam/config.py:335"}, "properties": {"repobilityId": "f44daa0b357d151b", "scanner": "scanner-primary", "fingerprint": "c5a04a486f9b60bd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-75071179d831de25", "level": "note", "message": {"text": "Stub function `get_fix` (body is just `pass`/`return`) \u2014 orin/wavecam/wavecam/gps_stub.py:32"}, "properties": {"repobilityId": "dccb350710dadc9a", "scanner": "scanner-primary", "fingerprint": "75071179d831de25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-67a5f0f9b9b36a14", "level": "none", "message": {"text": "Commented-code block (5 lines) in orin/wavecam/wavecam/camera_pose.py:19"}, "properties": {"repobilityId": "6af6d234b0c73068", "scanner": "scanner-primary", "fingerprint": "67a5f0f9b9b36a14", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d03540878d76da1e", "level": "none", "message": {"text": "Commented-code block (7 lines) in orin/wavecam/wavecam/control_api.py:883"}, "properties": {"repobilityId": "1dabbf0cfca1dbde", "scanner": "scanner-primary", "fingerprint": "d03540878d76da1e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ad4f054c6b6c0776", "level": "none", "message": {"text": "Commented-code block (5 lines) in orin/wavecam/wavecam/sensor_hub.py:128"}, "properties": {"repobilityId": "56bc6bdc449614a5", "scanner": "scanner-primary", "fingerprint": "ad4f054c6b6c0776", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1a3395ac5a812cfc", "level": "none", "message": {"text": "Commented-code block (5 lines) in orin/wavecam/wavecam/ptz_visca.py:165"}, "properties": {"repobilityId": "0c8204a1328f77de", "scanner": "scanner-primary", "fingerprint": "1a3395ac5a812cfc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-26bf7e1f899783d9", "level": "none", "message": {"text": "Commented-code block (6 lines) in orin/wavecam/wavecam/pipeline.py:294"}, "properties": {"repobilityId": "67f2162c0aa52314", "scanner": "scanner-primary", "fingerprint": "26bf7e1f899783d9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-413a6945dccb87af", "level": "none", "message": {"text": "Commented-code block (8 lines) in orin/wavecam/wavecam/control_calibration.py:740"}, "properties": {"repobilityId": "044d5960d5949ee5", "scanner": "scanner-primary", "fingerprint": "413a6945dccb87af", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3416783193773b49", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 orin/wavecam/wavecam/supervisor.py:122"}, "properties": {"repobilityId": "11acfe86786db8ff", "scanner": "scanner-primary", "fingerprint": "3416783193773b49", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "14ac459fdc239b7d", "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": "631dd96bb4b4015f", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "68c27a30c4ed6d39", "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": "106807bf36a9c825", "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": "1f0b933e50f467a4", "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": "f562bc33c45a5a06", "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": "0803310abb66378d", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "e98e7addd4a5176e", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "b086c3417bd3f0b8", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "a235f35fc28bf0fc", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "7089b474e29f34c8", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "6b45bc680f3f3705", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "439b0e3bce63434d", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "e9ad930e399c801c", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "28c67d9f18f51f92", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "6e88f9b25281bcc7", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "19d2be57f09a22e7", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "702f3386f9400ce7", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "eee5669243a57d8f", "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": "f6652bb8eae22fb1", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-a4dc6f1be831f220", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/version"}, "properties": {"repobilityId": "38e1e465b6aafbd6", "scanner": "scanner-primary", "fingerprint": "a4dc6f1be831f220", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-506a769a0f154d47", "level": "note", "message": {"text": "Unused endpoint: GET /guide"}, "properties": {"repobilityId": "81c47872fd1ac92f", "scanner": "scanner-primary", "fingerprint": "506a769a0f154d47", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3a41325fddf72ce1", "level": "note", "message": {"text": "Unused endpoint: GET /guide_assets/{asset_path:path}"}, "properties": {"repobilityId": "cc797946ddf8fba0", "scanner": "scanner-primary", "fingerprint": "3a41325fddf72ce1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e0055a89d5952f94", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/status"}, "properties": {"repobilityId": "f834e056696c45a7", "scanner": "scanner-primary", "fingerprint": "e0055a89d5952f94", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-57bbab0b17379353", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/preview.mjpeg"}, "properties": {"repobilityId": "3beaaa9f195be02e", "scanner": "scanner-primary", "fingerprint": "57bbab0b17379353", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2a91f5989470f43d", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/safety/kill"}, "properties": {"repobilityId": "24950adcf0e37bd5", "scanner": "scanner-primary", "fingerprint": "2a91f5989470f43d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f10f2048d29436e2", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/safety/resume"}, "properties": {"repobilityId": "077a8ea14aef1b96", "scanner": "scanner-primary", "fingerprint": "f10f2048d29436e2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3d573697ce5f2e2b", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/ptz/stop"}, "properties": {"repobilityId": "1805f5dcb926fa3e", "scanner": "scanner-primary", "fingerprint": "3d573697ce5f2e2b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-31757d814457436c", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/ptz/auto"}, "properties": {"repobilityId": "0b42612040a5c312", "scanner": "scanner-primary", "fingerprint": "31757d814457436c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9518eb7ab2adf386", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/ptz/home"}, "properties": {"repobilityId": "9b204e37de3a8c0c", "scanner": "scanner-primary", "fingerprint": "9518eb7ab2adf386", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-27348dbee5ac97ed", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/ptz/velocity"}, "properties": {"repobilityId": "34be5bc79fe48e8b", "scanner": "scanner-primary", "fingerprint": "27348dbee5ac97ed", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a87ddaca0cdd6d42", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/ptz/zoom"}, "properties": {"repobilityId": "bfcc479ac0e2e8a1", "scanner": "scanner-primary", "fingerprint": "a87ddaca0cdd6d42", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-62c6ca476132cbcc", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/calibration"}, "properties": {"repobilityId": "5f03d971d350a477", "scanner": "scanner-primary", "fingerprint": "62c6ca476132cbcc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c82464d9fee22551", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/calibration/session/start"}, "properties": {"repobilityId": "f9a63dd0a4b9823a", "scanner": "scanner-primary", "fingerprint": "c82464d9fee22551", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a1591e48d01551a6", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/calibration/session/exit"}, "properties": {"repobilityId": "3dff850025f85309", "scanner": "scanner-primary", "fingerprint": "a1591e48d01551a6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-87a615718368d1bd", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/calibration/location"}, "properties": {"repobilityId": "c605659c485a4f6f", "scanner": "scanner-primary", "fingerprint": "87a615718368d1bd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b04231cd8583bdcd", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/calibration/level"}, "properties": {"repobilityId": "659444af8c60800c", "scanner": "scanner-primary", "fingerprint": "b04231cd8583bdcd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ae23be00d3908bad", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/calibration/heading-lock"}, "properties": {"repobilityId": "66d4bb25ecd37c87", "scanner": "scanner-primary", "fingerprint": "ae23be00d3908bad", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-abe96c98f277ac26", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/calibration/validation"}, "properties": {"repobilityId": "98320e69614ceb1d", "scanner": "scanner-primary", "fingerprint": "abe96c98f277ac26", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d53f6228940f6eb7", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/calibration/validation/confirm"}, "properties": {"repobilityId": "b535687acc3003ce", "scanner": "scanner-primary", "fingerprint": "d53f6228940f6eb7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-94e1479b6c999367", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/calibration/heading"}, "properties": {"repobilityId": "9dbf81cdd890650c", "scanner": "scanner-primary", "fingerprint": "94e1479b6c999367", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c6cc428fd6942d65", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/calibration/tilt"}, "properties": {"repobilityId": "1a4caed4dcc2738e", "scanner": "scanner-primary", "fingerprint": "c6cc428fd6942d65", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-707023e907d74265", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/calibration/zoom"}, "properties": {"repobilityId": "32ef3966b2b8d6ec", "scanner": "scanner-primary", "fingerprint": "707023e907d74265", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f5a4465bcff4a770", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/calibration/base-lock"}, "properties": {"repobilityId": "a17300501003af5e", "scanner": "scanner-primary", "fingerprint": "f5a4465bcff4a770", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a7cb1eaa1f00e957", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/calibration/fov"}, "properties": {"repobilityId": "1fff7d98b7a3b0d3", "scanner": "scanner-primary", "fingerprint": "a7cb1eaa1f00e957", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7400731b4cc195ab", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/calibration/fov"}, "properties": {"repobilityId": "98871d408252447f", "scanner": "scanner-primary", "fingerprint": "7400731b4cc195ab", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ed74ad0862fffdb2", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/media/status"}, "properties": {"repobilityId": "deff5fad2e20749b", "scanner": "scanner-primary", "fingerprint": "ed74ad0862fffdb2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2655c8cda8b43e24", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/media/list"}, "properties": {"repobilityId": "82d1f019aa1729b3", "scanner": "scanner-primary", "fingerprint": "2655c8cda8b43e24", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ba13a0793f2de2b6", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/media/download/{name}"}, "properties": {"repobilityId": "d219c3279029cf6d", "scanner": "scanner-primary", "fingerprint": "ba13a0793f2de2b6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fe10918dade0ed4b", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/v1/media/{name}"}, "properties": {"repobilityId": "c14ff935b4221d9f", "scanner": "scanner-primary", "fingerprint": "fe10918dade0ed4b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-206b815ab4489f22", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/media/record/start"}, "properties": {"repobilityId": "415ec6eae32d7e32", "scanner": "scanner-primary", "fingerprint": "206b815ab4489f22", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-36ae5d72774d9991", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/media/record/stop"}, "properties": {"repobilityId": "d25799e7f598b4a3", "scanner": "scanner-primary", "fingerprint": "36ae5d72774d9991", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ecfb856c982996fc", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/presets"}, "properties": {"repobilityId": "46521e197ffe412b", "scanner": "scanner-primary", "fingerprint": "ecfb856c982996fc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c64b144959235854", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/presets"}, "properties": {"repobilityId": "6b6453c3c12f38fe", "scanner": "scanner-primary", "fingerprint": "c64b144959235854", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5ed76fc9b800f015", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/presets/{name}/apply"}, "properties": {"repobilityId": "92d879e3f20f6bb0", "scanner": "scanner-primary", "fingerprint": "5ed76fc9b800f015", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8a75a63ab0423d12", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/v1/presets/{name}"}, "properties": {"repobilityId": "9efeba15ba5ffd4c", "scanner": "scanner-primary", "fingerprint": "8a75a63ab0423d12", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0b4ca953cbcb71d7", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/logs"}, "properties": {"repobilityId": "c3963073ce624e04", "scanner": "scanner-primary", "fingerprint": "0b4ca953cbcb71d7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-75f5f4165bf91297", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/config"}, "properties": {"repobilityId": "ac1d8a73d2fa4437", "scanner": "scanner-primary", "fingerprint": "75f5f4165bf91297", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0ec4766197fa2303", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/config/hot"}, "properties": {"repobilityId": "b5ed762f1ecae63f", "scanner": "scanner-primary", "fingerprint": "0ec4766197fa2303", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f964cfca29bada07", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/system/restart"}, "properties": {"repobilityId": "f10bf97d47c6371c", "scanner": "scanner-primary", "fingerprint": "f964cfca29bada07", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-893be36de66b31cd", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/agent/summon"}, "properties": {"repobilityId": "e5d93c5ab9ed329d", "scanner": "scanner-primary", "fingerprint": "893be36de66b31cd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ff7d5012791ef76d", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/agent/report"}, "properties": {"repobilityId": "b068d55343a9ca1f", "scanner": "scanner-primary", "fingerprint": "ff7d5012791ef76d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b56f40ecaadd672c", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/events"}, "properties": {"repobilityId": "036b713254e50018", "scanner": "scanner-primary", "fingerprint": "b56f40ecaadd672c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-17853ae3b9e735ba", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/sensors/phone"}, "properties": {"repobilityId": "f65ca050efa32070", "scanner": "scanner-primary", "fingerprint": "17853ae3b9e735ba", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7248b63ad4d5afed", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/sensors/phone/baseline/reset"}, "properties": {"repobilityId": "cf0c2cd2d358b79b", "scanner": "scanner-primary", "fingerprint": "7248b63ad4d5afed", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a436691337284d03", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/health"}, "properties": {"repobilityId": "0ff429667a10b01f", "scanner": "scanner-primary", "fingerprint": "a436691337284d03", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "5adea06ff9a13682", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c178268666276f66", "level": "note", "message": {"text": "Unused endpoint: GET /stream.mjpg"}, "properties": {"repobilityId": "16afe735f51540fc", "scanner": "scanner-primary", "fingerprint": "c178268666276f66", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7569de4538b5c19a", "level": "note", "message": {"text": "Unused endpoint: POST /kill"}, "properties": {"repobilityId": "f6538b6016d0043f", "scanner": "scanner-primary", "fingerprint": "7569de4538b5c19a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1c36c6f9e51a0316", "level": "note", "message": {"text": "Unused endpoint: POST /resume"}, "properties": {"repobilityId": "1253ada2dd1eb9c3", "scanner": "scanner-primary", "fingerprint": "1c36c6f9e51a0316", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}