{"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-df73ab900d3656ba", "name": "Possibly dead Python function: generate_launch_description", "shortDescription": {"text": "Possibly dead Python function: generate_launch_description"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-854a2aabbb5a2d63", "name": "Possibly dead Python function: signed_peak", "shortDescription": {"text": "Possibly dead Python function: signed_peak"}, "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-0454ca18c14f4b2e", "name": "Possibly dead Python function: list_supported_keys", "shortDescription": {"text": "Possibly dead Python function: list_supported_keys"}, "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-0764d2a138008c9e", "name": "Possibly dead Python function: is_runtime_only_read_key", "shortDescription": {"text": "Possibly dead Python function: is_runtime_only_read_key"}, "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-c387b108e8b846d0", "name": "Possibly dead Python function: do_HEAD", "shortDescription": {"text": "Possibly dead Python function: do_HEAD"}, "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-eb9fb02b55b056c2", "name": "Possibly dead Python function: pose_from_T", "shortDescription": {"text": "Possibly dead Python function: pose_from_T"}, "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-ce280b7153080058", "name": "Possibly dead Python function: solve_arm_position_poe", "shortDescription": {"text": "Possibly dead Python function: solve_arm_position_poe"}, "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-b77aadf86df39432", "name": "Possibly dead Python function: solve_arm_wrist_center_poe", "shortDescription": {"text": "Possibly dead Python function: solve_arm_wrist_center_poe"}, "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-c7b41224ad288564", "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-55aac16e02f2c0f6", "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-85bb4c778a0b7653", "name": "Possibly dead Python function: do_OPTIONS", "shortDescription": {"text": "Possibly dead Python function: do_OPTIONS"}, "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-7d3fdd383918ed31", "name": "Possibly dead Python function: handle", "shortDescription": {"text": "Possibly dead Python function: handle"}, "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-b7bd7529bf1fb6d5", "name": "Stray `console.log` in TS/JS \u2014 web/dashboard/js/pages/joints.js:210", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 web/dashboard/js/pages/joints.js:210"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-73d825f72e732c9b", "name": "Stray `console.log` in TS/JS \u2014 web/dashboard/js/pages/ik.js:1908", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 web/dashboard/js/pages/ik.js:1908"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ffee037f874de722", "name": "Stray `console.log` in TS/JS \u2014 web/shared/js/controller_remap.js:94", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 web/shared/js/controller_remap.js:94"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-524c30a80914d175", "name": "Dockerfile runs as root: ros2_ws/deploy/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: ros2_ws/deploy/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a246b922f7326108", "name": "Docker base image is tag-pinned but not digest-pinned: ros:jazzy-ros-base", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: ros:jazzy-ros-base"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-347204b2677a407d", "name": "Insecure pattern 'cors_wildcard' in raspberry/controller/web_services/https_server.py:222", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in raspberry/controller/web_services/https_server.py:222"}, "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-3e8389d6db029dbe", "name": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/vr.html:319", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/vr.html:319"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-32a77b623f0f81a3", "name": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/iklive.html:550", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/iklive.html:550"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9f7fb735fd6f4c67", "name": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/imu-vr.html:321", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/imu-vr.html:321"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-794ef0762531cd88", "name": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/ik.html:1234", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/ik.html:1234"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ed775ec2d1202dea", "name": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/joints.html:506", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/joints.html:506"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5f799bee68323853", "name": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/pickplace.html:680", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/pickplace.html:680"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-abed54dd4ab04118", "name": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/settings.html:777", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/settings.html:777"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c8db6f7e901d8866", "name": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/index.html:161", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/index.html:161"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b84d9b3434e097de", "name": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/twin.html:73", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/twin.html:73"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2f7bb5294081cd8a", "name": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/test.html:400", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/test.html:400"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7a7f6698a16dc355", "name": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/controllers.html:479", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/controllers.html:479"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-34f95c2148885e4c", "name": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/vr-live.html:379", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/vr-live.html:379"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-50f159d15eaedc30", "name": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/js/controllers.js:241", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/js/controllers.js:241"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-89ca2741dad561bc", "name": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/js/vr-live.js:46", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/js/vr-live.js:46"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eb6ec2ba9d93758a", "name": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/js/imu_vr.js:273", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/js/imu_vr.js:273"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1655a9c855fb4e55", "name": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/js/pages/settings.js:124", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/js/pages/settings.js:124"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-23e3cb83d86f8e69", "name": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/js/pages/joints.js:336", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/js/pages/joints.js:336"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d654eccf0aa3843d", "name": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/js/pages/test.js:451", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/js/pages/test.js:451"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-60621c0caa32860d", "name": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/js/pages/ik.js:385", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/js/pages/ik.js:385"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f8a87601406a4a2e", "name": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/js/pages/iklive.js:530", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/js/pages/iklive.js:530"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-79d9355242426c9d", "name": "Insecure pattern 'direct_innerhtml_assignment' in web/vr/viewer_stereo_xr.html:253", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/vr/viewer_stereo_xr.html:253"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-39e0b8575580665d", "name": "Insecure pattern 'direct_innerhtml_assignment' in web/shared/js/vr_controls.js:58", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/shared/js/vr_controls.js:58"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-69a0cbebc5b58b64", "name": "Very large file: raspberry/controller/web_services/ws_handlers_uart.py (1479 lines)", "shortDescription": {"text": "Very large file: raspberry/controller/web_services/ws_handlers_uart.py (1479 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-dd73f24bf41a2b94", "name": "Very large file: web/dashboard/js/pages/test.js (1389 lines)", "shortDescription": {"text": "Very large file: web/dashboard/js/pages/test.js (1389 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-3f214b495ea38b4e", "name": "Very large file: web/dashboard/js/pages/ik.js (1951 lines)", "shortDescription": {"text": "Very large file: web/dashboard/js/pages/ik.js (1951 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-a0b14a912148bbc3", "name": "Very large file: web/dashboard/js/pages/pickplace.js (1628 lines)", "shortDescription": {"text": "Very large file: web/dashboard/js/pages/pickplace.js (1628 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "3 test file(s) for 88 source file(s) (ratio 0.03). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 429 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b3c8398feb12bd2a", "name": "Network/subprocess call without timeout or try/except \u2014 raspberry/tools/measure_mjpeg_baseline.py:155", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 raspberry/tools/measure_mjpeg_baseline.py:155"}, "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-dd1c49d0f5005287", "name": "Legacy-named symbol `rx_legacy` in raspberry/controller/spi_dataplane/j5vr_spi_bridge.py:271", "shortDescription": {"text": "Legacy-named symbol `rx_legacy` in raspberry/controller/spi_dataplane/j5vr_spi_bridge.py:271"}, "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-23f4c3dc6b6a5f07", "name": "Commented-code block (6 lines) in raspberry/controller/spi_dataplane/j5vr_spi_bridge.py:31", "shortDescription": {"text": "Commented-code block (6 lines) in raspberry/controller/spi_dataplane/j5vr_spi_bridge.py:31"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d34a59856baee11f", "name": "Commented-code block (7 lines) in raspberry/controller/spi_dataplane/j5vr_frame.py:118", "shortDescription": {"text": "Commented-code block (7 lines) in raspberry/controller/spi_dataplane/j5vr_frame.py:118"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7040f5dfe9c8c776", "name": "Blocking `urllib.request.urlopen(...)` inside `async def main` \u2014 raspberry/controller/audit/verify_ik_imu_frame.py:67", "shortDescription": {"text": "Blocking `urllib.request.urlopen(...)` inside `async def main` \u2014 raspberry/controller/audit/verify_ik_imu_frame.py:67"}, "fullDescription": {"text": "Sync I/O inside an async function blocks the event loop. While `urllib.request.urlopen(...)` is running, *all* other coroutines on this loop are paused \u2014 silent throughput collapse under concurrency. Use the async equivalent (`httpx.AsyncClient`, `asyncio.sleep`, `aiofiles`) or wrap with `await asyncio.to_thread(...)`."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d8528cf0cd308f38", "name": "Legacy-named symbol `est_wc_old` in raspberry/controller/audit/verify_ik_imu_compare.py:45", "shortDescription": {"text": "Legacy-named symbol `est_wc_old` in raspberry/controller/audit/verify_ik_imu_compare.py:45"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-09f016dbab489120", "name": "Blocking `urllib.request.urlopen(...)` inside `async def main` \u2014 raspberry/controller/audit/verify_assist_audit.py:251", "shortDescription": {"text": "Blocking `urllib.request.urlopen(...)` inside `async def main` \u2014 raspberry/controller/audit/verify_assist_audit.py:251"}, "fullDescription": {"text": "Sync I/O inside an async function blocks the event loop. While `urllib.request.urlopen(...)` is running, *all* other coroutines on this loop are paused \u2014 silent throughput collapse under concurrency. Use the async equivalent (`httpx.AsyncClient`, `asyncio.sleep`, `aiofiles`) or wrap with `await asyncio.to_thread(...)`."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7d2ca274804f3f8c", "name": "Legacy-named symbol `_default_struct_copy` in raspberry/controller/web_services/poe_params_manager.py:99", "shortDescription": {"text": "Legacy-named symbol `_default_struct_copy` in raspberry/controller/web_services/poe_params_manager.py:99"}, "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-6c526262d1fa9bff", "name": "Legacy-named symbol `mirror_legacy` in raspberry/controller/web_services/runtime_config_paths.py:347", "shortDescription": {"text": "Legacy-named symbol `mirror_legacy` in raspberry/controller/web_services/runtime_config_paths.py:347"}, "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-32da623fcbade848", "name": "Commented-code block (7 lines) in raspberry/controller/web_services/runtime_config_paths.py:71", "shortDescription": {"text": "Commented-code block (7 lines) in raspberry/controller/web_services/runtime_config_paths.py:71"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dd290fa0c3f8e901", "name": "Legacy-named symbol `mirror_legacy` in raspberry/controller/web_services/settings_manager.py:179", "shortDescription": {"text": "Legacy-named symbol `mirror_legacy` in raspberry/controller/web_services/settings_manager.py:179"}, "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-30c1bc65f714949c", "name": "Commented-code block (5 lines) in raspberry/controller/web_services/settings_manager.py:119", "shortDescription": {"text": "Commented-code block (5 lines) in raspberry/controller/web_services/settings_manager.py:119"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9670210ca6994ed7", "name": "Commented-code block (5 lines) in raspberry/controller/web_services/ws_handlers_uart.py:121", "shortDescription": {"text": "Commented-code block (5 lines) in raspberry/controller/web_services/ws_handlers_uart.py:121"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d3075c3a97fc0648", "name": "Commented-code block (10 lines) in raspberry/controller/web_services/head_assist.py:58", "shortDescription": {"text": "Commented-code block (10 lines) in raspberry/controller/web_services/head_assist.py:58"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a95f09003ab979d1", "name": "Legacy-named symbol `mirror_legacy` in raspberry/controller/web_services/ws_server.py:294", "shortDescription": {"text": "Legacy-named symbol `mirror_legacy` in raspberry/controller/web_services/ws_server.py:294"}, "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-ff8f382ba871c262", "name": "Commented-code block (5 lines) in raspberry/controller/web_services/ws_server.py:859", "shortDescription": {"text": "Commented-code block (5 lines) in raspberry/controller/web_services/ws_server.py:859"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1902d3b62298ac31", "name": "Legacy-named symbol `mirror_legacy` in raspberry/controller/web_services/https_server.py:873", "shortDescription": {"text": "Legacy-named symbol `mirror_legacy` in raspberry/controller/web_services/https_server.py:873"}, "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-3faae15370dde662", "name": "Commented-code block (7 lines) in raspberry/controller/teleop/__init__.py:1", "shortDescription": {"text": "Commented-code block (7 lines) in raspberry/controller/teleop/__init__.py:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-216bf0401b583299", "name": "Commented-code block (6 lines) in web/dashboard/js/controllers.js:76", "shortDescription": {"text": "Commented-code block (6 lines) in web/dashboard/js/controllers.js:76"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-99111bfd363c3a1f", "name": "Commented-code block (5 lines) in web/dashboard/js/dashboard.js:135", "shortDescription": {"text": "Commented-code block (5 lines) in web/dashboard/js/dashboard.js:135"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-309113693896c3be", "name": "Commented-code block (5 lines) in web/dashboard/js/vr-live.js:51", "shortDescription": {"text": "Commented-code block (5 lines) in web/dashboard/js/vr-live.js:51"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-04a649df3cbf7327", "name": "`fetch()` without try/.catch or AbortSignal \u2014 web/dashboard/js/vr-live.js:159", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/dashboard/js/vr-live.js:159"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-33154b82f64bde12", "name": "Commented-code block (7 lines) in web/dashboard/js/imu_vr.js:96", "shortDescription": {"text": "Commented-code block (7 lines) in web/dashboard/js/imu_vr.js:96"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-de4093b8c28b71b1", "name": "Commented-code block (5 lines) in web/dashboard/js/pages/joints.js:34", "shortDescription": {"text": "Commented-code block (5 lines) in web/dashboard/js/pages/joints.js:34"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c2ccdbf1932a3bb3", "name": "Commented-code block (6 lines) in web/dashboard/js/pages/vr.js:277", "shortDescription": {"text": "Commented-code block (6 lines) in web/dashboard/js/pages/vr.js:277"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b26eb6cb7c5e5eda", "name": "Commented-code block (6 lines) in web/dashboard/js/pages/test.js:31", "shortDescription": {"text": "Commented-code block (6 lines) in web/dashboard/js/pages/test.js:31"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c1cb01b1c047e659", "name": "Commented-code block (5 lines) in web/dashboard/js/pages/ik.js:57", "shortDescription": {"text": "Commented-code block (5 lines) in web/dashboard/js/pages/ik.js:57"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0263c54f0da07e56", "name": "Legacy-named symbol `j5_pickplace_target_v1` in web/dashboard/js/pages/pickplace.js:436", "shortDescription": {"text": "Legacy-named symbol `j5_pickplace_target_v1` in web/dashboard/js/pages/pickplace.js:436"}, "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-b830cf7de98bd2cc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 web/shared/js/j5_common.js:487", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/shared/js/j5_common.js:487"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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:\nraspberry/controller/spi_dataplane/j5vr_frame.py:to_bytes, raspberry/controller/spi_dataplane/j5vr_frame.py:to_bytes\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-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nraspberry/controller/audit/verify_isolated_joints.py:r_from_quat_wxyz, raspberry/controller/audit/verify_imu_alignment.py:q_wxyz_to_xyzw, raspberry/controller/audit/verify_imu_stress.py:q_wxyz_to_xyzw, raspberry/controller/audit/verify_zero_at_home.py:q_xyzw_to_wxyz\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nraspberry/controller/audit/verify_zero_at_home.py:r_from_calib, raspberry/controller/audit/verify_assist_extremes.py:r_from_quat_wxyz, raspberry/controller/audit/verify_assist_mode.py:r_from_quat_wxyz\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}}]}}, "automationDetails": {"id": "repobility/25093"}, "properties": {"repository": "corgiolu-labs/jonny5_ROS2_VR", "repoUrl": "https://github.com/corgiolu-labs/jonny5_ROS2_VR", "branch": "main"}, "results": [{"ruleId": "scanner-df73ab900d3656ba", "level": "note", "message": {"text": "Possibly dead Python function: generate_launch_description"}, "properties": {"repobilityId": "d9a90a15bddc43f1", "scanner": "scanner-primary", "fingerprint": "df73ab900d3656ba", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ros2_ws/src/jonny5_bringup/launch/bringup.launch.py:24"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-854a2aabbb5a2d63", "level": "note", "message": {"text": "Possibly dead Python function: signed_peak"}, "properties": {"repobilityId": "86255ac598aa7733", "scanner": "scanner-primary", "fingerprint": "854a2aabbb5a2d63", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "raspberry/controller/audit/verify_elbow_ab.py:152"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0454ca18c14f4b2e", "level": "note", "message": {"text": "Possibly dead Python function: list_supported_keys"}, "properties": {"repobilityId": "a46bbfa2a25712ab", "scanner": "scanner-primary", "fingerprint": "0454ca18c14f4b2e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "raspberry/controller/web_services/runtime_config_paths.py:108"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0764d2a138008c9e", "level": "note", "message": {"text": "Possibly dead Python function: is_runtime_only_read_key"}, "properties": {"repobilityId": "52890d5c8cfdc350", "scanner": "scanner-primary", "fingerprint": "0764d2a138008c9e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "raspberry/controller/web_services/runtime_config_paths.py:161"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c387b108e8b846d0", "level": "note", "message": {"text": "Possibly dead Python function: do_HEAD"}, "properties": {"repobilityId": "105ffef0dec52931", "scanner": "scanner-primary", "fingerprint": "c387b108e8b846d0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "raspberry/controller/web_services/captive_portal_server.py:42"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-eb9fb02b55b056c2", "level": "note", "message": {"text": "Possibly dead Python function: pose_from_T"}, "properties": {"repobilityId": "da086008cf8d7d5e", "scanner": "scanner-primary", "fingerprint": "eb9fb02b55b056c2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "raspberry/controller/web_services/ik_solver.py:152"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ce280b7153080058", "level": "note", "message": {"text": "Possibly dead Python function: solve_arm_position_poe"}, "properties": {"repobilityId": "6ad959e4d2245f70", "scanner": "scanner-primary", "fingerprint": "ce280b7153080058", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "raspberry/controller/web_services/ik_solver.py:288"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b77aadf86df39432", "level": "note", "message": {"text": "Possibly dead Python function: solve_arm_wrist_center_poe"}, "properties": {"repobilityId": "78484ce8de543a44", "scanner": "scanner-primary", "fingerprint": "b77aadf86df39432", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "raspberry/controller/web_services/ik_solver.py:317"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c7b41224ad288564", "level": "note", "message": {"text": "Possibly dead Python function: handle_client"}, "properties": {"repobilityId": "cb83c99b4c24363d", "scanner": "scanner-primary", "fingerprint": "c7b41224ad288564", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "raspberry/controller/web_services/ws_server.py:753"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-55aac16e02f2c0f6", "level": "note", "message": {"text": "Possibly dead Python function: do_POST"}, "properties": {"repobilityId": "53357410ca9379a9", "scanner": "scanner-primary", "fingerprint": "55aac16e02f2c0f6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "raspberry/controller/web_services/https_server.py:192"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-85bb4c778a0b7653", "level": "note", "message": {"text": "Possibly dead Python function: do_OPTIONS"}, "properties": {"repobilityId": "36491d1f4fa41aef", "scanner": "scanner-primary", "fingerprint": "85bb4c778a0b7653", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "raspberry/controller/web_services/https_server.py:983"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7d3fdd383918ed31", "level": "note", "message": {"text": "Possibly dead Python function: handle"}, "properties": {"repobilityId": "fc5b886fd2624c94", "scanner": "scanner-primary", "fingerprint": "7d3fdd383918ed31", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "raspberry/controller/web_services/tcp_port_proxy.py:12"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b7bd7529bf1fb6d5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 web/dashboard/js/pages/joints.js:210"}, "properties": {"repobilityId": "5352e32bb032ea4c", "scanner": "scanner-primary", "fingerprint": "b7bd7529bf1fb6d5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-73d825f72e732c9b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 web/dashboard/js/pages/ik.js:1908"}, "properties": {"repobilityId": "b4e91bc9db50fe4b", "scanner": "scanner-primary", "fingerprint": "73d825f72e732c9b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ffee037f874de722", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 web/shared/js/controller_remap.js:94"}, "properties": {"repobilityId": "8fd67cd726174016", "scanner": "scanner-primary", "fingerprint": "ffee037f874de722", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-524c30a80914d175", "level": "warning", "message": {"text": "Dockerfile runs as root: ros2_ws/deploy/Dockerfile"}, "properties": {"repobilityId": "d090980739002912", "scanner": "scanner-primary", "fingerprint": "524c30a80914d175", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-a246b922f7326108", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: ros:jazzy-ros-base"}, "properties": {"repobilityId": "ea37c676ff798310", "scanner": "scanner-primary", "fingerprint": "a246b922f7326108", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ros2_ws/deploy/Dockerfile"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-347204b2677a407d", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in raspberry/controller/web_services/https_server.py:222"}, "properties": {"repobilityId": "074d539d5fa049cb", "scanner": "scanner-primary", "fingerprint": "347204b2677a407d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "raspberry/controller/web_services/https_server.py"}, "region": {"startLine": 222}}}]}, {"ruleId": "scanner-3e8389d6db029dbe", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/vr.html:319"}, "properties": {"repobilityId": "c02c1691d2d14c5a", "scanner": "scanner-primary", "fingerprint": "3e8389d6db029dbe", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/dashboard/vr.html"}, "region": {"startLine": 319}}}]}, {"ruleId": "scanner-32a77b623f0f81a3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/iklive.html:550"}, "properties": {"repobilityId": "3c5ba88795f4fcee", "scanner": "scanner-primary", "fingerprint": "32a77b623f0f81a3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/dashboard/iklive.html"}, "region": {"startLine": 550}}}]}, {"ruleId": "scanner-9f7fb735fd6f4c67", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/imu-vr.html:321"}, "properties": {"repobilityId": "e5cbad1a106067cf", "scanner": "scanner-primary", "fingerprint": "9f7fb735fd6f4c67", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/dashboard/imu-vr.html"}, "region": {"startLine": 321}}}]}, {"ruleId": "scanner-794ef0762531cd88", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/ik.html:1234"}, "properties": {"repobilityId": "13f6bfad57ada825", "scanner": "scanner-primary", "fingerprint": "794ef0762531cd88", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/dashboard/ik.html"}, "region": {"startLine": 1234}}}]}, {"ruleId": "scanner-ed775ec2d1202dea", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/joints.html:506"}, "properties": {"repobilityId": "d0a8f091a8d4ac72", "scanner": "scanner-primary", "fingerprint": "ed775ec2d1202dea", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/dashboard/joints.html"}, "region": {"startLine": 506}}}]}, {"ruleId": "scanner-5f799bee68323853", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/pickplace.html:680"}, "properties": {"repobilityId": "a6556ea23fa022ed", "scanner": "scanner-primary", "fingerprint": "5f799bee68323853", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/dashboard/pickplace.html"}, "region": {"startLine": 680}}}]}, {"ruleId": "scanner-abed54dd4ab04118", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/settings.html:777"}, "properties": {"repobilityId": "f677389dee42407b", "scanner": "scanner-primary", "fingerprint": "abed54dd4ab04118", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/dashboard/settings.html"}, "region": {"startLine": 777}}}]}, {"ruleId": "scanner-c8db6f7e901d8866", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/index.html:161"}, "properties": {"repobilityId": "9f71700963a9c780", "scanner": "scanner-primary", "fingerprint": "c8db6f7e901d8866", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/dashboard/index.html"}, "region": {"startLine": 161}}}]}, {"ruleId": "scanner-b84d9b3434e097de", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/twin.html:73"}, "properties": {"repobilityId": "8cbde478a79f4f64", "scanner": "scanner-primary", "fingerprint": "b84d9b3434e097de", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/dashboard/twin.html"}, "region": {"startLine": 73}}}]}, {"ruleId": "scanner-2f7bb5294081cd8a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/test.html:400"}, "properties": {"repobilityId": "8dcabc2252deb192", "scanner": "scanner-primary", "fingerprint": "2f7bb5294081cd8a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/dashboard/test.html"}, "region": {"startLine": 400}}}]}, {"ruleId": "scanner-7a7f6698a16dc355", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/controllers.html:479"}, "properties": {"repobilityId": "710eba509c441431", "scanner": "scanner-primary", "fingerprint": "7a7f6698a16dc355", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/dashboard/controllers.html"}, "region": {"startLine": 479}}}]}, {"ruleId": "scanner-34f95c2148885e4c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/vr-live.html:379"}, "properties": {"repobilityId": "d5978bd70199e032", "scanner": "scanner-primary", "fingerprint": "34f95c2148885e4c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/dashboard/vr-live.html"}, "region": {"startLine": 379}}}]}, {"ruleId": "scanner-50f159d15eaedc30", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/js/controllers.js:241"}, "properties": {"repobilityId": "d319c601ae222358", "scanner": "scanner-primary", "fingerprint": "50f159d15eaedc30", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/dashboard/js/controllers.js"}, "region": {"startLine": 241}}}]}, {"ruleId": "scanner-89ca2741dad561bc", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/js/vr-live.js:46"}, "properties": {"repobilityId": "9f217fc3ac70133e", "scanner": "scanner-primary", "fingerprint": "89ca2741dad561bc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/dashboard/js/vr-live.js"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-eb6ec2ba9d93758a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/js/imu_vr.js:273"}, "properties": {"repobilityId": "020eb390d054ab9c", "scanner": "scanner-primary", "fingerprint": "eb6ec2ba9d93758a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/dashboard/js/imu_vr.js"}, "region": {"startLine": 273}}}]}, {"ruleId": "scanner-1655a9c855fb4e55", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/js/pages/settings.js:124"}, "properties": {"repobilityId": "b4de0506786b2286", "scanner": "scanner-primary", "fingerprint": "1655a9c855fb4e55", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/dashboard/js/pages/settings.js"}, "region": {"startLine": 124}}}]}, {"ruleId": "scanner-23e3cb83d86f8e69", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/js/pages/joints.js:336"}, "properties": {"repobilityId": "756db3009fb15b16", "scanner": "scanner-primary", "fingerprint": "23e3cb83d86f8e69", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/dashboard/js/pages/joints.js"}, "region": {"startLine": 336}}}]}, {"ruleId": "scanner-d654eccf0aa3843d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/js/pages/test.js:451"}, "properties": {"repobilityId": "50b4e45812553579", "scanner": "scanner-primary", "fingerprint": "d654eccf0aa3843d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/dashboard/js/pages/test.js"}, "region": {"startLine": 451}}}]}, {"ruleId": "scanner-60621c0caa32860d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/js/pages/ik.js:385"}, "properties": {"repobilityId": "e15482f6a379d41b", "scanner": "scanner-primary", "fingerprint": "60621c0caa32860d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/dashboard/js/pages/ik.js"}, "region": {"startLine": 385}}}]}, {"ruleId": "scanner-f8a87601406a4a2e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/dashboard/js/pages/iklive.js:530"}, "properties": {"repobilityId": "b00a46568cfb9476", "scanner": "scanner-primary", "fingerprint": "f8a87601406a4a2e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/dashboard/js/pages/iklive.js"}, "region": {"startLine": 530}}}]}, {"ruleId": "scanner-79d9355242426c9d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/vr/viewer_stereo_xr.html:253"}, "properties": {"repobilityId": "f0f8e78f44d64092", "scanner": "scanner-primary", "fingerprint": "79d9355242426c9d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/vr/viewer_stereo_xr.html"}, "region": {"startLine": 253}}}]}, {"ruleId": "scanner-39e0b8575580665d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/shared/js/vr_controls.js:58"}, "properties": {"repobilityId": "dcd5313d59b98f17", "scanner": "scanner-primary", "fingerprint": "39e0b8575580665d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/shared/js/vr_controls.js"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-69a0cbebc5b58b64", "level": "note", "message": {"text": "Very large file: raspberry/controller/web_services/ws_handlers_uart.py (1479 lines)"}, "properties": {"repobilityId": "624971013a041ba7", "scanner": "scanner-primary", "fingerprint": "69a0cbebc5b58b64", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-dd73f24bf41a2b94", "level": "note", "message": {"text": "Very large file: web/dashboard/js/pages/test.js (1389 lines)"}, "properties": {"repobilityId": "9aedad718e0c8d97", "scanner": "scanner-primary", "fingerprint": "dd73f24bf41a2b94", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3f214b495ea38b4e", "level": "note", "message": {"text": "Very large file: web/dashboard/js/pages/ik.js (1951 lines)"}, "properties": {"repobilityId": "f51040e44fc11814", "scanner": "scanner-primary", "fingerprint": "3f214b495ea38b4e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a0b14a912148bbc3", "level": "note", "message": {"text": "Very large file: web/dashboard/js/pages/pickplace.js (1628 lines)"}, "properties": {"repobilityId": "b18a6f89b8a0602a", "scanner": "scanner-primary", "fingerprint": "a0b14a912148bbc3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "c7652a5ee1055343", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "aa048cf8c26feebc", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b3c8398feb12bd2a", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 raspberry/tools/measure_mjpeg_baseline.py:155"}, "properties": {"repobilityId": "9b1457024a370c8a", "scanner": "scanner-primary", "fingerprint": "b3c8398feb12bd2a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dd1c49d0f5005287", "level": "note", "message": {"text": "Legacy-named symbol `rx_legacy` in raspberry/controller/spi_dataplane/j5vr_spi_bridge.py:271"}, "properties": {"repobilityId": "f5a17b28e3280154", "scanner": "scanner-primary", "fingerprint": "dd1c49d0f5005287", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-23f4c3dc6b6a5f07", "level": "none", "message": {"text": "Commented-code block (6 lines) in raspberry/controller/spi_dataplane/j5vr_spi_bridge.py:31"}, "properties": {"repobilityId": "99c27d73b144bb60", "scanner": "scanner-primary", "fingerprint": "23f4c3dc6b6a5f07", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d34a59856baee11f", "level": "none", "message": {"text": "Commented-code block (7 lines) in raspberry/controller/spi_dataplane/j5vr_frame.py:118"}, "properties": {"repobilityId": "ab3dcc1346a85460", "scanner": "scanner-primary", "fingerprint": "d34a59856baee11f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7040f5dfe9c8c776", "level": "error", "message": {"text": "Blocking `urllib.request.urlopen(...)` inside `async def main` \u2014 raspberry/controller/audit/verify_ik_imu_frame.py:67"}, "properties": {"repobilityId": "25653a5b22de95a5", "scanner": "scanner-primary", "fingerprint": "7040f5dfe9c8c776", "layer": "quality", "severity": "high", "confidence": 1.0, "tags": ["integrity", "sync-io-in-async", "performance"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "raspberry/controller/audit/verify_ik_imu_frame.py"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-d8528cf0cd308f38", "level": "note", "message": {"text": "Legacy-named symbol `est_wc_old` in raspberry/controller/audit/verify_ik_imu_compare.py:45"}, "properties": {"repobilityId": "5c9ace836e03a230", "scanner": "scanner-primary", "fingerprint": "d8528cf0cd308f38", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-09f016dbab489120", "level": "error", "message": {"text": "Blocking `urllib.request.urlopen(...)` inside `async def main` \u2014 raspberry/controller/audit/verify_assist_audit.py:251"}, "properties": {"repobilityId": "8bdd7657a354712c", "scanner": "scanner-primary", "fingerprint": "09f016dbab489120", "layer": "quality", "severity": "high", "confidence": 1.0, "tags": ["integrity", "sync-io-in-async", "performance"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "raspberry/controller/audit/verify_assist_audit.py"}, "region": {"startLine": 251}}}]}, {"ruleId": "scanner-7d2ca274804f3f8c", "level": "note", "message": {"text": "Legacy-named symbol `_default_struct_copy` in raspberry/controller/web_services/poe_params_manager.py:99"}, "properties": {"repobilityId": "e77bc67cd5c82140", "scanner": "scanner-primary", "fingerprint": "7d2ca274804f3f8c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6c526262d1fa9bff", "level": "note", "message": {"text": "Legacy-named symbol `mirror_legacy` in raspberry/controller/web_services/runtime_config_paths.py:347"}, "properties": {"repobilityId": "1332719a20df49c9", "scanner": "scanner-primary", "fingerprint": "6c526262d1fa9bff", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-32da623fcbade848", "level": "none", "message": {"text": "Commented-code block (7 lines) in raspberry/controller/web_services/runtime_config_paths.py:71"}, "properties": {"repobilityId": "6dd7e16de9e1e7c6", "scanner": "scanner-primary", "fingerprint": "32da623fcbade848", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dd290fa0c3f8e901", "level": "note", "message": {"text": "Legacy-named symbol `mirror_legacy` in raspberry/controller/web_services/settings_manager.py:179"}, "properties": {"repobilityId": "ce803d84e1c094f6", "scanner": "scanner-primary", "fingerprint": "dd290fa0c3f8e901", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-30c1bc65f714949c", "level": "none", "message": {"text": "Commented-code block (5 lines) in raspberry/controller/web_services/settings_manager.py:119"}, "properties": {"repobilityId": "2fa52199e6cba1c0", "scanner": "scanner-primary", "fingerprint": "30c1bc65f714949c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9670210ca6994ed7", "level": "none", "message": {"text": "Commented-code block (5 lines) in raspberry/controller/web_services/ws_handlers_uart.py:121"}, "properties": {"repobilityId": "c4054af9cdb4423a", "scanner": "scanner-primary", "fingerprint": "9670210ca6994ed7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d3075c3a97fc0648", "level": "none", "message": {"text": "Commented-code block (10 lines) in raspberry/controller/web_services/head_assist.py:58"}, "properties": {"repobilityId": "d36b4126dfd8c5c9", "scanner": "scanner-primary", "fingerprint": "d3075c3a97fc0648", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a95f09003ab979d1", "level": "note", "message": {"text": "Legacy-named symbol `mirror_legacy` in raspberry/controller/web_services/ws_server.py:294"}, "properties": {"repobilityId": "03bf4d1dc94457b5", "scanner": "scanner-primary", "fingerprint": "a95f09003ab979d1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ff8f382ba871c262", "level": "none", "message": {"text": "Commented-code block (5 lines) in raspberry/controller/web_services/ws_server.py:859"}, "properties": {"repobilityId": "c295f628b31c9c02", "scanner": "scanner-primary", "fingerprint": "ff8f382ba871c262", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1902d3b62298ac31", "level": "note", "message": {"text": "Legacy-named symbol `mirror_legacy` in raspberry/controller/web_services/https_server.py:873"}, "properties": {"repobilityId": "71d289df2f6f7073", "scanner": "scanner-primary", "fingerprint": "1902d3b62298ac31", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3faae15370dde662", "level": "none", "message": {"text": "Commented-code block (7 lines) in raspberry/controller/teleop/__init__.py:1"}, "properties": {"repobilityId": "1bcf478d19579c5c", "scanner": "scanner-primary", "fingerprint": "3faae15370dde662", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-216bf0401b583299", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/dashboard/js/controllers.js:76"}, "properties": {"repobilityId": "224744d2b239d3c0", "scanner": "scanner-primary", "fingerprint": "216bf0401b583299", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-99111bfd363c3a1f", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/dashboard/js/dashboard.js:135"}, "properties": {"repobilityId": "9d1704151a96d8f2", "scanner": "scanner-primary", "fingerprint": "99111bfd363c3a1f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-309113693896c3be", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/dashboard/js/vr-live.js:51"}, "properties": {"repobilityId": "96f339a43e148192", "scanner": "scanner-primary", "fingerprint": "309113693896c3be", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-04a649df3cbf7327", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/dashboard/js/vr-live.js:159"}, "properties": {"repobilityId": "1bd1a2092890dfd2", "scanner": "scanner-primary", "fingerprint": "04a649df3cbf7327", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-33154b82f64bde12", "level": "none", "message": {"text": "Commented-code block (7 lines) in web/dashboard/js/imu_vr.js:96"}, "properties": {"repobilityId": "44798175d608d795", "scanner": "scanner-primary", "fingerprint": "33154b82f64bde12", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de4093b8c28b71b1", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/dashboard/js/pages/joints.js:34"}, "properties": {"repobilityId": "8795701c8cd3743d", "scanner": "scanner-primary", "fingerprint": "de4093b8c28b71b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c2ccdbf1932a3bb3", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/dashboard/js/pages/vr.js:277"}, "properties": {"repobilityId": "1e1fa86c74a0df8e", "scanner": "scanner-primary", "fingerprint": "c2ccdbf1932a3bb3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b26eb6cb7c5e5eda", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/dashboard/js/pages/test.js:31"}, "properties": {"repobilityId": "c543399a576eb1a4", "scanner": "scanner-primary", "fingerprint": "b26eb6cb7c5e5eda", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c1cb01b1c047e659", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/dashboard/js/pages/ik.js:57"}, "properties": {"repobilityId": "b609c52d8e34a1b1", "scanner": "scanner-primary", "fingerprint": "c1cb01b1c047e659", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0263c54f0da07e56", "level": "note", "message": {"text": "Legacy-named symbol `j5_pickplace_target_v1` in web/dashboard/js/pages/pickplace.js:436"}, "properties": {"repobilityId": "4162db4d80d959c6", "scanner": "scanner-primary", "fingerprint": "0263c54f0da07e56", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b830cf7de98bd2cc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/shared/js/j5_common.js:487"}, "properties": {"repobilityId": "fed17bf6c1abd358", "scanner": "scanner-primary", "fingerprint": "b830cf7de98bd2cc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "5168bce95b97efdc", "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": "f10352f1426cd272", "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": "b32a1c03e9526e8b", "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": "38d528ff30fd5920", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "997095d4c2d4702d", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "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": "c2b196a8706cfefe", "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": "72e0143ae70fc794", "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": "ac0e6bbbb02f2631", "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": "df618c3839bb8caf", "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": "d863637806d809f2", "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": "c73121eed3a144cc", "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": "a426c4af0d99e032", "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": "ce67660161724914", "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": "7635977d9e5cf672", "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": "9a1302dc0b8cce3a", "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": "7b8e36fe063d6c3b", "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": "472ef9cfc65baa51", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}